Yenta Socket work with 32-bit card but not 16-bit

David Clark dlclark at chtech.com
Mon Feb 19 12:22:42 EST 2007


I have further traced what is happening in the kernel when it does a
memory probe.

"cs: memory probe 0x80000000-0xfcffffff"
"	excluding 0x80000000-0xfcffffff"

As is steps through the memory between 0x80000000 and 0xfcffffff is does
find several regions that it can successfully claim.  Once it claims a
region, it then attempts to validate the CIS (pccard_validate_cis())
using that memory region however it fails to do so.  It simply cannot
read the CIS.  I don't completely understand how the memory mapping to
the CIS is supposed to work.  Is the card or socket controller supposed
to be setup to allow this access?

The socket controller is setup with memory windows of
0x80000000-0x803ff000 and 0xbf8ff000-0xbfcfe000.  As the kernel probes
memory, it finds that 0x80000000=0x803ff000 is not available.  It finds
that 0x80800000 (searches using a step size of 0x00800000) is available
and attempts to access the CIS at the location.  This outside of the
socket controller's memory windows so is it supposed to be able to
access the CIS in this memory range?  This continues through the entire
probed memory range.  Whenever it hits a memory location that part of
the allocated memory window or allocated to another PCI device, it finds
that the resource is not available.  When it hit a free memory range, it
cannot access the CIS and fails to validate.  What am I missing?

David Clark
Senior Software Engineer
C&H Technologies, Inc
Web: http:\\www.chtech.com
Phone: 512-733-2621
Fax: 512-733-2629
Email: dlclark at chtech.com
 





More information about the linux-pcmcia mailing list