[arm-platforms:kvm-arm64/nv-6.9-sr-enforcement 19/73] arch/arm64/kvm/emulate-nested.c:1935:31: error: implicit declaration of function 'sanitised_sys_reg'
kernel test robot
lkp at intel.com
Sun Jan 21 20:03:29 PST 2024
tree: https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git kvm-arm64/nv-6.9-sr-enforcement
head: fb04ec45e71f56be255f77ee293e821f6cf9d539
commit: 72649282ff3e4750e8683886d693e3c11f197bd4 [19/73] KVM: arm64: nv: Drop sanitised_sys_reg() helper
config: arm64-randconfig-001-20240121 (https://download.01.org/0day-ci/archive/20240122/202401221145.KS0wWCNe-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240122/202401221145.KS0wWCNe-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp at intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202401221145.KS0wWCNe-lkp@intel.com/
All errors (new ones prefixed by >>):
arch/arm64/kvm/emulate-nested.c: In function '__check_nv_sr_forward':
>> arch/arm64/kvm/emulate-nested.c:1935:31: error: implicit declaration of function 'sanitised_sys_reg' [-Werror=implicit-function-declaration]
1935 | val = sanitised_sys_reg(vcpu, HFGRTR_EL2);
| ^~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +/sanitised_sys_reg +1935 arch/arm64/kvm/emulate-nested.c
15b4d82d69d7b0 Marc Zyngier 2023-08-15 1899
e58ec47bf68d2b Marc Zyngier 2023-08-15 1900 bool __check_nv_sr_forward(struct kvm_vcpu *vcpu)
e58ec47bf68d2b Marc Zyngier 2023-08-15 1901 {
e58ec47bf68d2b Marc Zyngier 2023-08-15 1902 union trap_config tc;
e58ec47bf68d2b Marc Zyngier 2023-08-15 1903 enum trap_behaviour b;
e58ec47bf68d2b Marc Zyngier 2023-08-15 1904 bool is_read;
e58ec47bf68d2b Marc Zyngier 2023-08-15 1905 u32 sysreg;
15b4d82d69d7b0 Marc Zyngier 2023-08-15 1906 u64 esr, val;
e58ec47bf68d2b Marc Zyngier 2023-08-15 1907
e58ec47bf68d2b Marc Zyngier 2023-08-15 1908 if (!vcpu_has_nv(vcpu) || is_hyp_ctxt(vcpu))
e58ec47bf68d2b Marc Zyngier 2023-08-15 1909 return false;
e58ec47bf68d2b Marc Zyngier 2023-08-15 1910
e58ec47bf68d2b Marc Zyngier 2023-08-15 1911 esr = kvm_vcpu_get_esr(vcpu);
e58ec47bf68d2b Marc Zyngier 2023-08-15 1912 sysreg = esr_sys64_to_sysreg(esr);
e58ec47bf68d2b Marc Zyngier 2023-08-15 1913 is_read = (esr & ESR_ELx_SYS64_ISS_DIR_MASK) == ESR_ELx_SYS64_ISS_DIR_READ;
e58ec47bf68d2b Marc Zyngier 2023-08-15 1914
e58ec47bf68d2b Marc Zyngier 2023-08-15 1915 tc = get_trap_config(sysreg);
e58ec47bf68d2b Marc Zyngier 2023-08-15 1916
e58ec47bf68d2b Marc Zyngier 2023-08-15 1917 /*
e58ec47bf68d2b Marc Zyngier 2023-08-15 1918 * A value of 0 for the whole entry means that we know nothing
e58ec47bf68d2b Marc Zyngier 2023-08-15 1919 * for this sysreg, and that it cannot be re-injected into the
e58ec47bf68d2b Marc Zyngier 2023-08-15 1920 * nested hypervisor. In this situation, let's cut it short.
e58ec47bf68d2b Marc Zyngier 2023-08-15 1921 *
e58ec47bf68d2b Marc Zyngier 2023-08-15 1922 * Note that ultimately, we could also make use of the xarray
e58ec47bf68d2b Marc Zyngier 2023-08-15 1923 * to store the index of the sysreg in the local descriptor
e58ec47bf68d2b Marc Zyngier 2023-08-15 1924 * array, avoiding another search... Hint, hint...
e58ec47bf68d2b Marc Zyngier 2023-08-15 1925 */
e58ec47bf68d2b Marc Zyngier 2023-08-15 1926 if (!tc.val)
e58ec47bf68d2b Marc Zyngier 2023-08-15 1927 return false;
e58ec47bf68d2b Marc Zyngier 2023-08-15 1928
15b4d82d69d7b0 Marc Zyngier 2023-08-15 1929 switch ((enum fgt_group_id)tc.fgt) {
15b4d82d69d7b0 Marc Zyngier 2023-08-15 1930 case __NO_FGT_GROUP__:
15b4d82d69d7b0 Marc Zyngier 2023-08-15 1931 break;
15b4d82d69d7b0 Marc Zyngier 2023-08-15 1932
5a24ea78698572 Marc Zyngier 2023-08-15 1933 case HFGxTR_GROUP:
5a24ea78698572 Marc Zyngier 2023-08-15 1934 if (is_read)
5a24ea78698572 Marc Zyngier 2023-08-15 @1935 val = sanitised_sys_reg(vcpu, HFGRTR_EL2);
5a24ea78698572 Marc Zyngier 2023-08-15 1936 else
72649282ff3e47 Marc Zyngier 2024-01-18 1937 val = __vcpu_sys_reg(vcpu, HFGWTR_EL2);
5a24ea78698572 Marc Zyngier 2023-08-15 1938 break;
5a24ea78698572 Marc Zyngier 2023-08-15 1939
d0be0b2ede1324 Marc Zyngier 2023-08-15 1940 case HDFGRTR_GROUP:
d0be0b2ede1324 Marc Zyngier 2023-08-15 1941 case HDFGWTR_GROUP:
d0be0b2ede1324 Marc Zyngier 2023-08-15 1942 if (is_read)
72649282ff3e47 Marc Zyngier 2024-01-18 1943 val = __vcpu_sys_reg(vcpu, HDFGRTR_EL2);
d0be0b2ede1324 Marc Zyngier 2023-08-15 1944 else
72649282ff3e47 Marc Zyngier 2024-01-18 1945 val = __vcpu_sys_reg(vcpu, HDFGWTR_EL2);
d0be0b2ede1324 Marc Zyngier 2023-08-15 1946 break;
d0be0b2ede1324 Marc Zyngier 2023-08-15 1947
676f482354886c Fuad Tabba 2023-12-14 1948 case HAFGRTR_GROUP:
72649282ff3e47 Marc Zyngier 2024-01-18 1949 val = __vcpu_sys_reg(vcpu, HAFGRTR_EL2);
676f482354886c Fuad Tabba 2023-12-14 1950 break;
676f482354886c Fuad Tabba 2023-12-14 1951
039f9f12de5fc7 Marc Zyngier 2023-08-15 1952 case HFGITR_GROUP:
72649282ff3e47 Marc Zyngier 2024-01-18 1953 val = __vcpu_sys_reg(vcpu, HFGITR_EL2);
03fb54d0aa73cc Marc Zyngier 2023-08-15 1954 switch (tc.fgf) {
03fb54d0aa73cc Marc Zyngier 2023-08-15 1955 u64 tmp;
03fb54d0aa73cc Marc Zyngier 2023-08-15 1956
03fb54d0aa73cc Marc Zyngier 2023-08-15 1957 case __NO_FGF__:
03fb54d0aa73cc Marc Zyngier 2023-08-15 1958 break;
03fb54d0aa73cc Marc Zyngier 2023-08-15 1959
03fb54d0aa73cc Marc Zyngier 2023-08-15 1960 case HCRX_FGTnXS:
72649282ff3e47 Marc Zyngier 2024-01-18 1961 tmp = __vcpu_sys_reg(vcpu, HCRX_EL2);
03fb54d0aa73cc Marc Zyngier 2023-08-15 1962 if (tmp & HCRX_EL2_FGTnXS)
03fb54d0aa73cc Marc Zyngier 2023-08-15 1963 tc.fgt = __NO_FGT_GROUP__;
03fb54d0aa73cc Marc Zyngier 2023-08-15 1964 }
039f9f12de5fc7 Marc Zyngier 2023-08-15 1965 break;
039f9f12de5fc7 Marc Zyngier 2023-08-15 1966
15b4d82d69d7b0 Marc Zyngier 2023-08-15 1967 case __NR_FGT_GROUP_IDS__:
15b4d82d69d7b0 Marc Zyngier 2023-08-15 1968 /* Something is really wrong, bail out */
15b4d82d69d7b0 Marc Zyngier 2023-08-15 1969 WARN_ONCE(1, "__NR_FGT_GROUP_IDS__");
15b4d82d69d7b0 Marc Zyngier 2023-08-15 1970 return false;
15b4d82d69d7b0 Marc Zyngier 2023-08-15 1971 }
15b4d82d69d7b0 Marc Zyngier 2023-08-15 1972
15b4d82d69d7b0 Marc Zyngier 2023-08-15 1973 if (tc.fgt != __NO_FGT_GROUP__ && check_fgt_bit(val, tc))
15b4d82d69d7b0 Marc Zyngier 2023-08-15 1974 goto inject;
15b4d82d69d7b0 Marc Zyngier 2023-08-15 1975
e58ec47bf68d2b Marc Zyngier 2023-08-15 1976 b = compute_trap_behaviour(vcpu, tc);
e58ec47bf68d2b Marc Zyngier 2023-08-15 1977
e58ec47bf68d2b Marc Zyngier 2023-08-15 1978 if (((b & BEHAVE_FORWARD_READ) && is_read) ||
e58ec47bf68d2b Marc Zyngier 2023-08-15 1979 ((b & BEHAVE_FORWARD_WRITE) && !is_read))
e58ec47bf68d2b Marc Zyngier 2023-08-15 1980 goto inject;
e58ec47bf68d2b Marc Zyngier 2023-08-15 1981
e58ec47bf68d2b Marc Zyngier 2023-08-15 1982 return false;
e58ec47bf68d2b Marc Zyngier 2023-08-15 1983
e58ec47bf68d2b Marc Zyngier 2023-08-15 1984 inject:
e58ec47bf68d2b Marc Zyngier 2023-08-15 1985 trace_kvm_forward_sysreg_trap(vcpu, sysreg, is_read);
e58ec47bf68d2b Marc Zyngier 2023-08-15 1986
e58ec47bf68d2b Marc Zyngier 2023-08-15 1987 kvm_inject_nested_sync(vcpu, kvm_vcpu_get_esr(vcpu));
e58ec47bf68d2b Marc Zyngier 2023-08-15 1988 return true;
e58ec47bf68d2b Marc Zyngier 2023-08-15 1989 }
e58ec47bf68d2b Marc Zyngier 2023-08-15 1990
:::::: The code at line 1935 was first introduced by commit
:::::: 5a24ea7869857251a83da1512209f76003bc09db KVM: arm64: nv: Add trap forwarding for HFGxTR_EL2
:::::: TO: Marc Zyngier <maz at kernel.org>
:::::: CC: Marc Zyngier <maz at kernel.org>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
More information about the linux-arm-kernel
mailing list