From nobody Wed Nov 5 06:38:42 2025 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; dkim=fail; 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 1499748071082354.01438352071705; Mon, 10 Jul 2017 21:41:11 -0700 (PDT) Received: from localhost ([::1]:44115 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUmyz-0003ic-FK for importer@patchew.org; Tue, 11 Jul 2017 00:41:09 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40523) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUmxJ-0002IE-Pf for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dUmxI-0007SV-Qn for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:25 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:46875) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dUmxI-0007Ra-EA; Tue, 11 Jul 2017 00:39:24 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3x68Vw24Fdz9s7C; Tue, 11 Jul 2017 14:39:20 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1499747960; bh=1qMxIlFvV4cwZ+3dCLzyi5tOb8ltLpVK879xRhtwv4M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=l0MmRDyLVyGPtkkbRXz37iyQZIRbisrFsK8alOVRLRMAz7XPcSdGXeDLqoyFpIt9G kG5XB5Lq8DDylvOTW4QKLY0wq1GKaJkKUg2eu7Ab78zhD0jDyDRu1fjmaBKQOlL3O6 3Fn4X+h/lJgq81lJDh1KV4D2e5XPSKvcKiDnHZCA= From: David Gibson To: peter.maydell@linaro.org Date: Tue, 11 Jul 2017 14:39:01 +1000 Message-Id: <20170711043917.1757-2-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170711043917.1757-1-david@gibson.dropbear.id.au> References: <20170711043917.1757-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 Subject: [Qemu-devel] [PULL 01/17] spapr: make spapr_populate_hotplug_cpu_dt() static 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: lvivier@redhat.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, surajjs@au1.ibm.com, aik@ozlabs.ru, sbobroff@au1.ibm.com, groug@kaod.org, agraf@suse.de, qemu-ppc@nongnu.org, bharata@linux.vnet.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Greg Kurz Since commit ff9006ddbfd1 ("spapr: move spapr_core_[foo]plug() callbacks close to machine code in spapr.c"), this function doesn't need to be extern anymore. Signed-off-by: Greg Kurz Signed-off-by: David Gibson --- hw/ppc/spapr.c | 4 ++-- include/hw/ppc/spapr.h | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 0ee9fac..65d8ad2 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -2863,8 +2863,8 @@ out: error_propagate(errp, local_err); } =20 -void *spapr_populate_hotplug_cpu_dt(CPUState *cs, int *fdt_offset, - sPAPRMachineState *spapr) +static void *spapr_populate_hotplug_cpu_dt(CPUState *cs, int *fdt_offset, + sPAPRMachineState *spapr) { PowerPCCPU *cpu =3D POWERPC_CPU(cs); DeviceClass *dc =3D DEVICE_GET_CLASS(cs); diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h index a66bbac..12bf969 100644 --- a/include/hw/ppc/spapr.h +++ b/include/hw/ppc/spapr.h @@ -640,8 +640,6 @@ void spapr_hotplug_req_add_by_count_indexed(sPAPRDRConn= ectorType drc_type, void spapr_hotplug_req_remove_by_count_indexed(sPAPRDRConnectorType drc_ty= pe, uint32_t count, uint32_t in= dex); void spapr_cpu_parse_features(sPAPRMachineState *spapr); -void *spapr_populate_hotplug_cpu_dt(CPUState *cs, int *fdt_offset, - sPAPRMachineState *spapr); =20 /* CPU and LMB DRC release callbacks. */ void spapr_core_release(DeviceState *dev); --=20 2.9.4 From nobody Wed Nov 5 06:38:42 2025 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; dkim=fail; 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 1499748700123570.1493813235122; Mon, 10 Jul 2017 21:51:40 -0700 (PDT) Received: from localhost ([::1]:44174 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUn98-0004KH-LI for importer@patchew.org; Tue, 11 Jul 2017 00:51:38 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40867) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUmxo-0002nM-Ff for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dUmxl-0007j6-C5 for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:56 -0400 Received: from ozlabs.org ([103.22.144.67]:57805) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dUmxl-0007iB-0m; Tue, 11 Jul 2017 00:39:53 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3x68Vw3lFPz9sNc; Tue, 11 Jul 2017 14:39:20 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1499747960; bh=JFRkQcf0RUF+0/3gQnEo55mxyJT3NldsEklVOttJEXs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FdsHav9YOrh6OwId7U3i/qCd4INPlJ+FdhwXHSeEZFXkLybbIiJffsw6ZTLKLy/7+ rOkLgULxbmcytwq180H1lSdvCQi2I85TpLLJtSLUShokzWGMfeFtG6W4JXRuI1SxAf UFM0SJ/1fmtJ4DF7V2C+Xt5RYQcGSd3jn5VRGIpc= From: David Gibson To: peter.maydell@linaro.org Date: Tue, 11 Jul 2017 14:39:02 +1000 Message-Id: <20170711043917.1757-3-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170711043917.1757-1-david@gibson.dropbear.id.au> References: <20170711043917.1757-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PULL 02/17] spapr: refresh "platform-specific" hcalls comment 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: lvivier@redhat.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, surajjs@au1.ibm.com, aik@ozlabs.ru, sbobroff@au1.ibm.com, groug@kaod.org, agraf@suse.de, qemu-ppc@nongnu.org, bharata@linux.vnet.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Greg Kurz We have more of these since the addition of KVMPPC_H_LOGICAL_MEMOP in 2012. Signed-off-by: Greg Kurz Reviewed-by: Thomas Huth Signed-off-by: David Gibson --- include/hw/ppc/spapr.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h index 12bf969..a184ffa 100644 --- a/include/hw/ppc/spapr.h +++ b/include/hw/ppc/spapr.h @@ -377,9 +377,8 @@ struct sPAPRMachineState { * as well. * * We also need some hcalls which are specific to qemu / KVM-on-POWER. - * So far we just need one for H_RTAS, but in future we'll need more - * for extensions like virtio. We put those into the 0xf000-0xfffc - * range which is reserved by PAPR for "platform-specific" hcalls. + * We put those into the 0xf000-0xfffc range which is reserved by PAPR + * for "platform-specific" hcalls. */ #define KVMPPC_HCALL_BASE 0xf000 #define KVMPPC_H_RTAS (KVMPPC_HCALL_BASE + 0x0) --=20 2.9.4 From nobody Wed Nov 5 06:38:42 2025 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; dkim=fail; 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 1499748232249814.5215703383976; Mon, 10 Jul 2017 21:43:52 -0700 (PDT) Received: from localhost ([::1]:44128 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUn1b-00064Z-0u for importer@patchew.org; Tue, 11 Jul 2017 00:43:51 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40534) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUmxK-0002IF-MF for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dUmxI-0007SF-8k for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:26 -0400 Received: from ozlabs.org ([103.22.144.67]:43681) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dUmxH-0007Re-TE; Tue, 11 Jul 2017 00:39:24 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3x68Vw5NmFz9sR8; Tue, 11 Jul 2017 14:39:20 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1499747960; bh=IvEknAyikcuisE5pqhF8t18BbYzMbHrjmPlQsZlJT9k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZL1lUjZ8YI5RJlpL4hRtSOnEajA7pprIYfcYLtNYRzWoCPhOtC/cB8rR9hwEwAqNL zAYiR1njVbn8rUDjYZ0o26OWqISZZBGTx0cTJv2GjfBs/s1QGJAahVRb59PSRT750c TqZWHtReWUEljBs0tfCrd7XasTvxk/HlKXNpBpKY= From: David Gibson To: peter.maydell@linaro.org Date: Tue, 11 Jul 2017 14:39:03 +1000 Message-Id: <20170711043917.1757-4-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170711043917.1757-1-david@gibson.dropbear.id.au> References: <20170711043917.1757-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PULL 03/17] spapr: fix bogus function name in comment 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: lvivier@redhat.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, surajjs@au1.ibm.com, aik@ozlabs.ru, sbobroff@au1.ibm.com, groug@kaod.org, agraf@suse.de, qemu-ppc@nongnu.org, bharata@linux.vnet.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Greg Kurz $ git grep spapr_ppc_reset hw/ppc/spapr.c: * as part of spapr_ppc_reset(). $ git grep ppc_spapr_reset hw/ppc/spapr.c:static void ppc_spapr_reset(void) hw/ppc/spapr.c: mc->reset =3D ppc_spapr_reset; hw/ppc/spapr_hcall.c: /* If ppc_spapr_reset() did not set up a HPT but one is necessary Signed-off-by: Greg Kurz Signed-off-by: David Gibson --- hw/ppc/spapr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 65d8ad2..5acfb47 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -1973,7 +1973,7 @@ static void spapr_boot_set(void *opaque, const char *= boot_device, * Unlike PCI DR devices, LMB DR devices explicitly register this reset * routine. Reset for PCI DR devices will be handled by PHB reset routine * when it walks all its children devices. LMB devices reset occurs - * as part of spapr_ppc_reset(). + * as part of ppc_spapr_reset(). */ static void spapr_drc_reset(void *opaque) { --=20 2.9.4 From nobody Wed Nov 5 06:38:42 2025 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; dkim=fail; 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 1499748762492432.27344244351013; Mon, 10 Jul 2017 21:52:42 -0700 (PDT) Received: from localhost ([::1]:44176 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUnA9-0004rt-8R for importer@patchew.org; Tue, 11 Jul 2017 00:52:41 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40869) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUmxo-0002nN-GN for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dUmxl-0007jL-Rt for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:56 -0400 Received: from ozlabs.org ([103.22.144.67]:44707) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dUmxl-0007iP-FJ; Tue, 11 Jul 2017 00:39:53 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3x68Vw6fMLz9t0F; Tue, 11 Jul 2017 14:39:20 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1499747960; bh=SQnZ6B+t5ngqtgcxZM8HsBE4zZb6/e0GEBPGoSscccU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fsR6Kdc8wKZSPTDcTXMBrotUtYqqWVS1WVv3B2u2AUfbRUD8Plank/7oP28lXIE5C DUt5Qiu7fk0UhzjdydDFNwdzdBr108UUGoFoQS156aVII18DreWN97srNVhAobkOSZ ZlefH01iPoSvoYcwekfk4AeHxANMPk/x3Ll5q57w= From: David Gibson To: peter.maydell@linaro.org Date: Tue, 11 Jul 2017 14:39:04 +1000 Message-Id: <20170711043917.1757-5-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170711043917.1757-1-david@gibson.dropbear.id.au> References: <20170711043917.1757-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PULL 04/17] spapr: fix migration to pseries machine < 2.8 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: lvivier@redhat.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, surajjs@au1.ibm.com, aik@ozlabs.ru, sbobroff@au1.ibm.com, groug@kaod.org, agraf@suse.de, qemu-ppc@nongnu.org, bharata@linux.vnet.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Laurent Vivier since commit 5c4537bd ("spapr: Fix 2.7<->2.8 migration of PCI host bridge"), some migration fields are forged from the new ones in spapr_pci_pre_save(). It works well, except when the number of MSI devices is 0, because in this case the function exits immediately. This fix moves the migration code before the exit code. The problem can be reproduced with these commands: source qemu-2.9: qemu-system-ppc64 -monitor stdio -M pseries-2.6 -nodefaults -S destination qemu-2.6: qemu-system-ppc64 -monitor stdio -M pseries-2.6 -nodefaults \ -incoming tcp:0:4444 on the source: migrate tcp:localhost:4444 Destination fails with the following error: qemu-system-ppc64: error while loading state for instance 0x0 of device 'spapr_pci' qemu-system-ppc64: load of migration failed: Invalid argument Signed-off-by: Laurent Vivier Reviewed-by: Greg Kurz Signed-off-by: David Gibson --- hw/ppc/spapr_pci.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index 3b37dcd..f09b4e1 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -1873,20 +1873,6 @@ static void spapr_pci_pre_save(void *opaque) gpointer key, value; int i; =20 - g_free(sphb->msi_devs); - sphb->msi_devs =3D NULL; - sphb->msi_devs_num =3D g_hash_table_size(sphb->msi); - if (!sphb->msi_devs_num) { - return; - } - sphb->msi_devs =3D g_malloc(sphb->msi_devs_num * sizeof(spapr_pci_msi_= mig)); - - g_hash_table_iter_init(&iter, sphb->msi); - for (i =3D 0; g_hash_table_iter_next(&iter, &key, &value); ++i) { - sphb->msi_devs[i].key =3D *(uint32_t *) key; - sphb->msi_devs[i].value =3D *(spapr_pci_msi *) value; - } - if (sphb->pre_2_8_migration) { sphb->mig_liobn =3D sphb->dma_liobn[0]; sphb->mig_mem_win_addr =3D sphb->mem_win_addr; @@ -1900,6 +1886,20 @@ static void spapr_pci_pre_save(void *opaque) sphb->mig_mem_win_size +=3D sphb->mem64_win_size; } } + + g_free(sphb->msi_devs); + sphb->msi_devs =3D NULL; + sphb->msi_devs_num =3D g_hash_table_size(sphb->msi); + if (!sphb->msi_devs_num) { + return; + } + sphb->msi_devs =3D g_malloc(sphb->msi_devs_num * sizeof(spapr_pci_msi_= mig)); + + g_hash_table_iter_init(&iter, sphb->msi); + for (i =3D 0; g_hash_table_iter_next(&iter, &key, &value); ++i) { + sphb->msi_devs[i].key =3D *(uint32_t *) key; + sphb->msi_devs[i].value =3D *(spapr_pci_msi *) value; + } } =20 static int spapr_pci_post_load(void *opaque, int version_id) --=20 2.9.4 From nobody Wed Nov 5 06:38:42 2025 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; dkim=fail; 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 1499748375494743.7156326789568; Mon, 10 Jul 2017 21:46:15 -0700 (PDT) Received: from localhost ([::1]:44144 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUn3t-0000AE-UT for importer@patchew.org; Tue, 11 Jul 2017 00:46:13 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40899) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUmxp-0002pn-Qb for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dUmxo-0007ly-Ob for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:57 -0400 Received: from ozlabs.org ([103.22.144.67]:50721) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dUmxo-0007jt-DC; Tue, 11 Jul 2017 00:39:56 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3x68Vx3TVfz9t1n; Tue, 11 Jul 2017 14:39:20 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1499747961; bh=kNvp4iS8dxrIe3OUd4mqlLJIk2AfVrF5sBF4oO6yMxo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZqS3mxtSBGEiHMCm8uh6UpikJ502mBQv//lSiPbmzl14KlKdklcUkYv8f+CzjiyS8 HjcPGh8dNdVLGUAdsx6TDUjfvtX1Y+oPWyPlA2Vjs6AYq/WMkrfJgtdxuPKnKXFbFw PF3zmsJHCEKyZWCTViBW+zAU8LqIOdrXpgeUP17Y= From: David Gibson To: peter.maydell@linaro.org Date: Tue, 11 Jul 2017 14:39:05 +1000 Message-Id: <20170711043917.1757-6-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170711043917.1757-1-david@gibson.dropbear.id.au> References: <20170711043917.1757-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PULL 05/17] target-ppc: SPR_BOOKE_ESR not set on FP exceptions 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: lvivier@redhat.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, surajjs@au1.ibm.com, aik@ozlabs.ru, sbobroff@au1.ibm.com, groug@kaod.org, agraf@suse.de, Aaron Larson , qemu-ppc@nongnu.org, bharata@linux.vnet.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aaron Larson Properly set the book E exception syndrome register when a floating point exception occurs. Currently on a book E processor, the POWERPC_EXCP_FP exception handler fails to set "env->spr[SPR_BOOKE_ESR] =3D ESR_FP;" as required by the book E specification. Signed-off-by: Aaron Larson Signed-off-by: David Gibson --- target/ppc/excp_helper.c | 1 + 1 file changed, 1 insertion(+) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 3a9f086..e6009e7 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -283,6 +283,7 @@ static inline void powerpc_excp(PowerPCCPU *cpu, int ex= cp_model, int excp) * precise in the MSR. */ msr |=3D 0x00100000; + env->spr[SPR_BOOKE_ESR] =3D ESR_FP; break; case POWERPC_EXCP_INVAL: LOG_EXCP("Invalid instruction at " TARGET_FMT_lx "\n", env->ni= p); --=20 2.9.4 From nobody Wed Nov 5 06:38:42 2025 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; dkim=fail; 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 1499748232142264.8287115145124; Mon, 10 Jul 2017 21:43:52 -0700 (PDT) Received: from localhost ([::1]:44129 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUn1a-00064r-V7 for importer@patchew.org; Tue, 11 Jul 2017 00:43:51 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40880) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUmxp-0002nW-0k for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dUmxo-0007kY-3k for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:57 -0400 Received: from ozlabs.org ([103.22.144.67]:45285) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dUmxn-0007jU-Nv; Tue, 11 Jul 2017 00:39:56 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3x68Vx16sTz9t0j; Tue, 11 Jul 2017 14:39:20 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1499747961; bh=4BDFhZ5fpFuzcJMA8FXRVve0dWpYAB4ngjlebdTltz4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZHRachvzef3rna1PXwWzqammKaaPkJYRIol37Ajpy958W7/WUy4AWyMjgHMJ6P27l Izv25h/92n/k52Vijel7EQnYoVPbLh40yN6Gw+QRtYPjbOgphD1USGabpbCU8J0rzI t5mZHtGrI20arjl3hISoBPbKK3KZ4iJITVqDCUgw= From: David Gibson To: peter.maydell@linaro.org Date: Tue, 11 Jul 2017 14:39:06 +1000 Message-Id: <20170711043917.1757-7-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170711043917.1757-1-david@gibson.dropbear.id.au> References: <20170711043917.1757-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PULL 06/17] spapr: Leave DR-indicator management to the guest 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: lvivier@redhat.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, surajjs@au1.ibm.com, aik@ozlabs.ru, sbobroff@au1.ibm.com, groug@kaod.org, agraf@suse.de, qemu-ppc@nongnu.org, bharata@linux.vnet.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The DR-indicator is essentially a "virtual LED" attached to a hotpluggable device, which the guest can set to various states for the attention of the operator or management layers. It's mostly guest managed, except that we once-off set it to ACTIVE/INACTIVE in the attach/detach path. While that makes certain sense, there's no indication in PAPR that the hypervisor should do this, and the drmgr code on the guest side doesn't appear to need it (it will already set the indicator to ACTIVE on hotplug, and INACTIVE on remove). So, leave the DR-indicator entirely to the guest; the only thing we need to do is ensure it's in a sane state on reset. Signed-off-by: David Gibson Reviewed-by: Laurent Vivier Reviewed-by: Greg Kurz --- hw/ppc/spapr_drc.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c index bd40b84..22d4d81 100644 --- a/hw/ppc/spapr_drc.c +++ b/hw/ppc/spapr_drc.c @@ -353,8 +353,6 @@ void spapr_drc_attach(sPAPRDRConnector *drc, DeviceStat= e *d, void *fdt, } g_assert(fdt || coldplug); =20 - drc->dr_indicator =3D SPAPR_DR_INDICATOR_ACTIVE; - drc->dev =3D d; drc->fdt =3D fdt; drc->fdt_start_offset =3D fdt_start_offset; @@ -372,8 +370,6 @@ void spapr_drc_attach(sPAPRDRConnector *drc, DeviceStat= e *d, void *fdt, =20 static void spapr_drc_release(sPAPRDRConnector *drc) { - drc->dr_indicator =3D SPAPR_DR_INDICATOR_INACTIVE; - /* Calling release callbacks based on spapr_drc_type(drc). */ switch (spapr_drc_type(drc)) { case SPAPR_DR_CONNECTOR_TYPE_CPU: @@ -454,12 +450,14 @@ static void reset(DeviceState *d) if (spapr_drc_type(drc) !=3D SPAPR_DR_CONNECTOR_TYPE_PCI) { drc->allocation_state =3D SPAPR_DR_ALLOCATION_STATE_USABLE; } + drc->dr_indicator =3D SPAPR_DR_INDICATOR_ACTIVE; } else { /* Otherwise device is absent, but might be hotplugged */ drc->isolation_state =3D SPAPR_DR_ISOLATION_STATE_ISOLATED; if (spapr_drc_type(drc) !=3D SPAPR_DR_CONNECTOR_TYPE_PCI) { drc->allocation_state =3D SPAPR_DR_ALLOCATION_STATE_UNUSABLE; } + drc->dr_indicator =3D SPAPR_DR_INDICATOR_INACTIVE; } } =20 --=20 2.9.4 From nobody Wed Nov 5 06:38:42 2025 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; dkim=fail; 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 1499748073121141.672042199285; Mon, 10 Jul 2017 21:41:13 -0700 (PDT) Received: from localhost ([::1]:44117 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUmz1-0003lA-US for importer@patchew.org; Tue, 11 Jul 2017 00:41:11 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40567) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUmxM-0002IO-0r for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dUmxK-0007T1-Nn for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:27 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:43103) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dUmxK-0007SB-BM; Tue, 11 Jul 2017 00:39:26 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3x68Vx2VwFz9t1m; Tue, 11 Jul 2017 14:39:21 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1499747961; bh=VJGGKNAqQtRpqHsU8tqQmWzn8KJxalMkIUid9Up1LxU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=EsaK4dJpd3O5V47h1FeCVcvjO3n37aZqVIHbsaAU50GqlwiTJ3kxqiiJBDAJUsRvy 1f21Fai79XFldZd2aziOL2BETFxP7UGgr/uFeScWc4GRPKMRLNQbGEIIYvvbSmJJh6 b72LnJtExBmh79UTwhGQ1L0NeustFMJRquszL5Rs= From: David Gibson To: peter.maydell@linaro.org Date: Tue, 11 Jul 2017 14:39:07 +1000 Message-Id: <20170711043917.1757-8-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170711043917.1757-1-david@gibson.dropbear.id.au> References: <20170711043917.1757-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 Subject: [Qemu-devel] [PULL 07/17] spapr: Uniform DRC reset paths 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: lvivier@redhat.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, surajjs@au1.ibm.com, aik@ozlabs.ru, sbobroff@au1.ibm.com, groug@kaod.org, agraf@suse.de, qemu-ppc@nongnu.org, bharata@linux.vnet.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" DRC objects have a regular device reset method. However, it only gets called in the usual way for PCI DRCs. Because of where CPU and LMB DRCs are in the QOM tree, their device reset method isn't automatically called. So, the machine manually registers reset handlers to call device_reset(). This patch removes the device reset method, and instead always explicitly registers the reset handler from realize(). This means the callers don't have to worry about the two cases, and we always get proper resets. Signed-off-by: David Gibson Reviewed-by: Greg Kurz Reviewed-by: Laurent Vivier --- hw/ppc/spapr.c | 31 ++++--------------------------- hw/ppc/spapr_drc.c | 6 +++--- 2 files changed, 7 insertions(+), 30 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 5acfb47..4fa982d 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -1967,24 +1967,6 @@ static void spapr_boot_set(void *opaque, const char = *boot_device, machine->boot_order =3D g_strdup(boot_device); } =20 -/* - * Reset routine for LMB DR devices. - * - * Unlike PCI DR devices, LMB DR devices explicitly register this reset - * routine. Reset for PCI DR devices will be handled by PHB reset routine - * when it walks all its children devices. LMB devices reset occurs - * as part of ppc_spapr_reset(). - */ -static void spapr_drc_reset(void *opaque) -{ - sPAPRDRConnector *drc =3D opaque; - DeviceState *d =3D DEVICE(drc); - - if (d) { - device_reset(d); - } -} - static void spapr_create_lmb_dr_connectors(sPAPRMachineState *spapr) { MachineState *machine =3D MACHINE(spapr); @@ -1993,13 +1975,11 @@ static void spapr_create_lmb_dr_connectors(sPAPRMac= hineState *spapr) int i; =20 for (i =3D 0; i < nr_lmbs; i++) { - sPAPRDRConnector *drc; uint64_t addr; =20 addr =3D i * lmb_size + spapr->hotplug_memory.base; - drc =3D spapr_dr_connector_new(OBJECT(spapr), TYPE_SPAPR_DRC_LMB, - addr/lmb_size); - qemu_register_reset(spapr_drc_reset, drc); + spapr_dr_connector_new(OBJECT(spapr), TYPE_SPAPR_DRC_LMB, + addr / lmb_size); } } =20 @@ -2093,11 +2073,8 @@ static void spapr_init_cpus(sPAPRMachineState *spapr) int core_id =3D i * smp_threads; =20 if (mc->has_hotpluggable_cpus) { - sPAPRDRConnector *drc =3D - spapr_dr_connector_new(OBJECT(spapr), TYPE_SPAPR_DRC_CPU, - (core_id / smp_threads) * smt); - - qemu_register_reset(spapr_drc_reset, drc); + spapr_dr_connector_new(OBJECT(spapr), TYPE_SPAPR_DRC_CPU, + (core_id / smp_threads) * smt); } =20 if (i < boot_cores_nr) { diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c index 22d4d81..c831aa3 100644 --- a/hw/ppc/spapr_drc.c +++ b/hw/ppc/spapr_drc.c @@ -426,9 +426,9 @@ static bool release_pending(sPAPRDRConnector *drc) return drc->awaiting_release; } =20 -static void reset(DeviceState *d) +static void drc_reset(void *opaque) { - sPAPRDRConnector *drc =3D SPAPR_DR_CONNECTOR(d); + sPAPRDRConnector *drc =3D SPAPR_DR_CONNECTOR(opaque); =20 trace_spapr_drc_reset(spapr_drc_index(drc)); =20 @@ -538,6 +538,7 @@ static void realize(DeviceState *d, Error **errp) g_free(child_name); vmstate_register(DEVICE(drc), spapr_drc_index(drc), &vmstate_spapr_drc, drc); + qemu_register_reset(drc_reset, drc); trace_spapr_drc_realize_complete(spapr_drc_index(drc)); } =20 @@ -596,7 +597,6 @@ static void spapr_dr_connector_class_init(ObjectClass *= k, void *data) DeviceClass *dk =3D DEVICE_CLASS(k); sPAPRDRConnectorClass *drck =3D SPAPR_DR_CONNECTOR_CLASS(k); =20 - dk->reset =3D reset; dk->realize =3D realize; dk->unrealize =3D unrealize; drck->release_pending =3D release_pending; --=20 2.9.4 From nobody Wed Nov 5 06:38:42 2025 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; dkim=fail; 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 1499748824967227.3038170507964; Mon, 10 Jul 2017 21:53:44 -0700 (PDT) Received: from localhost ([::1]:44178 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUnB9-0005WQ-Tc for importer@patchew.org; Tue, 11 Jul 2017 00:53:43 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40921) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUmxq-0002qC-Cf for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dUmxp-0007mX-BI for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:58 -0400 Received: from ozlabs.org ([103.22.144.67]:50803) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dUmxo-0007kA-VX; Tue, 11 Jul 2017 00:39:57 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3x68Vy1MGVz9t2M; Tue, 11 Jul 2017 14:39:21 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1499747962; bh=nFd/A9E4Eh8IhwKmbl8iX932IS46OnixxZIKGtEMMnU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=UQKeAGEznQaiO7jP5YqUBRF/WFpVrc3iZ78pbLIgVmXB0FvvTPoPlnFiw1//8+hSC Ki8+0gjhPiQ1PoMaLC9rliJuIVHkFzpeQn/cpEcWipV9cYAr25LflWyGEtDGrrFk6c JOEmBSoVCxJ1V0B9sypfsysYt0F4Z7C9CvgqwD+s= From: David Gibson To: peter.maydell@linaro.org Date: Tue, 11 Jul 2017 14:39:08 +1000 Message-Id: <20170711043917.1757-9-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170711043917.1757-1-david@gibson.dropbear.id.au> References: <20170711043917.1757-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PULL 08/17] spapr: Add DRC release method 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: lvivier@redhat.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, surajjs@au1.ibm.com, aik@ozlabs.ru, sbobroff@au1.ibm.com, groug@kaod.org, agraf@suse.de, qemu-ppc@nongnu.org, bharata@linux.vnet.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" At the moment, spapr_drc_release() has an ugly switch on the DRC type to call the right, device-specific release function. This cleans it up by doing that via a proper QOM method. It's still arguably an abstraction violation for the DRC code to call into the specific device code, but one mess at a time. Signed-off-by: David Gibson Reviewed-by: Laurent Vivier Reviewed-by: Greg Kurz --- hw/ppc/spapr_drc.c | 22 ++++++---------------- include/hw/ppc/spapr_drc.h | 1 + 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c index c831aa3..aa37a47 100644 --- a/hw/ppc/spapr_drc.c +++ b/hw/ppc/spapr_drc.c @@ -370,22 +370,9 @@ void spapr_drc_attach(sPAPRDRConnector *drc, DeviceSta= te *d, void *fdt, =20 static void spapr_drc_release(sPAPRDRConnector *drc) { - /* Calling release callbacks based on spapr_drc_type(drc). */ - switch (spapr_drc_type(drc)) { - case SPAPR_DR_CONNECTOR_TYPE_CPU: - spapr_core_release(drc->dev); - break; - case SPAPR_DR_CONNECTOR_TYPE_PCI: - spapr_phb_remove_pci_device_cb(drc->dev); - break; - case SPAPR_DR_CONNECTOR_TYPE_LMB: - spapr_lmb_release(drc->dev); - break; - case SPAPR_DR_CONNECTOR_TYPE_PHB: - case SPAPR_DR_CONNECTOR_TYPE_VIO: - default: - g_assert(false); - } + sPAPRDRConnectorClass *drck =3D SPAPR_DR_CONNECTOR_GET_CLASS(drc); + + drck->release(drc->dev); =20 drc->awaiting_release =3D false; g_free(drc->fdt); @@ -631,6 +618,7 @@ static void spapr_drc_cpu_class_init(ObjectClass *k, vo= id *data) drck->typeshift =3D SPAPR_DR_CONNECTOR_TYPE_SHIFT_CPU; drck->typename =3D "CPU"; drck->drc_name_prefix =3D "CPU "; + drck->release =3D spapr_core_release; } =20 static void spapr_drc_pci_class_init(ObjectClass *k, void *data) @@ -640,6 +628,7 @@ static void spapr_drc_pci_class_init(ObjectClass *k, vo= id *data) drck->typeshift =3D SPAPR_DR_CONNECTOR_TYPE_SHIFT_PCI; drck->typename =3D "28"; drck->drc_name_prefix =3D "C"; + drck->release =3D spapr_phb_remove_pci_device_cb; } =20 static void spapr_drc_lmb_class_init(ObjectClass *k, void *data) @@ -649,6 +638,7 @@ static void spapr_drc_lmb_class_init(ObjectClass *k, vo= id *data) drck->typeshift =3D SPAPR_DR_CONNECTOR_TYPE_SHIFT_LMB; drck->typename =3D "MEM"; drck->drc_name_prefix =3D "LMB "; + drck->release =3D spapr_lmb_release; } =20 static const TypeInfo spapr_dr_connector_info =3D { diff --git a/include/hw/ppc/spapr_drc.h b/include/hw/ppc/spapr_drc.h index d9cacb3..6fd84d1 100644 --- a/include/hw/ppc/spapr_drc.h +++ b/include/hw/ppc/spapr_drc.h @@ -217,6 +217,7 @@ typedef struct sPAPRDRConnectorClass { sPAPRDREntitySense (*dr_entity_sense)(sPAPRDRConnector *drc); uint32_t (*isolate)(sPAPRDRConnector *drc); uint32_t (*unisolate)(sPAPRDRConnector *drc); + void (*release)(DeviceState *dev); =20 /* QEMU interfaces for managing hotplug operations */ bool (*release_pending)(sPAPRDRConnector *drc); --=20 2.9.4 From nobody Wed Nov 5 06:38:42 2025 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; dkim=fail; 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 1499748382853861.5279748016643; Mon, 10 Jul 2017 21:46:22 -0700 (PDT) Received: from localhost ([::1]:44145 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUn41-0000GD-ME for importer@patchew.org; Tue, 11 Jul 2017 00:46:21 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40673) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUmxP-0002MG-Jn for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dUmxO-0007VR-It for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:31 -0400 Received: from ozlabs.org ([103.22.144.67]:47167) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dUmxO-0007TQ-7S; Tue, 11 Jul 2017 00:39:30 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3x68Vy2WzYz9t1t; Tue, 11 Jul 2017 14:39:21 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1499747962; bh=D1WBsnJesOhQJ3x41C0PThVTqG/bQkKhPIxsQu6y5Z4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=geNcw+ErTYSM1T4kuSB8jIGu88Ub8+MvYorT0LYfUNbIIgnjsgrfC0fhB65Vxjw+w 0xvH8Vbq+xRVxUfwu3M6cOytBCewlEOl4E5A6tLGWYEEG27z5Qf7R9XMeFL1wuHWUT +SKtR9BJl/CK6wYq753MpCI1sY8kXsjqwq7JTXpo= From: David Gibson To: peter.maydell@linaro.org Date: Tue, 11 Jul 2017 14:39:09 +1000 Message-Id: <20170711043917.1757-10-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170711043917.1757-1-david@gibson.dropbear.id.au> References: <20170711043917.1757-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PULL 09/17] spapr: Remove unnecessary differences between hotplug and coldplug paths 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: lvivier@redhat.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, surajjs@au1.ibm.com, aik@ozlabs.ru, sbobroff@au1.ibm.com, groug@kaod.org, agraf@suse.de, qemu-ppc@nongnu.org, bharata@linux.vnet.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" spapr_drc_attach() has a 'coldplug' parameter which sets the DRC into configured state initially, instead of the usual ISOLATED/UNUSABLE state. It turns out this is unnecessary: although coldplugged devices do need to be in CONFIGURED state once the guest starts, that will already be accomplished by the reset code which will move DRCs for already plugged devices into a coldplug equivalent state. Signed-off-by: David Gibson Reviewed-by: Laurent Vivier Reviewed-by: Greg Kurz --- hw/ppc/spapr.c | 13 +++---------- hw/ppc/spapr_drc.c | 5 ++--- hw/ppc/spapr_pci.c | 3 +-- include/hw/ppc/spapr_drc.h | 2 +- 4 files changed, 7 insertions(+), 16 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 4fa982d..70b3fd3 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -2611,7 +2611,7 @@ static void spapr_add_lmbs(DeviceState *dev, uint64_t= addr_start, uint64_t size, fdt_offset =3D spapr_populate_memory_node(fdt, node, addr, SPAPR_MEMORY_BLOCK_SIZE); =20 - spapr_drc_attach(drc, dev, fdt, fdt_offset, !dev->hotplugged, errp= ); + spapr_drc_attach(drc, dev, fdt, fdt_offset, errp); addr +=3D SPAPR_MEMORY_BLOCK_SIZE; } /* send hotplug notification to the @@ -2956,17 +2956,10 @@ static void spapr_core_plug(HotplugHandler *hotplug= _dev, DeviceState *dev, =20 g_assert(drc || !mc->has_hotpluggable_cpus); =20 - /* - * Setup CPU DT entries only for hotplugged CPUs. For boot time or - * coldplugged CPUs DT entries are setup in spapr_build_fdt(). - */ - if (dev->hotplugged) { - fdt =3D spapr_populate_hotplug_cpu_dt(cs, &fdt_offset, spapr); - } + fdt =3D spapr_populate_hotplug_cpu_dt(cs, &fdt_offset, spapr); =20 if (drc) { - spapr_drc_attach(drc, dev, fdt, fdt_offset, !dev->hotplugged, - &local_err); + spapr_drc_attach(drc, dev, fdt, fdt_offset, &local_err); if (local_err) { g_free(fdt); error_propagate(errp, local_err); diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c index aa37a47..f34355d 100644 --- a/hw/ppc/spapr_drc.c +++ b/hw/ppc/spapr_drc.c @@ -340,7 +340,7 @@ static void prop_get_fdt(Object *obj, Visitor *v, const= char *name, } =20 void spapr_drc_attach(sPAPRDRConnector *drc, DeviceState *d, void *fdt, - int fdt_start_offset, bool coldplug, Error **errp) + int fdt_start_offset, Error **errp) { trace_spapr_drc_attach(spapr_drc_index(drc)); =20 @@ -351,12 +351,11 @@ void spapr_drc_attach(sPAPRDRConnector *drc, DeviceSt= ate *d, void *fdt, if (spapr_drc_type(drc) =3D=3D SPAPR_DR_CONNECTOR_TYPE_PCI) { g_assert(drc->allocation_state =3D=3D SPAPR_DR_ALLOCATION_STATE_US= ABLE); } - g_assert(fdt || coldplug); + g_assert(fdt); =20 drc->dev =3D d; drc->fdt =3D fdt; drc->fdt_start_offset =3D fdt_start_offset; - drc->configured =3D coldplug; =20 if (spapr_drc_type(drc) !=3D SPAPR_DR_CONNECTOR_TYPE_PCI) { drc->awaiting_allocation =3D true; diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index f09b4e1..49c8db8 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -1435,8 +1435,7 @@ static void spapr_phb_hot_plug_child(HotplugHandler *= plug_handler, goto out; } =20 - spapr_drc_attach(drc, DEVICE(pdev), fdt, fdt_start_offset, - !plugged_dev->hotplugged, &local_err); + spapr_drc_attach(drc, DEVICE(pdev), fdt, fdt_start_offset, &local_err); if (local_err) { goto out; } diff --git a/include/hw/ppc/spapr_drc.h b/include/hw/ppc/spapr_drc.h index 6fd84d1..d15e9eb 100644 --- a/include/hw/ppc/spapr_drc.h +++ b/include/hw/ppc/spapr_drc.h @@ -234,7 +234,7 @@ int spapr_drc_populate_dt(void *fdt, int fdt_offset, Ob= ject *owner, uint32_t drc_type_mask); =20 void spapr_drc_attach(sPAPRDRConnector *drc, DeviceState *d, void *fdt, - int fdt_start_offset, bool coldplug, Error **errp); + int fdt_start_offset, Error **errp); void spapr_drc_detach(sPAPRDRConnector *drc, DeviceState *d, Error **errp); =20 #endif /* HW_SPAPR_DRC_H */ --=20 2.9.4 From nobody Wed Nov 5 06:38:42 2025 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; dkim=fail; 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 1499748255492184.6284115708246; Mon, 10 Jul 2017 21:44:15 -0700 (PDT) Received: from localhost ([::1]:44130 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUn1y-0006le-AM for importer@patchew.org; Tue, 11 Jul 2017 00:44:14 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40670) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUmxP-0002MA-GH for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dUmxO-0007VJ-FY for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:31 -0400 Received: from ozlabs.org ([103.22.144.67]:48909) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dUmxO-0007TS-4D; Tue, 11 Jul 2017 00:39:30 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3x68Vy3z31z9t2H; Tue, 11 Jul 2017 14:39:21 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1499747962; bh=uJz4jFbJXuYzzGWUQG30STgY9NjvuOX9zYyx8gmLtj4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BY5e5gjEe0fJ24bNH8s+07DRCAobuzhewQSXdzdPAfusbTngIFzj8s0IEi42cOF6M APRjahUHchieZwvUAqUOTvZsMIognR1WxyAmNx9anvXO34TqvoEJkViacHZjWpBg7o KfmF2/2d3p7Ccyo14G/hpD/fj9vaNjUbmseWXB7Y= From: David Gibson To: peter.maydell@linaro.org Date: Tue, 11 Jul 2017 14:39:10 +1000 Message-Id: <20170711043917.1757-11-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170711043917.1757-1-david@gibson.dropbear.id.au> References: <20170711043917.1757-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PULL 10/17] spapr: Use unplug_request for PCI hot unplug 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: lvivier@redhat.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, surajjs@au1.ibm.com, aik@ozlabs.ru, sbobroff@au1.ibm.com, groug@kaod.org, agraf@suse.de, qemu-ppc@nongnu.org, bharata@linux.vnet.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" AIUI, ->unplug_request in the HotplugHandler is used for "soft" unplug, where acknowledgement from the guest is required before completing the unplug, whereas ->unplug is used for "hard" unplug where qemu unilaterally removes the device, and the guest just has to cope with its sudden absence. For spapr we (correctly) use ->unplug_request for CPU and memory hot unplug but we use ->unplug for PCI. While I think it might be possible to support "hard" PCI unplug within the PAPR model, that's not how it actually works now. Although it's called from ->unplug, the PCI unplug path will usually just mark the device for removal, with completion of the unplug delayed until userspace responds to the unplug notification. If the guest doesn't respond as expected, that could delay the unplug completion arbitrarily long. To reflect that, change the PCI unplug path to be called from ->unplug_request. We also rename spapr_phb_hot_plug_child() and spapr_phb_hot_unplug_child() to spapr_pci_plug() and spapr_pci_unplug_request() to more obviously reflect the callbacks they're implementing. Signed-off-by: David Gibson Reviewed-by: Laurent Vivier Reviewed-by: Greg Kurz --- hw/ppc/spapr_pci.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index 49c8db8..cc1588d 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -1388,8 +1388,8 @@ static uint32_t spapr_phb_get_pci_drc_index(sPAPRPHBS= tate *phb, return spapr_drc_index(drc); } =20 -static void spapr_phb_hot_plug_child(HotplugHandler *plug_handler, - DeviceState *plugged_dev, Error **err= p) +static void spapr_pci_plug(HotplugHandler *plug_handler, + DeviceState *plugged_dev, Error **errp) { sPAPRPHBState *phb =3D SPAPR_PCI_HOST_BRIDGE(DEVICE(plug_handler)); PCIDevice *pdev =3D PCI_DEVICE(plugged_dev); @@ -1469,8 +1469,8 @@ out: } } =20 -static void spapr_phb_hot_unplug_child(HotplugHandler *plug_handler, - DeviceState *plugged_dev, Error **e= rrp) +static void spapr_pci_unplug_request(HotplugHandler *plug_handler, + DeviceState *plugged_dev, Error **err= p) { sPAPRPHBState *phb =3D SPAPR_PCI_HOST_BRIDGE(DEVICE(plug_handler)); PCIDevice *pdev =3D PCI_DEVICE(plugged_dev); @@ -1485,6 +1485,7 @@ static void spapr_phb_hot_unplug_child(HotplugHandler= *plug_handler, } =20 g_assert(drc); + g_assert(drc->dev =3D=3D plugged_dev); =20 drck =3D SPAPR_DR_CONNECTOR_GET_CLASS(drc); if (!drck->release_pending(drc)) { @@ -1972,8 +1973,8 @@ static void spapr_phb_class_init(ObjectClass *klass, = void *data) /* Supported by TYPE_SPAPR_MACHINE */ dc->user_creatable =3D true; set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); - hp->plug =3D spapr_phb_hot_plug_child; - hp->unplug =3D spapr_phb_hot_unplug_child; + hp->plug =3D spapr_pci_plug; + hp->unplug_request =3D spapr_pci_unplug_request; } =20 static const TypeInfo spapr_phb_info =3D { --=20 2.9.4 From nobody Wed Nov 5 06:38:43 2025 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; dkim=fail; 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 1499748220282170.73852080032862; Mon, 10 Jul 2017 21:43:40 -0700 (PDT) Received: from localhost ([::1]:44127 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUn1O-0005tu-TC for importer@patchew.org; Tue, 11 Jul 2017 00:43:38 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40597) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUmxN-0002J4-4K for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dUmxL-0007Tm-Sq for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:29 -0400 Received: from ozlabs.org ([103.22.144.67]:46605) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dUmxL-0007Sa-Gq; Tue, 11 Jul 2017 00:39:27 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3x68Vx6FTNz9t2Q; Tue, 11 Jul 2017 14:39:21 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1499747961; bh=/DkvVvP07r7uYc9hBEBDmPOkAsADql/+9EO+iBSbHvw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=p99g8VymT1sdjM+LkGlnt5xkyhCc7PrZXBltYpEDplUi+x+RVH3vGjL93IBjnLyDW Ddgb2ixfixKAGnWXdPaUk7H6k0dPx4Eoq0THZu/RAgFPg8Dp7n6NqvacgUQC++Vf1Q jAOgwJZnh52ayHtM/xYfv0y4DO8TlVjAv/yAtSUQ= From: David Gibson To: peter.maydell@linaro.org Date: Tue, 11 Jul 2017 14:39:11 +1000 Message-Id: <20170711043917.1757-12-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170711043917.1757-1-david@gibson.dropbear.id.au> References: <20170711043917.1757-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PULL 11/17] target/ppc: Refactor tcg radix mmu code 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: lvivier@redhat.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, surajjs@au1.ibm.com, aik@ozlabs.ru, sbobroff@au1.ibm.com, groug@kaod.org, agraf@suse.de, qemu-ppc@nongnu.org, Suraj Jitindar Singh , bharata@linux.vnet.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Suraj Jitindar Singh The mmu-radix64.c file implements functions to enable the radix mmu emulation in tcg mode. There is a function ppc_radix64_walk_tree() which performs the radix tree walk and also implicitly checks the pte protection. Move the protection checking of the pte from the ppc_radix64_walk_tree() function into the caller. This means the ppc_radix64_walk_tree() function can be used without protection checking which is useful for debugging. ppc_radix64_walk_tree() no longer needs to take the rwx and prot variables. Signed-off-by: Suraj Jitindar Singh Signed-off-by: David Gibson --- target/ppc/mmu-radix64.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/target/ppc/mmu-radix64.c b/target/ppc/mmu-radix64.c index 69fde65..1a650fd 100644 --- a/target/ppc/mmu-radix64.c +++ b/target/ppc/mmu-radix64.c @@ -147,11 +147,10 @@ static void ppc_radix64_set_rc(PowerPCCPU *cpu, int r= wx, uint64_t pte, } } =20 -static uint64_t ppc_radix64_walk_tree(PowerPCCPU *cpu, int rwx, vaddr eadd= r, +static uint64_t ppc_radix64_walk_tree(PowerPCCPU *cpu, vaddr eaddr, uint64_t base_addr, uint64_t nls, hwaddr *raddr, int *psize, - int *fault_cause, int *prot, - hwaddr *pte_addr) + int *fault_cause, hwaddr *pte_addr) { CPUState *cs =3D CPU(cpu); uint64_t index, pde; @@ -177,10 +176,6 @@ static uint64_t ppc_radix64_walk_tree(PowerPCCPU *cpu,= int rwx, vaddr eaddr, uint64_t rpn =3D pde & R_PTE_RPN; uint64_t mask =3D (1UL << *psize) - 1; =20 - if (ppc_radix64_check_prot(cpu, rwx, pde, fault_cause, prot)) { - return 0; /* Protection Denied Access */ - } - /* Or high bits of rpn and low bits to ea to form whole real addr = */ *raddr =3D (rpn & ~mask) | (eaddr & mask); *pte_addr =3D base_addr + (index * sizeof(pde)); @@ -188,9 +183,8 @@ static uint64_t ppc_radix64_walk_tree(PowerPCCPU *cpu, = int rwx, vaddr eaddr, } =20 /* Next Level of Radix Tree */ - return ppc_radix64_walk_tree(cpu, rwx, eaddr, pde & R_PDE_NLB, - pde & R_PDE_NLS, raddr, psize, - fault_cause, prot, pte_addr); + return ppc_radix64_walk_tree(cpu, eaddr, pde & R_PDE_NLB, pde & R_PDE_= NLS, + raddr, psize, fault_cause, pte_addr); } =20 int ppc_radix64_handle_mmu_fault(PowerPCCPU *cpu, vaddr eaddr, int rwx, @@ -241,11 +235,11 @@ int ppc_radix64_handle_mmu_fault(PowerPCCPU *cpu, vad= dr eaddr, int rwx, =20 /* Walk Radix Tree from Process Table Entry to Convert EA to RA */ page_size =3D PRTBE_R_GET_RTS(prtbe0); - pte =3D ppc_radix64_walk_tree(cpu, rwx, eaddr & R_EADDR_MASK, + pte =3D ppc_radix64_walk_tree(cpu, eaddr & R_EADDR_MASK, prtbe0 & PRTBE_R_RPDB, prtbe0 & PRTBE_R_RP= DS, - &raddr, &page_size, &fault_cause, &prot, - &pte_addr); - if (!pte) { + &raddr, &page_size, &fault_cause, &pte_add= r); + if (!pte || ppc_radix64_check_prot(cpu, rwx, pte, &fault_cause, &prot)= ) { + /* Couldn't get pte or access denied due to protection */ ppc_radix64_raise_si(cpu, rwx, eaddr, fault_cause); return 1; } --=20 2.9.4 From nobody Wed Nov 5 06:38:43 2025 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; dkim=fail; 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 1499748093259472.10134985434354; Mon, 10 Jul 2017 21:41:33 -0700 (PDT) Received: from localhost ([::1]:44118 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUmzM-000434-3S for importer@patchew.org; Tue, 11 Jul 2017 00:41:32 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40568) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUmxM-0002IP-1Q for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dUmxK-0007TE-TP for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:28 -0400 Received: from ozlabs.org ([103.22.144.67]:37791) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dUmxK-0007SQ-Hb; Tue, 11 Jul 2017 00:39:26 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3x68Vx4tgnz9t1G; Tue, 11 Jul 2017 14:39:21 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1499747961; bh=JK8ZDu8ivMcYdNSZZz21ldjw5oUYlRnYRaWPc6NORgE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XAEdjsVIWW+tKOvS6uz+0w+K+zsFZDixlWMkVU+sKGnE0e4AG/PVAZ+B6tTrJShdR /JOc8MQAeaLRArxSnqOjU4pO73bORgrSDkMisb2ahcpGKJrd7pMIfGpBh+o14hgg2r 7qDbRloza4gUgFy/PzP3QQPwAYsIttfcs01kxqKI= From: David Gibson To: peter.maydell@linaro.org Date: Tue, 11 Jul 2017 14:39:12 +1000 Message-Id: <20170711043917.1757-13-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170711043917.1757-1-david@gibson.dropbear.id.au> References: <20170711043917.1757-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PULL 12/17] target/ppc: Add debug function for radix mmu translation 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: lvivier@redhat.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, surajjs@au1.ibm.com, aik@ozlabs.ru, sbobroff@au1.ibm.com, groug@kaod.org, agraf@suse.de, qemu-ppc@nongnu.org, Suraj Jitindar Singh , bharata@linux.vnet.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Suraj Jitindar Singh In target/ppc/mmu-hash64.c there already exists the function ppc_hash64_get_phys_page_debug() to get the physical (real) address for a given effective address in hash mode. Implement the function ppc_radix64_get_phys_page_debug() to allow a real address to be obtained for a given effective address in radix mode. This is used when a debugger is attached to qemu. Previously we just had a comment saying this is unimplemented which then fell through to the default case and caused an abort due to unrecognised mmu model as the default had no case for the V3 mmu, which was misleading at best. We reuse ppc_radix64_walk_tree() which is used by the radix fault handler since the process of walking the radix tree is identical. Reported-by: Balbir Singh Signed-off-by: Suraj Jitindar Singh Signed-off-by: David Gibson --- target/ppc/mmu-radix64.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ target/ppc/mmu-radix64.h | 1 + target/ppc/mmu_helper.c | 3 ++- 3 files changed, 48 insertions(+), 1 deletion(-) diff --git a/target/ppc/mmu-radix64.c b/target/ppc/mmu-radix64.c index 1a650fd..bbd37e3 100644 --- a/target/ppc/mmu-radix64.c +++ b/target/ppc/mmu-radix64.c @@ -251,3 +251,48 @@ int ppc_radix64_handle_mmu_fault(PowerPCCPU *cpu, vadd= r eaddr, int rwx, prot, mmu_idx, 1UL << page_size); return 0; } + +hwaddr ppc_radix64_get_phys_page_debug(PowerPCCPU *cpu, target_ulong eaddr) +{ + CPUState *cs =3D CPU(cpu); + CPUPPCState *env =3D &cpu->env; + PPCVirtualHypervisorClass *vhc =3D + PPC_VIRTUAL_HYPERVISOR_GET_CLASS(cpu->vhyp); + hwaddr raddr, pte_addr; + uint64_t lpid =3D 0, pid =3D 0, offset, size, patbe, prtbe0, pte; + int page_size, fault_cause =3D 0; + + /* Handle Real Mode */ + if (msr_dr =3D=3D 0) { + /* In real mode top 4 effective addr bits (mostly) ignored */ + return eaddr & 0x0FFFFFFFFFFFFFFFULL; + } + + /* Virtual Mode Access - get the fully qualified address */ + if (!ppc_radix64_get_fully_qualified_addr(env, eaddr, &lpid, &pid)) { + return -1; + } + + /* Get Process Table */ + patbe =3D vhc->get_patbe(cpu->vhyp); + + /* Index Process Table by PID to Find Corresponding Process Table Entr= y */ + offset =3D pid * sizeof(struct prtb_entry); + size =3D 1ULL << ((patbe & PATBE1_R_PRTS) + 12); + if (offset >=3D size) { + /* offset exceeds size of the process table */ + return -1; + } + prtbe0 =3D ldq_phys(cs->as, (patbe & PATBE1_R_PRTB) + offset); + + /* Walk Radix Tree from Process Table Entry to Convert EA to RA */ + page_size =3D PRTBE_R_GET_RTS(prtbe0); + pte =3D ppc_radix64_walk_tree(cpu, eaddr & R_EADDR_MASK, + prtbe0 & PRTBE_R_RPDB, prtbe0 & PRTBE_R_RP= DS, + &raddr, &page_size, &fault_cause, &pte_add= r); + if (!pte) { + return -1; + } + + return raddr & TARGET_PAGE_MASK; +} diff --git a/target/ppc/mmu-radix64.h b/target/ppc/mmu-radix64.h index 1d5c7cf..0ecf063 100644 --- a/target/ppc/mmu-radix64.h +++ b/target/ppc/mmu-radix64.h @@ -46,6 +46,7 @@ =20 int ppc_radix64_handle_mmu_fault(PowerPCCPU *cpu, vaddr eaddr, int rwx, int mmu_idx); +hwaddr ppc_radix64_get_phys_page_debug(PowerPCCPU *cpu, target_ulong addr); =20 static inline int ppc_radix64_get_prot_eaa(uint64_t pte) { diff --git a/target/ppc/mmu_helper.c b/target/ppc/mmu_helper.c index 65d1c86..b7b9088 100644 --- a/target/ppc/mmu_helper.c +++ b/target/ppc/mmu_helper.c @@ -30,6 +30,7 @@ #include "helper_regs.h" #include "qemu/error-report.h" #include "mmu-book3s-v3.h" +#include "mmu-radix64.h" =20 //#define DEBUG_MMU //#define DEBUG_BATS @@ -1432,7 +1433,7 @@ hwaddr ppc_cpu_get_phys_page_debug(CPUState *cs, vadd= r addr) return ppc_hash64_get_phys_page_debug(cpu, addr); case POWERPC_MMU_VER_3_00: if (ppc64_radix_guest(ppc_env_get_cpu(env))) { - /* TODO - Unsupported */ + return ppc_radix64_get_phys_page_debug(cpu, addr); } else { return ppc_hash64_get_phys_page_debug(cpu, addr); } --=20 2.9.4 From nobody Wed Nov 5 06:38:43 2025 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; dkim=fail; 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 1499748519383271.84076823654834; Mon, 10 Jul 2017 21:48:39 -0700 (PDT) Received: from localhost ([::1]:44157 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUn6E-000242-AA for importer@patchew.org; Tue, 11 Jul 2017 00:48:38 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40733) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUmxS-0002QL-Hu for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dUmxR-0007Xa-MP for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:34 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:45555) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dUmxR-0007Vk-9Y; Tue, 11 Jul 2017 00:39:33 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3x68Vz0Xwcz9t2t; Tue, 11 Jul 2017 14:39:21 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1499747963; bh=mvz8XuISflzqOZjfgyqdF71C4Sg3u6vxXfIjamJhpJA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AWAtBCCzcqHw/p7LyJhTdorsikLGSH7MNk0DVyH7cUEqpr54CQjnOnAfxO+gOgVGC s3zEDZBV+nLuBVRjRXV3hjDC7yqqr89mff/t8aMIpr/vMIPRJhXBIZJm2iV6K1qhH/ GSScx8v54VbH0uwZQjHMqbghzCKPeIwrxRa/BF+Q= From: David Gibson To: peter.maydell@linaro.org Date: Tue, 11 Jul 2017 14:39:13 +1000 Message-Id: <20170711043917.1757-14-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170711043917.1757-1-david@gibson.dropbear.id.au> References: <20170711043917.1757-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 Subject: [Qemu-devel] [PULL 13/17] spapr: fix memory hotplug error path 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: lvivier@redhat.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, surajjs@au1.ibm.com, aik@ozlabs.ru, sbobroff@au1.ibm.com, groug@kaod.org, agraf@suse.de, qemu-ppc@nongnu.org, bharata@linux.vnet.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Greg Kurz QEMU shouldn't abort if spapr_add_lmbs()->spapr_drc_attach() fails. Let's propagate the error instead, like it is done everywhere else where spapr_drc_attach() is called. Signed-off-by: Greg Kurz Reviewed-by: Daniel Barboza Signed-off-by: David Gibson --- hw/ppc/spapr.c | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 70b3fd3..ba8f57a 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -2601,6 +2601,7 @@ static void spapr_add_lmbs(DeviceState *dev, uint64_t= addr_start, uint64_t size, int i, fdt_offset, fdt_size; void *fdt; uint64_t addr =3D addr_start; + Error *local_err =3D NULL; =20 for (i =3D 0; i < nr_lmbs; i++) { drc =3D spapr_drc_by_id(TYPE_SPAPR_DRC_LMB, @@ -2611,7 +2612,18 @@ static void spapr_add_lmbs(DeviceState *dev, uint64_= t addr_start, uint64_t size, fdt_offset =3D spapr_populate_memory_node(fdt, node, addr, SPAPR_MEMORY_BLOCK_SIZE); =20 - spapr_drc_attach(drc, dev, fdt, fdt_offset, errp); + spapr_drc_attach(drc, dev, fdt, fdt_offset, &local_err); + if (local_err) { + while (addr > addr_start) { + addr -=3D SPAPR_MEMORY_BLOCK_SIZE; + drc =3D spapr_drc_by_id(TYPE_SPAPR_DRC_LMB, + addr / SPAPR_MEMORY_BLOCK_SIZE); + spapr_drc_detach(drc, dev, NULL); + } + g_free(fdt); + error_propagate(errp, local_err); + return; + } addr +=3D SPAPR_MEMORY_BLOCK_SIZE; } /* send hotplug notification to the @@ -2651,14 +2663,20 @@ static void spapr_memory_plug(HotplugHandler *hotpl= ug_dev, DeviceState *dev, addr =3D object_property_get_uint(OBJECT(dimm), PC_DIMM_ADDR_PROP, &local_err); if (local_err) { - pc_dimm_memory_unplug(dev, &ms->hotplug_memory, mr); - goto out; + goto out_unplug; } =20 spapr_add_lmbs(dev, addr, size, node, spapr_ovec_test(ms->ov5_cas, OV5_HP_EVT), - &error_abort); + &local_err); + if (local_err) { + goto out_unplug; + } + + return; =20 +out_unplug: + pc_dimm_memory_unplug(dev, &ms->hotplug_memory, mr); out: error_propagate(errp, local_err); } --=20 2.9.4 From nobody Wed Nov 5 06:38:43 2025 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; dkim=fail; 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 1499748403283995.4733870229286; Mon, 10 Jul 2017 21:46:43 -0700 (PDT) Received: from localhost ([::1]:44146 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUn4L-0000Wi-Ri for importer@patchew.org; Tue, 11 Jul 2017 00:46:41 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40677) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUmxP-0002Ml-TM for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dUmxP-0007Vd-00 for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:31 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:43421) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dUmxO-0007UE-JJ; Tue, 11 Jul 2017 00:39:30 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3x68Vy4xX7z9t2J; Tue, 11 Jul 2017 14:39:22 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1499747962; bh=Uxt1BvHlsCQHaGn7XUIPeSYAR+/0a4nFBEb9jMQKnYY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dzDCOl0oOxNfC/1wQEvGqe7bjgeKlmg7x8xNmXu24qz8ynmN50PkNpJazggA6UH4+ gONbiw0Aqp0JxB617Xh7lvZx4Wy1ykthn6Pad7bzY0CZWNFAI4G2VzDha5SY3KCwvY BoUPWhqH9bBH8bIV7mmAuYWQURuSHY3mXiwgFyGo= From: David Gibson To: peter.maydell@linaro.org Date: Tue, 11 Jul 2017 14:39:14 +1000 Message-Id: <20170711043917.1757-15-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170711043917.1757-1-david@gibson.dropbear.id.au> References: <20170711043917.1757-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 Subject: [Qemu-devel] [PULL 14/17] spapr: Only report host/guest IOMMU page size mismatches on KVM 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: lvivier@redhat.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, surajjs@au1.ibm.com, aik@ozlabs.ru, sbobroff@au1.ibm.com, groug@kaod.org, agraf@suse.de, qemu-ppc@nongnu.org, bharata@linux.vnet.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" We print a warning if the spapr IOMMU isn't configured to support a page size matching the host page size backing RAM. When that's the case we need more complex logic to translate VFIO mappings, which is slower. But, it's not so slow that it would be at all noticeable against the general slowness of TCG. So, only warn when using KVM. This removes some noisy and unhelpful warnings from make check on hosts with page sizes which typically differ from those on POWER (e.g. Sparc). Reported-by: Peter Maydell Signed-off-by: David Gibson Reviewed-by: Thomas Huth --- hw/ppc/spapr_pci.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index cc1588d..a52dcf8 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -1745,7 +1745,8 @@ static void spapr_phb_realize(DeviceState *dev, Error= **errp) } =20 /* DMA setup */ - if ((sphb->page_size_mask & qemu_getrampagesize()) =3D=3D 0) { + if (((sphb->page_size_mask & qemu_getrampagesize()) =3D=3D 0) + && kvm_enabled()) { error_report("System page size 0x%lx is not enabled in page_size_m= ask " "(0x%"PRIx64"). Performance may be slow", qemu_getrampagesize(), sphb->page_size_mask); --=20 2.9.4 From nobody Wed Nov 5 06:38:43 2025 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; dkim=fail; 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 149974855296826.8462800499168; Mon, 10 Jul 2017 21:49:12 -0700 (PDT) Received: from localhost ([::1]:44158 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUn6l-0002Tg-Hx for importer@patchew.org; Tue, 11 Jul 2017 00:49:11 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40802) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUmxV-0002U9-K0 for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dUmxU-0007Zt-Jr for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:37 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:59029) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dUmxU-0007Xz-7p; Tue, 11 Jul 2017 00:39:36 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3x68Vz2gK8z9t2s; Tue, 11 Jul 2017 14:39:22 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1499747963; bh=yPspgvxDGMfBYYE6xzvpp9Lu+DalUmiuZzkFWFJS6d8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=P65sdEq+4uRbq5LHBYEymGhfMV5C9pfKAAV9M4HvmhkyBHjbxWexogKJNj8eLrUiS /aqXsMQjEQFBZQOdB3mPp+RBinWy4Fg8jl9I4h3i87kV4zurJ++rGzDjlCGGbkCmjO 0tqmufOSv96CyLwTvrypOJnAr+2nsWWN2jU2xhYc= From: David Gibson To: peter.maydell@linaro.org Date: Tue, 11 Jul 2017 14:39:15 +1000 Message-Id: <20170711043917.1757-16-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170711043917.1757-1-david@gibson.dropbear.id.au> References: <20170711043917.1757-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 Subject: [Qemu-devel] [PULL 15/17] ppc/kvm: have the "family" CPU alias to point to TYPE_HOST_POWERPC_CPU 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: lvivier@redhat.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, surajjs@au1.ibm.com, aik@ozlabs.ru, sbobroff@au1.ibm.com, groug@kaod.org, agraf@suse.de, qemu-ppc@nongnu.org, bharata@linux.vnet.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Greg Kurz When running KVM on POWER, we allow the user to pass "-cpu POWERx" instead of "-cpu host". This is achieved by patching the ppc_cpu_aliases[] array so that "POWERx" points to the CPU class with the same PVR as the host CPU. This causes CPUs to be instantiated from this CPU class instead of the TYPE_HOST_POWERPC_CPU class which is used with "-cpu host". These CPUs thus miss all the KVM specific tuning from kvmppc_host_cpu_class_init(). This currently causes QEMU with "-cpu POWER9" to fail when running KVM on a POWER9 DD1 host: qemu-system-ppc64: Register sync failed... If you're using kvm-hv.ko, only "-cpu host" is possible kvm_init_vcpu failed: Invalid argument Let's have the "POWERx" alias to point to TYPE_HOST_POWERPC_CPU directly, so that "-cpu POWERx" instantiates CPUs from the same class as "-cpu host". Signed-off-by: Greg Kurz Tested-by: Laurent Vivier Reviewed-by: Laurent Vivier Reviewed-by: Thomas Huth Signed-off-by: David Gibson --- target/ppc/kvm.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c index f2f7c53..f7a7ea5 100644 --- a/target/ppc/kvm.c +++ b/target/ppc/kvm.c @@ -2445,6 +2445,7 @@ static int kvm_ppc_register_host_cpu_type(void) .class_init =3D kvmppc_host_cpu_class_init, }; PowerPCCPUClass *pvr_pcc; + ObjectClass *oc; DeviceClass *dc; int i; =20 @@ -2455,6 +2456,9 @@ static int kvm_ppc_register_host_cpu_type(void) type_info.parent =3D object_class_get_name(OBJECT_CLASS(pvr_pcc)); type_register(&type_info); =20 + oc =3D object_class_by_name(type_info.name); + g_assert(oc); + #if defined(TARGET_PPC64) type_info.name =3D g_strdup_printf("%s-"TYPE_SPAPR_CPU_CORE, "host"); type_info.parent =3D TYPE_SPAPR_CPU_CORE, @@ -2474,7 +2478,6 @@ static int kvm_ppc_register_host_cpu_type(void) dc =3D DEVICE_CLASS(ppc_cpu_get_family_class(pvr_pcc)); for (i =3D 0; ppc_cpu_aliases[i].alias !=3D NULL; i++) { if (strcmp(ppc_cpu_aliases[i].alias, dc->desc) =3D=3D 0) { - ObjectClass *oc =3D OBJECT_CLASS(pvr_pcc); char *suffix; =20 ppc_cpu_aliases[i].model =3D g_strdup(object_class_get_name(oc= )); --=20 2.9.4 From nobody Wed Nov 5 06:38:43 2025 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; dkim=fail; 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 1499748613836344.4310874574479; Mon, 10 Jul 2017 21:50:13 -0700 (PDT) Received: from localhost ([::1]:44163 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUn7k-0003W2-OL for importer@patchew.org; Tue, 11 Jul 2017 00:50:12 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40739) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUmxS-0002Qq-TM for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dUmxR-0007Xq-Vg for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:34 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:33845) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dUmxR-0007W2-JW; Tue, 11 Jul 2017 00:39:33 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3x68Vz1jvTz9t2W; Tue, 11 Jul 2017 14:39:22 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1499747963; bh=96YqTrTONSkmxGHgl0uxiky95RWbcBR56VhZjTBDJRw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Chs6cfmVAFZdSp77pzlAvk7QM992fYZMGCxtUULmhLDhjHYRyL5p7aPaqXIx2HuA3 aH9q5BEoRBgsP4hGqvJlK4JYFkvh1k0/dgTTH2QyipRDoYtVTIEeFQiPfz6uZtgmLy XmMvnoTHDi0nfXbNpd4YnN9aPmlmSkkjVADzkqd4= From: David Gibson To: peter.maydell@linaro.org Date: Tue, 11 Jul 2017 14:39:16 +1000 Message-Id: <20170711043917.1757-17-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170711043917.1757-1-david@gibson.dropbear.id.au> References: <20170711043917.1757-1-david@gibson.dropbear.id.au> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 Subject: [Qemu-devel] [PULL 16/17] spapr: introduce the XIVE_EXPLOIT option in CAS 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: lvivier@redhat.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, surajjs@au1.ibm.com, aik@ozlabs.ru, sbobroff@au1.ibm.com, groug@kaod.org, agraf@suse.de, qemu-ppc@nongnu.org, =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , bharata@linux.vnet.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: C=C3=A9dric Le Goater On POWER9, the Client Architecture Support (CAS) negotiation process determines whether the guest operates in XIVE Legacy compatibility (the former POWER8 interrupt model) or in XIVE exploitation mode (the newer POWER9 interrupt model). Bit 7 of Byte 23 of vector 5 is used for this purpose. Signed-off-by: C=C3=A9dric Le Goater Signed-off-by: David Gibson --- hw/ppc/spapr.c | 13 +++++++------ include/hw/ppc/spapr_ovec.h | 1 + 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index ba8f57a..ff78a22 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -910,7 +910,8 @@ static void spapr_dt_ov5_platform_support(void *fdt, in= t chosen) { PowerPCCPU *first_ppc_cpu =3D POWERPC_CPU(first_cpu); =20 - char val[2 * 3] =3D { + char val[2 * 4] =3D { + 23, 0x00, /* Xive mode: 0 =3D legacy (as in ISA 2.7), 1 =3D Exploi= tation */ 24, 0x00, /* Hash/Radix, filled in below. */ 25, 0x00, /* Hash options: Segment Tables =3D=3D no, GTSE =3D=3D n= o. */ 26, 0x40, /* Radix options: GTSE =3D=3D yes. */ @@ -918,19 +919,19 @@ static void spapr_dt_ov5_platform_support(void *fdt, = int chosen) =20 if (kvm_enabled()) { if (kvmppc_has_cap_mmu_radix() && kvmppc_has_cap_mmu_hash_v3()) { - val[1] =3D 0x80; /* OV5_MMU_BOTH */ + val[3] =3D 0x80; /* OV5_MMU_BOTH */ } else if (kvmppc_has_cap_mmu_radix()) { - val[1] =3D 0x40; /* OV5_MMU_RADIX_300 */ + val[3] =3D 0x40; /* OV5_MMU_RADIX_300 */ } else { - val[1] =3D 0x00; /* Hash */ + val[3] =3D 0x00; /* Hash */ } } else { if (first_ppc_cpu->env.mmu_model & POWERPC_MMU_V3) { /* V3 MMU supports both hash and radix (with dynamic switching= ) */ - val[1] =3D 0xC0; + val[3] =3D 0xC0; } else { /* Otherwise we can only do hash */ - val[1] =3D 0x00; + val[3] =3D 0x00; } } _FDT(fdt_setprop(fdt, chosen, "ibm,arch-vec-5-platform-support", diff --git a/include/hw/ppc/spapr_ovec.h b/include/hw/ppc/spapr_ovec.h index f088833..0b464e2 100644 --- a/include/hw/ppc/spapr_ovec.h +++ b/include/hw/ppc/spapr_ovec.h @@ -50,6 +50,7 @@ typedef struct sPAPROptionVector sPAPROptionVector; #define OV5_DRCONF_MEMORY OV_BIT(2, 2) #define OV5_FORM1_AFFINITY OV_BIT(5, 0) #define OV5_HP_EVT OV_BIT(6, 5) +#define OV5_XIVE_EXPLOIT OV_BIT(23, 7) =20 /* ISA 3.00 MMU features: */ #define OV5_MMU_BOTH OV_BIT(24, 0) /* Radix and hash */ --=20 2.9.4 From nobody Wed Nov 5 06:38:43 2025 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; dkim=fail; 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 1499748412930408.69183618032423; Mon, 10 Jul 2017 21:46:52 -0700 (PDT) Received: from localhost ([::1]:44147 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUn4V-0000eD-NU for importer@patchew.org; Tue, 11 Jul 2017 00:46:51 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40734) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUmxS-0002QM-I1 for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dUmxR-0007XS-Jg for qemu-devel@nongnu.org; Tue, 11 Jul 2017 00:39:34 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:34289) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dUmxR-0007Vh-76; Tue, 11 Jul 2017 00:39:33 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3x68Vy6ZwZz9t2Z; Tue, 11 Jul 2017 14:39:22 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1499747962; bh=gFmoQcnf2yjae6R+mh4JYO9p/FWWNCv6Wp9fcdICnxE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Z/cWEI/4WO/An7ckapNZBpS1u/rZGALvmqzfSa+YTLgCGZfv+L6lrkbUm7LycZj5g QpPFlyc84rkAk8ykVnTOf99djF+57C6acDgmLpoVcoX8ywDEZwlw1s7vrWrTvrhK7M DehqY/vY6DUBwQVHEQcg6//uWA8eP9l7loxlk7Gg= From: David Gibson To: peter.maydell@linaro.org Date: Tue, 11 Jul 2017 14:39:17 +1000 Message-Id: <20170711043917.1757-18-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170711043917.1757-1-david@gibson.dropbear.id.au> References: <20170711043917.1757-1-david@gibson.dropbear.id.au> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 Subject: [Qemu-devel] [PULL 17/17] spapr: populate device tree depending on XIVE_EXPLOIT option 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: lvivier@redhat.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, surajjs@au1.ibm.com, aik@ozlabs.ru, sbobroff@au1.ibm.com, groug@kaod.org, agraf@suse.de, qemu-ppc@nongnu.org, =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , bharata@linux.vnet.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: C=C3=A9dric Le Goater When XIVE is supported, the device tree should be populated accordingly and the XIVE memory regions mapped to activate MMIOs. Depending on the design we choose, we could also allocate different ICS and ICP objects, or switch between objects. This needs to be discussed. Signed-off-by: C=C3=A9dric Le Goater Signed-off-by: David Gibson --- hw/ppc/spapr.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index ff78a22..f4e011c 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -778,6 +778,11 @@ static int spapr_dt_cas_updates(sPAPRMachineState *spa= pr, void *fdt, } } =20 + /* /interrupt controller */ + if (!spapr_ovec_test(ov5_updates, OV5_XIVE_EXPLOIT)) { + spapr_dt_xics(xics_max_server_number(), fdt, PHANDLE_XICP); + } + offset =3D fdt_path_offset(fdt, "/chosen"); if (offset < 0) { offset =3D fdt_add_subnode(fdt, 0, "chosen"); @@ -801,7 +806,7 @@ int spapr_h_cas_compose_response(sPAPRMachineState *spa= pr, =20 size -=3D sizeof(hdr); =20 - /* Create sceleton */ + /* Create skeleton */ fdt_skel =3D g_malloc0(size); _FDT((fdt_create(fdt_skel, size))); _FDT((fdt_begin_node(fdt_skel, ""))); @@ -1069,9 +1074,6 @@ static void *spapr_build_fdt(sPAPRMachineState *spapr, _FDT(fdt_setprop_cell(fdt, 0, "#address-cells", 2)); _FDT(fdt_setprop_cell(fdt, 0, "#size-cells", 2)); =20 - /* /interrupt controller */ - spapr_dt_xics(xics_max_server_number(), fdt, PHANDLE_XICP); - ret =3D spapr_populate_memory(spapr, fdt); if (ret < 0) { error_report("couldn't setup memory nodes in fdt"); --=20 2.9.4