Matthew Wilcox willy at debian.org
Mon Dec 29 20:26:42 GMT 2003

On Mon, Dec 29, 2003 at 11:51:24AM -0800, David Hinds wrote:
> > 20000000-20000fff : Texas Instruments PCI4410 PC card Cardbus Controller
> > 20400000-207fffff : PCI CardBus #03
> > 20800000-20bfffff : PCI CardBus #03
> > 60000000-60000fff : card services
> > 90000000-9fffffff : PCI Bus #01
> >   90000000-97ffffff : ATI Technologies Inc Radeon Mobility M6 LY
> >     90000000-902fffff : vesafb
> > a0000000-a3ffffff : Intel Corp. 82845 845 (Brookdale) Chipset Host Bridge
> Hmmm.
> The 2.6 memory probe code uses check_resource() against the parent of
> the CardBus bridge.  In this system, that bridge is on PCI bus 2.  The
> a0000000-a0ffffff range is allocated by a PCI device on another bus.

You mean check_region(), right?  If not, could you point me at the code
in question?

> The check_resource() code identifies conflicts by NULL return values
> from __request_resource().  That code returns NULL for conflicts with
> other siblings.  However if a range is requested that is not contained
> within the parent resource, this function returns the parent resource.
> That seems bizarre to me and I have no idea what that is intended to
> accomplish.

It's not quite that simple.  check_region() calls __check_region calls
__request_region() calls __request_resource().  __request_region()
seems to be doing the right thing.  It checks the result (conflict) from
__request_resource() and walks down a level in the tree if the conflict
isn't the parent region itself.

Could you explain a little better?

"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

More information about the linux-pcmcia mailing list