[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