From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52214) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WXBN0-0007yT-PZ for qemu-devel@nongnu.org; Mon, 07 Apr 2014 11:22:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WXBMr-00075f-Me for qemu-devel@nongnu.org; Mon, 07 Apr 2014 11:21:58 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40619) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WXBMr-00075b-FI for qemu-devel@nongnu.org; Mon, 07 Apr 2014 11:21:49 -0400 Date: Mon, 7 Apr 2014 18:21:14 +0300 From: "Michael S. Tsirkin" Message-ID: <20140407152114.GB17277@redhat.com> References: <1396618620-27823-1-git-send-email-imammedo@redhat.com> <1396618620-27823-29-git-send-email-imammedo@redhat.com> <53421689.5030309@ozlabs.ru> <20140407141301.GG31432@otherpad.lan.raisama.net> <20140407162602.37dc6251@nial.usersys.redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140407162602.37dc6251@nial.usersys.redhat.com> Subject: Re: [Qemu-devel] [PATCH 28/35] pc: propagate memory hotplug event to ACPI device List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Igor Mammedov Cc: peter.maydell@linaro.org, Alexey Kardashevskiy , hutao@cn.fujitsu.com, mjt@tls.msk.ru, qemu-devel@nongnu.org, lcapitulino@redhat.com, kraxel@redhat.com, akong@redhat.com, quintela@redhat.com, armbru@redhat.com, aliguori@amazon.com, jan.kiszka@siemens.com, lersek@redhat.com, Eduardo Habkost , marcel.a@redhat.com, stefanha@redhat.com, chegu_vinod@hp.com, rth@twiddle.net, kwolf@redhat.com, s.priebe@profihost.ag, mreitz@redhat.com, vasilis.liaskovitis@profitbricks.com, pbonzini@redhat.com, afaerber@suse.de On Mon, Apr 07, 2014 at 04:26:02PM +0200, Igor Mammedov wrote: > On Mon, 7 Apr 2014 11:13:01 -0300 > Eduardo Habkost wrote: > > > On Mon, Apr 07, 2014 at 01:07:53PM +1000, Alexey Kardashevskiy wrote: > > > On 04/05/2014 12:36 AM, Igor Mammedov wrote: > > > > Notify PIIX4_PM/ICH9LPC device about hotplug event, > > > > so that it would send SCI to guest notifying about > > > > newly added memory. > > > > > > > > Signed-off-by: Igor Mammedov > > > > --- > > > > hw/i386/pc.c | 13 +++++++++++++ > > > > 1 file changed, 13 insertions(+) > > > > > > > > diff --git a/hw/i386/pc.c b/hw/i386/pc.c > > > > index 734c6ee..ee5cf88 100644 > > > > --- a/hw/i386/pc.c > > > > +++ b/hw/i386/pc.c > > > > @@ -60,6 +60,8 @@ > > > > #include "acpi-build.h" > > > > #include "hw/mem/dimm.h" > > > > #include "trace.h" > > > > +#include "hw/acpi/piix4.h" > > > > +#include "hw/i386/ich9.h" > > > > > > > > /* debug PC/ISA interrupts */ > > > > //#define DEBUG_IRQ > > > > @@ -1484,6 +1486,8 @@ void qemu_register_pc_machine(QEMUMachine *m) > > > > static void pc_dimm_plug(HotplugHandler *hotplug_dev, > > > > DeviceState *dev, Error **errp) > > > > { > > > > + Object *acpi_dev; > > > > + HotplugHandlerClass *hhc; > > > > Error *local_err = NULL; > > > > PCMachineState *pcms = PC_MACHINE(hotplug_dev); > > > > DimmDevice *dimm = DIMM(dev); > > > > @@ -1517,10 +1521,19 @@ static void pc_dimm_plug(HotplugHandler *hotplug_dev, > > > > } > > > > trace_mhp_pc_dimm_assigned_slot(dimm->slot); > > > > > > > > + acpi_dev = (acpi_dev = piix4_pm_find()) ? acpi_dev : ; > ; > > > > > > > > > wow. just wow. > > > > I had to read the C99 spec to find out if this was safe. :-) > > > > But I believe it is readable, I wouldn't mind keeping it that way. > > > I'll change it to a less obscure form: > > acpi_dev = piix4_pm_find(); > if (!acpi_dev) { > acpi_dev = ich9_lpc_find(); > } or Object *piix = piix4_pm_find(); Object *lpc = ich9_lpc_find(); assert(!!piix != !!lpc); so we verify it's one of the other.