On Thu, 4 Oct 2007, Giuseppe Sacco wrote: > I managed to create a patch against current 2.6.23-rc9 git tree > for supporting PCI bridges on SGI ip32 machines. > This is my first kernel patch, so I am usure about the correct way > to send a patch. Please let me know if anything is wrong. I am glad you have succeeded. A couple of minor notes below. > @@ -31,20 +31,21 @@ > > #define chkslot(_bus,_devfn) \ > do { \ > - if ((_bus)->number > 0 || PCI_SLOT (_devfn) < 1 \ > - || PCI_SLOT (_devfn) > 3) \ > + if ((_bus)->number > 1 || \ > + ((_bus)->number == 0 && (PCI_SLOT (_devfn) < 1 \ > + || PCI_SLOT (_devfn) > 3))) \ > return PCIBIOS_DEVICE_NOT_FOUND; \ I think you should allow any bus numbers, not only 0 and 1 -- while possibly unlikely, you may have a tree of bridges on an option card. The generic code should handle it fine -- you need not care. > -#define mkaddr(_devfn, _reg) \ > -((((_devfn) & 0xffUL) << 8) | ((_reg) & 0xfcUL)) > +#define mkaddr(_bus, _devfn, _reg) \ > +((((_bus)->number & 0xffUL) << 16) | (((_devfn) & 0xffUL) << 8) | ((_reg) & 0xfcUL)) Please fit your lines in 80 characters. > - mace->pci.config_addr = mkaddr(devfn, reg); > + mace->pci.config_addr = mkaddr(bus, devfn, reg); It may be more consistent if you pass just "bus->number". You may neatly avoid the line wrap above this way too. Have you run your change through `scripts/checkpatch.pl'? Maciej