From patchwork Mon May 21 04:09:28 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: simon X-Patchwork-Id: 10413923 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id D999B60545 for ; Mon, 21 May 2018 04:46:04 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CAF6F27F8F for ; Mon, 21 May 2018 04:46:04 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id BFDB428779; Mon, 21 May 2018 04:46:04 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 605DA28334 for ; Mon, 21 May 2018 04:46:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752832AbeEUEqC (ORCPT ); Mon, 21 May 2018 00:46:02 -0400 Received: from mail-pf0-f194.google.com ([209.85.192.194]:42900 "EHLO mail-pf0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752256AbeEUEpx (ORCPT ); Mon, 21 May 2018 00:45:53 -0400 Received: by mail-pf0-f194.google.com with SMTP id p14-v6so6456817pfh.9; Sun, 20 May 2018 21:45:53 -0700 (PDT) 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=tbjqM3Eebv0P2zx5V4Lj6G+Of/jR8ndGPaAIy3+rQLL0p4H4llDBYnfi/gBG9ZUPEL 4ACs5VTKXCskTfNqRbbzrbO+a1xL+n/uzasZnJLn3c6Uevr9XP5AhfBeiDZdfr6R9X5f IkJm9Ey0ktw2KX1rEwKqKngCJ9ME30d3Qm3fpmuTiWtoPubtCStX2gcfuNqr8dcQMx0p s+Opi+9Z9SaGYl5oJXe1VBrosbBiY393vN+91wgd+0R5FokRfI3fUsl8uLz3d+0dhJm6 YNJ8dQbvPUQlwrhiAQOvmcV0yK0MVF9m30NpYF2BB+c2KSZnE87ibrBNSWMcTz5T7FC3 ewqQ== 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=eCk+lzRHmmcajiEN7u0PMjDCxKZS04ZhHpiyE5voizEOuUZco0mkhxWmM1SocUdgrf Z8HV9JptKtfyj8Riig+KosPvpKhkL642srDI0MwS+kLVwLie7DO9PL4wPm12MnuKyRGJ V/SAB+UhlOXvseLvLFnF/kvRZpOB/Z8xyO5FNtnakrKfFp9uL3t9rCe43Q7gQqqcM+Jy D+oEW7uuvBjieU9Ur+norCbcSN+57SehuSH54/8d3mEHfb6Fkxr6lDFtkHZdoPReDtuD 0dUbMv8EnWOJURGQmrPsJnuAZ8uyTEH1TcVnmg1SOqIeovpaTWxfVxDv52KcI4lA4gxa I7CA== X-Gm-Message-State: ALKqPwdlAkkidu8Y+SZKuVccPL3pYmOeFIIy+dQMckguRGXA8WC/1Kh7 9YpzUgvpHyI4C5rLO+aI2LY= X-Google-Smtp-Source: AB8JxZqwCJu824hK5PWoVkgOtipf3+GZzXTVqu80q00krEWFCn+r02pv1c+R6qjzCjML8K4lYgD0rA== X-Received: by 2002:a62:d751:: with SMTP id v17-v6mr18491284pfl.39.1526877952855; Sun, 20 May 2018 21:45:52 -0700 (PDT) Received: from simonLocalRHEL7.cn.ibm.com ([112.73.0.89]) by smtp.gmail.com with ESMTPSA id t14-v6sm24575514pfa.31.2018.05.20.21.45.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 20 May 2018 21:45:52 -0700 (PDT) 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 v3 11/29] KVM: PPC: Book3S PR: implement RFID TM behavior to suppress change from S0 to N0 Date: Mon, 21 May 2018 12:09:28 +0800 Message-Id: <1526875786-10372-12-git-send-email-wei.guo.simon@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1526875786-10372-1-git-send-email-wei.guo.simon@gmail.com> References: <1526875786-10372-1-git-send-email-wei.guo.simon@gmail.com> Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP 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;