David Hinds dhinds at sonic.net
Mon Dec 29 11:51:24 GMT 2003

On Sat, Dec 27, 2003 at 04:35:02PM -0800, Jim McCloskey wrote:
> |> Just to complete the picture, can you dump the contents of
> |> /proc/iomem under both 2.4 and 2.6 please?


> 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


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.

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

It seems to me that check_resource() should return -EBUSY if
__request_resource() returns either NULL or the parent resource.  Or,
unless there's a reason why it is useful to return the parent resource
for unmappable requests, __request_resource() should just return NULL
for those cases.

-- Dave

More information about the linux-pcmcia mailing list