On 5 January 2015 at 17:35, alvise rigo <a.r...@virtualopensystems.com> wrote: > So I suppose we need to define a fixed number of PCI slots according > to the number of interrupts available in mach-virt. In this regard, > should this number be a qdev property?
The PCI spec means that a bus has an implicit maximum of 32 slots (the devfn in a PCI address is only 5 bits). Note that this doesn't imply having 32 interrupt lines. What you can do is something like this (which is what the versatilepb device-tree-binding will have): + interrupt-map-mask = <0x1800 0 0 7>; + interrupt-map = <0x1800 0 0 1 &sic 28 + 0x1800 0 0 2 &sic 29 + 0x1800 0 0 3 &sic 30 + 0x1800 0 0 4 &sic 27 + + 0x1000 0 0 1 &sic 27 + 0x1000 0 0 2 &sic 28 + 0x1000 0 0 3 &sic 29 + 0x1000 0 0 4 &sic 30 + + 0x0800 0 0 1 &sic 30 + 0x0800 0 0 2 &sic 27 + 0x0800 0 0 3 &sic 28 + 0x0800 0 0 4 &sic 29 + + 0x0000 0 0 1 &sic 29 + 0x0000 0 0 2 &sic 30 + 0x0000 0 0 3 &sic 27 + 0x0000 0 0 4 &sic 28>; That says "we have four interrupts, which are swizzled in the usual way between slots", and doesn't impose any particular maximum number of slots. (Notice that the mask value is 0x1800 0 0 0 7, which means we only match on the low two bits of the devfn, so a unit-interrupt-specifier of <0x2000 0x0 0x0 1> for slot 4 matches the entry <0x0000 0x0 0x0 1> in the map table, as required.) (You'll want to do something more sensible than 27..30, which is just what the interrupt lines on the versatilepb happen to be.) -- PMM