On Thu, Mar 10, 2005 at 05:29:35AM -0800, [EMAIL PROTECTED] wrote: Nice work, I like it. You could make it even prettier:
> diff -uprN -X dontdiff linux-2.6.11.2-vanilla/arch/i386/pci/irq.c > linux-2.6.11.2/arch/i386/pci/irq.c > --- linux-2.6.11.2-vanilla/arch/i386/pci/irq.c 2005-03-10 > 16:31:25.000000000 +0800 > +++ linux-2.6.11.2/arch/i386/pci/irq.c 2005-03-10 20:43:02.479487640 > +0800 > @@ -58,6 +58,35 @@ struct irq_router_handler { > int (*pcibios_enable_irq)(struct pci_dev *dev) = NULL; > > /* > + * Check passed address for the PCI IRQ Routing Table signature > + * and perform checksum verification. > + */ > + > +static inline struct irq_routing_table * __init pirq_check_routing_table(u8 > *addr) > +{ > + struct irq_routing_table *rt; > + int i; > + u8 sum; > + > + rt = (struct irq_routing_table *) addr; static inline struct irq_routing_table * __init pirq_check_routing_table(unsigned long phys) { struct irq_routing_table *rt = __va(phys); [...] > @@ -65,21 +94,16 @@ static struct irq_routing_table * __init > { > u8 *addr; unsigned long addr; > struct irq_routing_table *rt; > - int i; > - u8 sum; > > + if (pirq_table_addr) { > + rt = pirq_check_routing_table((u8 *) __va(pirq_table_addr)); > + if (rt) { > + return rt; > + } > + } if (pirq_table_addr) { rt = pirq_check_routing_table(pirq_table_addr); if (rt) return rt; } Should we fall back to searching if someone's specified an address? If not, it becomes even simpler: if (pirq_table_addr) { return pirq_check_routing_table(pirq_table_addr); } > for(addr = (u8 *) __va(0xf0000); addr < (u8 *) __va(0x100000); addr += > 16) { This loop would become: for (addr = 0xf0000; addr < 0x100000; addr += 16) { > @@ -27,6 +27,7 @@ > #define PCI_ASSIGN_ALL_BUSSES 0x4000 > > extern unsigned int pci_probe; > +extern unsigned int pirq_table_addr; Completely nitpicking, but I think this should be an unsigned long rather than an int -- physical addresses are normally expressed in terms of unsigned long. > + pirqaddr=0xAAAAA [IA-32] Specify the physical address > + of the PIRQ table (normally generated > + by the BIOS) if it is outside the . > + F0000h-100000h range. And you even bothered to update the documentation! This is definitely a cut above most of the patches I review ;-) -- "Next the statesmen will invent cheap lies, putting the blame upon the nation that is attacked, and every man will be glad of those conscience-soothing falsities, and will diligently study them, and refuse to examine any refutations of them; and thus he will by and by convince himself that the war is just, and will thank God for the better sleep he enjoys after this process of grotesque self-deception." -- Mark Twain - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/