iwk-msi.tariwk2.c.diffiwk2_var.h.diff当前Solaris的4965AGN无线网卡驱动还不支持MSI,我按照SDN上一篇文章(
http://developers.sun.com/solaris/articles/interrupt_handlers.html)上说的改改,竟然工作了,以前系统启动的时候老是有这样的提示:
unix: [ID 954099 kern.info] NOTICE: IRQ17 is being shared by drivers with different interrupt levels.
后来一看,一个中断三个ISR,
# mdb -k
Loading modules: [ unix genunix specfs dtrace cpu.generic uppc pcplusmp scsi_vhci zfs ip hook neti sctp arp usba uhci s1394 nca fctl lofs logindmux audiosup sd random ptm ufs cpc sppp nfs fcip ipc ]
> ::interrupts
IRQ Vect IPL Bus Trg Type CPU Share APIC/INT# ISR(s)
1 0x41 5 ISA Edg Fixed 1 1 0x0/0x1 i8042_intr
9 0x81 9 PCI Lvl Fixed 1 1 0x0/0x9 acpi_wrapper_isr
12 0x42 5 ISA Edg Fixed 1 1 0x0/0xc i8042_intr
14 0x43 5 ISA Edg Fixed 1 1 0x0/0xe ata_intr
16 0x83 9 PCI Lvl Fixed 0 1 0x0/0x10 nv_intr
17 0x60 6 PCI Lvl Fixed 0 3 0x0/0x11 iwk_intr, bge_intr, ata_intr
19 0x84 9 PCI Lvl Fixed 0 1 0x0/0x13 hci1394_isr
20 0x21 1 PCI Lvl Fixed 0 3 0x0/0x14 uhci_intr, uhci_intr, ehci_intr
21 0x87 8 PCI Lvl Fixed 1 3 0x0/0x15 audiohd_intr, uhci_intr, uhci_intr
22 0x20 1 PCI Lvl Fixed 0 2 0x0/0x16 uhci_intr, ehci_intr
24 0x82 7 PCI Edg MSI 1 1 - pepb_intr_handler
25 0x30 4 PCI Edg MSI 1 1 - pepb_intr_handler
26 0x85 7 PCI Edg MSI 1 1 - pepb_intr_handler
27 0x31 4 PCI Edg MSI 1 1 - pepb_intr_handler
28 0x86 7 PCI Edg MSI 1 1 - pepb_intr_handler
160 0xa0 0 Edg IPI all 0 - poke_cpu
192 0xc0 13 Edg IPI all 1 - xc_serv
208 0xd0 14 Edg IPI all 1 - kcpc_hw_overflow_intr
209 0xd1 14 Edg IPI all 1 - cbe_fire
210 0xd3 14 Edg IPI all 1 - cbe_fire
240 0xe0 15 Edg IPI all 1 - xc_serv
241 0xe1 15 Edg IPI all 1 - apic_error_intr
经过修改之后iwk_intr从17号中断中分离出来了
# mdb -k
Loading modules: [ unix genunix specfs dtrace cpu.generic uppc pcplusmp scsi_vhci zfs ip hook neti sctp arp usba uhci s1394 nca fctl lofs logindmux audiosup sd random ptm ufs md cpc sppp nfs fcip ipc ]
> ::interrupts
IRQ Vect IPL Bus Trg Type CPU Share APIC/INT# ISR(s)
1 0x41 5 ISA Edg Fixed 1 1 0x0/0x1 i8042_intr
9 0x81 9 PCI Lvl Fixed 1 1 0x0/0x9 acpi_wrapper_isr
12 0x42 5 ISA Edg Fixed 1 1 0x0/0xc i8042_intr
14 0x43 5 ISA Edg Fixed 1 1 0x0/0xe ata_intr
16 0x83 9 PCI Lvl Fixed 0 1 0x0/0x10 nv_intr
17 0x60 6 PCI Lvl Fixed 0 2 0x0/0x11 0, bge_intr
19 0x84 9 PCI Lvl Fixed 0 1 0x0/0x13 hci1394_isr
20 0x21 1 PCI Lvl Fixed 0 3 0x0/0x14 uhci_intr, uhci_intr, ehci_intr
21 0x87 8 PCI Lvl Fixed 1 3 0x0/0x15 audiohd_intr, uhci_intr, uhci_intr
22 0x20 1 PCI Lvl Fixed 0 2 0x0/0x16 uhci_intr, ehci_intr
24 0x82 7 PCI Edg MSI 1 1 - pepb_intr_handler
25 0x30 4 PCI Edg MSI 1 1 - pepb_intr_handler
26 0x85 7 PCI Edg MSI 1 1 - pepb_intr_handler
27 0x31 4 PCI Edg MSI 1 1 - pepb_intr_handler
28 0x86 7 PCI Edg MSI 1 1 - pepb_intr_handler
29 0x61 6 PCI Edg MSI 1 1 - iwk_intr
160 0xa0 0 Edg IPI all 0 - poke_cpu
192 0xc0 13 Edg IPI all 1 - xc_serv
208 0xd0 14 Edg IPI all 1 - kcpc_hw_overflow_intr
209 0xd1 14 Edg IPI all 1 - cbe_fire
210 0xd3 14 Edg IPI all 1 - cbe_fire
240 0xe0 15 Edg IPI all 1 - xc_serv
241 0xe1 15 Edg IPI all 1 - apic_error_intr