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 Guo X-Patchwork-Id: 878757 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [103.22.144.68]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zrRhR4k75z9s1t for ; Wed, 28 Feb 2018 05:15:51 +1100 (AEDT) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="oT38L9vS"; dkim-atps=neutral Received: from bilbo.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 3zrRhR34FHzDqpx for ; Wed, 28 Feb 2018 05:15:51 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="oT38L9vS"; dkim-atps=neutral X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:400e:c01::241; helo=mail-pl0-x241.google.com; envelope-from=wei.guo.simon@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="oT38L9vS"; dkim-atps=neutral Received: from mail-pl0-x241.google.com (mail-pl0-x241.google.com [IPv6:2607:f8b0:400e:c01::241]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 3zrRMS0cymzF198 for ; Wed, 28 Feb 2018 05:01:07 +1100 (AEDT) Received: by mail-pl0-x241.google.com with SMTP id k8so11825988pli.8 for ; Tue, 27 Feb 2018 10:01:07 -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=HasQFtA9lGeZWgClGBgwGLluekXnmrqWYDimfUN81T6njPLx0djSz7Ew5lhqYVyIan vSfdrQsqDOOd1hkgGana8l7Bt6WTuBeikUOvkbO/JxtUoiE+d4C/or0+g8sQTSSvYEMp /kT31UfjjEcBlqRQRxhFGW+DvmaWFCtkBTqZFCJaoVlKqO/IVwBOIOdFndY4PQLdnJa2 guRV8iIHsPQ+OVHJl8+CQrFbokZSddOvkS+Ut5mnHm7/xSEmB4vNJlGG8aammuP+1/YM IXPu7E7laZ2quqHDUnMFeWgKHyNACHeH3/N4m9+EHxn0dqXFiLs2o5fHL46PykWUaJr8 tcAQ== X-Gm-Message-State: APf1xPC76eZRPtHMUUEXPXjtYxOmiPfWgJxI7DLBIBTJhDDk7xCz/TbH 8RGYwvSFHCUAu4uPwydlNCPlzg== 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 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 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Simon Guo , kvm-ppc@vger.kernel.org, kvm@vger.kernel.org Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" 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;