SIS1100/3100 FAQs/driver installation problems/solutions


As of December 6th of 2012 SIS1100(e)/310x driver related issues will be posted in our DAQ Blog
Struck Blog Struck DAQ Blog

Driver hangs on system shutdown

Problem:

Driver hangs on system shutdown

Solution:

use rcsis.txt script (which loads/unloads driver according to runlevel) or add rmmod sis1100 to /etc/init.d/halt.local


out of vmalloc space (with NVIDIA PCIe graphics card e.g.)

Problem (dmesg output):

SIS1100 driver V2.04 (c) 11.Jun.2004 FZ Juelich

ACPI: PCI Interrupt 0000:03:0f.0[A] -> GSI 23 (level, low) -> IRQ 201

sis1100: found sis1100 at 0000:03:0f.0

sis1100[0]: sis1100_irq_thread started

sis1100[0]: plx_addr=0xc0201000

sis1100[0]: mapped at f9052000 (size=0x100)

sis1100[0]: reg_addr=0xc0200000

sis1100[0]: mapped at f9054000 (size=0x1000)

sis1100[0]: rem_addr=0xd0000000

sis1100[0]: rem_size=0x10000000

allocation failed: out of vmalloc space - use vmalloc=<size> to increase size.

allocation failed: out of vmalloc space - use vmalloc=<size> to increase size.

...

Solution:


use vmalloc=512m as boot parameter

Fedora Kernel 2.6.11-x

Problem:

/home/vme/V2.04/dev/pci/sis1100_autoconf_linux.c: In function ‘sis1100_linux_init’: /home/vme/V2.04/dev/pci/sis1100_autoconf_linux.c:308: warning: ignoring return v alue of ‘pci_set_consistent_dma_mask’, declared with attribute warn_unused_resul t

Solution:

if ((res=pci_set_consistent_dma_mask(dev, 0xffffffff)))
{ pWARNING(sc, "coherent DMA not available.");
goto fehler_request_irq;
}
Remove sis1100.mod.c manually before recompiling.

What device to use for VME access with V2.02 driver?

Solution:

The first SIS1100 in the PC is used for VME access over /tmp/sis1100_00remote


V1.3 mmap fails with large physical memory

Problem:

SIS1100 driver V1.3 (c) 31.07.2003 FZ Juelich

SIS1100: found Research Centre Juelich SIS1100 [Gigabit link] at 02:09.0

SIS1100: can't map remote space

SIS1100: mmap not available

SIS1100: irq 5 installed V2.02 driver compilation problem under kernel 2.6.14 io_remap_page_range

Solution:

the V1.3 driver tries to map the full 256 MByte space of the SIS1100

use following patch, which reduces the mapped space until success (or a minimum value)sis100_linux_init_patch.c

the output with a reduction to 64 MBytes until success is illustrated below

SIS1100 driver V1.3 (c) 31.07.2003 FZ Juelich

SIS1100: found Research Centre Juelich

SIS1100 [Gigabit link] at 02:09.0

SIS1100: mapping 268435456 Bytes of remote space: failed.

SIS1100: mapping 134217728 Bytes of remote space: failed.

SIS1100: mapping 67108864 Bytes of remote space: success.

SIS1100: mapped 67108864 Bytes of remote space at 0xf8b35000

SIS1100: irq 5 installed


V2.02 driver compilation problem under kernel 2.6.14 io_remap_page_range

Problem:


V2.02 driver compilation problem under kernel 2.6.14 io_remap_page_range

Solution:

see noioremap.txt


V1.3 Compilation under CERN Kernel 2.4.21-32 (and similar kernels)

Problem:


Compilation

Solution:

see changesSIS1100191005.txt

Thanks to Domizia Orestano for the information and sending the diff file

Problem:


V2.02 driver compilation problem under kernel 2.6.x (x around 12)

... structure has no member name 'slot_name'

Solution:

replace

dev->slot_name

with

pci_name(dev)


Problem:


V2.02 driver compilation problem under kernel 2.6.x (x around 9)

*** Warning: "kill_proc_info" ........ undefined!

Solution:

replace

res=kill_proc_info(fd->sig, (void *)0,fd->pid);

with

res=kill_proc(fd->pid,fd->sig,0);


Problem:


Compilation problem under kernel 2.4.20 (probably induced by mixed in 2.5.xx contents) as shown below:

> > > [root@NB3Al driver]# make

> > > gcc -g3 -O -D__KERNEL__ -DMODULE -DMODULENAME=SIS1100 -Wall -I./..

> > > -I./../../common -I/usr/src/linux/include -c -o sis1100_mmap.o

> > > sis1100_mmap.c

> > > sis1100_mmap.c: In function `sis1100_mmap':

> > > sis1100_mmap.c:57: warning: passing arg 1 of `remap_page_range' makes

> > pointer

> > > from integer without a cast

> > > sis1100_mmap.c:57: incompatible type for argument 4 of

> `remap_page_range'

> > > sis1100_mmap.c:57: too few arguments to function `remap_page_range'

> > > make: *** [sis1100_mmap.o] Error 1

> > > [root@NB3Al driver]#

Solution:

edit sis1100_mmap.c to reflect:

-----------------------------------------------------------------------

if ((error = remap_page_range(vma, vma->vm_start, memoffset, size, vma->vm_page_prot))!=0)

------------------------------------------------------------------------


Bus error handling after (consecutive) BLT reads (from empty FIFO e.g.)

Problem:

The driver returns a 0 return code (instead of the bus error return code 0x211) after one or more bus errors. Data are corrupted upon the next read (with a non BERR access from a now filled FIFO).

Solutions:

Termination of the DMA after the occurence of bus error with consecutive abort has to be checked by polling the corresponding status bit.
a.) upgrade to driver V1.3 (Kernel Revision 2.4.18 or higher required)
b.) use new sis1100_read_dma.c
c.) add #define sr_abort_dma (1<<31) to sis1100_map.h

Driver problem with devfs

Solution:

Resolved with V1.3


Driver V1.0/V1.1 XOFF problem after 1 word DMA

Problem:

Under certain circumstances a mixture of single read/write cycles and block transfers may result in a situation like:

A32BLT32 call fails (returns a transfer count not equal to the requested count)
with the following messages in the system log:
Nov 1 15:13:41 wimp2 kernel: SIS1100[0]: S_XOFF
Nov 1 15:13:41 wimp2 kernel: SIS1100[0]: status=0x00310a03

The actual problem is caused by a 10 ms Timeout after a 1 word block read

Solutions:

a.) upgrade to driver V1.2 (Kernel Revision 2.4.18 or higher required)
b.) upgrade SIS1100 firmware to 7

Driver V1.0 BLT problems with large memory

Problem:

BLT reads return corrupt data (with proper return code) on machines with large memory (i.e. the problem was observed with 2GB physical memory) and large user address space (observed with 3 GB).

Solutions:

a.) Reduce user address space to 1 GB.
b.) upgrade to V1.1 (Kernel Revision 2.4.18 or higher required)

Driver V1.0 with older SIS1100/3100 firmware

Problem:

Driver will not load/will not accept firmware status of SIS1100/3100.
Use dmesg or look in /var/log/messages as root to check.

Solution:

a.) longterm: upgrade firmware of SIS1100 and SIS3100 card (this is required to make use of 2e VME functionality anyway)

b.) shortterm: edit sis1100_init.c and sis1100_init_remote.c to ignore the unknown firmware.

Redhat CERN Kernel 2.4.9-31.1.cern (and similar kernels)

Problem:

[root@pcephc164 driver]# make sis1100_linux_init.c: In function `SIS1100_linux_init':
sis1100_linux_init.c:179: warning: implicit declaration of function `alloc_kiovec'
sis1100_linux_init.c:195: warning: unsigned int format, different type arg (arg 2)
sis1100_linux_init.c:226: warning: implicit declaration of function `free_kiovec'

Solution:

1. int nbhs = KIO_MAX_SECTORS;

2. replace alloc_kiovec and free_kiovec with alloc_kiovec_sz(......,....,&nbhs) and free_kiovec_sz(....,....,&nbhs)

Last update 04.07.07 by Matthias Kirsch