summaryrefslogtreecommitdiff
path: root/hw/cirrus_vga.c
diff options
context:
space:
mode:
authorStefano Stabellini <stefano.stabellini@eu.citrix.com>2011-06-03 16:56:54 +0100
committerAlexander Graf <agraf@suse.de>2011-06-19 04:40:05 +0200
commit45dcd36e1ebbb3c085bdd157bffaf9276ffd8c46 (patch)
treea5862c2f3d529ab9b7ee14795df0540c22827dbf /hw/cirrus_vga.c
parent712c2b41490a986a5dd99bec99b854bac4322201 (diff)
downloadqemu-45dcd36e1ebbb3c085bdd157bffaf9276ffd8c46.tar.gz
qemu-45dcd36e1ebbb3c085bdd157bffaf9276ffd8c46.tar.bz2
qemu-45dcd36e1ebbb3c085bdd157bffaf9276ffd8c46.zip
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/cirrus_vga.c')
-rw-r--r--hw/cirrus_vga.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/hw/cirrus_vga.c b/hw/cirrus_vga.c
index 722cac7544..3c5043ecf9 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);
}