From nobody Mon Apr 29 13:06:36 2024 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.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 149517261676640.58397003560003; Thu, 18 May 2017 22:43:36 -0700 (PDT) Received: from localhost ([::1]:56645 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dBahK-0000Zn-5T for importer@patchew.org; Fri, 19 May 2017 01:43:34 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56086) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dBafe-0007gI-37 for qemu-devel@nongnu.org; Fri, 19 May 2017 01:41:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dBafb-0005YO-21 for qemu-devel@nongnu.org; Fri, 19 May 2017 01:41:50 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:47599) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dBafa-0005Xy-Oc for qemu-devel@nongnu.org; Fri, 19 May 2017 01:41:46 -0400 Received: from pps.filterd (m0098396.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.20/8.16.0.20) with SMTP id v4J5ef6N065540 for ; Fri, 19 May 2017 01:41:45 -0400 Received: from e23smtp01.au.ibm.com (e23smtp01.au.ibm.com [202.81.31.143]) by mx0a-001b2d01.pphosted.com with ESMTP id 2ahp1bjgym-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Fri, 19 May 2017 01:41:44 -0400 Received: from localhost by e23smtp01.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 19 May 2017 15:41:42 +1000 Received: from d23relay07.au.ibm.com (202.81.31.226) by e23smtp01.au.ibm.com (202.81.31.207) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Fri, 19 May 2017 15:41:40 +1000 Received: from d23av05.au.ibm.com (d23av05.au.ibm.com [9.190.234.119]) by d23relay07.au.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id v4J5fWwC60555436; Fri, 19 May 2017 15:41:40 +1000 Received: from d23av05.au.ibm.com (localhost [127.0.0.1]) by d23av05.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id v4J5f7QW011187; Fri, 19 May 2017 15:41:07 +1000 Received: from bharata.in.ibm.com ([9.77.210.112]) by d23av05.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id v4J5f49m010863; Fri, 19 May 2017 15:41:06 +1000 From: Bharata B Rao To: qemu-devel@nongnu.org Date: Fri, 19 May 2017 11:10:36 +0530 X-Mailer: git-send-email 2.7.4 In-Reply-To: <1495172439-1504-1-git-send-email-bharata@linux.vnet.ibm.com> References: <1495172439-1504-1-git-send-email-bharata@linux.vnet.ibm.com> X-TM-AS-MML: disable x-cbid: 17051905-1617-0000-0000-000001D345B0 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17051905-1618-0000-0000-000048178997 Message-Id: <1495172439-1504-2-git-send-email-bharata@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-05-19_04:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=3 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1703280000 definitions=main-1705190039 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.156.1 Subject: [Qemu-devel] [RFC PATCH v2 1/4] migration: Introduce unregister_savevm_live() 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: rnsastry@linux.vnet.ibm.com, qemu-ppc@nongnu.org, Bharata B Rao , sam.bobroff@au1.ibm.com, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Introduce a new function unregister_savevm_live() to unregister the vmstate handlers registered via register_savevm_live(). register_savevm() allocates SaveVMHandlers while register_savevm_live() gets passed with SaveVMHandlers. During unregistration, we want to free SaveVMHandlers in the former case but not free in the latter case. Hence this new API is needed to differentiate this. This new API will be needed by PowerPC to unregister the HTAB savevm handlers. Signed-off-by: Bharata B Rao Reviewed-by: David Gibson --- include/migration/vmstate.h | 1 + migration/savevm.c | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h index 8489659..02a1bac 100644 --- a/include/migration/vmstate.h +++ b/include/migration/vmstate.h @@ -79,6 +79,7 @@ int register_savevm_live(DeviceState *dev, void *opaque); =20 void unregister_savevm(DeviceState *dev, const char *idstr, void *opaque); +void unregister_savevm_live(DeviceState *dev, const char *idstr, void *opa= que); =20 typedef struct VMStateInfo VMStateInfo; typedef struct VMStateDescription VMStateDescription; diff --git a/migration/savevm.c b/migration/savevm.c index f5e8194..4ef6fdc 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -630,7 +630,8 @@ int register_savevm(DeviceState *dev, ops, opaque); } =20 -void unregister_savevm(DeviceState *dev, const char *idstr, void *opaque) +static void unregister_savevm_common(DeviceState *dev, const char *idstr, + void *opaque, bool free_savevmhandler= s) { SaveStateEntry *se, *new_se; char id[256] =3D ""; @@ -649,12 +650,24 @@ void unregister_savevm(DeviceState *dev, const char *= idstr, void *opaque) if (strcmp(se->idstr, id) =3D=3D 0 && se->opaque =3D=3D opaque) { QTAILQ_REMOVE(&savevm_state.handlers, se, entry); g_free(se->compat); - g_free(se->ops); + if (free_savevmhandlers) { + g_free(se->ops); + } g_free(se); } } } =20 +void unregister_savevm(DeviceState *dev, const char *idstr, void *opaque) +{ + unregister_savevm_common(dev, idstr, opaque, true); +} + +void unregister_savevm_live(DeviceState *dev, const char *idstr, void *opa= que) +{ + unregister_savevm_common(dev, idstr, opaque, false); +} + int vmstate_register_with_alias_id(DeviceState *dev, int instance_id, const VMStateDescription *vmsd, void *opaque, int alias_id, --=20 2.7.4 From nobody Mon Apr 29 13:06:36 2024 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.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1495172622778778.921477741248; Thu, 18 May 2017 22:43:42 -0700 (PDT) Received: from localhost ([::1]:56646 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dBahQ-0000fy-T9 for importer@patchew.org; Fri, 19 May 2017 01:43:40 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56131) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dBafh-0007hI-1v for qemu-devel@nongnu.org; Fri, 19 May 2017 01:41:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dBafd-0005Z8-W1 for qemu-devel@nongnu.org; Fri, 19 May 2017 01:41:53 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:56871) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dBafd-0005Yr-Mo for qemu-devel@nongnu.org; Fri, 19 May 2017 01:41:49 -0400 Received: from pps.filterd (m0098399.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.20/8.16.0.20) with SMTP id v4J5f51l141793 for ; Fri, 19 May 2017 01:41:48 -0400 Received: from e23smtp05.au.ibm.com (e23smtp05.au.ibm.com [202.81.31.147]) by mx0a-001b2d01.pphosted.com with ESMTP id 2ahmq651u4-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Fri, 19 May 2017 01:41:48 -0400 Received: from localhost by e23smtp05.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 19 May 2017 15:41:45 +1000 Received: from d23relay10.au.ibm.com (202.81.31.229) by e23smtp05.au.ibm.com (202.81.31.211) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Fri, 19 May 2017 15:41:42 +1000 Received: from d23av05.au.ibm.com (d23av05.au.ibm.com [9.190.234.119]) by d23relay10.au.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id v4J5fXTw62586986; Fri, 19 May 2017 15:41:41 +1000 Received: from d23av05.au.ibm.com (localhost [127.0.0.1]) by d23av05.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id v4J5f814011235; Fri, 19 May 2017 15:41:09 +1000 Received: from bharata.in.ibm.com ([9.77.210.112]) by d23av05.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id v4J5f49n010863; Fri, 19 May 2017 15:41:07 +1000 From: Bharata B Rao To: qemu-devel@nongnu.org Date: Fri, 19 May 2017 11:10:37 +0530 X-Mailer: git-send-email 2.7.4 In-Reply-To: <1495172439-1504-1-git-send-email-bharata@linux.vnet.ibm.com> References: <1495172439-1504-1-git-send-email-bharata@linux.vnet.ibm.com> X-TM-AS-MML: disable x-cbid: 17051905-0016-0000-0000-0000023DA731 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17051905-0017-0000-0000-000006BAF95B Message-Id: <1495172439-1504-3-git-send-email-bharata@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-05-19_04:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=3 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1703280000 definitions=main-1705190039 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.156.1 Subject: [Qemu-devel] [RFC PATCH v2 2/4] spapr: Unregister HPT savevm handlers for radix guests 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: rnsastry@linux.vnet.ibm.com, qemu-ppc@nongnu.org, Bharata B Rao , sam.bobroff@au1.ibm.com, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" HPT gets created by default for TCG guests and later when the guest turns out to be a radix guest, the HPT is destroyed when guest does H_REGISTER_PROC_TBL hcall. Let HTAB savevm handlers registration and unregistration follow the same model so that we don't end up having unrequired HTAB savevm handlers for radix guests. This also ensures that HTAB savevm handlers seemlessly get destroyed and recreated like HTAB itself when hash guest reboots. HTAB savevm handlers registration/unregistration is now done from spapr_reallocate_hpt() which itself is called from one of the savevm_htab_handlers.htab_load(). To cater to this circular dependency spapr_reallocate_hpt() is made global. Signed-off-by: Bharata B Rao Reviewed-by: David Gibson --- hw/ppc/spapr.c | 99 +++++++++++++++++++++++++---------------------= ---- include/hw/ppc/spapr.h | 2 + 2 files changed, 52 insertions(+), 49 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 91f7434..daf335c 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -1233,53 +1233,7 @@ void spapr_free_hpt(sPAPRMachineState *spapr) spapr->htab =3D NULL; spapr->htab_shift =3D 0; close_htab_fd(spapr); -} - -static void spapr_reallocate_hpt(sPAPRMachineState *spapr, int shift, - Error **errp) -{ - long rc; - - /* Clean up any HPT info from a previous boot */ - spapr_free_hpt(spapr); - - rc =3D kvmppc_reset_htab(shift); - if (rc < 0) { - /* kernel-side HPT needed, but couldn't allocate one */ - error_setg_errno(errp, errno, - "Failed to allocate KVM HPT of order %d (try smal= ler maxmem?)", - shift); - /* This is almost certainly fatal, but if the caller really - * wants to carry on with shift =3D=3D 0, it's welcome to try */ - } else if (rc > 0) { - /* kernel-side HPT allocated */ - if (rc !=3D shift) { - error_setg(errp, - "Requested order %d HPT, but kernel allocated order= %ld (try smaller maxmem?)", - shift, rc); - } - - spapr->htab_shift =3D shift; - spapr->htab =3D NULL; - } else { - /* kernel-side HPT not needed, allocate in userspace instead */ - size_t size =3D 1ULL << shift; - int i; - - spapr->htab =3D qemu_memalign(size, size); - if (!spapr->htab) { - error_setg_errno(errp, errno, - "Could not allocate HPT of order %d", shift); - return; - } - - memset(spapr->htab, 0, size); - spapr->htab_shift =3D shift; - - for (i =3D 0; i < size / HASH_PTE_SIZE_64; i++) { - DIRTY_HPTE(HPTE(spapr->htab, i)); - } - } + unregister_savevm_live(NULL, "spapr/htab", spapr); } =20 void spapr_setup_hpt_and_vrma(sPAPRMachineState *spapr) @@ -1879,6 +1833,55 @@ static SaveVMHandlers savevm_htab_handlers =3D { .load_state =3D htab_load, }; =20 +void spapr_reallocate_hpt(sPAPRMachineState *spapr, int shift, + Error **errp) +{ + long rc; + + /* Clean up any HPT info from a previous boot */ + spapr_free_hpt(spapr); + + rc =3D kvmppc_reset_htab(shift); + if (rc < 0) { + /* kernel-side HPT needed, but couldn't allocate one */ + error_setg_errno(errp, errno, + "Failed to allocate KVM HPT of order %d (try smal= ler maxmem?)", + shift); + /* This is almost certainly fatal, but if the caller really + * wants to carry on with shift =3D=3D 0, it's welcome to try */ + } else if (rc > 0) { + /* kernel-side HPT allocated */ + if (rc !=3D shift) { + error_setg(errp, + "Requested order %d HPT, but kernel allocated order= %ld (try smaller maxmem?)", + shift, rc); + } + + spapr->htab_shift =3D shift; + spapr->htab =3D NULL; + } else { + /* kernel-side HPT not needed, allocate in userspace instead */ + size_t size =3D 1ULL << shift; + int i; + + spapr->htab =3D qemu_memalign(size, size); + if (!spapr->htab) { + error_setg_errno(errp, errno, + "Could not allocate HPT of order %d", shift); + return; + } + + memset(spapr->htab, 0, size); + spapr->htab_shift =3D shift; + + for (i =3D 0; i < size / HASH_PTE_SIZE_64; i++) { + DIRTY_HPTE(HPTE(spapr->htab, i)); + } + } + register_savevm_live(NULL, "spapr/htab", -1, 1, + &savevm_htab_handlers, spapr); +} + static void spapr_boot_set(void *opaque, const char *boot_device, Error **errp) { @@ -2341,8 +2344,6 @@ static void ppc_spapr_init(MachineState *machine) * interface, this is a legacy from the sPAPREnvironment structure * which predated MachineState but had a similar function */ vmstate_register(NULL, 0, &vmstate_spapr, spapr); - register_savevm_live(NULL, "spapr/htab", -1, 1, - &savevm_htab_handlers, spapr); =20 /* used by RTAS */ QTAILQ_INIT(&spapr->ccs_list); diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h index f875dc4..e581c4a 100644 --- a/include/hw/ppc/spapr.h +++ b/include/hw/ppc/spapr.h @@ -637,6 +637,8 @@ void spapr_hotplug_req_remove_by_count_indexed(sPAPRDRC= onnectorType drc_type, uint32_t count, uint32_t in= dex); void *spapr_populate_hotplug_cpu_dt(CPUState *cs, int *fdt_offset, sPAPRMachineState *spapr); +void spapr_reallocate_hpt(sPAPRMachineState *spapr, int shift, + Error **errp); =20 /* rtas-configure-connector state */ struct sPAPRConfigureConnectorState { --=20 2.7.4 From nobody Mon Apr 29 13:06:36 2024 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.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1495172626803642.2407840493047; Thu, 18 May 2017 22:43:46 -0700 (PDT) Received: from localhost ([::1]:56648 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dBahV-0000jx-Cb for importer@patchew.org; Fri, 19 May 2017 01:43:45 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56158) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dBafj-0007jA-6e for qemu-devel@nongnu.org; Fri, 19 May 2017 01:41:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dBafh-0005aT-5W for qemu-devel@nongnu.org; Fri, 19 May 2017 01:41:55 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:36131) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dBafg-0005Zv-Rr for qemu-devel@nongnu.org; Fri, 19 May 2017 01:41:53 -0400 Received: from pps.filterd (m0098394.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.20/8.16.0.20) with SMTP id v4J5ejNS141383 for ; Fri, 19 May 2017 01:41:51 -0400 Received: from e23smtp04.au.ibm.com (e23smtp04.au.ibm.com [202.81.31.146]) by mx0a-001b2d01.pphosted.com with ESMTP id 2ahqsjxw5d-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Fri, 19 May 2017 01:41:50 -0400 Received: from localhost by e23smtp04.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 19 May 2017 15:41:47 +1000 Received: from d23relay08.au.ibm.com (202.81.31.227) by e23smtp04.au.ibm.com (202.81.31.210) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Fri, 19 May 2017 15:41:44 +1000 Received: from d23av05.au.ibm.com (d23av05.au.ibm.com [9.190.234.119]) by d23relay08.au.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id v4J5fZnn59965440; Fri, 19 May 2017 15:41:43 +1000 Received: from d23av05.au.ibm.com (localhost [127.0.0.1]) by d23av05.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id v4J5fAwP011274; Fri, 19 May 2017 15:41:10 +1000 Received: from bharata.in.ibm.com ([9.77.210.112]) by d23av05.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id v4J5f49o010863; Fri, 19 May 2017 15:41:09 +1000 From: Bharata B Rao To: qemu-devel@nongnu.org Date: Fri, 19 May 2017 11:10:38 +0530 X-Mailer: git-send-email 2.7.4 In-Reply-To: <1495172439-1504-1-git-send-email-bharata@linux.vnet.ibm.com> References: <1495172439-1504-1-git-send-email-bharata@linux.vnet.ibm.com> X-TM-AS-MML: disable x-cbid: 17051905-0012-0000-0000-000002351A2C X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17051905-0013-0000-0000-0000074C6A89 Message-Id: <1495172439-1504-4-git-send-email-bharata@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-05-19_04:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=3 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1703280000 definitions=main-1705190039 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.156.1 Subject: [Qemu-devel] [RFC PATCH v2 3/4] spapr: Make h_register_process_table hcall flags global 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: rnsastry@linux.vnet.ibm.com, qemu-ppc@nongnu.org, Bharata B Rao , sam.bobroff@au1.ibm.com, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The flags used in h_register_process_table hcall are needed in spapr.c and hence move them to a header file. While doing so, give them slightly specific names. Signed-off-by: Bharata B Rao Reviewed-by: David Gibson --- hw/ppc/spapr_hcall.c | 31 ++++++++++++++----------------- include/hw/ppc/spapr.h | 10 ++++++++++ 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/hw/ppc/spapr_hcall.c b/hw/ppc/spapr_hcall.c index cea5d99..3915e6f 100644 --- a/hw/ppc/spapr_hcall.c +++ b/hw/ppc/spapr_hcall.c @@ -921,13 +921,6 @@ static void spapr_check_setup_free_hpt(sPAPRMachineSta= te *spapr, return; } =20 -#define FLAGS_MASK 0x01FULL -#define FLAG_MODIFY 0x10 -#define FLAG_REGISTER 0x08 -#define FLAG_RADIX 0x04 -#define FLAG_HASH_PROC_TBL 0x02 -#define FLAG_GTSE 0x01 - static target_ulong h_register_process_table(PowerPCCPU *cpu, sPAPRMachineState *spapr, target_ulong opcode, @@ -940,12 +933,13 @@ static target_ulong h_register_process_table(PowerPCC= PU *cpu, target_ulong table_size =3D args[3]; uint64_t cproc; =20 - if (flags & ~FLAGS_MASK) { /* Check no reserved bits are set */ + if (flags & ~SPAPR_PROC_TABLE_MASK) { /* Check no reserved bits are se= t */ return H_PARAMETER; } - if (flags & FLAG_MODIFY) { - if (flags & FLAG_REGISTER) { - if (flags & FLAG_RADIX) { /* Register new RADIX process table = */ + if (flags & SPAPR_PROC_TABLE_MODIFY) { + if (flags & SPAPR_PROC_TABLE_REGISTER) { + if (flags & SPAPR_PROC_TABLE_RADIX) { + /* Register new RADIX process table */ if (proc_tbl & 0xfff || proc_tbl >> 60) { return H_P2; } else if (page_size) { @@ -955,7 +949,8 @@ static target_ulong h_register_process_table(PowerPCCPU= *cpu, } cproc =3D PATBE1_GR | proc_tbl | table_size; } else { /* Register new HPT process table */ - if (flags & FLAG_HASH_PROC_TBL) { /* Hash with Segment Tab= les */ + if (flags & SPAPR_PROC_TABLE_HPT_PT) { + /* Hash with Segment Tables */ /* TODO - Not Supported */ /* Technically caused by flag bits =3D> H_PARAMETER */ return H_PARAMETER; @@ -978,7 +973,8 @@ static target_ulong h_register_process_table(PowerPCCPU= *cpu, cproc =3D spapr->patb_entry & PATBE1_GR; } } else { /* Maintain current registration */ - if (!(flags & FLAG_RADIX) !=3D !(spapr->patb_entry & PATBE1_GR)) { + if (!(flags & SPAPR_PROC_TABLE_RADIX) !=3D + !(spapr->patb_entry & PATBE1_GR)) { /* Technically caused by flag bits =3D> H_PARAMETER */ return H_PARAMETER; /* Existing Process Table Mismatch */ } @@ -993,13 +989,14 @@ static target_ulong h_register_process_table(PowerPCC= PU *cpu, /* Update the UPRT and GTSE bits in the LPCR for all cpus */ CPU_FOREACH(cs) { set_spr(cs, SPR_LPCR, LPCR_UPRT | LPCR_GTSE, - ((flags & (FLAG_RADIX | FLAG_HASH_PROC_TBL)) ? LPCR_UPRT := 0) | - ((flags & FLAG_GTSE) ? LPCR_GTSE : 0)); + ((flags & (SPAPR_PROC_TABLE_RADIX | SPAPR_PROC_TABLE_HPT_P= T)) ? + LPCR_UPRT : 0) | ((flags & SPAPR_PROC_TABLE_GTSE) ? + SPAPR_PROC_TABLE_GTSE : 0)); } =20 if (kvm_enabled()) { - return kvmppc_configure_v3_mmu(cpu, flags & FLAG_RADIX, - flags & FLAG_GTSE, cproc); + return kvmppc_configure_v3_mmu(cpu, flags & SPAPR_PROC_TABLE_RADIX, + flags & SPAPR_PROC_TABLE_GTSE, cpro= c); } return H_SUCCESS; } diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h index e581c4a..588872a 100644 --- a/include/hw/ppc/spapr.h +++ b/include/hw/ppc/spapr.h @@ -685,4 +685,14 @@ int spapr_rng_populate_dt(void *fdt); =20 void spapr_do_system_reset_on_cpu(CPUState *cs, run_on_cpu_data arg); =20 +/* + * Defines for flag value used in H_REGISTER_PROC_TBL hcall. + */ +#define SPAPR_PROC_TABLE_MASK 0x01FULL +#define SPAPR_PROC_TABLE_MODIFY 0x10 +#define SPAPR_PROC_TABLE_REGISTER 0x08 +#define SPAPR_PROC_TABLE_RADIX 0x04 +#define SPAPR_PROC_TABLE_HPT_PT 0x02 +#define SPAPR_PROC_TABLE_GTSE 0x01 + #endif /* HW_SPAPR_H */ --=20 2.7.4 From nobody Mon Apr 29 13:06:36 2024 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.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1495172751198409.2848823279055; Thu, 18 May 2017 22:45:51 -0700 (PDT) Received: from localhost ([::1]:56667 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dBajV-0002af-An for importer@patchew.org; Fri, 19 May 2017 01:45:49 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56154) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dBafi-0007iz-Vc for qemu-devel@nongnu.org; Fri, 19 May 2017 01:41:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dBaff-0005Zp-To for qemu-devel@nongnu.org; Fri, 19 May 2017 01:41:55 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:59370) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dBaff-0005ZO-Jj for qemu-devel@nongnu.org; Fri, 19 May 2017 01:41:51 -0400 Received: from pps.filterd (m0098393.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.20/8.16.0.20) with SMTP id v4J5ehFC117131 for ; Fri, 19 May 2017 01:41:50 -0400 Received: from e23smtp05.au.ibm.com (e23smtp05.au.ibm.com [202.81.31.147]) by mx0a-001b2d01.pphosted.com with ESMTP id 2ahrwmm22f-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Fri, 19 May 2017 01:41:50 -0400 Received: from localhost by e23smtp05.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 19 May 2017 15:41:47 +1000 Received: from d23relay06.au.ibm.com (202.81.31.225) by e23smtp05.au.ibm.com (202.81.31.211) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Fri, 19 May 2017 15:41:44 +1000 Received: from d23av05.au.ibm.com (d23av05.au.ibm.com [9.190.234.119]) by d23relay06.au.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id v4J5faOt52232220; Fri, 19 May 2017 15:41:44 +1000 Received: from d23av05.au.ibm.com (localhost [127.0.0.1]) by d23av05.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id v4J5fB0k011329; Fri, 19 May 2017 15:41:12 +1000 Received: from bharata.in.ibm.com ([9.77.210.112]) by d23av05.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id v4J5f49p010863; Fri, 19 May 2017 15:41:10 +1000 From: Bharata B Rao To: qemu-devel@nongnu.org Date: Fri, 19 May 2017 11:10:39 +0530 X-Mailer: git-send-email 2.7.4 In-Reply-To: <1495172439-1504-1-git-send-email-bharata@linux.vnet.ibm.com> References: <1495172439-1504-1-git-send-email-bharata@linux.vnet.ibm.com> X-TM-AS-MML: disable x-cbid: 17051905-0016-0000-0000-0000023DA735 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17051905-0017-0000-0000-000006BAF95F Message-Id: <1495172439-1504-5-git-send-email-bharata@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-05-19_04:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=1 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1703280000 definitions=main-1705190039 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.156.1 Subject: [Qemu-devel] [RFC PATCH v2 4/4] spapr: Fix migration of Radix guests 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: rnsastry@linux.vnet.ibm.com, qemu-ppc@nongnu.org, Bharata B Rao , sam.bobroff@au1.ibm.com, david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Fix migration of radix guests by ensuring that we issue KVM_PPC_CONFIGURE_V3_MMU for radix case post migration. Reported-by: Nageswara R Sastry Signed-off-by: Bharata B Rao --- hw/ppc/spapr.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index daf335c..8f20f14 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -1400,6 +1400,18 @@ static int spapr_post_load(void *opaque, int version= _id) err =3D spapr_rtc_import_offset(&spapr->rtc, spapr->rtc_offset); } =20 + if (spapr->patb_entry) { + PowerPCCPU *cpu =3D POWERPC_CPU(first_cpu); + if (kvmppc_has_cap_mmu_radix() && kvm_enabled()) { + err =3D kvmppc_configure_v3_mmu(cpu, SPAPR_PROC_TABLE_RADIX, + ((cpu->env.spr[SPR_LPCR] & LPCR_GTSE) ? SPAPR_PROC_TABLE_G= TSE : + 0), spapr->patb_entry); + } else { + error_report("Radix guest is unsupported by the host"); + return -EINVAL; + } + } + return err; } =20 --=20 2.7.4