Message ID | 1314212981-30211-1-git-send-email-avi@redhat.com |
---|---|
State | New |
Headers | show |
On Wed, Aug 24, 2011 at 10:09:41PM +0300, Avi Kivity wrote: > The map/unmap code was assymetric - unmap used the local MemoryRegion while > map used isa_mmio_init(), which cannot handle dynamic mappings. > > Fix by using isa_mmio_setup() and the local MemoryRegion. > > Signed-off-by: Avi Kivity <avi@redhat.com> Thanks, this works for me. I'll apply it in a moment. Cheers
diff --git a/hw/gt64xxx.c b/hw/gt64xxx.c index 6af9782..1c34253 100644 --- a/hw/gt64xxx.c +++ b/hw/gt64xxx.c @@ -297,7 +297,11 @@ static void gt64120_pci_mapping(GT64120State *s) s->PCI0IO_start = s->regs[GT_PCI0IOLD] << 21; s->PCI0IO_length = ((s->regs[GT_PCI0IOHD] + 1) - (s->regs[GT_PCI0IOLD] & 0x7f)) << 21; isa_mem_base = s->PCI0IO_start; - isa_mmio_init(s->PCI0IO_start, s->PCI0IO_length); + if (s->PCI0IO_length) { + isa_mmio_setup(&s->PCI0IO_mem, s->PCI0IO_length); + memory_region_add_subregion(get_system_memory(), s->PCI0IO_start, + &s->PCI0IO_mem); + } } }
The map/unmap code was assymetric - unmap used the local MemoryRegion while map used isa_mmio_init(), which cannot handle dynamic mappings. Fix by using isa_mmio_setup() and the local MemoryRegion. Signed-off-by: Avi Kivity <avi@redhat.com> --- Untested. hw/gt64xxx.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-)