pci: fix corrupted pci conf index register by unaligned write
Commit d0ed8076cb
converted the PCI config access to the memory
API, but also inadvertantly changed it to accept unaligned writes,
and corrupt the index register in the process. This causes a regression
booting NetBSD.
Fix by ignoring unaligned or non-dword writes.
https://bugs.launchpad.net/qemu/+bug/897771
Reported-by: Andreas Gustafsson <gson@gson.org>
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
54bfa546a0
commit
cdde6ffc27
@ -101,6 +101,9 @@ static void pci_host_config_write(void *opaque, target_phys_addr_t addr,
|
||||
|
||||
PCI_DPRINTF("%s addr " TARGET_FMT_plx " len %d val %"PRIx64"\n",
|
||||
__func__, addr, len, val);
|
||||
if (addr != 0 || len != 4) {
|
||||
return;
|
||||
}
|
||||
s->config_reg = val;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user