Hi Philippe, Philippe Gerum wrote: > On Thu, 2009-11-26 at 10:34 +0100, Alexis Berlemont wrote: >> On Thu, Nov 26, 2009 at 9:22 AM, Ettore Pedretti <epedr...@gmail.com> wrote: >>> Hi Alexis, >>> >>> I applied the patch to my local git repository: >>> >>> fangorn:/usr/src# >>> cd xenomai-head/ >>> fangorn:/usr/src/xenomai-head# git apply ../patch_debug_1.diff >>> patch_debug_1.diff >>> fangorn:/usr/src/xenomai-head# git apply ../patch_debug_1.diff >>> ../patch_debug_1.diff:14: trailing whitespace. >>> rtdm_printk("\t handler=%p, irq=%d, cookie=%p\n", >>> warning: 1 line adds whitespace errors. >>> >>> Then created a debian package: >>> >>> git-buildpackage -us -uc -rfakeroot --git-debian-branch=master >>> --git-upstream-branch=origin/master --git-ignore-new >>> >>> built a new kernel package: >>> >>> fakeroot make-kpkg --initrd --added-patches xenomai >>> --revision=ipipeComedi.2.4.06 --config menuconfig binary-arch >>> >>> and installed the Debian package with dpkg -i >>> >>> This is what happens when i insert the module into the kernel: >>> >>> fangorn:~/control/CHAMP/irqTest# insmod irqTest.ko >>> Killed >>> >>> Message from sysl...@fangorn at Nov 26 00:09:52 ... >>> kernel:Oops: 0000 [#1] PREEMPT SMP >>> fangorn:~/control/CHAMP/irqTest# >>> Message from sysl...@fangorn at Nov 26 00:09:52 ... >>> kernel:last sysfs file: /sys/class/net/lo/operstate >>> >>> Message from sysl...@fangorn at Nov 26 00:09:52 ... >>> kernel:Process insmod (pid: 3566, ti=f6c02000 task=f78634b0 >>> task.ti=f6c02000) >>> >>> Message from sysl...@fangorn at Nov 26 00:09:52 ... >>> kernel:I-pipe domain Linux >>> >>> Message from sysl...@fangorn at Nov 26 00:09:52 ... >>> kernel:Stack: >>> >>> Message from sysl...@fangorn at Nov 26 00:09:52 ... >>> kernel:Call Trace: >>> >>> Message from sysl...@fangorn at Nov 26 00:09:52 ... >>> kernel:Code: Bad EIP value. >>> >>> Message from sysl...@fangorn at Nov 26 00:09:52 ... >>> kernel:EIP: [<00000000>] 0x0 SS:ESP 0068:f6c03f18 >>> >>> Message from sysl...@fangorn at Nov 26 00:09:52 ... >>> kernel:CR2: 0000000000000000 >>> >>> dmesg after insmod: >>> >>> irq_test: before rtdm_irq_request >>> BUG: unable to handle kernel NULL pointer dereference at (null) >>> IP: [<(null)>] (null) >>> *pde = 00000000 >>> Oops: 0000 [#1] PREEMPT SMP >>> last sysfs file: /sys/class/net/lo/operstate >>> Modules linked in: irqTest(+) xeno_native analogy_ni_pcimio >>> analogy_ni_mio analogy_ni_tio analogy_8255 analogy_ni_mite >>> xeno_analogy xeno_rtdm astropci ext3 jbd mbcache ide_pci_generic >>> ide_core ata_piix sata_mv e1000 libata unix [last unloaded: >>> scsi_wait_scan] >>> >>> Pid: 3566, comm: insmod Not tainted (2.6.31.1 #1) X6DA8 >>> EIP: 0060:[<00000000>] EFLAGS: 00010246 CPU: 1 >>> EIP is at 0x0 >>> EAX: 00000030 > > This is likely IRQ 48, with rthal_irq_enable jumping to address zero. > >> EBX: 00000000 ECX: 00000030 EDX: c1250b80 >>> ESI: f8e24500 EDI: 00000000 EBP: f6c03f1c ESP: f6c03f18 >>> DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 >>> Process insmod (pid: 3566, ti=f6c02000 task=f78634b0 task.ti=f6c02000) >>> I-pipe domain Linux >>> Stack: >>> c1154166 f6c03f24 c105abf7 f6c03f40 f8a0ea5d f8e24000 00000000 00000000 >>> <0> f8e27000 00000000 f6c03f58 f8e2703e 00000000 f8e24066 00000000 f8e27000 >>> <0> f6c03f84 c1001028 f8e243c0 00000001 fffffffc f8e243c0 00000000 f6c03f84 >>> Call Trace: >>> [<c1154166>] ? rthal_irq_enable+0x2d/0x31 >>> [<c105abf7>] ? xnintr_enable+0xb/0xd >>> [<f8a0ea5d>] ? rtdm_irq_request+0x48/0x5e [xeno_rtdm] >>> [<f8e24000>] ? test_handler+0x0/0x1c [irqTest] >>> [<f8e27000>] ? __test_init+0x0/0x7e [irqTest] >>> [<f8e2703e>] ? __test_init+0x3e/0x7e [irqTest] >>> [<f8e27000>] ? __test_init+0x0/0x7e [irqTest] >>> [<c1001028>] ? do_one_initcall+0x23/0x183 >>> [<c103a825>] ? blocking_notifier_call_chain+0x1a/0x1c >>> [<c10481e9>] ? sys_init_module+0xad/0x1ec >>> [<c1092cc5>] ? sys_close+0x71/0xb5 >>> [<c1002c25>] ? sysenter_do_call+0x12/0x16 >>> Code: Bad EIP value. >>> EIP: [<00000000>] 0x0 SS:ESP 0068:f6c03f18 >>> CR2: 0000000000000000 >>> ---[ end trace ac2616367ecf94b2 ]--- >>> >>> I hope this is what you wanted me to try. Please let me know. >> So if I understand well, you "insmoded" the little test module which >> does nothing but calling rtdm_irq_request() and the NULL pointer bug >> occured. >> >> This bug occurred before calling analogy_config, you did not tried to >> attach the ni_pcimio driver, right ? >> >> If I am right, it seems like the bug is not located in analogy but >> between Xenomai's nucleus and Ipipe, which is ... weird. >> > > The IRQ requested does not seem to have been associated with any chip > controller, which is likely the basic issue.
I had a look at arch/x86/kernel/apic/io_apic.c and the only controllers which seem left unhandled by ipipe are the remapped ones (and the hpet but I doubt it could be the hpet). Do you see any other possibility ? Do you think that writing a little test module which requests the irq (through Linux API) is a good idea ? After having loaded this module, the problematic controller should be listed in /proc/interrupts... >> What is your kernel configuration ? no IO_APIC ? >> Which irq did you try to request ? 48 or 5 ? >> >> Which CPU are you using ? >> > > Looks like something being used in x86_32 mode. > >> Thank you for your time. >> >>> Cheers >>> Ettore >>> >>> >>> 2009/11/24 Alexis Berlemont <berlemont.h...@free.fr>: >>>> On Tuesday 24 November 2009 22:34:33 Ettore Pedretti wrote: >>>>> Hi, >>>>> >>>>> Would it help at this stage if I re-enable IO APIC, run your program >>>>> and send you the call-stack dump? I am willing to test your patch on >>>>> our hardware as soon as you got one ready, if that can be of help. >>>> Sorry, I did not answer your question. The bug occurs in both >>>> configurations; >>>> so, do not bother changing your configuration for the moment. >>>> >>>>> Cheers >>>>> Ettore >>>>> >>>>> 2009/11/23 Alexis Berlemont <berlemont.h...@free.fr>: >>>>>> Hi, >>>>>> >>>>>> On Monday 23 November 2009 18:26:15 Ettore Pedretti wrote: >>>>>>> Hi, >>>>>>> >>>>>>> It is finally working. here is the dmesg after I insert a module: >>>>>>> >>>>>>> irq_test: before rtdm_irq_request >>>>>>> irq_test: after rtdm_irq_request (err = -22) >>>>>>> irq_test: before rtdm_irq_enable >>>>>>> irq_test: after rtdm_irq_enable (err = -22) >>>>>> rtdm_irq_request() returns -EINVAL because the IO APIC is disabled. So, >>>>>> the irq 48 turns into the irq 5; >>>>>> >>>>>>> Attached are a complete call-stack dump and my present kernel >>>>>>> configuration. >>>>>> With the fact that there is still a NULL pointer bug without IO APIC, the >>>>>> bug is bound to be located in analogy. There may be some wrong write >>>>>> access on the interrupt structure. >>>>>> >>>>>> I will come back with a patch which dumps the structure's content at >>>>>> various locations in the attach code. >>>>>> >>>>>>> Cheers >>>>>>> Ettore >>>>>>> >>>>>>> 2009/11/23 Alexis Berlemont <berlemont.h...@free.fr>: >>>>>>>> Hi, >>>>>>>> >>>>>>>> On Mon, Nov 23, 2009 at 9:28 AM, Ettore Pedretti <e...@st-and.ac.uk> >>>>>> wrote: >>>>>>>>> Hi, >>>>>>>>> >>>>>>>>> I have compiled the module using this makefile: >>>>>>>>> >>>>>>>>> prefix := $(shell /usr/bin/xeno-config --prefix) >>>>>>>>> obj-m := irqTest.o >>>>>>>>> >>>>>>>>> ifeq ($(prefix),) >>>>>>>>> $(error Please add <xeno-install>/bin to your PATH variable) >>>>>>>>> endif >>>>>>>>> >>>>>>>>> KDIR := /lib/modules/$(shell uname -r)/build >>>>>>>>> PWD := $(shell pwd) >>>>>>>>> EXTRA_CFLAGS := -I/usr/include/xenomai -I/usr/include/ >>>>>>>>> >>>>>>>>> >>>>>>>>> all: default >>>>>>>>> >>>>>>>>> default: >>>>>>>>> $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules >>>>>>>>> >>>>>>>>> install: >>>>>>>>> $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules_install >>>>>>>>> >>>>>>>>> clean: >>>>>>>>> rm -fr *.mod.c *.o *.ko irqTest *~ .irqTest* .tmp_versions >>>>>>>>> >>>>>>>>> The module seems to compiles fine: >>>>>>>>> >>>>>>>>> make -C /lib/modules/2.6.31.1/build >>>>>>>>> SUBDIRS=/home/ep41/control/CHAMP/irqTest modules >>>>>>>>> make[1]: Entering directory `/usr/src/linux-2.6.31.1' >>>>>>>>> CC [M] /home/ep41/control/CHAMP/irqTest/irqTest.o >>>>>>>>> Building modules, stage 2. >>>>>>>>> MODPOST 1 modules >>>>>>>>> CC /home/ep41/control/CHAMP/irqTest/irqTest.mod.o >>>>>>>>> LD [M] /home/ep41/control/CHAMP/irqTest/irqTest.ko >>>>>>>>> make[1]: Leaving directory `/usr/src/linux-2.6.31.1' >>>>>>>>> >>>>>>>>> To make sure module dependencies are in place I modprobe irqbench >>>>>>>>> (probably not necessary). >>>>>>>>> >>>>>>>>> modprobe xeno_irqbench >>>>>>>>> >>>>>>>>> All the loaded modules: >>>>>>>>> >>>>>>>>> fangorn:~# lsmod >>>>>>>>> Module Size Used by >>>>>>>>> xeno_irqbench 5152 0 >>>>>>>>> xeno_native 83296 0 >>>>>>>>> analogy_ni_pcimio 15676 0 >>>>>>>>> analogy_ni_mio 41596 1 analogy_ni_pcimio >>>>>>>>> analogy_ni_tio 21724 1 analogy_ni_mio >>>>>>>>> analogy_8255 4060 1 analogy_ni_mio >>>>>>>>> analogy_ni_mite 9980 3 >>>>>>>>> analogy_ni_pcimio,analogy_ni_mio,analogy_ni_tio xeno_analogy >>>>>>>>> 38876 5 >>>>>>>>> analogy_ni_pcimio,analogy_ni_mio,analogy_ni_tio,analogy_8255,analogy_ >>>>>>>>> ni_ mite xeno_rtdm 24244 3 >>>>>>>>> xeno_irqbench,analogy_ni_mio,xeno_analogy astropci >>>>>>>>> 10968 0 >>>>>>>>> ext3 112900 1 >>>>>>>>> jbd 44016 1 ext3 >>>>>>>>> mbcache 6652 1 ext3 >>>>>>>>> ide_pci_generic 3712 0 >>>>>>>>> ide_core 79388 1 ide_pci_generic >>>>>>>>> e1000 118204 0 >>>>>>>>> ata_piix 15968 2 >>>>>>>>> sata_mv 27632 0 >>>>>>>>> libata 151468 2 ata_piix,sata_mv >>>>>>>>> unix 24460 10 >>>>>>>>> >>>>>>>>> >>>>>>>>> When I insert the module it complains about missing symbols: >>>>>>>>> >>>>>>>>> insmod irqTest.ko >>>>>>>>> >>>>>>>>> insmod: error inserting 'irqTest.ko': -1 Unknown symbol in module >>>>>>>>> >>>>>>>>> dmesg: >>>>>>>>> >>>>>>>>> irqTest: module license 'unspecified' taints kernel. >>>>>>>>> Disabling lock debugging due to kernel taint >>>>>>>>> irqTest: Unknown symbol xnintr_enable >>>>>>>>> irqTest: Unknown symbol xnintr_detach >>>>>>>>> >>>>>>>>> What am I doing wrong? >>>>>>>> It's me who did wrong. I just tested the compilation inside the >>>>>>>> kernel. >>>>>>>> >>>>>>>> xnintr_* symbols are only exported for GPL compliant modules. So, >>>>>>>> could you add the following line in the test module: >>>>>>>> MODULE_LICENSE("GPL"); >>>>>>>> >>>>>>>> With that, the insmod operation should work. >>>>>>>> >>>>>>>>> BTW, I disabled CONFIG_X86_IO_APIC and the SMP option: same >>>>>>>>> problem. >>>>>>>> Could you send the call-stack dump ? Maybe, that will unveil a clue. >>>>>>>> >>>>>>>>> Cheers >>>>>>>>> Ettore >>>>>>>>> >>>>>>>>> 2009/11/22 Alexis Berlemont <alexis.berlem...@gmail.com>: >>>>>>>>>> Hi, >>>>>>>>>> >>>>>>>>>> On Sunday 22 November 2009 20:35:51 Ettore Pedretti wrote: >>>>>>>>>>> Hello, >>>>>>>>>>> >>>>>>>>>>> I downloaded Xenomai 2.5-rc4 from the xenomai-head.git. I need to >>>>>>>>>>> use the comedi drivers for Xenomai for a NI PCI-6711 function >>>>>>>>>>> generator board. >>>>>>>>>>> >>>>>>>>>>> When I try to use the test program cmd_write (or cmd-read) I obtain >>>>>>>>>>> the following: >>>>>>>>>>> >>>>>>>>>>> fangorn:~# cmd_write -vcmd_write: device analogy0 opened (fd=0) >>>>>>>>>>> cmd_write: basic descriptor retrieved >>>>>>>>>>> subdevices count = 0 >>>>>>>>>>> read subdevice index = 0 >>>>>>>>>>> write subdevice index = 0 >>>>>>>>>>> cmd_write: a4l_get_desc failed (ret=-22) >>>>>>>>>>> *** glibc detected *** cmd_write: free(): invalid next size (fast): >>>>>>>>>>> 0x0804d008 *** >>>>>>>>>>> ======= Backtrace: ========= >>>>>>>>>>> /lib/i686/cmov/libc.so.6[0xb7e52624] >>>>>>>>>>> /lib/i686/cmov/libc.so.6(cfree+0x96)[0xb7e54826] >>>>>>>>>>> cmd_write[0x804927c] >>>>>>>>>>> /lib/i686/cmov/libc.so.6(__libc_start_main+0xe5)[0xb7dfa455] >>>>>>>>>>> cmd_write[0x8048b01] >>>>>>>>>>> ======= Memory map: ======== >>>>>>>>>>> 08048000-0804a000 r-xp 00000000 08:01 10855303 /usr/bin/cmd_write >>>>>>>>>>> 0804a000-0804b000 rw-p 00002000 08:01 10855303 /usr/bin/cmd_write >>>>>>>>>>> 0804b000-0806e000 rw-p 00000000 00:00 0 [heap] >>>>>>>>>>> b7c00000-b7c21000 rw-p 00000000 00:00 0 >>>>>>>>>>> b7c21000-b7d00000 ---p 00000000 00:00 0 >>>>>>>>>>> b7dce000-b7dda000 r-xp 00000000 08:01 6127619 /lib/libgcc_s.so.1 >>>>>>>>>>> b7dda000-b7ddb000 rw-p 0000b000 08:01 6127619 /lib/libgcc_s.so.1 >>>>>>>>>>> b7de0000-b7de3000 rw-s 00000000 00:0b 426 /dev/rtheap >>>>>>>>>>> b7de3000-b7de4000 rw-p 00000000 00:00 0 >>>>>>>>>>> b7de4000-b7f39000 r-xp 00000000 08:01 6144250 >>>>>>>>>>> /lib/i686/cmov/libc-2.7.so b7f39000-b7f3a000 r--p 00155000 08:01 >>>>>>>>>>> 6144250 /lib/i686/cmov/libc-2.7.so b7f3a000-b7f3c000 rw-p >>>>>>>>>>> 00156000 08:01 6144250 /lib/i686/cmov/libc-2.7.so >>>>>>>>>>> b7f3c000-b7f3f000 rw-p 00000000 00:00 0 >>>>>>>>>>> b7f3f000-b7f54000 r-xp 00000000 08:01 6144264 >>>>>>>>>>> /lib/i686/cmov/libpthread-2.7.so >>>>>>>>>>> b7f54000-b7f56000 rw-p 00014000 08:01 6144264 >>>>>>>>>>> /lib/i686/cmov/libpthread-2.7.so >>>>>>>>>>> b7f56000-b7f58000 rw-p 00000000 00:00 0 >>>>>>>>>>> b7f58000-b7f5a000 r-xp 00000000 08:01 10808118 >>>>>>>>>>> /usr/lib/librtdm.so.1.0.0 b7f5a000-b7f5b000 rw-p 00001000 08:01 >>>>>>>>>>> 10808118 /usr/lib/librtdm.so.1.0.0 b7f5b000-b7f5c000 rw-p >>>>>>>>>>> 00000000 00:00 0 >>>>>>>>>>> b7f5c000-b7f63000 r-xp 00000000 08:01 10808119 >>>>>>>>>>> /usr/lib/libnative.so.3.0.0 b7f63000-b7f64000 rw-p 00006000 08:01 >>>>>>>>>>> 10808119 /usr/lib/libnative.so.3.0.0 b7f64000-b7f67000 r-xp >>>>>>>>>>> 00000000 08:01 10808112 /usr/lib/libanalogy.so.1.0.0 >>>>>>>>>>> b7f67000-b7f68000 rw-p 00002000 08:01 10808112 >>>>>>>>>>> /usr/lib/libanalogy.so.1.0.0 >>>>>>>>>>> b7f69000-b7f6a000 rw-p 00000000 00:00 0 >>>>>>>>>>> b7f6a000-b7f6d000 rw-s 00000000 00:0b 426 /dev/rtheap >>>>>>>>>>> b7f6d000-b7f6f000 rw-p 00000000 00:00 0 >>>>>>>>>>> b7f6f000-b7f89000 r-xp 00000000 08:01 6127618 /lib/ld-2.7.so >>>>>>>>>>> b7f89000-b7f8b000 rw-p 0001a000 08:01 6127618 /lib/ld-2.7.so >>>>>>>>>>> bfab1000-bfac6000 rw-p 00000000 00:00 0 [stack] >>>>>>>>>>> ffffe000-fffff000 r-xp 00000000 00:00 0 [vdso] >>>>>>>>>>> Aborted >>>>>>>>>>> >>>>>>>>>>> This is probably because the device /dev/analogy0 does not exist. >>>>>>>>>>> >>>>>>>>>>> This is the output of uname -a >>>>>>>>>>> >>>>>>>>>>> Linux fangorn 2.6.31.1 #1 SMP PREEMPT Fri Nov 20 20:42:26 PST 2009 >>>>>>>>>>> i686 GNU/Linux >>>>>>>>>>> >>>>>>>>>>> And these are the relevant entries in dmesg >>>>>>>>>>> >>>>>>>>>>> dmesg: >>>>>>>>>>> >>>>>>>>>>> I-pipe 2.4-06: pipeline enabled. >>>>>>>>>>> I-pipe: Domain Xenomai registered. >>>>>>>>>>> >>>>>>>>>>> Xenomai: hal/i386 started. >>>>>>>>>>> Xenomai: scheduling class idle registered. >>>>>>>>>>> Xenomai: scheduling class rt registered. >>>>>>>>>>> Xenomai: real-time nucleus v2.5-rc4 (Flying In A Blue Dream) >>>>>>>>>>> loaded. Xenomai: SMI-enabled chipset found >>>>>>>>>>> Xenomai: SMI workaround enabled >>>>>>>>>>> Xenomai: starting RTDM services. >>>>>>>>>>> Xenomai: starting native API services. >>>>>>>>>>> Analogy: MITE: Available NI device IDs: 0x1880 >>>>>>>>>>> >>>>>>>>>>> result of lspci for the relevant board: >>>>>>>>>>> >>>>>>>>>>> 04:01.0 Class ff00: National Instruments PCI-6711 >>>>>>>>>>> >>>>>>>>>>> And lsmod: >>>>>>>>>>> >>>>>>>>>>> Module Size Used by >>>>>>>>>>> xeno_native 105088 0 >>>>>>>>>>> analogy_ni_pcimio 15644 0 >>>>>>>>>>> analogy_ni_mio 44860 1 analogy_ni_pcimio >>>>>>>>>>> analogy_ni_tio 24956 1 analogy_ni_mio >>>>>>>>>>> analogy_8255 3900 1 analogy_ni_mio >>>>>>>>>>> analogy_ni_mite 10140 3 >>>>>>>>>>> analogy_ni_pcimio,analogy_ni_mio,analogy_ni_tio xeno_analogy >>>>>>>>>>> 40220 5 >>>>>>>>>>> analogy_ni_pcimio,analogy_ni_mio,analogy_ni_tio,analogy_8255,analog >>>>>>>>>>> y_n i_mit e xeno_rtdm 28436 2 >>>>>>>>>>> analogy_ni_mio,xeno_analogy astropci 10944 0 >>>>>>>>>>> ext3 109636 1 >>>>>>>>>>> jbd 43920 1 ext3 >>>>>>>>>>> mbcache 6272 1 ext3 >>>>>>>>>>> ide_pci_generic 3712 0 >>>>>>>>>>> ide_core 74204 1 ide_pci_generic >>>>>>>>>>> ata_piix 15748 2 >>>>>>>>>>> sata_mv 26448 0 >>>>>>>>>>> e1000 114208 0 >>>>>>>>>>> libata 142156 2 ata_piix,sata_mv >>>>>>>>>>> unix 22992 10 >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> According to this post: >>>>>>>>>>> http://www.mail-archive.com/xenomai-help@gna.org/msg09595.html >>>>>>>>>>> >>>>>>>>>>>> The analogy driver "a4l_pcimio" will be registered with your last >>>>>>>>>>>> insmod (analogy_ni_pcimio). You can check that by typing "cat >>>>>>>>>>>> /proc/analogy/drivers", you will see only one entry: a4l_pcimio. >>>>>>>>>>> fangorn:~# cat /proc/analogy/drivers >>>>>>>>>>> -- Analogy drivers -- >>>>>>>>>>> >>>>>>>>>>> | idx | driver name >>>>>>>>>>> | 00 | analogy_ni_pcimio >>>>>>>>>>> | 01 | analogy_8255 >>>>>>>>>>> >>>>>>>>>>> There are two entries and the drivers are not attached: >>>>>>>>>>> >>>>>>>>>>> fangorn:~# cat /proc/analogy/devices >>>>>>>>>>> -- Analogy devices -- >>>>>>>>>>> >>>>>>>>>>> | idx | status | driver >>>>>>>>>>> | 00 | Unused | No driver >>>>>>>>>>> | 01 | Unused | No driver >>>>>>>>>>> | 02 | Unused | No driver >>>>>>>>>>> | 03 | Unused | No driver >>>>>>>>>>> | 04 | Unused | No driver >>>>>>>>>>> | 05 | Unused | No driver >>>>>>>>>>> | 06 | Unused | No driver >>>>>>>>>>> | 07 | Unused | No driver >>>>>>>>>>> | 08 | Unused | No driver >>>>>>>>>>> | 09 | Unused | No driver >>>>>>>>>>> >>>>>>>>>>> I'm aware of the name change of the drivers: >>>>>>>>>>> http://www.mail-archive.com/xenomai-...@gna.org/msg00741.html >>>>>>>>>>> >>>>>>>>>>>> - a4l_pcimio becomes analogy_ni_pcimio >>>>>>>>>>>> - 8255 becomes analogy_8255. >>>>>>>>>>>> Consequently, the command line to attach these drivers has >>>>>>>>>>>> changed. Starting from now, we have to type: >>>>>>>>>>>> - analogy_config analogyX analogy_ni_pcimio (instead of >>>>>>>>>>>> a4l_pcimio) >>>>>>>>>>> This is what happens when I try to attach the driver to de device: >>>>>>>>>>> >>>>>>>>>>> fangorn:~# analogy_config analogy0 analogy_ni_pcimio >>>>>>>>>>> >>>>>>>>>>> Message from sysl...@fangorn at Nov 21 23:22:37 ... >>>>>>>>>>> kernel:Oops: 0000 [#1] PREEMPT SMP >>>>>>>>>>> >>>>>>>>>>> Message from sysl...@fangorn at Nov 21 23:22:37 ... >>>>>>>>>>> kernel:last sysfs file: >>>>>>>>>>> /sys/devices/pci0000:00/0000:00:1e.0/0000:06:02.0/class >>>>>>>>>>> >>>>>>>>>>> Message from sysl...@fangorn at Nov 21 23:22:37 ... >>>>>>>>>>> kernel:Process analogy_config (pid: 3409, ti=f64cc000 >>>>>>>>>>> task=f79013b0 task.ti=f64cc000) >>>>>>>>>>> >>>>>>>>>>> Message from sysl...@fangorn at Nov 21 23:22:37 ... >>>>>>>>>>> kernel:I-pipe domain Linux >>>>>>>>>>> >>>>>>>>>>> Message from sysl...@fangorn at Nov 21 23:22:37 ... >>>>>>>>>>> kernel:Stack: >>>>>>>>>>> >>>>>>>>>>> Message from sysl...@fangorn at Nov 21 23:22:37 ... >>>>>>>>>>> kernel:Call Trace: >>>>>>>>>>> >>>>>>>>>>> Message from sysl...@fangorn at Nov 21 23:22:37 ... >>>>>>>>>>> kernel:Code: 8b 45 9c e8 f2 f1 fa ff 89 c2 83 f8 01 0f 85 d4 fe ff >>>>>>>>>>> ff 8b 55 9c 8b 82 74 01 00 00 8b 00 f6 40 3c 06 0f 84 22 01 00 00 >>>>>>>>>>> 8b 42 18 <8b> 40 04 89 45 b0 8b 40 14 8b 40 04 85 c0 0f 84 0b 01 00 >>>>>>>>>>> 00 31 >>>>>>>>>>> >>>>>>>>>>> Message from sysl...@fangorn at Nov 21 23:22:37 ... >>>>>>>>>>> kernel:EIP: [<f8c7d029>] ni_E_init+0x267/0xff1 [analogy_ni_mio] >>>>>>>>>>> SS:ESP 0068:f64cddc8 >>>>>>>>>>> >>>>>>>>>>> Message from sysl...@fangorn at Nov 21 23:22:37 ... >>>>>>>>>>> kernel:CR2: 0000000000000004 >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> relevant dmeg: >>>>>>>>>>> >>>>>>>>>>> a4l: analogy_ni_pcimio: pcimio_attach: found pci-6711 board >>>>>>>>>>> mite 0000:04:01.0: PCI->APIC IRQ transform: INT A -> IRQ 48 >>>>>>>>>>> mite 0000:04:01.0: setting latency timer to 64 >>>>>>>>>>> a4l: MITE: 0xd0801000 mapped to f8e26000 >>>>>>>>>>> a4l: DAQ: 0xd0800000 mapped to f8e2a000 >>>>>>>>>>> a4l: MITE: version = 1, type = 1, mite mode = 1, interface mode = 3 >>>>>>>>>>> a4l: MITE: num channels = 3, write post fifo depth = 1, wins = 0, >>>>>>>>>>> iowins = 2 a4l: analogy_ni_pcimio: pcimio_attach: found irq 48 >>>>>>>>>>> BUG: unable to handle kernel NULL pointer dereference at 00000004 >>>>>>>>>>> IP: [<f8c7d029>] ni_E_init+0x267/0xff1 [analogy_ni_mio] >>>>>>>>>>> *pde = 00000000 >>>>>>>>>>> Oops: 0000 [#1] PREEMPT SMP >>>>>>>>>>> last sysfs file: >>>>>>>>>>> /sys/devices/pci0000:00/0000:00:1e.0/0000:06:02.0/class Modules >>>>>>>>>>> linked in: xeno_native analogy_ni_pcimio analogy_ni_mio >>>>>>>>>>> analogy_ni_tio analogy_8255 analogy_ni_mite xeno_analogy xeno_rtdm >>>>>>>>>>> astropci ext3 jbd mbcache ide_pci_generic ide_core ata_piix sata_mv >>>>>>>>>>> e1000 libata unix [last unloaded: scsi_wait_scan] >>>>>>>>>>> >>>>>>>>>>> Pid: 3409, comm: analogy_config Not tainted (2.6.31.1 #1) X6DA8 >>>>>>>>>>> EIP: 0060:[<f8c7d029>] EFLAGS: 00010202 CPU: 1 >>>>>>>>>>> EIP is at ni_E_init+0x267/0xff1 [analogy_ni_mio] >>>>>>>>>>> EAX: 00000000 EBX: f8a22280 ECX: f8c31e6c EDX: f8c31e60 >>>>>>>>>>> ESI: 00000000 EDI: f8c31e60 EBP: f64cde38 ESP: f64cddc8 >>>>>>>>>>> DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 >>>>>>>>>>> Process analogy_config (pid: 3409, ti=f64cc000 task=f79013b0 >>>>>>>>>>> task.ti=f64cc000) I-pipe domain Linux >>>>>>>>>>> Stack: >>>>>>>>>>> f64cddd0 c10142b6 f64cddd8 f8c31e60 f64cdde0 c105abf7 f64cddfc >>>>>>>>>>> f8a0ea5d <0> f8c2be00 00000000 00000001 f8c31e94 fffffff0 f64cde14 >>>>>>>>>>> f8c2c118 00000001 <0> f8c2ed0d f8c31e88 f8c31e60 f64cde38 f8c2cccf >>>>>>>>>>> 00000001 f8c31e60 00000030 Call Trace: >>>>>>>>>>> [<c10142b6>] ? unmask_IO_APIC_irq+0xd/0xf >>>>>>>>>>> [<c105abf7>] ? xnintr_enable+0xb/0xd >>>>>>>>>>> [<f8a0ea5d>] ? rtdm_irq_request+0x48/0x5e [xeno_rtdm] >>>>>>>>>>> [<f8c2be00>] ? a4l_handle_irq+0x0/0x1a [xeno_analogy] >>>>>>>>>>> [<f8c2c118>] ? __a4l_request_irq+0x33/0x39 [xeno_analogy] >>>>>>>>>>> [<f8c2cccf>] ? a4l_request_irq+0x98/0xaf [xeno_analogy] >>>>>>>>>>> [<f8c8bd8a>] ? pcimio_attach+0x54d/0x664 [analogy_ni_pcimio] >>>>>>>>>>> [<f8c2afef>] ? a4l_assign_driver+0x61/0x134 [xeno_analogy] >>>>>>>>>>> [<f8c2b2ba>] ? a4l_device_attach+0x54/0x6d [xeno_analogy] >>>>>>>>>>> [<c10662ea>] ? xnshadow_ppd_get+0x4f/0x58 >>>>>>>>>>> [<f8c2b54f>] ? a4l_ioctl_devcfg+0x57/0x104 [xeno_analogy] >>>>>>>>>>> [<f8c2d36f>] ? a4l_rt_ioctl+0x33/0x3a [xeno_analogy] >>>>>>>>>>> [<f8a0d3e6>] ? __rt_dev_ioctl+0xd1/0xd8 [xeno_rtdm] >>>>>>>>>>> [<f8a0fe77>] ? sys_rtdm_open+0x5c/0x64 [xeno_rtdm] >>>>>>>>>>> [<f8a0fdde>] ? sys_rtdm_ioctl+0x29/0x2b [xeno_rtdm] >>>>>>>>>>> [<c10699ae>] ? losyscall_event+0xa9/0x190 >>>>>>>>>>> [<c10566ce>] ? __ipipe_dispatch_event+0xdf/0x201 >>>>>>>>>>> [<c1069905>] ? losyscall_event+0x0/0x190 >>>>>>>>>>> [<c10166a1>] ? __ipipe_syscall_root+0x3b/0xc4 >>>>>>>>>>> [<c1002cfd>] ? system_call+0x2d/0x4f >>>>>>>>>>> Code: 8b 45 9c e8 f2 f1 fa ff 89 c2 83 f8 01 0f 85 d4 fe ff ff 8b >>>>>>>>>>> 55 9c 8b 82 74 01 00 00 8b 00 f6 40 3c 06 0f 84 22 01 00 00 8b 42 >>>>>>>>>>> 18 <8b> 40 04 89 45 b0 8b 40 14 8b 40 04 85 c0 0f 84 0b 01 00 00 31 >>>>>>>>>>> EIP: [<f8c7d029>] ni_E_init+0x267/0xff1 [analogy_ni_mio] SS:ESP >>>>>>>>>>> 0068:f64cddc8 CR2: 0000000000000004 >>>>>>>>>>> ---[ end trace c887d49bb5e86cf4 ]--- >>>>>>>>>> Thanks for such a great report. >>>>>>>>>> >>>>>>>>>> I keep two things in mind: >>>>>>>>>> - cmd_write's error handling path is not buggy (that was already in >>>>>>>>>> my todo list). I will fix that as soon as possible. >>>>>>>>>> >>>>>>>>>> - according to the call-stack dump you made, the irq handler >>>>>>>>>> registering seems to be the source of the trouble. What strikes me >>>>>>>>>> is that the oops occurred very low (unmask_IO_APIC_irq: we are no >>>>>>>>>> more in the analogy layer). >>>>>>>>>> >>>>>>>>>> In order to be sure that the problem is located in analogy, it would >>>>>>>>>> be great to test that calling rtdm_request_irq(... , 48, ...) does >>>>>>>>>> not trigger the bug. >>>>>>>>>> >>>>>>>>>> Here is a little test module you could try to insmod. If you do not >>>>>>>>>> want to bother finding out how to compile it, you can replace the >>>>>>>>>> code of an existing rtdm driver (for example: >>>>>>>>>> xenomai/ksrc/drivers/testing/irqbench.c) with the source below. >>>>>>>>>> >>>>>>>>>> Another interesting test would be to disable CONFIG_X86_IO_APIC in >>>>>>>>>> your kernel configuration (in "Processor type and features", disable >>>>>>>>>> the SMP option and disable "IO APIC" under "Local APIC"). >>>>>>>>>> >>>>>>>>>> #include <linux/version.h> >>>>>>>>>> #include <linux/module.h> >>>>>>>>>> #include <linux/ioport.h> >>>>>>>>>> >>>>>>>>>> #include <rtdm/rtdm_driver.h> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> int test_handler(rtdm_irq_t *irq_handle) >>>>>>>>>> { >>>>>>>>>> >>>>>>>>>> rtdm_printk("irq_test: INTERRUPT!\n"); >>>>>>>>>> >>>>>>>>>> return RTDM_IRQ_HANDLED; >>>>>>>>>> } >>>>>>>>>> >>>>>>>>>> static rtdm_irq_t handle; >>>>>>>>>> >>>>>>>>>> static int __init __test_init(void) >>>>>>>>>> { >>>>>>>>>> >>>>>>>>>> int err; >>>>>>>>>> >>>>>>>>>> rtdm_printk("irq_test: before rtdm_irq_request\n"); >>>>>>>>>> >>>>>>>>>> err = rtdm_irq_request(&handle, 48, test_handler, 0, >>>>>>>>>> "test_irq", NULL); >>>>>>>>>> >>>>>>>>>> rtdm_printk("irq_test: after rtdm_irq_request (err = %d)\n", >>>>>>>>>> err); >>>>>>>>>> >>>>>>>>>> rtdm_printk("irq_test: before rtdm_irq_enable\n"); >>>>>>>>>> >>>>>>>>>> err = rtdm_irq_enable(&handle); >>>>>>>>>> >>>>>>>>>> rtdm_printk("irq_test: after rtdm_irq_enable (err = %d)\n", >>>>>>>>>> err); >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> return err; >>>>>>>>>> } >>>>>>>>>> >>>>>>>>>> static void __exit __test_exit(void) >>>>>>>>>> { >>>>>>>>>> >>>>>>>>>> rtdm_irq_free(&handle); >>>>>>>>>> >>>>>>>>>> } >>>>>>>>>> >>>>>>>>>> module_init(__test_init); >>>>>>>>>> module_exit(__test_exit); >>>>>>>>>> >>>>>>>>>>> Can anyone help? >>>>>>>>>>> >>>>>>>>>>> Best regards >>>>>>>>>>> Ettore Pedretti >>>>>>>> Alexis. >>>>>> Alexis. >>>> _______________________________________________ >>>> Xenomai-help mailing list >>>> Xenomai-help@gna.org >>>> https://mail.gna.org/listinfo/xenomai-help >>>> >>> >>> >>> -- >>> Ettore Pedretti, SUPA >>> School of Physics and Astronomy >>> University of St Andrews, North Haugh, >>> St Andrews, Fife, KY16 9SS, Scotland >>> Ph: +44 1334 461669, Fax: +44-1334-463104 >>> The University of St Andrews is a charity registered in Scotland : No >>> SC013532 >>> >>> >> Alexis. >> >> _______________________________________________ >> Xenomai-help mailing list >> Xenomai-help@gna.org >> https://mail.gna.org/listinfo/xenomai-help > > _______________________________________________ Xenomai-help mailing list Xenomai-help@gna.org https://mail.gna.org/listinfo/xenomai-help