History

PCI: Use 'pci_channel_state_t' instead of 'enum pci_channel_state'

The method struct pci_error_handlers.error_detected() is defined and documented as taking an 'enum pci_channel_state' for the second argument, but most drivers use 'pci_channel_state_t' instead. This 'pci_channel_state_t' is not a typedef for the enum but a typedef for a bitwise type in order to have better/stricter typechecking. Consolidate everything by using 'pci_channel_state_t' in the method's definition, in the related helpers and in the drivers. Enforce use of 'pci_channel_state_t' by replacing 'enum pci_channel_state' with an anonymous 'enum'. Note: Currently, from a typechecking point of view this patch changes nothing because only the constants defined by the enum are bitwise, not the enum itself (sparse doesn't have the notion of 'bitwise enum'). This may change in some not too far future, hence the patch. [bhelgaas: squash in https://lore.kernel.org/r/20200702162651.49526-3-luc.vanoostenryck@gmail.com https://lore.kernel.org/r/20200702162651.49526-4-luc.vanoostenryck@gmail.com] Link: https://lore.kernel.org/r/20200702162651.49526-2-luc.vanoostenryck@gmail.com Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>

Luc Van Oostenryck committed 6 years ago

Commit 16d79cd1 parent b3a9e3b18 files · +24 −24Browse files

Unified · Split

18 files
  1. Documentation/PCI/pci-error-recovery.rst +4 −4
  2. arch/powerpc/kernel/eeh_driver.c +1 −1
  3. drivers/block/rsxx/core.c +1 −1
  4. drivers/dma/ioat/init.c +1 −1
  5. drivers/media/pci/ngene/ngene-cards.c +1 −1
  6. drivers/misc/genwqe/card_base.c +1 −1
  7. drivers/net/ethernet/intel/i40e/i40e_main.c +1 −1
  8. drivers/net/ethernet/intel/ice/ice_main.c +1 −1
  9. drivers/net/ethernet/intel/ixgb/ixgb_main.c +2 −2
  10. drivers/net/ethernet/sfc/efx.c +1 −1
  11. drivers/net/ethernet/sfc/falcon/efx.c +1 −1
  12. drivers/pci/pci.h +1 −1
  13. drivers/pci/pcie/err.c +2 −2
  14. drivers/pci/pcie/portdrv_pci.c +1 −1
  15. drivers/scsi/aacraid/linit.c +1 −1
  16. drivers/scsi/sym53c8xx_2/sym_glue.c +1 −1
  17. drivers/staging/qlge/qlge_main.c +1 −1
  18. include/linux/pci.h +2 −2
Documentation/PCI/pci-error-recovery.rst+4−4
@@ -79,7 +79,7 @@ This structure has the form:: · 78 unmodified lines
7979
8080 struct pci_error_handlers
8181 {
82− int (*error_detected)(struct pci_dev *dev, enum pci_channel_state);
82+ int (*error_detected)(struct pci_dev *dev, pci_channel_state_t);
8383 int (*mmio_enabled)(struct pci_dev *dev);
8484 int (*slot_reset)(struct pci_dev *dev);
8585 void (*resume)(struct pci_dev *dev);
@@ -87,11 +87,11 @@ This structure has the form:: · 1 unmodified line
8787
8888 The possible channel states are::
8989
90− enum pci_channel_state {
90+ typedef enum {
9191 pci_channel_io_normal, /* I/O channel is in normal state */
9292 pci_channel_io_frozen, /* I/O to channel is blocked */
9393 pci_channel_io_perm_failure, /* PCI card is dead */
94− };
94+ } pci_channel_state_t;
9595
9696 Possible return values are::
9797
@@ -348,7 +348,7 @@ STEP 6: Permanent Failure · 250 unmodified lines
348348 -------------------------
349349 A "permanent failure" has occurred, and the platform cannot recover
350350 the device. The platform will call error_detected() with a
351−pci_channel_state value of pci_channel_io_perm_failure.
351+pci_channel_state_t value of pci_channel_io_perm_failure.
352352
353353 The device driver should, at this point, assume the worst. It should
354354 cancel all pending I/O, refuse all new I/O, returning -EIO to
arch/powerpc/kernel/eeh_driver.c+1−1
@@ -214,7 +214,7 @@ static void eeh_dev_save_state(struct eeh_dev *edev, void *userdata) · 213 unmodified lines
214214 pci_save_state(pdev);
215215 }
216216
217−static void eeh_set_channel_state(struct eeh_pe *root, enum pci_channel_state s)
217+static void eeh_set_channel_state(struct eeh_pe *root, pci_channel_state_t s)
218218 {
219219 struct eeh_pe *pe;
220220 struct eeh_dev *edev, *tmp;
drivers/block/rsxx/core.c+1−1
@@ -625,7 +625,7 @@ static int rsxx_eeh_fifo_flush_poll(struct rsxx_cardinfo *card) · 624 unmodified lines
625625 }
626626
627627 static pci_ers_result_t rsxx_error_detected(struct pci_dev *dev,
628− enum pci_channel_state error)
628+ pci_channel_state_t error)
629629 {
630630 int st;
631631
drivers/dma/ioat/init.c+1−1
@@ -1267,7 +1267,7 @@ static void ioat_resume(struct ioatdma_device *ioat_dma) · 1266 unmodified lines
12671267 #define DRV_NAME "ioatdma"
12681268
12691269 static pci_ers_result_t ioat_pcie_error_detected(struct pci_dev *pdev,
1270− enum pci_channel_state error)
1270+ pci_channel_state_t error)
12711271 {
12721272 dev_dbg(&pdev->dev, "%s: PCIe AER error %d\n", DRV_NAME, error);
12731273
drivers/media/pci/ngene/ngene-cards.c+1−1
@@ -1186,7 +1186,7 @@ MODULE_DEVICE_TABLE(pci, ngene_id_tbl); · 1185 unmodified lines
11861186 /****************************************************************************/
11871187
11881188 static pci_ers_result_t ngene_error_detected(struct pci_dev *dev,
1189− enum pci_channel_state state)
1189+ pci_channel_state_t state)
11901190 {
11911191 dev_err(&dev->dev, "PCI error\n");
11921192 if (state == pci_channel_io_perm_failure)
drivers/misc/genwqe/card_base.c+1−1
@@ -1240,7 +1240,7 @@ static void genwqe_remove(struct pci_dev *pci_dev) · 1239 unmodified lines
12401240 * error is detected.
12411241 */
12421242 static pci_ers_result_t genwqe_err_error_detected(struct pci_dev *pci_dev,
1243− enum pci_channel_state state)
1243+ pci_channel_state_t state)
12441244 {
12451245 struct genwqe_dev *cd;
12461246
drivers/net/ethernet/intel/i40e/i40e_main.c+1−1
@@ -15465,7 +15465,7 @@ unmap: · 15464 unmodified lines
1546515465 * remediation.
1546615466 **/
1546715467 static pci_ers_result_t i40e_pci_error_detected(struct pci_dev *pdev,
15468− enum pci_channel_state error)
15468+ pci_channel_state_t error)
1546915469 {
1547015470 struct i40e_pf *pf = pci_get_drvdata(pdev);
1547115471
drivers/net/ethernet/intel/ice/ice_main.c+1−1
@@ -3586,7 +3586,7 @@ static void ice_remove(struct pci_dev *pdev) · 3585 unmodified lines
35863586 * is in progress. Allows the driver to gracefully prepare/handle PCI errors.
35873587 */
35883588 static pci_ers_result_t
3589−ice_pci_err_detected(struct pci_dev *pdev, enum pci_channel_state err)
3589+ice_pci_err_detected(struct pci_dev *pdev, pci_channel_state_t err)
35903590 {
35913591 struct ice_pf *pf = pci_get_drvdata(pdev);
35923592
drivers/net/ethernet/intel/ixgb/ixgb_main.c+2−2
@@ -82,7 +82,7 @@ static int ixgb_vlan_rx_kill_vid(struct net_device *netdev, · 81 unmodified lines
8282 static void ixgb_restore_vlan(struct ixgb_adapter *adapter);
8383
8484 static pci_ers_result_t ixgb_io_error_detected (struct pci_dev *pdev,
85− enum pci_channel_state state);
85+ pci_channel_state_t state);
8686 static pci_ers_result_t ixgb_io_slot_reset (struct pci_dev *pdev);
8787 static void ixgb_io_resume (struct pci_dev *pdev);
8888
@@ -2194,7 +2194,7 @@ ixgb_restore_vlan(struct ixgb_adapter *adapter) · 2105 unmodified lines
21942194 * a PCI bus error is detected.
21952195 */
21962196 static pci_ers_result_t ixgb_io_error_detected(struct pci_dev *pdev,
2197− enum pci_channel_state state)
2197+ pci_channel_state_t state)
21982198 {
21992199 struct net_device *netdev = pci_get_drvdata(pdev);
22002200 struct ixgb_adapter *adapter = netdev_priv(netdev);
drivers/net/ethernet/sfc/efx.c+1−1
@@ -1519,7 +1519,7 @@ static const struct dev_pm_ops efx_pm_ops = { · 1518 unmodified lines
15191519 * Stop the software path and request a slot reset.
15201520 */
15211521 static pci_ers_result_t efx_io_error_detected(struct pci_dev *pdev,
1522− enum pci_channel_state state)
1522+ pci_channel_state_t state)
15231523 {
15241524 pci_ers_result_t status = PCI_ERS_RESULT_RECOVERED;
15251525 struct efx_nic *efx = pci_get_drvdata(pdev);
drivers/net/ethernet/sfc/falcon/efx.c+1−1
@@ -3118,7 +3118,7 @@ static const struct dev_pm_ops ef4_pm_ops = { · 3117 unmodified lines
31183118 * Stop the software path and request a slot reset.
31193119 */
31203120 static pci_ers_result_t ef4_io_error_detected(struct pci_dev *pdev,
3121− enum pci_channel_state state)
3121+ pci_channel_state_t state)
31223122 {
31233123 pci_ers_result_t status = PCI_ERS_RESULT_RECOVERED;
31243124 struct ef4_nic *efx = pci_get_drvdata(pdev);
drivers/pci/pci.h+1−1
@@ -555,7 +555,7 @@ static inline int pci_dev_specific_disable_acs_redir(struct pci_dev *dev) · 554 unmodified lines
555555
556556 /* PCI error reporting and recovery */
557557 pci_ers_result_t pcie_do_recovery(struct pci_dev *dev,
558− enum pci_channel_state state,
558+ pci_channel_state_t state,
559559 pci_ers_result_t (*reset_link)(struct pci_dev *pdev));
560560
561561 bool pcie_wait_for_link(struct pci_dev *pdev, bool active);
drivers/pci/pcie/err.c+2−2
@@ -46,7 +46,7 @@ static pci_ers_result_t merge_result(enum pci_ers_result orig, · 45 unmodified lines
4646 }
4747
4848 static int report_error_detected(struct pci_dev *dev,
49− enum pci_channel_state state,
49+ pci_channel_state_t state,
5050 enum pci_ers_result *result)
5151 {
5252 pci_ers_result_t vote;
@@ -147,7 +147,7 @@ out: · 94 unmodified lines
147147 }
148148
149149 pci_ers_result_t pcie_do_recovery(struct pci_dev *dev,
150− enum pci_channel_state state,
150+ pci_channel_state_t state,
151151 pci_ers_result_t (*reset_link)(struct pci_dev *pdev))
152152 {
153153 pci_ers_result_t status = PCI_ERS_RESULT_CAN_RECOVER;
drivers/pci/pcie/portdrv_pci.c+1−1
@@ -146,7 +146,7 @@ static void pcie_portdrv_remove(struct pci_dev *dev) · 145 unmodified lines
146146 }
147147
148148 static pci_ers_result_t pcie_portdrv_error_detected(struct pci_dev *dev,
149− enum pci_channel_state error)
149+ pci_channel_state_t error)
150150 {
151151 /* Root Port has no impact. Always recovers. */
152152 return PCI_ERS_RESULT_CAN_RECOVER;
drivers/scsi/aacraid/linit.c+1−1
@@ -2002,7 +2002,7 @@ static void aac_remove_one(struct pci_dev *pdev) · 2001 unmodified lines
20022002 }
20032003
20042004 static pci_ers_result_t aac_pci_error_detected(struct pci_dev *pdev,
2005− enum pci_channel_state error)
2005+ pci_channel_state_t error)
20062006 {
20072007 struct Scsi_Host *shost = pci_get_drvdata(pdev);
20082008 struct aac_dev *aac = shost_priv(shost);
drivers/scsi/sym53c8xx_2/sym_glue.c+1−1
@@ -1743,7 +1743,7 @@ static void sym2_remove(struct pci_dev *pdev) · 1742 unmodified lines
17431743 * @state: current state of the PCI slot
17441744 */
17451745 static pci_ers_result_t sym2_io_error_detected(struct pci_dev *pdev,
1746− enum pci_channel_state state)
1746+ pci_channel_state_t state)
17471747 {
17481748 /* If slot is permanently frozen, turn everything off */
17491749 if (state == pci_channel_io_perm_failure) {
drivers/staging/qlge/qlge_main.c+1−1
@@ -4678,7 +4678,7 @@ static void ql_eeh_close(struct net_device *ndev) · 4677 unmodified lines
46784678 * a PCI bus error is detected.
46794679 */
46804680 static pci_ers_result_t qlge_io_error_detected(struct pci_dev *pdev,
4681− enum pci_channel_state state)
4681+ pci_channel_state_t state)
46824682 {
46834683 struct net_device *ndev = pci_get_drvdata(pdev);
46844684 struct ql_adapter *qdev = netdev_priv(ndev);
include/linux/pci.h+2−2
@@ -179,7 +179,7 @@ static inline const char *pci_power_name(pci_power_t state) · 178 unmodified lines
179179 */
180180 typedef unsigned int __bitwise pci_channel_state_t;
181181
182−enum pci_channel_state {
182+enum {
183183 /* I/O channel is in normal state */
184184 pci_channel_io_normal = (__force pci_channel_state_t) 1,
185185
@@ -785,7 +785,7 @@ enum pci_ers_result { · 599 unmodified lines
785785 struct pci_error_handlers {
786786 /* PCI bus error detected on this device */
787787 pci_ers_result_t (*error_detected)(struct pci_dev *dev,
788− enum pci_channel_state error);
788+ pci_channel_state_t error);
789789
790790 /* MMIO has been re-enabled, but not DMA */
791791 pci_ers_result_t (*mmio_enabled)(struct pci_dev *dev);