From mboxrd@z Thu Jan 1 00:00:00 1970 From: Richard Henderson Subject: Re: [Qemu-devel] [PATCH 21/24] isa: add isa_address_space() Date: Wed, 10 Aug 2011 09:24:05 -0700 Message-ID: <4E42B0A5.1010005@twiddle.net> References: <1312823229-12822-1-git-send-email-avi@redhat.com> <1312823229-12822-22-git-send-email-avi@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org To: Avi Kivity Return-path: Received: from mail-wy0-f174.google.com ([74.125.82.174]:58223 "EHLO mail-wy0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751724Ab1HJQYM (ORCPT ); Wed, 10 Aug 2011 12:24:12 -0400 Received: by wyg24 with SMTP id 24so834188wyg.19 for ; Wed, 10 Aug 2011 09:24:10 -0700 (PDT) In-Reply-To: <1312823229-12822-22-git-send-email-avi@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: On 08/08/2011 10:07 AM, Avi Kivity wrote: > A helper that returns the address space used by ISA devices. Useful > for getting rid of isa_mem_base, multiple ISA buses, or ISA buses behind > bridges. > > Signed-off-by: Avi Kivity > --- > hw/isa-bus.c | 6 ++++++ > hw/isa.h | 1 + > 2 files changed, 7 insertions(+), 0 deletions(-) > > diff --git a/hw/isa-bus.c b/hw/isa-bus.c > index 2765543..1cb497f 100644 > --- a/hw/isa-bus.c > +++ b/hw/isa-bus.c > @@ -20,6 +20,7 @@ > #include "monitor.h" > #include "sysbus.h" > #include "isa.h" > +#include "exec-memory.h" > > struct ISABus { > BusState qbus; > @@ -202,4 +203,9 @@ static char *isabus_get_fw_dev_path(DeviceState *dev) > return strdup(path); > } > > +MemoryRegion *isa_address_space(ISADevice *dev) > +{ > + return get_system_memory(); > +} > + This does not help get rid of isa_mem_base, as far as I can see. All this is going to do is the equivalent of isa_mem_base == 0. Did you have a plan beyond this? The simplest replacement, as far as I can see, is to replace one global variable with another: MemoryRegion *isa_address_space; Define that this variable *must* be set by any platform that wants to use ISA. It can be set to the address_space_mem parameter (i.e. the copy of get_system_memory() that the platforms receive as a parameter). For Alpha, I can set this to the sub-region that I pass off to the PCI subsystem. For those other non-x86 platforms that currently set isa_mem_base to a non-zero value, they either re-use an otherwise existing memory region or create a new sub-region properly placed. Of course, as far as I can see, this variable is only used by the VGA devices. Surely we can arrange to pass down some address space during setup of the VGA? r~