[Prism54-users] [Madwifi-users] PCI memory reservation failures

Alec H. Peterson ahp@hilander.com
Sat, 08 May 2004 13:52:37 -0600


Actually, for 2.6 you should use BRIDGE_MEM_MIN and BRIDGE_MEM_MAX. 
However, if your card is being seen by the driver then you have a different 
problem than this fix was built for.  However, the fact that your card 
continues be seen by the driver with this fix in place is a very useful 
datapoint.

Thanks!

Alec

--On Saturday, May 8, 2004 8:35 PM +0200 Mathias B <mathiasb@email.dk> 
wrote:

> Hi
>
> Just thought somebody might want to know...
> I saw this post, and even though it said it was for the 2.4 kernel i
> thought i  would try it out (i'm running 2.6.4) as i am having some small
> problems with  my smc2835w. I copied the patch into
> drivers/pcmcia/yenta_socket.c at the  spot in yenta_allocate_res() that
> looked about right and changed  BRIDGE_SIZE_MIN to BRIDGE_IO_MIN as the
> compiler was complaining that this  variable didn't exist (don't now if
> it's the correct one i changed it to, but  it did compile).
>
> The result is that i am still having the same problems i had before (i
> have to  try a couple of times to get the wireless device up), but now
> the card seems  a lot snappier and it gets a link 4 or 5 times quicker
> than before (and that's  good as i also have problems with my card
> loosing the link ;) ).
>
> --
> Mvh.
> 	Mathias Bertelsen
>
>
> On Friday 07 May 2004 03:45, Alec H. Peterson wrote:
>> Sorry for the crosspost, but this issue seems to have surfaced for users
>> of both of these drivers.  And yes I know this is not describing a
>> problem with either of the drivers represented on these lists, but
>> hopefully people will find it relevant.
>>
>> I believe I have found a fix to these problems.  The root cause of the
>> problem is the fact that the BIOS in question is not aligning the memory
>> it is assigning to the CardBus slots.  So the kernel is attempting to
>> align it on its own, but then another problem comes up because in this
>> case there is only 8K of memory available, and that is how much some of
>> the cards need (in some cases they need even more).  According to the
>> yenta driver the minimum amount of memory that should be allocated to
>> each slot is 16K. Anyway, I have put a patch into drivers/pcmcia/yenta.c
>> that looks like this (in yenta_allocate_res(), kernel 2.4.25):
>>
>>         start = config_readl(socket, offset) & mask;
>>         end = config_readl(socket, offset+4) | ~mask;
>> # if 1
>>         if (!(type & IORESOURCE_IO) && (((end - start) < BRIDGE_SIZE_MIN)
>> || (start & (end - start))))
>>         {
>>                 printk(KERN_INFO "yenta %s: Preassigned resource start
>>                 %lx
>> end %lx too small or not aligned.\n", socket->dev->slot_name, start,
>> end); res->start = res->end = 0;
>>         }
>>         else
>> # endif
>>         if (start && end > start) {
>>                 res->start = start;
>>
>> Basically it is doing sanity checking on the memory that the PCI BIOS has
>> pre-allocated, and if the sanity check fails it goes ahead and allocates
>> a new block of memory (that happens automatically further along in
>> yenta_allocate_res()).  With this patch in place I can now initialize and
>> use both PrismGT and Atheros cards with no problems.
>>
>> I welcome any feedback or input about this.  If this is good, bad, or an
>> abomination against the kernel I would really like to hear about it.
>> I've sent it to the linux-kernel list as well (I received some helpful
>> suggestions there) but I have not yet had any feedback about whether or
>> not this is a good thing.  I don't have a huge variety of systems to
>> test this against so I would really love to hear how this works on other
>> systems.
>>
>> Thanks!
>>
>> Alec
>>
>>
>>
>> -------------------------------------------------------
>> This SF.Net email is sponsored by Sleepycat Software
>> Learn developer strategies Cisco, Motorola, Ericsson & Lucent use to
>> deliver higher performing products faster, at low TCO.
>> http://www.sleepycat.com/telcomwpreg.php?From=osdnemail3
>> _______________________________________________
>> Madwifi-users mailing list
>> Madwifi-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/madwifi-users
>>
>> _______________________________________________
>> Prism54-users mailing list
>> Prism54-users@prism54.org
>> http://prism54.org/mailman/listinfo/prism54-users
>