Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1336642 > unrolled thread

[PATCH v2 0/3] PCI: Revert "Implement pcibios_alloc_irq() and pcibios_free_irq()"

Started byBjorn Helgaas <bhelgaas@google.com>
First post2016-02-17 19:40 +0100
Last post2016-02-18 17:10 +0100
Articles 6 — 4 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH v2 0/3] PCI: Revert "Implement pcibios_alloc_irq() and  pcibios_free_irq()" Bjorn Helgaas <bhelgaas@google.com> - 2016-02-17 19:40 +0100
    [PATCH v2 1/3] Revert "x86/PCI: Don't alloc pcibios-irq when MSI is  enabled" Bjorn Helgaas <bhelgaas@google.com> - 2016-02-17 19:40 +0100
    [PATCH v2 2/3] Revert "PCI: Add helpers to manage pci_dev->irq and  pci_dev->irq_managed" Bjorn Helgaas <bhelgaas@google.com> - 2016-02-17 19:40 +0100
    Re: [PATCH v2 0/3] PCI: Revert "Implement pcibios_alloc_irq() and pcibios_free_irq()" "Rafael J. Wysocki" <rafael@kernel.org> - 2016-02-17 20:50 +0100
    Re: [PATCH v2 0/3] PCI: Revert "Implement pcibios_alloc_irq() and  pcibios_free_irq()" Мороз Олег <oleg.moroz@mcc.vniiem.ru> - 2016-02-18 06:20 +0100
      Re: [PATCH v2 0/3] PCI: Revert "Implement pcibios_alloc_irq() and  pcibios_free_irq()" Bjorn Helgaas <helgaas@kernel.org> - 2016-02-18 17:10 +0100

#1336642 — [PATCH v2 0/3] PCI: Revert "Implement pcibios_alloc_irq() and pcibios_free_irq()"

FromBjorn Helgaas <bhelgaas@google.com>
Date2016-02-17 19:40 +0100
Subject[PATCH v2 0/3] PCI: Revert "Implement pcibios_alloc_irq() and pcibios_free_irq()"
Message-ID<r3fb3-1S3-9@gated-at.bofh.it>
These are clean reverts of 991de2e59090 ("PCI, x86: Implement
pcibios_alloc_irq() and pcibios_free_irq()") and related changes.

We have two reports of drivers broken in v4.3 by Jiang's change,
991de2e59090 ("PCI, x86: Implement pcibios_alloc_irq() and
pcibios_free_irq()").

It would be best to fix the problem instead of reverting 991de2e59090, but
I don't have time to do that myself, and we haven't heard from Jiang, so
the only choice I have is to revert the commit.

Note that reverting will likely break IOAPIC hotplug.

Олег and Sunjin, can you please test this and see whether it fixes your
drivers?  This patch is based on v4.5-rc1.

I intend to merge these for v4.5 unless I hear objections.

They're on my for-linus branch, so they should appear in linux-next
tomorrow.

Changes from the v1 posting:
  - Explicitly revert related patches instead of resolving conflicts
    manually
---

Bjorn Helgaas (3):
      Revert "x86/PCI: Don't alloc pcibios-irq when MSI is enabled"
      Revert "PCI: Add helpers to manage pci_dev->irq and pci_dev->irq_managed"
      Revert "PCI, x86: Implement pcibios_alloc_irq() and pcibios_free_irq()"


 arch/x86/include/asm/pci_x86.h |    2 ++
 arch/x86/pci/common.c          |   26 ++++++++++----------------
 arch/x86/pci/intel_mid_pci.c   |    9 +++------
 arch/x86/pci/irq.c             |   23 +++++++++++++++++++----
 drivers/acpi/pci_irq.c         |   17 +++++++++++++----
 include/linux/pci.h            |   17 -----------------
 6 files changed, 47 insertions(+), 47 deletions(-)

[toc] | [next] | [standalone]


#1336644 — [PATCH v2 1/3] Revert "x86/PCI: Don't alloc pcibios-irq when MSI is enabled"

FromBjorn Helgaas <bhelgaas@google.com>
Date2016-02-17 19:40 +0100
Subject[PATCH v2 1/3] Revert "x86/PCI: Don't alloc pcibios-irq when MSI is enabled"
Message-ID<r3fb4-1S3-27@gated-at.bofh.it>
In reply to#1336642
Revert 8affb487d4a4 ("x86/PCI: Don't alloc pcibios-irq when MSI is
enabled").

This is part of reverting 991de2e59090 ("PCI, x86: Implement
pcibios_alloc_irq() and pcibios_free_irq()") to fix regressions it
introduced.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=111211
Fixes: 991de2e59090 ("PCI, x86: Implement pcibios_alloc_irq() and pcibios_free_irq()")
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
CC: Jiang Liu <jiang.liu@linux.intel.com>
CC: Joerg Roedel <jroedel@suse.de>
---
 arch/x86/pci/common.c |    8 --------
 1 file changed, 8 deletions(-)

diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c
index 2879efc..cb499c5 100644
--- a/arch/x86/pci/common.c
+++ b/arch/x86/pci/common.c
@@ -713,14 +713,6 @@ int pcibios_add_device(struct pci_dev *dev)
 
 int pcibios_alloc_irq(struct pci_dev *dev)
 {
-	/*
-	 * If the PCI device was already claimed by core code and has
-	 * MSI enabled, probing of the pcibios IRQ will overwrite
-	 * dev->irq.  So bail out if MSI is already enabled.
-	 */
-	if (pci_dev_msi_enabled(dev))
-		return -EBUSY;
-
 	return pcibios_enable_irq(dev);
 }
 

[toc] | [prev] | [next] | [standalone]


#1336646 — [PATCH v2 2/3] Revert "PCI: Add helpers to manage pci_dev->irq and pci_dev->irq_managed"

FromBjorn Helgaas <bhelgaas@google.com>
Date2016-02-17 19:40 +0100
Subject[PATCH v2 2/3] Revert "PCI: Add helpers to manage pci_dev->irq and pci_dev->irq_managed"
Message-ID<r3fb5-1S3-41@gated-at.bofh.it>
In reply to#1336642
Revert 811a4e6fce09 ("PCI: Add helpers to manage pci_dev->irq and
pci_dev->irq_managed").

This is part of reverting 991de2e59090 ("PCI, x86: Implement
pcibios_alloc_irq() and pcibios_free_irq()") to fix regressions it
introduced.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=111211
Fixes: 991de2e59090 ("PCI, x86: Implement pcibios_alloc_irq() and pcibios_free_irq()")
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
CC: Jiang Liu <jiang.liu@linux.intel.com>
---
 arch/x86/pci/intel_mid_pci.c |    4 ++--
 arch/x86/pci/irq.c           |   10 ++++++----
 drivers/acpi/pci_irq.c       |   10 ++++++----
 include/linux/pci.h          |   17 -----------------
 4 files changed, 14 insertions(+), 27 deletions(-)

diff --git a/arch/x86/pci/intel_mid_pci.c b/arch/x86/pci/intel_mid_pci.c
index 0d24e7c..8826ff5 100644
--- a/arch/x86/pci/intel_mid_pci.c
+++ b/arch/x86/pci/intel_mid_pci.c
@@ -215,7 +215,7 @@ static int intel_mid_pci_irq_enable(struct pci_dev *dev)
 	int polarity;
 	int ret;
 
-	if (pci_has_managed_irq(dev))
+	if (dev->irq_managed && dev->irq > 0)
 		return 0;
 
 	switch (intel_mid_identify_cpu()) {
@@ -256,7 +256,7 @@ static int intel_mid_pci_irq_enable(struct pci_dev *dev)
 
 static void intel_mid_pci_irq_disable(struct pci_dev *dev)
 {
-	if (pci_has_managed_irq(dev)) {
+	if (dev->irq_managed && dev->irq > 0) {
 		mp_unmap_irq(dev->irq);
 		dev->irq_managed = 0;
 		/*
diff --git a/arch/x86/pci/irq.c b/arch/x86/pci/irq.c
index 32e7034..72108f0 100644
--- a/arch/x86/pci/irq.c
+++ b/arch/x86/pci/irq.c
@@ -1202,7 +1202,7 @@ static int pirq_enable_irq(struct pci_dev *dev)
 			struct pci_dev *temp_dev;
 			int irq;
 
-			if (pci_has_managed_irq(dev))
+			if (dev->irq_managed && dev->irq > 0)
 				return 0;
 
 			irq = IO_APIC_get_PCI_irq_vector(dev->bus->number,
@@ -1230,7 +1230,8 @@ static int pirq_enable_irq(struct pci_dev *dev)
 			}
 			dev = temp_dev;
 			if (irq >= 0) {
-				pci_set_managed_irq(dev, irq);
+				dev->irq_managed = 1;
+				dev->irq = irq;
 				dev_info(&dev->dev, "PCI->APIC IRQ transform: "
 					 "INT %c -> IRQ %d\n", 'A' + pin - 1, irq);
 				return 0;
@@ -1258,8 +1259,9 @@ static int pirq_enable_irq(struct pci_dev *dev)
 
 static void pirq_disable_irq(struct pci_dev *dev)
 {
-	if (io_apic_assign_pci_irqs && pci_has_managed_irq(dev)) {
+	if (io_apic_assign_pci_irqs && dev->irq_managed && dev->irq) {
 		mp_unmap_irq(dev->irq);
-		pci_reset_managed_irq(dev);
+		dev->irq = 0;
+		dev->irq_managed = 0;
 	}
 }
diff --git a/drivers/acpi/pci_irq.c b/drivers/acpi/pci_irq.c
index d30184c..9032db7 100644
--- a/drivers/acpi/pci_irq.c
+++ b/drivers/acpi/pci_irq.c
@@ -406,7 +406,7 @@ int acpi_pci_irq_enable(struct pci_dev *dev)
 		return 0;
 	}
 
-	if (pci_has_managed_irq(dev))
+	if (dev->irq_managed && dev->irq > 0)
 		return 0;
 
 	entry = acpi_pci_irq_lookup(dev, pin);
@@ -451,7 +451,8 @@ int acpi_pci_irq_enable(struct pci_dev *dev)
 		kfree(entry);
 		return rc;
 	}
-	pci_set_managed_irq(dev, rc);
+	dev->irq = rc;
+	dev->irq_managed = 1;
 
 	if (link)
 		snprintf(link_desc, sizeof(link_desc), " -> Link[%s]", link);
@@ -474,7 +475,7 @@ void acpi_pci_irq_disable(struct pci_dev *dev)
 	u8 pin;
 
 	pin = dev->pin;
-	if (!pin || !pci_has_managed_irq(dev))
+	if (!pin || !dev->irq_managed || dev->irq <= 0)
 		return;
 
 	entry = acpi_pci_irq_lookup(dev, pin);
@@ -496,6 +497,7 @@ void acpi_pci_irq_disable(struct pci_dev *dev)
 	dev_dbg(&dev->dev, "PCI INT %c disabled\n", pin_name(pin));
 	if (gsi >= 0) {
 		acpi_unregister_gsi(gsi);
-		pci_reset_managed_irq(dev);
+		dev->irq_managed = 0;
+		dev->irq = 0;
 	}
 }
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 27df4a6..2771625 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -988,23 +988,6 @@ static inline int pci_is_managed(struct pci_dev *pdev)
 	return pdev->is_managed;
 }
 
-static inline void pci_set_managed_irq(struct pci_dev *pdev, unsigned int irq)
-{
-	pdev->irq = irq;
-	pdev->irq_managed = 1;
-}
-
-static inline void pci_reset_managed_irq(struct pci_dev *pdev)
-{
-	pdev->irq = 0;
-	pdev->irq_managed = 0;
-}
-
-static inline bool pci_has_managed_irq(struct pci_dev *pdev)
-{
-	return pdev->irq_managed && pdev->irq > 0;
-}
-
 void pci_disable_device(struct pci_dev *dev);
 
 extern unsigned int pcibios_max_latency;

[toc] | [prev] | [next] | [standalone]


#1336710 — Re: [PATCH v2 0/3] PCI: Revert "Implement pcibios_alloc_irq() and pcibios_free_irq()"

From"Rafael J. Wysocki" <rafael@kernel.org>
Date2016-02-17 20:50 +0100
SubjectRe: [PATCH v2 0/3] PCI: Revert "Implement pcibios_alloc_irq() and pcibios_free_irq()"
Message-ID<r3ggO-2A4-21@gated-at.bofh.it>
In reply to#1336642
On Wed, Feb 17, 2016 at 7:36 PM, Bjorn Helgaas <bhelgaas@google.com> wrote:
> These are clean reverts of 991de2e59090 ("PCI, x86: Implement
> pcibios_alloc_irq() and pcibios_free_irq()") and related changes.
>
> We have two reports of drivers broken in v4.3 by Jiang's change,
> 991de2e59090 ("PCI, x86: Implement pcibios_alloc_irq() and
> pcibios_free_irq()").
>
> It would be best to fix the problem instead of reverting 991de2e59090, but
> I don't have time to do that myself, and we haven't heard from Jiang, so
> the only choice I have is to revert the commit.
>
> Note that reverting will likely break IOAPIC hotplug.
>
> Олег and Sunjin, can you please test this and see whether it fixes your
> drivers?  This patch is based on v4.5-rc1.
>
> I intend to merge these for v4.5 unless I hear objections.
>
> They're on my for-linus branch, so they should appear in linux-next
> tomorrow.
>
> Changes from the v1 posting:
>   - Explicitly revert related patches instead of resolving conflicts
>     manually
> ---
>
> Bjorn Helgaas (3):
>       Revert "x86/PCI: Don't alloc pcibios-irq when MSI is enabled"
>       Revert "PCI: Add helpers to manage pci_dev->irq and pci_dev->irq_managed"
>       Revert "PCI, x86: Implement pcibios_alloc_irq() and pcibios_free_irq()"

ACK for all three FWIW.

Thanks,
Rafael

[toc] | [prev] | [next] | [standalone]


#1337031

FromМороз Олег <oleg.moroz@mcc.vniiem.ru>
Date2016-02-18 06:20 +0100
Message-ID<r3pap-EO-3@gated-at.bofh.it>
In reply to#1336642
On 17.02.2016 21:36, Bjorn Helgaas wrote:
> These are clean reverts of 991de2e59090 ("PCI, x86: Implement
> pcibios_alloc_irq() and pcibios_free_irq()") and related changes.
>
> We have two reports of drivers broken in v4.3 by Jiang's change,
> 991de2e59090 ("PCI, x86: Implement pcibios_alloc_irq() and
> pcibios_free_irq()").
>
> It would be best to fix the problem instead of reverting 991de2e59090, but
> I don't have time to do that myself, and we haven't heard from Jiang, so
> the only choice I have is to revert the commit.
>
> Note that reverting will likely break IOAPIC hotplug.
>
> Олег and Sunjin, can you please test this and see whether it fixes your
> drivers?  This patch is based on v4.5-rc1.
>
> I intend to merge these for v4.5 unless I hear objections.
>
> They're on my for-linus branch, so they should appear in linux-next
> tomorrow.
>
> Changes from the v1 posting:
>    - Explicitly revert related patches instead of resolving conflicts
>      manually
> ---
>
> Bjorn Helgaas (3):
>        Revert "x86/PCI: Don't alloc pcibios-irq when MSI is enabled"
>        Revert "PCI: Add helpers to manage pci_dev->irq and pci_dev->irq_managed"
>        Revert "PCI, x86: Implement pcibios_alloc_irq() and pcibios_free_irq()"
>
>
>   arch/x86/include/asm/pci_x86.h |    2 ++
>   arch/x86/pci/common.c          |   26 ++++++++++----------------
>   arch/x86/pci/intel_mid_pci.c   |    9 +++------
>   arch/x86/pci/irq.c             |   23 +++++++++++++++++++----
>   drivers/acpi/pci_irq.c         |   17 +++++++++++++----
>   include/linux/pci.h            |   17 -----------------
>   6 files changed, 47 insertions(+), 47 deletions(-)
As i undestand this patch will appear in kernel git repo tomorrow? I 
don't need to apply in manyally to v4.5-rc1?

[toc] | [prev] | [next] | [standalone]


#1337491

FromBjorn Helgaas <helgaas@kernel.org>
Date2016-02-18 17:10 +0100
Message-ID<r3zjs-84l-13@gated-at.bofh.it>
In reply to#1337031
On Thu, Feb 18, 2016 at 08:13:41AM +0300, Мороз Олег wrote:
> On 17.02.2016 21:36, Bjorn Helgaas wrote:
> >These are clean reverts of 991de2e59090 ("PCI, x86: Implement
> >pcibios_alloc_irq() and pcibios_free_irq()") and related changes.
> >
> >We have two reports of drivers broken in v4.3 by Jiang's change,
> >991de2e59090 ("PCI, x86: Implement pcibios_alloc_irq() and
> >pcibios_free_irq()").
> >
> >It would be best to fix the problem instead of reverting 991de2e59090, but
> >I don't have time to do that myself, and we haven't heard from Jiang, so
> >the only choice I have is to revert the commit.
> >
> >Note that reverting will likely break IOAPIC hotplug.
> >
> >Олег and Sunjin, can you please test this and see whether it fixes your
> >drivers?  This patch is based on v4.5-rc1.
> >
> >I intend to merge these for v4.5 unless I hear objections.
> >
> >They're on my for-linus branch, so they should appear in linux-next
> >tomorrow.
> >
> >Changes from the v1 posting:
> >   - Explicitly revert related patches instead of resolving conflicts
> >     manually
> >---
> >
> >Bjorn Helgaas (3):
> >       Revert "x86/PCI: Don't alloc pcibios-irq when MSI is enabled"
> >       Revert "PCI: Add helpers to manage pci_dev->irq and pci_dev->irq_managed"
> >       Revert "PCI, x86: Implement pcibios_alloc_irq() and pcibios_free_irq()"
> >
> >
> >  arch/x86/include/asm/pci_x86.h |    2 ++
> >  arch/x86/pci/common.c          |   26 ++++++++++----------------
> >  arch/x86/pci/intel_mid_pci.c   |    9 +++------
> >  arch/x86/pci/irq.c             |   23 +++++++++++++++++++----
> >  drivers/acpi/pci_irq.c         |   17 +++++++++++++----
> >  include/linux/pci.h            |   17 -----------------
> >  6 files changed, 47 insertions(+), 47 deletions(-)
> As i undestand this patch will appear in kernel git repo tomorrow? I
> don't need to apply in manyally to v4.5-rc1?

These are included in the next-20160218 tag in the linux-next git repo (not
Linus' repo) at:

  git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git

You browse this at:

  https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/

If you'd rather, you can also apply the patches yourself to v4.5-rc1.

Bjorn

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web