I've seen this problem with Xen 4.6.5 from the Xubuntu 16.04 distribution and from a quick look over the current vioapic code it seems to be still present.
From the IOAPIC datasheet [1]: "To reference an IOAPIC register, a byte memory write that the PIIX3 decodes for the IOAPIC loads the IOREGSEL Register with an 8-bit value that specifies the IOAPIC register (address offset in Table 3.2) to be accessed." But the 'vioapic_write()' function does not consider the 'length' argument and always copies 4 Bytes from the unsigned long 'val' argument into the virtual 32-Bit IOREGSEL register. In the error case I've seen, 'length' was 1 and 'val' was 0xffff8300bb0cf801 and the IOAPIC version register with address offset 0x01 was not read correctly. Regards, Christian [1] https://pdos.csail.mit.edu/6.828/2016/readings/ia32/ioapic.pdf _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel