Subject: ioapic: adaption required?
To: None <port-xen@netbsd.org>
From: Christoph Egger <Christoph_Egger@gmx.de>
List: port-xen
Date: 10/08/2007 11:45:42
Hi!

With the recent ioapic and acpi changes in -current, my dom0
boot output changed:

ioapic0 at mainbus0 apid 2
ioapic0: pa 0xfec00000, virtual wire mode, version 3, 24 pins
(XEN) io_apic.c:2132: 
(XEN) ioapic_guest_write: apic=0, pin=2, old_irq=0, new_irq=-1
(XEN) ioapic_guest_write: old_entry=000009f0, new_entry=00010900
(XEN) ioapic_guest_write: Attempt to remove IO-APIC pin of in-use IRQ!
(XEN) io_apic.c:2132: 
(XEN) ioapic_guest_write: apic=0, pin=4, old_irq=4, new_irq=-1
(XEN) ioapic_guest_write: old_entry=000009f1, new_entry=00010900
(XEN) ioapic_guest_write: Attempt to remove IO-APIC pin of in-use IRQ!
(XEN) io_apic.c:2163: 
(XEN) ioapic_guest_write: apic=0, pin=16, old_irq=-1, new_irq=-1
(XEN) ioapic_guest_write: old_entry=00010000, new_entry=0000a900
(XEN) ioapic_guest_write: Installing bogus unmasked IO-APIC entry!
(XEN) io_apic.c:2118: 
(XEN) ioapic_guest_write: apic=0, pin=17, old_irq=-1, new_irq=-1
(XEN) ioapic_guest_write: old_entry=00010a8e, new_entry=0000a900
(XEN) ioapic_guest_write: Special delivery mode 2 with non-zero vector 8e
(XEN) io_apic.c:2163: 
(XEN) ioapic_guest_write: apic=0, pin=17, old_irq=-1, new_irq=-1
(XEN) ioapic_guest_write: old_entry=00010a00, new_entry=0000a900
(XEN) ioapic_guest_write: Installing bogus unmasked IO-APIC entry!
(XEN) io_apic.c:2163: 
(XEN) ioapic_guest_write: apic=0, pin=18, old_irq=-1, new_irq=-1
(XEN) ioapic_guest_write: old_entry=00010000, new_entry=0000a900
(XEN) ioapic_guest_write: Installing bogus unmasked IO-APIC entry!
(XEN) io_apic.c:2118: 
(XEN) ioapic_guest_write: apic=0, pin=19, old_irq=-1, new_irq=-1
(XEN) ioapic_guest_write: old_entry=00010a16, new_entry=0000a900
(XEN) ioapic_guest_write: Special delivery mode 2 with non-zero vector 16
(XEN) io_apic.c:2163: 
(XEN) ioapic_guest_write: apic=0, pin=19, old_irq=-1, new_irq=-1
(XEN) ioapic_guest_write: old_entry=00010a00, new_entry=0000a900
(XEN) ioapic_guest_write: Installing bogus unmasked IO-APIC entry!
(XEN) io_apic.c:2163: 
(XEN) ioapic_guest_write: apic=0, pin=20, old_irq=-1, new_irq=-1
(XEN) ioapic_guest_write: old_entry=00010000, new_entry=0000a900
(XEN) ioapic_guest_write: Installing bogus unmasked IO-APIC entry!
(XEN) io_apic.c:2163: 
(XEN) ioapic_guest_write: apic=0, pin=21, old_irq=-1, new_irq=-1
(XEN) ioapic_guest_write: old_entry=00010000, new_entry=0000a900
(XEN) ioapic_guest_write: Installing bogus unmasked IO-APIC entry!
(XEN) io_apic.c:2163: 
(XEN) ioapic_guest_write: apic=0, pin=22, old_irq=-1, new_irq=-1
(XEN) ioapic_guest_write: old_entry=00010000, new_entry=0000a900
(XEN) ioapic_guest_write: Installing bogus unmasked IO-APIC entry!
(XEN) io_apic.c:2163: 
(XEN) ioapic_guest_write: apic=0, pin=23, old_irq=-1, new_irq=-1
(XEN) ioapic_guest_write: old_entry=00010000, new_entry=0000a900
(XEN) ioapic_guest_write: Installing bogus unmasked IO-APIC entry!
ioapic1 at mainbus0 apid 3
ioapic1: pa 0xfecc0000, virtual wire mode, version 3, 24 pins
(XEN) io_apic.c:2163: 
(XEN) ioapic_guest_write: apic=1, pin=16, old_irq=-1, new_irq=-1
(XEN) ioapic_guest_write: old_entry=00010000, new_entry=0000a900
(XEN) ioapic_guest_write: Installing bogus unmasked IO-APIC entry!
(XEN) io_apic.c:2163: 
(XEN) ioapic_guest_write: apic=1, pin=17, old_irq=-1, new_irq=-1
(XEN) ioapic_guest_write: old_entry=00010000, new_entry=0000a900
(XEN) ioapic_guest_write: Installing bogus unmasked IO-APIC entry!
(XEN) io_apic.c:2163: 
(XEN) ioapic_guest_write: apic=1, pin=18, old_irq=-1, new_irq=-1
(XEN) ioapic_guest_write: old_entry=00010000, new_entry=0000a900
(XEN) ioapic_guest_write: Installing bogus unmasked IO-APIC entry!
(XEN) io_apic.c:2163: 
(XEN) ioapic_guest_write: apic=1, pin=19, old_irq=-1, new_irq=-1
(XEN) ioapic_guest_write: old_entry=00010000, new_entry=0000a900
(XEN) ioapic_guest_write: Installing bogus unmasked IO-APIC entry!
(XEN) io_apic.c:2163: 
(XEN) ioapic_guest_write: apic=1, pin=20, old_irq=-1, new_irq=-1
(XEN) ioapic_guest_write: old_entry=00010000, new_entry=0000a900
(XEN) ioapic_guest_write: Installing bogus unmasked IO-APIC entry!
(XEN) io_apic.c:2163: 
(XEN) ioapic_guest_write: apic=1, pin=21, old_irq=-1, new_irq=-1
(XEN) ioapic_guest_write: old_entry=00010000, new_entry=0000a900
(XEN) ioapic_guest_write: Installing bogus unmasked IO-APIC entry!
(XEN) io_apic.c:2163: 
(XEN) ioapic_guest_write: apic=1, pin=22, old_irq=-1, new_irq=-1
(XEN) ioapic_guest_write: old_entry=00010000, new_entry=0000a900
(XEN) ioapic_guest_write: Installing bogus unmasked IO-APIC entry!
(XEN) io_apic.c:2163: 
(XEN) ioapic_guest_write: apic=1, pin=23, old_irq=-1, new_irq=-1
(XEN) ioapic_guest_write: old_entry=00010000, new_entry=0000a900
(XEN) ioapic_guest_write: Installing bogus unmasked IO-APIC entry!
hypervisor0 at mainbus0
[...]
viaide0 at pci0 dev 15 function 0
viaide0: VIA Technologies VT8237A SATA Controller (rev. 0x80)
viaide0: bus-master DMA support present
viaide0: primary channel configured to native-PCI mode
ioapic0: int21 1a9a8<vector=a8,delmode=1,logical,actlo,level,masked,dest=0> 
3000000<target=3>
viaide0: using ioapic0 pin 21, event channel 6 for native-PCI interrupt
atabus2 at viaide0 channel 0
viaide0: secondary channel configured to native-PCI mode
atabus3 at viaide0 channel 1
viaide1 at pci0 dev 15 function 1
viaide1: VIA Technologies VT8237A ATA133 controller
viaide1: bus-master DMA support present
viaide1: primary channel configured to compatibility mode
viaide1: primary channel using event channel 7 for irq 14
atabus4 at viaide1 channel 0
viaide1: secondary channel configured to compatibility mode
viaide1: secondary channel using event channel 8 for irq 15
[...]
viaide1:0:1: lost interrupt
        type: ata tc_bcount: 512 tc_skip: 0
cd0 at atapibus0 drive 1: <LITE-ON DVD SHD-16P1S, , GS05> cdrom removable
viaide1:0:1: lost interrupt
        type: ata tc_bcount: 512 tc_skip: 0
viaide1:0:1: lost interrupt
        type: ata tc_bcount: 512 tc_skip: 0
cd0: 32-bit data port
viaide1:0:1: lost interrupt
        type: ata tc_bcount: 0 tc_skip: 0
cd0: drive supports PIO mode 4viaide1:0:1: lost interrupt
        type: ata tc_bcount: 0 tc_skip: 0
, DMA mode 2viaide1:0:1: lost interrupt
        type: ata tc_bcount: 0 tc_skip: 0
, Ultra-DMA mode 2 (Ultra/33)
wd0 at atabus4 drive 0viaide1:0:0: lost interrupt
        type: ata tc_bcount: 512 tc_skip: 0
: <WDC WD400BB-22JHC0>
wd0: drive supports 16-sector PIO transfers, LBA addressing
wd0: 38166 MB, 77545 cyl, 16 head, 63 sec, 512 bytes/sect x 78165360 sectors
viaide1:0:0: lost interrupt
        type: ata tc_bcount: 512 tc_skip: 0
viaide1:0:0: lost interrupt
        type: ata tc_bcount: 512 tc_skip: 0
wd0: 32-bit data port
viaide1:0:0: lost interrupt
        type: ata tc_bcount: 0 tc_skip: 0
wd0: drive supports PIO mode 4viaide1:0:0: lost interrupt
        type: ata tc_bcount: 0 tc_skip: 0
, DMA mode 2viaide1:0:0: lost interrupt
        type: ata tc_bcount: 0 tc_skip: 0
, Ultra-DMA mode 5 (Ultra/100)
wd0(viaide1:0:0): using PIO mode 4, Ultra-DMA mode 5 (Ultra/100) (using DMA)
cd0(viaide1:0:1): using PIO mode 4, Ultra-DMA mode 2 (Ultra/33) (using DMA)
Searching for RAID components...
viaide1:0:0: lost interrupt
        type: ata tc_bcount: 512 tc_skip: 0
viaide1:0:0: lost interrupt
        type: ata tc_bcount: 512 tc_skip: 0
viaide1:0:0: lost interrupt
        type: ata tc_bcount: 512 tc_skip: 0
viaide1:0:0: lost interrupt
        type: ata tc_bcount: 512 tc_skip: 0
viaide1:0:0: lost interrupt
        type: ata tc_bcount: 1024 tc_skip: 0
viaide1:0:0: lost interrupt
        type: ata tc_bcount: 0 tc_skip: 0


The lost interrupt problems are new.

Looks like Dom0 needs to be changed to use the
PHYSDEVOP_apic_read, PHYSDEVOP_apic_write
hypercalls instead of the deprecated set of
PHYSDEVOP_IRQ_UNMASK_NOTIFY
and PHYSDEVOP_IRQ_STATUS_QUERY.

These are going to be removed in a future Xen version anyway.
It looks like this won't happen in Xen 3.2 though.



Christoph