diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-03-14 11:58:38 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-03-14 11:58:38 -0700 |
commit | bf9bc995a59d8c152a4d7e6465d6afa1e098b3e8 (patch) | |
tree | b525863daa5aa6e03afd734a3d38e3680569ff5c /drivers/parisc/iosapic.c | |
parent | 6d71135d635f84b584df55096627ed750c069e61 (diff) | |
parent | e8f208e8f727515bc605f241a5f854b41f77d0ed (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6.29
* git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6.29:
parisc: update defconfigs
parisc: define x->x mmio accessors
parisc: dino: struct device - replace bus_id with dev_name(), dev_set_name()
parisc: convert cpu_check_affinity to new cpumask api
parisc: convert (read|write)bwlq to inlines
parisc: fix use of new cpumask api in irq.c
parisc: update parisc for new irq_desc
parisc: update MAINTAINERS
parisc: fix wrong assumption about bus->self
parisc: fix 64bit build
parisc: add braces around arguments in assembler macros
parisc: fix dev_printk() compile warnings for accessing a device struct
parisc: remove unused local out_putf label
parisc: fix `struct pt_regs' declared inside parameter list warning
parisc: fix section mismatch warnings
parisc: remove klist iterators
parisc: BUG_ON() cleanup
Diffstat (limited to 'drivers/parisc/iosapic.c')
-rw-r--r-- | drivers/parisc/iosapic.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/parisc/iosapic.c b/drivers/parisc/iosapic.c index 0797659ee016..501aaf1f253f 100644 --- a/drivers/parisc/iosapic.c +++ b/drivers/parisc/iosapic.c @@ -487,7 +487,7 @@ iosapic_xlate_pin(struct iosapic_info *isi, struct pci_dev *pcidev) } /* Check if pcidev behind a PPB */ - if (NULL != pcidev->bus->self) { + if (pcidev->bus->parent) { /* Convert pcidev INTR_PIN into something we ** can lookup in the IRT. */ @@ -523,10 +523,9 @@ iosapic_xlate_pin(struct iosapic_info *isi, struct pci_dev *pcidev) #endif /* PCI_BRIDGE_FUNCS */ /* - ** Locate the host slot the PPB nearest the Host bus - ** adapter. - */ - while (NULL != p->parent->self) + * Locate the host slot of the PPB. + */ + while (p->parent->parent) p = p->parent; intr_slot = PCI_SLOT(p->self->devfn); @@ -709,11 +708,14 @@ static void iosapic_set_affinity_irq(unsigned int irq, struct vector_info *vi = iosapic_get_vector(irq); u32 d0, d1, dummy_d0; unsigned long flags; + int dest_cpu; - if (cpu_check_affinity(irq, dest)) + dest_cpu = cpu_check_affinity(irq, dest); + if (dest_cpu < 0) return; - vi->txn_addr = txn_affinity_addr(irq, cpumask_first(dest)); + irq_desc[irq].affinity = cpumask_of_cpu(dest_cpu); + vi->txn_addr = txn_affinity_addr(irq, dest_cpu); spin_lock_irqsave(&iosapic_lock, flags); /* d1 contains the destination CPU, so only want to set that |