From patchwork Tue Feb 27 17:52:19 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: simon X-Patchwork-Id: 10245895 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 4B2AD60362 for ; Tue, 27 Feb 2018 18:01:10 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3222828A44 for ; Tue, 27 Feb 2018 18:01:10 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 22D6028A47; Tue, 27 Feb 2018 18:01:10 +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=-7.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, 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 8459128A44 for ; Tue, 27 Feb 2018 18:01:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751533AbeB0SBH (ORCPT ); Tue, 27 Feb 2018 13:01:07 -0500 Received: from mail-pl0-f66.google.com ([209.85.160.66]:46682 "EHLO mail-pl0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751455AbeB0SBG (ORCPT ); Tue, 27 Feb 2018 13:01:06 -0500 Received: by mail-pl0-f66.google.com with SMTP id y8-v6so1373420pll.13; Tue, 27 Feb 2018 10:01:06 -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; bh=Fd7zRPuC8QHUggE7nig11elvhE6bWqgSLOfzfP6sqbc=; b=oT38L9vSsnFsbRZ3YitY5mf82ZiOUpa1KtUznfs+geuNKHi6bcOkvPXG/XDT1Yw7oM y1b6VWP6GfcNj+PTeh9qDmffebLQ1/9TPU/rp+O4LJ+7xvMU+wM8ldFSTKz6VsHtoxvQ SYwUxDMY8QnoJzo6D2OVrxZUplBrXOAvvDsfAjuk7/UdZZ97tlwtpze6ncRlFaQ+Lf/3 psCYPb3WAvjmWkKfr4d1pmTQfEz5O2/Q9Mcr+s6l2TylERC0iStozyzVWIEulQni0zJ0 peiVF5XPfnt7243op7ZMZGbMYfXqJDqmZxDxU0W8+O1ibCI9Qsv1/RHShFggTxhZDITe CcZg== 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; bh=Fd7zRPuC8QHUggE7nig11elvhE6bWqgSLOfzfP6sqbc=; b=bx8vc1wSmnsjaiTNOmNM2uvZYh1VqC4rQhGQkVa2hYKTfiE1d5+cDRgo/pAaUhzQhK aSt6DXEggUdfU/jzFMfNAlf1r8zNtUiFRWhXm+iboc90AKqmLyTHQ1JzXNahe6u475r0 LSUoV/2M9GX/TNskaVj7DseFSly7cealOb8Hvl8O2yN1Hyctp/BVH0OsTwOpJmALU5tq OKO+HXXa2jS0u1WjYq4VrmEyCUdPN7dh11HKkVeUHvavcpDqQf3zt3+s6nQJ5H6+JpQx bDNCi7GqN7R/bVW2Cqc3lDFpGrZ3+JPg7i94uWdEAxF4Ev058Sg8850dVPqLUitVZ9Ek 4vUA== X-Gm-Message-State: APf1xPAB+ZEvDb9NKHkDcNKfwvJTZf7USb9JGIxQwQ2rOGxMwHqgsTOq TNnKlq9ZITAJnNcV5nERj4Q= X-Google-Smtp-Source: AH8x224EbgnBj4WI4FDoapUULcerX7WMh895vBjN7Lkf5xAhcik18A9I1/kf+z6PReAuagugSsU10Q== X-Received: by 2002:a17:902:b58d:: with SMTP id a13-v6mr15342025pls.123.1519754465708; Tue, 27 Feb 2018 10:01:05 -0800 (PST) Received: from simonLocalRHEL7.x64 ([101.80.181.226]) by smtp.gmail.com with ESMTPSA id m83sm24360910pfk.107.2018.02.27.10.01.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 27 Feb 2018 10:01:05 -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 v2 11/30] KVM: PPC: Book3S PR: implement RFID TM behavior to suppress change from S0 to N0 Date: Wed, 28 Feb 2018 01:52:19 +0800 Message-Id: <1519753958-11756-1-git-send-email-wei.guo.simon@gmail.com> X-Mailer: git-send-email 1.8.3.1 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;