linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3] KVM: arm64: Ignore kvm-arm.mode if !is_hyp_mode_available()
@ 2022-09-11 21:40 Elliot Berman
  2022-09-12  0:44 ` kernel test robot
  0 siblings, 1 reply; 2+ messages in thread
From: Elliot Berman @ 2022-09-11 21:40 UTC (permalink / raw)
  To: Catalin Marinas, Will Deacon, Marc Zyngier, James Morse,
	Alexandru Elisei, Suzuki K Poulose
  Cc: Elliot Berman, linux-arm-kernel, linux-kernel, kvmarm

Ignore kvm-arm.mode if !is_hyp_mode_available(). Specifically, we want
to avoid switching kvm_mode to KVM_MODE_PROTECTED if hypervisor mode is
not available. This prevents "Protected KVM" cpu capability being
reported when Linux is booting in EL1 and would not have KVM enabled.
Reasonably though, we should warn if the command line is requesting a
KVM mode at all if KVM isn't actually available. Don't emit warning for
"kvm-arm.mode=none" since this would disable KVM anyway.

Signed-off-by: Elliot Berman <quic_eberman@quicinc.com>
---
 arch/arm64/kvm/arm.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c
index 8fe73ee5fa84..8e5d1c8502f5 100644
--- a/arch/arm64/kvm/arm.c
+++ b/arch/arm64/kvm/arm.c
@@ -2271,6 +2271,16 @@ static int __init early_kvm_mode_cfg(char *arg)
 	if (!arg)
 		return -EINVAL;
 
+	if (strcmp(arg, "none") == 0) {
+		kvm_mode = KVM_MODE_NONE;
+		return 0;
+	}
+
+	if (!is_hyp_mode_available()) {
+		pr_warn_once("KVM is not available. Ignoring kvm-arm.mode\n")
+		return 0;
+	}
+
 	if (strcmp(arg, "protected") == 0) {
 		if (!is_kernel_in_hyp_mode())
 			kvm_mode = KVM_MODE_PROTECTED;
@@ -2285,11 +2295,6 @@ static int __init early_kvm_mode_cfg(char *arg)
 		return 0;
 	}
 
-	if (strcmp(arg, "none") == 0) {
-		kvm_mode = KVM_MODE_NONE;
-		return 0;
-	}
-
 	return -EINVAL;
 }
 early_param("kvm-arm.mode", early_kvm_mode_cfg);

base-commit: 0982c8d859f8f7022b9fd44d421c7ec721bb41f9
-- 
2.25.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH v3] KVM: arm64: Ignore kvm-arm.mode if !is_hyp_mode_available()
  2022-09-11 21:40 [PATCH v3] KVM: arm64: Ignore kvm-arm.mode if !is_hyp_mode_available() Elliot Berman
@ 2022-09-12  0:44 ` kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2022-09-12  0:44 UTC (permalink / raw)
  To: Elliot Berman, Catalin Marinas, Will Deacon, Marc Zyngier,
	James Morse, Alexandru Elisei, Suzuki K Poulose
  Cc: kbuild-all, Elliot Berman, linux-arm-kernel, linux-kernel, kvmarm

Hi Elliot,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on 0982c8d859f8f7022b9fd44d421c7ec721bb41f9]

url:    https://github.com/intel-lab-lkp/linux/commits/Elliot-Berman/KVM-arm64-Ignore-kvm-arm-mode-if-is_hyp_mode_available/20220912-054253
base:   0982c8d859f8f7022b9fd44d421c7ec721bb41f9
config: arm64-allyesconfig (https://download.01.org/0day-ci/archive/20220912/202209120812.lW9MTQPf-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/intel-lab-lkp/linux/commit/2266c3455ccaa7b42a9a0be751e15a15899d99b8
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Elliot-Berman/KVM-arm64-Ignore-kvm-arm-mode-if-is_hyp_mode_available/20220912-054253
        git checkout 2266c3455ccaa7b42a9a0be751e15a15899d99b8
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash arch/arm64/

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   arch/arm64/kvm/arm.c: In function 'early_kvm_mode_cfg':
>> arch/arm64/kvm/arm.c:2281:17: error: expected ';' before 'return'
    2281 |                 return 0;
         |                 ^~~~~~


vim +2281 arch/arm64/kvm/arm.c

  2268	
  2269	static int __init early_kvm_mode_cfg(char *arg)
  2270	{
  2271		if (!arg)
  2272			return -EINVAL;
  2273	
  2274		if (strcmp(arg, "none") == 0) {
  2275			kvm_mode = KVM_MODE_NONE;
  2276			return 0;
  2277		}
  2278	
  2279		if (!is_hyp_mode_available()) {
  2280			pr_warn_once("KVM is not available. Ignoring kvm-arm.mode\n")
> 2281			return 0;
  2282		}
  2283	
  2284		if (strcmp(arg, "protected") == 0) {
  2285			if (!is_kernel_in_hyp_mode())
  2286				kvm_mode = KVM_MODE_PROTECTED;
  2287			else
  2288				pr_warn_once("Protected KVM not available with VHE\n");
  2289	
  2290			return 0;
  2291		}
  2292	
  2293		if (strcmp(arg, "nvhe") == 0 && !WARN_ON(is_kernel_in_hyp_mode())) {
  2294			kvm_mode = KVM_MODE_DEFAULT;
  2295			return 0;
  2296		}
  2297	
  2298		return -EINVAL;
  2299	}
  2300	early_param("kvm-arm.mode", early_kvm_mode_cfg);
  2301	

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-09-12  0:46 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-11 21:40 [PATCH v3] KVM: arm64: Ignore kvm-arm.mode if !is_hyp_mode_available() Elliot Berman
2022-09-12  0:44 ` kernel test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).