Josh Morris wrote:
Hello,
I am working on porting our device driver from OpenSolaris to Solaris
10 (x86) and having a problem enabling MSI interrupts. The DDI
interrupt functions tell me MSI is a supported type, that the number
of interrupts for the device is 1, and that the number of interrupts
available is 1. Despite this ddi_intr_alloc() returns
DDI_INTR_NOTFOUND. The same system with OpenSolaris works fine with
MSI interrupts. Does anyone have any idea as to why the
DDI_INTR_NOTFOUND is being returned? For what it's worth something is
using MSI in the system, so I'm not sure why my driver can't:
I'd need to see your code to help you further. Are you using what flags
are you using with interrupt allocation? Is this a PCIe device, or
legacy PCI? What value are you using for the "inum" field?
I recommend looking at the interrupt allocation code from another
device, such as rge, to see example code that works well.
- Garrett
# echo ::interrupts | mdb -k
IRQ Vector IPL Bus Type CPU Share APIC/INT# ISR(s)
6 0x42 5 ISA Fixed 3 1 0x0/0x6 fdc_intr
9 0x81 9 PCI Fixed 1 1 0x0/0x9 acpi_wrapper_isr
14 0x41 5 ISA Fixed 2 1 0x0/0xe ata_intr
16 0x84 9 PCI Fixed 2 1 0x0/0x10 uhci_intr
18 0x86 9 PCI Fixed 2 3 0x0/0x12 ata_intr, uhci_intr,
ata_intr
19 0x85 9 PCI Fixed 3 1 0x0/0x13 uhci_intr
23 0x83 9 PCI Fixed 1 1 0x0/0x17 ehci_intr
69 0x60 6 PCI Fixed 0 1 0x2/0x5 e1000g_intr
88 0x82 7 MSI 3 1 - pepb_intr_handler
89 0x30 4 MSI 0 1 - pepb_intr_handler
160 0xa0 0 IPI ALL 0 - poke_cpu
192 0xc0 13 IPI ALL 1 - xc_serv
208 0xd0 14 IPI ALL 1 - kcpc_hw_overflow_intr
209 0xd1 14 IPI ALL 1 - cbe_fire
210 0xd3 14 IPI ALL 1 - cbe_fire
240 0xe0 15 IPI ALL 1 - xc_serv
241 0xe1 15 IPI ALL 1 - apic_error_intr
Thanks,
Josh Morris
_______________________________________________
driver-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/driver-discuss
_______________________________________________
driver-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/driver-discuss