Messages in this thread | | | Date | Thu, 27 Mar 2008 10:12:10 -0700 (PDT) | From | Linus Torvalds <> | Subject | Re: [patch] pci: revert "PCI: remove transparent bridge sizing" |
| |
On Wed, 26 Mar 2008, Linus Torvalds wrote: > On Thu, 27 Mar 2008, Ivan Kokshaysky wrote: > > > > If the new "align" field (and then, maybe, "size" instead of "end"?) > > is OK, then I'm definitely willing to give it a try. > > Adding an alignment field should be a non-issue: the size of this > structure is not likely to be a big deal (yeah, we have something like 12 > of them in each PCI device etc, so smaller is better, but it's still not > going to be something anybody really notices).
Actually, before we go any further, there might be a less intrusive alternative: add just a couple of flags to the resource flags field (we still have something like 8 unused bits on 32-bit), and use those to implement a generic "resource_alignment()" routine.
Two flags would do it:
- IORESOURCE_SIZEALIGN: size indicates alignment (regular PCI device resources)
- IORESOURCE_STARTALIGN: start field is alignment (PCI bus resources during probing)
and then the case of both flags zero (or both bits set) would actually be "invalid", and we would also clear the IORESOURCE_STARTALIGN flag when we actually allocate the resource (so that we don't use the "start" field as alignment incorrectly when it no longer indicates alignment).
That wouldn't be totally generic, but it would have the nice property of automatically at least add sanity checking for that whole "res->start has the odd meaning of 'alignment' during probing" and remove the need for a new field, and it would allow us to have a generic "resource_alignment()" routine that just gets a resource pointer.
Linus
| |