libqos: Fix PC PCI endianness glitches
The libqos implementation of io_read{b,w,l} and io_write{b,w,l} hooks was relying on qtest_mem{read,write}() respectively. With d81d410 (usb: improve ehci/uhci test) this resulted in assertion failures on ppc hosts: ERROR:tests/usb-hcd-ehci-test.c:78:ehci_port_test: assertion failed: ((value & mask) == (expect & mask)) ERROR:tests/usb-hcd-ehci-test.c:128:pci_uhci_port_2: assertion failed: (pcibus != NULL) ERROR:tests/usb-hcd-ehci-test.c:150:pci_ehci_port_2: assertion failed: (pcibus != NULL) qtest_read{b,w,l,q}() and qtest_write{b,w,l,q}() had been introduced as endian-safe replacement for qtest_mem{read,write}() in I2C in 872536b (qtest: Add MMIO support). Use them for PCI as well. Cc: Anthony Liguori <aliguori@amazon.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Fixes: c4efe1c qtest: add libqos including PCI support Fixes: d81d410 usb: improve ehci/uhci test Signed-off-by: Andreas Färber <afaerber@suse.de> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
0a9934eef1
commit
0e16297461
@ -41,7 +41,7 @@ static uint8_t qpci_pc_io_readb(QPCIBus *bus, void *addr)
|
|||||||
if (port < 0x10000) {
|
if (port < 0x10000) {
|
||||||
value = inb(port);
|
value = inb(port);
|
||||||
} else {
|
} else {
|
||||||
memread(port, &value, sizeof(value));
|
value = readb(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
@ -55,7 +55,7 @@ static uint16_t qpci_pc_io_readw(QPCIBus *bus, void *addr)
|
|||||||
if (port < 0x10000) {
|
if (port < 0x10000) {
|
||||||
value = inw(port);
|
value = inw(port);
|
||||||
} else {
|
} else {
|
||||||
memread(port, &value, sizeof(value));
|
value = readw(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
@ -69,7 +69,7 @@ static uint32_t qpci_pc_io_readl(QPCIBus *bus, void *addr)
|
|||||||
if (port < 0x10000) {
|
if (port < 0x10000) {
|
||||||
value = inl(port);
|
value = inl(port);
|
||||||
} else {
|
} else {
|
||||||
memread(port, &value, sizeof(value));
|
value = readl(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
@ -82,7 +82,7 @@ static void qpci_pc_io_writeb(QPCIBus *bus, void *addr, uint8_t value)
|
|||||||
if (port < 0x10000) {
|
if (port < 0x10000) {
|
||||||
outb(port, value);
|
outb(port, value);
|
||||||
} else {
|
} else {
|
||||||
memwrite(port, &value, sizeof(value));
|
writeb(port, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,7 +93,7 @@ static void qpci_pc_io_writew(QPCIBus *bus, void *addr, uint16_t value)
|
|||||||
if (port < 0x10000) {
|
if (port < 0x10000) {
|
||||||
outw(port, value);
|
outw(port, value);
|
||||||
} else {
|
} else {
|
||||||
memwrite(port, &value, sizeof(value));
|
writew(port, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,7 +104,7 @@ static void qpci_pc_io_writel(QPCIBus *bus, void *addr, uint32_t value)
|
|||||||
if (port < 0x10000) {
|
if (port < 0x10000) {
|
||||||
outl(port, value);
|
outl(port, value);
|
||||||
} else {
|
} else {
|
||||||
memwrite(port, &value, sizeof(value));
|
writel(port, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user