firmware: smccc: Fix check for ARCH_SOC_ID not implemented
authorMichael Kelley <mikelley@microsoft.com>
Fri, 19 Nov 2021 23:39:01 +0000 (15:39 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 1 Dec 2021 08:04:49 +0000 (09:04 +0100)
commit88f6b5f10fd199f3dc2c5362e6e8507fb24fce0e
treef1c49ede1292fd5f21808077bdf272d372f9b261
parent80d709875d920f7ca959040457b7393df706fe44
firmware: smccc: Fix check for ARCH_SOC_ID not implemented

[ Upstream commit e95d8eaee21cd0d117d34125d4cdc97489c1ab82 ]

The ARCH_FEATURES function ID is a 32-bit SMC call, which returns
a 32-bit result per the SMCCC spec.  Current code is doing a 64-bit
comparison against -1 (SMCCC_RET_NOT_SUPPORTED) to detect that the
feature is unimplemented.  That check doesn't work in a Hyper-V VM,
where the upper 32-bits are zero as allowed by the spec.

Cast the result as an 'int' so the comparison works. The change also
makes the code consistent with other similar checks in this file.

Fixes: 821b67fa4639 ("firmware: smccc: Add ARCH_SOC_ID support")
Signed-off-by: Michael Kelley <mikelley@microsoft.com>
Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/firmware/smccc/soc_id.c