From 4846e0c6aaa7eb9bd459ca77ac77a379158c2bcf Mon Sep 17 00:00:00 2001 From: Benjamin Herrenschmidt Date: Fri, 15 Dec 2006 07:13:26 +1100 Subject: [PATCH] --- yaml --- r: 44755 b: refs/heads/master c: 6f67f9d26fe5ced50f716e9620b42c0721d8b8d9 h: refs/heads/master i: 44753: 798c1bec295d5f19079118d07f1b43598f765e71 44751: 12760cb4397375a7c7262150e792934c0a435b12 v: v3 --- [refs] | 2 +- trunk/arch/powerpc/kernel/prom_parse.c | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 325b6b3a4649..b9e94f85e2c3 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3cd7613e25ffc0a76080045e179f984a32208829 +refs/heads/master: 6f67f9d26fe5ced50f716e9620b42c0721d8b8d9 diff --git a/trunk/arch/powerpc/kernel/prom_parse.c b/trunk/arch/powerpc/kernel/prom_parse.c index 0dfbe1cd28eb..12c51e4ad2b4 100644 --- a/trunk/arch/powerpc/kernel/prom_parse.c +++ b/trunk/arch/powerpc/kernel/prom_parse.c @@ -920,9 +920,20 @@ static int of_irq_map_oldworld(struct device_node *device, int index, /* * Old machines just have a list of interrupt numbers - * and no interrupt-controller nodes. + * and no interrupt-controller nodes. We also have dodgy + * cases where the APPL,interrupts property is completely + * missing behind pci-pci bridges and we have to get it + * from the parent (the bridge itself, as apple just wired + * everything together on these) */ - ints = get_property(device, "AAPL,interrupts", &intlen); + while (device) { + ints = get_property(device, "AAPL,interrupts", &intlen); + if (ints != NULL) + break; + device = device->parent; + if (device && strcmp(device->type, "pci") != 0) + break; + } if (ints == NULL) return -EINVAL; intlen /= sizeof(u32);