PCI driver usign interrupt handling - leading to IRQ 169 :nobody cared disabling IRQ 169 message

Submitted by CBfore
on January 12, 2009 - 11:21am

I've written a driver for PCI based dual Uart and am listening to the IRQ line as obtained from pci_read_config_byte(dev,0x3c,&irq).Running the program gives me the following error

irq 169: nobody cared (try booting with the "irqpoll" option)
[] dump_trace+0x69/0x1af
[] show_trace_log_lvl+0x18/0x2c
[] show_trace+0xf/0x11
[] dump_stack+0x15/0x17
[] __report_bad_irq+0x36/0x7d
[] note_interrupt+0x19e/0x1db
[] __do_IRQ+0xba/0xf2
[] do_IRQ+0x9e/0xbc
=======================
handlers:
[] (usb_hcd_irq+0x0/0x50)
Disabling IRQ #169

Here I would like to mention that the kernel IRQ line is 169 (from sys/bus/pci/device/..../irq) while the the value at address 60 (0x3c)of config space is 0x05.If I listen to irqline line 0x05 in my interrupt handler I'm getting the above message.And if I do it with #169 the system just hangs.

Could someone tell me what the correct procedure is and why are there two differnt IRQ assignments.I'm sending cat irq command output and the config space of my device.

cat sys/bus/pci/devices/0000\:03\:00.0/irq
169

[root@localhost devices]# cd 0000\:03\:00.0/
[root@localhost 0000:03:00.0]# od -x config
0000000 9710 9835 0003 0280 0201 0700 0010 0000
0000020 cf01 0000 ce01 0000 cd01 0000 cc01 0000
0000040 cb01 0000 ca01 0000 0000 0000 1000 0002
0000060 0000 0000 0000 0000 0000 0000 0105 0000
0000100 8080 0000 0000 0000 0000 0000 0000 0000
0000120 0000 0000 0000 0000 0000 0000 0000 0000
*
0000400

PCI driver usign interrupt handling - leading to IRQ 169 :nobody

baba (not verified)
on
January 30, 2009 - 12:12am

hello it could be the problem that u might not properly enable the pci device
look at ur pci_enable_device call and at ur request_irq calll
after u get the pdev details simply call
pci_enable_device(pdev)

You should be using pdev->irq

Matt Sealey (not verified)
on
February 3, 2009 - 2:02pm

You should be calling request_irq with pdev->irq and not the value in the configuration space. Linux virtualizes it's IRQs and the one mapped into the pci_dev structure is correct.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.