From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:59120) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SwaPY-0006CC-9d for qemu-devel@nongnu.org; Wed, 01 Aug 2012 11:00:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SwaPQ-000624-Bv for qemu-devel@nongnu.org; Wed, 01 Aug 2012 11:00:32 -0400 Received: from e35.co.us.ibm.com ([32.97.110.153]:44195) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SwaPP-00061v-VC for qemu-devel@nongnu.org; Wed, 01 Aug 2012 11:00:24 -0400 Received: from /spool/local by e35.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 1 Aug 2012 09:00:15 -0600 Received: from d03relay05.boulder.ibm.com (d03relay05.boulder.ibm.com [9.17.195.107]) by d03dlp01.boulder.ibm.com (Postfix) with ESMTP id 992A61FF001B for ; Wed, 1 Aug 2012 14:59:03 +0000 (WET) Received: from d03av03.boulder.ibm.com (d03av03.boulder.ibm.com [9.17.195.169]) by d03relay05.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id q71EwbOo142600 for ; Wed, 1 Aug 2012 08:58:47 -0600 Received: from d03av03.boulder.ibm.com (loopback [127.0.0.1]) by d03av03.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id q71EwJJ3006478 for ; Wed, 1 Aug 2012 08:58:19 -0600 From: Anthony Liguori In-Reply-To: <50193D75.4070905@suse.de> References: <1341611595-9847-1-git-send-email-hpoussin@reactos.org> <50193D75.4070905@suse.de> Date: Wed, 01 Aug 2012 09:58:13 -0500 Message-ID: <87obmuslq2.fsf@codemonkey.ws> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH 1/2] debugexit: support for custom exit port (e.g LGPL'ed VGA BIOS port 0x501) List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Andreas =?utf-8?Q?F=C3=A4rber?= , =?utf-8?Q?Herv?= =?utf-8?Q?=C3=A9?= Poussineau Cc: Kevin Wolf , qemu-devel@nongnu.org Andreas F=C3=A4rber writes: > Am 06.07.2012 23:53, schrieb Herv=C3=A9 Poussineau: >> Add generic support for simple I/O port which, when written to, cause >> QEMU to exit with the given written value. >>=20 >> There is no vmstate associated with the debugging port, simply because >> the entire interface is a single, stateless, write-only port. >>=20 >> Signed-off-by: Herv=C3=A9 Poussineau >> --- >> hw/debugexit.c | 68 ++++++++++++++++++++++++++++++++++++++++++= +++++++ >> hw/i386/Makefile.objs | 2 +- >> 2 files changed, 69 insertions(+), 1 deletion(-) >> create mode 100644 hw/debugexit.c >>=20 >> diff --git a/hw/debugexit.c b/hw/debugexit.c >> new file mode 100644 >> index 0000000..72ddf31 >> --- /dev/null >> +++ b/hw/debugexit.c >> @@ -0,0 +1,68 @@ >> +/* >> + * QEMU debug exit port ("LGPL'ed-VGA-BIOS-style port 501/502") emulati= on >> + * >> + * Copyright (c) 2012 Herve Poussineau >> + * >> + * This program is free software; you can redistribute it and/or modify= it >> + * under the terms of the GNU General Public License as published by the >> + * Free Software Foundation; either version 2 of the License, or (at yo= ur >> + * option) any later version. >> + * >> + * This program is distributed in the hope that it will be useful, >> + * but WITHOUT ANY WARRANTY; without even the implied warranty of >> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. >> + * See the GNU General Public License for more details. >> + * >> + * You should have received a copy of the GNU General Public License al= ong >> + * with this program; if not, see . >> + */ >> + >> +#include "isa.h" >> + >> +typedef struct ISADebugExitState { >> + ISADevice dev; >> + uint32_t iobase; >> + uint8_t access_size; >> +} ISADebugExitState; >> + >> +static void debugexit_ioport_write(void *opaque, uint32_t addr, uint32_= t val) >> +{ >> + exit((val << 1) | 1); > > I understand you're just moving code from patch 2/2 here, but in another > thread it was stated that exit()ing from such writes can do bad things > to the block layer (cleanups not happening) and should be replaced by > qemu_request_shutdown() or something like that... Not really. This is the right behavior for this port. Regards, Anthony Liguori > > Andreas > >> +} >> + >> +static int debugexit_isa_initfn(ISADevice *dev) >> +{ >> + ISADebugExitState *isa =3D DO_UPCAST(ISADebugExitState, dev, dev); >> + >> + register_ioport_write(isa->iobase, 1, isa->access_size, >> + debugexit_ioport_write, NULL); >> + return 0; >> +} >> + >> +static Property debugexit_isa_properties[] =3D { >> + DEFINE_PROP_HEX32("iobase", ISADebugExitState, iobase, 0x501), >> + DEFINE_PROP_UINT8("access-size", ISADebugExitState, access_size, 1), >> + DEFINE_PROP_END_OF_LIST(), >> +}; >> + >> +static void debugexit_isa_class_initfn(ObjectClass *klass, void *data) >> +{ >> + DeviceClass *dc =3D DEVICE_CLASS(klass); >> + ISADeviceClass *ic =3D ISA_DEVICE_CLASS(klass); >> + ic->init =3D debugexit_isa_initfn; >> + dc->props =3D debugexit_isa_properties; >> +} >> + >> +static TypeInfo debugexit_isa_info =3D { >> + .name =3D "isa-debugexit", >> + .parent =3D TYPE_ISA_DEVICE, >> + .instance_size =3D sizeof(ISADebugExitState), >> + .class_init =3D debugexit_isa_class_initfn, >> +}; >> + >> +static void debugexit_register_types(void) >> +{ >> + type_register_static(&debugexit_isa_info); >> +} >> + >> +type_init(debugexit_register_types) >> diff --git a/hw/i386/Makefile.objs b/hw/i386/Makefile.objs >> index eb171b7..23be2d3 100644 >> --- a/hw/i386/Makefile.objs >> +++ b/hw/i386/Makefile.objs >> @@ -3,7 +3,7 @@ obj-y +=3D apic_common.o apic.o kvmvapic.o >> obj-y +=3D sga.o ioapic_common.o ioapic.o piix_pci.o >> obj-y +=3D vmport.o >> obj-y +=3D pci-hotplug.o smbios.o wdt_ib700.o >> -obj-y +=3D debugcon.o multiboot.o >> +obj-y +=3D debugcon.o debugexit.o multiboot.o >> obj-y +=3D pc_piix.o >> obj-y +=3D pc_sysfw.o >> obj-$(CONFIG_XEN) +=3D xen_platform.o xen_apic.o >>=20 > > > --=20 > SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=C3=BCrnberg, Germany > GF: Jeff Hawn, Jennifer Guild, Felix Imend=C3=B6rffer; HRB 16746 AG N=C3= =BCrnberg