From patchwork Thu Jan 11 10:11:22 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Guo X-Patchwork-Id: 858984 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=kvm-ppc-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="J2wur7XC"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zHMBJ5wn6z9t5Q for ; Thu, 11 Jan 2018 21:12:24 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932684AbeAKKMY (ORCPT ); Thu, 11 Jan 2018 05:12:24 -0500 Received: from mail-pf0-f195.google.com ([209.85.192.195]:47015 "EHLO mail-pf0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932982AbeAKKMX (ORCPT ); Thu, 11 Jan 2018 05:12:23 -0500 Received: by mail-pf0-f195.google.com with SMTP id y5so1309490pff.13; Thu, 11 Jan 2018 02:12:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Fd7zRPuC8QHUggE7nig11elvhE6bWqgSLOfzfP6sqbc=; b=J2wur7XCgvB4A7neeBgIP/V/4jNqG52LmwoIa/kn6/2ycLsW+23e8qS3djSnS8jMY7 7i22rH55FXBk9YEYNEWfoK78B5VOUBdBKnJfalqiEV/aufJUOx53Ow9o70ZKA9w7fMiu P2g9naXeft8aS00zsL5S2Dmp9AIzxN2F+OonbvAhbB2FmU5dRsjPQhDONqrDw6XqDN/h CjTD8v0SaO+1a1Tvc5sBxVunw7JyjX36iDIRlAiDqfx8/x2IO/x2tcgdeRR325awrP+X ZCcy6r9UK4e/iY/XdIko2SfN2p6YHu0NkGnE+0vcxKnHQX9zFfH02cMS3ELI54wF2eVV cayg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Fd7zRPuC8QHUggE7nig11elvhE6bWqgSLOfzfP6sqbc=; b=kzUDHLrA7wgZxL4MhVthBVpSRe5d8bYG/+dNcz0wzHgedI+v0K8D0/x4SfDia1Xl2X mwUORF2Tm1251LEJ0//+DNRNQmpHArER1bDfhZRaK26vLvMf6+Uf8pFT2nb8/NI0GD1o rvlAI3n/n4hY1yALDkFEETsZ6tsxODVX/MNx3cb5pnSJHXmBiZ1ozjEJJ7XeZOiv07Bd WEkods1LhWJ3OO2Mc/EgQTXKedclWmeQa4qb7f1AnAUzXQJbqKASnBmOeFgbuNjrO1re wgcaEra2uUw51E8LvfJUSfZR+mk1+P+UFfoxXqplzsWSKBD3QTFBt3DwtDTEdIRsLdjz /gnw== X-Gm-Message-State: AKGB3mJFChro4X/yM4VxWxGGLYRt4rLX8ZNHapD1wRgw+Eiasa7gLrGv 7W6aXXsxnDCFGsYadwAZZu8= X-Google-Smtp-Source: ACJfBottUy0wNO/wJHR8X2nmES2VGMPORX3Sv104aI8d6iVIs0PI6WEP0r2fXgU3SXKXwWAb4VPuQQ== X-Received: by 10.99.163.96 with SMTP id v32mr10918936pgn.432.1515665542682; Thu, 11 Jan 2018 02:12:22 -0800 (PST) Received: from simonLocalRHEL7.cn.ibm.com ([112.73.0.88]) by smtp.gmail.com with ESMTPSA id m11sm34336122pgt.56.2018.01.11.02.12.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 11 Jan 2018 02:12:22 -0800 (PST) From: wei.guo.simon@gmail.com To: linuxppc-dev@lists.ozlabs.org Cc: Paul Mackerras , kvm@vger.kernel.org, kvm-ppc@vger.kernel.org, Simon Guo Subject: [PATCH 09/26] KVM: PPC: Book3S PR: implement RFID TM behavior to suppress change from S0 to N0 Date: Thu, 11 Jan 2018 18:11:22 +0800 Message-Id: <1515665499-31710-10-git-send-email-wei.guo.simon@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1515665499-31710-1-git-send-email-wei.guo.simon@gmail.com> References: <1515665499-31710-1-git-send-email-wei.guo.simon@gmail.com> Sender: kvm-ppc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm-ppc@vger.kernel.org From: Simon Guo Accordingly to ISA specification for RFID, in MSR TM disabled and TS suspended state(S0), if the target MSR is TM disabled and TS state is inactive(N0), rfid should suppress this update. This patch make RFID emulation of PR KVM to be consistent with this. Signed-off-by: Simon Guo Reviewed-by: Paul Mackerras --- arch/powerpc/kvm/book3s_emulate.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/arch/powerpc/kvm/book3s_emulate.c b/arch/powerpc/kvm/book3s_emulate.c index 68d6898..2eb457b 100644 --- a/arch/powerpc/kvm/book3s_emulate.c +++ b/arch/powerpc/kvm/book3s_emulate.c @@ -117,11 +117,28 @@ int kvmppc_core_emulate_op_pr(struct kvm_run *run, struct kvm_vcpu *vcpu, case 19: switch (get_xop(inst)) { case OP_19_XOP_RFID: - case OP_19_XOP_RFI: + case OP_19_XOP_RFI: { + unsigned long srr1 = kvmppc_get_srr1(vcpu); +#ifdef CONFIG_PPC_TRANSACTIONAL_MEM + unsigned long cur_msr = kvmppc_get_msr(vcpu); + + /* + * add rules to fit in ISA specification regarding TM + * state transistion in TM disable/Suspended state, + * and target TM state is TM inactive(00) state. (the + * change should be suppressed). + */ + if (((cur_msr & MSR_TM) == 0) && + ((srr1 & MSR_TM) == 0) && + MSR_TM_SUSPENDED(cur_msr) && + !MSR_TM_ACTIVE(srr1)) + srr1 |= MSR_TS_S; +#endif kvmppc_set_pc(vcpu, kvmppc_get_srr0(vcpu)); - kvmppc_set_msr(vcpu, kvmppc_get_srr1(vcpu)); + kvmppc_set_msr(vcpu, srr1); *advance = 0; break; + } default: emulated = EMULATE_FAIL;