From patchwork Wed Nov 4 14:49:43 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoffer Dall X-Patchwork-Id: 55980 Delivered-To: patch@linaro.org Received: by 10.112.61.134 with SMTP id p6csp2460473lbr; Wed, 4 Nov 2015 06:55:46 -0800 (PST) X-Received: by 10.66.123.72 with SMTP id ly8mr2350743pab.92.1446648946649; Wed, 04 Nov 2015 06:55:46 -0800 (PST) Return-Path: Received: from bombadil.infradead.org (bombadil.infradead.org. [198.137.202.9]) by mx.google.com with ESMTPS id nx14si2694674pab.69.2015.11.04.06.55.46 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 04 Nov 2015 06:55:46 -0800 (PST) Received-SPF: pass (google.com: domain of linux-arm-kernel-bounces+patch=linaro.org@lists.infradead.org designates 198.137.202.9 as permitted sender) client-ip=198.137.202.9; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-arm-kernel-bounces+patch=linaro.org@lists.infradead.org designates 198.137.202.9 as permitted sender) smtp.mailfrom=linux-arm-kernel-bounces+patch=linaro.org@lists.infradead.org; dkim=neutral (body hash did not verify) header.i=@linaro_org.20150623.gappssmtp.com Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1ZtzSA-0005n3-QS; Wed, 04 Nov 2015 14:54:22 +0000 Received: from mail-wm0-x22f.google.com ([2a00:1450:400c:c09::22f]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1ZtzRE-000577-1h for linux-arm-kernel@lists.infradead.org; Wed, 04 Nov 2015 14:53:27 +0000 Received: by wmeg8 with SMTP id g8so43520882wme.1 for ; Wed, 04 Nov 2015 06:53:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro_org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=34R9BmvlnW+4SuQX0UKjCIBQ7Gk1G2rh4mMlsxuu1gE=; b=qC2M0W79DiyUZzg+6sv3Uh+1eKWaBVPBrRHpwvoZA19n+BLoU1QjSSlHKVNYAGkj7H M3QHYT+KU8WcXgo+y55YSKB16rC1LCa+phclnLq7g+c2U9nP1Jy99Jd34yyMCBCoFtH6 w0mQ+ai+Kp0Jf6StqqbX22AM90NTNnOBH+rUTZw550NVG5+SqQcnaTbgiNVw8ieVmP/J n1XbPrrUh6GtbORudAKpsGUlwmmc2ZZKQ/2RZiEsXFCVtsxODaOdl8f8UKmgzhW6VMtF qKmAPH+RF2B5UniBlf/QGPwbTXRtiI8vRqhwpAyiC5CFvnr9gpWUi/Bi363Cez5wUdOn csHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=34R9BmvlnW+4SuQX0UKjCIBQ7Gk1G2rh4mMlsxuu1gE=; b=JDgzNBswbcWh4t8AL7ZnNHYyJXzqa6DcmAA2A9/h49CXRVpbYarc9R1ZYiy1GjUrJi bMKeUspsnrRR6HIuhapA0GE90xJtsT6RKImLW76sY0whgWpom5ogAM6zF9jj0ADHLa5z Jtx+Aq5RBDIpwp7AFM0hfxVSq6zKKYFmo7aaHK3L16yktj9B4osQu9Qks0JPQVBsDCj6 +gJxyD7u5oz91rCcifx5MpRfmrrjLSmwpVz1dly4TJU77be6oxSBJOXkAJ2xvmlJHzXh tvhoNwEIPShTTWSXCRXRH6flKAd+ieHEZuBnIypMjqMPcR/PzDIxLncDiN7FKRMpHX87 1BDQ== X-Gm-Message-State: ALoCoQkqnDc/KaxU6JWkH/tx4XB2rlOtDtjbxZjstZTrdxA0dg4aDx8wI5YoLmJQBTBxAzimfCYm X-Received: by 10.28.141.204 with SMTP id p195mr25609048wmd.40.1446648782495; Wed, 04 Nov 2015 06:53:02 -0800 (PST) Received: from localhost.localdomain ([94.18.191.146]) by smtp.gmail.com with ESMTPSA id e9sm1985081wjw.8.2015.11.04.06.53.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 04 Nov 2015 06:53:01 -0800 (PST) From: Christoffer Dall To: Paolo Bonzini , kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PULL 04/21] arm/arm64: KVM: Implement GICD_ICFGR as RO for PPIs Date: Wed, 4 Nov 2015 15:49:43 +0100 Message-Id: <1446648600-27297-5-git-send-email-christoffer.dall@linaro.org> X-Mailer: git-send-email 2.1.2.330.g565301e.dirty In-Reply-To: <1446648600-27297-1-git-send-email-christoffer.dall@linaro.org> References: <1446648600-27297-1-git-send-email-christoffer.dall@linaro.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20151104_065324_443485_5CEB3769 X-CRM114-Status: GOOD ( 14.96 ) X-Spam-Score: -1.9 (-) X-Spam-Report: SpamAssassin version 3.4.0 on bombadil.infradead.org summary: Content analysis details: (-1.9 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [2a00:1450:400c:c09:0:0:0:22f listed in] [list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Marc Zyngier , Christoffer Dall MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patch=linaro.org@lists.infradead.org The GICD_ICFGR allows the bits for the SGIs and PPIs to be read only. We currently simulate this behavior by writing a hardcoded value to the register for the SGIs and PPIs on every write of these bits to the register (ignoring what the guest actually wrote), and by writing the same value as the reset value to the register. This is a bit counter-intuitive, as the register is RO for these bits, and we can just implement it that way, allowing us to control the value of the bits purely in the reset code. Reviewed-by: Marc Zyngier Signed-off-by: Christoffer Dall --- virt/kvm/arm/vgic.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) -- 2.1.2.330.g565301e.dirty _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel diff --git a/virt/kvm/arm/vgic.c b/virt/kvm/arm/vgic.c index 367a180..f8ca2e9 100644 --- a/virt/kvm/arm/vgic.c +++ b/virt/kvm/arm/vgic.c @@ -690,10 +690,9 @@ bool vgic_handle_cfg_reg(u32 *reg, struct kvm_exit_mmio *mmio, vgic_reg_access(mmio, &val, offset, ACCESS_READ_VALUE | ACCESS_WRITE_VALUE); if (mmio->is_write) { - if (offset < 8) { - *reg = ~0U; /* Force PPIs/SGIs to 1 */ + /* Ignore writes to read-only SGI and PPI bits */ + if (offset < 8) return false; - } val = vgic_cfg_compress(val); if (offset & 4) {