linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/8] PCI: add and use constant PCI_STATUS_ERROR_BITS and helper pci_status_get_and_clear_errors
@ 2020-02-25 14:03 Heiner Kallweit
  2020-02-25 14:03 ` [PATCH v3 1/8] PCI: add constant PCI_STATUS_ERROR_BITS Heiner Kallweit
                   ` (8 more replies)
  0 siblings, 9 replies; 13+ messages in thread
From: Heiner Kallweit @ 2020-02-25 14:03 UTC (permalink / raw)
  To: Bjorn Helgaas, Realtek linux nic maintainers, David Miller,
	Mirko Lindner, Stephen Hemminger, Clemens Ladisch,
	Jaroslav Kysela, Takashi Iwai
  Cc: linux-pci, Linux Kernel Mailing List, netdev, alsa-devel

Few drivers have own definitions for this constant, so move it to the
PCI core. In addition there are several places where the following
code sequence is used:
1. Read PCI_STATUS
2. Mask out non-error bits
3. Action based on set error bits
4. Write back set error bits to clear them

As this is a repeated pattern, add a helper to the PCI core.

Most affected drivers are network drivers. But as it's about core
PCI functionality, I suppose the series should go through the PCI
tree.

v2:
- fix formal issue with cover letter
v3:
- fix dumb typo in patch 7

Heiner Kallweit (8):
  PCI: add constant PCI_STATUS_ERROR_BITS
  PCI: add pci_status_get_and_clear_errors
  r8169: use pci_status_get_and_clear_errors
  net: cassini: use pci_status_get_and_clear_errors
  net: sungem: use pci_status_get_and_clear_errors
  net: skfp: use PCI_STATUS_ERROR_BITS
  PCI: pci-bridge-emul: use PCI_STATUS_ERROR_BITS
  sound: bt87x: use pci_status_get_and_clear_errors

 drivers/net/ethernet/marvell/skge.h       |  6 -----
 drivers/net/ethernet/marvell/sky2.h       |  6 -----
 drivers/net/ethernet/realtek/r8169_main.c | 15 +++++-------
 drivers/net/ethernet/sun/cassini.c        | 28 ++++++++-------------
 drivers/net/ethernet/sun/sungem.c         | 30 +++++++----------------
 drivers/net/fddi/skfp/drvfbi.c            |  2 +-
 drivers/net/fddi/skfp/h/skfbi.h           |  5 ----
 drivers/pci/pci-bridge-emul.c             | 14 ++---------
 drivers/pci/pci.c                         | 23 +++++++++++++++++
 include/linux/pci.h                       |  1 +
 include/uapi/linux/pci_regs.h             |  7 ++++++
 sound/pci/bt87x.c                         |  7 +-----
 12 files changed, 60 insertions(+), 84 deletions(-)

-- 
2.25.1




^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH v3 1/8] PCI: add constant PCI_STATUS_ERROR_BITS
  2020-02-25 14:03 [PATCH v3 0/8] PCI: add and use constant PCI_STATUS_ERROR_BITS and helper pci_status_get_and_clear_errors Heiner Kallweit
@ 2020-02-25 14:03 ` Heiner Kallweit
  2020-02-25 20:50   ` Bjorn Helgaas
  2020-02-25 14:04 ` [PATCH v3 2/8] PCI: add pci_status_get_and_clear_errors Heiner Kallweit
                   ` (7 subsequent siblings)
  8 siblings, 1 reply; 13+ messages in thread
From: Heiner Kallweit @ 2020-02-25 14:03 UTC (permalink / raw)
  To: Bjorn Helgaas, Realtek linux nic maintainers, David Miller,
	Mirko Lindner, Stephen Hemminger, Clemens Ladisch,
	Jaroslav Kysela, Takashi Iwai
  Cc: linux-pci, Linux Kernel Mailing List, netdev, alsa-devel

This constant is used (with different names) in more than one driver,
so move it to the PCI core.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/ethernet/marvell/skge.h | 6 ------
 drivers/net/ethernet/marvell/sky2.h | 6 ------
 include/uapi/linux/pci_regs.h       | 7 +++++++
 3 files changed, 7 insertions(+), 12 deletions(-)

diff --git a/drivers/net/ethernet/marvell/skge.h b/drivers/net/ethernet/marvell/skge.h
index 6fa7b6a34..e149bdfe1 100644
--- a/drivers/net/ethernet/marvell/skge.h
+++ b/drivers/net/ethernet/marvell/skge.h
@@ -15,12 +15,6 @@
 #define  PCI_VPD_ROM_SZ	7L<<14	/* VPD ROM size 0=256, 1=512, ... */
 #define  PCI_REV_DESC	1<<2	/* Reverse Descriptor bytes */
 
-#define PCI_STATUS_ERROR_BITS (PCI_STATUS_DETECTED_PARITY | \
-			       PCI_STATUS_SIG_SYSTEM_ERROR | \
-			       PCI_STATUS_REC_MASTER_ABORT | \
-			       PCI_STATUS_REC_TARGET_ABORT | \
-			       PCI_STATUS_PARITY)
-
 enum csr_regs {
 	B0_RAP	= 0x0000,
 	B0_CTST	= 0x0004,
diff --git a/drivers/net/ethernet/marvell/sky2.h b/drivers/net/ethernet/marvell/sky2.h
index b02b65230..851d8ed34 100644
--- a/drivers/net/ethernet/marvell/sky2.h
+++ b/drivers/net/ethernet/marvell/sky2.h
@@ -252,12 +252,6 @@ enum {
 };
 
 
-#define PCI_STATUS_ERROR_BITS (PCI_STATUS_DETECTED_PARITY | \
-			       PCI_STATUS_SIG_SYSTEM_ERROR | \
-			       PCI_STATUS_REC_MASTER_ABORT | \
-			       PCI_STATUS_REC_TARGET_ABORT | \
-			       PCI_STATUS_PARITY)
-
 enum csr_regs {
 	B0_RAP		= 0x0000,
 	B0_CTST		= 0x0004,
diff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h
index 543769048..9b84a1278 100644
--- a/include/uapi/linux/pci_regs.h
+++ b/include/uapi/linux/pci_regs.h
@@ -68,6 +68,13 @@
 #define  PCI_STATUS_SIG_SYSTEM_ERROR	0x4000 /* Set when we drive SERR */
 #define  PCI_STATUS_DETECTED_PARITY	0x8000 /* Set on parity error */
 
+#define PCI_STATUS_ERROR_BITS (PCI_STATUS_DETECTED_PARITY  | \
+			       PCI_STATUS_SIG_SYSTEM_ERROR | \
+			       PCI_STATUS_REC_MASTER_ABORT | \
+			       PCI_STATUS_REC_TARGET_ABORT | \
+			       PCI_STATUS_SIG_TARGET_ABORT | \
+			       PCI_STATUS_PARITY)
+
 #define PCI_CLASS_REVISION	0x08	/* High 24 bits are class, low 8 revision */
 #define PCI_REVISION_ID		0x08	/* Revision ID */
 #define PCI_CLASS_PROG		0x09	/* Reg. Level Programming Interface */
-- 
2.25.1





^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v3 2/8] PCI: add pci_status_get_and_clear_errors
  2020-02-25 14:03 [PATCH v3 0/8] PCI: add and use constant PCI_STATUS_ERROR_BITS and helper pci_status_get_and_clear_errors Heiner Kallweit
  2020-02-25 14:03 ` [PATCH v3 1/8] PCI: add constant PCI_STATUS_ERROR_BITS Heiner Kallweit
@ 2020-02-25 14:04 ` Heiner Kallweit
  2020-02-25 20:57   ` Bjorn Helgaas
  2020-02-25 14:04 ` [PATCH v3 3/8] r8169: use pci_status_get_and_clear_errors Heiner Kallweit
                   ` (6 subsequent siblings)
  8 siblings, 1 reply; 13+ messages in thread
From: Heiner Kallweit @ 2020-02-25 14:04 UTC (permalink / raw)
  To: Bjorn Helgaas, Realtek linux nic maintainers, David Miller,
	Mirko Lindner, Stephen Hemminger, Clemens Ladisch,
	Jaroslav Kysela, Takashi Iwai
  Cc: linux-pci, Linux Kernel Mailing List, netdev, alsa-devel

Few drivers use the following code sequence:
1. Read PCI_STATUS
2. Mask out non-error bits
3. Action based on error bits set
4. Write back set error bits to clear them

As this is a repeated pattern, add a helper to the PCI core.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/pci/pci.c   | 23 +++++++++++++++++++++++
 include/linux/pci.h |  1 +
 2 files changed, 24 insertions(+)

diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index d828ca835..c16b0ba2a 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -173,6 +173,29 @@ unsigned char pci_bus_max_busnr(struct pci_bus *bus)
 }
 EXPORT_SYMBOL_GPL(pci_bus_max_busnr);
 
+/**
+ * pci_status_get_and_clear_errors - return and clear error bits in PCI_STATUS
+ * @pdev: the PCI device
+ *
+ * Returns error bits set in PCI_STATUS and clears them.
+ */
+int pci_status_get_and_clear_errors(struct pci_dev *pdev)
+{
+	u16 status;
+	int ret;
+
+	ret = pci_read_config_word(pdev, PCI_STATUS, &status);
+	if (ret != PCIBIOS_SUCCESSFUL)
+		return -EIO;
+
+	status &= PCI_STATUS_ERROR_BITS;
+	if (status)
+		pci_write_config_word(pdev, PCI_STATUS, status);
+
+	return status;
+}
+EXPORT_SYMBOL_GPL(pci_status_get_and_clear_errors);
+
 #ifdef CONFIG_HAS_IOMEM
 void __iomem *pci_ioremap_bar(struct pci_dev *pdev, int bar)
 {
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 3840a541a..7a75aae04 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1203,6 +1203,7 @@ int pci_select_bars(struct pci_dev *dev, unsigned long flags);
 bool pci_device_is_present(struct pci_dev *pdev);
 void pci_ignore_hotplug(struct pci_dev *dev);
 struct pci_dev *pci_real_dma_dev(struct pci_dev *dev);
+int pci_status_get_and_clear_errors(struct pci_dev *pdev);
 
 int __printf(6, 7) pci_request_irq(struct pci_dev *dev, unsigned int nr,
 		irq_handler_t handler, irq_handler_t thread_fn, void *dev_id,
-- 
2.25.1





^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v3 3/8] r8169: use pci_status_get_and_clear_errors
  2020-02-25 14:03 [PATCH v3 0/8] PCI: add and use constant PCI_STATUS_ERROR_BITS and helper pci_status_get_and_clear_errors Heiner Kallweit
  2020-02-25 14:03 ` [PATCH v3 1/8] PCI: add constant PCI_STATUS_ERROR_BITS Heiner Kallweit
  2020-02-25 14:04 ` [PATCH v3 2/8] PCI: add pci_status_get_and_clear_errors Heiner Kallweit
@ 2020-02-25 14:04 ` Heiner Kallweit
  2020-02-25 14:05 ` [PATCH v3 4/8] net: cassini: " Heiner Kallweit
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 13+ messages in thread
From: Heiner Kallweit @ 2020-02-25 14:04 UTC (permalink / raw)
  To: Bjorn Helgaas, Realtek linux nic maintainers, David Miller,
	Mirko Lindner, Stephen Hemminger, Clemens Ladisch,
	Jaroslav Kysela, Takashi Iwai
  Cc: linux-pci, Linux Kernel Mailing List, netdev, alsa-devel

Use new helper pci_status_get_and_clear_errors() to simplify the code.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/ethernet/realtek/r8169_main.c | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index f081007a2..4495a3cf9 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -4357,13 +4357,15 @@ static void rtl8169_pcierr_interrupt(struct net_device *dev)
 {
 	struct rtl8169_private *tp = netdev_priv(dev);
 	struct pci_dev *pdev = tp->pci_dev;
-	u16 pci_status, pci_cmd;
+	int pci_status_errs;
+	u16 pci_cmd;
 
 	pci_read_config_word(pdev, PCI_COMMAND, &pci_cmd);
-	pci_read_config_word(pdev, PCI_STATUS, &pci_status);
 
-	netif_err(tp, intr, dev, "PCI error (cmd = 0x%04x, status = 0x%04x)\n",
-		  pci_cmd, pci_status);
+	pci_status_errs = pci_status_get_and_clear_errors(pdev);
+
+	netif_err(tp, intr, dev, "PCI error (cmd = 0x%04x, status_errs = 0x%04x)\n",
+		  pci_cmd, pci_status_errs);
 
 	/*
 	 * The recovery sequence below admits a very elaborated explanation:
@@ -4380,11 +4382,6 @@ static void rtl8169_pcierr_interrupt(struct net_device *dev)
 
 	pci_write_config_word(pdev, PCI_COMMAND, pci_cmd);
 
-	pci_write_config_word(pdev, PCI_STATUS,
-		pci_status & (PCI_STATUS_DETECTED_PARITY |
-		PCI_STATUS_SIG_SYSTEM_ERROR | PCI_STATUS_REC_MASTER_ABORT |
-		PCI_STATUS_REC_TARGET_ABORT | PCI_STATUS_SIG_TARGET_ABORT));
-
 	rtl_schedule_task(tp, RTL_FLAG_TASK_RESET_PENDING);
 }
 
-- 
2.25.1



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v3 4/8] net: cassini: use pci_status_get_and_clear_errors
  2020-02-25 14:03 [PATCH v3 0/8] PCI: add and use constant PCI_STATUS_ERROR_BITS and helper pci_status_get_and_clear_errors Heiner Kallweit
                   ` (2 preceding siblings ...)
  2020-02-25 14:04 ` [PATCH v3 3/8] r8169: use pci_status_get_and_clear_errors Heiner Kallweit
@ 2020-02-25 14:05 ` Heiner Kallweit
  2020-02-25 14:05 ` [PATCH v3 5/8] net: sungem: " Heiner Kallweit
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 13+ messages in thread
From: Heiner Kallweit @ 2020-02-25 14:05 UTC (permalink / raw)
  To: Bjorn Helgaas, Realtek linux nic maintainers, David Miller,
	Mirko Lindner, Stephen Hemminger, Clemens Ladisch,
	Jaroslav Kysela, Takashi Iwai
  Cc: linux-pci, Linux Kernel Mailing List, netdev, alsa-devel

Use new helper pci_status_get_and_clear_errors() to simplify the code.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/ethernet/sun/cassini.c | 28 ++++++++++------------------
 1 file changed, 10 insertions(+), 18 deletions(-)

diff --git a/drivers/net/ethernet/sun/cassini.c b/drivers/net/ethernet/sun/cassini.c
index 6ec9163e2..e6d1aa882 100644
--- a/drivers/net/ethernet/sun/cassini.c
+++ b/drivers/net/ethernet/sun/cassini.c
@@ -1716,34 +1716,26 @@ static int cas_pci_interrupt(struct net_device *dev, struct cas *cp,
 	pr_cont("\n");
 
 	if (stat & PCI_ERR_OTHER) {
-		u16 cfg;
+		int pci_errs;
 
 		/* Interrogate PCI config space for the
 		 * true cause.
 		 */
-		pci_read_config_word(cp->pdev, PCI_STATUS, &cfg);
-		netdev_err(dev, "Read PCI cfg space status [%04x]\n", cfg);
-		if (cfg & PCI_STATUS_PARITY)
+		pci_errs = pci_status_get_and_clear_errors(cp->pdev);
+
+		netdev_err(dev, "PCI status errors[%04x]\n", pci_errs);
+		if (pci_errs & PCI_STATUS_PARITY)
 			netdev_err(dev, "PCI parity error detected\n");
-		if (cfg & PCI_STATUS_SIG_TARGET_ABORT)
+		if (pci_errs & PCI_STATUS_SIG_TARGET_ABORT)
 			netdev_err(dev, "PCI target abort\n");
-		if (cfg & PCI_STATUS_REC_TARGET_ABORT)
+		if (pci_errs & PCI_STATUS_REC_TARGET_ABORT)
 			netdev_err(dev, "PCI master acks target abort\n");
-		if (cfg & PCI_STATUS_REC_MASTER_ABORT)
+		if (pci_errs & PCI_STATUS_REC_MASTER_ABORT)
 			netdev_err(dev, "PCI master abort\n");
-		if (cfg & PCI_STATUS_SIG_SYSTEM_ERROR)
+		if (pci_errs & PCI_STATUS_SIG_SYSTEM_ERROR)
 			netdev_err(dev, "PCI system error SERR#\n");
-		if (cfg & PCI_STATUS_DETECTED_PARITY)
+		if (pci_errs & PCI_STATUS_DETECTED_PARITY)
 			netdev_err(dev, "PCI parity error\n");
-
-		/* Write the error bits back to clear them. */
-		cfg &= (PCI_STATUS_PARITY |
-			PCI_STATUS_SIG_TARGET_ABORT |
-			PCI_STATUS_REC_TARGET_ABORT |
-			PCI_STATUS_REC_MASTER_ABORT |
-			PCI_STATUS_SIG_SYSTEM_ERROR |
-			PCI_STATUS_DETECTED_PARITY);
-		pci_write_config_word(cp->pdev, PCI_STATUS, cfg);
 	}
 
 	/* For all PCI errors, we should reset the chip. */
-- 
2.25.1



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v3 5/8] net: sungem: use pci_status_get_and_clear_errors
  2020-02-25 14:03 [PATCH v3 0/8] PCI: add and use constant PCI_STATUS_ERROR_BITS and helper pci_status_get_and_clear_errors Heiner Kallweit
                   ` (3 preceding siblings ...)
  2020-02-25 14:05 ` [PATCH v3 4/8] net: cassini: " Heiner Kallweit
@ 2020-02-25 14:05 ` Heiner Kallweit
  2020-02-25 14:06 ` [PATCH v3 6/8] net: skfp: use PCI_STATUS_ERROR_BITS Heiner Kallweit
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 13+ messages in thread
From: Heiner Kallweit @ 2020-02-25 14:05 UTC (permalink / raw)
  To: Bjorn Helgaas, Realtek linux nic maintainers, David Miller,
	Mirko Lindner, Stephen Hemminger, Clemens Ladisch,
	Jaroslav Kysela, Takashi Iwai
  Cc: linux-pci, Linux Kernel Mailing List, netdev, alsa-devel

Use new helper pci_status_get_and_clear_errors() to simplify the code.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/ethernet/sun/sungem.c | 30 +++++++++---------------------
 1 file changed, 9 insertions(+), 21 deletions(-)

diff --git a/drivers/net/ethernet/sun/sungem.c b/drivers/net/ethernet/sun/sungem.c
index 8358064fb..2d392a7b1 100644
--- a/drivers/net/ethernet/sun/sungem.c
+++ b/drivers/net/ethernet/sun/sungem.c
@@ -545,37 +545,25 @@ static int gem_pci_interrupt(struct net_device *dev, struct gem *gp, u32 gem_sta
 	}
 
 	if (pci_estat & GREG_PCIESTAT_OTHER) {
-		u16 pci_cfg_stat;
+		int pci_errs;
 
 		/* Interrogate PCI config space for the
 		 * true cause.
 		 */
-		pci_read_config_word(gp->pdev, PCI_STATUS,
-				     &pci_cfg_stat);
-		netdev_err(dev, "Read PCI cfg space status [%04x]\n",
-			   pci_cfg_stat);
-		if (pci_cfg_stat & PCI_STATUS_PARITY)
+		pci_errs = pci_status_get_and_clear_errors(gp->pdev);
+		netdev_err(dev, "PCI status errors[%04x]\n", pci_errs);
+		if (pci_errs & PCI_STATUS_PARITY)
 			netdev_err(dev, "PCI parity error detected\n");
-		if (pci_cfg_stat & PCI_STATUS_SIG_TARGET_ABORT)
+		if (pci_errs & PCI_STATUS_SIG_TARGET_ABORT)
 			netdev_err(dev, "PCI target abort\n");
-		if (pci_cfg_stat & PCI_STATUS_REC_TARGET_ABORT)
+		if (pci_errs & PCI_STATUS_REC_TARGET_ABORT)
 			netdev_err(dev, "PCI master acks target abort\n");
-		if (pci_cfg_stat & PCI_STATUS_REC_MASTER_ABORT)
+		if (pci_errs & PCI_STATUS_REC_MASTER_ABORT)
 			netdev_err(dev, "PCI master abort\n");
-		if (pci_cfg_stat & PCI_STATUS_SIG_SYSTEM_ERROR)
+		if (pci_errs & PCI_STATUS_SIG_SYSTEM_ERROR)
 			netdev_err(dev, "PCI system error SERR#\n");
-		if (pci_cfg_stat & PCI_STATUS_DETECTED_PARITY)
+		if (pci_errs & PCI_STATUS_DETECTED_PARITY)
 			netdev_err(dev, "PCI parity error\n");
-
-		/* Write the error bits back to clear them. */
-		pci_cfg_stat &= (PCI_STATUS_PARITY |
-				 PCI_STATUS_SIG_TARGET_ABORT |
-				 PCI_STATUS_REC_TARGET_ABORT |
-				 PCI_STATUS_REC_MASTER_ABORT |
-				 PCI_STATUS_SIG_SYSTEM_ERROR |
-				 PCI_STATUS_DETECTED_PARITY);
-		pci_write_config_word(gp->pdev,
-				      PCI_STATUS, pci_cfg_stat);
 	}
 
 	/* For all PCI errors, we should reset the chip. */
-- 
2.25.1





^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v3 6/8] net: skfp: use PCI_STATUS_ERROR_BITS
  2020-02-25 14:03 [PATCH v3 0/8] PCI: add and use constant PCI_STATUS_ERROR_BITS and helper pci_status_get_and_clear_errors Heiner Kallweit
                   ` (4 preceding siblings ...)
  2020-02-25 14:05 ` [PATCH v3 5/8] net: sungem: " Heiner Kallweit
@ 2020-02-25 14:06 ` Heiner Kallweit
  2020-02-25 14:07 ` [PATCH v3 7/8] PCI: pci-bridge-emul: " Heiner Kallweit
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 13+ messages in thread
From: Heiner Kallweit @ 2020-02-25 14:06 UTC (permalink / raw)
  To: Bjorn Helgaas, Realtek linux nic maintainers, David Miller,
	Mirko Lindner, Stephen Hemminger, Clemens Ladisch,
	Jaroslav Kysela, Takashi Iwai
  Cc: linux-pci, Linux Kernel Mailing List, netdev, alsa-devel

Use new constant PCI_STATUS_ERROR_BITS to simplify the code.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/fddi/skfp/drvfbi.c  | 2 +-
 drivers/net/fddi/skfp/h/skfbi.h | 5 -----
 2 files changed, 1 insertion(+), 6 deletions(-)

diff --git a/drivers/net/fddi/skfp/drvfbi.c b/drivers/net/fddi/skfp/drvfbi.c
index 9c8aa3a95..d5937aff5 100644
--- a/drivers/net/fddi/skfp/drvfbi.c
+++ b/drivers/net/fddi/skfp/drvfbi.c
@@ -112,7 +112,7 @@ static void card_start(struct s_smc *smc)
 	 */
 	outp(ADDR(B0_TST_CTRL), TST_CFG_WRITE_ON) ;	/* enable for writes */
 	word = inpw(PCI_C(PCI_STATUS)) ;
-	outpw(PCI_C(PCI_STATUS), word | PCI_ERRBITS) ;
+	outpw(PCI_C(PCI_STATUS), word | PCI_STATUS_ERROR_BITS) ;
 	outp(ADDR(B0_TST_CTRL), TST_CFG_WRITE_OFF) ;	/* disable writes */
 
 	/*
diff --git a/drivers/net/fddi/skfp/h/skfbi.h b/drivers/net/fddi/skfp/h/skfbi.h
index 480795681..ccee00b71 100644
--- a/drivers/net/fddi/skfp/h/skfbi.h
+++ b/drivers/net/fddi/skfp/h/skfbi.h
@@ -33,11 +33,6 @@
  */
 #define I2C_ADDR_VPD	0xA0	/* I2C address for the VPD EEPROM */ 
 
-
-#define PCI_ERRBITS	(PCI_STATUS_DETECTED_PARITY | PCI_STATUS_SIG_SYSTEM_ERROR | PCI_STATUS_REC_MASTER_ABORT | PCI_STATUS_SIG_TARGET_ABORT | PCI_STATUS_PARITY)
-
-
-
 /*
  *	Control Register File:
  *	Bank 0
-- 
2.25.1





^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v3 7/8] PCI: pci-bridge-emul: use PCI_STATUS_ERROR_BITS
  2020-02-25 14:03 [PATCH v3 0/8] PCI: add and use constant PCI_STATUS_ERROR_BITS and helper pci_status_get_and_clear_errors Heiner Kallweit
                   ` (5 preceding siblings ...)
  2020-02-25 14:06 ` [PATCH v3 6/8] net: skfp: use PCI_STATUS_ERROR_BITS Heiner Kallweit
@ 2020-02-25 14:07 ` Heiner Kallweit
  2020-02-25 14:07 ` [PATCH v3 8/8] sound: bt87x: use pci_status_get_and_clear_errors Heiner Kallweit
  2020-02-25 20:57 ` [PATCH v3 0/8] PCI: add and use constant PCI_STATUS_ERROR_BITS and helper pci_status_get_and_clear_errors Bjorn Helgaas
  8 siblings, 0 replies; 13+ messages in thread
From: Heiner Kallweit @ 2020-02-25 14:07 UTC (permalink / raw)
  To: Bjorn Helgaas, Realtek linux nic maintainers, David Miller,
	Mirko Lindner, Stephen Hemminger, Clemens Ladisch,
	Jaroslav Kysela, Takashi Iwai
  Cc: linux-pci, Linux Kernel Mailing List, netdev, alsa-devel

Use new constant PCI_STATUS_ERROR_BITS to simplify the code.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
v2:
- fix typo
---
 drivers/pci/pci-bridge-emul.c | 14 ++------------
 1 file changed, 2 insertions(+), 12 deletions(-)

diff --git a/drivers/pci/pci-bridge-emul.c b/drivers/pci/pci-bridge-emul.c
index fffa77093..93d8e8910 100644
--- a/drivers/pci/pci-bridge-emul.c
+++ b/drivers/pci/pci-bridge-emul.c
@@ -50,12 +50,7 @@ static const struct pci_bridge_reg_behavior pci_regs_behavior[] = {
 		       (PCI_STATUS_CAP_LIST | PCI_STATUS_66MHZ |
 			PCI_STATUS_FAST_BACK | PCI_STATUS_DEVSEL_MASK) << 16),
 		.rsvd = GENMASK(15, 10) | ((BIT(6) | GENMASK(3, 0)) << 16),
-		.w1c = (PCI_STATUS_PARITY |
-			PCI_STATUS_SIG_TARGET_ABORT |
-			PCI_STATUS_REC_TARGET_ABORT |
-			PCI_STATUS_REC_MASTER_ABORT |
-			PCI_STATUS_SIG_SYSTEM_ERROR |
-			PCI_STATUS_DETECTED_PARITY) << 16,
+		.w1c = PCI_STATUS_ERROR_BITS << 16,
 	},
 	[PCI_CLASS_REVISION / 4] = { .ro = ~0 },
 
@@ -100,12 +95,7 @@ static const struct pci_bridge_reg_behavior pci_regs_behavior[] = {
 			 PCI_STATUS_DEVSEL_MASK) << 16) |
 		       GENMASK(11, 8) | GENMASK(3, 0)),
 
-		.w1c = (PCI_STATUS_PARITY |
-			PCI_STATUS_SIG_TARGET_ABORT |
-			PCI_STATUS_REC_TARGET_ABORT |
-			PCI_STATUS_REC_MASTER_ABORT |
-			PCI_STATUS_SIG_SYSTEM_ERROR |
-			PCI_STATUS_DETECTED_PARITY) << 16,
+		.w1c = PCI_STATUS_ERROR_BITS << 16,
 
 		.rsvd = ((BIT(6) | GENMASK(4, 0)) << 16),
 	},
-- 
2.25.1





^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v3 8/8] sound: bt87x: use pci_status_get_and_clear_errors
  2020-02-25 14:03 [PATCH v3 0/8] PCI: add and use constant PCI_STATUS_ERROR_BITS and helper pci_status_get_and_clear_errors Heiner Kallweit
                   ` (6 preceding siblings ...)
  2020-02-25 14:07 ` [PATCH v3 7/8] PCI: pci-bridge-emul: " Heiner Kallweit
@ 2020-02-25 14:07 ` Heiner Kallweit
  2020-02-25 20:57 ` [PATCH v3 0/8] PCI: add and use constant PCI_STATUS_ERROR_BITS and helper pci_status_get_and_clear_errors Bjorn Helgaas
  8 siblings, 0 replies; 13+ messages in thread
From: Heiner Kallweit @ 2020-02-25 14:07 UTC (permalink / raw)
  To: Bjorn Helgaas, Realtek linux nic maintainers, David Miller,
	Mirko Lindner, Stephen Hemminger, Clemens Ladisch,
	Jaroslav Kysela, Takashi Iwai
  Cc: linux-pci, Linux Kernel Mailing List, netdev, alsa-devel

Use new helper pci_status_get_and_clear_errors() to simplify the code.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 sound/pci/bt87x.c | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/sound/pci/bt87x.c b/sound/pci/bt87x.c
index 8c48864c8..656750466 100644
--- a/sound/pci/bt87x.c
+++ b/sound/pci/bt87x.c
@@ -271,13 +271,8 @@ static void snd_bt87x_free_risc(struct snd_bt87x *chip)
 
 static void snd_bt87x_pci_error(struct snd_bt87x *chip, unsigned int status)
 {
-	u16 pci_status;
+	int pci_status = pci_status_get_and_clear_errors(chip->pci);
 
-	pci_read_config_word(chip->pci, PCI_STATUS, &pci_status);
-	pci_status &= PCI_STATUS_PARITY | PCI_STATUS_SIG_TARGET_ABORT |
-		PCI_STATUS_REC_TARGET_ABORT | PCI_STATUS_REC_MASTER_ABORT |
-		PCI_STATUS_SIG_SYSTEM_ERROR | PCI_STATUS_DETECTED_PARITY;
-	pci_write_config_word(chip->pci, PCI_STATUS, pci_status);
 	if (pci_status != PCI_STATUS_DETECTED_PARITY)
 		dev_err(chip->card->dev,
 			"Aieee - PCI error! status %#08x, PCI status %#04x\n",
-- 
2.25.1





^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH v3 1/8] PCI: add constant PCI_STATUS_ERROR_BITS
  2020-02-25 14:03 ` [PATCH v3 1/8] PCI: add constant PCI_STATUS_ERROR_BITS Heiner Kallweit
@ 2020-02-25 20:50   ` Bjorn Helgaas
  2020-02-25 21:35     ` Heiner Kallweit
  0 siblings, 1 reply; 13+ messages in thread
From: Bjorn Helgaas @ 2020-02-25 20:50 UTC (permalink / raw)
  To: Heiner Kallweit
  Cc: Realtek linux nic maintainers, David Miller, Mirko Lindner,
	Stephen Hemminger, Clemens Ladisch, Jaroslav Kysela,
	Takashi Iwai, linux-pci, Linux Kernel Mailing List, netdev,
	alsa-devel

On Tue, Feb 25, 2020 at 03:03:44PM +0100, Heiner Kallweit wrote:

Run "git log --oneline drivers/pci" and make yours match.  In
particular, capitalize the first word ("Add").  Same for the other PCI
patches.  I don't know the drivers/net convention, but please find and
follow that as well.

> This constant is used (with different names) in more than one driver,
> so move it to the PCI core.

The driver constants in *this* patch at least use the same name.

> Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
> ---
>  drivers/net/ethernet/marvell/skge.h | 6 ------
>  drivers/net/ethernet/marvell/sky2.h | 6 ------
>  include/uapi/linux/pci_regs.h       | 7 +++++++
>  3 files changed, 7 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/net/ethernet/marvell/skge.h b/drivers/net/ethernet/marvell/skge.h
> index 6fa7b6a34..e149bdfe1 100644
> --- a/drivers/net/ethernet/marvell/skge.h
> +++ b/drivers/net/ethernet/marvell/skge.h
> @@ -15,12 +15,6 @@
>  #define  PCI_VPD_ROM_SZ	7L<<14	/* VPD ROM size 0=256, 1=512, ... */
>  #define  PCI_REV_DESC	1<<2	/* Reverse Descriptor bytes */
>  
> -#define PCI_STATUS_ERROR_BITS (PCI_STATUS_DETECTED_PARITY | \
> -			       PCI_STATUS_SIG_SYSTEM_ERROR | \
> -			       PCI_STATUS_REC_MASTER_ABORT | \
> -			       PCI_STATUS_REC_TARGET_ABORT | \
> -			       PCI_STATUS_PARITY)
> -
>  enum csr_regs {
>  	B0_RAP	= 0x0000,
>  	B0_CTST	= 0x0004,
> diff --git a/drivers/net/ethernet/marvell/sky2.h b/drivers/net/ethernet/marvell/sky2.h
> index b02b65230..851d8ed34 100644
> --- a/drivers/net/ethernet/marvell/sky2.h
> +++ b/drivers/net/ethernet/marvell/sky2.h
> @@ -252,12 +252,6 @@ enum {
>  };
>  
>  
> -#define PCI_STATUS_ERROR_BITS (PCI_STATUS_DETECTED_PARITY | \
> -			       PCI_STATUS_SIG_SYSTEM_ERROR | \
> -			       PCI_STATUS_REC_MASTER_ABORT | \
> -			       PCI_STATUS_REC_TARGET_ABORT | \
> -			       PCI_STATUS_PARITY)
> -
>  enum csr_regs {
>  	B0_RAP		= 0x0000,
>  	B0_CTST		= 0x0004,
> diff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h
> index 543769048..9b84a1278 100644
> --- a/include/uapi/linux/pci_regs.h
> +++ b/include/uapi/linux/pci_regs.h
> @@ -68,6 +68,13 @@
>  #define  PCI_STATUS_SIG_SYSTEM_ERROR	0x4000 /* Set when we drive SERR */
>  #define  PCI_STATUS_DETECTED_PARITY	0x8000 /* Set on parity error */
>  
> +#define PCI_STATUS_ERROR_BITS (PCI_STATUS_DETECTED_PARITY  | \
> +			       PCI_STATUS_SIG_SYSTEM_ERROR | \
> +			       PCI_STATUS_REC_MASTER_ABORT | \
> +			       PCI_STATUS_REC_TARGET_ABORT | \
> +			       PCI_STATUS_SIG_TARGET_ABORT | \
> +			       PCI_STATUS_PARITY)

This actually *adds* PCI_STATUS_SIG_TARGET_ABORT, which is not in the
driver definitions.  At the very least that should be mentioned in the
commit log.

Ideally the addition would be in its own patch so it's obvious and
bisectable, but I see the problem -- the subsequent patches
consolidate things that aren't really quite the same.  One alternative
would be to have preliminary patches that change the drivers
individually so they all use this new mask, then do the consolidation
afterwards.

There is pitifully little documentation about the use of include/uapi,
but AFAICT that is for the user API, and this isn't part of that.  I
think this #define could go in include/linux/pci.h instead.

> +
>  #define PCI_CLASS_REVISION	0x08	/* High 24 bits are class, low 8 revision */
>  #define PCI_REVISION_ID		0x08	/* Revision ID */
>  #define PCI_CLASS_PROG		0x09	/* Reg. Level Programming Interface */
> -- 
> 2.25.1
> 
> 
> 
> 

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v3 2/8] PCI: add pci_status_get_and_clear_errors
  2020-02-25 14:04 ` [PATCH v3 2/8] PCI: add pci_status_get_and_clear_errors Heiner Kallweit
@ 2020-02-25 20:57   ` Bjorn Helgaas
  0 siblings, 0 replies; 13+ messages in thread
From: Bjorn Helgaas @ 2020-02-25 20:57 UTC (permalink / raw)
  To: Heiner Kallweit
  Cc: Realtek linux nic maintainers, David Miller, Mirko Lindner,
	Stephen Hemminger, Clemens Ladisch, Jaroslav Kysela,
	Takashi Iwai, linux-pci, Linux Kernel Mailing List, netdev,
	alsa-devel

On Tue, Feb 25, 2020 at 03:04:23PM +0100, Heiner Kallweit wrote:
> Few drivers use the following code sequence:

This reads like "Not very many drivers".  I think "Several drivers"
would capture the sense of this better.

> 1. Read PCI_STATUS
> 2. Mask out non-error bits
> 3. Action based on error bits set
> 4. Write back set error bits to clear them
> 
> As this is a repeated pattern, add a helper to the PCI core.
> 
> Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
> ---
>  drivers/pci/pci.c   | 23 +++++++++++++++++++++++
>  include/linux/pci.h |  1 +
>  2 files changed, 24 insertions(+)
> 
> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> index d828ca835..c16b0ba2a 100644
> --- a/drivers/pci/pci.c
> +++ b/drivers/pci/pci.c
> @@ -173,6 +173,29 @@ unsigned char pci_bus_max_busnr(struct pci_bus *bus)
>  }
>  EXPORT_SYMBOL_GPL(pci_bus_max_busnr);
>  
> +/**
> + * pci_status_get_and_clear_errors - return and clear error bits in PCI_STATUS
> + * @pdev: the PCI device
> + *
> + * Returns error bits set in PCI_STATUS and clears them.
> + */
> +int pci_status_get_and_clear_errors(struct pci_dev *pdev)
> +{
> +	u16 status;
> +	int ret;
> +
> +	ret = pci_read_config_word(pdev, PCI_STATUS, &status);
> +	if (ret != PCIBIOS_SUCCESSFUL)
> +		return -EIO;
> +
> +	status &= PCI_STATUS_ERROR_BITS;
> +	if (status)
> +		pci_write_config_word(pdev, PCI_STATUS, status);
> +
> +	return status;
> +}
> +EXPORT_SYMBOL_GPL(pci_status_get_and_clear_errors);
> +
>  #ifdef CONFIG_HAS_IOMEM
>  void __iomem *pci_ioremap_bar(struct pci_dev *pdev, int bar)
>  {
> diff --git a/include/linux/pci.h b/include/linux/pci.h
> index 3840a541a..7a75aae04 100644
> --- a/include/linux/pci.h
> +++ b/include/linux/pci.h
> @@ -1203,6 +1203,7 @@ int pci_select_bars(struct pci_dev *dev, unsigned long flags);
>  bool pci_device_is_present(struct pci_dev *pdev);
>  void pci_ignore_hotplug(struct pci_dev *dev);
>  struct pci_dev *pci_real_dma_dev(struct pci_dev *dev);
> +int pci_status_get_and_clear_errors(struct pci_dev *pdev);
>  
>  int __printf(6, 7) pci_request_irq(struct pci_dev *dev, unsigned int nr,
>  		irq_handler_t handler, irq_handler_t thread_fn, void *dev_id,
> -- 
> 2.25.1
> 
> 
> 
> 

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v3 0/8] PCI: add and use constant PCI_STATUS_ERROR_BITS and helper pci_status_get_and_clear_errors
  2020-02-25 14:03 [PATCH v3 0/8] PCI: add and use constant PCI_STATUS_ERROR_BITS and helper pci_status_get_and_clear_errors Heiner Kallweit
                   ` (7 preceding siblings ...)
  2020-02-25 14:07 ` [PATCH v3 8/8] sound: bt87x: use pci_status_get_and_clear_errors Heiner Kallweit
@ 2020-02-25 20:57 ` Bjorn Helgaas
  8 siblings, 0 replies; 13+ messages in thread
From: Bjorn Helgaas @ 2020-02-25 20:57 UTC (permalink / raw)
  To: Heiner Kallweit
  Cc: Realtek linux nic maintainers, David Miller, Mirko Lindner,
	Stephen Hemminger, Clemens Ladisch, Jaroslav Kysela,
	Takashi Iwai, linux-pci, Linux Kernel Mailing List, netdev,
	alsa-devel

On Tue, Feb 25, 2020 at 03:03:05PM +0100, Heiner Kallweit wrote:
> Few drivers have own definitions for this constant, so move it to the
> PCI core. In addition there are several places where the following
> code sequence is used:
> 1. Read PCI_STATUS
> 2. Mask out non-error bits
> 3. Action based on set error bits
> 4. Write back set error bits to clear them
> 
> As this is a repeated pattern, add a helper to the PCI core.
> 
> Most affected drivers are network drivers. But as it's about core
> PCI functionality, I suppose the series should go through the PCI
> tree.

Makes good sense to me, thanks for doing this.

> v2:
> - fix formal issue with cover letter
> v3:
> - fix dumb typo in patch 7
> 
> Heiner Kallweit (8):
>   PCI: add constant PCI_STATUS_ERROR_BITS
>   PCI: add pci_status_get_and_clear_errors
>   r8169: use pci_status_get_and_clear_errors
>   net: cassini: use pci_status_get_and_clear_errors
>   net: sungem: use pci_status_get_and_clear_errors
>   net: skfp: use PCI_STATUS_ERROR_BITS
>   PCI: pci-bridge-emul: use PCI_STATUS_ERROR_BITS
>   sound: bt87x: use pci_status_get_and_clear_errors
> 
>  drivers/net/ethernet/marvell/skge.h       |  6 -----
>  drivers/net/ethernet/marvell/sky2.h       |  6 -----
>  drivers/net/ethernet/realtek/r8169_main.c | 15 +++++-------
>  drivers/net/ethernet/sun/cassini.c        | 28 ++++++++-------------
>  drivers/net/ethernet/sun/sungem.c         | 30 +++++++----------------
>  drivers/net/fddi/skfp/drvfbi.c            |  2 +-
>  drivers/net/fddi/skfp/h/skfbi.h           |  5 ----
>  drivers/pci/pci-bridge-emul.c             | 14 ++---------
>  drivers/pci/pci.c                         | 23 +++++++++++++++++
>  include/linux/pci.h                       |  1 +
>  include/uapi/linux/pci_regs.h             |  7 ++++++
>  sound/pci/bt87x.c                         |  7 +-----
>  12 files changed, 60 insertions(+), 84 deletions(-)
> 
> -- 
> 2.25.1
> 
> 
> 

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v3 1/8] PCI: add constant PCI_STATUS_ERROR_BITS
  2020-02-25 20:50   ` Bjorn Helgaas
@ 2020-02-25 21:35     ` Heiner Kallweit
  0 siblings, 0 replies; 13+ messages in thread
From: Heiner Kallweit @ 2020-02-25 21:35 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: Realtek linux nic maintainers, David Miller, Mirko Lindner,
	Stephen Hemminger, Clemens Ladisch, Jaroslav Kysela,
	Takashi Iwai, linux-pci, Linux Kernel Mailing List, netdev,
	alsa-devel

On 25.02.2020 21:50, Bjorn Helgaas wrote:
> On Tue, Feb 25, 2020 at 03:03:44PM +0100, Heiner Kallweit wrote:
> 
> Run "git log --oneline drivers/pci" and make yours match.  In
> particular, capitalize the first word ("Add").  Same for the other PCI
> patches.  I don't know the drivers/net convention, but please find and
> follow that as well.
> 
>> This constant is used (with different names) in more than one driver,
>> so move it to the PCI core.
> 
> The driver constants in *this* patch at least use the same name.
> 
Right, I have to fix the description.

>> Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
>> ---
>>  drivers/net/ethernet/marvell/skge.h | 6 ------
>>  drivers/net/ethernet/marvell/sky2.h | 6 ------
>>  include/uapi/linux/pci_regs.h       | 7 +++++++
>>  3 files changed, 7 insertions(+), 12 deletions(-)
>>
>> diff --git a/drivers/net/ethernet/marvell/skge.h b/drivers/net/ethernet/marvell/skge.h
>> index 6fa7b6a34..e149bdfe1 100644
>> --- a/drivers/net/ethernet/marvell/skge.h
>> +++ b/drivers/net/ethernet/marvell/skge.h
>> @@ -15,12 +15,6 @@
>>  #define  PCI_VPD_ROM_SZ	7L<<14	/* VPD ROM size 0=256, 1=512, ... */
>>  #define  PCI_REV_DESC	1<<2	/* Reverse Descriptor bytes */
>>  
>> -#define PCI_STATUS_ERROR_BITS (PCI_STATUS_DETECTED_PARITY | \
>> -			       PCI_STATUS_SIG_SYSTEM_ERROR | \
>> -			       PCI_STATUS_REC_MASTER_ABORT | \
>> -			       PCI_STATUS_REC_TARGET_ABORT | \
>> -			       PCI_STATUS_PARITY)
>> -
>>  enum csr_regs {
>>  	B0_RAP	= 0x0000,
>>  	B0_CTST	= 0x0004,
>> diff --git a/drivers/net/ethernet/marvell/sky2.h b/drivers/net/ethernet/marvell/sky2.h
>> index b02b65230..851d8ed34 100644
>> --- a/drivers/net/ethernet/marvell/sky2.h
>> +++ b/drivers/net/ethernet/marvell/sky2.h
>> @@ -252,12 +252,6 @@ enum {
>>  };
>>  
>>  
>> -#define PCI_STATUS_ERROR_BITS (PCI_STATUS_DETECTED_PARITY | \
>> -			       PCI_STATUS_SIG_SYSTEM_ERROR | \
>> -			       PCI_STATUS_REC_MASTER_ABORT | \
>> -			       PCI_STATUS_REC_TARGET_ABORT | \
>> -			       PCI_STATUS_PARITY)
>> -
>>  enum csr_regs {
>>  	B0_RAP		= 0x0000,
>>  	B0_CTST		= 0x0004,
>> diff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h
>> index 543769048..9b84a1278 100644
>> --- a/include/uapi/linux/pci_regs.h
>> +++ b/include/uapi/linux/pci_regs.h
>> @@ -68,6 +68,13 @@
>>  #define  PCI_STATUS_SIG_SYSTEM_ERROR	0x4000 /* Set when we drive SERR */
>>  #define  PCI_STATUS_DETECTED_PARITY	0x8000 /* Set on parity error */
>>  
>> +#define PCI_STATUS_ERROR_BITS (PCI_STATUS_DETECTED_PARITY  | \
>> +			       PCI_STATUS_SIG_SYSTEM_ERROR | \
>> +			       PCI_STATUS_REC_MASTER_ABORT | \
>> +			       PCI_STATUS_REC_TARGET_ABORT | \
>> +			       PCI_STATUS_SIG_TARGET_ABORT | \
>> +			       PCI_STATUS_PARITY)
> 
> This actually *adds* PCI_STATUS_SIG_TARGET_ABORT, which is not in the
> driver definitions.  At the very least that should be mentioned in the
> commit log.
> 
> Ideally the addition would be in its own patch so it's obvious and
> bisectable, but I see the problem -- the subsequent patches
> consolidate things that aren't really quite the same.  One alternative
> would be to have preliminary patches that change the drivers
> individually so they all use this new mask, then do the consolidation
> afterwards.
> 
I checked the other patches and we'd need such preliminary patches
for three of them:
marvell: misses PCI_STATUS_SIG_TARGET_ABORT
skfp: misses PCI_STATUS_REC_TARGET_ABORT
r8169: misses PCI_STATUS_PARITY

> There is pitifully little documentation about the use of include/uapi,
> but AFAICT that is for the user API, and this isn't part of that.  I
> think this #define could go in include/linux/pci.h instead.
> 
OK, then I'll change the series accordingly.

>> +
>>  #define PCI_CLASS_REVISION	0x08	/* High 24 bits are class, low 8 revision */
>>  #define PCI_REVISION_ID		0x08	/* Revision ID */
>>  #define PCI_CLASS_PROG		0x09	/* Reg. Level Programming Interface */
>> -- 
>> 2.25.1
>>
>>
>>
>>


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2020-02-25 21:35 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-25 14:03 [PATCH v3 0/8] PCI: add and use constant PCI_STATUS_ERROR_BITS and helper pci_status_get_and_clear_errors Heiner Kallweit
2020-02-25 14:03 ` [PATCH v3 1/8] PCI: add constant PCI_STATUS_ERROR_BITS Heiner Kallweit
2020-02-25 20:50   ` Bjorn Helgaas
2020-02-25 21:35     ` Heiner Kallweit
2020-02-25 14:04 ` [PATCH v3 2/8] PCI: add pci_status_get_and_clear_errors Heiner Kallweit
2020-02-25 20:57   ` Bjorn Helgaas
2020-02-25 14:04 ` [PATCH v3 3/8] r8169: use pci_status_get_and_clear_errors Heiner Kallweit
2020-02-25 14:05 ` [PATCH v3 4/8] net: cassini: " Heiner Kallweit
2020-02-25 14:05 ` [PATCH v3 5/8] net: sungem: " Heiner Kallweit
2020-02-25 14:06 ` [PATCH v3 6/8] net: skfp: use PCI_STATUS_ERROR_BITS Heiner Kallweit
2020-02-25 14:07 ` [PATCH v3 7/8] PCI: pci-bridge-emul: " Heiner Kallweit
2020-02-25 14:07 ` [PATCH v3 8/8] sound: bt87x: use pci_status_get_and_clear_errors Heiner Kallweit
2020-02-25 20:57 ` [PATCH v3 0/8] PCI: add and use constant PCI_STATUS_ERROR_BITS and helper pci_status_get_and_clear_errors Bjorn Helgaas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).