From nobody Mon Feb 9 20:39:42 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646087266624338.5296380067931; Mon, 28 Feb 2022 14:27:46 -0800 (PST) Received: from localhost ([::1]:51872 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nOoUb-0006WG-Jq for importer@patchew.org; Mon, 28 Feb 2022 17:27:45 -0500 Received: from eggs.gnu.org ([209.51.188.92]:47860) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nOoSk-0003qV-13 for qemu-devel@nongnu.org; Mon, 28 Feb 2022 17:25:50 -0500 Received: from [2001:41c9:1:41f::167] (port=51096 helo=mail.default.ilande.bv.iomart.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nOoSi-0003Jq-HM for qemu-devel@nongnu.org; Mon, 28 Feb 2022 17:25:49 -0500 Received: from [2a00:23c4:8ba0:ca00:d4eb:dbd5:5a41:aefe] (helo=kentang.home) by mail.default.ilande.bv.iomart.io with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nOoRz-0004GN-3V; Mon, 28 Feb 2022 22:25:07 +0000 From: Mark Cave-Ayland To: laurent@vivier.eu, pbonzini@redhat.com, fam@euphon.net, qemu-devel@nongnu.org Date: Mon, 28 Feb 2022 22:25:18 +0000 Message-Id: <20220228222527.8234-2-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20220228222527.8234-1-mark.cave-ayland@ilande.co.uk> References: <20220228222527.8234-1-mark.cave-ayland@ilande.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 2a00:23c4:8ba0:ca00:d4eb:dbd5:5a41:aefe X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: [PATCH 01/10] macfb: add VMStateDescription for MacfbNubusState and MacfbSysBusState X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.default.ilande.bv.iomart.io) X-Host-Lookup-Failed: Reverse DNS lookup failed for 2001:41c9:1:41f::167 (failed) 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=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.default.ilande.bv.iomart.io X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 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-ZM-MESSAGEID: 1646087268689100003 Content-Type: text/plain; charset="utf-8" Currently when QEMU tries to migrate the macfb framebuffer it crashes rando= mly because the opaque provided by the DeviceClass vmsd property for both devic= es is set to MacfbState rather than MacfbNubusState or MacfbSysBusState as appropriate. Resolve the issue by adding new VMStateDescriptions for MacfbNubusState and MacfbSysBusState which embed the existing vmstate_macfb VMStateDescription within them using VMSTATE_STRUCT. Signed-off-by: Mark Cave-Ayland --- hw/display/macfb.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/hw/display/macfb.c b/hw/display/macfb.c index c9b468c10e..66ceacf1ae 100644 --- a/hw/display/macfb.c +++ b/hw/display/macfb.c @@ -746,6 +746,16 @@ static Property macfb_sysbus_properties[] =3D { DEFINE_PROP_END_OF_LIST(), }; =20 +static const VMStateDescription vmstate_macfb_sysbus =3D { + .name =3D "macfb-sysbus", + .version_id =3D 1, + .minimum_version_id =3D 1, + .fields =3D (VMStateField[]) { + VMSTATE_STRUCT(macfb, MacfbSysBusState, 1, vmstate_macfb, MacfbSta= te), + VMSTATE_END_OF_LIST() + } +}; + static Property macfb_nubus_properties[] =3D { DEFINE_PROP_UINT32("width", MacfbNubusState, macfb.width, 640), DEFINE_PROP_UINT32("height", MacfbNubusState, macfb.height, 480), @@ -755,6 +765,16 @@ static Property macfb_nubus_properties[] =3D { DEFINE_PROP_END_OF_LIST(), }; =20 +static const VMStateDescription vmstate_macfb_nubus =3D { + .name =3D "macfb-nubus", + .version_id =3D 1, + .minimum_version_id =3D 1, + .fields =3D (VMStateField[]) { + VMSTATE_STRUCT(macfb, MacfbNubusState, 1, vmstate_macfb, MacfbStat= e), + VMSTATE_END_OF_LIST() + } +}; + static void macfb_sysbus_class_init(ObjectClass *klass, void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); @@ -762,7 +782,7 @@ static void macfb_sysbus_class_init(ObjectClass *klass,= void *data) dc->realize =3D macfb_sysbus_realize; dc->desc =3D "SysBus Macintosh framebuffer"; dc->reset =3D macfb_sysbus_reset; - dc->vmsd =3D &vmstate_macfb; + dc->vmsd =3D &vmstate_macfb_sysbus; device_class_set_props(dc, macfb_sysbus_properties); } =20 @@ -777,7 +797,7 @@ static void macfb_nubus_class_init(ObjectClass *klass, = void *data) &ndc->parent_unrealize); dc->desc =3D "Nubus Macintosh framebuffer"; dc->reset =3D macfb_nubus_reset; - dc->vmsd =3D &vmstate_macfb; + dc->vmsd =3D &vmstate_macfb_nubus; set_bit(DEVICE_CATEGORY_DISPLAY, dc->categories); device_class_set_props(dc, macfb_nubus_properties); } --=20 2.20.1 From nobody Mon Feb 9 20:39:42 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646087266647839.1128880707828; Mon, 28 Feb 2022 14:27:46 -0800 (PST) Received: from localhost ([::1]:51772 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nOoUb-0006TA-8K for importer@patchew.org; Mon, 28 Feb 2022 17:27:45 -0500 Received: from eggs.gnu.org ([209.51.188.92]:47874) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nOoSl-0003rz-U9 for qemu-devel@nongnu.org; Mon, 28 Feb 2022 17:25:52 -0500 Received: from [2001:41c9:1:41f::167] (port=51104 helo=mail.default.ilande.bv.iomart.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nOoSk-0003LO-E9 for qemu-devel@nongnu.org; Mon, 28 Feb 2022 17:25:51 -0500 Received: from [2a00:23c4:8ba0:ca00:d4eb:dbd5:5a41:aefe] (helo=kentang.home) by mail.default.ilande.bv.iomart.io with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nOoS3-0004GN-Bj; Mon, 28 Feb 2022 22:25:11 +0000 From: Mark Cave-Ayland To: laurent@vivier.eu, pbonzini@redhat.com, fam@euphon.net, qemu-devel@nongnu.org Date: Mon, 28 Feb 2022 22:25:19 +0000 Message-Id: <20220228222527.8234-3-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20220228222527.8234-1-mark.cave-ayland@ilande.co.uk> References: <20220228222527.8234-1-mark.cave-ayland@ilande.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 2a00:23c4:8ba0:ca00:d4eb:dbd5:5a41:aefe X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: [PATCH 02/10] macfb: don't use special irq_state and irq_mask variables in MacfbState X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.default.ilande.bv.iomart.io) X-Host-Lookup-Failed: Reverse DNS lookup failed for 2001:41c9:1:41f::167 (failed) 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=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.default.ilande.bv.iomart.io X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 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-ZM-MESSAGEID: 1646087268689100002 Content-Type: text/plain; charset="utf-8" The current IRQ state and IRQ mask are handled exactly the same as standard register accesses, so store these values directly in the regs array rather than having separate variables for them. Signed-off-by: Mark Cave-Ayland Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/display/macfb.c | 15 +++++++-------- include/hw/display/macfb.h | 2 -- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/hw/display/macfb.c b/hw/display/macfb.c index 66ceacf1ae..fb54b460c1 100644 --- a/hw/display/macfb.c +++ b/hw/display/macfb.c @@ -476,7 +476,8 @@ static void macfb_update_display(void *opaque) =20 static void macfb_update_irq(MacfbState *s) { - uint32_t irq_state =3D s->irq_state & s->irq_mask; + uint32_t irq_state =3D s->regs[DAFB_INTR_STAT >> 2] & + s->regs[DAFB_INTR_MASK >> 2]; =20 if (irq_state) { qemu_irq_raise(s->irq); @@ -496,7 +497,7 @@ static void macfb_vbl_timer(void *opaque) MacfbState *s =3D opaque; int64_t next_vbl; =20 - s->irq_state |=3D DAFB_INTR_VBL; + s->regs[DAFB_INTR_STAT >> 2] |=3D DAFB_INTR_VBL; macfb_update_irq(s); =20 /* 60 Hz irq */ @@ -530,10 +531,8 @@ static uint64_t macfb_ctrl_read(void *opaque, case DAFB_MODE_VADDR2: case DAFB_MODE_CTRL1: case DAFB_MODE_CTRL2: - val =3D s->regs[addr >> 2]; - break; case DAFB_INTR_STAT: - val =3D s->irq_state; + val =3D s->regs[addr >> 2]; break; case DAFB_MODE_SENSE: val =3D macfb_sense_read(s); @@ -568,7 +567,7 @@ static void macfb_ctrl_write(void *opaque, macfb_sense_write(s, val); break; case DAFB_INTR_MASK: - s->irq_mask =3D val; + s->regs[addr >> 2] =3D val; if (val & DAFB_INTR_VBL) { next_vbl =3D macfb_next_vbl(); timer_mod(s->vbl_timer, next_vbl); @@ -577,12 +576,12 @@ static void macfb_ctrl_write(void *opaque, } break; case DAFB_INTR_CLEAR: - s->irq_state &=3D ~DAFB_INTR_VBL; + s->regs[DAFB_INTR_STAT >> 2] &=3D ~DAFB_INTR_VBL; macfb_update_irq(s); break; case DAFB_RESET: s->palette_current =3D 0; - s->irq_state &=3D ~DAFB_INTR_VBL; + s->regs[DAFB_INTR_STAT >> 2] &=3D ~DAFB_INTR_VBL; macfb_update_irq(s); break; case DAFB_LUT: diff --git a/include/hw/display/macfb.h b/include/hw/display/macfb.h index e52775aa21..6d9f0f7869 100644 --- a/include/hw/display/macfb.h +++ b/include/hw/display/macfb.h @@ -66,8 +66,6 @@ typedef struct MacfbState { uint32_t regs[MACFB_NUM_REGS]; MacFbMode *mode; =20 - uint32_t irq_state; - uint32_t irq_mask; QEMUTimer *vbl_timer; qemu_irq irq; } MacfbState; --=20 2.20.1 From nobody Mon Feb 9 20:39:42 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646087400234807.9944766786276; Mon, 28 Feb 2022 14:30:00 -0800 (PST) Received: from localhost ([::1]:58104 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nOoWl-0002ME-36 for importer@patchew.org; Mon, 28 Feb 2022 17:29:59 -0500 Received: from eggs.gnu.org ([209.51.188.92]:47908) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nOoSq-0003yO-OU for qemu-devel@nongnu.org; Mon, 28 Feb 2022 17:25:56 -0500 Received: from [2001:41c9:1:41f::167] (port=51120 helo=mail.default.ilande.bv.iomart.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nOoSo-0003Oa-AG for qemu-devel@nongnu.org; Mon, 28 Feb 2022 17:25:55 -0500 Received: from [2a00:23c4:8ba0:ca00:d4eb:dbd5:5a41:aefe] (helo=kentang.home) by mail.default.ilande.bv.iomart.io with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nOoS7-0004GN-J7; Mon, 28 Feb 2022 22:25:15 +0000 From: Mark Cave-Ayland To: laurent@vivier.eu, pbonzini@redhat.com, fam@euphon.net, qemu-devel@nongnu.org Date: Mon, 28 Feb 2022 22:25:20 +0000 Message-Id: <20220228222527.8234-4-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20220228222527.8234-1-mark.cave-ayland@ilande.co.uk> References: <20220228222527.8234-1-mark.cave-ayland@ilande.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 2a00:23c4:8ba0:ca00:d4eb:dbd5:5a41:aefe X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: [PATCH 03/10] macfb: increase number of registers saved in MacfbState X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.default.ilande.bv.iomart.io) X-Host-Lookup-Failed: Reverse DNS lookup failed for 2001:41c9:1:41f::167 (failed) 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=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.default.ilande.bv.iomart.io X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 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-ZM-MESSAGEID: 1646087400857100001 Content-Type: text/plain; charset="utf-8" The MacOS toolbox ROM accesses a number of addresses between 0x0 and 0x200 = during initialisation and resolution changes. Whilst the function of many of these registers is unknown, it is worth the minimal cost of saving these extra va= lues as part of migration to help future-proof the migration stream for the q800 ma= chine as it starts to stabilise. Signed-off-by: Mark Cave-Ayland --- include/hw/display/macfb.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/hw/display/macfb.h b/include/hw/display/macfb.h index 6d9f0f7869..c0e2df8dc6 100644 --- a/include/hw/display/macfb.h +++ b/include/hw/display/macfb.h @@ -48,7 +48,7 @@ typedef struct MacFbMode { uint32_t offset; } MacFbMode; =20 -#define MACFB_NUM_REGS 8 +#define MACFB_NUM_REGS (0x200 / sizeof(uint32_t)) =20 typedef struct MacfbState { MemoryRegion mem_vram; --=20 2.20.1 From nobody Mon Feb 9 20:39:42 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646087402779670.6160544798456; Mon, 28 Feb 2022 14:30:02 -0800 (PST) Received: from localhost ([::1]:58344 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nOoWn-0002Vt-KA for importer@patchew.org; Mon, 28 Feb 2022 17:30:01 -0500 Received: from eggs.gnu.org ([209.51.188.92]:47926) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nOoSr-00040j-S4 for qemu-devel@nongnu.org; Mon, 28 Feb 2022 17:25:57 -0500 Received: from [2001:41c9:1:41f::167] (port=51124 helo=mail.default.ilande.bv.iomart.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nOoSq-0003Pi-Gu for qemu-devel@nongnu.org; Mon, 28 Feb 2022 17:25:57 -0500 Received: from [2a00:23c4:8ba0:ca00:d4eb:dbd5:5a41:aefe] (helo=kentang.home) by mail.default.ilande.bv.iomart.io with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nOoSB-0004GN-Px; Mon, 28 Feb 2022 22:25:16 +0000 From: Mark Cave-Ayland To: laurent@vivier.eu, pbonzini@redhat.com, fam@euphon.net, qemu-devel@nongnu.org Date: Mon, 28 Feb 2022 22:25:21 +0000 Message-Id: <20220228222527.8234-5-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20220228222527.8234-1-mark.cave-ayland@ilande.co.uk> References: <20220228222527.8234-1-mark.cave-ayland@ilande.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 2a00:23c4:8ba0:ca00:d4eb:dbd5:5a41:aefe X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: [PATCH 04/10] macfb: add VMStateDescription fields for display type and VBL timer X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.default.ilande.bv.iomart.io) X-Host-Lookup-Failed: Reverse DNS lookup failed for 2001:41c9:1:41f::167 (failed) 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=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.default.ilande.bv.iomart.io X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 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-ZM-MESSAGEID: 1646087404641100005 Content-Type: text/plain; charset="utf-8" These fields are required in the migration stream to restore macfb state correctly. Signed-off-by: Mark Cave-Ayland --- hw/display/macfb.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hw/display/macfb.c b/hw/display/macfb.c index fb54b460c1..f9ceea532e 100644 --- a/hw/display/macfb.c +++ b/hw/display/macfb.c @@ -617,9 +617,11 @@ static const VMStateDescription vmstate_macfb =3D { .minimum_version_id =3D 1, .post_load =3D macfb_post_load, .fields =3D (VMStateField[]) { + VMSTATE_UINT8(type, MacfbState), VMSTATE_UINT8_ARRAY(color_palette, MacfbState, 256 * 3), VMSTATE_UINT32(palette_current, MacfbState), VMSTATE_UINT32_ARRAY(regs, MacfbState, MACFB_NUM_REGS), + VMSTATE_TIMER_PTR(vbl_timer, MacfbState), VMSTATE_END_OF_LIST() } }; --=20 2.20.1 From nobody Mon Feb 9 20:39:42 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646087538217599.3256114675901; Mon, 28 Feb 2022 14:32:18 -0800 (PST) Received: from localhost ([::1]:36324 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nOoYz-0006nY-En for importer@patchew.org; Mon, 28 Feb 2022 17:32:17 -0500 Received: from eggs.gnu.org ([209.51.188.92]:47950) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nOoSw-00046e-RX for qemu-devel@nongnu.org; Mon, 28 Feb 2022 17:26:02 -0500 Received: from [2001:41c9:1:41f::167] (port=51134 helo=mail.default.ilande.bv.iomart.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nOoSt-0003Q7-24 for qemu-devel@nongnu.org; Mon, 28 Feb 2022 17:26:01 -0500 Received: from [2a00:23c4:8ba0:ca00:d4eb:dbd5:5a41:aefe] (helo=kentang.home) by mail.default.ilande.bv.iomart.io with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nOoSC-0004GN-2o; Mon, 28 Feb 2022 22:25:20 +0000 From: Mark Cave-Ayland To: laurent@vivier.eu, pbonzini@redhat.com, fam@euphon.net, qemu-devel@nongnu.org Date: Mon, 28 Feb 2022 22:25:22 +0000 Message-Id: <20220228222527.8234-6-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20220228222527.8234-1-mark.cave-ayland@ilande.co.uk> References: <20220228222527.8234-1-mark.cave-ayland@ilande.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 2a00:23c4:8ba0:ca00:d4eb:dbd5:5a41:aefe X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: [PATCH 05/10] macfb: set initial value of mode control registers in macfb_common_realize() X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.default.ilande.bv.iomart.io) X-Host-Lookup-Failed: Reverse DNS lookup failed for 2001:41c9:1:41f::167 (failed) 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=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.default.ilande.bv.iomart.io X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 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-ZM-MESSAGEID: 1646087539935100001 Content-Type: text/plain; charset="utf-8" If booting Linux directly in the q800 machine using -kernel rather than usi= ng a MacOS toolbox ROM, the mode control registers are never initialised, causing macfb_mode_write() to fail to determine the current resolution after migration. Resolve this by always setting the initial values of the mode co= ntrol registers based upon the initial macfb properties during realize. Signed-off-by: Mark Cave-Ayland --- hw/display/macfb.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/hw/display/macfb.c b/hw/display/macfb.c index f9ceea532e..bcfb2d0dab 100644 --- a/hw/display/macfb.c +++ b/hw/display/macfb.c @@ -647,6 +647,14 @@ static bool macfb_common_realize(DeviceState *dev, Mac= fbState *s, Error **errp) return false; } =20 + /* + * Set mode control registers to match the mode found above so that + * macfb_mode_write() does the right thing if no MacOS toolbox ROM + * is present to initialise them + */ + s->regs[DAFB_MODE_CTRL1 >> 2] =3D s->mode->mode_ctrl1; + s->regs[DAFB_MODE_CTRL2 >> 2] =3D s->mode->mode_ctrl2; + s->con =3D graphic_console_init(dev, 0, &macfb_ops, s); surface =3D qemu_console_surface(s->con); =20 --=20 2.20.1 From nobody Mon Feb 9 20:39:42 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646087544714610.131864415496; Mon, 28 Feb 2022 14:32:24 -0800 (PST) Received: from localhost ([::1]:36532 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nOoZ5-0006vz-NT for importer@patchew.org; Mon, 28 Feb 2022 17:32:23 -0500 Received: from eggs.gnu.org ([209.51.188.92]:47978) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nOoSy-00048K-MS for qemu-devel@nongnu.org; Mon, 28 Feb 2022 17:26:06 -0500 Received: from [2001:41c9:1:41f::167] (port=51144 helo=mail.default.ilande.bv.iomart.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nOoSx-0003QS-A4 for qemu-devel@nongnu.org; Mon, 28 Feb 2022 17:26:04 -0500 Received: from [2a00:23c4:8ba0:ca00:d4eb:dbd5:5a41:aefe] (helo=kentang.home) by mail.default.ilande.bv.iomart.io with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nOoSG-0004GN-8w; Mon, 28 Feb 2022 22:25:24 +0000 From: Mark Cave-Ayland To: laurent@vivier.eu, pbonzini@redhat.com, fam@euphon.net, qemu-devel@nongnu.org Date: Mon, 28 Feb 2022 22:25:23 +0000 Message-Id: <20220228222527.8234-7-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20220228222527.8234-1-mark.cave-ayland@ilande.co.uk> References: <20220228222527.8234-1-mark.cave-ayland@ilande.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 2a00:23c4:8ba0:ca00:d4eb:dbd5:5a41:aefe X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: [PATCH 06/10] esp: introduce esp_set_pdma_cb() function X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.default.ilande.bv.iomart.io) X-Host-Lookup-Failed: Reverse DNS lookup failed for 2001:41c9:1:41f::167 (failed) 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=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.default.ilande.bv.iomart.io X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 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-ZM-MESSAGEID: 1646087545940100003 Content-Type: text/plain; charset="utf-8" This function is to be used to set the current PDMA callback rather than accessing the ESPState pdma_cb function pointer directly. Signed-off-by: Mark Cave-Ayland Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/scsi/esp.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c index 58d0edbd56..d1640218c4 100644 --- a/hw/scsi/esp.c +++ b/hw/scsi/esp.c @@ -195,6 +195,11 @@ static void esp_pdma_write(ESPState *s, uint8_t val) esp_set_tc(s, dmalen); } =20 +static void esp_set_pdma_cb(ESPState *s, void (*cb)(ESPState *)) +{ + s->pdma_cb =3D cb; +} + static int esp_select(ESPState *s) { int target; @@ -356,7 +361,7 @@ static void handle_satn(ESPState *s) s->dma_cb =3D handle_satn; return; } - s->pdma_cb =3D satn_pdma_cb; + esp_set_pdma_cb(s, satn_pdma_cb); cmdlen =3D get_cmd(s, ESP_CMDFIFO_SZ); if (cmdlen > 0) { s->cmdfifo_cdb_offset =3D 1; @@ -387,7 +392,7 @@ static void handle_s_without_atn(ESPState *s) s->dma_cb =3D handle_s_without_atn; return; } - s->pdma_cb =3D s_without_satn_pdma_cb; + esp_set_pdma_cb(s, s_without_satn_pdma_cb); cmdlen =3D get_cmd(s, ESP_CMDFIFO_SZ); if (cmdlen > 0) { s->cmdfifo_cdb_offset =3D 0; @@ -422,7 +427,7 @@ static void handle_satn_stop(ESPState *s) s->dma_cb =3D handle_satn_stop; return; } - s->pdma_cb =3D satn_stop_pdma_cb; + esp_set_pdma_cb(s, satn_stop_pdma_cb); cmdlen =3D get_cmd(s, 1); if (cmdlen > 0) { trace_esp_handle_satn_stop(fifo8_num_used(&s->cmdfifo)); @@ -464,7 +469,7 @@ static void write_response(ESPState *s) s->rregs[ESP_RINTR] |=3D INTR_BS | INTR_FC; s->rregs[ESP_RSEQ] =3D SEQ_CD; } else { - s->pdma_cb =3D write_response_pdma_cb; + esp_set_pdma_cb(s, write_response_pdma_cb); esp_raise_drq(s); return; } @@ -604,7 +609,7 @@ static void esp_do_dma(ESPState *s) s->dma_memory_read(s->dma_opaque, buf, len); fifo8_push_all(&s->cmdfifo, buf, len); } else { - s->pdma_cb =3D do_dma_pdma_cb; + esp_set_pdma_cb(s, do_dma_pdma_cb); esp_raise_drq(s); return; } @@ -646,7 +651,7 @@ static void esp_do_dma(ESPState *s) if (s->dma_memory_read) { s->dma_memory_read(s->dma_opaque, s->async_buf, len); } else { - s->pdma_cb =3D do_dma_pdma_cb; + esp_set_pdma_cb(s, do_dma_pdma_cb); esp_raise_drq(s); return; } @@ -678,7 +683,7 @@ static void esp_do_dma(ESPState *s) } =20 esp_set_tc(s, esp_get_tc(s) - len); - s->pdma_cb =3D do_dma_pdma_cb; + esp_set_pdma_cb(s, do_dma_pdma_cb); esp_raise_drq(s); =20 /* Indicate transfer to FIFO is complete */ --=20 2.20.1 From nobody Mon Feb 9 20:39:42 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16460876612041006.7439115430501; Mon, 28 Feb 2022 14:34:21 -0800 (PST) Received: from localhost ([::1]:41978 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nOoay-0002CY-4y for importer@patchew.org; Mon, 28 Feb 2022 17:34:20 -0500 Received: from eggs.gnu.org ([209.51.188.92]:48004) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nOoT3-0004DW-2A for qemu-devel@nongnu.org; Mon, 28 Feb 2022 17:26:09 -0500 Received: from [2001:41c9:1:41f::167] (port=51154 helo=mail.default.ilande.bv.iomart.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nOoT1-0003R4-S7 for qemu-devel@nongnu.org; Mon, 28 Feb 2022 17:26:08 -0500 Received: from [2a00:23c4:8ba0:ca00:d4eb:dbd5:5a41:aefe] (helo=kentang.home) by mail.default.ilande.bv.iomart.io with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nOoSK-0004GN-Fw; Mon, 28 Feb 2022 22:25:28 +0000 From: Mark Cave-Ayland To: laurent@vivier.eu, pbonzini@redhat.com, fam@euphon.net, qemu-devel@nongnu.org Date: Mon, 28 Feb 2022 22:25:24 +0000 Message-Id: <20220228222527.8234-8-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20220228222527.8234-1-mark.cave-ayland@ilande.co.uk> References: <20220228222527.8234-1-mark.cave-ayland@ilande.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 2a00:23c4:8ba0:ca00:d4eb:dbd5:5a41:aefe X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: [PATCH 07/10] esp: introduce esp_pdma_cb() function X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.default.ilande.bv.iomart.io) X-Host-Lookup-Failed: Reverse DNS lookup failed for 2001:41c9:1:41f::167 (failed) 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=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.default.ilande.bv.iomart.io X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 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-ZM-MESSAGEID: 1646087663349100001 Content-Type: text/plain; charset="utf-8" This function is to be used to execute the current PDMA callback rather than dereferencing the ESPState pdma_cb function pointer directly. Signed-off-by: Mark Cave-Ayland Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/scsi/esp.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c index d1640218c4..035fb0d1f6 100644 --- a/hw/scsi/esp.c +++ b/hw/scsi/esp.c @@ -200,6 +200,11 @@ static void esp_set_pdma_cb(ESPState *s, void (*cb)(ES= PState *)) s->pdma_cb =3D cb; } =20 +static void esp_pdma_cb(ESPState *s) +{ + s->pdma_cb(s); +} + static int esp_select(ESPState *s) { int target; @@ -1268,7 +1273,7 @@ static void sysbus_esp_pdma_write(void *opaque, hwadd= r addr, esp_pdma_write(s, val); break; } - s->pdma_cb(s); + esp_pdma_cb(s); } =20 static uint64_t sysbus_esp_pdma_read(void *opaque, hwaddr addr, @@ -1290,7 +1295,7 @@ static uint64_t sysbus_esp_pdma_read(void *opaque, hw= addr addr, break; } if (fifo8_num_used(&s->fifo) < 2) { - s->pdma_cb(s); + esp_pdma_cb(s); } return val; } --=20 2.20.1 From nobody Mon Feb 9 20:39:42 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 164608766188012.522844467555046; Mon, 28 Feb 2022 14:34:21 -0800 (PST) Received: from localhost ([::1]:41890 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nOoaw-00029B-NM for importer@patchew.org; Mon, 28 Feb 2022 17:34:18 -0500 Received: from eggs.gnu.org ([209.51.188.92]:48070) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nOoT7-0004Ko-Sn for qemu-devel@nongnu.org; Mon, 28 Feb 2022 17:26:14 -0500 Received: from [2001:41c9:1:41f::167] (port=51180 helo=mail.default.ilande.bv.iomart.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nOoT5-0003RS-KF for qemu-devel@nongnu.org; Mon, 28 Feb 2022 17:26:13 -0500 Received: from [2a00:23c4:8ba0:ca00:d4eb:dbd5:5a41:aefe] (helo=kentang.home) by mail.default.ilande.bv.iomart.io with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nOoSO-0004GN-Ms; Mon, 28 Feb 2022 22:25:32 +0000 From: Mark Cave-Ayland To: laurent@vivier.eu, pbonzini@redhat.com, fam@euphon.net, qemu-devel@nongnu.org Date: Mon, 28 Feb 2022 22:25:25 +0000 Message-Id: <20220228222527.8234-9-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20220228222527.8234-1-mark.cave-ayland@ilande.co.uk> References: <20220228222527.8234-1-mark.cave-ayland@ilande.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 2a00:23c4:8ba0:ca00:d4eb:dbd5:5a41:aefe X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: [PATCH 08/10] esp: convert ESPState pdma_cb from a function pointer to an integer X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.default.ilande.bv.iomart.io) X-Host-Lookup-Failed: Reverse DNS lookup failed for 2001:41c9:1:41f::167 (failed) 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=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.default.ilande.bv.iomart.io X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 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-ZM-MESSAGEID: 1646087663371100002 Content-Type: text/plain; charset="utf-8" This prepares for the inclusion of the current PDMA callback in the migrati= on stream since the callback is referenced by an integer instead of a function pointer. Signed-off-by: Mark Cave-Ayland Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/scsi/esp.c | 47 ++++++++++++++++++++++++++++++------------- include/hw/scsi/esp.h | 11 +++++++++- 2 files changed, 43 insertions(+), 15 deletions(-) diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c index 035fb0d1f6..e8b6f25dbb 100644 --- a/hw/scsi/esp.c +++ b/hw/scsi/esp.c @@ -195,14 +195,10 @@ static void esp_pdma_write(ESPState *s, uint8_t val) esp_set_tc(s, dmalen); } =20 -static void esp_set_pdma_cb(ESPState *s, void (*cb)(ESPState *)) +static void esp_set_pdma_cb(ESPState *s, int pdma_cb) { - s->pdma_cb =3D cb; -} - -static void esp_pdma_cb(ESPState *s) -{ - s->pdma_cb(s); + assert(pdma_cb >=3D 0 && pdma_cb < PDMA_NUM_CBS); + s->pdma_cb =3D pdma_cb; } =20 static int esp_select(ESPState *s) @@ -366,7 +362,7 @@ static void handle_satn(ESPState *s) s->dma_cb =3D handle_satn; return; } - esp_set_pdma_cb(s, satn_pdma_cb); + esp_set_pdma_cb(s, PDMA_SATN_PDMA_CB); cmdlen =3D get_cmd(s, ESP_CMDFIFO_SZ); if (cmdlen > 0) { s->cmdfifo_cdb_offset =3D 1; @@ -397,7 +393,7 @@ static void handle_s_without_atn(ESPState *s) s->dma_cb =3D handle_s_without_atn; return; } - esp_set_pdma_cb(s, s_without_satn_pdma_cb); + esp_set_pdma_cb(s, PDMA_S_WITHOUT_SATN_PDMA_CB); cmdlen =3D get_cmd(s, ESP_CMDFIFO_SZ); if (cmdlen > 0) { s->cmdfifo_cdb_offset =3D 0; @@ -432,7 +428,7 @@ static void handle_satn_stop(ESPState *s) s->dma_cb =3D handle_satn_stop; return; } - esp_set_pdma_cb(s, satn_stop_pdma_cb); + esp_set_pdma_cb(s, PDMA_SATN_STOP_PDMA_CB); cmdlen =3D get_cmd(s, 1); if (cmdlen > 0) { trace_esp_handle_satn_stop(fifo8_num_used(&s->cmdfifo)); @@ -474,7 +470,7 @@ static void write_response(ESPState *s) s->rregs[ESP_RINTR] |=3D INTR_BS | INTR_FC; s->rregs[ESP_RSEQ] =3D SEQ_CD; } else { - esp_set_pdma_cb(s, write_response_pdma_cb); + esp_set_pdma_cb(s, PDMA_WRITE_RESPONSE_PDMA_CB); esp_raise_drq(s); return; } @@ -614,7 +610,7 @@ static void esp_do_dma(ESPState *s) s->dma_memory_read(s->dma_opaque, buf, len); fifo8_push_all(&s->cmdfifo, buf, len); } else { - esp_set_pdma_cb(s, do_dma_pdma_cb); + esp_set_pdma_cb(s, PDMA_DO_DMA_PDMA_CB); esp_raise_drq(s); return; } @@ -656,7 +652,7 @@ static void esp_do_dma(ESPState *s) if (s->dma_memory_read) { s->dma_memory_read(s->dma_opaque, s->async_buf, len); } else { - esp_set_pdma_cb(s, do_dma_pdma_cb); + esp_set_pdma_cb(s, PDMA_DO_DMA_PDMA_CB); esp_raise_drq(s); return; } @@ -688,7 +684,7 @@ static void esp_do_dma(ESPState *s) } =20 esp_set_tc(s, esp_get_tc(s) - len); - esp_set_pdma_cb(s, do_dma_pdma_cb); + esp_set_pdma_cb(s, PDMA_DO_DMA_PDMA_CB); esp_raise_drq(s); =20 /* Indicate transfer to FIFO is complete */ @@ -787,6 +783,29 @@ static void esp_do_nodma(ESPState *s) esp_raise_irq(s); } =20 +static void esp_pdma_cb(ESPState *s) +{ + switch (s->pdma_cb) { + case PDMA_SATN_PDMA_CB: + satn_pdma_cb(s); + break; + case PDMA_S_WITHOUT_SATN_PDMA_CB: + s_without_satn_pdma_cb(s); + break; + case PDMA_SATN_STOP_PDMA_CB: + satn_stop_pdma_cb(s); + break; + case PDMA_WRITE_RESPONSE_PDMA_CB: + write_response_pdma_cb(s); + break; + case PDMA_DO_DMA_PDMA_CB: + do_dma_pdma_cb(s); + break; + default: + g_assert_not_reached(); + } +} + void esp_command_complete(SCSIRequest *req, size_t resid) { ESPState *s =3D req->hba_private; diff --git a/include/hw/scsi/esp.h b/include/hw/scsi/esp.h index b1ec27612f..885ccf4660 100644 --- a/include/hw/scsi/esp.h +++ b/include/hw/scsi/esp.h @@ -51,7 +51,7 @@ struct ESPState { ESPDMAMemoryReadWriteFunc dma_memory_write; void *dma_opaque; void (*dma_cb)(ESPState *s); - void (*pdma_cb)(ESPState *s); + uint8_t pdma_cb; =20 uint8_t mig_version_id; =20 @@ -150,6 +150,15 @@ struct SysBusESPState { #define TCHI_FAS100A 0x4 #define TCHI_AM53C974 0x12 =20 +/* PDMA callbacks */ +#define PDMA_SATN_PDMA_CB 0 +#define PDMA_S_WITHOUT_SATN_PDMA_CB 1 +#define PDMA_SATN_STOP_PDMA_CB 2 +#define PDMA_WRITE_RESPONSE_PDMA_CB 3 +#define PDMA_DO_DMA_PDMA_CB 4 + +#define PDMA_NUM_CBS 5 + void esp_dma_enable(ESPState *s, int irq, int level); void esp_request_cancelled(SCSIRequest *req); void esp_command_complete(SCSIRequest *req, size_t resid); --=20 2.20.1 From nobody Mon Feb 9 20:39:42 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646087401449478.78898921018276; Mon, 28 Feb 2022 14:30:01 -0800 (PST) Received: from localhost ([::1]:58216 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nOoWm-0002Qi-94 for importer@patchew.org; Mon, 28 Feb 2022 17:30:00 -0500 Received: from eggs.gnu.org ([209.51.188.92]:48040) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nOoT6-0004Jj-JZ for qemu-devel@nongnu.org; Mon, 28 Feb 2022 17:26:12 -0500 Received: from [2001:41c9:1:41f::167] (port=51178 helo=mail.default.ilande.bv.iomart.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nOoT5-0003RQ-84 for qemu-devel@nongnu.org; Mon, 28 Feb 2022 17:26:12 -0500 Received: from [2a00:23c4:8ba0:ca00:d4eb:dbd5:5a41:aefe] (helo=kentang.home) by mail.default.ilande.bv.iomart.io with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nOoSS-0004GN-Ug; Mon, 28 Feb 2022 22:25:33 +0000 From: Mark Cave-Ayland To: laurent@vivier.eu, pbonzini@redhat.com, fam@euphon.net, qemu-devel@nongnu.org Date: Mon, 28 Feb 2022 22:25:26 +0000 Message-Id: <20220228222527.8234-10-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20220228222527.8234-1-mark.cave-ayland@ilande.co.uk> References: <20220228222527.8234-1-mark.cave-ayland@ilande.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 2a00:23c4:8ba0:ca00:d4eb:dbd5:5a41:aefe X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: [PATCH 09/10] esp: include the current PDMA callback in the migration stream X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.default.ilande.bv.iomart.io) X-Host-Lookup-Failed: Reverse DNS lookup failed for 2001:41c9:1:41f::167 (failed) 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=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.default.ilande.bv.iomart.io X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 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-ZM-MESSAGEID: 1646087402684100003 Content-Type: text/plain; charset="utf-8" This involves (re)adding a PDMA-specific subsection to hold the reference t= o the current PDMA callback. Signed-off-by: Mark Cave-Ayland --- hw/scsi/esp.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c index e8b6f25dbb..7998dcfb97 100644 --- a/hw/scsi/esp.c +++ b/hw/scsi/esp.c @@ -1210,6 +1210,25 @@ static int esp_post_load(void *opaque, int version_i= d) return 0; } =20 +static bool esp_pdma_needed(void *opaque) +{ + ESPState *s =3D ESP(opaque); + + return s->dma_memory_read =3D=3D NULL && s->dma_memory_write =3D=3D NU= LL && + s->dma_enabled; +} + +static const VMStateDescription vmstate_esp_pdma =3D { + .name =3D "esp/pdma", + .version_id =3D 0, + .minimum_version_id =3D 0, + .needed =3D esp_pdma_needed, + .fields =3D (VMStateField[]) { + VMSTATE_UINT8(pdma_cb, ESPState), + VMSTATE_END_OF_LIST() + } +}; + const VMStateDescription vmstate_esp =3D { .name =3D "esp", .version_id =3D 6, @@ -1244,6 +1263,10 @@ const VMStateDescription vmstate_esp =3D { VMSTATE_UINT8_TEST(lun, ESPState, esp_is_version_6), VMSTATE_END_OF_LIST() }, + .subsections =3D (const VMStateDescription * []) { + &vmstate_esp_pdma, + NULL + } }; =20 static void sysbus_esp_mem_write(void *opaque, hwaddr addr, --=20 2.20.1 From nobody Mon Feb 9 20:39:42 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646087542796613.0119883446529; Mon, 28 Feb 2022 14:32:22 -0800 (PST) Received: from localhost ([::1]:36444 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nOoYz-0006sH-HD for importer@patchew.org; Mon, 28 Feb 2022 17:32:17 -0500 Received: from eggs.gnu.org ([209.51.188.92]:48068) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nOoT7-0004Km-PB for qemu-devel@nongnu.org; Mon, 28 Feb 2022 17:26:14 -0500 Received: from [2001:41c9:1:41f::167] (port=51182 helo=mail.default.ilande.bv.iomart.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nOoT5-0003RW-TI for qemu-devel@nongnu.org; Mon, 28 Feb 2022 17:26:13 -0500 Received: from [2a00:23c4:8ba0:ca00:d4eb:dbd5:5a41:aefe] (helo=kentang.home) by mail.default.ilande.bv.iomart.io with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nOoST-0004GN-7V; Mon, 28 Feb 2022 22:25:33 +0000 From: Mark Cave-Ayland To: laurent@vivier.eu, pbonzini@redhat.com, fam@euphon.net, qemu-devel@nongnu.org Date: Mon, 28 Feb 2022 22:25:27 +0000 Message-Id: <20220228222527.8234-11-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20220228222527.8234-1-mark.cave-ayland@ilande.co.uk> References: <20220228222527.8234-1-mark.cave-ayland@ilande.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 2a00:23c4:8ba0:ca00:d4eb:dbd5:5a41:aefe X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: [PATCH 10/10] esp: recreate ESPState current_req after migration X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.default.ilande.bv.iomart.io) X-Host-Lookup-Failed: Reverse DNS lookup failed for 2001:41c9:1:41f::167 (failed) 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=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.default.ilande.bv.iomart.io X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 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-ZM-MESSAGEID: 1646087543902100001 Content-Type: text/plain; charset="utf-8" Since PDMA reads/writes are driven by the guest, it is possible that migrat= ion can occur whilst a SCSIRequest is still active. Fortunately active SCSIRequ= ests are already included in the migration stream and restarted post migration b= ut this still leaves the reference in ESPState uninitialised. Implement the SCSIBusInfo .load_request callback to obtain a reference to t= he currently active SCSIRequest and use it to recreate ESPState current_req after migration. Suggested-by: Paolo Bonzini Signed-off-by: Mark Cave-Ayland --- hw/scsi/esp.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c index 7998dcfb97..b232af4224 100644 --- a/hw/scsi/esp.c +++ b/hw/scsi/esp.c @@ -1342,6 +1342,15 @@ static uint64_t sysbus_esp_pdma_read(void *opaque, h= waddr addr, return val; } =20 +static void *esp_load_request(QEMUFile *f, SCSIRequest *req) +{ + ESPState *s =3D container_of(req->bus, ESPState, bus); + + scsi_req_ref(req); + s->current_req =3D req; + return s; +} + static const MemoryRegionOps sysbus_esp_pdma_ops =3D { .read =3D sysbus_esp_pdma_read, .write =3D sysbus_esp_pdma_write, @@ -1357,6 +1366,7 @@ static const struct SCSIBusInfo esp_scsi_info =3D { .max_target =3D ESP_MAX_DEVS, .max_lun =3D 7, =20 + .load_request =3D esp_load_request, .transfer_data =3D esp_transfer_data, .complete =3D esp_command_complete, .cancel =3D esp_request_cancelled --=20 2.20.1