From nobody Mon Feb 9 17:58:59 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 154323230085730.9200610525628; Mon, 26 Nov 2018 03:38:20 -0800 (PST) Received: from localhost ([::1]:35295 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gRFDX-0003yb-9w for importer@patchew.org; Mon, 26 Nov 2018 06:38:19 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56872) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gRF8g-0000I5-KI for qemu-devel@nongnu.org; Mon, 26 Nov 2018 06:33:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gRF8d-0001xb-Un for qemu-devel@nongnu.org; Mon, 26 Nov 2018 06:33:18 -0500 Received: from out1.zte.com.cn ([202.103.147.172]:56444 helo=mxct.zte.com.cn) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gRF8U-0001pH-Gm; Mon, 26 Nov 2018 06:33:08 -0500 Received: from mse01.zte.com.cn (unknown [10.30.3.20]) by Forcepoint Email with ESMTPS id 87A554590BFC74BD5CA6; Mon, 26 Nov 2018 19:33:04 +0800 (CST) Received: from notes_smtp.zte.com.cn ([10.30.1.239]) by mse01.zte.com.cn with ESMTP id wAQBWu0H031666; Mon, 26 Nov 2018 19:32:56 +0800 (GMT-8) (envelope-from peng.hao2@zte.com.cn) Received: from localhost.localdomain.localdomain ([10.74.120.59]) by szsmtp06.zte.com.cn (Lotus Domino Release 8.5.3FP6) with ESMTP id 2018112619330377-13057778 ; Mon, 26 Nov 2018 19:33:03 +0800 From: Peng Hao To: peter.maydell@linaro.org, drjones@redhat.com, philmd@redhat.com Date: Tue, 27 Nov 2018 03:55:56 +0800 Message-Id: <1543262162-6351-4-git-send-email-peng.hao2@zte.com.cn> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1543262162-6351-1-git-send-email-peng.hao2@zte.com.cn> References: <1543262162-6351-1-git-send-email-peng.hao2@zte.com.cn> X-MIMETrack: Itemize by SMTP Server on SZSMTP06/server/zte_ltd(Release 8.5.3FP6|November 21, 2013) at 2018-11-26 19:33:03, Serialize by Router on notes_smtp/zte_ltd(Release 9.0.1FP7|August 17, 2016) at 2018-11-26 19:32:55, Serialize complete at 2018-11-26 19:32:55 X-MAIL: mse01.zte.com.cn wAQBWu0H031666 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 202.103.147.172 Subject: [Qemu-devel] [PATCH V9 3/9] hw/misc/pvpanic: Add the MMIO interface X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peng Hao , qemu-arm@nongnu.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Add pvpanic new type "TYPE_PVPANIC_MMIO" Signed-off-by: Peng Hao --- hw/misc/pvpanic.c | 50 +++++++++++++++++++++++++++++++++++++++++++= ---- include/hw/misc/pvpanic.h | 1 + 2 files changed, 47 insertions(+), 4 deletions(-) diff --git a/hw/misc/pvpanic.c b/hw/misc/pvpanic.c index 0f23a67..c9382a8 100644 --- a/hw/misc/pvpanic.c +++ b/hw/misc/pvpanic.c @@ -2,10 +2,12 @@ * QEMU simulated pvpanic device. * * Copyright Fujitsu, Corp. 2013 + * Copyright (c) 2018 ZTE Ltd. * * Authors: * Wen Congyang * Hu Tao + * Peng Hao * * This work is licensed under the terms of the GNU GPL, version 2 or late= r. * See the COPYING file in the top-level directory. @@ -28,6 +30,9 @@ #define PVPANIC_ISA_DEVICE(obj) \ OBJECT_CHECK(PVPanicISAState, (obj), TYPE_PVPANIC) =20 +#define PVPANIC_MMIO_DEVICE(obj) \ + OBJECT_CHECK(PVPanicMMIOState, (obj), TYPE_PVPANIC_MMIO) + static void handle_event(int event) { static bool logged; @@ -56,21 +61,32 @@ typedef struct PVPanicISAState { MemoryRegion mr; } PVPanicISAState; =20 +/* PVPanicMMIOState for sysbus device and + * use mmio. + */ +typedef struct PVPanicMMIOState { + SysBusDevice parent_obj; + /**/ + + /* public */ + MemoryRegion mr; +} PVPanicMMIOState; + /* return supported events on read */ -static uint64_t pvpanic_ioport_read(void *opaque, hwaddr addr, unsigned si= ze) +static uint64_t pvpanic_read(void *opaque, hwaddr addr, unsigned size) { return PVPANIC_PANICKED; } =20 -static void pvpanic_ioport_write(void *opaque, hwaddr addr, uint64_t val, +static void pvpanic_write(void *opaque, hwaddr addr, uint64_t val, unsigned size) { handle_event(val); } =20 static const MemoryRegionOps pvpanic_ops =3D { - .read =3D pvpanic_ioport_read, - .write =3D pvpanic_ioport_write, + .read =3D pvpanic_read, + .write =3D pvpanic_write, .impl =3D { .min_access_size =3D 1, .max_access_size =3D 1, @@ -125,9 +141,35 @@ static TypeInfo pvpanic_isa_info =3D { .class_init =3D pvpanic_isa_class_init, }; =20 +static void pvpanic_mmio_initfn(Object *obj) +{ + PVPanicMMIOState *s =3D PVPANIC_MMIO_DEVICE(obj); + SysBusDevice *sbd =3D SYS_BUS_DEVICE(obj); + + memory_region_init_io(&s->mr, OBJECT(s), &pvpanic_ops, s, + TYPE_PVPANIC_MMIO, 2); + sysbus_init_mmio(sbd, &s->mr); +} + +static void pvpanic_mmio_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + + set_bit(DEVICE_CATEGORY_MISC, dc->categories); +} + +static TypeInfo pvpanic_mmio_info =3D { + .name =3D TYPE_PVPANIC_MMIO, + .parent =3D TYPE_SYS_BUS_DEVICE, + .instance_size =3D sizeof(PVPanicMMIOState), + .instance_init =3D pvpanic_mmio_initfn, + .class_init =3D pvpanic_mmio_class_init, +}; + static void pvpanic_register_types(void) { type_register_static(&pvpanic_isa_info); + type_register_static(&pvpanic_mmio_info); } =20 type_init(pvpanic_register_types) diff --git a/include/hw/misc/pvpanic.h b/include/hw/misc/pvpanic.h index 1ee071a..f1a05b2 100644 --- a/include/hw/misc/pvpanic.h +++ b/include/hw/misc/pvpanic.h @@ -15,6 +15,7 @@ #define HW_MISC_PVPANIC_H =20 #define TYPE_PVPANIC "pvpanic" +#define TYPE_PVPANIC_MMIO "pvpanic-mmio" =20 #define PVPANIC_IOPORT_PROP "ioport" =20 --=20 1.8.3.1