From nobody Tue Feb 10 10:20:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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 ARC-Seal: i=1; a=rsa-sha256; t=1621073676; cv=none; d=zohomail.com; s=zohoarc; b=ZWf3E0YwfkcTfSLxuBdAD/TlqdCJQ+wnVzNubNK0P+WrB6jJun61LccbIyVv1lbsQs6gVTLPmRmbjPWViNkfl6xl26+EFxhxL/glsTJYGAN0qLAQ3p+NK49Iqmbu4BtuBzIU9E5++1L+/6upBnKv3nLEv+3SCehTRxGK6OFKY6g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621073676; h=Content-Type: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=wYHmlQokNfUe42s8+1hcMN25pYtyc8hRwsgzYRBLqAU=; b=B3F+hZbqWLRj0F8tQgzvKpHbv0KFiRK6NasDf0B84qFdDio280temWzRtQZVnrYPv5i26JaE/yLiiwHgnOFeTZvkexB4Kv1kiBO9RJ0THIY2AMYy/uRb6YbHF/JyG0haB7woGFgTsE+sPJQ0/o2WbW6fkk0ohkBwnX6ebg3CVwI= ARC-Authentication-Results: i=1; mx.zohomail.com; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16210736761841001.6256965400194; Sat, 15 May 2021 03:14:36 -0700 (PDT) Received: from localhost ([::1]:50652 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lhrJa-0001ec-VL for importer@patchew.org; Sat, 15 May 2021 06:14:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33974) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lhr9O-00064k-7j; Sat, 15 May 2021 06:04:02 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:60909) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lhr9K-0006W1-TE; Sat, 15 May 2021 06:04:01 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue109 [212.227.15.183]) with ESMTPSA (Nemesis) id 1N1feo-1lWoWG33Si-0124Cv; Sat, 15 May 2021 12:03:44 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 09/16] hw/rtc/mc146818rtc: Convert to 3-phase reset (Resettable interface) Date: Sat, 15 May 2021 12:03:28 +0200 Message-Id: <20210515100335.1245468-10-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210515100335.1245468-1-laurent@vivier.eu> References: <20210515100335.1245468-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:ySd+7Fq0UBm4acjQNPswWkZ/9+YxobsWOAU0iX+t/iA/u0MQgWp 6EcymnmUUA5OepU7CBj0ciWPxHSyXP58ewumiZ17MNyrF76lHEEn3Lg9ZI3JCkfMCcIz+pn 3MIE3Uzox6dCxmpPmGUHi26IWPNVwx8Q25yiDG+Ma+KEqxtcXTvSIvNUXeGmJifDQTzMwAg bPtvfyZIQ/72yqupNDQlg== X-UI-Out-Filterresults: notjunk:1;V03:K0:SOI2ISj2HnM=:O7wbSuzFVJrCnMEHCPasEY cu837r8zjq9+yo9+LzF3Gd52xbVpw2TgIpMOahxf/nHFQkwfYz+9dBaXzjJCGiJaaIQ1U4lCI 9VIxELb+4F11Nug3PKQcj5+HBsdgHoEP6dolYe6+0qH+1YBgXTu2jNzzx855ZqBYGctQITa7z 3IOyBjFl0/8EL04yvfIfVo5zOZC/hl8UGgz0YFm7k6KGC5B/qL5yT8JpKBFhgYdm4KcVP2A6Z /9ateLagfFyCloIL3by6J/0M1WHXvrEBT90LPLtpD4C2Ze/2QjJ5wmzEVSRZwB44Un82OW2ti ykaRfhadkdNa9CT4Sx6thRDmRnAk2Zr6GW+PDDvJHU3m/xx3xcqXIJP1aclsfr5/+44KC9Cbl HHopIbJ8YUKH3EK0lLx0CgatPeAXYVsSXPfEO37NpDo0EUMMvVVe5/tkh8qXd0/Ug1m7WBDS/ ZwRI93S+kH2LXs7bUr2YuEU/T5eEU101LlHmkzb3f13tWBEeokL4x4F91tqj/62LzRTFihiBe HiHBAFMhk+BVO69uxZo9NI= 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: none client-ip=212.227.17.24; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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-trivial@nongnu.org, "Edgar E . Iglesias" , Michael Tokarev , Laurent Vivier , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" From: Philippe Mathieu-Daud=C3=A9 TYPE_MC146818_RTC is an ISA device, so its DeviceClass::reset() handler is called automatically when its qbus parent is reset (we don't need to register it manually). We have 2 reset() methods: a generic one and the qdev one. Merge them into a reset_enter handler (keeping the IRQ lowering to a reset_hold one), and remove the qemu_register_reset() call. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Edgar E. Iglesias Message-Id: <20210502163931.552675-3-f4bug@amsat.org> Signed-off-by: Laurent Vivier --- hw/rtc/mc146818rtc.c | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/hw/rtc/mc146818rtc.c b/hw/rtc/mc146818rtc.c index 3d2d3854e716..4fbafddb226d 100644 --- a/hw/rtc/mc146818rtc.c +++ b/hw/rtc/mc146818rtc.c @@ -871,22 +871,6 @@ static void rtc_notify_suspend(Notifier *notifier, voi= d *data) rtc_set_memory(ISA_DEVICE(s), 0xF, 0xFE); } =20 -static void rtc_reset(void *opaque) -{ - RTCState *s =3D opaque; - - s->cmos_data[RTC_REG_B] &=3D ~(REG_B_PIE | REG_B_AIE | REG_B_SQWE); - s->cmos_data[RTC_REG_C] &=3D ~(REG_C_UF | REG_C_IRQF | REG_C_PF | REG_= C_AF); - check_update_timer(s); - - qemu_irq_lower(s->irq); - - if (s->lost_tick_policy =3D=3D LOST_TICK_POLICY_SLEW) { - s->irq_coalesced =3D 0; - s->irq_reinject_on_ack_count =3D 0; - } -} - static const MemoryRegionOps cmos_ops =3D { .read =3D cmos_ioport_read, .write =3D cmos_ioport_write, @@ -961,7 +945,6 @@ static void rtc_realizefn(DeviceState *dev, Error **err= p) memory_region_add_coalescing(&s->coalesced_io, 0, 1); =20 qdev_set_legacy_instance_id(dev, RTC_ISA_BASE, 3); - qemu_register_reset(rtc_reset, s); =20 object_property_add_tm(OBJECT(s), "date", rtc_get_date); =20 @@ -997,15 +980,32 @@ static Property mc146818rtc_properties[] =3D { DEFINE_PROP_END_OF_LIST(), }; =20 -static void rtc_resetdev(DeviceState *d) +static void rtc_reset_enter(Object *obj, ResetType type) { - RTCState *s =3D MC146818_RTC(d); + RTCState *s =3D MC146818_RTC(obj); =20 /* Reason: VM do suspend self will set 0xfe * Reset any values other than 0xfe(Guest suspend case) */ if (s->cmos_data[0x0f] !=3D 0xfe) { s->cmos_data[0x0f] =3D 0x00; } + + s->cmos_data[RTC_REG_B] &=3D ~(REG_B_PIE | REG_B_AIE | REG_B_SQWE); + s->cmos_data[RTC_REG_C] &=3D ~(REG_C_UF | REG_C_IRQF | REG_C_PF | REG_= C_AF); + check_update_timer(s); + + + if (s->lost_tick_policy =3D=3D LOST_TICK_POLICY_SLEW) { + s->irq_coalesced =3D 0; + s->irq_reinject_on_ack_count =3D 0; + } +} + +static void rtc_reset_hold(Object *obj) +{ + RTCState *s =3D MC146818_RTC(obj); + + qemu_irq_lower(s->irq); } =20 static void rtc_build_aml(ISADevice *isadev, Aml *scope) @@ -1032,11 +1032,13 @@ static void rtc_build_aml(ISADevice *isadev, Aml *s= cope) static void rtc_class_initfn(ObjectClass *klass, void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); + ResettableClass *rc =3D RESETTABLE_CLASS(klass); ISADeviceClass *isa =3D ISA_DEVICE_CLASS(klass); =20 dc->realize =3D rtc_realizefn; - dc->reset =3D rtc_resetdev; dc->vmsd =3D &vmstate_rtc; + rc->phases.enter =3D rtc_reset_enter; + rc->phases.hold =3D rtc_reset_hold; isa->build_aml =3D rtc_build_aml; device_class_set_props(dc, mc146818rtc_properties); set_bit(DEVICE_CATEGORY_MISC, dc->categories); --=20 2.31.1