Properly managing sub-allocations
M. Warner Losh
imp at bsdimp.com
Mon Oct 2 14:09:18 PDT 2006
In message: <200610021620.44185.john at baldwin.cx>
John Baldwin <john at baldwin.cx> writes:
: On Monday 02 October 2006 15:42, M. Warner Losh wrote:
: > In message: <200610021403.50339.john at baldwin.cx>
: > John Baldwin <john at baldwin.cx> writes:
: > : > However, this may break some existing drivers that allocate a BAR,
: > : > peek at its type and then either activate it or allocate another
: > : > BAR... The TAG is valid, but the handle isn't.
: > :
: > : They generally peak at the BAR register itself though, not the value of
: > : rman_get_bustag() though, right?
: >
: > Some do, some get the resource and look at it. There's a lot of
: > variance here. Do you put knowledge of how to decode PCI bars into
: > every driver, or do you let the pci bus take care of it? Since the
: > knowledge is nearly trivial, different people decide differenly. It
: > is still a technique that has been used, and you'll need to be careful
: > to make sure you don't break anything. After all, 0 is a valid I/O
: > tag and it is also the default value...
:
: Err, how can code examine the actual bus tag value of a non-active resource?
: By definition it's set an opaque MD value. You can't compare it against
: SYS_RES_MEMORY for example. On i386 systems it happens to be an int, on some
: other systems (alpha maybe?) I think it can be a pointer to a structure of
: function pointers for the different bus space operations. I don't think any
: MI code should ever be examining the bus tag or handle except to pass them as
: opaque parameters to bus_space_*().
Actually, you are right. I'm confusing success/failure of allocating
a I/O and/or Memory bar with this...
Warner
More information about the freebsd-new-bus
mailing list