From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sasha Levin Date: Wed, 15 Apr 2020 11:41:11 +0000 Subject: [PATCH AUTOSEL 5.5 031/106] KVM: PPC: Book3S HV: Fix H_CEDE return code for nested guests Message-Id: <20200415114226.13103-31-sashal@kernel.org> List-Id: References: <20200415114226.13103-1-sashal@kernel.org> In-Reply-To: <20200415114226.13103-1-sashal@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="macroman" Content-Transfer-Encoding: base64 To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Michael Roth , linuxppc-dev@ozlabs.org, David Gibson , Paul Mackerras , Sasha Levin , kvm-ppc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org RnJvbTogTWljaGFlbCBSb3RoIDxtZHJvdGhAbGludXgudm5ldC5pYm0uY29tPgoKWyBVcHN0cmVh bSBjb21taXQgMWY1MGNjMTcwNTM1MGE0Njk3OTIzMjAzZmVkZDdkOGZiMTA4N2ZlMiBdCgpUaGUg aF9jZWRlX3RtIGt2bS11bml0LXRlc3QgY3VycmVudGx5IGZhaWxzIHdoZW4gcnVuIGluc2lkZSBh biBMMSBndWVzdAp2aWEgdGhlIGd1ZXN0L25lc3RlZCBoeXBlcnZpc29yLgoKICAuL3J1bi10ZXN0 cy5zaCAtdgogIC4uLgogIFRFU1ROQU1FPWhfY2VkZV90bSBUSU1FT1VUkHMgQUNDRUw9IC4vcG93 ZXJwYy9ydW4gcG93ZXJwYy90bS5lbGYgLXNtcCAyLHRocmVhZHM9MiAtbWFjaGluZSBjYXAtaHRt PW9uIC1hcHBlbmQgImhfY2VkZV90bSIKICBGQUlMIGhfY2VkZV90bSAoMiB0ZXN0cywgMSB1bmV4 cGVjdGVkIGZhaWx1cmVzKQoKV2hpbGUgdGhlIHRlc3QgcmVsYXRlcyB0byB0cmFuc2FjdGlvbmFs IG1lbW9yeSBpbnN0cnVjdGlvbnMsIHRoZSBhY3R1YWwKZmFpbHVyZSBpcyBkdWUgdG8gdGhlIHJl dHVybiBjb2RlIG9mIHRoZSBIX0NFREUgaHlwZXJjYWxsLCB3aGljaCBpcwpyZXBvcnRlZCBhcyAy MjQgaW5zdGVhZCBvZiAwLiBUaGlzIGhhcHBlbnMgZXZlbiB3aGVuIG5vIFRNIGluc3RydWN0aW9u cwphcmUgaXNzdWVkLgoKMjI0IGlzIHRoZSB2YWx1ZSBwbGFjZWQgaW4gcjMgdG8gZXhlY3V0ZSBh IGh5cGVyY2FsbCBmb3IgSF9DRURFLCBhbmQgcjMKaXMgd2hlcmUgdGhlIGNhbGxlciBleHBlY3Rz IHRoZSByZXR1cm4gY29kZSB0byBiZSBwbGFjZWQgdXBvbiByZXR1cm4uCgpJbiB0aGUgY2FzZSBv ZiBndWVzdCBydW5uaW5nIHVuZGVyIGEgbmVzdGVkIGh5cGVydmlzb3IsIGlzc3VpbmcgSF9DRURF CmNhdXNlcyBhIHJldHVybiBmcm9tIEhfRU5URVJfTkVTVEVELiBJbiB0aGlzIGNhc2UgSF9DRURF IGlzCnNwZWNpYWxseS1oYW5kbGVkIGltbWVkaWF0ZWx5IHJhdGhlciB0aGFuIGxhdGVyIGluCmt2 bXBwY19wc2VyaWVzX2RvX2hjYWxsKCkgYXMgd2l0aCBtb3N0IG90aGVyIGhjYWxscywgYnV0IHdl IGZvcmdldCB0bwpzZXQgdGhlIHJldHVybiBjb2RlIGZvciB0aGUgY2FsbGVyLCBoZW5jZSB3aHkg a3ZtLXVuaXQtdGVzdCBzZWVzIHRoZQoyMjQgcmV0dXJuIGNvZGUgYW5kIHJlcG9ydHMgYW4gZXJy b3IuCgpHdWVzdCBrZXJuZWxzIGdlbmVyYWxseSBkb24ndCBjaGVjayB0aGUgcmV0dXJuIHZhbHVl IG9mIEhfQ0VERSwgc28KdGhhdCBsaWtlbHkgZXhwbGFpbnMgd2h5IHRoaXMgaGFzbid0IGNhdXNl ZCBpc3N1ZXMgb3V0c2lkZSBvZgprdm0tdW5pdC10ZXN0cyBzbyBmYXIuCgpGaXggdGhpcyBieSBz ZXR0aW5nIHIzIHRvIDAgYWZ0ZXIgd2UgZmluaXNoIHByb2Nlc3NpbmcgdGhlIEhfQ0VERS4KClJI Qlo6IDE3Nzg1NTYKCkZpeGVzOiA0YmFkNzc3OTlmZWQgKCJLVk06IFBQQzogQm9vazNTIEhWOiBI YW5kbGUgaHlwZXJjYWxscyBjb3JyZWN0bHkgd2hlbiBuZXN0ZWQiKQpDYzogbGludXhwcGMtZGV2 QG96bGFicy5vcmcKQ2M6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1 PgpDYzogUGF1bCBNYWNrZXJyYXMgPHBhdWx1c0BvemxhYnMub3JnPgpTaWduZWQtb2ZmLWJ5OiBN aWNoYWVsIFJvdGggPG1kcm90aEBsaW51eC52bmV0LmlibS5jb20+ClJldmlld2VkLWJ5OiBEYXZp ZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KU2lnbmVkLW9mZi1ieTogUGF1 bCBNYWNrZXJyYXMgPHBhdWx1c0BvemxhYnMub3JnPgpTaWduZWQtb2ZmLWJ5OiBTYXNoYSBMZXZp biA8c2FzaGFsQGtlcm5lbC5vcmc+Ci0tLQogYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYyB8 IDEgKwogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCgpkaWZmIC0tZ2l0IGEvYXJjaC9w b3dlcnBjL2t2bS9ib29rM3NfaHYuYyBiL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMKaW5k ZXggZWY2YWE2M2IwNzFiMy4uYTFkNzkzYjk2ZDJiNyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBj L2t2bS9ib29rM3NfaHYuYworKysgYi9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jCkBAIC0z NjI4LDYgKzM2MjgsNyBAQCBpbnQga3ZtaHZfcDlfZ3Vlc3RfZW50cnkoc3RydWN0IGt2bV92Y3B1 ICp2Y3B1LCB1NjQgdGltZV9saW1pdCwKIAkJaWYgKHRyYXAgPSBCT09LM1NfSU5URVJSVVBUX1NZ U0NBTEwgJiYgIXZjcHUtPmFyY2gubmVzdGVkICYmCiAJCSAgICBrdm1wcGNfZ2V0X2dwcih2Y3B1 LCAzKSA9IEhfQ0VERSkgewogCQkJa3ZtcHBjX25lc3RlZF9jZWRlKHZjcHUpOworCQkJa3ZtcHBj X3NldF9ncHIodmNwdSwgMywgMCk7CiAJCQl0cmFwID0gMDsKIAkJfQogCX0gZWxzZSB7Ci0tIAoy LjIwLjEK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 525ABC3815B for ; Wed, 15 Apr 2020 11:48:09 +0000 (UTC) Received: from lists.ozlabs.org (lists.ozlabs.org [203.11.71.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 00D0A2137B for ; Wed, 15 Apr 2020 11:48:08 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="GUsjGYYS" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 00D0A2137B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 492LFx5FMpzDqHP for ; Wed, 15 Apr 2020 21:48:05 +1000 (AEST) Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=kernel.org (client-ip=198.145.29.99; helo=mail.kernel.org; envelope-from=sashal@kernel.org; receiver=) Authentication-Results: lists.ozlabs.org; dmarc=pass (p=none dis=none) header.from=kernel.org Authentication-Results: lists.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=default header.b=GUsjGYYS; dkim-atps=neutral Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 492L8B3BN2zDqQt for ; Wed, 15 Apr 2020 21:43:06 +1000 (AEST) Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id DBB9220737; Wed, 15 Apr 2020 11:43:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1586950983; bh=HJVDu28gY1/bAP0E/D5bAYl4WxLMLzNvno4dmyQIw/E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GUsjGYYSA7PFGrQ71q4iLSe54PdeSDF8/M8IJaL+MdnB02mwJRw6D5aCdGuDc3WAJ pSKizkrG/QhSOFguE2tSN8ktLArPpM/fV9Q9XHgHe19s6WE4f4KjjlH9tAJowSQ08j fRXEnVCW5abwRDqNPEf2FoVnbgbWweNpBmLFBavU= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH AUTOSEL 5.5 031/106] KVM: PPC: Book3S HV: Fix H_CEDE return code for nested guests Date: Wed, 15 Apr 2020 07:41:11 -0400 Message-Id: <20200415114226.13103-31-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200415114226.13103-1-sashal@kernel.org> References: <20200415114226.13103-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sasha Levin , Michael Roth , kvm-ppc@vger.kernel.org, linuxppc-dev@ozlabs.org, linuxppc-dev@lists.ozlabs.org, David Gibson Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" From: Michael Roth [ Upstream commit 1f50cc1705350a4697923203fedd7d8fb1087fe2 ] The h_cede_tm kvm-unit-test currently fails when run inside an L1 guest via the guest/nested hypervisor. ./run-tests.sh -v ... TESTNAME=h_cede_tm TIMEOUT=90s ACCEL= ./powerpc/run powerpc/tm.elf -smp 2,threads=2 -machine cap-htm=on -append "h_cede_tm" FAIL h_cede_tm (2 tests, 1 unexpected failures) While the test relates to transactional memory instructions, the actual failure is due to the return code of the H_CEDE hypercall, which is reported as 224 instead of 0. This happens even when no TM instructions are issued. 224 is the value placed in r3 to execute a hypercall for H_CEDE, and r3 is where the caller expects the return code to be placed upon return. In the case of guest running under a nested hypervisor, issuing H_CEDE causes a return from H_ENTER_NESTED. In this case H_CEDE is specially-handled immediately rather than later in kvmppc_pseries_do_hcall() as with most other hcalls, but we forget to set the return code for the caller, hence why kvm-unit-test sees the 224 return code and reports an error. Guest kernels generally don't check the return value of H_CEDE, so that likely explains why this hasn't caused issues outside of kvm-unit-tests so far. Fix this by setting r3 to 0 after we finish processing the H_CEDE. RHBZ: 1778556 Fixes: 4bad77799fed ("KVM: PPC: Book3S HV: Handle hypercalls correctly when nested") Cc: linuxppc-dev@ozlabs.org Cc: David Gibson Cc: Paul Mackerras Signed-off-by: Michael Roth Reviewed-by: David Gibson Signed-off-by: Paul Mackerras Signed-off-by: Sasha Levin --- arch/powerpc/kvm/book3s_hv.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c index ef6aa63b071b3..a1d793b96d2b7 100644 --- a/arch/powerpc/kvm/book3s_hv.c +++ b/arch/powerpc/kvm/book3s_hv.c @@ -3628,6 +3628,7 @@ int kvmhv_p9_guest_entry(struct kvm_vcpu *vcpu, u64 time_limit, if (trap == BOOK3S_INTERRUPT_SYSCALL && !vcpu->arch.nested && kvmppc_get_gpr(vcpu, 3) == H_CEDE) { kvmppc_nested_cede(vcpu); + kvmppc_set_gpr(vcpu, 3, 0); trap = 0; } } else { -- 2.20.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E9FC6C3815B for ; Wed, 15 Apr 2020 12:48:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C4659206A2 for ; Wed, 15 Apr 2020 12:48:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1586954937; bh=HJVDu28gY1/bAP0E/D5bAYl4WxLMLzNvno4dmyQIw/E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=da6cKWw9lcWv2mAVBwJtb1ZCiJR2TLOFj6L2uFYTTJ0nVH/eVlV8JgYqG4HXiVP3f Ha420DHEQQyDS3s39ZC99BS7Sx5jzSQzkYTF7QYf1udCZlfdXUA1GlzKSRciSUWwms jPeJaZ+28bssvwoDNIopk0lq/pm2x3IEFcaKqvd4= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S370313AbgDOMs4 (ORCPT ); Wed, 15 Apr 2020 08:48:56 -0400 Received: from mail.kernel.org ([198.145.29.99]:34760 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2408952AbgDOLnE (ORCPT ); Wed, 15 Apr 2020 07:43:04 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id DBB9220737; Wed, 15 Apr 2020 11:43:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1586950983; bh=HJVDu28gY1/bAP0E/D5bAYl4WxLMLzNvno4dmyQIw/E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GUsjGYYSA7PFGrQ71q4iLSe54PdeSDF8/M8IJaL+MdnB02mwJRw6D5aCdGuDc3WAJ pSKizkrG/QhSOFguE2tSN8ktLArPpM/fV9Q9XHgHe19s6WE4f4KjjlH9tAJowSQ08j fRXEnVCW5abwRDqNPEf2FoVnbgbWweNpBmLFBavU= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Michael Roth , linuxppc-dev@ozlabs.org, David Gibson , Paul Mackerras , Sasha Levin , kvm-ppc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Subject: [PATCH AUTOSEL 5.5 031/106] KVM: PPC: Book3S HV: Fix H_CEDE return code for nested guests Date: Wed, 15 Apr 2020 07:41:11 -0400 Message-Id: <20200415114226.13103-31-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200415114226.13103-1-sashal@kernel.org> References: <20200415114226.13103-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Michael Roth [ Upstream commit 1f50cc1705350a4697923203fedd7d8fb1087fe2 ] The h_cede_tm kvm-unit-test currently fails when run inside an L1 guest via the guest/nested hypervisor. ./run-tests.sh -v ... TESTNAME=h_cede_tm TIMEOUT=90s ACCEL= ./powerpc/run powerpc/tm.elf -smp 2,threads=2 -machine cap-htm=on -append "h_cede_tm" FAIL h_cede_tm (2 tests, 1 unexpected failures) While the test relates to transactional memory instructions, the actual failure is due to the return code of the H_CEDE hypercall, which is reported as 224 instead of 0. This happens even when no TM instructions are issued. 224 is the value placed in r3 to execute a hypercall for H_CEDE, and r3 is where the caller expects the return code to be placed upon return. In the case of guest running under a nested hypervisor, issuing H_CEDE causes a return from H_ENTER_NESTED. In this case H_CEDE is specially-handled immediately rather than later in kvmppc_pseries_do_hcall() as with most other hcalls, but we forget to set the return code for the caller, hence why kvm-unit-test sees the 224 return code and reports an error. Guest kernels generally don't check the return value of H_CEDE, so that likely explains why this hasn't caused issues outside of kvm-unit-tests so far. Fix this by setting r3 to 0 after we finish processing the H_CEDE. RHBZ: 1778556 Fixes: 4bad77799fed ("KVM: PPC: Book3S HV: Handle hypercalls correctly when nested") Cc: linuxppc-dev@ozlabs.org Cc: David Gibson Cc: Paul Mackerras Signed-off-by: Michael Roth Reviewed-by: David Gibson Signed-off-by: Paul Mackerras Signed-off-by: Sasha Levin --- arch/powerpc/kvm/book3s_hv.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c index ef6aa63b071b3..a1d793b96d2b7 100644 --- a/arch/powerpc/kvm/book3s_hv.c +++ b/arch/powerpc/kvm/book3s_hv.c @@ -3628,6 +3628,7 @@ int kvmhv_p9_guest_entry(struct kvm_vcpu *vcpu, u64 time_limit, if (trap == BOOK3S_INTERRUPT_SYSCALL && !vcpu->arch.nested && kvmppc_get_gpr(vcpu, 3) == H_CEDE) { kvmppc_nested_cede(vcpu); + kvmppc_set_gpr(vcpu, 3, 0); trap = 0; } } else { -- 2.20.1