From patchwork Thu Dec 19 18:02:31 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Felipe Franciosi X-Patchwork-Id: 11304191 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5E6FE14E3 for ; Thu, 19 Dec 2019 18:05:12 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2223B20716 for ; Thu, 19 Dec 2019 18:05:12 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=nutanix.com header.i=@nutanix.com header.b="LfZ7ICxQ" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2223B20716 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nutanix.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Received: from localhost ([::1]:45988 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ii0Ah-0007L2-5f for patchwork-qemu-devel@patchwork.kernel.org; Thu, 19 Dec 2019 13:05:11 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:39197) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ii08F-00043n-CF for qemu-devel@nongnu.org; Thu, 19 Dec 2019 13:02:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ii08C-0002MR-Bj for qemu-devel@nongnu.org; Thu, 19 Dec 2019 13:02:39 -0500 Received: from mx0b-002c1b01.pphosted.com ([148.163.155.12]:63394) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ii08C-0002Gc-0o for qemu-devel@nongnu.org; Thu, 19 Dec 2019 13:02:36 -0500 Received: from pps.filterd (m0127842.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xBJHu2LS010088; Thu, 19 Dec 2019 10:02:34 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=proofpoint20171006; bh=/VWQLM4sX5qeykkiOYYdqhWfRwZl5KHgSxVCs4islm0=; b=LfZ7ICxQ6M722nMRVa4SiC/wHX45EWkuD+9zV3jhm9sS05k8k6aYLIgaWI2/5LyZLooH Oax0k5sZeNVLdY0oe9MEjhe30LDEioaYedm9w/8payIVikDKSudO1dsFOOTb5n1UdoK0 B3029+1nqrAqR49uJnGEjBTahm4XQekZRljV0PSZoCyIiqYjd/Aby7OdeuukwmTY3Kw+ YzFzMOTLsjUiYu16tQ8G1YPi2AdTe2heesfXdhgkAL5Z3YMdQvRjiQFUkO3Kw7dW9o6q mOo1xfMC4QdlaKvyPXWdgZ+d2LctqnZzY1XjggXDMz4GcYiCkyJndq8vy6u941BXQ0G7 bQ== Received: from nam04-co1-obe.outbound.protection.outlook.com (mail-co1nam04lp2052.outbound.protection.outlook.com [104.47.45.52]) by mx0b-002c1b01.pphosted.com with ESMTP id 2wvyxmkab7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 19 Dec 2019 10:02:34 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ccn4LHWKcQP92jdXz283EOEkzL0YKuRG920uz2E+mGyDa/OaeMKNZbbUAaRDIaj8VJi2ZFLVlGqzFwo8e8pGXNTs6ZfYIKRLwctIGk4eC2UqYZ8sG/HFO2mY0lTNbUQUDdvv9nfM+o2h5Wy4eAsr9V71AAxqBHpvkEJdHhb36KJ1kkOJNkGwELSUWuBf1H/MbzkQ7Ov1W2CsJhirYLaT6nYnHMNPyT6yq5hfaGrWa0jp0DT2TK2EV1sfYWz+bRTtJ4u9mC1S61V8DkxlExY3UFtzVjY2uDRnMWSZ7mCZz93YOMbnSglhFHj7NI5sukUtKp//olKYSflBiWWiZ+8jHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/VWQLM4sX5qeykkiOYYdqhWfRwZl5KHgSxVCs4islm0=; b=K4V00K+z0ypGvWmjp9nGBEa+onfLWl/ZMYtciErkWLqOAHypzvMRNJm9WoxJzEAxvJhhhzqUCKxop+PMYY89mPywDOWHyOJ2KahTZw6KH+a7NsAx80pa/wxvFB4SMF4xWQC6UPg06396JqTrkwvS1N1wlUj2N3s2hdmE6ngKfQMIMpUplCi4NmZ4La/VgBKWWgB3Sy0AKPbRalhkQL6pUKSNUC6JWlS9epXJz05ZdYUpwSXl81ewQL2NtfrKwpHNo65mV2NtiAt4Q+/FNE/0alJWeW3B8r1U2mvsEv5XA3rR0e2XV5xQjQQ2Pgk/pZVBxU8XXKTP7fXnOUzNDA9gqg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none Received: from MWHPR02MB2656.namprd02.prod.outlook.com (10.168.206.142) by MWHPR02MB2303.namprd02.prod.outlook.com (10.168.245.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2559.14; Thu, 19 Dec 2019 18:02:31 +0000 Received: from MWHPR02MB2656.namprd02.prod.outlook.com ([fe80::c8f8:4820:a24c:3029]) by MWHPR02MB2656.namprd02.prod.outlook.com ([fe80::c8f8:4820:a24c:3029%10]) with mapi id 15.20.2559.012; Thu, 19 Dec 2019 18:02:31 +0000 Received: from nutanix.com (82.9.225.166) by AM4PR07CA0004.eurprd07.prod.outlook.com (2603:10a6:205:1::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2581.4 via Frontend Transport; Thu, 19 Dec 2019 18:02:29 +0000 From: Felipe Franciosi To: Marc-Andre Lureau , Phillipe Mathieu-Daude , Stefan Hajnoczi , Eduardo Habkost , Markus Armbruster , Alexey Kardashevskiy Subject: [PATCH v4 1/4] qom/object: enable setter for uint types Thread-Topic: [PATCH v4 1/4] qom/object: enable setter for uint types Thread-Index: AQHVtpZ7FkfEhVsX+kaB19cHfsfUcw== Date: Thu, 19 Dec 2019 18:02:31 +0000 Message-ID: <20191219180205.25191-2-felipe@nutanix.com> References: <20191219180205.25191-1-felipe@nutanix.com> In-Reply-To: <20191219180205.25191-1-felipe@nutanix.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM4PR07CA0004.eurprd07.prod.outlook.com (2603:10a6:205:1::17) To MWHPR02MB2656.namprd02.prod.outlook.com (2603:10b6:300:45::14) x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.20.1 x-originating-ip: [82.9.225.166] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3fa90218-6420-4c07-82f3-08d784ad9df2 x-ms-traffictypediagnostic: MWHPR02MB2303: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-proofpoint-crosstenant: true x-ms-oob-tlc-oobclassifiers: OLM:287; x-forefront-prvs: 0256C18696 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(396003)(376002)(346002)(39860400002)(136003)(366004)(189003)(199004)(66476007)(5660300002)(16526019)(186003)(66446008)(26005)(956004)(2906002)(4326008)(36756003)(8886007)(52116002)(1076003)(7696005)(81166006)(30864003)(8936002)(81156014)(86362001)(8676002)(478600001)(66946007)(6666004)(2616005)(64756008)(55016002)(107886003)(71200400001)(110136005)(66556008)(54906003)(316002)(64030200001)(579004); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR02MB2303; H:MWHPR02MB2656.namprd02.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: nutanix.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: N0XFKmwjNnMe+Qh8pa+jbwnhVOglQ71cSCo4Ds8sBUxvhTovcTXxgFEy5npUm2RISbj9pn+FLr+cSvHeVxe3Q3eqXdmIny0eYLVADKAJI+v0YMW9GSXphMUFfS6x+x5mE2UbOx4PXkRo/K+kPzqOmdldDlnwAc4JNoEU0iImBTYeoMynDTWyyz6tV3EksB3ZPI1iHA1gG4RJZ9Lk7maVaRgEzRYdYKV0z4sgI3vJo5Erwcrmc3T6cbLxvOxa4IBPZRsLEbiAwIBu++U4sph+R3wl2Q+mbp5nwGgEqnfxzmEsl3CdKhuwhAQid7MR3w66+vHMXhoT5PO4TNWLVzRGSSf0+KB2FZAJGcmtIzG6T8jU604/lgbWm2jCqW+RutYjNnccbKyG+TYEQGoCAzZQQRGMrqiI4x536vB6wQp4lsq0Sk77Pzm9PZK6qXnv6n+wZ8Pedw2BTd0HElgCZk+ON0X59r6rlMlPYX4xtgO+QuPwQ6C1nBgr8BJWoG0Nz0VQ MIME-Version: 1.0 X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3fa90218-6420-4c07-82f3-08d784ad9df2 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Dec 2019 18:02:31.4407 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 1veqXHQeBkx5cguF3jlB9NCP6U9k0P1Ke7I3yT3d7LclFotR6L8KBvww49Sd4lHob1/B4D4Xj5AQYPZglvCGaFstQqbXn1nkisN8DccfylA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR02MB2303 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-12-19_06:2019-12-17,2019-12-19 signatures=0 X-Proofpoint-Spam-Reason: safe X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.155.12 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "qemu-devel@nongnu.org" , Felipe Franciosi Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" Traditionally, the uint-specific property helpers only offer getters. When adding object (or class) uint types, one must therefore use the generic property helper if a setter is needed (and probably duplicate some code writing their own getters/setters). This enhances the uint-specific property helper APIs by adding a bitwise-or'd 'flags' field and modifying all clients of that API to set this paramater to OBJ_PROP_FLAG_READ. This maintains the current behaviour whilst allowing others to also set OBJ_PROP_FLAG_WRITE (or use the more convenient OBJ_PROP_FLAG_READWRITE) in the future (which will automatically install a setter). Other flags may be added later. Signed-off-by: Felipe Franciosi --- hw/acpi/ich9.c | 4 +- hw/acpi/pcihp.c | 7 +- hw/acpi/piix4.c | 12 +-- hw/isa/lpc_ich9.c | 4 +- hw/ppc/spapr_drc.c | 3 +- include/qom/object.h | 44 +++++++-- qom/object.c | 216 ++++++++++++++++++++++++++++++++++++++----- ui/console.c | 4 +- 8 files changed, 246 insertions(+), 48 deletions(-) diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c index 2034dd749e..742fb78226 100644 --- a/hw/acpi/ich9.c +++ b/hw/acpi/ich9.c @@ -454,12 +454,12 @@ void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs *pm, Error **errp) pm->s4_val = 2; object_property_add_uint32_ptr(obj, ACPI_PM_PROP_PM_IO_BASE, - &pm->pm_io_base, errp); + &pm->pm_io_base, OBJ_PROP_FLAG_READ, errp); object_property_add(obj, ACPI_PM_PROP_GPE0_BLK, "uint32", ich9_pm_get_gpe0_blk, NULL, NULL, pm, NULL); object_property_add_uint32_ptr(obj, ACPI_PM_PROP_GPE0_BLK_LEN, - &gpe0_len, errp); + &gpe0_len, OBJ_PROP_FLAG_READ, errp); object_property_add_bool(obj, "memory-hotplug-support", ich9_pm_get_memory_hotplug_support, ich9_pm_set_memory_hotplug_support, diff --git a/hw/acpi/pcihp.c b/hw/acpi/pcihp.c index 8413348a33..4dcef372bf 100644 --- a/hw/acpi/pcihp.c +++ b/hw/acpi/pcihp.c @@ -80,7 +80,8 @@ static void *acpi_set_bsel(PCIBus *bus, void *opaque) *bus_bsel = (*bsel_alloc)++; object_property_add_uint32_ptr(OBJECT(bus), ACPI_PCIHP_PROP_BSEL, - bus_bsel, &error_abort); + bus_bsel, OBJ_PROP_FLAG_READ, + &error_abort); } return bsel_alloc; @@ -373,9 +374,9 @@ void acpi_pcihp_init(Object *owner, AcpiPciHpState *s, PCIBus *root_bus, memory_region_add_subregion(address_space_io, s->io_base, &s->io); object_property_add_uint16_ptr(owner, ACPI_PCIHP_IO_BASE_PROP, &s->io_base, - &error_abort); + OBJ_PROP_FLAG_READ, &error_abort); object_property_add_uint16_ptr(owner, ACPI_PCIHP_IO_LEN_PROP, &s->io_len, - &error_abort); + OBJ_PROP_FLAG_READ, &error_abort); } const VMStateDescription vmstate_acpi_pcihp_pci_status = { diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c index 93aec2dd2c..fe05a3ce46 100644 --- a/hw/acpi/piix4.c +++ b/hw/acpi/piix4.c @@ -443,17 +443,17 @@ static void piix4_pm_add_propeties(PIIX4PMState *s) static const uint16_t sci_int = 9; object_property_add_uint8_ptr(OBJECT(s), ACPI_PM_PROP_ACPI_ENABLE_CMD, - &acpi_enable_cmd, NULL); + &acpi_enable_cmd, OBJ_PROP_FLAG_READ, NULL); object_property_add_uint8_ptr(OBJECT(s), ACPI_PM_PROP_ACPI_DISABLE_CMD, - &acpi_disable_cmd, NULL); + &acpi_disable_cmd, OBJ_PROP_FLAG_READ, NULL); object_property_add_uint32_ptr(OBJECT(s), ACPI_PM_PROP_GPE0_BLK, - &gpe0_blk, NULL); + &gpe0_blk, OBJ_PROP_FLAG_READ, NULL); object_property_add_uint32_ptr(OBJECT(s), ACPI_PM_PROP_GPE0_BLK_LEN, - &gpe0_blk_len, NULL); + &gpe0_blk_len, OBJ_PROP_FLAG_READ, NULL); object_property_add_uint16_ptr(OBJECT(s), ACPI_PM_PROP_SCI_INT, - &sci_int, NULL); + &sci_int, OBJ_PROP_FLAG_READ, NULL); object_property_add_uint32_ptr(OBJECT(s), ACPI_PM_PROP_PM_IO_BASE, - &s->io_base, NULL); + &s->io_base, OBJ_PROP_FLAG_READ, NULL); } static void piix4_pm_realize(PCIDevice *dev, Error **errp) diff --git a/hw/isa/lpc_ich9.c b/hw/isa/lpc_ich9.c index 17c292e306..99517c3946 100644 --- a/hw/isa/lpc_ich9.c +++ b/hw/isa/lpc_ich9.c @@ -645,9 +645,9 @@ static void ich9_lpc_add_properties(ICH9LPCState *lpc) ich9_lpc_get_sci_int, NULL, NULL, NULL, NULL); object_property_add_uint8_ptr(OBJECT(lpc), ACPI_PM_PROP_ACPI_ENABLE_CMD, - &acpi_enable_cmd, NULL); + &acpi_enable_cmd, OBJ_PROP_FLAG_READ, NULL); object_property_add_uint8_ptr(OBJECT(lpc), ACPI_PM_PROP_ACPI_DISABLE_CMD, - &acpi_disable_cmd, NULL); + &acpi_disable_cmd, OBJ_PROP_FLAG_READ, NULL); ich9_pm_add_properties(OBJECT(lpc), &lpc->pm, NULL); } diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c index 62f1a42592..bbd4bf35c7 100644 --- a/hw/ppc/spapr_drc.c +++ b/hw/ppc/spapr_drc.c @@ -553,7 +553,8 @@ static void spapr_dr_connector_instance_init(Object *obj) SpaprDrc *drc = SPAPR_DR_CONNECTOR(obj); SpaprDrcClass *drck = SPAPR_DR_CONNECTOR_GET_CLASS(drc); - object_property_add_uint32_ptr(obj, "id", &drc->id, NULL); + object_property_add_uint32_ptr(obj, "id", &drc->id, OBJ_PROP_FLAG_READ, + NULL); object_property_add(obj, "index", "uint32", prop_get_index, NULL, NULL, NULL, NULL); object_property_add(obj, "fdt", "struct", prop_get_fdt, diff --git a/include/qom/object.h b/include/qom/object.h index 128d00c77f..d2bfd76741 100644 --- a/include/qom/object.h +++ b/include/qom/object.h @@ -1579,65 +1579,93 @@ void object_class_property_add_tm(ObjectClass *klass, const char *name, void (*get)(Object *, struct tm *, Error **), Error **errp); +typedef enum { + /* Automatically add a getter to the property */ + OBJ_PROP_FLAG_READ = 1 << 0, + /* Automatically add a setter to the property */ + OBJ_PROP_FLAG_WRITE = 1 << 1, + /* Automatically add a getter and a setter to the property */ + OBJ_PROP_FLAG_READWRITE = (OBJ_PROP_FLAG_READ | OBJ_PROP_FLAG_WRITE), +} ObjectPropertyFlags; + /** * object_property_add_uint8_ptr: * @obj: the object to add a property to * @name: the name of the property * @v: pointer to value + * @flags: bitwise-or'd ObjectPropertyFlags * @errp: if an error occurs, a pointer to an area to store the error * * Add an integer property in memory. This function will add a * property of type 'uint8'. */ void object_property_add_uint8_ptr(Object *obj, const char *name, - const uint8_t *v, Error **errp); + const uint8_t *v, ObjectPropertyFlags flags, + Error **errp); void object_class_property_add_uint8_ptr(ObjectClass *klass, const char *name, - const uint8_t *v, Error **errp); + const uint8_t *v, + ObjectPropertyFlags flags, + Error **errp); /** * object_property_add_uint16_ptr: * @obj: the object to add a property to * @name: the name of the property * @v: pointer to value + * @flags: bitwise-or'd ObjectPropertyFlags * @errp: if an error occurs, a pointer to an area to store the error * * Add an integer property in memory. This function will add a * property of type 'uint16'. */ void object_property_add_uint16_ptr(Object *obj, const char *name, - const uint16_t *v, Error **errp); + const uint16_t *v, + ObjectPropertyFlags flags, + Error **errp); void object_class_property_add_uint16_ptr(ObjectClass *klass, const char *name, - const uint16_t *v, Error **errp); + const uint16_t *v, + ObjectPropertyFlags flags, + Error **errp); /** * object_property_add_uint32_ptr: * @obj: the object to add a property to * @name: the name of the property * @v: pointer to value + * @flags: bitwise-or'd ObjectPropertyFlags * @errp: if an error occurs, a pointer to an area to store the error * * Add an integer property in memory. This function will add a * property of type 'uint32'. */ void object_property_add_uint32_ptr(Object *obj, const char *name, - const uint32_t *v, Error **errp); + const uint32_t *v, + ObjectPropertyFlags flags, + Error **errp); void object_class_property_add_uint32_ptr(ObjectClass *klass, const char *name, - const uint32_t *v, Error **errp); + const uint32_t *v, + ObjectPropertyFlags flags, + Error **errp); /** * object_property_add_uint64_ptr: * @obj: the object to add a property to * @name: the name of the property * @v: pointer to value + * @flags: bitwise-or'd ObjectPropertyFlags * @errp: if an error occurs, a pointer to an area to store the error * * Add an integer property in memory. This function will add a * property of type 'uint64'. */ void object_property_add_uint64_ptr(Object *obj, const char *name, - const uint64_t *v, Error **Errp); + const uint64_t *v, + ObjectPropertyFlags flags, + Error **Errp); void object_class_property_add_uint64_ptr(ObjectClass *klass, const char *name, - const uint64_t *v, Error **Errp); + const uint64_t *v, + ObjectPropertyFlags flags, + Error **Errp); /** * object_property_add_alias: diff --git a/qom/object.c b/qom/object.c index d51b57fba1..77c2682296 100644 --- a/qom/object.c +++ b/qom/object.c @@ -2326,6 +2326,22 @@ static void property_get_uint8_ptr(Object *obj, Visitor *v, const char *name, visit_type_uint8(v, name, &value, errp); } +static void property_set_uint8_ptr(Object *obj, Visitor *v, const char *name, + void *opaque, Error **errp) +{ + uint8_t *field = opaque; + uint8_t value; + Error *local_err = NULL; + + visit_type_uint8(v, name, &value, &local_err); + if (local_err) { + error_propagate(errp, local_err); + return; + } + + *field = value; +} + static void property_get_uint16_ptr(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { @@ -2333,6 +2349,22 @@ static void property_get_uint16_ptr(Object *obj, Visitor *v, const char *name, visit_type_uint16(v, name, &value, errp); } +static void property_set_uint16_ptr(Object *obj, Visitor *v, const char *name, + void *opaque, Error **errp) +{ + uint16_t *field = opaque; + uint16_t value; + Error *local_err = NULL; + + visit_type_uint16(v, name, &value, &local_err); + if (local_err) { + error_propagate(errp, local_err); + return; + } + + *field = value; +} + static void property_get_uint32_ptr(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { @@ -2340,6 +2372,22 @@ static void property_get_uint32_ptr(Object *obj, Visitor *v, const char *name, visit_type_uint32(v, name, &value, errp); } +static void property_set_uint32_ptr(Object *obj, Visitor *v, const char *name, + void *opaque, Error **errp) +{ + uint32_t *field = opaque; + uint32_t value; + Error *local_err = NULL; + + visit_type_uint32(v, name, &value, &local_err); + if (local_err) { + error_propagate(errp, local_err); + return; + } + + *field = value; +} + static void property_get_uint64_ptr(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { @@ -2347,60 +2395,180 @@ static void property_get_uint64_ptr(Object *obj, Visitor *v, const char *name, visit_type_uint64(v, name, &value, errp); } +static void property_set_uint64_ptr(Object *obj, Visitor *v, const char *name, + void *opaque, Error **errp) +{ + uint64_t *field = opaque; + uint64_t value; + Error *local_err = NULL; + + visit_type_uint64(v, name, &value, &local_err); + if (local_err) { + error_propagate(errp, local_err); + return; + } + + *field = value; +} + void object_property_add_uint8_ptr(Object *obj, const char *name, - const uint8_t *v, Error **errp) + const uint8_t *v, + ObjectPropertyFlags flags, + Error **errp) { - object_property_add(obj, name, "uint8", property_get_uint8_ptr, - NULL, NULL, (void *)v, errp); + ObjectPropertyAccessor *getter = NULL; + ObjectPropertyAccessor *setter = NULL; + + if ((flags & OBJ_PROP_FLAG_READ) == OBJ_PROP_FLAG_READ) { + getter = property_get_uint8_ptr; + } + + if ((flags & OBJ_PROP_FLAG_WRITE) == OBJ_PROP_FLAG_WRITE) { + setter = property_set_uint8_ptr; + } + + object_property_add(obj, name, "uint8", + getter, setter, NULL, (void *)v, errp); } void object_class_property_add_uint8_ptr(ObjectClass *klass, const char *name, - const uint8_t *v, Error **errp) + const uint8_t *v, + ObjectPropertyFlags flags, + Error **errp) { - object_class_property_add(klass, name, "uint8", property_get_uint8_ptr, - NULL, NULL, (void *)v, errp); + ObjectPropertyAccessor *getter = NULL; + ObjectPropertyAccessor *setter = NULL; + + if ((flags & OBJ_PROP_FLAG_READ) == OBJ_PROP_FLAG_READ) { + getter = property_get_uint8_ptr; + } + + if ((flags & OBJ_PROP_FLAG_WRITE) == OBJ_PROP_FLAG_WRITE) { + setter = property_set_uint8_ptr; + } + + object_class_property_add(klass, name, "uint8", + getter, setter, NULL, (void *)v, errp); } void object_property_add_uint16_ptr(Object *obj, const char *name, - const uint16_t *v, Error **errp) + const uint16_t *v, + ObjectPropertyFlags flags, + Error **errp) { - object_property_add(obj, name, "uint16", property_get_uint16_ptr, - NULL, NULL, (void *)v, errp); + ObjectPropertyAccessor *getter = NULL; + ObjectPropertyAccessor *setter = NULL; + + if ((flags & OBJ_PROP_FLAG_READ) == OBJ_PROP_FLAG_READ) { + getter = property_get_uint16_ptr; + } + + if ((flags & OBJ_PROP_FLAG_WRITE) == OBJ_PROP_FLAG_WRITE) { + setter = property_set_uint16_ptr; + } + + object_property_add(obj, name, "uint16", + getter, setter, NULL, (void *)v, errp); } void object_class_property_add_uint16_ptr(ObjectClass *klass, const char *name, - const uint16_t *v, Error **errp) + const uint16_t *v, + ObjectPropertyFlags flags, + Error **errp) { - object_class_property_add(klass, name, "uint16", property_get_uint16_ptr, - NULL, NULL, (void *)v, errp); + ObjectPropertyAccessor *getter = NULL; + ObjectPropertyAccessor *setter = NULL; + + if ((flags & OBJ_PROP_FLAG_READ) == OBJ_PROP_FLAG_READ) { + getter = property_get_uint16_ptr; + } + + if ((flags & OBJ_PROP_FLAG_WRITE) == OBJ_PROP_FLAG_WRITE) { + setter = property_set_uint16_ptr; + } + + object_class_property_add(klass, name, "uint16", + getter, setter, NULL, (void *)v, errp); } void object_property_add_uint32_ptr(Object *obj, const char *name, - const uint32_t *v, Error **errp) + const uint32_t *v, + ObjectPropertyFlags flags, + Error **errp) { - object_property_add(obj, name, "uint32", property_get_uint32_ptr, - NULL, NULL, (void *)v, errp); + ObjectPropertyAccessor *getter = NULL; + ObjectPropertyAccessor *setter = NULL; + + if ((flags & OBJ_PROP_FLAG_READ) == OBJ_PROP_FLAG_READ) { + getter = property_get_uint32_ptr; + } + + if ((flags & OBJ_PROP_FLAG_WRITE) == OBJ_PROP_FLAG_WRITE) { + setter = property_set_uint32_ptr; + } + + object_property_add(obj, name, "uint32", + getter, setter, NULL, (void *)v, errp); } void object_class_property_add_uint32_ptr(ObjectClass *klass, const char *name, - const uint32_t *v, Error **errp) + const uint32_t *v, + ObjectPropertyFlags flags, + Error **errp) { - object_class_property_add(klass, name, "uint32", property_get_uint32_ptr, - NULL, NULL, (void *)v, errp); + ObjectPropertyAccessor *getter = NULL; + ObjectPropertyAccessor *setter = NULL; + + if ((flags & OBJ_PROP_FLAG_READ) == OBJ_PROP_FLAG_READ) { + getter = property_get_uint32_ptr; + } + + if ((flags & OBJ_PROP_FLAG_WRITE) == OBJ_PROP_FLAG_WRITE) { + setter = property_set_uint32_ptr; + } + + object_class_property_add(klass, name, "uint32", + getter, setter, NULL, (void *)v, errp); } void object_property_add_uint64_ptr(Object *obj, const char *name, - const uint64_t *v, Error **errp) + const uint64_t *v, + ObjectPropertyFlags flags, + Error **errp) { - object_property_add(obj, name, "uint64", property_get_uint64_ptr, - NULL, NULL, (void *)v, errp); + ObjectPropertyAccessor *getter = NULL; + ObjectPropertyAccessor *setter = NULL; + + if ((flags & OBJ_PROP_FLAG_READ) == OBJ_PROP_FLAG_READ) { + getter = property_get_uint64_ptr; + } + + if ((flags & OBJ_PROP_FLAG_WRITE) == OBJ_PROP_FLAG_WRITE) { + setter = property_set_uint64_ptr; + } + + object_property_add(obj, name, "uint64", + getter, setter, NULL, (void *)v, errp); } void object_class_property_add_uint64_ptr(ObjectClass *klass, const char *name, - const uint64_t *v, Error **errp) + const uint64_t *v, + ObjectPropertyFlags flags, + Error **errp) { - object_class_property_add(klass, name, "uint64", property_get_uint64_ptr, - NULL, NULL, (void *)v, errp); + ObjectPropertyAccessor *getter = NULL; + ObjectPropertyAccessor *setter = NULL; + + if ((flags & OBJ_PROP_FLAG_READ) == OBJ_PROP_FLAG_READ) { + getter = property_get_uint64_ptr; + } + + if ((flags & OBJ_PROP_FLAG_WRITE) == OBJ_PROP_FLAG_WRITE) { + setter = property_set_uint64_ptr; + } + + object_class_property_add(klass, name, "uint64", + getter, setter, NULL, (void *)v, errp); } typedef struct { diff --git a/ui/console.c b/ui/console.c index 82d1ddac9c..bcbe65e696 100644 --- a/ui/console.c +++ b/ui/console.c @@ -1296,8 +1296,8 @@ static QemuConsole *new_console(DisplayState *ds, console_type_t console_type, object_property_allow_set_link, OBJ_PROP_LINK_STRONG, &error_abort); - object_property_add_uint32_ptr(obj, "head", - &s->head, &error_abort); + object_property_add_uint32_ptr(obj, "head", &s->head, + OBJ_PROP_FLAG_READ, &error_abort); if (!active_console || ((active_console->console_type != GRAPHIC_CONSOLE) && (console_type == GRAPHIC_CONSOLE))) { From patchwork Thu Dec 19 18:02:33 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Felipe Franciosi X-Patchwork-Id: 11304195 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6D6246C1 for ; Thu, 19 Dec 2019 18:09:55 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 416D1227BF for ; Thu, 19 Dec 2019 18:09:55 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=nutanix.com header.i=@nutanix.com header.b="D8zdKLya" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 416D1227BF Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nutanix.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Received: from localhost ([::1]:46106 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ii0FG-0004hY-Dq for patchwork-qemu-devel@patchwork.kernel.org; Thu, 19 Dec 2019 13:09:54 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:39089) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ii08E-00042l-R9 for qemu-devel@nongnu.org; Thu, 19 Dec 2019 13:02:40 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ii08D-0002Ph-1l for qemu-devel@nongnu.org; Thu, 19 Dec 2019 13:02:38 -0500 Received: from mx0b-002c1b01.pphosted.com ([148.163.155.12]:16562) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ii08C-0002Mv-QF for qemu-devel@nongnu.org; Thu, 19 Dec 2019 13:02:36 -0500 Received: from pps.filterd (m0127843.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xBJHuTSC007105; Thu, 19 Dec 2019 10:02:36 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=proofpoint20171006; bh=S6WqPn7brfWG3Z6l7/S1xkt2Z1zZeGJMMIdjylrfXpY=; b=D8zdKLya7cu48LMlSJ8nOAGMLp2GDETJFn7xVyC7nJsP5kHuSLDizVd5AaRKNIeaTVyc 1LxglO1DA5kQJt9CTXD1VPVp7s7U860xclwq55rnikNpvaVSJbSydj3vz9rBNEaFxCyH xBRo+1U30Dn2S6B6WDGITrNt+8xY25pOV3pDztyUpIvYDKkKWaTB1cdQOZ+2JvtPFtzm mVGi0yn6dLtBac9df3BTk1r5gg+jpnxFmU4glEyrXTZYlWXnLPm1jLwQGyrbZCU/Km3O eZcipQb0ENIfBA9QJj71m7FcuQf+8CkTZOo0CPQhLxu6wVDZb32Wq8ypxcyxIV8460VV MA== Received: from nam04-co1-obe.outbound.protection.outlook.com (mail-co1nam04lp2058.outbound.protection.outlook.com [104.47.45.58]) by mx0b-002c1b01.pphosted.com with ESMTP id 2wvxqqbe8p-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 19 Dec 2019 10:02:35 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oGF9A1u/tyZ1XsXAdxsF2XxiLHgShzZxDig1VhqH1sskTxRlVdw8ABbCfNPvPIEKC8ZNLZCRdrhC/dizZAHZcNHGLcli18toB/q6gisMHAFeJAquzA6IjZ9jkW+eX6fBJzoLSgHDRlkwuKqidw81pbiVvv9gG1borQhLxBhFL3kZFPU8e35d9rcXlfSC3kRA4GXDhM+bzC6chVKEOh5rdUlVtkIsCBdzrc363uAXx1iVWWVB4HeJOuEfyF6+EbDzTQ2FMdiqeMElgwcCe0RJO/zEi8/V2NFzeCLQjC+2twJW82TABkHz1zoGm6pRNtmpe5nLc+mniJShrQFxxWNtsg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=S6WqPn7brfWG3Z6l7/S1xkt2Z1zZeGJMMIdjylrfXpY=; b=kxRo0qUTB/vY1y06RpJ0tzwEUVo6fnJSWJHx+Rfb58utEKwM4rJgmPS262Gu+Q/rE/qWMwBKkuAYFGugLKq7d9OZegw3fRNHzdR05vgCtgk1Df171sWA4PN8vvYFWFfoOGg2NsTya6HI0GiGj1EblgzVWoVNelzJ4NbjOX5y4iYlxfW8SiYjfeZInVNP3pUjqh255DJ9e88VrBjgy6BYww8hF+DTmckHiPse2Hc9hGksveo1DUhw8hLRSCO4XJ5s/+0bngzWxQbrptJwl+Y/21EEjvMY7Nu8TqgSgEqVS+DB7XQ18EuQ4IrK8Ml+3U18XCG0C0R/BEP+vDOLQWtjzw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none Received: from MWHPR02MB2656.namprd02.prod.outlook.com (10.168.206.142) by MWHPR02MB2303.namprd02.prod.outlook.com (10.168.245.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2559.14; Thu, 19 Dec 2019 18:02:34 +0000 Received: from MWHPR02MB2656.namprd02.prod.outlook.com ([fe80::c8f8:4820:a24c:3029]) by MWHPR02MB2656.namprd02.prod.outlook.com ([fe80::c8f8:4820:a24c:3029%10]) with mapi id 15.20.2559.012; Thu, 19 Dec 2019 18:02:34 +0000 Received: from nutanix.com (82.9.225.166) by AM4PR07CA0004.eurprd07.prod.outlook.com (2603:10a6:205:1::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2581.4 via Frontend Transport; Thu, 19 Dec 2019 18:02:31 +0000 From: Felipe Franciosi To: Marc-Andre Lureau , Phillipe Mathieu-Daude , Stefan Hajnoczi , Eduardo Habkost , Markus Armbruster , Alexey Kardashevskiy Subject: [PATCH v4 2/4] ich9: fix getter type for sci_int property Thread-Topic: [PATCH v4 2/4] ich9: fix getter type for sci_int property Thread-Index: AQHVtpZ9j2kAYYTqW0eR9OoUIyOwdg== Date: Thu, 19 Dec 2019 18:02:33 +0000 Message-ID: <20191219180205.25191-3-felipe@nutanix.com> References: <20191219180205.25191-1-felipe@nutanix.com> In-Reply-To: <20191219180205.25191-1-felipe@nutanix.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM4PR07CA0004.eurprd07.prod.outlook.com (2603:10a6:205:1::17) To MWHPR02MB2656.namprd02.prod.outlook.com (2603:10b6:300:45::14) x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.20.1 x-originating-ip: [82.9.225.166] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 8d153c7b-d81a-4196-c50f-08d784ad9f85 x-ms-traffictypediagnostic: MWHPR02MB2303: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-proofpoint-crosstenant: true x-ms-oob-tlc-oobclassifiers: OLM:4303; x-forefront-prvs: 0256C18696 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(396003)(376002)(346002)(39860400002)(136003)(366004)(189003)(199004)(66476007)(5660300002)(16526019)(186003)(66446008)(26005)(956004)(2906002)(4326008)(36756003)(8886007)(52116002)(1076003)(7696005)(81166006)(8936002)(81156014)(86362001)(8676002)(478600001)(66946007)(2616005)(64756008)(55016002)(107886003)(71200400001)(110136005)(66556008)(54906003)(316002)(64030200001); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR02MB2303; H:MWHPR02MB2656.namprd02.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: nutanix.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: UVnbDx2n8wATU1tJxkjNvF7uYcisDg0CyxR+IndOnA1zhEt5YYhp7nDlrntm0RZ3KoSx8MTc/3q60MiPKKaybTNdS1JBe7CXpwkWiZHM6Bpb9sF7wkfbnO/ue9lxuOJWueK/LxgTakd4dtW7sBppnTKtYlTOSMTj4MQY1GJizEnXeqfJIEkx2tM0C4i/AN5mIOWAu68VDrK32ESjZ0AMN5MyJycjfthq3oHogKtEHfq2r0P3HaichT8iBCDFP7g9vyJ40jMjSi9s/9193E20jMWSxuH1Jk8e0ocBBYr4JjR+066RNNEnsqmE6ac6XEEA5EOJeCpFsbOxDtROtgiQ0mrUpm0U04j5EkBH7FBZv+Ra6sro8YGDn2nhKh5iosGhNYAyjHP2WokaW/eAWMq0w8+miDZ73TWQ4w1O4dvSvb3a/JJkMqJzMpvsfGfGCQA2jYoBhP1v5caUgtytN8ND/3ECs9qeqXHZ1DGBnV/Du5+2D2Pqy1zjdtizrE34LI3A MIME-Version: 1.0 X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8d153c7b-d81a-4196-c50f-08d784ad9f85 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Dec 2019 18:02:34.0125 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 5AMnxRkCP7KaMyWfSVAJuNAWyVWrjg/08WIYFcrGjossiMkdjld7rBce3oYeNwiAkEy9Uh4OaEggpmMjj3IVkMc7MlgDNt1RKT1znEduGcw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR02MB2303 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-12-19_04:2019-12-17,2019-12-19 signatures=0 X-Proofpoint-Spam-Reason: safe X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.155.12 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "qemu-devel@nongnu.org" , Felipe Franciosi Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" When QOM APIs were added to ich9 in 6f1426ab, the getter for sci_int was written using uint32_t. However, the object property is uint8_t. This fixes the getter for correctness. Signed-off-by: Felipe Franciosi --- hw/isa/lpc_ich9.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/hw/isa/lpc_ich9.c b/hw/isa/lpc_ich9.c index 99517c3946..9f4e00dddd 100644 --- a/hw/isa/lpc_ich9.c +++ b/hw/isa/lpc_ich9.c @@ -631,9 +631,7 @@ static void ich9_lpc_get_sci_int(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { ICH9LPCState *lpc = ICH9_LPC_DEVICE(obj); - uint32_t value = lpc->sci_gsi; - - visit_type_uint32(v, name, &value, errp); + visit_type_uint8(v, name, &lpc->sci_gsi, errp); } static void ich9_lpc_add_properties(ICH9LPCState *lpc) @@ -641,7 +639,7 @@ static void ich9_lpc_add_properties(ICH9LPCState *lpc) static const uint8_t acpi_enable_cmd = ICH9_APM_ACPI_ENABLE; static const uint8_t acpi_disable_cmd = ICH9_APM_ACPI_DISABLE; - object_property_add(OBJECT(lpc), ACPI_PM_PROP_SCI_INT, "uint32", + object_property_add(OBJECT(lpc), ACPI_PM_PROP_SCI_INT, "uint8", ich9_lpc_get_sci_int, NULL, NULL, NULL, NULL); object_property_add_uint8_ptr(OBJECT(lpc), ACPI_PM_PROP_ACPI_ENABLE_CMD, From patchwork Thu Dec 19 18:02:36 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Felipe Franciosi X-Patchwork-Id: 11304189 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 52CB56C1 for ; Thu, 19 Dec 2019 18:04:14 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 24F0C20716 for ; Thu, 19 Dec 2019 18:04:14 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=nutanix.com header.i=@nutanix.com header.b="ppsK6RUJ" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 24F0C20716 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nutanix.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Received: from localhost ([::1]:45980 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ii09k-0006HF-IS for patchwork-qemu-devel@patchwork.kernel.org; Thu, 19 Dec 2019 13:04:12 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:39440) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ii08H-000467-Ck for qemu-devel@nongnu.org; Thu, 19 Dec 2019 13:02:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ii08F-0002dZ-Uc for qemu-devel@nongnu.org; Thu, 19 Dec 2019 13:02:41 -0500 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]:41878) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ii08F-0002Yn-Jq for qemu-devel@nongnu.org; Thu, 19 Dec 2019 13:02:39 -0500 Received: from pps.filterd (m0127840.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xBJHuNb7016852; Thu, 19 Dec 2019 10:02:37 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=proofpoint20171006; bh=FrN/3cE/GL71upbprZOwMng6lo6UJ/TnJrSz3CAHChQ=; b=ppsK6RUJZ/BzVz64TfuD+6MTCfBQcjVMgAGWYK3B9Wld1B5WClyfVpVY9Dz7skfYT3pC SuCBdLBimxmNHpjgYCuLMbmCDVJysAV2WDetm0LQ0Nz9XVwAk4osAjgctxiSkOY9SRBv HCLGO2lUUUd4hYwje0L8icWKBHQBqupuWpM27spun/O126SQQfK3nKuhoBhaXwuzwRu8 u2JkBq+0MSS8WwisQjL4K8bApxo2evO0c+Q+FAlId4i7nWPeYm+wFjcodhk6jB6yLtrG ZY4FZewF0oY/nFMh4ZwZ54FbKGJ70r8vZQV7AF91WrNBKzcci4HOz0Dbs9rZc2SzpRl6 CQ== Received: from nam04-co1-obe.outbound.protection.outlook.com (mail-co1nam04lp2057.outbound.protection.outlook.com [104.47.45.57]) by mx0a-002c1b01.pphosted.com with ESMTP id 2wvvy0bn3n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 19 Dec 2019 10:02:37 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GyzCJSlxF6uQD8doSLek7Ha7eOAOUcUYP7+0Jtuqql7aNa5YbZOaGyveZDrKUmxQJ5HlhfHyV02vFUOSAmzMbpyrcEddN+GGLbQhF5EDMq63Dj2wFMTsrYX9wzRN/UI4yvWOPDak3cAjO7MUtZxwUXwu4G21cM2dNqxOuLBrp88ZgHOFR/blq3sLnSYfa1CXcvSMoFf0ryraAWGKswFKFZIhJWW30TBfXj4ad1DL8g78VBqVReqQ2lHcVnbKGSvn0MK6Q5GEmMdx4BRCrnqCik3Ocp241JuEPhcw3XXSGvNAaJYFyDwyh5FSnbcQCgCLaRAHpTdQi2KU0MV8g7xpOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FrN/3cE/GL71upbprZOwMng6lo6UJ/TnJrSz3CAHChQ=; b=nvTAL0yfU08WTlAoxEjZD4cULqc7ZQATo9E8ycuMddGrECNnk8nzLBOPmGrhqiHSrPLRIDfNsbCqEaVJYqSg9nUISohBDwCxL5YH+rxSphHAJ74qmQRrXK6J6sgeIX5gcSud/gtXcqUMPc/4IalO/yL92kNqqUbxuqTBc2afa7Rfh6+ETb3T8RyGBJbIlxUnJoXgKL1HyWvT7puHp/NAURbsmJv31Kow0qZXK4ZPPO0Tyuj1uujgxVpBu24WMAOo6T7mA2VqZBRMjeS71qcN0CL4xXQWSuVrR1snqhjOoCM4iC078o5Wqs86p8BPpjLj8x4sw3B3+Uk58+Mkw4gn5w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none Received: from MWHPR02MB2656.namprd02.prod.outlook.com (10.168.206.142) by MWHPR02MB2303.namprd02.prod.outlook.com (10.168.245.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2559.14; Thu, 19 Dec 2019 18:02:36 +0000 Received: from MWHPR02MB2656.namprd02.prod.outlook.com ([fe80::c8f8:4820:a24c:3029]) by MWHPR02MB2656.namprd02.prod.outlook.com ([fe80::c8f8:4820:a24c:3029%10]) with mapi id 15.20.2559.012; Thu, 19 Dec 2019 18:02:36 +0000 Received: from nutanix.com (82.9.225.166) by AM4PR07CA0004.eurprd07.prod.outlook.com (2603:10a6:205:1::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2581.4 via Frontend Transport; Thu, 19 Dec 2019 18:02:34 +0000 From: Felipe Franciosi To: Marc-Andre Lureau , Phillipe Mathieu-Daude , Stefan Hajnoczi , Eduardo Habkost , Markus Armbruster , Alexey Kardashevskiy Subject: [PATCH v4 3/4] ich9: Simplify ich9_lpc_initfn Thread-Topic: [PATCH v4 3/4] ich9: Simplify ich9_lpc_initfn Thread-Index: AQHVtpZ+XRpRLxgYrk+jiKZGoI3x4Q== Date: Thu, 19 Dec 2019 18:02:36 +0000 Message-ID: <20191219180205.25191-4-felipe@nutanix.com> References: <20191219180205.25191-1-felipe@nutanix.com> In-Reply-To: <20191219180205.25191-1-felipe@nutanix.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM4PR07CA0004.eurprd07.prod.outlook.com (2603:10a6:205:1::17) To MWHPR02MB2656.namprd02.prod.outlook.com (2603:10b6:300:45::14) x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.20.1 x-originating-ip: [82.9.225.166] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: ddb5fec0-fdf6-49f1-07e4-08d784ada107 x-ms-traffictypediagnostic: MWHPR02MB2303: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-proofpoint-crosstenant: true x-ms-oob-tlc-oobclassifiers: OLM:4303; x-forefront-prvs: 0256C18696 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(396003)(376002)(346002)(39860400002)(136003)(366004)(189003)(199004)(66476007)(5660300002)(16526019)(186003)(66446008)(26005)(956004)(2906002)(4326008)(36756003)(8886007)(52116002)(1076003)(7696005)(81166006)(8936002)(81156014)(86362001)(8676002)(478600001)(66946007)(2616005)(64756008)(55016002)(107886003)(71200400001)(110136005)(66556008)(54906003)(316002)(64030200001); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR02MB2303; H:MWHPR02MB2656.namprd02.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: nutanix.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: gId7gTAWPBqM2CFI5z8IG7e0/W3jyvCNKaRzbNEd1k8rsgSGkBPvvorj9s/vRsvwqJVovRHNRHHZkWW2PpGb54+U/0c6WwCNCttizKL+eWxbwtAwoc9c2GxxvxO8M1dBms1osAsMwqNdQsfTyvytW+y3sYtk4770gSaGKOcJU0a+5sLjQpCF9PDd7q91eeQCQ9tyPnGUiy/5/GCXi0/zm1vRugogZpBNja+WaLbR+gdhDVJVnPFWe6GG7uzyLFDuGy6Pn24rowZ9+bFcTuNSnIZR2r3bJOgmZQjt/iFT/baP9K6yCmz6MEpv5k9PWnWjZ54jhl6yj/VOR2FInsIceoexG8IWuzCbv1dGzisAUF+59tOikP4P+7R8lc+Bdzgvo0672MlQjOWCfbgMFyGqDTVZzMUSZNSWN5PMD1N0gLYcLrGV2WdfPpyOa6sbX8+iLMKF1TFDPaijY8S4/nAP4SsdU1+5+D1Q95zppEZzlZn1uLdbie5dk7fpK80PiVzB MIME-Version: 1.0 X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: ddb5fec0-fdf6-49f1-07e4-08d784ada107 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Dec 2019 18:02:36.5534 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: dB9L9uPdHj6DJWGI+w0eoHFmkYHdHRhJGSolCIOp/1YsvzLLgad7DVwPv/7Wg+7spXcAECkqvvkAbMCcZl+zVXxTntuAMhlsxGFTzYaMeDk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR02MB2303 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-12-19_06:2019-12-17,2019-12-19 signatures=0 X-Proofpoint-Spam-Reason: safe X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.151.68 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "qemu-devel@nongnu.org" , Felipe Franciosi Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" Currently, ich9_lpc_initfn simply serves as a caller to ich9_lpc_add_properties. This simplifies the code a bit by eliminating ich9_lpc_add_properties altogether and executing its logic in the parent object initialiser function. Signed-off-by: Felipe Franciosi Reviewed-by: Philippe Mathieu-Daudé --- hw/isa/lpc_ich9.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/hw/isa/lpc_ich9.c b/hw/isa/lpc_ich9.c index 9f4e00dddd..c40bb3c420 100644 --- a/hw/isa/lpc_ich9.c +++ b/hw/isa/lpc_ich9.c @@ -634,12 +634,14 @@ static void ich9_lpc_get_sci_int(Object *obj, Visitor *v, const char *name, visit_type_uint8(v, name, &lpc->sci_gsi, errp); } -static void ich9_lpc_add_properties(ICH9LPCState *lpc) +static void ich9_lpc_initfn(Object *obj) { + ICH9LPCState *lpc = ICH9_LPC_DEVICE(obj); + static const uint8_t acpi_enable_cmd = ICH9_APM_ACPI_ENABLE; static const uint8_t acpi_disable_cmd = ICH9_APM_ACPI_DISABLE; - object_property_add(OBJECT(lpc), ACPI_PM_PROP_SCI_INT, "uint8", + object_property_add(obj, ACPI_PM_PROP_SCI_INT, "uint8", ich9_lpc_get_sci_int, NULL, NULL, NULL, NULL); object_property_add_uint8_ptr(OBJECT(lpc), ACPI_PM_PROP_ACPI_ENABLE_CMD, @@ -647,14 +649,7 @@ static void ich9_lpc_add_properties(ICH9LPCState *lpc) object_property_add_uint8_ptr(OBJECT(lpc), ACPI_PM_PROP_ACPI_DISABLE_CMD, &acpi_disable_cmd, OBJ_PROP_FLAG_READ, NULL); - ich9_pm_add_properties(OBJECT(lpc), &lpc->pm, NULL); -} - -static void ich9_lpc_initfn(Object *obj) -{ - ICH9LPCState *lpc = ICH9_LPC_DEVICE(obj); - - ich9_lpc_add_properties(lpc); + ich9_pm_add_properties(obj, &lpc->pm, NULL); } static void ich9_lpc_realize(PCIDevice *d, Error **errp) From patchwork Thu Dec 19 18:02:39 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Felipe Franciosi X-Patchwork-Id: 11304197 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D7A9214F6 for ; Thu, 19 Dec 2019 18:11:28 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 9BA14227BF for ; Thu, 19 Dec 2019 18:11:28 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=nutanix.com header.i=@nutanix.com header.b="FQ/NNOrF" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9BA14227BF Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nutanix.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Received: from localhost ([::1]:46156 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ii0Gl-0007CO-Iu for patchwork-qemu-devel@patchwork.kernel.org; Thu, 19 Dec 2019 13:11:27 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:39887) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ii08L-0004B7-9Q for qemu-devel@nongnu.org; Thu, 19 Dec 2019 13:02:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ii08I-0002rr-OA for qemu-devel@nongnu.org; Thu, 19 Dec 2019 13:02:45 -0500 Received: from mx0b-002c1b01.pphosted.com ([148.163.155.12]:15958) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ii08I-0002oD-9x for qemu-devel@nongnu.org; Thu, 19 Dec 2019 13:02:42 -0500 Received: from pps.filterd (m0127844.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xBJHu3SK028342; Thu, 19 Dec 2019 10:02:41 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=proofpoint20171006; bh=6MIvXRgRg64ov1+HUKmGnGiY5PTL2xPbI7T5TfWvlag=; b=FQ/NNOrFTRMbOhdi9rekElxZTTtr34VsQTCqzkJ3M2rJF3dQLKrLSiEHD6HOUmFHEoS5 X6wZDVHYjYjetrAurWrhAd6p4S9QK2M38Uals7Yd8mNK+6NqOoknHORhI6yqloEV78tk SwSYsuSS/uR8UsFKG2SMipsfwnqPtT05EJy7K32JGS4k9FusjeXq4Rb8+pNDSZJXHdKy o7VbnyJ7c2ALj/4KmDSX/a6hSnIpyiM7Ml9VZQ7nvT2Vu3xvcruf3iqVCcelNiDpSCLD isDRZcWvBZSa7of8JDko5ByGCib48a7P8yYDVKjiESYznf7Kva+F9zLHWbUCmmoBNlcf Jw== Received: from nam04-co1-obe.outbound.protection.outlook.com (mail-co1nam04lp2052.outbound.protection.outlook.com [104.47.45.52]) by mx0b-002c1b01.pphosted.com with ESMTP id 2ww056ka1v-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 19 Dec 2019 10:02:41 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=js5e7SzfIcmkllkx2g+epVEjpg1QUlouQra7BrOjej3F5EeSQ01KJ7h7Dc6gDjbV2J36jKKxPPe2gNIW/lAeP6TADm2QYvKmzSXPUqNR7loVPJmh/Ehkwj11pntRDeBnx1ZQJkTA8mIZGD/L0uRVyDrDqTFbWSpfIryke+0ZskXWalAqHGsiPQaG3XH+N3x/gV7MQgLYkcI9wxM17deIXDwYalW2qqf7KZ1DFlQ/lICRpthfgjSPMUptjlGyNb5zaoKQ3pmjsG+DLsEnr8UvPZiCK8aTf95oetjDl7Z1toMdC+pCjpnqfyyi8yveL98jlTZ8RqD8TUVfYhJtCm7TrA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6MIvXRgRg64ov1+HUKmGnGiY5PTL2xPbI7T5TfWvlag=; b=k9FDQTF9LRZUqnZ3xlX/xQEK7UVADqJUZEV9Sf4pI2AxotmtAkRtDSQF+6ogiGfLHZuRs9j42+NMb6vFEHtogIiC0XiFoJFMnnmAXJmNwTCNdqu4Lzmn/mvbVugZ0yb/N9VSaILH7yh2lvkAbQaF4VnwxJ07feoGQjLovM/CVkjuEmSRfLMliHizMf83amPW6D0GLhpK53hs2+ErE6tVBh/bCCRntkhIjwZ9yt3cureLGEgVHjFbsIi5aIFmlHiFZB/kxsJeAzRWL77EIQabUVF1fkbDw9vvM07TMCoFXRejrLn0So7SvnMY1k96FTHx27x2/m5f3gY+HPU6tu9+sA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none Received: from MWHPR02MB2656.namprd02.prod.outlook.com (10.168.206.142) by MWHPR02MB2303.namprd02.prod.outlook.com (10.168.245.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2559.14; Thu, 19 Dec 2019 18:02:39 +0000 Received: from MWHPR02MB2656.namprd02.prod.outlook.com ([fe80::c8f8:4820:a24c:3029]) by MWHPR02MB2656.namprd02.prod.outlook.com ([fe80::c8f8:4820:a24c:3029%10]) with mapi id 15.20.2559.012; Thu, 19 Dec 2019 18:02:39 +0000 Received: from nutanix.com (82.9.225.166) by AM4PR07CA0004.eurprd07.prod.outlook.com (2603:10a6:205:1::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2581.4 via Frontend Transport; Thu, 19 Dec 2019 18:02:36 +0000 From: Felipe Franciosi To: Marc-Andre Lureau , Phillipe Mathieu-Daude , Stefan Hajnoczi , Eduardo Habkost , Markus Armbruster , Alexey Kardashevskiy Subject: [PATCH v4 4/4] qom/object: Use common get/set uint helpers Thread-Topic: [PATCH v4 4/4] qom/object: Use common get/set uint helpers Thread-Index: AQHVtpaAopOlnnSNsEm5boAN01DKxg== Date: Thu, 19 Dec 2019 18:02:39 +0000 Message-ID: <20191219180205.25191-5-felipe@nutanix.com> References: <20191219180205.25191-1-felipe@nutanix.com> In-Reply-To: <20191219180205.25191-1-felipe@nutanix.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM4PR07CA0004.eurprd07.prod.outlook.com (2603:10a6:205:1::17) To MWHPR02MB2656.namprd02.prod.outlook.com (2603:10b6:300:45::14) x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.20.1 x-originating-ip: [82.9.225.166] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 5a1d5b03-6f6b-4ffd-2b74-08d784ada29f x-ms-traffictypediagnostic: MWHPR02MB2303: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-proofpoint-crosstenant: true x-ms-oob-tlc-oobclassifiers: OLM:2512; x-forefront-prvs: 0256C18696 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(396003)(376002)(346002)(39860400002)(136003)(366004)(189003)(199004)(66476007)(5660300002)(16526019)(186003)(66446008)(26005)(956004)(2906002)(4326008)(36756003)(8886007)(52116002)(1076003)(7696005)(81166006)(30864003)(8936002)(81156014)(86362001)(8676002)(478600001)(66946007)(2616005)(64756008)(55016002)(107886003)(71200400001)(110136005)(66556008)(54906003)(316002)(64030200001); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR02MB2303; H:MWHPR02MB2656.namprd02.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: nutanix.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: QMW3ZSv9ZeMGem2uTGHmKHtv/HBL8dXf8D8HiG0gNxbZLngmlwDdOLSSqg8lSRew15R4tEZGl+z4PfP/76ZRZvrNUVPhHqL16NB644gZn3fqZFOOmsYbIa0t34B7I+nK2hqg9KXoCXd3SiRZcPi8Lxk5Anu2ZB81TJq+QuguwL3rssG1n09teyRMXCVXmMcEAo+1bebWyA96aUGmh51XVp/D1eYKDGVl3Tr3z+sHu4BbOi+Yh4WhD1k7wMplFfdo9vm+sKeg3SadFYwhAzIVFmB2+4xj/QpdqaD0TB9xH/ZnRf+8X9ZY9UT9ZuJnHoRUIQ2gDcC5fsLYdq4V5u4fC9Tou5fODqADdPc+DbJoiqogesqX4pzwyDwV6sHLCkjqZKaktjcqh37Nn6S4e6t9ExLusQlZr6dx916MAd2WSdUZIiYaolUZUU1euGldJRFPl9Qg2qhNvEarn9d3biDNfD3SdKVLsqcRfprBtpps7HueODp62uiMntptSQFas5Vy MIME-Version: 1.0 X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5a1d5b03-6f6b-4ffd-2b74-08d784ada29f X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Dec 2019 18:02:39.2601 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 5Sme2RzhTcfVALrXFSo+nTINwZRjQMBOWnyFa3n5va2TBjvb4XzjO0GhBdyP0k56hekjbr+lM7OA6qH4lGUyANHOhs2c5tRiI8tDW3qajRQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR02MB2303 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-12-19_06:2019-12-17,2019-12-19 signatures=0 X-Proofpoint-Spam-Reason: safe X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.155.12 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "qemu-devel@nongnu.org" , Felipe Franciosi Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" Several objects implemented their own uint property getters and setters, despite them being straightforward (without any checks/validations on the values themselves) and identical across objects. This makes use of an enhanced API for object_property_add_uintXX_ptr() which offers default setters. Some of these setters used to update the value even if the type visit failed (eg. because the value being set overflowed over the given type). The new setter introduces a check for these errors, not updating the value if an error occurred. The error is propagated. Signed-off-by: Felipe Franciosi --- hw/acpi/ich9.c | 95 ++++------------------------------------- hw/isa/lpc_ich9.c | 12 +----- hw/misc/edu.c | 13 ++---- hw/pci-host/q35.c | 14 ++---- hw/ppc/spapr.c | 18 ++------ memory.c | 15 +------ target/arm/cpu.c | 22 ++-------- target/i386/sev.c | 106 ++++------------------------------------------ 8 files changed, 34 insertions(+), 261 deletions(-) diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c index 742fb78226..d9305be891 100644 --- a/hw/acpi/ich9.c +++ b/hw/acpi/ich9.c @@ -357,81 +357,6 @@ static void ich9_pm_set_cpu_hotplug_legacy(Object *obj, bool value, s->pm.cpu_hotplug_legacy = value; } -static void ich9_pm_get_disable_s3(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - ICH9LPCPMRegs *pm = opaque; - uint8_t value = pm->disable_s3; - - visit_type_uint8(v, name, &value, errp); -} - -static void ich9_pm_set_disable_s3(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - ICH9LPCPMRegs *pm = opaque; - Error *local_err = NULL; - uint8_t value; - - visit_type_uint8(v, name, &value, &local_err); - if (local_err) { - goto out; - } - pm->disable_s3 = value; -out: - error_propagate(errp, local_err); -} - -static void ich9_pm_get_disable_s4(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - ICH9LPCPMRegs *pm = opaque; - uint8_t value = pm->disable_s4; - - visit_type_uint8(v, name, &value, errp); -} - -static void ich9_pm_set_disable_s4(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - ICH9LPCPMRegs *pm = opaque; - Error *local_err = NULL; - uint8_t value; - - visit_type_uint8(v, name, &value, &local_err); - if (local_err) { - goto out; - } - pm->disable_s4 = value; -out: - error_propagate(errp, local_err); -} - -static void ich9_pm_get_s4_val(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - ICH9LPCPMRegs *pm = opaque; - uint8_t value = pm->s4_val; - - visit_type_uint8(v, name, &value, errp); -} - -static void ich9_pm_set_s4_val(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - ICH9LPCPMRegs *pm = opaque; - Error *local_err = NULL; - uint8_t value; - - visit_type_uint8(v, name, &value, &local_err); - if (local_err) { - goto out; - } - pm->s4_val = value; -out: - error_propagate(errp, local_err); -} - static bool ich9_pm_get_enable_tco(Object *obj, Error **errp) { ICH9LPCState *s = ICH9_LPC_DEVICE(obj); @@ -468,18 +393,14 @@ void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs *pm, Error **errp) ich9_pm_get_cpu_hotplug_legacy, ich9_pm_set_cpu_hotplug_legacy, NULL); - object_property_add(obj, ACPI_PM_PROP_S3_DISABLED, "uint8", - ich9_pm_get_disable_s3, - ich9_pm_set_disable_s3, - NULL, pm, NULL); - object_property_add(obj, ACPI_PM_PROP_S4_DISABLED, "uint8", - ich9_pm_get_disable_s4, - ich9_pm_set_disable_s4, - NULL, pm, NULL); - object_property_add(obj, ACPI_PM_PROP_S4_VAL, "uint8", - ich9_pm_get_s4_val, - ich9_pm_set_s4_val, - NULL, pm, NULL); + object_property_add_uint8_ptr(obj, ACPI_PM_PROP_S3_DISABLED, + &pm->disable_s3, OBJ_PROP_FLAG_READWRITE, + NULL); + object_property_add_uint8_ptr(obj, ACPI_PM_PROP_S4_DISABLED, + &pm->disable_s4, OBJ_PROP_FLAG_READWRITE, + NULL); + object_property_add_uint8_ptr(obj, ACPI_PM_PROP_S4_VAL, + &pm->s4_val, OBJ_PROP_FLAG_READWRITE, NULL); object_property_add_bool(obj, ACPI_PM_PROP_TCO_ENABLED, ich9_pm_get_enable_tco, ich9_pm_set_enable_tco, diff --git a/hw/isa/lpc_ich9.c b/hw/isa/lpc_ich9.c index c40bb3c420..b99a613954 100644 --- a/hw/isa/lpc_ich9.c +++ b/hw/isa/lpc_ich9.c @@ -627,13 +627,6 @@ static const MemoryRegionOps ich9_rst_cnt_ops = { .endianness = DEVICE_LITTLE_ENDIAN }; -static void ich9_lpc_get_sci_int(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - ICH9LPCState *lpc = ICH9_LPC_DEVICE(obj); - visit_type_uint8(v, name, &lpc->sci_gsi, errp); -} - static void ich9_lpc_initfn(Object *obj) { ICH9LPCState *lpc = ICH9_LPC_DEVICE(obj); @@ -641,9 +634,8 @@ static void ich9_lpc_initfn(Object *obj) static const uint8_t acpi_enable_cmd = ICH9_APM_ACPI_ENABLE; static const uint8_t acpi_disable_cmd = ICH9_APM_ACPI_DISABLE; - object_property_add(obj, ACPI_PM_PROP_SCI_INT, "uint8", - ich9_lpc_get_sci_int, - NULL, NULL, NULL, NULL); + object_property_add_uint8_ptr(obj, ACPI_PM_PROP_SCI_INT, + &lpc->sci_gsi, OBJ_PROP_FLAG_READ, NULL); object_property_add_uint8_ptr(OBJECT(lpc), ACPI_PM_PROP_ACPI_ENABLE_CMD, &acpi_enable_cmd, OBJ_PROP_FLAG_READ, NULL); object_property_add_uint8_ptr(OBJECT(lpc), ACPI_PM_PROP_ACPI_DISABLE_CMD, diff --git a/hw/misc/edu.c b/hw/misc/edu.c index d5e2bdbb57..ff10f5b794 100644 --- a/hw/misc/edu.c +++ b/hw/misc/edu.c @@ -396,21 +396,14 @@ static void pci_edu_uninit(PCIDevice *pdev) msi_uninit(pdev); } -static void edu_obj_uint64(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - uint64_t *val = opaque; - - visit_type_uint64(v, name, val, errp); -} - static void edu_instance_init(Object *obj) { EduState *edu = EDU(obj); edu->dma_mask = (1UL << 28) - 1; - object_property_add(obj, "dma_mask", "uint64", edu_obj_uint64, - edu_obj_uint64, NULL, &edu->dma_mask, NULL); + object_property_add_uint64_ptr(obj, "dma_mask", + &edu->dma_mask, OBJ_PROP_FLAG_READWRITE, + NULL); } static void edu_class_init(ObjectClass *class, void *data) diff --git a/hw/pci-host/q35.c b/hw/pci-host/q35.c index 158d270b9f..f384ab95c6 100644 --- a/hw/pci-host/q35.c +++ b/hw/pci-host/q35.c @@ -165,14 +165,6 @@ static void q35_host_get_pci_hole64_end(Object *obj, Visitor *v, visit_type_uint64(v, name, &value, errp); } -static void q35_host_get_mmcfg_size(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - PCIExpressHost *e = PCIE_HOST_BRIDGE(obj); - - visit_type_uint64(v, name, &e->size, errp); -} - /* * NOTE: setting defaults for the mch.* fields in this table * doesn't work, because mch is a separate QOM object that is @@ -213,6 +205,7 @@ static void q35_host_initfn(Object *obj) { Q35PCIHost *s = Q35_HOST_DEVICE(obj); PCIHostState *phb = PCI_HOST_BRIDGE(obj); + PCIExpressHost *pehb = PCIE_HOST_BRIDGE(obj); memory_region_init_io(&phb->conf_mem, obj, &pci_host_conf_le_ops, phb, "pci-conf-idx", 4); @@ -242,9 +235,8 @@ static void q35_host_initfn(Object *obj) q35_host_get_pci_hole64_end, NULL, NULL, NULL, NULL); - object_property_add(obj, PCIE_HOST_MCFG_SIZE, "uint64", - q35_host_get_mmcfg_size, - NULL, NULL, NULL, NULL); + object_property_add_uint64_ptr(obj, PCIE_HOST_MCFG_SIZE, + &pehb->size, OBJ_PROP_FLAG_READ, NULL); object_property_add_link(obj, MCH_HOST_PROP_RAM_MEM, TYPE_MEMORY_REGION, (Object **) &s->mch.ram_memory, diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index f11422fc41..3adbc8e247 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -3149,18 +3149,6 @@ static void spapr_set_resize_hpt(Object *obj, const char *value, Error **errp) } } -static void spapr_get_vsmt(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - visit_type_uint32(v, name, (uint32_t *)opaque, errp); -} - -static void spapr_set_vsmt(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - visit_type_uint32(v, name, (uint32_t *)opaque, errp); -} - static char *spapr_get_ic_mode(Object *obj, Error **errp) { SpaprMachineState *spapr = SPAPR_MACHINE(obj); @@ -3258,8 +3246,10 @@ static void spapr_instance_init(Object *obj) object_property_set_description(obj, "resize-hpt", "Resizing of the Hash Page Table (enabled, disabled, required)", NULL); - object_property_add(obj, "vsmt", "uint32", spapr_get_vsmt, - spapr_set_vsmt, NULL, &spapr->vsmt, &error_abort); + object_property_add_uint32_ptr(obj, "vsmt", + &spapr->vsmt, OBJ_PROP_FLAG_READWRITE, + &error_abort); + object_property_set_description(obj, "vsmt", "Virtual SMT: KVM behaves as if this were" " the host's SMT mode", &error_abort); diff --git a/memory.c b/memory.c index 0228cad38d..c02b0a4576 100644 --- a/memory.c +++ b/memory.c @@ -1158,15 +1158,6 @@ void memory_region_init(MemoryRegion *mr, memory_region_do_init(mr, owner, name, size); } -static void memory_region_get_addr(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - MemoryRegion *mr = MEMORY_REGION(obj); - uint64_t value = mr->addr; - - visit_type_uint64(v, name, &value, errp); -} - static void memory_region_get_container(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) @@ -1230,10 +1221,8 @@ static void memory_region_initfn(Object *obj) NULL, NULL, &error_abort); op->resolve = memory_region_resolve_container; - object_property_add(OBJECT(mr), "addr", "uint64", - memory_region_get_addr, - NULL, /* memory_region_set_addr */ - NULL, NULL, &error_abort); + object_property_add_uint64_ptr(OBJECT(mr), "addr", + &mr->addr, OBJ_PROP_FLAG_READ, &error_abort); object_property_add(OBJECT(mr), "priority", "uint32", memory_region_get_priority, NULL, /* memory_region_set_priority */ diff --git a/target/arm/cpu.c b/target/arm/cpu.c index dd51adac05..575eafd2bb 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -1039,22 +1039,6 @@ static void arm_set_pmu(Object *obj, bool value, Error **errp) cpu->has_pmu = value; } -static void arm_get_init_svtor(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - ARMCPU *cpu = ARM_CPU(obj); - - visit_type_uint32(v, name, &cpu->init_svtor, errp); -} - -static void arm_set_init_svtor(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - ARMCPU *cpu = ARM_CPU(obj); - - visit_type_uint32(v, name, &cpu->init_svtor, errp); -} - void arm_cpu_post_init(Object *obj) { ARMCPU *cpu = ARM_CPU(obj); @@ -1165,9 +1149,9 @@ void arm_cpu_post_init(Object *obj) * a simple DEFINE_PROP_UINT32 for this because we want to permit * the property to be set after realize. */ - object_property_add(obj, "init-svtor", "uint32", - arm_get_init_svtor, arm_set_init_svtor, - NULL, NULL, &error_abort); + object_property_add_uint32_ptr(obj, "init-svtor", + &cpu->init_svtor, + OBJ_PROP_FLAG_READWRITE, &error_abort); } qdev_property_add_static(DEVICE(obj), &arm_cpu_cfgend_property, diff --git a/target/i386/sev.c b/target/i386/sev.c index 024bb24e51..846018a12d 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -266,94 +266,6 @@ qsev_guest_class_init(ObjectClass *oc, void *data) "guest owners session parameters (encoded with base64)", NULL); } -static void -qsev_guest_set_handle(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - QSevGuestInfo *sev = QSEV_GUEST_INFO(obj); - uint32_t value; - - visit_type_uint32(v, name, &value, errp); - sev->handle = value; -} - -static void -qsev_guest_set_policy(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - QSevGuestInfo *sev = QSEV_GUEST_INFO(obj); - uint32_t value; - - visit_type_uint32(v, name, &value, errp); - sev->policy = value; -} - -static void -qsev_guest_set_cbitpos(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - QSevGuestInfo *sev = QSEV_GUEST_INFO(obj); - uint32_t value; - - visit_type_uint32(v, name, &value, errp); - sev->cbitpos = value; -} - -static void -qsev_guest_set_reduced_phys_bits(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - QSevGuestInfo *sev = QSEV_GUEST_INFO(obj); - uint32_t value; - - visit_type_uint32(v, name, &value, errp); - sev->reduced_phys_bits = value; -} - -static void -qsev_guest_get_policy(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - uint32_t value; - QSevGuestInfo *sev = QSEV_GUEST_INFO(obj); - - value = sev->policy; - visit_type_uint32(v, name, &value, errp); -} - -static void -qsev_guest_get_handle(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - uint32_t value; - QSevGuestInfo *sev = QSEV_GUEST_INFO(obj); - - value = sev->handle; - visit_type_uint32(v, name, &value, errp); -} - -static void -qsev_guest_get_cbitpos(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - uint32_t value; - QSevGuestInfo *sev = QSEV_GUEST_INFO(obj); - - value = sev->cbitpos; - visit_type_uint32(v, name, &value, errp); -} - -static void -qsev_guest_get_reduced_phys_bits(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - uint32_t value; - QSevGuestInfo *sev = QSEV_GUEST_INFO(obj); - - value = sev->reduced_phys_bits; - visit_type_uint32(v, name, &value, errp); -} - static void qsev_guest_init(Object *obj) { @@ -361,15 +273,15 @@ qsev_guest_init(Object *obj) sev->sev_device = g_strdup(DEFAULT_SEV_DEVICE); sev->policy = DEFAULT_GUEST_POLICY; - object_property_add(obj, "policy", "uint32", qsev_guest_get_policy, - qsev_guest_set_policy, NULL, NULL, NULL); - object_property_add(obj, "handle", "uint32", qsev_guest_get_handle, - qsev_guest_set_handle, NULL, NULL, NULL); - object_property_add(obj, "cbitpos", "uint32", qsev_guest_get_cbitpos, - qsev_guest_set_cbitpos, NULL, NULL, NULL); - object_property_add(obj, "reduced-phys-bits", "uint32", - qsev_guest_get_reduced_phys_bits, - qsev_guest_set_reduced_phys_bits, NULL, NULL, NULL); + object_property_add_uint32_ptr(obj, "policy", &sev->policy, + OBJ_PROP_FLAG_READWRITE, NULL); + object_property_add_uint32_ptr(obj, "handle", &sev->handle, + OBJ_PROP_FLAG_READWRITE, NULL); + object_property_add_uint32_ptr(obj, "cbitpos", &sev->cbitpos, + OBJ_PROP_FLAG_READWRITE, NULL); + object_property_add_uint32_ptr(obj, "reduced-phys-bits", + &sev->reduced_phys_bits, + OBJ_PROP_FLAG_READWRITE, NULL); } /* sev guest info */