diff options
author | Stefano Stabellini <stefano.stabellini@eu.citrix.com> | 2011-06-03 16:56:54 +0100 |
---|---|---|
committer | Alexander Graf <agraf@suse.de> | 2011-06-19 04:40:05 +0200 |
commit | 45dcd36e1ebbb3c085bdd157bffaf9276ffd8c46 (patch) | |
tree | a5862c2f3d529ab9b7ee14795df0540c22827dbf /hw | |
parent | 712c2b41490a986a5dd99bec99b854bac4322201 (diff) | |
download | hqemu-45dcd36e1ebbb3c085bdd157bffaf9276ffd8c46.zip hqemu-45dcd36e1ebbb3c085bdd157bffaf9276ffd8c46.tar.gz |
cirrus_vga: reset lfb_addr after a pci config write if the BAR is unmapped
If the cirrus_vga PCI BAR is unmapped than we should not only reset
map_addr but also lfb_addr, otherwise we'll keep trying to map
the old lfb_addr in map_linear_vram.
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Acked-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'hw')
-rw-r--r-- | hw/cirrus_vga.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/hw/cirrus_vga.c b/hw/cirrus_vga.c index 722cac7..3c5043e 100644 --- a/hw/cirrus_vga.c +++ b/hw/cirrus_vga.c @@ -3088,8 +3088,11 @@ static void pci_cirrus_write_config(PCIDevice *d, CirrusVGAState *s = &pvs->cirrus_vga; pci_default_write_config(d, address, val, len); - if (s->vga.map_addr && d->io_regions[0].addr == PCI_BAR_UNMAPPED) + if (s->vga.map_addr && d->io_regions[0].addr == PCI_BAR_UNMAPPED) { s->vga.map_addr = 0; + s->vga.lfb_addr = 0; + s->vga.lfb_end = 0; + } cirrus_update_memory_access(s); } |