[PATCH kernel v3] powerpc/pci: Fix broken INTx configuration via OF

Subsystems: linux for powerpc (32-bit and 64-bit), the rest

STALE3098d

4 messages, 3 authors, 2018-02-12 · open the first message on its own page

[PATCH kernel v3] powerpc/pci: Fix broken INTx configuration via OF

From: Alexey Kardashevskiy <hidden>
Date: 2018-02-09 06:24:35

Commit 59f47eff03a0 ("powerpc/pci: Use of_irq_parse_and_map_pci() helper")
replaced of_irq_parse_pci() + irq_create_of_mapping() with
of_irq_parse_and_map_pci() but this change lost virq returned by
irq_create_of_mapping() so virq remained zero causing INTx
misconfiguration.

This fixes pci_read_irq_line() not to loose a virq returned by
of_irq_parse_and_map_pci().

Fixes: 59f47eff03a0 "powerpc/pci: Use of_irq_parse_and_map_pci() helper"
Signed-off-by: Alexey Kardashevskiy <redacted>
---
Changes:
v3:
* change virq from unsigned to int as of_irq_parse_and_map_pci returns int
and even though it only returns non-negative values now, this may change
in the future

v2:
* changed the condition from <=0 to !=0 as by design
of_irq_parse_and_map_pci() can only return 0 for an error and virq>0.
---
 arch/powerpc/kernel/pci-common.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
index ae2ede4..446c796 100644
--- a/arch/powerpc/kernel/pci-common.c
+++ b/arch/powerpc/kernel/pci-common.c
@@ -362,7 +362,7 @@ struct pci_controller* pci_find_hose_for_OF_device(struct device_node* node)
  */
 static int pci_read_irq_line(struct pci_dev *pci_dev)
 {
-	unsigned int virq = 0;
+	int virq;
 
 	pr_debug("PCI: Try to map irq for %s...\n", pci_name(pci_dev));
 
@@ -370,7 +370,8 @@ static int pci_read_irq_line(struct pci_dev *pci_dev)
 	memset(&oirq, 0xff, sizeof(oirq));
 #endif
 	/* Try to get a mapping from the device-tree */
-	if (!of_irq_parse_and_map_pci(pci_dev, 0, 0)) {
+	virq = of_irq_parse_and_map_pci(pci_dev, 0, 0);
+	if (virq <= 0) {
 		u8 line, pin;
 
 		/* If that fails, lets fallback to what is in the config
-- 
2.11.0

Re: [PATCH kernel v3] powerpc/pci: Fix broken INTx configuration via OF

From: Bjorn Helgaas <helgaas@kernel.org>
Date: 2018-02-09 18:07:44

On Fri, Feb 09, 2018 at 05:23:58PM +1100, Alexey Kardashevskiy wrote:
Commit 59f47eff03a0 ("powerpc/pci: Use of_irq_parse_and_map_pci() helper")
replaced of_irq_parse_pci() + irq_create_of_mapping() with
of_irq_parse_and_map_pci() but this change lost virq returned by
irq_create_of_mapping() so virq remained zero causing INTx
misconfiguration.

This fixes pci_read_irq_line() not to loose a virq returned by
of_irq_parse_and_map_pci().
s/not to loose a/to not lose the/
Fixes: 59f47eff03a0 "powerpc/pci: Use of_irq_parse_and_map_pci() helper"
Signed-off-by: Alexey Kardashevskiy <redacted>
I'm fine with this version.

Since you started applying a previous version, Michael, I'll assume
you will handle this unless you tell me otherwise.  One way or another
it would be good to get this in before -rc1.
quoted hunk
---
Changes:
v3:
* change virq from unsigned to int as of_irq_parse_and_map_pci returns int
and even though it only returns non-negative values now, this may change
in the future

v2:
* changed the condition from <=0 to !=0 as by design
of_irq_parse_and_map_pci() can only return 0 for an error and virq>0.
---
 arch/powerpc/kernel/pci-common.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
index ae2ede4..446c796 100644
--- a/arch/powerpc/kernel/pci-common.c
+++ b/arch/powerpc/kernel/pci-common.c
@@ -362,7 +362,7 @@ struct pci_controller* pci_find_hose_for_OF_device(struct device_node* node)
  */
 static int pci_read_irq_line(struct pci_dev *pci_dev)
 {
-	unsigned int virq = 0;
+	int virq;
 
 	pr_debug("PCI: Try to map irq for %s...\n", pci_name(pci_dev));
 
@@ -370,7 +370,8 @@ static int pci_read_irq_line(struct pci_dev *pci_dev)
 	memset(&oirq, 0xff, sizeof(oirq));
 #endif
 	/* Try to get a mapping from the device-tree */
-	if (!of_irq_parse_and_map_pci(pci_dev, 0, 0)) {
+	virq = of_irq_parse_and_map_pci(pci_dev, 0, 0);
+	if (virq <= 0) {
 		u8 line, pin;
 
 		/* If that fails, lets fallback to what is in the config
-- 
2.11.0

Re: [PATCH kernel v3] powerpc/pci: Fix broken INTx configuration via OF

From: Bjorn Helgaas <helgaas@kernel.org>
Date: 2018-02-10 20:51:26

On Fri, Feb 09, 2018 at 12:07:41PM -0600, Bjorn Helgaas wrote:
On Fri, Feb 09, 2018 at 05:23:58PM +1100, Alexey Kardashevskiy wrote:
quoted
Commit 59f47eff03a0 ("powerpc/pci: Use of_irq_parse_and_map_pci() helper")
replaced of_irq_parse_pci() + irq_create_of_mapping() with
of_irq_parse_and_map_pci() but this change lost virq returned by
irq_create_of_mapping() so virq remained zero causing INTx
misconfiguration.

This fixes pci_read_irq_line() not to loose a virq returned by
of_irq_parse_and_map_pci().
s/not to loose a/to not lose the/
quoted
Fixes: 59f47eff03a0 "powerpc/pci: Use of_irq_parse_and_map_pci() helper"
Signed-off-by: Alexey Kardashevskiy <redacted>
I'm fine with this version.

Since you started applying a previous version, Michael, I'll assume
you will handle this unless you tell me otherwise.  One way or another
it would be good to get this in before -rc1.
I went ahead and applied this and asked Linus to pull it.
quoted
---
Changes:
v3:
* change virq from unsigned to int as of_irq_parse_and_map_pci returns int
and even though it only returns non-negative values now, this may change
in the future

v2:
* changed the condition from <=0 to !=0 as by design
of_irq_parse_and_map_pci() can only return 0 for an error and virq>0.
---
 arch/powerpc/kernel/pci-common.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
index ae2ede4..446c796 100644
--- a/arch/powerpc/kernel/pci-common.c
+++ b/arch/powerpc/kernel/pci-common.c
@@ -362,7 +362,7 @@ struct pci_controller* pci_find_hose_for_OF_device(struct device_node* node)
  */
 static int pci_read_irq_line(struct pci_dev *pci_dev)
 {
-	unsigned int virq = 0;
+	int virq;
 
 	pr_debug("PCI: Try to map irq for %s...\n", pci_name(pci_dev));
 
@@ -370,7 +370,8 @@ static int pci_read_irq_line(struct pci_dev *pci_dev)
 	memset(&oirq, 0xff, sizeof(oirq));
 #endif
 	/* Try to get a mapping from the device-tree */
-	if (!of_irq_parse_and_map_pci(pci_dev, 0, 0)) {
+	virq = of_irq_parse_and_map_pci(pci_dev, 0, 0);
+	if (virq <= 0) {
 		u8 line, pin;
 
 		/* If that fails, lets fallback to what is in the config
-- 
2.11.0

Re: [PATCH kernel v3] powerpc/pci: Fix broken INTx configuration via OF

From: Michael Ellerman <mpe@ellerman.id.au>
Date: 2018-02-12 03:49:35

Bjorn Helgaas [off-list ref] writes:
On Fri, Feb 09, 2018 at 12:07:41PM -0600, Bjorn Helgaas wrote:
quoted
On Fri, Feb 09, 2018 at 05:23:58PM +1100, Alexey Kardashevskiy wrote:
quoted
Commit 59f47eff03a0 ("powerpc/pci: Use of_irq_parse_and_map_pci() helper")
replaced of_irq_parse_pci() + irq_create_of_mapping() with
of_irq_parse_and_map_pci() but this change lost virq returned by
irq_create_of_mapping() so virq remained zero causing INTx
misconfiguration.

This fixes pci_read_irq_line() not to loose a virq returned by
of_irq_parse_and_map_pci().
s/not to loose a/to not lose the/
quoted
Fixes: 59f47eff03a0 "powerpc/pci: Use of_irq_parse_and_map_pci() helper"
Signed-off-by: Alexey Kardashevskiy <redacted>
I'm fine with this version.

Since you started applying a previous version, Michael, I'll assume
you will handle this unless you tell me otherwise.  One way or another
it would be good to get this in before -rc1.
I went ahead and applied this and asked Linus to pull it.
Thanks.

cheers
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help