Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp730335ybt; Fri, 19 Jun 2020 12:12:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyRI70EdM+cmMWKz1gEzGON/ztaJ86GlcSvWcAX66+83TkvyxxwQBdRXYfMxvYeVIfRwrVZ X-Received: by 2002:aa7:c4c7:: with SMTP id p7mr4978477edr.271.1592593963138; Fri, 19 Jun 2020 12:12:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592593963; cv=none; d=google.com; s=arc-20160816; b=QdWYpmGsCCC9AjDiGHmROIurmj9/mJmOhBJcTV7ur2HSlduadYFxpcBGXXELAzcfaU wyWwHcvXNcGu+6wcLR54NH64VBv9AnTOzKaDVP/P0/HTp4P3duyuroR9ewo600eccK4b p8xnM8MIqdl4YIA5PgHBUWfFTCxgVsEfb7Gvgko4LGr0bUoqv4aBamTupm4iqNkwtUTz o8lw84QSeXi1M9RG3ndgLNFOuqnGqVYmIL9FVjkzTzuMwiwz4LYInuvNoLaLZna4F3Eq Eg3AeH4cIOnemPe4e8wBGoe2ADhyFp4YweA4kfc7PpVmkoMcJgtW+Q0I/MuxtVsTr7MA HMog== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=mCY7OmcPjGa/cPmpqLENm3Updup+13iN7LgWEyRa08k=; b=p9pLGUYYCul/pekXRk8ra8SWgealhdo+VZYr4h+TElMyMWMgaTrQJKPr3hpJyAIOc5 aZ9lob5skWZIPz5TBkGXPaBrIPd7AmfAr3aBzl8AGHHAKyp2Fc2FCrLuHVe/GSXeBYi3 yQopvAHZ2Vl4PwQRXVYLbeTnehmwfK5rZdmRvYvDcKZuR7MNUQ18wCekYEuckeF29wcQ fqyA0t+FwLdjVoL4KNaxdoAv1rgg/dvUVZVawW4dRNG5fn+oDVcaLAH/1qRQ7CYkM6Dm eGBxsbZaOkStKZABNRJzfv+iUT0H+I4eU1pC4fVWH7I3YURxY4NBBDfAk0Sa29v9LEc9 QRkQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=N2dSuKql; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id cb12si3991813ejb.705.2020.06.19.12.12.20; Fri, 19 Jun 2020 12:12:43 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=N2dSuKql; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1733279AbgFSOlW (ORCPT + 99 others); Fri, 19 Jun 2020 10:41:22 -0400 Received: from mail.kernel.org ([198.145.29.99]:59616 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726667AbgFSOlO (ORCPT ); Fri, 19 Jun 2020 10:41:14 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B4BD121527; Fri, 19 Jun 2020 14:41:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592577674; bh=esNBolbgB0ugwipiM6dL76rs6BAcVuftApbVE65C3aA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=N2dSuKql/DXuGXWy7MvXdpbPMV4gNx5FWl3G4mMaIrSJ75IGoa/C4/WkECyWuRIBm 64fSgqXBNbLmbDbdcXhnOblSG6AeUxSDDqAdH8stT4YDDLTp4sxeJIv09WSvpeRHG1 a2+ksWPzk2lWUdtkOSfJYBH8QBoUkVQuxvKm6gV8= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, James Morse , Marc Zyngier Subject: [PATCH 4.9 042/128] KVM: arm64: Make vcpu_cp1x() work on Big Endian hosts Date: Fri, 19 Jun 2020 16:32:16 +0200 Message-Id: <20200619141622.443266315@linuxfoundation.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200619141620.148019466@linuxfoundation.org> References: <20200619141620.148019466@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Marc Zyngier commit 3204be4109ad681523e3461ce64454c79278450a upstream. AArch32 CP1x registers are overlayed on their AArch64 counterparts in the vcpu struct. This leads to an interesting problem as they are stored in their CPU-local format, and thus a CP1x register doesn't "hit" the lower 32bit portion of the AArch64 register on a BE host. To workaround this unfortunate situation, introduce a bias trick in the vcpu_cp1x() accessors which picks the correct half of the 64bit register. Cc: stable@vger.kernel.org Reported-by: James Morse Tested-by: James Morse Acked-by: James Morse Signed-off-by: Marc Zyngier Signed-off-by: Greg Kroah-Hartman --- arch/arm64/include/asm/kvm_host.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) --- a/arch/arm64/include/asm/kvm_host.h +++ b/arch/arm64/include/asm/kvm_host.h @@ -290,8 +290,10 @@ struct kvm_vcpu_arch { * CP14 and CP15 live in the same array, as they are backed by the * same system registers. */ -#define vcpu_cp14(v,r) ((v)->arch.ctxt.copro[(r)]) -#define vcpu_cp15(v,r) ((v)->arch.ctxt.copro[(r)]) +#define CPx_BIAS IS_ENABLED(CONFIG_CPU_BIG_ENDIAN) + +#define vcpu_cp14(v,r) ((v)->arch.ctxt.copro[(r) ^ CPx_BIAS]) +#define vcpu_cp15(v,r) ((v)->arch.ctxt.copro[(r) ^ CPx_BIAS]) #ifdef CONFIG_CPU_BIG_ENDIAN #define vcpu_cp15_64_high(v,r) vcpu_cp15((v),(r))