From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40243) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VUCGr-0003Fc-RF for qemu-devel@nongnu.org; Thu, 10 Oct 2013 05:11:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VUCGl-0003qh-Qy for qemu-devel@nongnu.org; Thu, 10 Oct 2013 05:11:01 -0400 Received: from mx1.redhat.com ([209.132.183.28]:13938) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VUCGl-0003qX-9d for qemu-devel@nongnu.org; Thu, 10 Oct 2013 05:10:55 -0400 Message-ID: <52566F15.6030308@redhat.com> Date: Thu, 10 Oct 2013 11:10:45 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <1381391779-27718-1-git-send-email-pingfank@linux.vnet.ibm.com> <1381391779-27718-4-git-send-email-pingfank@linux.vnet.ibm.com> In-Reply-To: <1381391779-27718-4-git-send-email-pingfank@linux.vnet.ibm.com> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v6 3/5] PC: use qdev_xx to create hpet instead of sysbus_create_xx List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Liu Ping Fan Cc: qemu-devel@nongnu.org, Anthony Liguori , "Michael S. Tsirkin" Il 10/10/2013 09:56, Liu Ping Fan ha scritto: > sysbus_create_xx func does not allow us to set a device's extra > properties. While hpet need to set its compat property before > initialization, so we abandon the wrapper function, and spread > its logic "inline" > > Signed-off-by: Liu Ping Fan > --- > hw/i386/pc.c | 11 +++++++++-- > hw/timer/hpet.c | 4 +--- > 2 files changed, 10 insertions(+), 5 deletions(-) > > diff --git a/hw/i386/pc.c b/hw/i386/pc.c > index 0c313fe..f2b7b6c 100644 > --- a/hw/i386/pc.c > +++ b/hw/i386/pc.c > @@ -1246,9 +1246,16 @@ void pc_basic_device_init(ISABus *isa_bus, qemu_irq *gsi, > * when the HPET wants to take over. Thus we have to disable the latter. > */ > if (!no_hpet && (!kvm_irqchip_in_kernel() || kvm_has_pit_state2())) { > - hpet = sysbus_try_create_simple("hpet", HPET_BASE, NULL); > - > + /* In order to set property, here not using sysbus_try_create_simple */ > + hpet = qdev_try_create(NULL, "hpet"); > if (hpet) { > + /* tmp fix. For compat, hard code to IRQ2 until we have correct > + * compat property and differentiate pc-iix with pc-q35 > + */ > + qdev_prop_set_uint32(hpet, "intcap", 0x4); > + qdev_init_nofail(hpet); > + sysbus_mmio_map(SYS_BUS_DEVICE(hpet), 0, HPET_BASE); > + > for (i = 0; i < GSI_NUM_PINS; i++) { > sysbus_connect_irq(SYS_BUS_DEVICE(hpet), i, gsi[i]); > } > diff --git a/hw/timer/hpet.c b/hw/timer/hpet.c > index 5b11be4..69ce587 100644 > --- a/hw/timer/hpet.c > +++ b/hw/timer/hpet.c > @@ -43,8 +43,6 @@ > > #define HPET_MSI_SUPPORT 0 > > -/* Will fix: intcap is set by board, and should be 0 if nobody sets. */ > -#define HPET_TN_INT_CAP_DEFAULT 0x4ULL > > #define TYPE_HPET "hpet" > #define HPET(obj) OBJECT_CHECK(HPETState, (obj), TYPE_HPET) > @@ -758,7 +756,7 @@ static void hpet_realize(DeviceState *dev, Error **errp) > static Property hpet_device_properties[] = { > DEFINE_PROP_UINT8("timers", HPETState, num_timers, HPET_MIN_TIMERS), > DEFINE_PROP_BIT("msi", HPETState, flags, HPET_MSI_SUPPORT, false), > - DEFINE_PROP_UINT32("intcap", HPETState, intcap, HPET_TN_INT_CAP_DEFAULT), > + DEFINE_PROP_UINT32("intcap", HPETState, intcap, 0), > DEFINE_PROP_END_OF_LIST(), > }; > > This should not be needed anymore, except for changing the intcap default to 0 (which would go in patch 5). Paolo