From patchwork Thu Nov 28 16:48:27 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Felipe Franciosi X-Patchwork-Id: 11266423 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 C67D0921 for ; Thu, 28 Nov 2019 17:12:03 +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 47A1F21739 for ; Thu, 28 Nov 2019 17:12:03 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=nutanix.com header.i=@nutanix.com header.b="BNs0FGM9" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 47A1F21739 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]:51126 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iaNKj-0006PH-2M for patchwork-qemu-devel@patchwork.kernel.org; Thu, 28 Nov 2019 12:12:01 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:50101) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iaMyL-0002kv-VR for qemu-devel@nongnu.org; Thu, 28 Nov 2019 11:48:56 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iaMyF-0002GS-RA for qemu-devel@nongnu.org; Thu, 28 Nov 2019 11:48:51 -0500 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]:56302) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iaMyC-00028O-Lm for qemu-devel@nongnu.org; Thu, 28 Nov 2019 11:48:45 -0500 Received: from pps.filterd (m0127837.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xASGlhE7014227; Thu, 28 Nov 2019 08:48:29 -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=2GIinELWvduAPcJyQkjFGNlAnhIgHkGGnWot0TXb2Xc=; b=BNs0FGM9+BeSpshGgMnRhgpZTgZOGGl7DYTtpMLjccrHWHqiEAexlCvCuHWXoFyUav7G hxQ5a/osIQc7jJPVb2iaRR00I1qx059zISCgJRAqqRMzNfHTgLeAQPpgnVt2YI9ogoY+ uSvcyRPnhUjoivZ2kuTOC56Jjxbo2f9VhBVD/BYRLRGTbtg2RGQGsrvrh1jHtw6Qq9GU NjlTe3OkbMo6CjLYX4myndAhVC4fTAirOw0IHFR3/LGdvT7cPuNOfvvfN3SoagRCPaxu giz7i1faVI1Za00JlGHHpWU/AaYRrrkLimqMhgY072wp+ecnE6yaaBBcSInKQQEbAL7Q 0g== Received: from nam01-sn1-obe.outbound.protection.outlook.com (mail-sn1nam01lp2052.outbound.protection.outlook.com [104.47.32.52]) by mx0a-002c1b01.pphosted.com with ESMTP id 2whhdhujgf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 28 Nov 2019 08:48:29 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=byjukr2JCM/eZqwqYUSVZKconFJgqNLUVYsRhdENmD16+afSamVw5ULv6of4geIMHImrLiyDPkRMuUJfusWHqG4ZEurI/cmtWH7lVXNJ8DaI38Z1bf/n088xKq7T0VRditrrArJzTmXbU4e3ZOgiTY+j70RSU4yh0bx0qh4XNJGwOBz/uwEP1iNlp3TRZ0i4bgOOu5MBUPHXYwE5frW7SPEuih+zmXW9Q8MJKtOchiVS+5Ld7a1DsJcwaCgIb6i+G9cEtQEWZhfB9HjJyvECjDM9QXtaZaeTsM5A0Tjz/YD5hJJY2FOrw9/YddOGcsSk0vvu7GzdBeZO8b5TOsYzXA== 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=2GIinELWvduAPcJyQkjFGNlAnhIgHkGGnWot0TXb2Xc=; b=S2EKj5feiy0iIUc8ATZF6kheg6nkXVdMMpTtJyodSoGEdou7DDNh997GMFCx/GDbbk/qoaV57viUEvPPhOT7CIkbzhWHIrMKI/GCKYM+CtFk38UX/Ubd2ZIdw8lrRszUd9y8P6Nd+ghvYTGId9zBdb7zlK98tAklIzy7gm56mllvqZ82pLC7KQlpzh+mcSqP/JyZMJ6Q0fTJ38x4LLFqyJ9THnufBUSYtVZt3NAWgAn+xSuEXJdkdO0asO6uY74bxrscMTHdHouHosorAHTsfIv/ajirC5RxIBd8LBODakCq9/aBziqx5xPN5jS5UCsiO63xDmm4tDNl35QngfAjsw== 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 MWHPR02MB2398.namprd02.prod.outlook.com (10.168.243.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2495.20; Thu, 28 Nov 2019 16:48:27 +0000 Received: from MWHPR02MB2656.namprd02.prod.outlook.com ([fe80::f801:763d:e7fc:6bf]) by MWHPR02MB2656.namprd02.prod.outlook.com ([fe80::f801:763d:e7fc:6bf%7]) with mapi id 15.20.2474.023; Thu, 28 Nov 2019 16:48:27 +0000 From: Felipe Franciosi To: Marc-Andre Lureau , Philippe Mathieu-Daude , Stefan Hajnoczi , Eduardo Habkost , Markus Armbruster , Alexey Kardashevskiy Subject: [PATCH v2 1/4] qom/object: enable setter for uint types Thread-Topic: [PATCH v2 1/4] qom/object: enable setter for uint types Thread-Index: AQHVpguof+hp9uLXw0+Ou2CdO+hqDQ== Date: Thu, 28 Nov 2019 16:48:27 +0000 Message-ID: <20191128164810.54279-2-felipe@nutanix.com> References: <20191128164810.54279-1-felipe@nutanix.com> In-Reply-To: <20191128164810.54279-1-felipe@nutanix.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM3PR05CA0154.eurprd05.prod.outlook.com (2603:10a6:207:3::32) 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: [62.254.189.133] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: dd955135-0665-49e1-facb-08d77422caa4 x-ms-traffictypediagnostic: MWHPR02MB2398: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-proofpoint-crosstenant: true x-ms-oob-tlc-oobclassifiers: OLM:287; x-forefront-prvs: 0235CBE7D0 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(396003)(346002)(366004)(376002)(39860400002)(136003)(189003)(199004)(102836004)(110136005)(256004)(446003)(36756003)(14454004)(2616005)(6436002)(11346002)(66066001)(4326008)(386003)(6506007)(186003)(26005)(52116002)(76176011)(66556008)(64756008)(1076003)(30864003)(71190400001)(66946007)(5660300002)(71200400001)(6486002)(66446008)(66476007)(86362001)(6512007)(478600001)(54906003)(8936002)(50226002)(316002)(81166006)(2906002)(8676002)(7736002)(305945005)(81156014)(99286004)(25786009)(6116002)(3846002)(64030200001)(579004); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR02MB2398; 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: hBmWcyUsGmGN2572nvTXsMi8bwGJxkVVXY4oOd0ccwjZstvlYBeG5qC/EgE4IYNAChxJuYX3/NlYa105P5oYCmCEkLhDzew78SyR4ENImxFf6wqQ69410lQSKEq9JlyU/8L22dx2/IEvG+OImVw+T8lWwviLsZ8uBDLlqFMwMWA4d7ng9ltaOA7cjJYIxysoyL+CF1a2b0yabQ44G0t+SY/vKTWImMj2vwhJQxoHDkBwdw50OYTJROxINsGYA2EHz6vq1liGBkLvVQEA674ui8dTc+OlWnwGgW9C2SQQavmdISV4K0ioYKDr8t5sA2+LKWnmDQfgnksEMG612js1y6yI3yIRZiZrOSU4z+t5ko6nQ0mvqCk1+FLJgnQwBQI+tF3+lRfhRj4DglxYg9dM8Oo7JonUAehDH/K9CVgWDIsXnXuYgFKtPtXFJB2p+nHA MIME-Version: 1.0 X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: dd955135-0665-49e1-facb-08d77422caa4 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Nov 2019 16:48:27.5663 (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: VIwx0Rpc2IXRG0UIRftqZlzajcslvBpOGPKgEBRqkFtdTZKdQ1a6MQc2/XVZScR4KPk/SXIYJcss3Vhk2P+GolmxXjSZGWje4ll5bDvXmXo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR02MB2398 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-11-28_05:2019-11-28,2019-11-28 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" 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_RD. This maintains the current behaviour whilst allowing others to also set OBJ_PROP_FLAG_WR 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 | 2 +- include/qom/object.h | 42 +++++++-- qom/object.c | 216 ++++++++++++++++++++++++++++++++++++++----- ui/console.c | 4 +- 8 files changed, 243 insertions(+), 48 deletions(-) diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c index 2034dd749e..236300d2a9 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_RD, 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_RD, 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..c8a7194b19 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_RD, + &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_RD, &error_abort); object_property_add_uint16_ptr(owner, ACPI_PCIHP_IO_LEN_PROP, &s->io_len, - &error_abort); + OBJ_PROP_FLAG_RD, &error_abort); } const VMStateDescription vmstate_acpi_pcihp_pci_status = { diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c index 93aec2dd2c..06d964a840 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_RD, NULL); object_property_add_uint8_ptr(OBJECT(s), ACPI_PM_PROP_ACPI_DISABLE_CMD, - &acpi_disable_cmd, NULL); + &acpi_disable_cmd, OBJ_PROP_FLAG_RD, NULL); object_property_add_uint32_ptr(OBJECT(s), ACPI_PM_PROP_GPE0_BLK, - &gpe0_blk, NULL); + &gpe0_blk, OBJ_PROP_FLAG_RD, NULL); object_property_add_uint32_ptr(OBJECT(s), ACPI_PM_PROP_GPE0_BLK_LEN, - &gpe0_blk_len, NULL); + &gpe0_blk_len, OBJ_PROP_FLAG_RD, NULL); object_property_add_uint16_ptr(OBJECT(s), ACPI_PM_PROP_SCI_INT, - &sci_int, NULL); + &sci_int, OBJ_PROP_FLAG_RD, NULL); object_property_add_uint32_ptr(OBJECT(s), ACPI_PM_PROP_PM_IO_BASE, - &s->io_base, NULL); + &s->io_base, OBJ_PROP_FLAG_RD, 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..f5526f9c3b 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_RD, NULL); object_property_add_uint8_ptr(OBJECT(lpc), ACPI_PM_PROP_ACPI_DISABLE_CMD, - &acpi_disable_cmd, NULL); + &acpi_disable_cmd, OBJ_PROP_FLAG_RD, 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..ace2db0413 100644 --- a/hw/ppc/spapr_drc.c +++ b/hw/ppc/spapr_drc.c @@ -553,7 +553,7 @@ 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_RD, 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..4836c54e93 100644 --- a/include/qom/object.h +++ b/include/qom/object.h @@ -1579,65 +1579,91 @@ 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_RD = (1UL << 0), + /* Automatically add a setter to the property */ + OBJ_PROP_FLAG_WR = (1UL << 1), +} 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..6f300b5317 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_RD) == OBJ_PROP_FLAG_RD) { + getter = property_get_uint8_ptr; + } + + if ((flags & OBJ_PROP_FLAG_WR) == OBJ_PROP_FLAG_WR) { + 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_RD) == OBJ_PROP_FLAG_RD) { + getter = property_get_uint8_ptr; + } + + if ((flags & OBJ_PROP_FLAG_WR) == OBJ_PROP_FLAG_WR) { + 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_RD) == OBJ_PROP_FLAG_RD) { + getter = property_get_uint16_ptr; + } + + if ((flags & OBJ_PROP_FLAG_WR) == OBJ_PROP_FLAG_WR) { + 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_RD) == OBJ_PROP_FLAG_RD) { + getter = property_get_uint16_ptr; + } + + if ((flags & OBJ_PROP_FLAG_WR) == OBJ_PROP_FLAG_WR) { + 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_RD) == OBJ_PROP_FLAG_RD) { + getter = property_get_uint32_ptr; + } + + if ((flags & OBJ_PROP_FLAG_WR) == OBJ_PROP_FLAG_WR) { + 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_RD) == OBJ_PROP_FLAG_RD) { + getter = property_get_uint32_ptr; + } + + if ((flags & OBJ_PROP_FLAG_WR) == OBJ_PROP_FLAG_WR) { + 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_RD) == OBJ_PROP_FLAG_RD) { + getter = property_get_uint64_ptr; + } + + if ((flags & OBJ_PROP_FLAG_WR) == OBJ_PROP_FLAG_WR) { + 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_RD) == OBJ_PROP_FLAG_RD) { + getter = property_get_uint64_ptr; + } + + if ((flags & OBJ_PROP_FLAG_WR) == OBJ_PROP_FLAG_WR) { + 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..7d6ef90978 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_RD, &error_abort); if (!active_console || ((active_console->console_type != GRAPHIC_CONSOLE) && (console_type == GRAPHIC_CONSOLE))) { From patchwork Thu Nov 28 16:48:29 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Felipe Franciosi X-Patchwork-Id: 11266545 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 8C296138C for ; Thu, 28 Nov 2019 19:43:23 +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 616582176D for ; Thu, 28 Nov 2019 19:43:23 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=nutanix.com header.i=@nutanix.com header.b="pBxhw4ps" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 616582176D 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]:52678 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iaPhA-0002Jn-Hb for patchwork-qemu-devel@patchwork.kernel.org; Thu, 28 Nov 2019 14:43:20 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:50134) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iaMyN-0002m7-TL for qemu-devel@nongnu.org; Thu, 28 Nov 2019 11:48:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iaMyM-0002KM-3I for qemu-devel@nongnu.org; Thu, 28 Nov 2019 11:48:55 -0500 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]:65190) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iaMyF-0002A0-Ov for qemu-devel@nongnu.org; Thu, 28 Nov 2019 11:48:49 -0500 Received: from pps.filterd (m0127837.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xASGlf7g014210; Thu, 28 Nov 2019 08:48:31 -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=9zPGVjyV5VQnm3bt6A02V0umR+NCvpD843NmYvStucM=; b=pBxhw4psSBrPR4mEWz79S6a/zLnTdpBRRR7Rd5LLfAgaK+NohiQowSHJXukcESRoR6at ceABUv5g+PQ11HfvgU6SqpuyFV/ZSpw7CUIHO0V4TtnLQxmcPAIVga06IdtJbuWgOJpU xb15FPJHxEoAfviueRAlnde7CNY8gJzl9Ke9E1X/sAcXAOtj69+2wpN35CRm+A31gDau 61Wqql8RMsYICw33PMIrMypOqTQoO/JQgOeLAqai/M0/GCCqknfwGiN7qplOE5fPMmUx zGr8t58OWwDiHMzjVhIfEg6znmlb3Pmhv/qbc+xzhFla+fIpWHkOwsvEtoS7l2XxlFHf Ag== Received: from nam01-sn1-obe.outbound.protection.outlook.com (mail-sn1nam01lp2054.outbound.protection.outlook.com [104.47.32.54]) by mx0a-002c1b01.pphosted.com with ESMTP id 2whhdhujgh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 28 Nov 2019 08:48:31 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PZP8cGeDOqo9DoltyMY3it1r7N7B4n/XkNl4J8sdCU3dde78eZavRAknQew4DncpBOuVhoUHOwybmu+ozC5bJSsS9n+1MRIMS6Tu/sb23PwR+IVXkr4IH9H654vl66bCa5kRJgL1HCxJLtWi6NxDdXaWJioMdzITw6bITDmHRd0ZxkQLnWn/D2fpAL/j8MrOqFnN0ZU+g54s03Xcu+1SkRqJzzYiLhpdQkBABOAhX6HfKuikJpfRbfucaA9Aj07liGb1sWxBRTZTAEP+R53dlhS4LiFY/YcQiTxQCadeYnqWBS2h+OFWR3bbYDLaV4t2sneVRG51HZTPJKsBQUGZaA== 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=9zPGVjyV5VQnm3bt6A02V0umR+NCvpD843NmYvStucM=; b=iZxw2qeea+/jqWxG12osTJ9+rEsAXR405ckIeUJ6ZN8QHYvOTxVj6ZAZAsQngnwd/9gSIdAC38szEVXxwTBy0mtvGMDyWVs4u3bpCvzwuCQAN4l5kGV7zyyo1BgOcCGbH+0mNwBMwT1pLXNFZ5mu6HXjb3HXWthVUYk+OFxkI+lOoWQ3kOVV4REKsSiauzXph72IZOjZE8fqTSwEgh6zWZv9iPEUtOUOnuj4UnJfjTCOy0utog/ydU26Fd2ujpPYnV1qWDTHlzFimmQ2UsPT3HZ2hQAz/HEG5azS9eO+3GkAX0Q/Ys4OzfMGqq3fbRc640xoTRZIs3an9mWPS3G1RA== 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 MWHPR02MB2398.namprd02.prod.outlook.com (10.168.243.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2495.20; Thu, 28 Nov 2019 16:48:29 +0000 Received: from MWHPR02MB2656.namprd02.prod.outlook.com ([fe80::f801:763d:e7fc:6bf]) by MWHPR02MB2656.namprd02.prod.outlook.com ([fe80::f801:763d:e7fc:6bf%7]) with mapi id 15.20.2474.023; Thu, 28 Nov 2019 16:48:29 +0000 From: Felipe Franciosi To: Marc-Andre Lureau , Philippe Mathieu-Daude , Stefan Hajnoczi , Eduardo Habkost , Markus Armbruster , Alexey Kardashevskiy Subject: [PATCH v2 2/4] ich9: fix getter type for sci_int property Thread-Topic: [PATCH v2 2/4] ich9: fix getter type for sci_int property Thread-Index: AQHVpgupAr8vV7eYO0SbN77IztInIw== Date: Thu, 28 Nov 2019 16:48:29 +0000 Message-ID: <20191128164810.54279-3-felipe@nutanix.com> References: <20191128164810.54279-1-felipe@nutanix.com> In-Reply-To: <20191128164810.54279-1-felipe@nutanix.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM3PR05CA0154.eurprd05.prod.outlook.com (2603:10a6:207:3::32) 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: [62.254.189.133] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: c3ebc907-9432-46bf-d22f-08d77422cbfb x-ms-traffictypediagnostic: MWHPR02MB2398: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-proofpoint-crosstenant: true x-ms-oob-tlc-oobclassifiers: OLM:4303; x-forefront-prvs: 0235CBE7D0 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(396003)(346002)(366004)(376002)(39860400002)(136003)(189003)(199004)(102836004)(110136005)(256004)(446003)(36756003)(14454004)(2616005)(6436002)(11346002)(66066001)(4326008)(386003)(6506007)(186003)(26005)(52116002)(76176011)(66556008)(64756008)(1076003)(71190400001)(66946007)(5660300002)(71200400001)(6486002)(66446008)(66476007)(86362001)(6512007)(478600001)(54906003)(8936002)(50226002)(316002)(81166006)(2906002)(8676002)(7736002)(305945005)(81156014)(99286004)(25786009)(6116002)(3846002)(64030200001); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR02MB2398; 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: sakWcFsPGuyDQ4F2JHvM3MlGmytwk1zgsQZBaRt3eq55qRz2GMqcZwbIzE08+d8fo4Z3Uljb1Jy7Q8RuUNtnM2Y+xK/otvhd0aL01G3T4X0tkF3033vpyxql1BX+ws13OcBeABCEmoE5Zx2afyN5B/vWZYV3GLksPdQhhLUrzYHiUOa0M+o+rF+y+07ysY1PcSUKElfFWC0DbxVXDN5qbV+uX53L/bSNMVXWMXNYeBrj6qExJU2B5NjtNvJeU89qo+plaZN5zZmIV97oRFRwzSTQufX19hcSGWfl1GbFUfvIZipmokutFm9wO4KZlIiALNQRSdgp7g/bmAMFBmY8VZV/OU/r78L02o316rEpgN6gGmiTkj8M4fo/k05VFn1AVsQFHoTrB4ninTjTwFHIr1dsek24mwnePhQ2Be+cqIbnwT446UeRaQWv5EGDpU+B MIME-Version: 1.0 X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: c3ebc907-9432-46bf-d22f-08d77422cbfb X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Nov 2019 16:48:29.7642 (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: bqyxkR1a/XZU04I+zcTEI9im8N5vNbJ8ag/rIW80CKA17hiXjU304NATgg2jRPR9GUJ3q5V6VxAYEo88YSYgWsvVDVoB3fVnNMvu2mwwctc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR02MB2398 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-11-28_05:2019-11-28,2019-11-28 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" 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 Reviewed-by: Marc-André Lureau --- 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 f5526f9c3b..3a9c4f0503 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 Nov 28 16:48: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: 11266517 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 95ED0109A for ; Thu, 28 Nov 2019 18:33:03 +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 69CF521741 for ; Thu, 28 Nov 2019 18:33:03 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=nutanix.com header.i=@nutanix.com header.b="PigTDOgX" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 69CF521741 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]:52180 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iaOb8-0003ZB-Kr for patchwork-qemu-devel@patchwork.kernel.org; Thu, 28 Nov 2019 13:33:02 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:50085) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iaMyI-0002k9-Kc for qemu-devel@nongnu.org; Thu, 28 Nov 2019 11:48:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iaMyF-0002Gt-Tk for qemu-devel@nongnu.org; Thu, 28 Nov 2019 11:48:49 -0500 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]:14156) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iaMyD-0002AS-Ty for qemu-devel@nongnu.org; Thu, 28 Nov 2019 11:48:47 -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 xASGfY7J031304; Thu, 28 Nov 2019 08:48:33 -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=n7/1w7+F8DmWgNdZlsQxq3sdoTsPo3sX1PfD8oIKTw4=; b=PigTDOgXREy2rTURLn8su1imTV7SO4AdBkyK7TpKluD+f1r3y1d/9X87zsIeaU+h2f+t naBMIBodTBzXnlYhmcA7NJ3swRcrOLl9oMziJeg9R1o4ZPUVG9T9X0y5hr3rfUZQ7swS UdD5jJ55noWpV4pkZtWbTgO8w5W2I+ev8MSG1AwGzqW0F3RrDGK+eTseKP2jkitX+NSz 6fDy/g0lil1VCy3alTu92uWXOoJ8JrP+H0AVJVsqaOZAzcyDHIdQvRPO2AyIdef7uzdq OI/5iMgK7e3SEeJ5tzaCj8bIDXnKPuSGg9Z9NiSIGfO34TFG3k2MLsQbL5OEyLnv6K4f 6Q== Received: from nam01-sn1-obe.outbound.protection.outlook.com (mail-sn1nam01lp2053.outbound.protection.outlook.com [104.47.32.53]) by mx0a-002c1b01.pphosted.com with ESMTP id 2whjspbe12-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 28 Nov 2019 08:48:33 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MGlTgAkWRuCm6HIGQAY6xcI9KOS14X0XmkqOVSP6jxk4MqarHW8IuBqeo4vj4z6IaiD94BS7Fywb/j/ae0HIpoUllpLbr9yYQVYIXn6dzFobNFT5OYsEfoF5Zcz1QzEpEA/zPDctqDgPalUHy9HjmNRg6h8Z1iS3XuWcOTZU92I+XGbPhudd/uks8i1PVLNPo8UqJYfTYVhAnCICkNSjTzZ9lR4OIa/7NG2JICM1jibEM2u1rKbUofCG+xZRam9nx9fFKlKa2QUCo3eRn62mm1KpfdBSCrsd9gprxGwlYbdOmeEGnHMt9A3s6KZoJNPMisganMIYjE+lbJKuWfwL8w== 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=n7/1w7+F8DmWgNdZlsQxq3sdoTsPo3sX1PfD8oIKTw4=; b=YqUnmZWulOi97zj/ImuTnYlpRUbXglsBulRzXhpsZHtv/HN6xPdtZi7Uivf32vbQd2UUENT7mXTezJCgHOqwDtwNTRLsUezr/ESWMLQcHz7oY9R/dRH8RGcHyX0X/v3woN5FZheZYSZ4+icbIJUVQLne3zAlgAGKUUnahicONTC1XVIa5zaUGIWSCMfu94eDelrARVrRbiZmyqdwHGRI3QDQseoV984Fwh8blg+NZC7cqkySgo6f5APmC7DMq1VrLXVOdKeq8lUsIXeUl0uAfmSp23ATMsuq8qdpMsasIAIxF3mqukR7P2aYoh9aBJGGq/9qDVJB2BpWNxi3cnrXvw== 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 MWHPR02MB2398.namprd02.prod.outlook.com (10.168.243.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2495.20; Thu, 28 Nov 2019 16:48:32 +0000 Received: from MWHPR02MB2656.namprd02.prod.outlook.com ([fe80::f801:763d:e7fc:6bf]) by MWHPR02MB2656.namprd02.prod.outlook.com ([fe80::f801:763d:e7fc:6bf%7]) with mapi id 15.20.2474.023; Thu, 28 Nov 2019 16:48:32 +0000 From: Felipe Franciosi To: Marc-Andre Lureau , Philippe Mathieu-Daude , Stefan Hajnoczi , Eduardo Habkost , Markus Armbruster , Alexey Kardashevskiy Subject: [PATCH v2 3/4] ich9: Simplify ich9_lpc_initfn Thread-Topic: [PATCH v2 3/4] ich9: Simplify ich9_lpc_initfn Thread-Index: AQHVpguqWkenqVaL5UG7yy2/hb1RUg== Date: Thu, 28 Nov 2019 16:48:31 +0000 Message-ID: <20191128164810.54279-4-felipe@nutanix.com> References: <20191128164810.54279-1-felipe@nutanix.com> In-Reply-To: <20191128164810.54279-1-felipe@nutanix.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM3PR05CA0154.eurprd05.prod.outlook.com (2603:10a6:207:3::32) 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: [62.254.189.133] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3a4d6f9a-44a8-401b-a5a6-08d77422cd4b x-ms-traffictypediagnostic: MWHPR02MB2398: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-proofpoint-crosstenant: true x-ms-oob-tlc-oobclassifiers: OLM:4303; x-forefront-prvs: 0235CBE7D0 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(396003)(346002)(366004)(376002)(39860400002)(136003)(189003)(199004)(102836004)(110136005)(256004)(446003)(36756003)(14454004)(2616005)(6436002)(11346002)(66066001)(4326008)(386003)(6506007)(186003)(26005)(52116002)(76176011)(66556008)(64756008)(1076003)(71190400001)(66946007)(5660300002)(71200400001)(6486002)(66446008)(66476007)(86362001)(6512007)(478600001)(54906003)(8936002)(50226002)(316002)(81166006)(2906002)(8676002)(7736002)(305945005)(81156014)(99286004)(25786009)(6116002)(3846002)(64030200001); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR02MB2398; 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: 1T77mGLr6zx8PPRMS8vB65M0BQlQoknEqMdlmELylyfsCisv3W0vneKo1x8Rqbui8WOGv1jzQd+65JflJ3u/JMTeA2MC0LgfUAUKuKYqnemK/9thTKGEsFwJe7/S44fRrQ0WiYDZx3yRfVIvl7T5fUIo3Y5C/oJJ4yToHgkJoy9POZj7CYkic0FrrGNIeh+ml24CpIx8HQp4RXLknx53dVrYM6QBVnYnH0xbEv2c8w0LCJpo9dQKOJi10uL4u5UeeU+pH6KTvICa5+4plgqHXhbix3ASqupIUNL8skv+cXIAhHq4HIun0KSMef7W1aMgxYEovhlYGHyk+CQxPf0lIEYJ2Piay+4sI8Ia8t+StYjns3MeSDN1cQA+v3fialII9g4kSHD9b78l1/ePl7bNNuVEh3cV17UXUsXcNAgzPrAWhCaBDTatrwBAhtNst+Zd MIME-Version: 1.0 X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3a4d6f9a-44a8-401b-a5a6-08d77422cd4b X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Nov 2019 16:48:31.9220 (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: weEnvMffeiuOvXhEK7vmhqoU27QaWtHopiEUgiHfPAE/5Drtaes4nK8+XwLhyOJ270s/TJ+vJ8eb8CzIu89pLJdS8LjoMpOqHeSIZL3BgCI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR02MB2398 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-11-28_05:2019-11-28,2019-11-28 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 --- 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 3a9c4f0503..9a5457c83b 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_RD, 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 Nov 28 16:48:34 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Felipe Franciosi X-Patchwork-Id: 11266397 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 E229C6C1 for ; Thu, 28 Nov 2019 16:53:06 +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 A6FF321774 for ; Thu, 28 Nov 2019 16:53:06 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=nutanix.com header.i=@nutanix.com header.b="AExDqXRD" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A6FF321774 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]:51012 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iaN2O-0005dS-LT for patchwork-qemu-devel@patchwork.kernel.org; Thu, 28 Nov 2019 11:53:04 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:50146) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iaMyN-0002mD-V3 for qemu-devel@nongnu.org; Thu, 28 Nov 2019 11:48:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iaMyE-0002Ff-0N for qemu-devel@nongnu.org; Thu, 28 Nov 2019 11:48:53 -0500 Received: from mx0b-002c1b01.pphosted.com ([148.163.155.12]:17214) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iaMyA-0002As-5f for qemu-devel@nongnu.org; Thu, 28 Nov 2019 11:48:44 -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 xASGmZk3025272; Thu, 28 Nov 2019 08:48:35 -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=WI6Cwo3csL2UV579K9mX1fHqHqk7tmnN/Ark0rqWN4g=; b=AExDqXRDHPGRju0VTpT1MwY0+bKXh8gWBMby/wldsBPcgZRl7CUT2V3rBLxksPdqnX5x kwXN2PDYx66v4chp96yOtWcmCZRvBMaqbGv/rpHQu2luCp19QhpUHhgBwQTr3LmEm283 Hgs3K6h+O+QF36qTFLknrlthVYX6p4tvZtMRQ6uxQpXeRbmUgWWJR9IlNYojk+aUH3MG O1S7Sa6ZuXMbbrlRBW6mY2q2odpcviTAKOybuZwrkbhq84n0pCOoSoAqqorARB3dgipC Ijcgs9pk4KZcp8fokP9COSRioH3erdX7AW+BWPxAXoYitbqlyV1L8wV5tLfGl3ivPEYY 4Q== Received: from nam01-sn1-obe.outbound.protection.outlook.com (mail-sn1nam01lp2050.outbound.protection.outlook.com [104.47.32.50]) by mx0b-002c1b01.pphosted.com with ESMTP id 2whd18v0nr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 28 Nov 2019 08:48:35 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TnoYjWLpanLZcMXVLe0LqvvZoc6rhNqskEYSu1u64EHxxV/qnxFSHvHf+aMxsgRRh6Ghn+5fkR1XTm/nwg1b+mStjPII6Bbb7I3GLy9o1H1RzCUZy2JAv4ywCiUxhaWyhuGsSRfrk8OuzlmY4U36GYcAH7Rjhy71RV804hh21WAoEe6zJJmcDgrmy5uov26drDYTLMie9MZ1N+w+NViHAI+ZQnwYcYOVWSE7v449oyiYWG91grcPbiG7H/7nijspll0WaDsb6IHi3nmmfTPa9v5IYMTyIqFkPKi59IS/3UPhx80Sh36bQq0vF+Flk1NzWrQKhMFKacYtjvPnf22jYw== 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=WI6Cwo3csL2UV579K9mX1fHqHqk7tmnN/Ark0rqWN4g=; b=h9gdYWl5ZFpH+gsDFPwr8E6Lt8nZK94prIzoTKAowlduvgU+UT3rZl4nYB88MeVBm7PbUDdVq+IKFdyZ6f57iP4qMuAxQEcVogR9XzHQov8G/zoNvKCEu+bljcOsoefRJzU5SnXCoE4gAU7rcYqHqUhPRlRyyDn87U12JxwnbXgseaMz/u7M87P8EZwalB5ZTNMo049uPIgjG2RMh8KGw9KMx0vH3eKAbzSAKCfq+UqzVaSWFJ7VFT2gg4IgjblRceFKN16d87dT/1P0kxPZxWSGY7ohUuL1F9jFij3+qte42sLGrBGIBVmsJszZHY6V1W1d2QkCpFn/rJNlpvOQpQ== 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 MWHPR02MB2398.namprd02.prod.outlook.com (10.168.243.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2495.20; Thu, 28 Nov 2019 16:48:34 +0000 Received: from MWHPR02MB2656.namprd02.prod.outlook.com ([fe80::f801:763d:e7fc:6bf]) by MWHPR02MB2656.namprd02.prod.outlook.com ([fe80::f801:763d:e7fc:6bf%7]) with mapi id 15.20.2474.023; Thu, 28 Nov 2019 16:48:34 +0000 From: Felipe Franciosi To: Marc-Andre Lureau , Philippe Mathieu-Daude , Stefan Hajnoczi , Eduardo Habkost , Markus Armbruster , Alexey Kardashevskiy Subject: [PATCH v2 4/4] qom/object: Use common get/set uint helpers Thread-Topic: [PATCH v2 4/4] qom/object: Use common get/set uint helpers Thread-Index: AQHVpgusfMZNyHGK4E+OOYCzLakcxA== Date: Thu, 28 Nov 2019 16:48:34 +0000 Message-ID: <20191128164810.54279-5-felipe@nutanix.com> References: <20191128164810.54279-1-felipe@nutanix.com> In-Reply-To: <20191128164810.54279-1-felipe@nutanix.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM3PR05CA0154.eurprd05.prod.outlook.com (2603:10a6:207:3::32) 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: [62.254.189.133] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: a25f8a11-1bac-4237-8307-08d77422ce85 x-ms-traffictypediagnostic: MWHPR02MB2398: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-proofpoint-crosstenant: true x-ms-oob-tlc-oobclassifiers: OLM:2512; x-forefront-prvs: 0235CBE7D0 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(396003)(346002)(366004)(376002)(39860400002)(136003)(189003)(199004)(102836004)(110136005)(256004)(14444005)(446003)(36756003)(14454004)(2616005)(6436002)(11346002)(66066001)(4326008)(386003)(6506007)(186003)(26005)(52116002)(76176011)(66556008)(64756008)(1076003)(30864003)(71190400001)(66946007)(5660300002)(71200400001)(6486002)(66446008)(66476007)(86362001)(6512007)(478600001)(54906003)(8936002)(50226002)(316002)(81166006)(2906002)(8676002)(7736002)(305945005)(81156014)(99286004)(25786009)(6116002)(3846002)(64030200001)(579004); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR02MB2398; 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: gRnP1fPTiCaFJx04wEwhIBQqL+aSNDg03LWCWol/0yeLmW79YCgGW9WRdVDpwKfN2FFqmk2sCZ40COgvn0Ee88bwPlbaXpbvtOj0wN+kT4/uTq/522jH0RRE4wxWwBCb/4jZQp8Wcl2jopd2mdcs5YJnzUJebKKY1nzoWpTUUtKHFQ6PmCpyoKWIxs3qcR3GvMOZfWzxnCgnhpdEAB2ft75WCce1ckjAYuoMznq0P1hvAHiSikiOZIVInDef4PN4BKtHUWHVaMm5Qxd7UyoZRPmzaFwIRvum/TbJdqprq3hLaHvoFxoEsdb7ZFK8VemX0yBJNAhcWOhmkxNRqwpQe6z2BAjFP58Q6+GYYSxPR3c9hbBIGfyWevnRMZ56X2/gbco6+/vzLW0BySmUhD6NeNE8EKtxX9yjvGKhmxDrLerate3FxQVw88LgPa0VCNB9 MIME-Version: 1.0 X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: a25f8a11-1bac-4237-8307-08d77422ce85 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Nov 2019 16:48:34.1429 (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: /oTiJzmz5kywTBgqsSIVIGvyu4Bk51KEtZeQ+W5ftLzdKG68pi1TEe+KvgNEO88y1nTQNQ2REtN8iO5nq2moe1wnS1mi1wz7VNsPU1x8ilI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR02MB2398 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-11-28_05:2019-11-28,2019-11-28 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 | 99 +++++----------------------------------- hw/isa/lpc_ich9.c | 13 ++---- hw/misc/edu.c | 14 ++---- hw/pci-host/q35.c | 14 ++---- hw/ppc/spapr.c | 19 ++------ hw/vfio/pci-quirks.c | 20 +++----- memory.c | 15 +----- target/arm/cpu.c | 23 ++-------- target/i386/sev.c | 106 ++++--------------------------------------- 9 files changed, 48 insertions(+), 275 deletions(-) diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c index 236300d2a9..e1bb1afb69 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,18 @@ 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_RD | OBJ_PROP_FLAG_WR, + NULL); + object_property_add_uint8_ptr(obj, ACPI_PM_PROP_S4_DISABLED, + &pm->disable_s4, + OBJ_PROP_FLAG_RD | OBJ_PROP_FLAG_WR, + NULL); + object_property_add_uint8_ptr(obj, ACPI_PM_PROP_S4_VAL, + &pm->s4_val, + OBJ_PROP_FLAG_RD | OBJ_PROP_FLAG_WR, + 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 9a5457c83b..6674ad84c1 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,9 @@ 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_RD, + NULL); object_property_add_uint8_ptr(OBJECT(lpc), ACPI_PM_PROP_ACPI_ENABLE_CMD, &acpi_enable_cmd, OBJ_PROP_FLAG_RD, 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..14058aa57b 100644 --- a/hw/misc/edu.c +++ b/hw/misc/edu.c @@ -396,21 +396,15 @@ 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_RD | OBJ_PROP_FLAG_WR, + 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..e50ebcfc0f 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_RD, 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 e076f6023c..74f47ced32 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -3227,18 +3227,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); @@ -3336,8 +3324,11 @@ 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_RD | OBJ_PROP_FLAG_WR, + &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/hw/vfio/pci-quirks.c b/hw/vfio/pci-quirks.c index 136f3a9ad6..97492cfd51 100644 --- a/hw/vfio/pci-quirks.c +++ b/hw/vfio/pci-quirks.c @@ -2187,14 +2187,6 @@ int vfio_add_virt_caps(VFIOPCIDevice *vdev, Error **errp) return 0; } -static void vfio_pci_nvlink2_get_tgt(Object *obj, Visitor *v, - const char *name, - void *opaque, Error **errp) -{ - uint64_t tgt = (uintptr_t) opaque; - visit_type_uint64(v, name, &tgt, errp); -} - static void vfio_pci_nvlink2_get_link_speed(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) @@ -2240,9 +2232,9 @@ int vfio_pci_nvidia_v100_ram_init(VFIOPCIDevice *vdev, Error **errp) nv2reg->size, p); QLIST_INSERT_HEAD(&vdev->bars[0].quirks, quirk, next); - object_property_add(OBJECT(vdev), "nvlink2-tgt", "uint64", - vfio_pci_nvlink2_get_tgt, NULL, NULL, - (void *) (uintptr_t) cap->tgt, NULL); + object_property_add_uint64_ptr(OBJECT(vdev), "nvlink2-tgt", + (void *)(uintptr_t)cap->tgt, + OBJ_PROP_FLAG_RD, NULL); trace_vfio_pci_nvidia_gpu_setup_quirk(vdev->vbasedev.name, cap->tgt, nv2reg->size); free_exit: @@ -2301,9 +2293,9 @@ int vfio_pci_nvlink2_init(VFIOPCIDevice *vdev, Error **errp) QLIST_INSERT_HEAD(&vdev->bars[0].quirks, quirk, next); } - object_property_add(OBJECT(vdev), "nvlink2-tgt", "uint64", - vfio_pci_nvlink2_get_tgt, NULL, NULL, - (void *) (uintptr_t) captgt->tgt, NULL); + object_property_add_uint64_ptr(OBJECT(vdev), "nvlink2-tgt", + (void *)(uintptr_t)captgt->tgt, + OBJ_PROP_FLAG_RD, NULL); trace_vfio_pci_nvlink2_setup_quirk_ssatgt(vdev->vbasedev.name, captgt->tgt, atsdreg->size); diff --git a/memory.c b/memory.c index 06484c2bff..97861ce30e 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_RD, &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 7a4ac9339b..3fddd61ab3 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,10 @@ 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_RD | OBJ_PROP_FLAG_WR, + &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..5b63a27c91 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_RD | OBJ_PROP_FLAG_WR, NULL); + object_property_add_uint32_ptr(obj, "handle", &sev->handle, + OBJ_PROP_FLAG_RD | OBJ_PROP_FLAG_WR, NULL); + object_property_add_uint32_ptr(obj, "cbitpos", &sev->cbitpos, + OBJ_PROP_FLAG_RD | OBJ_PROP_FLAG_WR, NULL); + object_property_add_uint32_ptr(obj, "reduced-phys-bits", + &sev->reduced_phys_bits, + OBJ_PROP_FLAG_RD | OBJ_PROP_FLAG_WR, NULL); } /* sev guest info */