Thread (9 messages) flat view 9 messages, 4 authors, 2006-08-21

RE: Linux hanging on Xilinx SystemACE

From: Keith J Outwater <hidden>
Date: 2006-08-21 21:17:46

The adapter.c file fixed the problem, however running in polling I/O
mode is far too slow. Since this is not an option for successful
operation of our machine, do you know of a driver fix for this problem?
Perhaps a newer version of the linux source tree is necessary. I'm using
the Linuxppc_2_4_devel tree available from bkbits/mvista. Thanks for the
help so far!
Sorry, I am not aware of any driver fix to make interrupt mode work.
Unfortunately, the use of the SystemACE under Linux for access to CF
file systems appears to be a niche application, so it does not receive
a lot of attention.

I recall someone on the net stating that they had observed the SystemAce
issuing more than one interrupt in response to sector transfers.  The
SystemACE is a strange beast (as you may have already observed!) and
perhaps it is being configured in hardware or software differently in your
design versus the Xilinx ML300 design.
For my particular application, I used the CF card to hold a root
filesystem image that was placed in RAM on boot, so I did not see a big
hit during operation.  Basically, the mediocre performance of the driver
in polled mode was good enough for me.  Maybe some day I'll return to that
problem, but right now other issues are more pressing.  As I stated
originally, the SystemACE driver appears to work fine in interrupt
mode for ML300 boards, but dies with Memec eval boards.  Perhaps you can
download the relevant designs for each board and compare them.  If you
do this, be sure to check the schematics as well as the configuration
of the SystemACE and the interrupt controller IP blocks in the Xilinx EDK
tool.  Maybe this will uncover something obvious.  Also, if MontaVista
supports their kernel on the Memec board, they may have seen this problem
and maybe even have fixed it.  I also used the mvista kernel and there is
support for a Memec board in there, although I don't know the exact part 
number.

Keith
Clint Thomas

-----Original Message-----
From: linuxppc-embedded-bounces+cthomas=soneticom.com@ozlabs.org
[mailto:linuxppc-embedded-bounces+cthomas=soneticom.com@ozlabs.org] On
Behalf Of Keith J Outwater
Sent: Wednesday, August 16, 2006 6:02 PM
To: linuxppc-embedded@ozlabs.org
Subject: Re: Linux hanging on Xilinx SystemACE

Clint,
quoted
Using the powerpc development tree of Linux 2.4, I am trying to boot 
my
system from CompactFlash using Xilinx SystemACE. My compact flash card
has two partitions, a 16MB FAT16 that holds the combination FPGA image /
Linux Kernel ELF file, and an Ext2 partition that holds the root file
system. 
The system starts the boot process, uncompresses the Linux kernel and
begins loading drivers. Part way into this process, it conducts a
partition check of the drive being reported to it by SystemACE, however,
it hangs at that point. No kernel panic, no error message, it simply
hangs. Here is the output at that point...
quoted
Partition check:
 xsysacea:

what I am trying to find out is if this problem has been seen/fixed in
the past? or did I format the CF card incorrectly?
quoted
I have a system that uses the SystemAce in a similar way.  I was also
having lockups.  After a lot of digging, I found a patch by John Masters
(e-mail unknown) to the MontaVista SystemAce driver in the 2.4 kernel
that disables the use of interrupts and runs the SystemAce in a polled
mode. 
Performance is not that great, but at least it does not crash with the
patch.  As I recall, the reason that the unpatched driver crashed is
that the SystemAce is issuing more than one interrupt upon completion of
a sector read or write.  Apparently, the Xilinx ML300 board works fine
without this patch while other eval boards like the Memec DS-BD-2VPxx
crash without the patch.

This still may not be your problem, but the patch may help later on.

I've attached the patched file.  The file is from
./drivers/block/xilinx_sysace/adapter.c in the 2.4.30 from MontaVista.

Keith
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help