System ACE driver - for 2.6 kernel - issue resolved

agnel juni junijoseph at yahoo.co.in
Tue Nov 7 06:00:10 EST 2006


Hi Ameet,

We were able to get over with the unstability in the driver with the following fix in the code

Instead of fixing the number of sectors to be 2 in the loop, we are actually doing a read based on the kernel request  like this :

 for(i = xsa_cur_req->current_nr_sectors; i > 0; i-=xsa_cur_req->current_nr_sectors ){
                        xsa_device.req_done = 1;
                        while ((stat = cur_req(&SysAce, sector,
                                        xsa_cur_req->current_nr_sectors ,
                                        buffer)) == XST_DEVICE_BUSY)
                                xsa_short_delay();


Now the driver is stable with all the filesystem commands.

Please test this out and if appropriate patch this to the driver code.

Thanks
Junita

----- Original Message ----
From: Ameet Patil <ammubhai at gmail.com>
To: agnel juni <junijoseph at yahoo.co.in>
Cc: linuxppc-embedded at ozlabs.org
Sent: Thursday, 26 October, 2006 1:00:48 AM
Subject: Re: System ACE driver - for 2.6 kernel - need help to understand xsa_thread

Hi Junita,
    Its a hack really! When I was developing/porting the SysAce driver 
to 2.6 I tried to maintain the code as is from the 2.4 kernel driver. In 
doing so I found that there is a slight difference between the two 
kernels. i.e. I am not sure why, but the sysace device can only handle 
requests for 2 sectors at a time. This was fine in the 2.4 as the kernel 
always requested 2 sectors. However, in 2.6 I found that this is 
different: the requests are 8 secs. or more. I tried to fix this in vain 
by changing several parameters of the driver during initialization. 
Anyway, due to several issues I didn't try hard to fix it at that time.

Hence this hack: No matter how many sec. req. I get from the kernel, I 
use a loop to req. only 2 secs. at a time. The xsa_device.req_done is 
used as a flag and reset in the XSA IRQ IIRC.

If you find a better approach, please do update me. Hope this helps!

cheers,
-Ameet

agnel juni wrote:
> 
> Hello all
> 
> I am trying to understand the parameters that are sent through "cur_req" 
> function used in funtion xsa_thread in System ACE driver.
> 
> In xsa_thread function in the System ACE driver ,
> 
> In 2.4 kernel:
> --------------------
> while ((stat = cur_req(&SysAce, sector,
>                                        CURRENT->current_nr_sectors,
>                                        CURRENT->buffer)) == XST_DEVICE_BUSY)
>                         xsa_short_delay();
> 
>  
> Where as in 2.6 kernel this is changed to
> ---------------------------------------------------------------
> 
> for(i = xsa_cur_req->current_nr_sectors; i > 0; i-=2){
>                         xsa_device.req_done = 1;
>                         while ((stat = cur_req(&SysAce, sector,
>                                         2,
>                                         buffer)) == XST_DEVICE_BUSY)
>                                 xsa_short_delay();
> #endif
> 
> Ameet , could you help me understand the impact of the parameters, 
> especailly the 3rd paramter which is hardcoded in 2.6 kernel.It would be 
> great if you could clarify this in regard to 'mount' command.
> 
> Thanks in advance
> Junita
> 
> 
> 
> ------------------------------------------------------------------------
> Find out what India is talking about on - Yahoo! Answers India 
> <http://us.rd.yahoo.com/mail/in/yanswers/*http://in.answers.yahoo.com/>
> Send FREE SMS to your friend's mobile from Yahoo! Messenger Version 8. 
> Get it NOW 
> <http://us.rd.yahoo.com/mail/in/messengertagline/*http://in.messenger.yahoo.com> 
> 







		
__________________________________________________________
Yahoo! India Answers: Share what you know. Learn something new
http://in.answers.yahoo.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://ozlabs.org/pipermail/linuxppc-embedded/attachments/20061107/fa5aed5e/attachment.htm 


More information about the Linuxppc-embedded mailing list