From nobody Mon Feb 9 04:03:33 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1630507699; cv=none; d=zohomail.com; s=zohoarc; b=ccSPjKfc4Sw2LK2/lGnnqpsC6xrOBINytrtKV/HzbdpWZDDe3nbixexcUqX8Qo2d1ZYYofAWQJ4+lGPlGTxgiBwoCr+KySUB8Qn7RITUPghRedSd0wl9rg5TVgNwtxIYcCsqn9q1nbzxEEL4zPhig18AfLXRHfOQjk9shXdoMgc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1630507699; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=nEvjr/rjtMP/YizFqTyiySxe0kGgrUmoFO0GrcTZhZA=; b=LVE7QMRBRb4uNMo+J6FZhQgnI+JRPw2pGW3KpsvhIqNzWLiaLmTjbTk6AqL0tXkHbzTsb6kx1qmi2X+5aerGjBdHMkiAtFPzDhFFhzF28Uzk7MR1i6GZ+hOYm4eYOTNL6duUG6v23jqfv0F/22tr/Doyu57OHA915yCgQAjD2fY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1630507699567377.9689120721363; Wed, 1 Sep 2021 07:48:19 -0700 (PDT) Received: from localhost ([::1]:60926 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mLRXG-0005nY-Gz for importer@patchew.org; Wed, 01 Sep 2021 10:48:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54712) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mLMED-0003YF-Hf for qemu-devel@nongnu.org; Wed, 01 Sep 2021 05:08:17 -0400 Received: from relay.sw.ru ([185.231.240.75]:35420) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mLME6-0005OR-40 for qemu-devel@nongnu.org; Wed, 01 Sep 2021 05:08:17 -0400 Received: from [192.168.15.100] (helo=max-Swift-SF314-57.sw.ru) by relay.sw.ru with esmtp (Exim 4.94.2) (envelope-from ) id 1mLME0-000RwD-Hv; Wed, 01 Sep 2021 12:08:04 +0300 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-Id:Date:Subject:From: Content-Type; bh=nEvjr/rjtMP/YizFqTyiySxe0kGgrUmoFO0GrcTZhZA=; b=ZWbWspGa6Yjp PD5QMfsTrndZmdj/MqfC5JAxWVUy8/9BhaFO4Lo1kdzhJl0xH3/lcpalcg0ELJpJUktZnly3Mz6E7 vr2IIK2mcnbzLUDsY0JmLa08s6tDBgYjLWb1dHkIQIJKbGZP6I36wIZXLwKa0/FY/ipJacUrKtFSP 1AOCo=; From: Maxim Davydov To: qemu-devel@nongnu.org Cc: den@openvz.org, mst@redhat.com, stefanha@redhat.com, fam@euphon.net, amit@kernel.org, kraxel@redhat.com, berrange@redhat.com, Maxim Davydov Subject: [PATCH v1 1/8] qdev-properties: Add read-only 64 bit property Date: Wed, 1 Sep 2021 12:07:57 +0300 Message-Id: <20210901090804.7139-2-maxim.davydov@virtuozzo.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210901090804.7139-1-maxim.davydov@virtuozzo.com> References: <20210901090804.7139-1-maxim.davydov@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=185.231.240.75; envelope-from=maxim.davydov@virtuozzo.com; helo=relay.sw.ru X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.2 / 5.0 requ) DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Wed, 01 Sep 2021 10:43:12 -0400 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: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1630507699854100001 Content-Type: text/plain; charset="utf-8" In some situations, we need a property that tracks the bit but can't change it (for instance, guest features of virtio device). Signed-off-by: Maxim Davydov --- hw/core/qdev-properties.c | 32 ++++++++++++++++++++++++++++++++ include/hw/qdev-properties.h | 5 +++++ 2 files changed, 37 insertions(+) diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c index 50f4094..d7b0436 100644 --- a/hw/core/qdev-properties.c +++ b/hw/core/qdev-properties.c @@ -231,6 +231,38 @@ const PropertyInfo qdev_prop_bit64 =3D { .set_default_value =3D set_default_value_bool, }; =20 +/* Read-only Bit64 */ + +static void prop_set_read_only_bit64(Object *obj, Visitor *v, const char *= name, + void *opaque, Error **errp) +{ + return; +} + +static uint64_t qdev_get_prop_read_only_mask64(Property *prop) +{ + assert(prop->info =3D=3D &qdev_prop_read_only_bit64); + return 0x1ull << prop->bitnr; +} + +static void prop_get_read_only_bit64(Object *obj, Visitor *v, const char *= name, + void *opaque, Error **errp) +{ + Property *prop =3D opaque; + uint64_t *p =3D object_field_prop_ptr(obj, prop); + bool value =3D (*p & qdev_get_prop_read_only_mask64(prop)) !=3D 0; + + visit_type_bool(v, name, &value, errp); +} + +const PropertyInfo qdev_prop_read_only_bit64 =3D { + .name =3D "bool", + .description =3D "on/off", + .get =3D prop_get_read_only_bit64, + .set =3D prop_set_read_only_bit64, + .set_default_value =3D set_default_value_bool, +}; + /* --- bool --- */ =20 static void get_bool(Object *obj, Visitor *v, const char *name, void *opaq= ue, diff --git a/include/hw/qdev-properties.h b/include/hw/qdev-properties.h index 0ef97d6..4c4bac7 100644 --- a/include/hw/qdev-properties.h +++ b/include/hw/qdev-properties.h @@ -46,6 +46,7 @@ struct PropertyInfo { =20 extern const PropertyInfo qdev_prop_bit; extern const PropertyInfo qdev_prop_bit64; +extern const PropertyInfo qdev_prop_read_only_bit64; extern const PropertyInfo qdev_prop_bool; extern const PropertyInfo qdev_prop_enum; extern const PropertyInfo qdev_prop_uint8; @@ -102,6 +103,10 @@ extern const PropertyInfo qdev_prop_link; .set_default =3D true, \ .defval.u =3D (bool)_defval) =20 +#define DEFINE_PROP_READ_ONLY_BIT64(_name, _state, _field, _bit) = \ + DEFINE_PROP(_name, _state, _field, qdev_prop_read_only_bit64, uint64_t= , \ + .bitnr =3D (_bit)) + #define PROP_ARRAY_LEN_PREFIX "len-" =20 /** --=20 1.8.3.1