From nobody Tue May 21 13:51:15 2024 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=1607542359; cv=none; d=zohomail.com; s=zohoarc; b=MDOId7Fnou3zsinreh/Khb/b5uNniYRfUJ13VsGTr2z8ixpApUB7bVD3X46XIfBaDTcYjWHxbL+OU/G77JPLumxBP5nfin3UPh5Sifms7Yx0bVCUhggVN/VEpIbTG3Pt+213MfYTRyD4gxtxNztjBogoc8CpaAF2D3xN0g+Nzg4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1607542359; 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=yTovnZpNQg2IzjHH+NtIVlLhZkL/8WupFPDD8qFsx9M=; b=iYMU/37KuLwRshueMv0bzFQ0DF/xxEitfgSyg85rQCdqvqNerI2qvVR15HsNQrQPSSKJhhUsWRTB25bXEchP+JMDxb8iBtAXy8rIWkJMmFMtfXlMIVxAKE7KTuklrF/6BEtHH/GyBZwIXKW7uATT136i0fZYsuVdoMfEEo+RkBI= 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 1607542359009195.93603947219026; Wed, 9 Dec 2020 11:32:39 -0800 (PST) Received: from localhost ([::1]:35614 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kn3A8-0001WA-5e for importer@patchew.org; Wed, 09 Dec 2020 12:22:00 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:36440) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kn2q9-0006h9-SG for qemu-devel@nongnu.org; Wed, 09 Dec 2020 12:01:21 -0500 Received: from us-smtp-delivery-44.mimecast.com ([207.211.30.44]:50879) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kn2q0-0000pf-TZ for qemu-devel@nongnu.org; Wed, 09 Dec 2020 12:01:21 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-575-9WOFJV-4PX2tqYjZCRBPng-1; Wed, 09 Dec 2020 12:00:57 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 42454803620; Wed, 9 Dec 2020 17:00:56 +0000 (UTC) Received: from bahia.redhat.com (ovpn-113-78.ams2.redhat.com [10.36.113.78]) by smtp.corp.redhat.com (Postfix) with ESMTP id 978535D6BA; Wed, 9 Dec 2020 17:00:54 +0000 (UTC) X-MC-Unique: 9WOFJV-4PX2tqYjZCRBPng-1 From: Greg Kurz To: qemu-devel@nongnu.org Subject: [PATCH 1/6] spapr: Add an "spapr" property to sPAPR CPU core Date: Wed, 9 Dec 2020 18:00:47 +0100 Message-Id: <20201209170052.1431440-2-groug@kaod.org> In-Reply-To: <20201209170052.1431440-1-groug@kaod.org> References: <20201209170052.1431440-1-groug@kaod.org> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=groug@kaod.org X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: kaod.org 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: softfail client-ip=207.211.30.44; envelope-from=groug@kaod.org; helo=us-smtp-delivery-44.mimecast.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_SOFTFAIL=0.665 autolearn=no 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-ppc@nongnu.org, Greg Kurz , David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" The sPAPR CPU core device can only work with pseries machine types. This is currently checked in the realize function with a dynamic cast of qdev_get_machine(). Some other places also need to reach out to the machine using qdev_get_machine(). Make this dependency explicit by introducing an "spapr" link property which officialy points to the machine. This link is set by pseries machine types only in the pre-plug handler. This allows to drop some users of qdev_get_machine(). Signed-off-by: Greg Kurz --- include/hw/ppc/spapr_cpu_core.h | 2 ++ hw/ppc/spapr.c | 4 ++++ hw/ppc/spapr_cpu_core.c | 17 +++++++---------- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/include/hw/ppc/spapr_cpu_core.h b/include/hw/ppc/spapr_cpu_cor= e.h index dab3dfc76c0a..0969b29fd96c 100644 --- a/include/hw/ppc/spapr_cpu_core.h +++ b/include/hw/ppc/spapr_cpu_core.h @@ -10,6 +10,7 @@ #define HW_SPAPR_CPU_CORE_H =20 #include "hw/cpu/core.h" +#include "hw/ppc/spapr.h" #include "hw/qdev-core.h" #include "target/ppc/cpu-qom.h" #include "target/ppc/cpu.h" @@ -24,6 +25,7 @@ OBJECT_DECLARE_TYPE(SpaprCpuCore, SpaprCpuCoreClass, struct SpaprCpuCore { /*< private >*/ CPUCore parent_obj; + SpaprMachineState *spapr; =20 /*< public >*/ PowerPCCPU **threads; diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index d1dcf3ab2c94..4cc51723c62e 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -3816,6 +3816,10 @@ static void spapr_core_pre_plug(HotplugHandler *hotp= lug_dev, DeviceState *dev, int index; unsigned int smp_threads =3D machine->smp.threads; =20 + /* Required by spapr_cpu_core_realize() */ + object_property_set_link(OBJECT(dev), "spapr", OBJECT(hotplug_dev), + &error_abort); + if (dev->hotplugged && !mc->has_hotpluggable_cpus) { error_setg(errp, "CPU hotplug not supported for this machine"); return; diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c index 2f7dc3c23ded..dec09367e4a0 100644 --- a/hw/ppc/spapr_cpu_core.c +++ b/hw/ppc/spapr_cpu_core.c @@ -25,14 +25,13 @@ #include "sysemu/hw_accel.h" #include "qemu/error-report.h" =20 -static void spapr_reset_vcpu(PowerPCCPU *cpu) +static void spapr_reset_vcpu(PowerPCCPU *cpu, SpaprMachineState *spapr) { CPUState *cs =3D CPU(cpu); CPUPPCState *env =3D &cpu->env; PowerPCCPUClass *pcc =3D POWERPC_CPU_GET_CLASS(cpu); SpaprCpuState *spapr_cpu =3D spapr_cpu_state(cpu); target_ulong lpcr; - SpaprMachineState *spapr =3D SPAPR_MACHINE(qdev_get_machine()); =20 cpu_reset(cs); =20 @@ -186,7 +185,7 @@ static void spapr_unrealize_vcpu(PowerPCCPU *cpu, Spapr= CpuCore *sc) if (!sc->pre_3_0_migration) { vmstate_unregister(NULL, &vmstate_spapr_cpu_state, cpu->machine_da= ta); } - spapr_irq_cpu_intc_destroy(SPAPR_MACHINE(qdev_get_machine()), cpu); + spapr_irq_cpu_intc_destroy(sc->spapr, cpu); qdev_unrealize(DEVICE(cpu)); } =20 @@ -200,7 +199,7 @@ static void spapr_cpu_core_reset(DeviceState *dev) int i; =20 for (i =3D 0; i < cc->nr_threads; i++) { - spapr_reset_vcpu(sc->threads[i]); + spapr_reset_vcpu(sc->threads[i], sc->spapr); } } =20 @@ -314,16 +313,12 @@ err: =20 static void spapr_cpu_core_realize(DeviceState *dev, Error **errp) { - /* We don't use SPAPR_MACHINE() in order to exit gracefully if the user - * tries to add a sPAPR CPU core to a non-pseries machine. - */ - SpaprMachineState *spapr =3D - (SpaprMachineState *) object_dynamic_cast(qdev_get_machine(), - TYPE_SPAPR_MACHINE); SpaprCpuCore *sc =3D SPAPR_CPU_CORE(OBJECT(dev)); + SpaprMachineState *spapr =3D sc->spapr; CPUCore *cc =3D CPU_CORE(OBJECT(dev)); int i; =20 + /* Set in spapr_core_pre_plug() */ if (!spapr) { error_setg(errp, TYPE_SPAPR_CPU_CORE " needs a pseries machine"); return; @@ -345,6 +340,8 @@ static Property spapr_cpu_core_properties[] =3D { DEFINE_PROP_INT32("node-id", SpaprCpuCore, node_id, CPU_UNSET_NUMA_NOD= E_ID), DEFINE_PROP_BOOL("pre-3.0-migration", SpaprCpuCore, pre_3_0_migration, false), + DEFINE_PROP_LINK("spapr", SpaprCpuCore, spapr, TYPE_SPAPR_MACHINE, + SpaprMachineState *), DEFINE_PROP_END_OF_LIST() }; =20 --=20 2.26.2 From nobody Tue May 21 13:51:15 2024 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=1607534958; cv=none; d=zohomail.com; s=zohoarc; b=juUQdNv7CMxCJaWsff/2SVC+D/p8bIwLLmlw20Ld7aa2SPRQgEc1f7QLChjrPoP9no3SNIWroWBKWOH7xndRnkwlwX50Gdn+NO6shjY93qb6J9FTAE7ISImAxlhJo13/JZzOXWr1HPbp9jbjOTsoLMHLIirW+qTH+yZ25CNGFqA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1607534958; 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=cvAPSU8/xAWGsfGTC2xzOnnCMQorruQinJmfEm5Js3c=; b=WEFn5qmen/ZfvskEuuz9UW+rJ6G0hnLN8ozvjnwPxqjhZFlRocVL+GyMjBHzAV7q4KsBEcL4YZTfhP+4hZ7yMjxXSH6Dhw1wxUN5LC+hth3focCJudZnjC5/sbVZPVYXp0tegFLP67e8FJrP1tYoZewJZKVOhByA8Pg/7LqeOeA= 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 1607534958504365.8389174929838; Wed, 9 Dec 2020 09:29:18 -0800 (PST) Received: from localhost ([::1]:41760 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kn31a-0000Bz-48 for importer@patchew.org; Wed, 09 Dec 2020 12:13:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:36310) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kn2q3-0006Zj-IR for qemu-devel@nongnu.org; Wed, 09 Dec 2020 12:01:17 -0500 Received: from us-smtp-delivery-44.mimecast.com ([205.139.111.44]:43935) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kn2px-0000oG-SZ for qemu-devel@nongnu.org; Wed, 09 Dec 2020 12:01:15 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-596-k-eCIie1MoeaaKm4kGI1eQ-1; Wed, 09 Dec 2020 12:00:58 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 6861E107ACF7; Wed, 9 Dec 2020 17:00:57 +0000 (UTC) Received: from bahia.redhat.com (ovpn-113-78.ams2.redhat.com [10.36.113.78]) by smtp.corp.redhat.com (Postfix) with ESMTP id 677775D6BA; Wed, 9 Dec 2020 17:00:56 +0000 (UTC) X-MC-Unique: k-eCIie1MoeaaKm4kGI1eQ-1 From: Greg Kurz To: qemu-devel@nongnu.org Subject: [PATCH 2/6] spapr: Add an "spapr" property to sPAPR PHB Date: Wed, 9 Dec 2020 18:00:48 +0100 Message-Id: <20201209170052.1431440-3-groug@kaod.org> In-Reply-To: <20201209170052.1431440-1-groug@kaod.org> References: <20201209170052.1431440-1-groug@kaod.org> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=groug@kaod.org X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: kaod.org 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: softfail client-ip=205.139.111.44; envelope-from=groug@kaod.org; helo=us-smtp-delivery-44.mimecast.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_SOFTFAIL=0.665 autolearn=no 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-ppc@nongnu.org, Greg Kurz , David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" The sPAPR PHB device can only work with pseries machine types. This is currently checked in the realize function with a dynamic cast of qdev_get_machine(). Some other places also need to reach out to the machine using qdev_get_machine(). Make this dependency explicit by introducing an "spapr" link property which officialy points to the machine. This link is set by pseries machine types only in the pre-plug handler. This allows to drop some users of qdev_get_machine(). Signed-off-by: Greg Kurz --- include/hw/pci-host/spapr.h | 1 + hw/ppc/spapr.c | 4 ++++ hw/ppc/spapr_pci.c | 17 +++++++---------- hw/ppc/spapr_pci_nvlink2.c | 2 +- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/include/hw/pci-host/spapr.h b/include/hw/pci-host/spapr.h index 4f58f0223b56..622a4f1a07c6 100644 --- a/include/hw/pci-host/spapr.h +++ b/include/hw/pci-host/spapr.h @@ -76,6 +76,7 @@ struct SpaprPhbState { SpaprPciMsiMig *msi_devs; =20 QLIST_ENTRY(SpaprPhbState) list; + SpaprMachineState *spapr; =20 bool ddw_enabled; uint64_t page_size_mask; diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 4cc51723c62e..aca7d7af283a 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -3892,6 +3892,10 @@ static bool spapr_phb_pre_plug(HotplugHandler *hotpl= ug_dev, DeviceState *dev, const unsigned windows_supported =3D spapr_phb_windows_supported(sphb); SpaprDrc *drc; =20 + /* Required by spapr_phb_realize() */ + object_property_set_link(OBJECT(dev), "spapr", OBJECT(hotplug_dev), + &error_abort); + if (dev->hotplugged && !smc->dr_phb_enabled) { error_setg(errp, "PHB hotplug not supported for this machine"); return false; diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index e946bd5055cc..2d9b88b93122 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -722,7 +722,7 @@ static void pci_spapr_set_irq(void *opaque, int irq_num= , int level) * corresponding qemu_irq. */ SpaprPhbState *phb =3D opaque; - SpaprMachineState *spapr =3D SPAPR_MACHINE(qdev_get_machine()); + SpaprMachineState *spapr =3D phb->spapr; =20 trace_spapr_pci_lsi_set(phb->dtbusname, irq_num, phb->lsi_table[irq_nu= m].irq); qemu_set_irq(spapr_qirq(spapr, phb->lsi_table[irq_num].irq), level); @@ -1743,10 +1743,10 @@ static void spapr_phb_finalizefn(Object *obj) =20 static void spapr_phb_unrealize(DeviceState *dev) { - SpaprMachineState *spapr =3D SPAPR_MACHINE(qdev_get_machine()); SysBusDevice *s =3D SYS_BUS_DEVICE(dev); PCIHostState *phb =3D PCI_HOST_BRIDGE(s); SpaprPhbState *sphb =3D SPAPR_PCI_HOST_BRIDGE(phb); + SpaprMachineState *spapr =3D sphb->spapr; SpaprTceTable *tcet; int i; const unsigned windows_supported =3D spapr_phb_windows_supported(sphb); @@ -1817,15 +1817,9 @@ static void spapr_phb_destroy_msi(gpointer opaque) static void spapr_phb_realize(DeviceState *dev, Error **errp) { ERRP_GUARD(); - /* We don't use SPAPR_MACHINE() in order to exit gracefully if the user - * tries to add a sPAPR PHB to a non-pseries machine. - */ - SpaprMachineState *spapr =3D - (SpaprMachineState *) object_dynamic_cast(qdev_get_machine(), - TYPE_SPAPR_MACHINE); - SpaprMachineClass *smc =3D spapr ? SPAPR_MACHINE_GET_CLASS(spapr) : NU= LL; SysBusDevice *s =3D SYS_BUS_DEVICE(dev); SpaprPhbState *sphb =3D SPAPR_PCI_HOST_BRIDGE(s); + SpaprMachineState *spapr =3D sphb->spapr; PCIHostState *phb =3D PCI_HOST_BRIDGE(s); MachineState *ms =3D MACHINE(spapr); char *namebuf; @@ -1835,6 +1829,7 @@ static void spapr_phb_realize(DeviceState *dev, Error= **errp) SpaprTceTable *tcet; const unsigned windows_supported =3D spapr_phb_windows_supported(sphb); =20 + /* Set in spapr_phb_pre_plug() */ if (!spapr) { error_setg(errp, TYPE_SPAPR_PCI_HOST_BRIDGE " needs a pseries mach= ine"); return; @@ -1986,7 +1981,7 @@ static void spapr_phb_realize(DeviceState *dev, Error= **errp) for (i =3D 0; i < PCI_NUM_PINS; i++) { int irq =3D SPAPR_IRQ_PCI_LSI + sphb->index * PCI_NUM_PINS + i; =20 - if (smc->legacy_irq_allocation) { + if (SPAPR_MACHINE_GET_CLASS(spapr)->legacy_irq_allocation) { irq =3D spapr_irq_findone(spapr, errp); if (irq < 0) { error_prepend(errp, "can't allocate LSIs: "); @@ -2109,6 +2104,8 @@ static Property spapr_phb_properties[] =3D { DEFINE_PROP_UINT64("atsd", SpaprPhbState, nv2_atsd_win_addr, 0), DEFINE_PROP_BOOL("pre-5.1-associativity", SpaprPhbState, pre_5_1_assoc, false), + DEFINE_PROP_LINK("spapr", SpaprPhbState, spapr, TYPE_SPAPR_MACHINE, + SpaprMachineState *), DEFINE_PROP_END_OF_LIST(), }; =20 diff --git a/hw/ppc/spapr_pci_nvlink2.c b/hw/ppc/spapr_pci_nvlink2.c index 8ef9b40a18dc..ce62318a6d73 100644 --- a/hw/ppc/spapr_pci_nvlink2.c +++ b/hw/ppc/spapr_pci_nvlink2.c @@ -368,7 +368,7 @@ void spapr_phb_nvgpu_ram_populate_dt(SpaprPhbState *sph= b, void *fdt) _FDT((fdt_setprop_string(fdt, off, "device_type", "memory"))); _FDT((fdt_setprop(fdt, off, "reg", mem_reg, sizeof(mem_reg)))); =20 - spapr_numa_write_associativity_dt(SPAPR_MACHINE(qdev_get_machine()= ), + spapr_numa_write_associativity_dt(sphb->spapr, fdt, off, nvslot->numa_id); =20 _FDT((fdt_setprop_string(fdt, off, "compatible", --=20 2.26.2 From nobody Tue May 21 13:51:15 2024 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=1607543690; cv=none; d=zohomail.com; s=zohoarc; b=UQ8LVnc6daBkgk+zkrjoHxb6a8quklFunqnY0Oy8JAm2gUaSLYzwTJw5P/BzJNPd7nPLKtweAa7+myGaD+xVQbjPRTrXaipWu7hyrvi9U+SoUKnDgRL5JyllvOWcgP5xBti5j41u2ELVnoDYNV3ej13ufPt18eR7jcaZDaxY76k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1607543690; 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=JPBfsHKSyj00z5shjbHfHKEcoaJaEuo1j0pIuwvnbkQ=; b=EdHSw/OjdNK7luLlebrh03mx8tuhep0fZIBJLmIa/0Eh7fKSVFIhDG9myukJLQBwg9u43MplTtVTsl4pmxUS6w0Myz+Sc5vrwWQRtTqz0Cdv4dyNoGuG5E9qISPJjMO1Reb5yqP8jvwuUHvlyzzn8wXSbMVNw2VuwNuEOSAyumQ= 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 1607543690298343.20624904807516; Wed, 9 Dec 2020 11:54:50 -0800 (PST) Received: from localhost ([::1]:41312 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kn3Bl-0003tP-5s for importer@patchew.org; Wed, 09 Dec 2020 12:23:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:36382) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kn2q6-0006bb-5z for qemu-devel@nongnu.org; Wed, 09 Dec 2020 12:01:18 -0500 Received: from us-smtp-delivery-44.mimecast.com ([207.211.30.44]:42315) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kn2q0-0000pm-Q1 for qemu-devel@nongnu.org; Wed, 09 Dec 2020 12:01:16 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-47-1bqiYXxoMeazFzYXYgunxQ-1; Wed, 09 Dec 2020 12:00:59 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id B445510054FF; Wed, 9 Dec 2020 17:00:58 +0000 (UTC) Received: from bahia.redhat.com (ovpn-113-78.ams2.redhat.com [10.36.113.78]) by smtp.corp.redhat.com (Postfix) with ESMTP id B47A05D6CF; Wed, 9 Dec 2020 17:00:57 +0000 (UTC) X-MC-Unique: 1bqiYXxoMeazFzYXYgunxQ-1 From: Greg Kurz To: qemu-devel@nongnu.org Subject: [PATCH 3/6] spapr: Pass sPAPR machine state down to spapr_pci_switch_vga() Date: Wed, 9 Dec 2020 18:00:49 +0100 Message-Id: <20201209170052.1431440-4-groug@kaod.org> In-Reply-To: <20201209170052.1431440-1-groug@kaod.org> References: <20201209170052.1431440-1-groug@kaod.org> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: kaod.org 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: softfail client-ip=207.211.30.44; envelope-from=groug@kaod.org; helo=us-smtp-delivery-44.mimecast.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_SOFTFAIL=0.665 autolearn=no 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-ppc@nongnu.org, Greg Kurz , David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" This allows to drop a user of qdev_get_machine(). Signed-off-by: Greg Kurz --- include/hw/ppc/spapr.h | 2 +- hw/ppc/spapr_hcall.c | 7 ++++--- hw/ppc/spapr_pci.c | 3 +-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h index b7ced9faebf5..e0f10f252c08 100644 --- a/include/hw/ppc/spapr.h +++ b/include/hw/ppc/spapr.h @@ -834,7 +834,7 @@ int spapr_dma_dt(void *fdt, int node_off, const char *p= ropname, uint32_t liobn, uint64_t window, uint32_t size); int spapr_tcet_dma_dt(void *fdt, int node_off, const char *propname, SpaprTceTable *tcet); -void spapr_pci_switch_vga(bool big_endian); +void spapr_pci_switch_vga(SpaprMachineState *spapr, bool big_endian); void spapr_hotplug_req_add_by_index(SpaprDrc *drc); void spapr_hotplug_req_remove_by_index(SpaprDrc *drc); void spapr_hotplug_req_add_by_count(SpaprDrcType drc_type, diff --git a/hw/ppc/spapr_hcall.c b/hw/ppc/spapr_hcall.c index 1d8e8e6a888f..c0ea0bd5794b 100644 --- a/hw/ppc/spapr_hcall.c +++ b/hw/ppc/spapr_hcall.c @@ -1351,6 +1351,7 @@ static target_ulong h_logical_dcbf(PowerPCCPU *cpu, S= paprMachineState *spapr, } =20 static target_ulong h_set_mode_resource_le(PowerPCCPU *cpu, + SpaprMachineState *spapr, target_ulong mflags, target_ulong value1, target_ulong value2) @@ -1365,12 +1366,12 @@ static target_ulong h_set_mode_resource_le(PowerPCC= PU *cpu, switch (mflags) { case H_SET_MODE_ENDIAN_BIG: spapr_set_all_lpcrs(0, LPCR_ILE); - spapr_pci_switch_vga(true); + spapr_pci_switch_vga(spapr, true); return H_SUCCESS; =20 case H_SET_MODE_ENDIAN_LITTLE: spapr_set_all_lpcrs(LPCR_ILE, LPCR_ILE); - spapr_pci_switch_vga(false); + spapr_pci_switch_vga(spapr, false); return H_SUCCESS; } =20 @@ -1411,7 +1412,7 @@ static target_ulong h_set_mode(PowerPCCPU *cpu, Spapr= MachineState *spapr, =20 switch (resource) { case H_SET_MODE_RESOURCE_LE: - ret =3D h_set_mode_resource_le(cpu, args[0], args[2], args[3]); + ret =3D h_set_mode_resource_le(cpu, spapr, args[0], args[2], args[= 3]); break; case H_SET_MODE_RESOURCE_ADDR_TRANS_MODE: ret =3D h_set_mode_resource_addr_trans_mode(cpu, args[0], diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index 2d9b88b93122..149bf4c21d22 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -2490,9 +2490,8 @@ static int spapr_switch_one_vga(DeviceState *dev, voi= d *opaque) return 0; } =20 -void spapr_pci_switch_vga(bool big_endian) +void spapr_pci_switch_vga(SpaprMachineState *spapr, bool big_endian) { - SpaprMachineState *spapr =3D SPAPR_MACHINE(qdev_get_machine()); SpaprPhbState *sphb; =20 /* --=20 2.26.2 From nobody Tue May 21 13:51:15 2024 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=1607542257; cv=none; d=zohomail.com; s=zohoarc; b=GdcLJm1zg7Ky+tFRMxCnpVfcucpWV3uV8QOHKAP/nr+OrGe5wWEJ4LjSaVlPzd9X2PBgkz2B/LhH6ZZTdJrSbQRAathF7jX2DvTk0vpE0BB/+Oo3GCEGaf+Q8XZ+to8Q7E0rEGL94N+Iull03bxpUBB+aYobdslKw8m7m5rdVI8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1607542257; 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=/CqMChC6H0jlSfwoxr1FQcBUe2aPnDfapSKkg71vi80=; b=V6m6i9xyCMeYvcyBJMzOEqxXFsdJgzdlqQZhG3Zrt1seyvXHjrb/RSysM2lX5S5tJ4BeUI5EWnrCmRbtspejxI0Ftuk7FIpKGRBNGWDnXBr/D5Ptk0t0M/qxey+MwefXQEMvXmbjozDkh150rPrAFRAcGN/WoluzXpvecb85L+A= 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 1607542257897929.4974467491256; Wed, 9 Dec 2020 11:30:57 -0800 (PST) Received: from localhost ([::1]:35750 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kn3A9-0001ZY-TH for importer@patchew.org; Wed, 09 Dec 2020 12:22:01 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:36378) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kn2q6-0006bY-6c for qemu-devel@nongnu.org; Wed, 09 Dec 2020 12:01:18 -0500 Received: from us-smtp-delivery-44.mimecast.com ([205.139.111.44]:56399) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kn2pz-0000pY-Oc for qemu-devel@nongnu.org; Wed, 09 Dec 2020 12:01:16 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-572-furLyuOGOWqmHRA4vmOfkw-1; Wed, 09 Dec 2020 12:01:01 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 2260E19357A0; Wed, 9 Dec 2020 17:01:00 +0000 (UTC) Received: from bahia.redhat.com (ovpn-113-78.ams2.redhat.com [10.36.113.78]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0D1F55D719; Wed, 9 Dec 2020 17:00:58 +0000 (UTC) X-MC-Unique: furLyuOGOWqmHRA4vmOfkw-1 From: Greg Kurz To: qemu-devel@nongnu.org Subject: [PATCH 4/6] spapr: Don't use qdev_get_machine() in spapr_msi_write() Date: Wed, 9 Dec 2020 18:00:50 +0100 Message-Id: <20201209170052.1431440-5-groug@kaod.org> In-Reply-To: <20201209170052.1431440-1-groug@kaod.org> References: <20201209170052.1431440-1-groug@kaod.org> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: kaod.org 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: softfail client-ip=205.139.111.44; envelope-from=groug@kaod.org; helo=us-smtp-delivery-44.mimecast.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_SOFTFAIL=0.665 autolearn=no 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-ppc@nongnu.org, Greg Kurz , David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" spapr_phb_realize() passes the sPAPR machine state as opaque data for the I/O callbacks: memory_region_init_io(&sphb->msiwindow, OBJECT(sphb), &spapr_msi_ops, spapr, ^^^^^ "msi", msi_window_size); Signed-off-by: Greg Kurz --- hw/ppc/spapr_pci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index 149bf4c21d22..890a0cc1d6af 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -747,7 +747,7 @@ static PCIINTxRoute spapr_route_intx_pin_to_irq(void *o= paque, int pin) static void spapr_msi_write(void *opaque, hwaddr addr, uint64_t data, unsigned size) { - SpaprMachineState *spapr =3D SPAPR_MACHINE(qdev_get_machine()); + SpaprMachineState *spapr =3D opaque; uint32_t irq =3D data; =20 trace_spapr_pci_msi_write(addr, data, irq); --=20 2.26.2 From nobody Tue May 21 13:51:15 2024 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=1607543948; cv=none; d=zohomail.com; s=zohoarc; b=OlMlXq+jg7g1Ok7jBe/neK4GI8o/h80SSexyBa3XoiI+scLghOXv90woLh++zJIbCEUxrv72VgFfxmDjt3KHC9Z6SjxDxmfF0ZfGc4fNFXLDh4NqA9zVyGhwAqMBWW2UPHTYRFb5IBljbBg6Wiuwsag+SqGIvLJOmCBwoi3/4JU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1607543948; 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=BU6LFJcZpiEBIYhjN3zH0INyQpoW/ih6R3CgMl11QqU=; b=YXXBVEfRzc3Gowxly5wBrYCek4aRXLUDDRdqJxArBlelpmj0r7NnQrqnh2jpEcGfG51U+GLfEQgChjpUcDDFtJRSYi+YKvM27ttmRnlyz3qpplCmPYYqKcPS/LwKAT3gGS0eE+uSN87Ttwa1hycVEyTF/phQEtsiHeE+X9RLLsE= 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 1607543948803442.1053576097461; Wed, 9 Dec 2020 11:59:08 -0800 (PST) Received: from localhost ([::1]:38024 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kn3B1-0002XC-05 for importer@patchew.org; Wed, 09 Dec 2020 12:22:55 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:36414) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kn2q8-0006e5-Ns for qemu-devel@nongnu.org; Wed, 09 Dec 2020 12:01:20 -0500 Received: from us-smtp-delivery-44.mimecast.com ([205.139.111.44]:40901) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kn2q3-0000r7-1Z for qemu-devel@nongnu.org; Wed, 09 Dec 2020 12:01:19 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-454-EbtpAcyUM8OA5hq_mYIHKw-1; Wed, 09 Dec 2020 12:01:02 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 7C27A800D53; Wed, 9 Dec 2020 17:01:01 +0000 (UTC) Received: from bahia.redhat.com (ovpn-113-78.ams2.redhat.com [10.36.113.78]) by smtp.corp.redhat.com (Postfix) with ESMTP id 77F205D6CF; Wed, 9 Dec 2020 17:01:00 +0000 (UTC) X-MC-Unique: EbtpAcyUM8OA5hq_mYIHKw-1 From: Greg Kurz To: qemu-devel@nongnu.org Subject: [PATCH 5/6] spapr: Pass sPAPR machine state to some RTAS events handling functions Date: Wed, 9 Dec 2020 18:00:51 +0100 Message-Id: <20201209170052.1431440-6-groug@kaod.org> In-Reply-To: <20201209170052.1431440-1-groug@kaod.org> References: <20201209170052.1431440-1-groug@kaod.org> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: kaod.org 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: softfail client-ip=205.139.111.44; envelope-from=groug@kaod.org; helo=us-smtp-delivery-44.mimecast.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_SOFTFAIL=0.665 autolearn=no 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-ppc@nongnu.org, Greg Kurz , David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Some functions in hw/ppc/spapr_events.c get a pointer to the machine state using qdev_get_machine(). Convert them to get it from their caller when possible. Signed-off-by: Greg Kurz --- hw/ppc/spapr_events.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/hw/ppc/spapr_events.c b/hw/ppc/spapr_events.c index 1add53547ec3..3f37b49fd8ad 100644 --- a/hw/ppc/spapr_events.c +++ b/hw/ppc/spapr_events.c @@ -480,9 +480,8 @@ static SpaprEventLogEntry *rtas_event_log_dequeue(Spapr= MachineState *spapr, return entry; } =20 -static bool rtas_event_log_contains(uint32_t event_mask) +static bool rtas_event_log_contains(SpaprMachineState *spapr, uint32_t eve= nt_mask) { - SpaprMachineState *spapr =3D SPAPR_MACHINE(qdev_get_machine()); SpaprEventLogEntry *entry =3D NULL; =20 QTAILQ_FOREACH(entry, &spapr->pending_events, next) { @@ -509,10 +508,10 @@ static void spapr_init_v6hdr(struct rtas_event_log_v6= *v6hdr) v6hdr->company =3D cpu_to_be32(RTAS_LOG_V6_COMPANY_IBM); } =20 -static void spapr_init_maina(struct rtas_event_log_v6_maina *maina, +static void spapr_init_maina(SpaprMachineState *spapr, + struct rtas_event_log_v6_maina *maina, int section_count) { - SpaprMachineState *spapr =3D SPAPR_MACHINE(qdev_get_machine()); struct tm tm; int year; =20 @@ -560,7 +559,7 @@ static void spapr_powerdown_req(Notifier *n, void *opaq= ue) entry->extended_length =3D sizeof(*new_epow); =20 spapr_init_v6hdr(v6hdr); - spapr_init_maina(maina, 3 /* Main-A, Main-B and EPOW */); + spapr_init_maina(spapr, maina, 3 /* Main-A, Main-B and EPOW */); =20 mainb->hdr.section_id =3D cpu_to_be16(RTAS_LOG_V6_SECTION_ID_MAINB); mainb->hdr.section_length =3D cpu_to_be16(sizeof(*mainb)); @@ -613,7 +612,7 @@ static void spapr_hotplug_req_event(uint8_t hp_id, uint= 8_t hp_action, entry->extended_length =3D sizeof(*new_hp); =20 spapr_init_v6hdr(v6hdr); - spapr_init_maina(maina, 3 /* Main-A, Main-B, HP */); + spapr_init_maina(spapr, maina, 3 /* Main-A, Main-B, HP */); =20 mainb->hdr.section_id =3D cpu_to_be16(RTAS_LOG_V6_SECTION_ID_MAINB); mainb->hdr.section_length =3D cpu_to_be16(sizeof(*mainb)); @@ -808,9 +807,9 @@ static uint32_t spapr_mce_get_elog_type(PowerPCCPU *cpu= , bool recovered, return summary; } =20 -static void spapr_mce_dispatch_elog(PowerPCCPU *cpu, bool recovered) +static void spapr_mce_dispatch_elog(SpaprMachineState *spapr, PowerPCCPU *= cpu, + bool recovered) { - SpaprMachineState *spapr =3D SPAPR_MACHINE(qdev_get_machine()); CPUState *cs =3D CPU(cpu); CPUPPCState *env =3D &cpu->env; uint64_t rtas_addr; @@ -927,7 +926,7 @@ void spapr_mce_req_event(PowerPCCPU *cpu, bool recovere= d) warn_report("Received a fwnmi while migration was in progress"); } =20 - spapr_mce_dispatch_elog(cpu, recovered); + spapr_mce_dispatch_elog(spapr, cpu, recovered); } =20 static void check_exception(PowerPCCPU *cpu, SpaprMachineState *spapr, @@ -980,7 +979,7 @@ static void check_exception(PowerPCCPU *cpu, SpaprMachi= neState *spapr, * interrupts. */ for (i =3D 0; i < EVENT_CLASS_MAX; i++) { - if (rtas_event_log_contains(EVENT_CLASS_MASK(i))) { + if (rtas_event_log_contains(spapr, EVENT_CLASS_MASK(i))) { const SpaprEventSource *source =3D spapr_event_sources_get_source(spapr->event_sources, i); =20 @@ -1007,7 +1006,7 @@ static void event_scan(PowerPCCPU *cpu, SpaprMachineS= tate *spapr, } =20 for (i =3D 0; i < EVENT_CLASS_MAX; i++) { - if (rtas_event_log_contains(EVENT_CLASS_MASK(i))) { + if (rtas_event_log_contains(spapr, EVENT_CLASS_MASK(i))) { const SpaprEventSource *source =3D spapr_event_sources_get_source(spapr->event_sources, i); =20 --=20 2.26.2 From nobody Tue May 21 13:51:15 2024 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=1607533854; cv=none; d=zohomail.com; s=zohoarc; b=nAHKVui3/dqGoYeDprXCSqN5XlyLpx3spQqaCoUyISvp/s0jHqMpp0/vjqAvsblYBoG374qg/AcvPGnLa3iKMNHXwSBfuN8Itrd+DcOofxpqDxl4DWKpEPziBb9hNh4ofTSB2zIXPVG/nZcc1bHgrLmGhAlH8k90BLmedl7P21k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1607533854; 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=FXx7X+uNxzQgC5Ft682cKWrTExqq/Bbeln2Y9a4rqMw=; b=Cr8Sbx2dvpsgz3I3Qa6IejY0xCTeb6NlgRyFJIJ8Fox9sT743IhlzUhhEKkBp0L0XoxYC3xi3iRriWXQyFvfLUgS9ueZLL+KqkSBD8a11FYmuLKO0/1OB8JrDODIXnYF8RvFwKFQPO7vJxxGlJi+s1wie06DTxiJxgAxpRECSOA= 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 1607533853934621.7336576959818; Wed, 9 Dec 2020 09:10:53 -0800 (PST) Received: from localhost ([::1]:36910 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kn2zK-0006Pv-UQ for importer@patchew.org; Wed, 09 Dec 2020 12:10:50 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:36184) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kn2pz-0006Th-8m for qemu-devel@nongnu.org; Wed, 09 Dec 2020 12:01:11 -0500 Received: from us-smtp-delivery-44.mimecast.com ([205.139.111.44]:54004) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kn2pw-0000qa-VB for qemu-devel@nongnu.org; Wed, 09 Dec 2020 12:01:10 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-326-7YL6mpyEP3KxcjVP4aScNA-1; Wed, 09 Dec 2020 12:01:04 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id D2BFE803627; Wed, 9 Dec 2020 17:01:02 +0000 (UTC) Received: from bahia.redhat.com (ovpn-113-78.ams2.redhat.com [10.36.113.78]) by smtp.corp.redhat.com (Postfix) with ESMTP id C8BDF5D6CF; Wed, 9 Dec 2020 17:01:01 +0000 (UTC) X-MC-Unique: 7YL6mpyEP3KxcjVP4aScNA-1 From: Greg Kurz To: qemu-devel@nongnu.org Subject: [PATCH 6/6] target/ppc: Add mce_req_event() handler to PPCVirtualHypervisorClass Date: Wed, 9 Dec 2020 18:00:52 +0100 Message-Id: <20201209170052.1431440-7-groug@kaod.org> In-Reply-To: <20201209170052.1431440-1-groug@kaod.org> References: <20201209170052.1431440-1-groug@kaod.org> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=groug@kaod.org X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: kaod.org 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: softfail client-ip=205.139.111.44; envelope-from=groug@kaod.org; helo=us-smtp-delivery-44.mimecast.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_SOFTFAIL=0.665 autolearn=no 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-ppc@nongnu.org, Greg Kurz , David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" kvm_handle_nmi() directly calls spapr_mce_req_event() which is machine level code. Apart from being ugly, this forces spapr_mce_req_event() to rely on qdev_get_machine() to get a pointer to the machine state. This is a bit unfortunate since POWER CPUs have a backlink to the virtual hypervisor, which happens to be the machine itself with sPAPR. Turn spapr_mce_req_event() into a PPC virtual hypervisor operation, and adapt kvm_handle_nmi() to call it as such. Signed-off-by: Greg Kurz --- include/hw/ppc/spapr.h | 3 ++- target/ppc/cpu.h | 2 ++ hw/ppc/spapr.c | 1 + hw/ppc/spapr_events.c | 5 +++-- target/ppc/kvm.c | 9 +++++++-- 5 files changed, 15 insertions(+), 5 deletions(-) diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h index e0f10f252c08..476c5b809794 100644 --- a/include/hw/ppc/spapr.h +++ b/include/hw/ppc/spapr.h @@ -852,7 +852,8 @@ void spapr_clear_pending_hotplug_events(SpaprMachineSta= te *spapr); int spapr_max_server_number(SpaprMachineState *spapr); void spapr_store_hpte(PowerPCCPU *cpu, hwaddr ptex, uint64_t pte0, uint64_t pte1); -void spapr_mce_req_event(PowerPCCPU *cpu, bool recovered); +void spapr_mce_req_event(PPCVirtualHypervisor *vhyp, PowerPCCPU *cpu, + bool recovered); bool spapr_machine_using_legacy_numa(SpaprMachineState *spapr); =20 /* DRC callbacks. */ diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index 2609e4082ed8..5bac68aec826 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -1219,6 +1219,8 @@ struct PPCVirtualHypervisorClass { target_ulong (*encode_hpt_for_kvm_pr)(PPCVirtualHypervisor *vhyp); void (*cpu_exec_enter)(PPCVirtualHypervisor *vhyp, PowerPCCPU *cpu); void (*cpu_exec_exit)(PPCVirtualHypervisor *vhyp, PowerPCCPU *cpu); + void (*mce_req_event)(PPCVirtualHypervisor *vhyp, PowerPCCPU *cpu, + bool recovered); }; =20 #define TYPE_PPC_VIRTUAL_HYPERVISOR "ppc-virtual-hypervisor" diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index aca7d7af283a..09fc605f11ba 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -4441,6 +4441,7 @@ static void spapr_machine_class_init(ObjectClass *oc,= void *data) vhc->encode_hpt_for_kvm_pr =3D spapr_encode_hpt_for_kvm_pr; vhc->cpu_exec_enter =3D spapr_cpu_exec_enter; vhc->cpu_exec_exit =3D spapr_cpu_exec_exit; + vhc->mce_req_event =3D spapr_mce_req_event; xic->ics_get =3D spapr_ics_get; xic->ics_resend =3D spapr_ics_resend; xic->icp_get =3D spapr_icp_get; diff --git a/hw/ppc/spapr_events.c b/hw/ppc/spapr_events.c index 3f37b49fd8ad..8e988eb939da 100644 --- a/hw/ppc/spapr_events.c +++ b/hw/ppc/spapr_events.c @@ -868,9 +868,10 @@ static void spapr_mce_dispatch_elog(SpaprMachineState = *spapr, PowerPCCPU *cpu, ppc_cpu_do_fwnmi_machine_check(cs, spapr->fwnmi_machine_check_addr); } =20 -void spapr_mce_req_event(PowerPCCPU *cpu, bool recovered) +void spapr_mce_req_event(PPCVirtualHypervisor *vhyp, PowerPCCPU *cpu, + bool recovered) { - SpaprMachineState *spapr =3D SPAPR_MACHINE(qdev_get_machine()); + SpaprMachineState *spapr =3D SPAPR_MACHINE(vhyp); CPUState *cs =3D CPU(cpu); int ret; Error *local_err =3D NULL; diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c index daf690a67820..ba6edf178a39 100644 --- a/target/ppc/kvm.c +++ b/target/ppc/kvm.c @@ -2816,10 +2816,15 @@ int kvm_handle_nmi(PowerPCCPU *cpu, struct kvm_run = *run) { uint16_t flags =3D run->flags & KVM_RUN_PPC_NMI_DISP_MASK; =20 - cpu_synchronize_state(CPU(cpu)); + if (cpu->vhyp) { + PPCVirtualHypervisorClass *vhc =3D + PPC_VIRTUAL_HYPERVISOR_GET_CLASS(cpu->vhyp); =20 - spapr_mce_req_event(cpu, flags =3D=3D KVM_RUN_PPC_NMI_DISP_FULLY_RECOV= ); + cpu_synchronize_state(CPU(cpu)); =20 + vhc->mce_req_event(cpu->vhyp, cpu, + flags =3D=3D KVM_RUN_PPC_NMI_DISP_FULLY_RECOV); + } return 0; } #endif --=20 2.26.2