From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:35942) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TRhGU-0003i4-9O for qemu-devel@nongnu.org; Fri, 26 Oct 2012 06:35:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TRhGO-0004CX-6a for qemu-devel@nongnu.org; Fri, 26 Oct 2012 06:35:46 -0400 Received: from david.siemens.de ([192.35.17.14]:16131) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TRhGN-0004CI-TG for qemu-devel@nongnu.org; Fri, 26 Oct 2012 06:35:40 -0400 Message-ID: <508A6772.4040400@siemens.com> Date: Fri, 26 Oct 2012 12:35:30 +0200 From: Jan Kiszka MIME-Version: 1.0 References: <50890462.5010307@linux.vnet.ibm.com> <508904C4.7030409@linux.vnet.ibm.com> In-Reply-To: <508904C4.7030409@linux.vnet.ibm.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2 3/5] Qemu: do not mark bios readonly List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Xiao Guangrong Cc: KVM , Marcelo Tosatti , qemu-devel@nongnu.org, Kevin O'Connor , Avi Kivity , Anthony Liguori , Liu Sheng On 2012-10-25 11:22, Xiao Guangrong wrote: > In isapc, no i440x device exists in guest that means seabios can not > make 0xc0000 to 0x1000000 writable > > It works fine in current code since the guest can happily write readonly > memory. In order to support readonly slot in Qemu, we do not make the bios > readonly anymore > > Signed-off-by: Xiao Guangrong > --- > hw/pc_sysfw.c | 2 -- > 1 files changed, 0 insertions(+), 2 deletions(-) > > diff --git a/hw/pc_sysfw.c b/hw/pc_sysfw.c > index b45f0ac..2d56fc7 100644 > --- a/hw/pc_sysfw.c > +++ b/hw/pc_sysfw.c > @@ -156,7 +156,6 @@ static void old_pc_system_rom_init(MemoryRegion *rom_memory) > bios = g_malloc(sizeof(*bios)); > memory_region_init_ram(bios, "pc.bios", bios_size); > vmstate_register_ram_global(bios); > - memory_region_set_readonly(bios, true); > ret = rom_add_file_fixed(bios_name, (uint32_t)(-bios_size), -1); > if (ret != 0) { > bios_error: > @@ -179,7 +178,6 @@ static void old_pc_system_rom_init(MemoryRegion *rom_memory) > 0x100000 - isa_bios_size, > isa_bios, > 1); > - memory_region_set_readonly(isa_bios, true); > > /* map all the bios at the top of memory */ > memory_region_add_subregion(rom_memory, > This has two problems: We know it breaks at least Win 95 that overwrites its F-segment during boot. And it applies changes to the shadowed area (below 1 MB) also to the ROM area - I don't think that is the original behaviour on real hardware. What we need is paravirtual shadow write control for the ISA PC. It's on my todo list, maybe I will be able to look into this during the next week. BTW, your patch series should allow to drop the KVM special case from pc_system_firmware_init. That version, btw, treats high and low BIOS areas separately - but only reloads the upper area. Hmm... Jan -- Siemens AG, Corporate Technology, CT RTC ITP SDP-DE Corporate Competence Center Embedded Linux