rom: krishnamurth...@hotmail.com To: gilles.chanteperd...@xenomai.org; jan.kis...@siemens.com CC: xenomai-core@gna.org Subject: RE: [Xenomai-core] MSI support in Xenomai Date: Fri, 25 Mar 2011 17:51:06 +0530
From: krishnamurth...@hotmail.com To: gilles.chanteperd...@xenomai.org; jan.kis...@siemens.com Date: Tue, 22 Mar 2011 23:50:27 +0530 CC: xenomai-core@gna.org Subject: Re: [Xenomai-core] MSI support in Xenomai > Date: Tue, 22 Mar 2011 18:03:43 +0100 > From: gilles.chanteperd...@xenomai.org > To: jan.kis...@siemens.com > CC: krishnamurth...@hotmail.com; xenomai-core@gna.org > Subject: Re: MSI support in Xenomai > > Jan Kiszka wrote: > > On 2011-03-22 16:55, krishna m wrote: > > >> Mar 22 21:12:47 localhost kernel: test_dev: Probe for device function=0 > >> Mar 22 21:12:47 localhost kernel: test_dev 0000:15:00.0: found PCI INT A > >> -> IRQ 10 > > > > Here you get IRQ 10... > > > >> Mar 22 21:12:47 localhost kernel: pci_bar = 0xfe000000 > >> Mar 22 21:12:47 localhost kernel: Xenomai: RTDM: RT open handler is > >> deprecated, > >> driver requires update. > >> Mar 22 21:12:47 localhost kernel: Xenomai: RTDM: RT close handler is > >> deprecated, > >> driver requires update. > > > > [ These messages also have a meaning, though unrelated to the crash. ] > > > >> Mar 22 21:12:47 localhost kernel: test_dev: IRQ 16 successfully assigned > >> to the > >> device. > > > > ...but here IRQ 16 is assigned. Broken output or a real inconsistency? > > > > Also, where is the MSI? You should see log messages about MSI/MSI-X IRQ > > number assignment when properly enabling the support at PCI level. > > Maybe pci_enable_msi was called after request_irq ? > > > -- > Gilles. Just check my code: i do enable MSI (pci_enable_msi) before rtdm_irq_request pasted the code below part of my PCI probe function in the device driver: ...... rtdm_dev = kmalloc(sizeof(struct rtdm_device), GFP_KERNEL); if(!rtdm_dev) { printk(KERN_WARNING "RUBICON: kmalloc failed\n"); ret = -ENOMEM; //Insufficient storage space is available. goto fail_pci; } //copy the structure to the new memory memcpy(rtdm_dev, &rubicon_rtdm_driver, sizeof(struct rtdm_device)); //create filename snprintf(rtdm_dev->device_name, RTDM_MAX_DEVNAME_LEN, "rtser%d", 0 /*i*/); rtdm_dev->device_id = 0; //i; //define two other members of the rtdm_device structure rtdm_dev->proc_name = rtdm_dev->device_name; ret = rtdm_dev_register(rtdm_dev); if(ret < 0) { printk(KERN_WARNING"RUBICON: cannot register device\n"); goto fail_pci; } g_rubicon_context.xen_device = rtdm_dev; ret = pci_enable_msi(dev); if(ret) { printk("RUBICON: Enabling MSI failed wuth error code: 0x%x\n", ret); goto fail_pci; } g_rubicon_context.irq = dev->irq; /* save the allocated IRQ */ g_rubicon_context.dev = dev; /* Save the PCI queue h/w device ctx */ dev_set_drvdata(dev,(void *) &(g_rubicon_context)); /* request the irq for the device */ ret = rtdm_irq_request(&g_rubicon_context.irq_handle, g_rubicon_context.irq, rubicon_irq_handler, RTDM_IRQTYPE_SHARED, "rubicon", (void *)&g_rubicon_context); .... >From IRQ number perspective: Mar 22 21:12:47 localhost kernel: test_dev 0000:15:00.0: found PCI INT A -> IRQ 10 >>>> is the print from the Kernel PCI Probe and Mar 22 21:12:47 localhost kernel: test_dev: IRQ 16 successfully assigned >>>>>> is my Print after enabling MSI and registering for irq. I get the similar print with the Plain Linux kernel with the IRQ being assigned MSI enabled is irq 20. [Below i have pasted the kernel log of plain linux kernel]. I have tested the MSI interrupts and they work fine. Mar 22 23:47:49 localhost kernel: test_dev: Probe for device function=0 Mar 22 23:47:49 localhost kernel: test_dev 0000:15:00.0: found PCI INT A -> IRQ 10 Mar 22 23:47:49 localhost kernel: pci_bar = 0xfe000000 Mar 22 23:47:49 localhost kernel: test_dev: IRQ 20 successfully assigned to the device. Mar 22 23:47:49 localhost kernel: test_dev: Probe for device function=1 Mar 22 23:47:49 localhost kernel: test_dev: Successfully added test_dev Device Driver. Just wanted to add 3 more questions: 1. Which versions of Linux, Adeos patch and xenomai are tested for stable MSI functionality ? Please let me know. 2. I am using the Xenomai Version linux-2.6.37, xenomai-2.5.6 and adeos-ipipe-2.6.37-x86-2.9-00. Is this combination fine ? 3. I looked at the /proc/interrupts and with out xenomai loaded [i.e. default linux kernel] I see my card beaing assigned MSI-EDGE interrupt and with xenomai kernel i don't see the entry in the /proc/interrupts but in /proc/xenomai/irq i see this entry IRQ CPU0 16: 0 test_drv 521: 0 [IPI] 524: 869467 [timer] 525: 0 [critical sync] 546: 0 [virtual] Hi Jan and Chanteperdrix, Any thoughts or inputs on my updates of MSI not working ? Thanks and Regards, Krishna _______________________________________________ Xenomai-core mailing list Xenomai-core@gna.org https://mail.gna.org/listinfo/xenomai-core
_______________________________________________ Xenomai-core mailing list Xenomai-core@gna.org https://mail.gna.org/listinfo/xenomai-core