All of lore.kernel.org
 help / color / mirror / Atom feed
* arch/arm64/kvm/mmu.c:1570 user_mem_abort() error: uninitialized symbol 'fault_granule'.
@ 2024-10-15  4:23 kernel test robot
  0 siblings, 0 replies; 9+ messages in thread
From: kernel test robot @ 2024-10-15  4:23 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Ard Biesheuvel <ardb@kernel.org>
CC: Marc Zyngier <maz@kernel.org>

Hi Ard,

FYI, the error/warning was bisected to this commit, please ignore it if it's irrelevant.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   eca631b8fe808748d7585059c4307005ca5c5820
commit: 11e5ea5242e38d44fcede879473566bb6d68f954 KVM: arm64: Use helpers to classify exception types reported via ESR
date:   11 months ago
:::::: branch date: 10 hours ago
:::::: commit date: 11 months ago
config: arm64-randconfig-r071-20241015 (https://download.01.org/0day-ci/archive/20241015/202410151236.QrT5L6N0-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 14.1.0

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@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202410151236.QrT5L6N0-lkp@intel.com/

smatch warnings:
arch/arm64/kvm/mmu.c:1570 user_mem_abort() error: uninitialized symbol 'fault_granule'.

vim +/fault_granule +1570 arch/arm64/kvm/mmu.c

ea7fc1bb1cd1b9 arch/arm64/kvm/mmu.c Steven Price        2021-06-21  1376  
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1377  static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
98047888bb9fd5 arch/arm/kvm/mmu.c   Christoffer Dall    2014-08-19  1378  			  struct kvm_memory_slot *memslot, unsigned long hva,
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1379  			  bool fault_is_perm)
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1380  {
ffd1b63a586096 arch/arm64/kvm/mmu.c Will Deacon         2020-09-30  1381  	int ret = 0;
6396b852e46e56 virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1382  	bool write_fault, writable, force_pte = false;
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1383  	bool exec_fault, mte_allowed;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1384  	bool device = false;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1385  	unsigned long mmu_seq;
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall    2012-11-01  1386  	struct kvm *kvm = vcpu->kvm;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1387  	struct kvm_mmu_memory_cache *memcache = &vcpu->arch.mmu_page_cache;
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall    2012-11-01  1388  	struct vm_area_struct *vma;
1559b7583ff6ed virt/kvm/arm/mmu.c   James Morse         2019-12-17  1389  	short vma_shift;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1390  	gfn_t gfn;
ba049e93aef7e8 arch/arm/kvm/mmu.c   Dan Williams        2016-01-15  1391  	kvm_pfn_t pfn;
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1392  	bool logging_active = memslot_is_logging(memslot);
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1393  	long vma_pagesize, fault_granule;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1394  	enum kvm_pgtable_prot prot = KVM_PGTABLE_PROT_R;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1395  	struct kvm_pgtable *pgt;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1396  
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1397  	if (fault_is_perm)
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1398  		fault_granule = kvm_vcpu_trap_get_perm_fault_granule(vcpu);
a7d079cea2dffb arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-09  1399  	write_fault = kvm_is_write_fault(vcpu);
c4ad98e4b72cb5 arch/arm64/kvm/mmu.c Marc Zyngier        2020-09-15  1400  	exec_fault = kvm_vcpu_trap_is_exec_fault(vcpu);
d0e22b4ac3ba23 virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1401  	VM_BUG_ON(write_fault && exec_fault);
d0e22b4ac3ba23 virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1402  
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1403  	if (fault_is_perm && !write_fault && !exec_fault) {
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1404  		kvm_err("Unexpected L2 read permission error\n");
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1405  		return -EFAULT;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1406  	}
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1407  
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1408  	/*
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1409  	 * Permission faults just need to update the existing leaf entry,
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1410  	 * and so normally don't require allocations from the memcache. The
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1411  	 * only exception to this is when dirty logging is enabled at runtime
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1412  	 * and a write fault needs to collapse a block entry into a table.
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1413  	 */
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1414  	if (!fault_is_perm || (logging_active && write_fault)) {
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1415  		ret = kvm_mmu_topup_memory_cache(memcache,
fe49fd940e2259 arch/arm64/kvm/mmu.c Marc Zyngier        2023-10-12  1416  						 kvm_mmu_cache_min_pages(vcpu->arch.hw_mmu));
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1417  		if (ret)
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1418  			return ret;
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1419  	}
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1420  
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1421  	/*
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1422  	 * Let's check if we will get back a huge page backed by hugetlbfs, or
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1423  	 * get block mapping for device MMIO region.
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1424  	 */
89154dd5313f77 arch/arm64/kvm/mmu.c Michel Lespinasse   2020-06-08  1425  	mmap_read_lock(current->mm);
09eef83a801512 arch/arm64/kvm/mmu.c Liam Howlett        2021-06-28  1426  	vma = vma_lookup(current->mm, hva);
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1427  	if (unlikely(!vma)) {
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1428  		kvm_err("Failed to find VMA for hva 0x%lx\n", hva);
89154dd5313f77 arch/arm64/kvm/mmu.c Michel Lespinasse   2020-06-08  1429  		mmap_read_unlock(current->mm);
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1430  		return -EFAULT;
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1431  	}
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1432  
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1433  	/*
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1434  	 * logging_active is guaranteed to never be true for VM_PFNMAP
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1435  	 * memslots.
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1436  	 */
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1437  	if (logging_active) {
a80868f3985548 virt/kvm/arm/mmu.c   Suzuki K Poulose    2019-03-12  1438  		force_pte = true;
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1439  		vma_shift = PAGE_SHIFT;
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1440  	} else {
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1441  		vma_shift = get_vma_page_shift(vma, hva);
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1442  	}
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1443  
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1444  	switch (vma_shift) {
faf000397e7f10 arch/arm64/kvm/mmu.c Gavin Shan          2020-11-03  1445  #ifndef __PAGETABLE_PMD_FOLDED
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1446  	case PUD_SHIFT:
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1447  		if (fault_supports_stage2_huge_mapping(memslot, hva, PUD_SIZE))
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1448  			break;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1449  		fallthrough;
faf000397e7f10 arch/arm64/kvm/mmu.c Gavin Shan          2020-11-03  1450  #endif
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1451  	case CONT_PMD_SHIFT:
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1452  		vma_shift = PMD_SHIFT;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1453  		fallthrough;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1454  	case PMD_SHIFT:
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1455  		if (fault_supports_stage2_huge_mapping(memslot, hva, PMD_SIZE))
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1456  			break;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1457  		fallthrough;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1458  	case CONT_PTE_SHIFT:
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1459  		vma_shift = PAGE_SHIFT;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1460  		force_pte = true;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1461  		fallthrough;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1462  	case PAGE_SHIFT:
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1463  		break;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1464  	default:
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1465  		WARN_ONCE(1, "Unknown vma_shift %d", vma_shift);
a80868f3985548 virt/kvm/arm/mmu.c   Suzuki K Poulose    2019-03-12  1466  	}
a80868f3985548 virt/kvm/arm/mmu.c   Suzuki K Poulose    2019-03-12  1467  
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1468  	vma_pagesize = 1UL << vma_shift;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1469  	if (vma_pagesize == PMD_SIZE || vma_pagesize == PUD_SIZE)
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1470  		fault_ipa &= ~(vma_pagesize - 1);
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1471  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1472  	gfn = fault_ipa >> PAGE_SHIFT;
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1473  	mte_allowed = kvm_vma_mte_allowed(vma);
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1474  
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1475  	/* Don't use the VMA after the unlock -- it may have vanished */
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1476  	vma = NULL;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1477  
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1478  	/*
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1479  	 * Read mmu_invalidate_seq so that KVM can detect if the results of
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1480  	 * vma_lookup() or __gfn_to_pfn_memslot() become stale prior to
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1481  	 * acquiring kvm->mmu_lock.
10ba2d17d29729 arch/arm64/kvm/mmu.c Gavin Shan          2021-03-16  1482  	 *
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1483  	 * Rely on mmap_read_unlock() for an implicit smp_rmb(), which pairs
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1484  	 * with the smp_wmb() in kvm_mmu_invalidate_end().
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1485  	 */
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1486  	mmu_seq = vcpu->kvm->mmu_invalidate_seq;
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1487  	mmap_read_unlock(current->mm);
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1488  
c8b88b332bedf4 arch/arm64/kvm/mmu.c Peter Xu            2022-10-11  1489  	pfn = __gfn_to_pfn_memslot(memslot, gfn, false, false, NULL,
10ba2d17d29729 arch/arm64/kvm/mmu.c Gavin Shan          2021-03-16  1490  				   write_fault, &writable, NULL);
196f878a7ac2e7 virt/kvm/arm/mmu.c   James Morse         2017-06-20  1491  	if (pfn == KVM_PFN_ERR_HWPOISON) {
1559b7583ff6ed virt/kvm/arm/mmu.c   James Morse         2019-12-17  1492  		kvm_send_hwpoison_signal(hva, vma_shift);
196f878a7ac2e7 virt/kvm/arm/mmu.c   James Morse         2017-06-20  1493  		return 0;
196f878a7ac2e7 virt/kvm/arm/mmu.c   James Morse         2017-06-20  1494  	}
9ac715954682b2 arch/arm/kvm/mmu.c   Christoffer Dall    2016-08-17  1495  	if (is_error_noslot_pfn(pfn))
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1496  		return -EFAULT;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1497  
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1498  	if (kvm_is_device_pfn(pfn)) {
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1499  		/*
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1500  		 * If the page was identified as device early by looking at
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1501  		 * the VMA flags, vma_pagesize is already representing the
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1502  		 * largest quantity we can map.  If instead it was mapped
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1503  		 * via gfn_to_pfn_prot(), vma_pagesize is set to PAGE_SIZE
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1504  		 * and must not be upgraded.
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1505  		 *
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1506  		 * In both cases, we don't let transparent_hugepage_adjust()
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1507  		 * change things at the last minute.
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1508  		 */
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1509  		device = true;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1510  	} else if (logging_active && !write_fault) {
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1511  		/*
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1512  		 * Only actually map the page as writable if this was a write
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1513  		 * fault.
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1514  		 */
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1515  		writable = false;
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1516  	}
b88657674d39fc arch/arm/kvm/mmu.c   Kim Phillips        2014-06-26  1517  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1518  	if (exec_fault && device)
6d674e28f642e3 virt/kvm/arm/mmu.c   Marc Zyngier        2019-12-11  1519  		return -ENOEXEC;
6d674e28f642e3 virt/kvm/arm/mmu.c   Marc Zyngier        2019-12-11  1520  
f783ef1c0e82e4 arch/arm64/kvm/mmu.c Jing Zhang          2022-01-18  1521  	read_lock(&kvm->mmu_lock);
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1522  	pgt = vcpu->arch.hw_mmu->pgt;
20ec3ebd707c77 arch/arm64/kvm/mmu.c Chao Peng           2022-08-16  1523  	if (mmu_invalidate_retry(kvm, mmu_seq))
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1524  		goto out_unlock;
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1525  
3f58bf63455588 virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1526  	/*
0529c9021252a5 arch/arm64/kvm/mmu.c Suzuki K Poulose    2020-05-07  1527  	 * If we are not forced to use page mapping, check if we are
0529c9021252a5 arch/arm64/kvm/mmu.c Suzuki K Poulose    2020-05-07  1528  	 * backed by a THP and thus use block mapping if possible.
3f58bf63455588 virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1529  	 */
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1530  	if (vma_pagesize == PAGE_SIZE && !(force_pte || device)) {
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1531  		if (fault_is_perm && fault_granule > PAGE_SIZE)
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1532  			vma_pagesize = fault_granule;
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1533  		else
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1534  			vma_pagesize = transparent_hugepage_adjust(kvm, memslot,
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1535  								   hva, &pfn,
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1536  								   &fault_ipa);
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1537  
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1538  		if (vma_pagesize < 0) {
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1539  			ret = vma_pagesize;
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1540  			goto out_unlock;
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1541  		}
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1542  	}
a9c0e12ebee56e virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1543  
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1544  	if (!fault_is_perm && !device && kvm_has_mte(kvm)) {
d89585fbb30869 arch/arm64/kvm/mmu.c Peter Collingbourne 2022-11-03  1545  		/* Check the VMM hasn't introduced a new disallowed VMA */
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1546  		if (mte_allowed) {
2dbf12ae132cc7 arch/arm64/kvm/mmu.c Catalin Marinas     2022-11-03  1547  			sanitise_mte_tags(kvm, pfn, vma_pagesize);
2dbf12ae132cc7 arch/arm64/kvm/mmu.c Catalin Marinas     2022-11-03  1548  		} else {
9f03db6673598f arch/arm64/kvm/mmu.c Marc Zyngier        2021-06-22  1549  			ret = -EFAULT;
ea7fc1bb1cd1b9 arch/arm64/kvm/mmu.c Steven Price        2021-06-21  1550  			goto out_unlock;
ea7fc1bb1cd1b9 arch/arm64/kvm/mmu.c Steven Price        2021-06-21  1551  		}
2dbf12ae132cc7 arch/arm64/kvm/mmu.c Catalin Marinas     2022-11-03  1552  	}
3f58bf63455588 virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1553  
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1554  	if (writable)
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1555  		prot |= KVM_PGTABLE_PROT_W;
a9c0e12ebee56e virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1556  
25aa28691bb960 arch/arm64/kvm/mmu.c Yanan Wang          2021-06-17  1557  	if (exec_fault)
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1558  		prot |= KVM_PGTABLE_PROT_X;
a9c0e12ebee56e virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1559  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1560  	if (device)
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1561  		prot |= KVM_PGTABLE_PROT_DEVICE;
d8569fba13850b arch/arm64/kvm/mmu.c Mark Rutland        2023-10-16  1562  	else if (cpus_have_final_cap(ARM64_HAS_CACHE_DIC))
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1563  		prot |= KVM_PGTABLE_PROT_X;
a15f693935a9f1 virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1564  
7d894834a30556 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1565  	/*
7d894834a30556 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1566  	 * Under the premise of getting a FSC_PERM fault, we just need to relax
7d894834a30556 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1567  	 * permissions only if vma_pagesize equals fault_granule. Otherwise,
7d894834a30556 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1568  	 * kvm_pgtable_stage2_map() should be called to change block size.
7d894834a30556 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1569  	 */
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28 @1570  	if (fault_is_perm && vma_pagesize == fault_granule)
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1571  		ret = kvm_pgtable_stage2_relax_perms(pgt, fault_ipa, prot);
1577cb5823cefd arch/arm64/kvm/mmu.c Oliver Upton        2022-11-07  1572  	else
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1573  		ret = kvm_pgtable_stage2_map(pgt, fault_ipa, vma_pagesize,
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1574  					     __pfn_to_phys(pfn), prot,
ddcadb297ce5cc arch/arm64/kvm/mmu.c Oliver Upton        2022-12-02  1575  					     memcache,
ddcadb297ce5cc arch/arm64/kvm/mmu.c Oliver Upton        2022-12-02  1576  					     KVM_PGTABLE_WALK_HANDLE_FAULT |
ddcadb297ce5cc arch/arm64/kvm/mmu.c Oliver Upton        2022-12-02  1577  					     KVM_PGTABLE_WALK_SHARED);
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall    2012-11-01  1578  
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1579  	/* Mark the page dirty only if the fault is handled successfully */
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1580  	if (writable && !ret) {
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1581  		kvm_set_pfn_dirty(pfn);
10ba2d17d29729 arch/arm64/kvm/mmu.c Gavin Shan          2021-03-16  1582  		mark_page_dirty_in_slot(kvm, memslot, gfn);
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1583  	}
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1584  
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1585  out_unlock:
f783ef1c0e82e4 arch/arm64/kvm/mmu.c Jing Zhang          2022-01-18  1586  	read_unlock(&kvm->mmu_lock);
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1587  	kvm_release_pfn_clean(pfn);
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1588  	return ret != -EAGAIN ? ret : 0;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1589  }
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1590  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

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

* arch/arm64/kvm/mmu.c:1570 user_mem_abort() error: uninitialized symbol 'fault_granule'.
@ 2024-10-16  0:55 kernel test robot
  0 siblings, 0 replies; 9+ messages in thread
From: kernel test robot @ 2024-10-16  0:55 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Ard Biesheuvel <ardb@kernel.org>
CC: Marc Zyngier <maz@kernel.org>

Hi Ard,

FYI, the error/warning was bisected to this commit, please ignore it if it's irrelevant.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   2f87d0916ce0d2925cedbc9e8f5d6291ba2ac7b2
commit: 11e5ea5242e38d44fcede879473566bb6d68f954 KVM: arm64: Use helpers to classify exception types reported via ESR
date:   11 months ago
:::::: branch date: 7 hours ago
:::::: commit date: 11 months ago
config: arm64-randconfig-r071-20241015 (https://download.01.org/0day-ci/archive/20241016/202410160848.LYovAPcr-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 14.1.0

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@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202410160848.LYovAPcr-lkp@intel.com/

smatch warnings:
arch/arm64/kvm/mmu.c:1570 user_mem_abort() error: uninitialized symbol 'fault_granule'.

vim +/fault_granule +1570 arch/arm64/kvm/mmu.c

ea7fc1bb1cd1b9 arch/arm64/kvm/mmu.c Steven Price        2021-06-21  1376  
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1377  static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
98047888bb9fd5 arch/arm/kvm/mmu.c   Christoffer Dall    2014-08-19  1378  			  struct kvm_memory_slot *memslot, unsigned long hva,
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1379  			  bool fault_is_perm)
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1380  {
ffd1b63a586096 arch/arm64/kvm/mmu.c Will Deacon         2020-09-30  1381  	int ret = 0;
6396b852e46e56 virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1382  	bool write_fault, writable, force_pte = false;
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1383  	bool exec_fault, mte_allowed;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1384  	bool device = false;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1385  	unsigned long mmu_seq;
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall    2012-11-01  1386  	struct kvm *kvm = vcpu->kvm;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1387  	struct kvm_mmu_memory_cache *memcache = &vcpu->arch.mmu_page_cache;
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall    2012-11-01  1388  	struct vm_area_struct *vma;
1559b7583ff6ed virt/kvm/arm/mmu.c   James Morse         2019-12-17  1389  	short vma_shift;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1390  	gfn_t gfn;
ba049e93aef7e8 arch/arm/kvm/mmu.c   Dan Williams        2016-01-15  1391  	kvm_pfn_t pfn;
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1392  	bool logging_active = memslot_is_logging(memslot);
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1393  	long vma_pagesize, fault_granule;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1394  	enum kvm_pgtable_prot prot = KVM_PGTABLE_PROT_R;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1395  	struct kvm_pgtable *pgt;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1396  
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1397  	if (fault_is_perm)
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1398  		fault_granule = kvm_vcpu_trap_get_perm_fault_granule(vcpu);
a7d079cea2dffb arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-09  1399  	write_fault = kvm_is_write_fault(vcpu);
c4ad98e4b72cb5 arch/arm64/kvm/mmu.c Marc Zyngier        2020-09-15  1400  	exec_fault = kvm_vcpu_trap_is_exec_fault(vcpu);
d0e22b4ac3ba23 virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1401  	VM_BUG_ON(write_fault && exec_fault);
d0e22b4ac3ba23 virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1402  
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1403  	if (fault_is_perm && !write_fault && !exec_fault) {
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1404  		kvm_err("Unexpected L2 read permission error\n");
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1405  		return -EFAULT;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1406  	}
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1407  
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1408  	/*
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1409  	 * Permission faults just need to update the existing leaf entry,
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1410  	 * and so normally don't require allocations from the memcache. The
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1411  	 * only exception to this is when dirty logging is enabled at runtime
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1412  	 * and a write fault needs to collapse a block entry into a table.
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1413  	 */
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1414  	if (!fault_is_perm || (logging_active && write_fault)) {
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1415  		ret = kvm_mmu_topup_memory_cache(memcache,
fe49fd940e2259 arch/arm64/kvm/mmu.c Marc Zyngier        2023-10-12  1416  						 kvm_mmu_cache_min_pages(vcpu->arch.hw_mmu));
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1417  		if (ret)
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1418  			return ret;
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1419  	}
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1420  
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1421  	/*
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1422  	 * Let's check if we will get back a huge page backed by hugetlbfs, or
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1423  	 * get block mapping for device MMIO region.
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1424  	 */
89154dd5313f77 arch/arm64/kvm/mmu.c Michel Lespinasse   2020-06-08  1425  	mmap_read_lock(current->mm);
09eef83a801512 arch/arm64/kvm/mmu.c Liam Howlett        2021-06-28  1426  	vma = vma_lookup(current->mm, hva);
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1427  	if (unlikely(!vma)) {
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1428  		kvm_err("Failed to find VMA for hva 0x%lx\n", hva);
89154dd5313f77 arch/arm64/kvm/mmu.c Michel Lespinasse   2020-06-08  1429  		mmap_read_unlock(current->mm);
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1430  		return -EFAULT;
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1431  	}
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1432  
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1433  	/*
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1434  	 * logging_active is guaranteed to never be true for VM_PFNMAP
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1435  	 * memslots.
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1436  	 */
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1437  	if (logging_active) {
a80868f3985548 virt/kvm/arm/mmu.c   Suzuki K Poulose    2019-03-12  1438  		force_pte = true;
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1439  		vma_shift = PAGE_SHIFT;
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1440  	} else {
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1441  		vma_shift = get_vma_page_shift(vma, hva);
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1442  	}
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1443  
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1444  	switch (vma_shift) {
faf000397e7f10 arch/arm64/kvm/mmu.c Gavin Shan          2020-11-03  1445  #ifndef __PAGETABLE_PMD_FOLDED
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1446  	case PUD_SHIFT:
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1447  		if (fault_supports_stage2_huge_mapping(memslot, hva, PUD_SIZE))
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1448  			break;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1449  		fallthrough;
faf000397e7f10 arch/arm64/kvm/mmu.c Gavin Shan          2020-11-03  1450  #endif
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1451  	case CONT_PMD_SHIFT:
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1452  		vma_shift = PMD_SHIFT;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1453  		fallthrough;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1454  	case PMD_SHIFT:
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1455  		if (fault_supports_stage2_huge_mapping(memslot, hva, PMD_SIZE))
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1456  			break;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1457  		fallthrough;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1458  	case CONT_PTE_SHIFT:
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1459  		vma_shift = PAGE_SHIFT;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1460  		force_pte = true;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1461  		fallthrough;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1462  	case PAGE_SHIFT:
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1463  		break;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1464  	default:
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1465  		WARN_ONCE(1, "Unknown vma_shift %d", vma_shift);
a80868f3985548 virt/kvm/arm/mmu.c   Suzuki K Poulose    2019-03-12  1466  	}
a80868f3985548 virt/kvm/arm/mmu.c   Suzuki K Poulose    2019-03-12  1467  
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1468  	vma_pagesize = 1UL << vma_shift;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1469  	if (vma_pagesize == PMD_SIZE || vma_pagesize == PUD_SIZE)
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1470  		fault_ipa &= ~(vma_pagesize - 1);
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1471  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1472  	gfn = fault_ipa >> PAGE_SHIFT;
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1473  	mte_allowed = kvm_vma_mte_allowed(vma);
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1474  
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1475  	/* Don't use the VMA after the unlock -- it may have vanished */
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1476  	vma = NULL;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1477  
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1478  	/*
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1479  	 * Read mmu_invalidate_seq so that KVM can detect if the results of
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1480  	 * vma_lookup() or __gfn_to_pfn_memslot() become stale prior to
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1481  	 * acquiring kvm->mmu_lock.
10ba2d17d29729 arch/arm64/kvm/mmu.c Gavin Shan          2021-03-16  1482  	 *
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1483  	 * Rely on mmap_read_unlock() for an implicit smp_rmb(), which pairs
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1484  	 * with the smp_wmb() in kvm_mmu_invalidate_end().
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1485  	 */
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1486  	mmu_seq = vcpu->kvm->mmu_invalidate_seq;
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1487  	mmap_read_unlock(current->mm);
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1488  
c8b88b332bedf4 arch/arm64/kvm/mmu.c Peter Xu            2022-10-11  1489  	pfn = __gfn_to_pfn_memslot(memslot, gfn, false, false, NULL,
10ba2d17d29729 arch/arm64/kvm/mmu.c Gavin Shan          2021-03-16  1490  				   write_fault, &writable, NULL);
196f878a7ac2e7 virt/kvm/arm/mmu.c   James Morse         2017-06-20  1491  	if (pfn == KVM_PFN_ERR_HWPOISON) {
1559b7583ff6ed virt/kvm/arm/mmu.c   James Morse         2019-12-17  1492  		kvm_send_hwpoison_signal(hva, vma_shift);
196f878a7ac2e7 virt/kvm/arm/mmu.c   James Morse         2017-06-20  1493  		return 0;
196f878a7ac2e7 virt/kvm/arm/mmu.c   James Morse         2017-06-20  1494  	}
9ac715954682b2 arch/arm/kvm/mmu.c   Christoffer Dall    2016-08-17  1495  	if (is_error_noslot_pfn(pfn))
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1496  		return -EFAULT;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1497  
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1498  	if (kvm_is_device_pfn(pfn)) {
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1499  		/*
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1500  		 * If the page was identified as device early by looking at
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1501  		 * the VMA flags, vma_pagesize is already representing the
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1502  		 * largest quantity we can map.  If instead it was mapped
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1503  		 * via gfn_to_pfn_prot(), vma_pagesize is set to PAGE_SIZE
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1504  		 * and must not be upgraded.
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1505  		 *
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1506  		 * In both cases, we don't let transparent_hugepage_adjust()
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1507  		 * change things at the last minute.
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1508  		 */
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1509  		device = true;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1510  	} else if (logging_active && !write_fault) {
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1511  		/*
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1512  		 * Only actually map the page as writable if this was a write
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1513  		 * fault.
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1514  		 */
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1515  		writable = false;
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1516  	}
b88657674d39fc arch/arm/kvm/mmu.c   Kim Phillips        2014-06-26  1517  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1518  	if (exec_fault && device)
6d674e28f642e3 virt/kvm/arm/mmu.c   Marc Zyngier        2019-12-11  1519  		return -ENOEXEC;
6d674e28f642e3 virt/kvm/arm/mmu.c   Marc Zyngier        2019-12-11  1520  
f783ef1c0e82e4 arch/arm64/kvm/mmu.c Jing Zhang          2022-01-18  1521  	read_lock(&kvm->mmu_lock);
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1522  	pgt = vcpu->arch.hw_mmu->pgt;
20ec3ebd707c77 arch/arm64/kvm/mmu.c Chao Peng           2022-08-16  1523  	if (mmu_invalidate_retry(kvm, mmu_seq))
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1524  		goto out_unlock;
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1525  
3f58bf63455588 virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1526  	/*
0529c9021252a5 arch/arm64/kvm/mmu.c Suzuki K Poulose    2020-05-07  1527  	 * If we are not forced to use page mapping, check if we are
0529c9021252a5 arch/arm64/kvm/mmu.c Suzuki K Poulose    2020-05-07  1528  	 * backed by a THP and thus use block mapping if possible.
3f58bf63455588 virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1529  	 */
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1530  	if (vma_pagesize == PAGE_SIZE && !(force_pte || device)) {
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1531  		if (fault_is_perm && fault_granule > PAGE_SIZE)
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1532  			vma_pagesize = fault_granule;
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1533  		else
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1534  			vma_pagesize = transparent_hugepage_adjust(kvm, memslot,
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1535  								   hva, &pfn,
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1536  								   &fault_ipa);
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1537  
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1538  		if (vma_pagesize < 0) {
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1539  			ret = vma_pagesize;
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1540  			goto out_unlock;
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1541  		}
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1542  	}
a9c0e12ebee56e virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1543  
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1544  	if (!fault_is_perm && !device && kvm_has_mte(kvm)) {
d89585fbb30869 arch/arm64/kvm/mmu.c Peter Collingbourne 2022-11-03  1545  		/* Check the VMM hasn't introduced a new disallowed VMA */
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1546  		if (mte_allowed) {
2dbf12ae132cc7 arch/arm64/kvm/mmu.c Catalin Marinas     2022-11-03  1547  			sanitise_mte_tags(kvm, pfn, vma_pagesize);
2dbf12ae132cc7 arch/arm64/kvm/mmu.c Catalin Marinas     2022-11-03  1548  		} else {
9f03db6673598f arch/arm64/kvm/mmu.c Marc Zyngier        2021-06-22  1549  			ret = -EFAULT;
ea7fc1bb1cd1b9 arch/arm64/kvm/mmu.c Steven Price        2021-06-21  1550  			goto out_unlock;
ea7fc1bb1cd1b9 arch/arm64/kvm/mmu.c Steven Price        2021-06-21  1551  		}
2dbf12ae132cc7 arch/arm64/kvm/mmu.c Catalin Marinas     2022-11-03  1552  	}
3f58bf63455588 virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1553  
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1554  	if (writable)
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1555  		prot |= KVM_PGTABLE_PROT_W;
a9c0e12ebee56e virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1556  
25aa28691bb960 arch/arm64/kvm/mmu.c Yanan Wang          2021-06-17  1557  	if (exec_fault)
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1558  		prot |= KVM_PGTABLE_PROT_X;
a9c0e12ebee56e virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1559  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1560  	if (device)
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1561  		prot |= KVM_PGTABLE_PROT_DEVICE;
d8569fba13850b arch/arm64/kvm/mmu.c Mark Rutland        2023-10-16  1562  	else if (cpus_have_final_cap(ARM64_HAS_CACHE_DIC))
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1563  		prot |= KVM_PGTABLE_PROT_X;
a15f693935a9f1 virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1564  
7d894834a30556 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1565  	/*
7d894834a30556 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1566  	 * Under the premise of getting a FSC_PERM fault, we just need to relax
7d894834a30556 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1567  	 * permissions only if vma_pagesize equals fault_granule. Otherwise,
7d894834a30556 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1568  	 * kvm_pgtable_stage2_map() should be called to change block size.
7d894834a30556 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1569  	 */
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28 @1570  	if (fault_is_perm && vma_pagesize == fault_granule)
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1571  		ret = kvm_pgtable_stage2_relax_perms(pgt, fault_ipa, prot);
1577cb5823cefd arch/arm64/kvm/mmu.c Oliver Upton        2022-11-07  1572  	else
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1573  		ret = kvm_pgtable_stage2_map(pgt, fault_ipa, vma_pagesize,
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1574  					     __pfn_to_phys(pfn), prot,
ddcadb297ce5cc arch/arm64/kvm/mmu.c Oliver Upton        2022-12-02  1575  					     memcache,
ddcadb297ce5cc arch/arm64/kvm/mmu.c Oliver Upton        2022-12-02  1576  					     KVM_PGTABLE_WALK_HANDLE_FAULT |
ddcadb297ce5cc arch/arm64/kvm/mmu.c Oliver Upton        2022-12-02  1577  					     KVM_PGTABLE_WALK_SHARED);
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall    2012-11-01  1578  
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1579  	/* Mark the page dirty only if the fault is handled successfully */
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1580  	if (writable && !ret) {
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1581  		kvm_set_pfn_dirty(pfn);
10ba2d17d29729 arch/arm64/kvm/mmu.c Gavin Shan          2021-03-16  1582  		mark_page_dirty_in_slot(kvm, memslot, gfn);
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1583  	}
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1584  
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1585  out_unlock:
f783ef1c0e82e4 arch/arm64/kvm/mmu.c Jing Zhang          2022-01-18  1586  	read_unlock(&kvm->mmu_lock);
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1587  	kvm_release_pfn_clean(pfn);
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1588  	return ret != -EAGAIN ? ret : 0;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1589  }
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1590  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

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

* arch/arm64/kvm/mmu.c:1570 user_mem_abort() error: uninitialized symbol 'fault_granule'.
@ 2024-10-17  4:22 kernel test robot
  0 siblings, 0 replies; 9+ messages in thread
From: kernel test robot @ 2024-10-17  4:22 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Ard Biesheuvel <ardb@kernel.org>
CC: Marc Zyngier <maz@kernel.org>

Hi Ard,

FYI, the error/warning was bisected to this commit, please ignore it if it's irrelevant.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   c964ced7726294d40913f2127c3f185a92cb4a41
commit: 11e5ea5242e38d44fcede879473566bb6d68f954 KVM: arm64: Use helpers to classify exception types reported via ESR
date:   11 months ago
:::::: branch date: 8 hours ago
:::::: commit date: 11 months ago
config: arm64-randconfig-r071-20241015 (https://download.01.org/0day-ci/archive/20241017/202410171233.IsDsnjf9-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 14.1.0

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@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202410171233.IsDsnjf9-lkp@intel.com/

smatch warnings:
arch/arm64/kvm/mmu.c:1570 user_mem_abort() error: uninitialized symbol 'fault_granule'.

vim +/fault_granule +1570 arch/arm64/kvm/mmu.c

ea7fc1bb1cd1b9 arch/arm64/kvm/mmu.c Steven Price        2021-06-21  1376  
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1377  static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
98047888bb9fd5 arch/arm/kvm/mmu.c   Christoffer Dall    2014-08-19  1378  			  struct kvm_memory_slot *memslot, unsigned long hva,
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1379  			  bool fault_is_perm)
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1380  {
ffd1b63a586096 arch/arm64/kvm/mmu.c Will Deacon         2020-09-30  1381  	int ret = 0;
6396b852e46e56 virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1382  	bool write_fault, writable, force_pte = false;
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1383  	bool exec_fault, mte_allowed;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1384  	bool device = false;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1385  	unsigned long mmu_seq;
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall    2012-11-01  1386  	struct kvm *kvm = vcpu->kvm;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1387  	struct kvm_mmu_memory_cache *memcache = &vcpu->arch.mmu_page_cache;
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall    2012-11-01  1388  	struct vm_area_struct *vma;
1559b7583ff6ed virt/kvm/arm/mmu.c   James Morse         2019-12-17  1389  	short vma_shift;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1390  	gfn_t gfn;
ba049e93aef7e8 arch/arm/kvm/mmu.c   Dan Williams        2016-01-15  1391  	kvm_pfn_t pfn;
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1392  	bool logging_active = memslot_is_logging(memslot);
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1393  	long vma_pagesize, fault_granule;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1394  	enum kvm_pgtable_prot prot = KVM_PGTABLE_PROT_R;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1395  	struct kvm_pgtable *pgt;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1396  
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1397  	if (fault_is_perm)
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1398  		fault_granule = kvm_vcpu_trap_get_perm_fault_granule(vcpu);
a7d079cea2dffb arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-09  1399  	write_fault = kvm_is_write_fault(vcpu);
c4ad98e4b72cb5 arch/arm64/kvm/mmu.c Marc Zyngier        2020-09-15  1400  	exec_fault = kvm_vcpu_trap_is_exec_fault(vcpu);
d0e22b4ac3ba23 virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1401  	VM_BUG_ON(write_fault && exec_fault);
d0e22b4ac3ba23 virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1402  
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1403  	if (fault_is_perm && !write_fault && !exec_fault) {
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1404  		kvm_err("Unexpected L2 read permission error\n");
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1405  		return -EFAULT;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1406  	}
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1407  
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1408  	/*
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1409  	 * Permission faults just need to update the existing leaf entry,
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1410  	 * and so normally don't require allocations from the memcache. The
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1411  	 * only exception to this is when dirty logging is enabled at runtime
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1412  	 * and a write fault needs to collapse a block entry into a table.
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1413  	 */
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1414  	if (!fault_is_perm || (logging_active && write_fault)) {
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1415  		ret = kvm_mmu_topup_memory_cache(memcache,
fe49fd940e2259 arch/arm64/kvm/mmu.c Marc Zyngier        2023-10-12  1416  						 kvm_mmu_cache_min_pages(vcpu->arch.hw_mmu));
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1417  		if (ret)
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1418  			return ret;
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1419  	}
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1420  
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1421  	/*
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1422  	 * Let's check if we will get back a huge page backed by hugetlbfs, or
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1423  	 * get block mapping for device MMIO region.
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1424  	 */
89154dd5313f77 arch/arm64/kvm/mmu.c Michel Lespinasse   2020-06-08  1425  	mmap_read_lock(current->mm);
09eef83a801512 arch/arm64/kvm/mmu.c Liam Howlett        2021-06-28  1426  	vma = vma_lookup(current->mm, hva);
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1427  	if (unlikely(!vma)) {
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1428  		kvm_err("Failed to find VMA for hva 0x%lx\n", hva);
89154dd5313f77 arch/arm64/kvm/mmu.c Michel Lespinasse   2020-06-08  1429  		mmap_read_unlock(current->mm);
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1430  		return -EFAULT;
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1431  	}
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1432  
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1433  	/*
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1434  	 * logging_active is guaranteed to never be true for VM_PFNMAP
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1435  	 * memslots.
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1436  	 */
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1437  	if (logging_active) {
a80868f3985548 virt/kvm/arm/mmu.c   Suzuki K Poulose    2019-03-12  1438  		force_pte = true;
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1439  		vma_shift = PAGE_SHIFT;
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1440  	} else {
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1441  		vma_shift = get_vma_page_shift(vma, hva);
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1442  	}
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1443  
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1444  	switch (vma_shift) {
faf000397e7f10 arch/arm64/kvm/mmu.c Gavin Shan          2020-11-03  1445  #ifndef __PAGETABLE_PMD_FOLDED
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1446  	case PUD_SHIFT:
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1447  		if (fault_supports_stage2_huge_mapping(memslot, hva, PUD_SIZE))
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1448  			break;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1449  		fallthrough;
faf000397e7f10 arch/arm64/kvm/mmu.c Gavin Shan          2020-11-03  1450  #endif
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1451  	case CONT_PMD_SHIFT:
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1452  		vma_shift = PMD_SHIFT;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1453  		fallthrough;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1454  	case PMD_SHIFT:
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1455  		if (fault_supports_stage2_huge_mapping(memslot, hva, PMD_SIZE))
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1456  			break;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1457  		fallthrough;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1458  	case CONT_PTE_SHIFT:
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1459  		vma_shift = PAGE_SHIFT;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1460  		force_pte = true;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1461  		fallthrough;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1462  	case PAGE_SHIFT:
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1463  		break;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1464  	default:
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1465  		WARN_ONCE(1, "Unknown vma_shift %d", vma_shift);
a80868f3985548 virt/kvm/arm/mmu.c   Suzuki K Poulose    2019-03-12  1466  	}
a80868f3985548 virt/kvm/arm/mmu.c   Suzuki K Poulose    2019-03-12  1467  
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1468  	vma_pagesize = 1UL << vma_shift;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1469  	if (vma_pagesize == PMD_SIZE || vma_pagesize == PUD_SIZE)
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1470  		fault_ipa &= ~(vma_pagesize - 1);
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1471  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1472  	gfn = fault_ipa >> PAGE_SHIFT;
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1473  	mte_allowed = kvm_vma_mte_allowed(vma);
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1474  
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1475  	/* Don't use the VMA after the unlock -- it may have vanished */
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1476  	vma = NULL;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1477  
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1478  	/*
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1479  	 * Read mmu_invalidate_seq so that KVM can detect if the results of
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1480  	 * vma_lookup() or __gfn_to_pfn_memslot() become stale prior to
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1481  	 * acquiring kvm->mmu_lock.
10ba2d17d29729 arch/arm64/kvm/mmu.c Gavin Shan          2021-03-16  1482  	 *
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1483  	 * Rely on mmap_read_unlock() for an implicit smp_rmb(), which pairs
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1484  	 * with the smp_wmb() in kvm_mmu_invalidate_end().
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1485  	 */
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1486  	mmu_seq = vcpu->kvm->mmu_invalidate_seq;
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1487  	mmap_read_unlock(current->mm);
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1488  
c8b88b332bedf4 arch/arm64/kvm/mmu.c Peter Xu            2022-10-11  1489  	pfn = __gfn_to_pfn_memslot(memslot, gfn, false, false, NULL,
10ba2d17d29729 arch/arm64/kvm/mmu.c Gavin Shan          2021-03-16  1490  				   write_fault, &writable, NULL);
196f878a7ac2e7 virt/kvm/arm/mmu.c   James Morse         2017-06-20  1491  	if (pfn == KVM_PFN_ERR_HWPOISON) {
1559b7583ff6ed virt/kvm/arm/mmu.c   James Morse         2019-12-17  1492  		kvm_send_hwpoison_signal(hva, vma_shift);
196f878a7ac2e7 virt/kvm/arm/mmu.c   James Morse         2017-06-20  1493  		return 0;
196f878a7ac2e7 virt/kvm/arm/mmu.c   James Morse         2017-06-20  1494  	}
9ac715954682b2 arch/arm/kvm/mmu.c   Christoffer Dall    2016-08-17  1495  	if (is_error_noslot_pfn(pfn))
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1496  		return -EFAULT;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1497  
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1498  	if (kvm_is_device_pfn(pfn)) {
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1499  		/*
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1500  		 * If the page was identified as device early by looking at
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1501  		 * the VMA flags, vma_pagesize is already representing the
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1502  		 * largest quantity we can map.  If instead it was mapped
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1503  		 * via gfn_to_pfn_prot(), vma_pagesize is set to PAGE_SIZE
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1504  		 * and must not be upgraded.
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1505  		 *
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1506  		 * In both cases, we don't let transparent_hugepage_adjust()
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1507  		 * change things at the last minute.
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1508  		 */
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1509  		device = true;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1510  	} else if (logging_active && !write_fault) {
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1511  		/*
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1512  		 * Only actually map the page as writable if this was a write
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1513  		 * fault.
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1514  		 */
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1515  		writable = false;
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1516  	}
b88657674d39fc arch/arm/kvm/mmu.c   Kim Phillips        2014-06-26  1517  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1518  	if (exec_fault && device)
6d674e28f642e3 virt/kvm/arm/mmu.c   Marc Zyngier        2019-12-11  1519  		return -ENOEXEC;
6d674e28f642e3 virt/kvm/arm/mmu.c   Marc Zyngier        2019-12-11  1520  
f783ef1c0e82e4 arch/arm64/kvm/mmu.c Jing Zhang          2022-01-18  1521  	read_lock(&kvm->mmu_lock);
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1522  	pgt = vcpu->arch.hw_mmu->pgt;
20ec3ebd707c77 arch/arm64/kvm/mmu.c Chao Peng           2022-08-16  1523  	if (mmu_invalidate_retry(kvm, mmu_seq))
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1524  		goto out_unlock;
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1525  
3f58bf63455588 virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1526  	/*
0529c9021252a5 arch/arm64/kvm/mmu.c Suzuki K Poulose    2020-05-07  1527  	 * If we are not forced to use page mapping, check if we are
0529c9021252a5 arch/arm64/kvm/mmu.c Suzuki K Poulose    2020-05-07  1528  	 * backed by a THP and thus use block mapping if possible.
3f58bf63455588 virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1529  	 */
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1530  	if (vma_pagesize == PAGE_SIZE && !(force_pte || device)) {
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1531  		if (fault_is_perm && fault_granule > PAGE_SIZE)
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1532  			vma_pagesize = fault_granule;
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1533  		else
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1534  			vma_pagesize = transparent_hugepage_adjust(kvm, memslot,
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1535  								   hva, &pfn,
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1536  								   &fault_ipa);
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1537  
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1538  		if (vma_pagesize < 0) {
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1539  			ret = vma_pagesize;
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1540  			goto out_unlock;
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1541  		}
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1542  	}
a9c0e12ebee56e virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1543  
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1544  	if (!fault_is_perm && !device && kvm_has_mte(kvm)) {
d89585fbb30869 arch/arm64/kvm/mmu.c Peter Collingbourne 2022-11-03  1545  		/* Check the VMM hasn't introduced a new disallowed VMA */
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1546  		if (mte_allowed) {
2dbf12ae132cc7 arch/arm64/kvm/mmu.c Catalin Marinas     2022-11-03  1547  			sanitise_mte_tags(kvm, pfn, vma_pagesize);
2dbf12ae132cc7 arch/arm64/kvm/mmu.c Catalin Marinas     2022-11-03  1548  		} else {
9f03db6673598f arch/arm64/kvm/mmu.c Marc Zyngier        2021-06-22  1549  			ret = -EFAULT;
ea7fc1bb1cd1b9 arch/arm64/kvm/mmu.c Steven Price        2021-06-21  1550  			goto out_unlock;
ea7fc1bb1cd1b9 arch/arm64/kvm/mmu.c Steven Price        2021-06-21  1551  		}
2dbf12ae132cc7 arch/arm64/kvm/mmu.c Catalin Marinas     2022-11-03  1552  	}
3f58bf63455588 virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1553  
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1554  	if (writable)
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1555  		prot |= KVM_PGTABLE_PROT_W;
a9c0e12ebee56e virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1556  
25aa28691bb960 arch/arm64/kvm/mmu.c Yanan Wang          2021-06-17  1557  	if (exec_fault)
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1558  		prot |= KVM_PGTABLE_PROT_X;
a9c0e12ebee56e virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1559  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1560  	if (device)
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1561  		prot |= KVM_PGTABLE_PROT_DEVICE;
d8569fba13850b arch/arm64/kvm/mmu.c Mark Rutland        2023-10-16  1562  	else if (cpus_have_final_cap(ARM64_HAS_CACHE_DIC))
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1563  		prot |= KVM_PGTABLE_PROT_X;
a15f693935a9f1 virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1564  
7d894834a30556 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1565  	/*
7d894834a30556 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1566  	 * Under the premise of getting a FSC_PERM fault, we just need to relax
7d894834a30556 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1567  	 * permissions only if vma_pagesize equals fault_granule. Otherwise,
7d894834a30556 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1568  	 * kvm_pgtable_stage2_map() should be called to change block size.
7d894834a30556 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1569  	 */
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28 @1570  	if (fault_is_perm && vma_pagesize == fault_granule)
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1571  		ret = kvm_pgtable_stage2_relax_perms(pgt, fault_ipa, prot);
1577cb5823cefd arch/arm64/kvm/mmu.c Oliver Upton        2022-11-07  1572  	else
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1573  		ret = kvm_pgtable_stage2_map(pgt, fault_ipa, vma_pagesize,
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1574  					     __pfn_to_phys(pfn), prot,
ddcadb297ce5cc arch/arm64/kvm/mmu.c Oliver Upton        2022-12-02  1575  					     memcache,
ddcadb297ce5cc arch/arm64/kvm/mmu.c Oliver Upton        2022-12-02  1576  					     KVM_PGTABLE_WALK_HANDLE_FAULT |
ddcadb297ce5cc arch/arm64/kvm/mmu.c Oliver Upton        2022-12-02  1577  					     KVM_PGTABLE_WALK_SHARED);
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall    2012-11-01  1578  
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1579  	/* Mark the page dirty only if the fault is handled successfully */
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1580  	if (writable && !ret) {
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1581  		kvm_set_pfn_dirty(pfn);
10ba2d17d29729 arch/arm64/kvm/mmu.c Gavin Shan          2021-03-16  1582  		mark_page_dirty_in_slot(kvm, memslot, gfn);
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1583  	}
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1584  
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1585  out_unlock:
f783ef1c0e82e4 arch/arm64/kvm/mmu.c Jing Zhang          2022-01-18  1586  	read_unlock(&kvm->mmu_lock);
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1587  	kvm_release_pfn_clean(pfn);
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1588  	return ret != -EAGAIN ? ret : 0;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1589  }
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1590  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

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

* arch/arm64/kvm/mmu.c:1570 user_mem_abort() error: uninitialized symbol 'fault_granule'.
@ 2024-10-18  0:18 kernel test robot
  0 siblings, 0 replies; 9+ messages in thread
From: kernel test robot @ 2024-10-18  0:18 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Ard Biesheuvel <ardb@kernel.org>
CC: Marc Zyngier <maz@kernel.org>

Hi Ard,

FYI, the error/warning was bisected to this commit, please ignore it if it's irrelevant.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   6efbea77b390604a7be7364583e19cd2d6a1291b
commit: 11e5ea5242e38d44fcede879473566bb6d68f954 KVM: arm64: Use helpers to classify exception types reported via ESR
date:   11 months ago
:::::: branch date: 7 hours ago
:::::: commit date: 11 months ago
config: arm64-randconfig-r071-20241015 (https://download.01.org/0day-ci/archive/20241018/202410180813.ACTn44ih-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 14.1.0

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@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202410180813.ACTn44ih-lkp@intel.com/

smatch warnings:
arch/arm64/kvm/mmu.c:1570 user_mem_abort() error: uninitialized symbol 'fault_granule'.

vim +/fault_granule +1570 arch/arm64/kvm/mmu.c

ea7fc1bb1cd1b9 arch/arm64/kvm/mmu.c Steven Price        2021-06-21  1376  
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1377  static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
98047888bb9fd5 arch/arm/kvm/mmu.c   Christoffer Dall    2014-08-19  1378  			  struct kvm_memory_slot *memslot, unsigned long hva,
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1379  			  bool fault_is_perm)
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1380  {
ffd1b63a586096 arch/arm64/kvm/mmu.c Will Deacon         2020-09-30  1381  	int ret = 0;
6396b852e46e56 virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1382  	bool write_fault, writable, force_pte = false;
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1383  	bool exec_fault, mte_allowed;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1384  	bool device = false;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1385  	unsigned long mmu_seq;
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall    2012-11-01  1386  	struct kvm *kvm = vcpu->kvm;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1387  	struct kvm_mmu_memory_cache *memcache = &vcpu->arch.mmu_page_cache;
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall    2012-11-01  1388  	struct vm_area_struct *vma;
1559b7583ff6ed virt/kvm/arm/mmu.c   James Morse         2019-12-17  1389  	short vma_shift;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1390  	gfn_t gfn;
ba049e93aef7e8 arch/arm/kvm/mmu.c   Dan Williams        2016-01-15  1391  	kvm_pfn_t pfn;
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1392  	bool logging_active = memslot_is_logging(memslot);
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1393  	long vma_pagesize, fault_granule;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1394  	enum kvm_pgtable_prot prot = KVM_PGTABLE_PROT_R;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1395  	struct kvm_pgtable *pgt;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1396  
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1397  	if (fault_is_perm)
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1398  		fault_granule = kvm_vcpu_trap_get_perm_fault_granule(vcpu);
a7d079cea2dffb arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-09  1399  	write_fault = kvm_is_write_fault(vcpu);
c4ad98e4b72cb5 arch/arm64/kvm/mmu.c Marc Zyngier        2020-09-15  1400  	exec_fault = kvm_vcpu_trap_is_exec_fault(vcpu);
d0e22b4ac3ba23 virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1401  	VM_BUG_ON(write_fault && exec_fault);
d0e22b4ac3ba23 virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1402  
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1403  	if (fault_is_perm && !write_fault && !exec_fault) {
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1404  		kvm_err("Unexpected L2 read permission error\n");
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1405  		return -EFAULT;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1406  	}
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1407  
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1408  	/*
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1409  	 * Permission faults just need to update the existing leaf entry,
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1410  	 * and so normally don't require allocations from the memcache. The
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1411  	 * only exception to this is when dirty logging is enabled at runtime
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1412  	 * and a write fault needs to collapse a block entry into a table.
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1413  	 */
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1414  	if (!fault_is_perm || (logging_active && write_fault)) {
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1415  		ret = kvm_mmu_topup_memory_cache(memcache,
fe49fd940e2259 arch/arm64/kvm/mmu.c Marc Zyngier        2023-10-12  1416  						 kvm_mmu_cache_min_pages(vcpu->arch.hw_mmu));
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1417  		if (ret)
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1418  			return ret;
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1419  	}
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1420  
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1421  	/*
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1422  	 * Let's check if we will get back a huge page backed by hugetlbfs, or
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1423  	 * get block mapping for device MMIO region.
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1424  	 */
89154dd5313f77 arch/arm64/kvm/mmu.c Michel Lespinasse   2020-06-08  1425  	mmap_read_lock(current->mm);
09eef83a801512 arch/arm64/kvm/mmu.c Liam Howlett        2021-06-28  1426  	vma = vma_lookup(current->mm, hva);
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1427  	if (unlikely(!vma)) {
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1428  		kvm_err("Failed to find VMA for hva 0x%lx\n", hva);
89154dd5313f77 arch/arm64/kvm/mmu.c Michel Lespinasse   2020-06-08  1429  		mmap_read_unlock(current->mm);
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1430  		return -EFAULT;
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1431  	}
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1432  
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1433  	/*
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1434  	 * logging_active is guaranteed to never be true for VM_PFNMAP
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1435  	 * memslots.
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1436  	 */
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1437  	if (logging_active) {
a80868f3985548 virt/kvm/arm/mmu.c   Suzuki K Poulose    2019-03-12  1438  		force_pte = true;
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1439  		vma_shift = PAGE_SHIFT;
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1440  	} else {
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1441  		vma_shift = get_vma_page_shift(vma, hva);
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1442  	}
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1443  
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1444  	switch (vma_shift) {
faf000397e7f10 arch/arm64/kvm/mmu.c Gavin Shan          2020-11-03  1445  #ifndef __PAGETABLE_PMD_FOLDED
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1446  	case PUD_SHIFT:
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1447  		if (fault_supports_stage2_huge_mapping(memslot, hva, PUD_SIZE))
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1448  			break;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1449  		fallthrough;
faf000397e7f10 arch/arm64/kvm/mmu.c Gavin Shan          2020-11-03  1450  #endif
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1451  	case CONT_PMD_SHIFT:
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1452  		vma_shift = PMD_SHIFT;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1453  		fallthrough;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1454  	case PMD_SHIFT:
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1455  		if (fault_supports_stage2_huge_mapping(memslot, hva, PMD_SIZE))
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1456  			break;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1457  		fallthrough;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1458  	case CONT_PTE_SHIFT:
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1459  		vma_shift = PAGE_SHIFT;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1460  		force_pte = true;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1461  		fallthrough;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1462  	case PAGE_SHIFT:
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1463  		break;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1464  	default:
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1465  		WARN_ONCE(1, "Unknown vma_shift %d", vma_shift);
a80868f3985548 virt/kvm/arm/mmu.c   Suzuki K Poulose    2019-03-12  1466  	}
a80868f3985548 virt/kvm/arm/mmu.c   Suzuki K Poulose    2019-03-12  1467  
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1468  	vma_pagesize = 1UL << vma_shift;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1469  	if (vma_pagesize == PMD_SIZE || vma_pagesize == PUD_SIZE)
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1470  		fault_ipa &= ~(vma_pagesize - 1);
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1471  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1472  	gfn = fault_ipa >> PAGE_SHIFT;
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1473  	mte_allowed = kvm_vma_mte_allowed(vma);
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1474  
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1475  	/* Don't use the VMA after the unlock -- it may have vanished */
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1476  	vma = NULL;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1477  
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1478  	/*
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1479  	 * Read mmu_invalidate_seq so that KVM can detect if the results of
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1480  	 * vma_lookup() or __gfn_to_pfn_memslot() become stale prior to
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1481  	 * acquiring kvm->mmu_lock.
10ba2d17d29729 arch/arm64/kvm/mmu.c Gavin Shan          2021-03-16  1482  	 *
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1483  	 * Rely on mmap_read_unlock() for an implicit smp_rmb(), which pairs
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1484  	 * with the smp_wmb() in kvm_mmu_invalidate_end().
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1485  	 */
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1486  	mmu_seq = vcpu->kvm->mmu_invalidate_seq;
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1487  	mmap_read_unlock(current->mm);
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1488  
c8b88b332bedf4 arch/arm64/kvm/mmu.c Peter Xu            2022-10-11  1489  	pfn = __gfn_to_pfn_memslot(memslot, gfn, false, false, NULL,
10ba2d17d29729 arch/arm64/kvm/mmu.c Gavin Shan          2021-03-16  1490  				   write_fault, &writable, NULL);
196f878a7ac2e7 virt/kvm/arm/mmu.c   James Morse         2017-06-20  1491  	if (pfn == KVM_PFN_ERR_HWPOISON) {
1559b7583ff6ed virt/kvm/arm/mmu.c   James Morse         2019-12-17  1492  		kvm_send_hwpoison_signal(hva, vma_shift);
196f878a7ac2e7 virt/kvm/arm/mmu.c   James Morse         2017-06-20  1493  		return 0;
196f878a7ac2e7 virt/kvm/arm/mmu.c   James Morse         2017-06-20  1494  	}
9ac715954682b2 arch/arm/kvm/mmu.c   Christoffer Dall    2016-08-17  1495  	if (is_error_noslot_pfn(pfn))
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1496  		return -EFAULT;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1497  
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1498  	if (kvm_is_device_pfn(pfn)) {
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1499  		/*
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1500  		 * If the page was identified as device early by looking at
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1501  		 * the VMA flags, vma_pagesize is already representing the
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1502  		 * largest quantity we can map.  If instead it was mapped
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1503  		 * via gfn_to_pfn_prot(), vma_pagesize is set to PAGE_SIZE
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1504  		 * and must not be upgraded.
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1505  		 *
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1506  		 * In both cases, we don't let transparent_hugepage_adjust()
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1507  		 * change things at the last minute.
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1508  		 */
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1509  		device = true;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1510  	} else if (logging_active && !write_fault) {
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1511  		/*
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1512  		 * Only actually map the page as writable if this was a write
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1513  		 * fault.
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1514  		 */
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1515  		writable = false;
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1516  	}
b88657674d39fc arch/arm/kvm/mmu.c   Kim Phillips        2014-06-26  1517  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1518  	if (exec_fault && device)
6d674e28f642e3 virt/kvm/arm/mmu.c   Marc Zyngier        2019-12-11  1519  		return -ENOEXEC;
6d674e28f642e3 virt/kvm/arm/mmu.c   Marc Zyngier        2019-12-11  1520  
f783ef1c0e82e4 arch/arm64/kvm/mmu.c Jing Zhang          2022-01-18  1521  	read_lock(&kvm->mmu_lock);
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1522  	pgt = vcpu->arch.hw_mmu->pgt;
20ec3ebd707c77 arch/arm64/kvm/mmu.c Chao Peng           2022-08-16  1523  	if (mmu_invalidate_retry(kvm, mmu_seq))
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1524  		goto out_unlock;
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1525  
3f58bf63455588 virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1526  	/*
0529c9021252a5 arch/arm64/kvm/mmu.c Suzuki K Poulose    2020-05-07  1527  	 * If we are not forced to use page mapping, check if we are
0529c9021252a5 arch/arm64/kvm/mmu.c Suzuki K Poulose    2020-05-07  1528  	 * backed by a THP and thus use block mapping if possible.
3f58bf63455588 virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1529  	 */
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1530  	if (vma_pagesize == PAGE_SIZE && !(force_pte || device)) {
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1531  		if (fault_is_perm && fault_granule > PAGE_SIZE)
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1532  			vma_pagesize = fault_granule;
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1533  		else
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1534  			vma_pagesize = transparent_hugepage_adjust(kvm, memslot,
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1535  								   hva, &pfn,
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1536  								   &fault_ipa);
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1537  
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1538  		if (vma_pagesize < 0) {
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1539  			ret = vma_pagesize;
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1540  			goto out_unlock;
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1541  		}
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1542  	}
a9c0e12ebee56e virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1543  
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1544  	if (!fault_is_perm && !device && kvm_has_mte(kvm)) {
d89585fbb30869 arch/arm64/kvm/mmu.c Peter Collingbourne 2022-11-03  1545  		/* Check the VMM hasn't introduced a new disallowed VMA */
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1546  		if (mte_allowed) {
2dbf12ae132cc7 arch/arm64/kvm/mmu.c Catalin Marinas     2022-11-03  1547  			sanitise_mte_tags(kvm, pfn, vma_pagesize);
2dbf12ae132cc7 arch/arm64/kvm/mmu.c Catalin Marinas     2022-11-03  1548  		} else {
9f03db6673598f arch/arm64/kvm/mmu.c Marc Zyngier        2021-06-22  1549  			ret = -EFAULT;
ea7fc1bb1cd1b9 arch/arm64/kvm/mmu.c Steven Price        2021-06-21  1550  			goto out_unlock;
ea7fc1bb1cd1b9 arch/arm64/kvm/mmu.c Steven Price        2021-06-21  1551  		}
2dbf12ae132cc7 arch/arm64/kvm/mmu.c Catalin Marinas     2022-11-03  1552  	}
3f58bf63455588 virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1553  
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1554  	if (writable)
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1555  		prot |= KVM_PGTABLE_PROT_W;
a9c0e12ebee56e virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1556  
25aa28691bb960 arch/arm64/kvm/mmu.c Yanan Wang          2021-06-17  1557  	if (exec_fault)
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1558  		prot |= KVM_PGTABLE_PROT_X;
a9c0e12ebee56e virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1559  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1560  	if (device)
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1561  		prot |= KVM_PGTABLE_PROT_DEVICE;
d8569fba13850b arch/arm64/kvm/mmu.c Mark Rutland        2023-10-16  1562  	else if (cpus_have_final_cap(ARM64_HAS_CACHE_DIC))
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1563  		prot |= KVM_PGTABLE_PROT_X;
a15f693935a9f1 virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1564  
7d894834a30556 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1565  	/*
7d894834a30556 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1566  	 * Under the premise of getting a FSC_PERM fault, we just need to relax
7d894834a30556 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1567  	 * permissions only if vma_pagesize equals fault_granule. Otherwise,
7d894834a30556 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1568  	 * kvm_pgtable_stage2_map() should be called to change block size.
7d894834a30556 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1569  	 */
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28 @1570  	if (fault_is_perm && vma_pagesize == fault_granule)
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1571  		ret = kvm_pgtable_stage2_relax_perms(pgt, fault_ipa, prot);
1577cb5823cefd arch/arm64/kvm/mmu.c Oliver Upton        2022-11-07  1572  	else
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1573  		ret = kvm_pgtable_stage2_map(pgt, fault_ipa, vma_pagesize,
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1574  					     __pfn_to_phys(pfn), prot,
ddcadb297ce5cc arch/arm64/kvm/mmu.c Oliver Upton        2022-12-02  1575  					     memcache,
ddcadb297ce5cc arch/arm64/kvm/mmu.c Oliver Upton        2022-12-02  1576  					     KVM_PGTABLE_WALK_HANDLE_FAULT |
ddcadb297ce5cc arch/arm64/kvm/mmu.c Oliver Upton        2022-12-02  1577  					     KVM_PGTABLE_WALK_SHARED);
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall    2012-11-01  1578  
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1579  	/* Mark the page dirty only if the fault is handled successfully */
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1580  	if (writable && !ret) {
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1581  		kvm_set_pfn_dirty(pfn);
10ba2d17d29729 arch/arm64/kvm/mmu.c Gavin Shan          2021-03-16  1582  		mark_page_dirty_in_slot(kvm, memslot, gfn);
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1583  	}
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1584  
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1585  out_unlock:
f783ef1c0e82e4 arch/arm64/kvm/mmu.c Jing Zhang          2022-01-18  1586  	read_unlock(&kvm->mmu_lock);
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1587  	kvm_release_pfn_clean(pfn);
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1588  	return ret != -EAGAIN ? ret : 0;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1589  }
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1590  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

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

* arch/arm64/kvm/mmu.c:1570 user_mem_abort() error: uninitialized symbol 'fault_granule'.
@ 2024-10-18 22:52 kernel test robot
  0 siblings, 0 replies; 9+ messages in thread
From: kernel test robot @ 2024-10-18 22:52 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Ard Biesheuvel <ardb@kernel.org>
CC: Marc Zyngier <maz@kernel.org>

Hi Ard,

FYI, the error/warning was bisected to this commit, please ignore it if it's irrelevant.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   b04ae0f45168973edb658ac2385045ac13c5aca7
commit: 11e5ea5242e38d44fcede879473566bb6d68f954 KVM: arm64: Use helpers to classify exception types reported via ESR
date:   11 months ago
:::::: branch date: 4 hours ago
:::::: commit date: 11 months ago
config: arm64-randconfig-r071-20241015 (https://download.01.org/0day-ci/archive/20241019/202410190636.tP4RGFhE-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 14.1.0

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@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202410190636.tP4RGFhE-lkp@intel.com/

smatch warnings:
arch/arm64/kvm/mmu.c:1570 user_mem_abort() error: uninitialized symbol 'fault_granule'.

vim +/fault_granule +1570 arch/arm64/kvm/mmu.c

ea7fc1bb1cd1b9 arch/arm64/kvm/mmu.c Steven Price        2021-06-21  1376  
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1377  static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
98047888bb9fd5 arch/arm/kvm/mmu.c   Christoffer Dall    2014-08-19  1378  			  struct kvm_memory_slot *memslot, unsigned long hva,
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1379  			  bool fault_is_perm)
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1380  {
ffd1b63a586096 arch/arm64/kvm/mmu.c Will Deacon         2020-09-30  1381  	int ret = 0;
6396b852e46e56 virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1382  	bool write_fault, writable, force_pte = false;
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1383  	bool exec_fault, mte_allowed;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1384  	bool device = false;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1385  	unsigned long mmu_seq;
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall    2012-11-01  1386  	struct kvm *kvm = vcpu->kvm;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1387  	struct kvm_mmu_memory_cache *memcache = &vcpu->arch.mmu_page_cache;
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall    2012-11-01  1388  	struct vm_area_struct *vma;
1559b7583ff6ed virt/kvm/arm/mmu.c   James Morse         2019-12-17  1389  	short vma_shift;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1390  	gfn_t gfn;
ba049e93aef7e8 arch/arm/kvm/mmu.c   Dan Williams        2016-01-15  1391  	kvm_pfn_t pfn;
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1392  	bool logging_active = memslot_is_logging(memslot);
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1393  	long vma_pagesize, fault_granule;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1394  	enum kvm_pgtable_prot prot = KVM_PGTABLE_PROT_R;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1395  	struct kvm_pgtable *pgt;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1396  
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1397  	if (fault_is_perm)
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1398  		fault_granule = kvm_vcpu_trap_get_perm_fault_granule(vcpu);
a7d079cea2dffb arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-09  1399  	write_fault = kvm_is_write_fault(vcpu);
c4ad98e4b72cb5 arch/arm64/kvm/mmu.c Marc Zyngier        2020-09-15  1400  	exec_fault = kvm_vcpu_trap_is_exec_fault(vcpu);
d0e22b4ac3ba23 virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1401  	VM_BUG_ON(write_fault && exec_fault);
d0e22b4ac3ba23 virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1402  
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1403  	if (fault_is_perm && !write_fault && !exec_fault) {
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1404  		kvm_err("Unexpected L2 read permission error\n");
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1405  		return -EFAULT;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1406  	}
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1407  
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1408  	/*
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1409  	 * Permission faults just need to update the existing leaf entry,
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1410  	 * and so normally don't require allocations from the memcache. The
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1411  	 * only exception to this is when dirty logging is enabled at runtime
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1412  	 * and a write fault needs to collapse a block entry into a table.
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1413  	 */
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1414  	if (!fault_is_perm || (logging_active && write_fault)) {
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1415  		ret = kvm_mmu_topup_memory_cache(memcache,
fe49fd940e2259 arch/arm64/kvm/mmu.c Marc Zyngier        2023-10-12  1416  						 kvm_mmu_cache_min_pages(vcpu->arch.hw_mmu));
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1417  		if (ret)
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1418  			return ret;
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1419  	}
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1420  
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1421  	/*
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1422  	 * Let's check if we will get back a huge page backed by hugetlbfs, or
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1423  	 * get block mapping for device MMIO region.
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1424  	 */
89154dd5313f77 arch/arm64/kvm/mmu.c Michel Lespinasse   2020-06-08  1425  	mmap_read_lock(current->mm);
09eef83a801512 arch/arm64/kvm/mmu.c Liam Howlett        2021-06-28  1426  	vma = vma_lookup(current->mm, hva);
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1427  	if (unlikely(!vma)) {
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1428  		kvm_err("Failed to find VMA for hva 0x%lx\n", hva);
89154dd5313f77 arch/arm64/kvm/mmu.c Michel Lespinasse   2020-06-08  1429  		mmap_read_unlock(current->mm);
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1430  		return -EFAULT;
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1431  	}
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1432  
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1433  	/*
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1434  	 * logging_active is guaranteed to never be true for VM_PFNMAP
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1435  	 * memslots.
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1436  	 */
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1437  	if (logging_active) {
a80868f3985548 virt/kvm/arm/mmu.c   Suzuki K Poulose    2019-03-12  1438  		force_pte = true;
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1439  		vma_shift = PAGE_SHIFT;
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1440  	} else {
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1441  		vma_shift = get_vma_page_shift(vma, hva);
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1442  	}
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1443  
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1444  	switch (vma_shift) {
faf000397e7f10 arch/arm64/kvm/mmu.c Gavin Shan          2020-11-03  1445  #ifndef __PAGETABLE_PMD_FOLDED
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1446  	case PUD_SHIFT:
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1447  		if (fault_supports_stage2_huge_mapping(memslot, hva, PUD_SIZE))
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1448  			break;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1449  		fallthrough;
faf000397e7f10 arch/arm64/kvm/mmu.c Gavin Shan          2020-11-03  1450  #endif
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1451  	case CONT_PMD_SHIFT:
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1452  		vma_shift = PMD_SHIFT;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1453  		fallthrough;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1454  	case PMD_SHIFT:
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1455  		if (fault_supports_stage2_huge_mapping(memslot, hva, PMD_SIZE))
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1456  			break;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1457  		fallthrough;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1458  	case CONT_PTE_SHIFT:
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1459  		vma_shift = PAGE_SHIFT;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1460  		force_pte = true;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1461  		fallthrough;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1462  	case PAGE_SHIFT:
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1463  		break;
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1464  	default:
2f40c46021bbb3 arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1465  		WARN_ONCE(1, "Unknown vma_shift %d", vma_shift);
a80868f3985548 virt/kvm/arm/mmu.c   Suzuki K Poulose    2019-03-12  1466  	}
a80868f3985548 virt/kvm/arm/mmu.c   Suzuki K Poulose    2019-03-12  1467  
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1468  	vma_pagesize = 1UL << vma_shift;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1469  	if (vma_pagesize == PMD_SIZE || vma_pagesize == PUD_SIZE)
523b3999e5f620 arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1470  		fault_ipa &= ~(vma_pagesize - 1);
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1471  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1472  	gfn = fault_ipa >> PAGE_SHIFT;
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1473  	mte_allowed = kvm_vma_mte_allowed(vma);
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1474  
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1475  	/* Don't use the VMA after the unlock -- it may have vanished */
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1476  	vma = NULL;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1477  
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1478  	/*
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1479  	 * Read mmu_invalidate_seq so that KVM can detect if the results of
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1480  	 * vma_lookup() or __gfn_to_pfn_memslot() become stale prior to
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1481  	 * acquiring kvm->mmu_lock.
10ba2d17d29729 arch/arm64/kvm/mmu.c Gavin Shan          2021-03-16  1482  	 *
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1483  	 * Rely on mmap_read_unlock() for an implicit smp_rmb(), which pairs
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1484  	 * with the smp_wmb() in kvm_mmu_invalidate_end().
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1485  	 */
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1486  	mmu_seq = vcpu->kvm->mmu_invalidate_seq;
13ec9308a85702 arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1487  	mmap_read_unlock(current->mm);
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1488  
c8b88b332bedf4 arch/arm64/kvm/mmu.c Peter Xu            2022-10-11  1489  	pfn = __gfn_to_pfn_memslot(memslot, gfn, false, false, NULL,
10ba2d17d29729 arch/arm64/kvm/mmu.c Gavin Shan          2021-03-16  1490  				   write_fault, &writable, NULL);
196f878a7ac2e7 virt/kvm/arm/mmu.c   James Morse         2017-06-20  1491  	if (pfn == KVM_PFN_ERR_HWPOISON) {
1559b7583ff6ed virt/kvm/arm/mmu.c   James Morse         2019-12-17  1492  		kvm_send_hwpoison_signal(hva, vma_shift);
196f878a7ac2e7 virt/kvm/arm/mmu.c   James Morse         2017-06-20  1493  		return 0;
196f878a7ac2e7 virt/kvm/arm/mmu.c   James Morse         2017-06-20  1494  	}
9ac715954682b2 arch/arm/kvm/mmu.c   Christoffer Dall    2016-08-17  1495  	if (is_error_noslot_pfn(pfn))
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1496  		return -EFAULT;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1497  
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1498  	if (kvm_is_device_pfn(pfn)) {
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1499  		/*
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1500  		 * If the page was identified as device early by looking at
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1501  		 * the VMA flags, vma_pagesize is already representing the
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1502  		 * largest quantity we can map.  If instead it was mapped
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1503  		 * via gfn_to_pfn_prot(), vma_pagesize is set to PAGE_SIZE
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1504  		 * and must not be upgraded.
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1505  		 *
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1506  		 * In both cases, we don't let transparent_hugepage_adjust()
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1507  		 * change things at the last minute.
2aa53d68cee660 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1508  		 */
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1509  		device = true;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1510  	} else if (logging_active && !write_fault) {
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1511  		/*
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1512  		 * Only actually map the page as writable if this was a write
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1513  		 * fault.
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1514  		 */
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1515  		writable = false;
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1516  	}
b88657674d39fc arch/arm/kvm/mmu.c   Kim Phillips        2014-06-26  1517  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1518  	if (exec_fault && device)
6d674e28f642e3 virt/kvm/arm/mmu.c   Marc Zyngier        2019-12-11  1519  		return -ENOEXEC;
6d674e28f642e3 virt/kvm/arm/mmu.c   Marc Zyngier        2019-12-11  1520  
f783ef1c0e82e4 arch/arm64/kvm/mmu.c Jing Zhang          2022-01-18  1521  	read_lock(&kvm->mmu_lock);
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1522  	pgt = vcpu->arch.hw_mmu->pgt;
20ec3ebd707c77 arch/arm64/kvm/mmu.c Chao Peng           2022-08-16  1523  	if (mmu_invalidate_retry(kvm, mmu_seq))
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1524  		goto out_unlock;
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1525  
3f58bf63455588 virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1526  	/*
0529c9021252a5 arch/arm64/kvm/mmu.c Suzuki K Poulose    2020-05-07  1527  	 * If we are not forced to use page mapping, check if we are
0529c9021252a5 arch/arm64/kvm/mmu.c Suzuki K Poulose    2020-05-07  1528  	 * backed by a THP and thus use block mapping if possible.
3f58bf63455588 virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1529  	 */
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1530  	if (vma_pagesize == PAGE_SIZE && !(force_pte || device)) {
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1531  		if (fault_is_perm && fault_granule > PAGE_SIZE)
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1532  			vma_pagesize = fault_granule;
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1533  		else
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1534  			vma_pagesize = transparent_hugepage_adjust(kvm, memslot,
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1535  								   hva, &pfn,
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1536  								   &fault_ipa);
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1537  
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1538  		if (vma_pagesize < 0) {
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1539  			ret = vma_pagesize;
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1540  			goto out_unlock;
e86fc1a3a3e9b4 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1541  		}
f2cc327303b13a arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1542  	}
a9c0e12ebee56e virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1543  
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1544  	if (!fault_is_perm && !device && kvm_has_mte(kvm)) {
d89585fbb30869 arch/arm64/kvm/mmu.c Peter Collingbourne 2022-11-03  1545  		/* Check the VMM hasn't introduced a new disallowed VMA */
8c2e8ac8ad4be6 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1546  		if (mte_allowed) {
2dbf12ae132cc7 arch/arm64/kvm/mmu.c Catalin Marinas     2022-11-03  1547  			sanitise_mte_tags(kvm, pfn, vma_pagesize);
2dbf12ae132cc7 arch/arm64/kvm/mmu.c Catalin Marinas     2022-11-03  1548  		} else {
9f03db6673598f arch/arm64/kvm/mmu.c Marc Zyngier        2021-06-22  1549  			ret = -EFAULT;
ea7fc1bb1cd1b9 arch/arm64/kvm/mmu.c Steven Price        2021-06-21  1550  			goto out_unlock;
ea7fc1bb1cd1b9 arch/arm64/kvm/mmu.c Steven Price        2021-06-21  1551  		}
2dbf12ae132cc7 arch/arm64/kvm/mmu.c Catalin Marinas     2022-11-03  1552  	}
3f58bf63455588 virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1553  
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1554  	if (writable)
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1555  		prot |= KVM_PGTABLE_PROT_W;
a9c0e12ebee56e virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1556  
25aa28691bb960 arch/arm64/kvm/mmu.c Yanan Wang          2021-06-17  1557  	if (exec_fault)
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1558  		prot |= KVM_PGTABLE_PROT_X;
a9c0e12ebee56e virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1559  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1560  	if (device)
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1561  		prot |= KVM_PGTABLE_PROT_DEVICE;
d8569fba13850b arch/arm64/kvm/mmu.c Mark Rutland        2023-10-16  1562  	else if (cpus_have_final_cap(ARM64_HAS_CACHE_DIC))
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1563  		prot |= KVM_PGTABLE_PROT_X;
a15f693935a9f1 virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1564  
7d894834a30556 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1565  	/*
7d894834a30556 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1566  	 * Under the premise of getting a FSC_PERM fault, we just need to relax
7d894834a30556 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1567  	 * permissions only if vma_pagesize equals fault_granule. Otherwise,
7d894834a30556 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1568  	 * kvm_pgtable_stage2_map() should be called to change block size.
7d894834a30556 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1569  	 */
11e5ea5242e38d arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28 @1570  	if (fault_is_perm && vma_pagesize == fault_granule)
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1571  		ret = kvm_pgtable_stage2_relax_perms(pgt, fault_ipa, prot);
1577cb5823cefd arch/arm64/kvm/mmu.c Oliver Upton        2022-11-07  1572  	else
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1573  		ret = kvm_pgtable_stage2_map(pgt, fault_ipa, vma_pagesize,
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1574  					     __pfn_to_phys(pfn), prot,
ddcadb297ce5cc arch/arm64/kvm/mmu.c Oliver Upton        2022-12-02  1575  					     memcache,
ddcadb297ce5cc arch/arm64/kvm/mmu.c Oliver Upton        2022-12-02  1576  					     KVM_PGTABLE_WALK_HANDLE_FAULT |
ddcadb297ce5cc arch/arm64/kvm/mmu.c Oliver Upton        2022-12-02  1577  					     KVM_PGTABLE_WALK_SHARED);
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall    2012-11-01  1578  
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1579  	/* Mark the page dirty only if the fault is handled successfully */
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1580  	if (writable && !ret) {
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1581  		kvm_set_pfn_dirty(pfn);
10ba2d17d29729 arch/arm64/kvm/mmu.c Gavin Shan          2021-03-16  1582  		mark_page_dirty_in_slot(kvm, memslot, gfn);
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1583  	}
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1584  
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1585  out_unlock:
f783ef1c0e82e4 arch/arm64/kvm/mmu.c Jing Zhang          2022-01-18  1586  	read_unlock(&kvm->mmu_lock);
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1587  	kvm_release_pfn_clean(pfn);
509552e65ae828 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1588  	return ret != -EAGAIN ? ret : 0;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1589  }
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1590  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

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

* arch/arm64/kvm/mmu.c:1570 user_mem_abort() error: uninitialized symbol 'fault_granule'.
@ 2024-12-09  4:47 kernel test robot
  0 siblings, 0 replies; 9+ messages in thread
From: kernel test robot @ 2024-12-09  4:47 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Ard Biesheuvel <ardb@kernel.org>
CC: Marc Zyngier <maz@kernel.org>

Hi Ard,

FYI, the error/warning was bisected to this commit, please ignore it if it's irrelevant.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   7503345ac5f5e82fd9a36d6e6b447c016376403a
commit: 11e5ea5242e38d44fcede879473566bb6d68f954 KVM: arm64: Use helpers to classify exception types reported via ESR
date:   1 year ago
:::::: branch date: 16 hours ago
:::::: commit date: 1 year ago
config: arm64-randconfig-r073-20241207 (https://download.01.org/0day-ci/archive/20241208/202412081742.hKhGHRT8-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 14.2.0

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@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202412081742.hKhGHRT8-lkp@intel.com/

smatch warnings:
arch/arm64/kvm/mmu.c:1570 user_mem_abort() error: uninitialized symbol 'fault_granule'.

vim +/fault_granule +1570 arch/arm64/kvm/mmu.c

ea7fc1bb1cd1b92 arch/arm64/kvm/mmu.c Steven Price        2021-06-21  1376  
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1377  static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
98047888bb9fd57 arch/arm/kvm/mmu.c   Christoffer Dall    2014-08-19  1378  			  struct kvm_memory_slot *memslot, unsigned long hva,
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1379  			  bool fault_is_perm)
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1380  {
ffd1b63a5860968 arch/arm64/kvm/mmu.c Will Deacon         2020-09-30  1381  	int ret = 0;
6396b852e46e562 virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1382  	bool write_fault, writable, force_pte = false;
8c2e8ac8ad4be68 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1383  	bool exec_fault, mte_allowed;
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1384  	bool device = false;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1385  	unsigned long mmu_seq;
ad361f093c1e31d arch/arm/kvm/mmu.c   Christoffer Dall    2012-11-01  1386  	struct kvm *kvm = vcpu->kvm;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1387  	struct kvm_mmu_memory_cache *memcache = &vcpu->arch.mmu_page_cache;
ad361f093c1e31d arch/arm/kvm/mmu.c   Christoffer Dall    2012-11-01  1388  	struct vm_area_struct *vma;
1559b7583ff6ed0 virt/kvm/arm/mmu.c   James Morse         2019-12-17  1389  	short vma_shift;
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1390  	gfn_t gfn;
ba049e93aef7e8c arch/arm/kvm/mmu.c   Dan Williams        2016-01-15  1391  	kvm_pfn_t pfn;
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1392  	bool logging_active = memslot_is_logging(memslot);
e86fc1a3a3e9b48 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1393  	long vma_pagesize, fault_granule;
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1394  	enum kvm_pgtable_prot prot = KVM_PGTABLE_PROT_R;
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1395  	struct kvm_pgtable *pgt;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1396  
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1397  	if (fault_is_perm)
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1398  		fault_granule = kvm_vcpu_trap_get_perm_fault_granule(vcpu);
a7d079cea2dffb1 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-09  1399  	write_fault = kvm_is_write_fault(vcpu);
c4ad98e4b72cb5b arch/arm64/kvm/mmu.c Marc Zyngier        2020-09-15  1400  	exec_fault = kvm_vcpu_trap_is_exec_fault(vcpu);
d0e22b4ac3ba23c virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1401  	VM_BUG_ON(write_fault && exec_fault);
d0e22b4ac3ba23c virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1402  
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1403  	if (fault_is_perm && !write_fault && !exec_fault) {
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1404  		kvm_err("Unexpected L2 read permission error\n");
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1405  		return -EFAULT;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1406  	}
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1407  
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1408  	/*
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1409  	 * Permission faults just need to update the existing leaf entry,
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1410  	 * and so normally don't require allocations from the memcache. The
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1411  	 * only exception to this is when dirty logging is enabled at runtime
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1412  	 * and a write fault needs to collapse a block entry into a table.
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1413  	 */
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1414  	if (!fault_is_perm || (logging_active && write_fault)) {
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1415  		ret = kvm_mmu_topup_memory_cache(memcache,
fe49fd940e22592 arch/arm64/kvm/mmu.c Marc Zyngier        2023-10-12  1416  						 kvm_mmu_cache_min_pages(vcpu->arch.hw_mmu));
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1417  		if (ret)
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1418  			return ret;
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1419  	}
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1420  
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1421  	/*
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1422  	 * Let's check if we will get back a huge page backed by hugetlbfs, or
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1423  	 * get block mapping for device MMIO region.
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1424  	 */
89154dd5313f774 arch/arm64/kvm/mmu.c Michel Lespinasse   2020-06-08  1425  	mmap_read_lock(current->mm);
09eef83a801512a arch/arm64/kvm/mmu.c Liam Howlett        2021-06-28  1426  	vma = vma_lookup(current->mm, hva);
37b544087ef3f65 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1427  	if (unlikely(!vma)) {
37b544087ef3f65 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1428  		kvm_err("Failed to find VMA for hva 0x%lx\n", hva);
89154dd5313f774 arch/arm64/kvm/mmu.c Michel Lespinasse   2020-06-08  1429  		mmap_read_unlock(current->mm);
37b544087ef3f65 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1430  		return -EFAULT;
37b544087ef3f65 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1431  	}
37b544087ef3f65 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1432  
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1433  	/*
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1434  	 * logging_active is guaranteed to never be true for VM_PFNMAP
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1435  	 * memslots.
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1436  	 */
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1437  	if (logging_active) {
a80868f39855484 virt/kvm/arm/mmu.c   Suzuki K Poulose    2019-03-12  1438  		force_pte = true;
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1439  		vma_shift = PAGE_SHIFT;
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1440  	} else {
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1441  		vma_shift = get_vma_page_shift(vma, hva);
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1442  	}
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1443  
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1444  	switch (vma_shift) {
faf000397e7f103 arch/arm64/kvm/mmu.c Gavin Shan          2020-11-03  1445  #ifndef __PAGETABLE_PMD_FOLDED
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1446  	case PUD_SHIFT:
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1447  		if (fault_supports_stage2_huge_mapping(memslot, hva, PUD_SIZE))
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1448  			break;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1449  		fallthrough;
faf000397e7f103 arch/arm64/kvm/mmu.c Gavin Shan          2020-11-03  1450  #endif
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1451  	case CONT_PMD_SHIFT:
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1452  		vma_shift = PMD_SHIFT;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1453  		fallthrough;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1454  	case PMD_SHIFT:
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1455  		if (fault_supports_stage2_huge_mapping(memslot, hva, PMD_SIZE))
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1456  			break;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1457  		fallthrough;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1458  	case CONT_PTE_SHIFT:
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1459  		vma_shift = PAGE_SHIFT;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1460  		force_pte = true;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1461  		fallthrough;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1462  	case PAGE_SHIFT:
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1463  		break;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1464  	default:
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1465  		WARN_ONCE(1, "Unknown vma_shift %d", vma_shift);
a80868f39855484 virt/kvm/arm/mmu.c   Suzuki K Poulose    2019-03-12  1466  	}
a80868f39855484 virt/kvm/arm/mmu.c   Suzuki K Poulose    2019-03-12  1467  
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1468  	vma_pagesize = 1UL << vma_shift;
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1469  	if (vma_pagesize == PMD_SIZE || vma_pagesize == PUD_SIZE)
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1470  		fault_ipa &= ~(vma_pagesize - 1);
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1471  
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1472  	gfn = fault_ipa >> PAGE_SHIFT;
8c2e8ac8ad4be68 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1473  	mte_allowed = kvm_vma_mte_allowed(vma);
8c2e8ac8ad4be68 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1474  
8c2e8ac8ad4be68 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1475  	/* Don't use the VMA after the unlock -- it may have vanished */
8c2e8ac8ad4be68 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1476  	vma = NULL;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1477  
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1478  	/*
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1479  	 * Read mmu_invalidate_seq so that KVM can detect if the results of
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1480  	 * vma_lookup() or __gfn_to_pfn_memslot() become stale prior to
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1481  	 * acquiring kvm->mmu_lock.
10ba2d17d297292 arch/arm64/kvm/mmu.c Gavin Shan          2021-03-16  1482  	 *
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1483  	 * Rely on mmap_read_unlock() for an implicit smp_rmb(), which pairs
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1484  	 * with the smp_wmb() in kvm_mmu_invalidate_end().
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1485  	 */
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1486  	mmu_seq = vcpu->kvm->mmu_invalidate_seq;
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1487  	mmap_read_unlock(current->mm);
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1488  
c8b88b332bedf47 arch/arm64/kvm/mmu.c Peter Xu            2022-10-11  1489  	pfn = __gfn_to_pfn_memslot(memslot, gfn, false, false, NULL,
10ba2d17d297292 arch/arm64/kvm/mmu.c Gavin Shan          2021-03-16  1490  				   write_fault, &writable, NULL);
196f878a7ac2e72 virt/kvm/arm/mmu.c   James Morse         2017-06-20  1491  	if (pfn == KVM_PFN_ERR_HWPOISON) {
1559b7583ff6ed0 virt/kvm/arm/mmu.c   James Morse         2019-12-17  1492  		kvm_send_hwpoison_signal(hva, vma_shift);
196f878a7ac2e72 virt/kvm/arm/mmu.c   James Morse         2017-06-20  1493  		return 0;
196f878a7ac2e72 virt/kvm/arm/mmu.c   James Morse         2017-06-20  1494  	}
9ac715954682b23 arch/arm/kvm/mmu.c   Christoffer Dall    2016-08-17  1495  	if (is_error_noslot_pfn(pfn))
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1496  		return -EFAULT;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1497  
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1498  	if (kvm_is_device_pfn(pfn)) {
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1499  		/*
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1500  		 * If the page was identified as device early by looking at
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1501  		 * the VMA flags, vma_pagesize is already representing the
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1502  		 * largest quantity we can map.  If instead it was mapped
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1503  		 * via gfn_to_pfn_prot(), vma_pagesize is set to PAGE_SIZE
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1504  		 * and must not be upgraded.
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1505  		 *
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1506  		 * In both cases, we don't let transparent_hugepage_adjust()
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1507  		 * change things at the last minute.
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1508  		 */
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1509  		device = true;
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1510  	} else if (logging_active && !write_fault) {
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1511  		/*
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1512  		 * Only actually map the page as writable if this was a write
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1513  		 * fault.
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1514  		 */
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1515  		writable = false;
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1516  	}
b88657674d39fc2 arch/arm/kvm/mmu.c   Kim Phillips        2014-06-26  1517  
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1518  	if (exec_fault && device)
6d674e28f642e3f virt/kvm/arm/mmu.c   Marc Zyngier        2019-12-11  1519  		return -ENOEXEC;
6d674e28f642e3f virt/kvm/arm/mmu.c   Marc Zyngier        2019-12-11  1520  
f783ef1c0e82e4f arch/arm64/kvm/mmu.c Jing Zhang          2022-01-18  1521  	read_lock(&kvm->mmu_lock);
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1522  	pgt = vcpu->arch.hw_mmu->pgt;
20ec3ebd707c77f arch/arm64/kvm/mmu.c Chao Peng           2022-08-16  1523  	if (mmu_invalidate_retry(kvm, mmu_seq))
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1524  		goto out_unlock;
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1525  
3f58bf63455588a virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1526  	/*
0529c9021252a58 arch/arm64/kvm/mmu.c Suzuki K Poulose    2020-05-07  1527  	 * If we are not forced to use page mapping, check if we are
0529c9021252a58 arch/arm64/kvm/mmu.c Suzuki K Poulose    2020-05-07  1528  	 * backed by a THP and thus use block mapping if possible.
3f58bf63455588a virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1529  	 */
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1530  	if (vma_pagesize == PAGE_SIZE && !(force_pte || device)) {
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1531  		if (fault_is_perm && fault_granule > PAGE_SIZE)
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1532  			vma_pagesize = fault_granule;
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1533  		else
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1534  			vma_pagesize = transparent_hugepage_adjust(kvm, memslot,
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1535  								   hva, &pfn,
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1536  								   &fault_ipa);
e86fc1a3a3e9b48 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1537  
e86fc1a3a3e9b48 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1538  		if (vma_pagesize < 0) {
e86fc1a3a3e9b48 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1539  			ret = vma_pagesize;
e86fc1a3a3e9b48 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1540  			goto out_unlock;
e86fc1a3a3e9b48 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1541  		}
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1542  	}
a9c0e12ebee56ef virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1543  
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1544  	if (!fault_is_perm && !device && kvm_has_mte(kvm)) {
d89585fbb308690 arch/arm64/kvm/mmu.c Peter Collingbourne 2022-11-03  1545  		/* Check the VMM hasn't introduced a new disallowed VMA */
8c2e8ac8ad4be68 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1546  		if (mte_allowed) {
2dbf12ae132cc78 arch/arm64/kvm/mmu.c Catalin Marinas     2022-11-03  1547  			sanitise_mte_tags(kvm, pfn, vma_pagesize);
2dbf12ae132cc78 arch/arm64/kvm/mmu.c Catalin Marinas     2022-11-03  1548  		} else {
9f03db6673598f6 arch/arm64/kvm/mmu.c Marc Zyngier        2021-06-22  1549  			ret = -EFAULT;
ea7fc1bb1cd1b92 arch/arm64/kvm/mmu.c Steven Price        2021-06-21  1550  			goto out_unlock;
ea7fc1bb1cd1b92 arch/arm64/kvm/mmu.c Steven Price        2021-06-21  1551  		}
2dbf12ae132cc78 arch/arm64/kvm/mmu.c Catalin Marinas     2022-11-03  1552  	}
3f58bf63455588a virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1553  
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1554  	if (writable)
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1555  		prot |= KVM_PGTABLE_PROT_W;
a9c0e12ebee56ef virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1556  
25aa28691bb960a arch/arm64/kvm/mmu.c Yanan Wang          2021-06-17  1557  	if (exec_fault)
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1558  		prot |= KVM_PGTABLE_PROT_X;
a9c0e12ebee56ef virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1559  
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1560  	if (device)
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1561  		prot |= KVM_PGTABLE_PROT_DEVICE;
d8569fba13850bb arch/arm64/kvm/mmu.c Mark Rutland        2023-10-16  1562  	else if (cpus_have_final_cap(ARM64_HAS_CACHE_DIC))
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1563  		prot |= KVM_PGTABLE_PROT_X;
a15f693935a9f1f virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1564  
7d894834a305568 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1565  	/*
7d894834a305568 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1566  	 * Under the premise of getting a FSC_PERM fault, we just need to relax
7d894834a305568 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1567  	 * permissions only if vma_pagesize equals fault_granule. Otherwise,
7d894834a305568 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1568  	 * kvm_pgtable_stage2_map() should be called to change block size.
7d894834a305568 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1569  	 */
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28 @1570  	if (fault_is_perm && vma_pagesize == fault_granule)
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1571  		ret = kvm_pgtable_stage2_relax_perms(pgt, fault_ipa, prot);
1577cb5823cefdf arch/arm64/kvm/mmu.c Oliver Upton        2022-11-07  1572  	else
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1573  		ret = kvm_pgtable_stage2_map(pgt, fault_ipa, vma_pagesize,
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1574  					     __pfn_to_phys(pfn), prot,
ddcadb297ce5cc1 arch/arm64/kvm/mmu.c Oliver Upton        2022-12-02  1575  					     memcache,
ddcadb297ce5cc1 arch/arm64/kvm/mmu.c Oliver Upton        2022-12-02  1576  					     KVM_PGTABLE_WALK_HANDLE_FAULT |
ddcadb297ce5cc1 arch/arm64/kvm/mmu.c Oliver Upton        2022-12-02  1577  					     KVM_PGTABLE_WALK_SHARED);
ad361f093c1e31d arch/arm/kvm/mmu.c   Christoffer Dall    2012-11-01  1578  
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1579  	/* Mark the page dirty only if the fault is handled successfully */
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1580  	if (writable && !ret) {
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1581  		kvm_set_pfn_dirty(pfn);
10ba2d17d297292 arch/arm64/kvm/mmu.c Gavin Shan          2021-03-16  1582  		mark_page_dirty_in_slot(kvm, memslot, gfn);
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1583  	}
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1584  
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1585  out_unlock:
f783ef1c0e82e4f arch/arm64/kvm/mmu.c Jing Zhang          2022-01-18  1586  	read_unlock(&kvm->mmu_lock);
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1587  	kvm_release_pfn_clean(pfn);
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1588  	return ret != -EAGAIN ? ret : 0;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1589  }
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1590  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

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

* arch/arm64/kvm/mmu.c:1570 user_mem_abort() error: uninitialized symbol 'fault_granule'.
@ 2024-12-11 16:56 kernel test robot
  0 siblings, 0 replies; 9+ messages in thread
From: kernel test robot @ 2024-12-11 16:56 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Ard Biesheuvel <ardb@kernel.org>
CC: Marc Zyngier <maz@kernel.org>

Hi Ard,

FYI, the error/warning was bisected to this commit, please ignore it if it's irrelevant.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   f92f4749861b06fed908d336b4dee1326003291b
commit: 11e5ea5242e38d44fcede879473566bb6d68f954 KVM: arm64: Use helpers to classify exception types reported via ESR
date:   1 year ago
:::::: branch date: 15 hours ago
:::::: commit date: 1 year ago
config: arm64-randconfig-r073-20241207 (https://download.01.org/0day-ci/archive/20241212/202412120021.Qkspr1Kf-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 14.2.0

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@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202412120021.Qkspr1Kf-lkp@intel.com/

smatch warnings:
arch/arm64/kvm/mmu.c:1570 user_mem_abort() error: uninitialized symbol 'fault_granule'.

vim +/fault_granule +1570 arch/arm64/kvm/mmu.c

ea7fc1bb1cd1b92 arch/arm64/kvm/mmu.c Steven Price        2021-06-21  1376  
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1377  static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
98047888bb9fd57 arch/arm/kvm/mmu.c   Christoffer Dall    2014-08-19  1378  			  struct kvm_memory_slot *memslot, unsigned long hva,
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1379  			  bool fault_is_perm)
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1380  {
ffd1b63a5860968 arch/arm64/kvm/mmu.c Will Deacon         2020-09-30  1381  	int ret = 0;
6396b852e46e562 virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1382  	bool write_fault, writable, force_pte = false;
8c2e8ac8ad4be68 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1383  	bool exec_fault, mte_allowed;
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1384  	bool device = false;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1385  	unsigned long mmu_seq;
ad361f093c1e31d arch/arm/kvm/mmu.c   Christoffer Dall    2012-11-01  1386  	struct kvm *kvm = vcpu->kvm;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1387  	struct kvm_mmu_memory_cache *memcache = &vcpu->arch.mmu_page_cache;
ad361f093c1e31d arch/arm/kvm/mmu.c   Christoffer Dall    2012-11-01  1388  	struct vm_area_struct *vma;
1559b7583ff6ed0 virt/kvm/arm/mmu.c   James Morse         2019-12-17  1389  	short vma_shift;
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1390  	gfn_t gfn;
ba049e93aef7e8c arch/arm/kvm/mmu.c   Dan Williams        2016-01-15  1391  	kvm_pfn_t pfn;
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1392  	bool logging_active = memslot_is_logging(memslot);
e86fc1a3a3e9b48 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1393  	long vma_pagesize, fault_granule;
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1394  	enum kvm_pgtable_prot prot = KVM_PGTABLE_PROT_R;
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1395  	struct kvm_pgtable *pgt;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1396  
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1397  	if (fault_is_perm)
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1398  		fault_granule = kvm_vcpu_trap_get_perm_fault_granule(vcpu);
a7d079cea2dffb1 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-09  1399  	write_fault = kvm_is_write_fault(vcpu);
c4ad98e4b72cb5b arch/arm64/kvm/mmu.c Marc Zyngier        2020-09-15  1400  	exec_fault = kvm_vcpu_trap_is_exec_fault(vcpu);
d0e22b4ac3ba23c virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1401  	VM_BUG_ON(write_fault && exec_fault);
d0e22b4ac3ba23c virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1402  
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1403  	if (fault_is_perm && !write_fault && !exec_fault) {
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1404  		kvm_err("Unexpected L2 read permission error\n");
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1405  		return -EFAULT;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1406  	}
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1407  
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1408  	/*
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1409  	 * Permission faults just need to update the existing leaf entry,
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1410  	 * and so normally don't require allocations from the memcache. The
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1411  	 * only exception to this is when dirty logging is enabled at runtime
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1412  	 * and a write fault needs to collapse a block entry into a table.
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1413  	 */
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1414  	if (!fault_is_perm || (logging_active && write_fault)) {
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1415  		ret = kvm_mmu_topup_memory_cache(memcache,
fe49fd940e22592 arch/arm64/kvm/mmu.c Marc Zyngier        2023-10-12  1416  						 kvm_mmu_cache_min_pages(vcpu->arch.hw_mmu));
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1417  		if (ret)
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1418  			return ret;
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1419  	}
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1420  
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1421  	/*
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1422  	 * Let's check if we will get back a huge page backed by hugetlbfs, or
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1423  	 * get block mapping for device MMIO region.
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1424  	 */
89154dd5313f774 arch/arm64/kvm/mmu.c Michel Lespinasse   2020-06-08  1425  	mmap_read_lock(current->mm);
09eef83a801512a arch/arm64/kvm/mmu.c Liam Howlett        2021-06-28  1426  	vma = vma_lookup(current->mm, hva);
37b544087ef3f65 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1427  	if (unlikely(!vma)) {
37b544087ef3f65 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1428  		kvm_err("Failed to find VMA for hva 0x%lx\n", hva);
89154dd5313f774 arch/arm64/kvm/mmu.c Michel Lespinasse   2020-06-08  1429  		mmap_read_unlock(current->mm);
37b544087ef3f65 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1430  		return -EFAULT;
37b544087ef3f65 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1431  	}
37b544087ef3f65 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1432  
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1433  	/*
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1434  	 * logging_active is guaranteed to never be true for VM_PFNMAP
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1435  	 * memslots.
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1436  	 */
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1437  	if (logging_active) {
a80868f39855484 virt/kvm/arm/mmu.c   Suzuki K Poulose    2019-03-12  1438  		force_pte = true;
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1439  		vma_shift = PAGE_SHIFT;
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1440  	} else {
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1441  		vma_shift = get_vma_page_shift(vma, hva);
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1442  	}
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1443  
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1444  	switch (vma_shift) {
faf000397e7f103 arch/arm64/kvm/mmu.c Gavin Shan          2020-11-03  1445  #ifndef __PAGETABLE_PMD_FOLDED
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1446  	case PUD_SHIFT:
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1447  		if (fault_supports_stage2_huge_mapping(memslot, hva, PUD_SIZE))
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1448  			break;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1449  		fallthrough;
faf000397e7f103 arch/arm64/kvm/mmu.c Gavin Shan          2020-11-03  1450  #endif
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1451  	case CONT_PMD_SHIFT:
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1452  		vma_shift = PMD_SHIFT;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1453  		fallthrough;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1454  	case PMD_SHIFT:
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1455  		if (fault_supports_stage2_huge_mapping(memslot, hva, PMD_SIZE))
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1456  			break;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1457  		fallthrough;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1458  	case CONT_PTE_SHIFT:
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1459  		vma_shift = PAGE_SHIFT;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1460  		force_pte = true;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1461  		fallthrough;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1462  	case PAGE_SHIFT:
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1463  		break;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1464  	default:
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1465  		WARN_ONCE(1, "Unknown vma_shift %d", vma_shift);
a80868f39855484 virt/kvm/arm/mmu.c   Suzuki K Poulose    2019-03-12  1466  	}
a80868f39855484 virt/kvm/arm/mmu.c   Suzuki K Poulose    2019-03-12  1467  
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1468  	vma_pagesize = 1UL << vma_shift;
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1469  	if (vma_pagesize == PMD_SIZE || vma_pagesize == PUD_SIZE)
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1470  		fault_ipa &= ~(vma_pagesize - 1);
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1471  
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1472  	gfn = fault_ipa >> PAGE_SHIFT;
8c2e8ac8ad4be68 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1473  	mte_allowed = kvm_vma_mte_allowed(vma);
8c2e8ac8ad4be68 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1474  
8c2e8ac8ad4be68 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1475  	/* Don't use the VMA after the unlock -- it may have vanished */
8c2e8ac8ad4be68 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1476  	vma = NULL;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1477  
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1478  	/*
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1479  	 * Read mmu_invalidate_seq so that KVM can detect if the results of
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1480  	 * vma_lookup() or __gfn_to_pfn_memslot() become stale prior to
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1481  	 * acquiring kvm->mmu_lock.
10ba2d17d297292 arch/arm64/kvm/mmu.c Gavin Shan          2021-03-16  1482  	 *
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1483  	 * Rely on mmap_read_unlock() for an implicit smp_rmb(), which pairs
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1484  	 * with the smp_wmb() in kvm_mmu_invalidate_end().
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1485  	 */
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1486  	mmu_seq = vcpu->kvm->mmu_invalidate_seq;
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1487  	mmap_read_unlock(current->mm);
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1488  
c8b88b332bedf47 arch/arm64/kvm/mmu.c Peter Xu            2022-10-11  1489  	pfn = __gfn_to_pfn_memslot(memslot, gfn, false, false, NULL,
10ba2d17d297292 arch/arm64/kvm/mmu.c Gavin Shan          2021-03-16  1490  				   write_fault, &writable, NULL);
196f878a7ac2e72 virt/kvm/arm/mmu.c   James Morse         2017-06-20  1491  	if (pfn == KVM_PFN_ERR_HWPOISON) {
1559b7583ff6ed0 virt/kvm/arm/mmu.c   James Morse         2019-12-17  1492  		kvm_send_hwpoison_signal(hva, vma_shift);
196f878a7ac2e72 virt/kvm/arm/mmu.c   James Morse         2017-06-20  1493  		return 0;
196f878a7ac2e72 virt/kvm/arm/mmu.c   James Morse         2017-06-20  1494  	}
9ac715954682b23 arch/arm/kvm/mmu.c   Christoffer Dall    2016-08-17  1495  	if (is_error_noslot_pfn(pfn))
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1496  		return -EFAULT;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1497  
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1498  	if (kvm_is_device_pfn(pfn)) {
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1499  		/*
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1500  		 * If the page was identified as device early by looking at
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1501  		 * the VMA flags, vma_pagesize is already representing the
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1502  		 * largest quantity we can map.  If instead it was mapped
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1503  		 * via gfn_to_pfn_prot(), vma_pagesize is set to PAGE_SIZE
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1504  		 * and must not be upgraded.
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1505  		 *
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1506  		 * In both cases, we don't let transparent_hugepage_adjust()
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1507  		 * change things at the last minute.
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1508  		 */
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1509  		device = true;
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1510  	} else if (logging_active && !write_fault) {
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1511  		/*
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1512  		 * Only actually map the page as writable if this was a write
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1513  		 * fault.
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1514  		 */
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1515  		writable = false;
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1516  	}
b88657674d39fc2 arch/arm/kvm/mmu.c   Kim Phillips        2014-06-26  1517  
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1518  	if (exec_fault && device)
6d674e28f642e3f virt/kvm/arm/mmu.c   Marc Zyngier        2019-12-11  1519  		return -ENOEXEC;
6d674e28f642e3f virt/kvm/arm/mmu.c   Marc Zyngier        2019-12-11  1520  
f783ef1c0e82e4f arch/arm64/kvm/mmu.c Jing Zhang          2022-01-18  1521  	read_lock(&kvm->mmu_lock);
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1522  	pgt = vcpu->arch.hw_mmu->pgt;
20ec3ebd707c77f arch/arm64/kvm/mmu.c Chao Peng           2022-08-16  1523  	if (mmu_invalidate_retry(kvm, mmu_seq))
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1524  		goto out_unlock;
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1525  
3f58bf63455588a virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1526  	/*
0529c9021252a58 arch/arm64/kvm/mmu.c Suzuki K Poulose    2020-05-07  1527  	 * If we are not forced to use page mapping, check if we are
0529c9021252a58 arch/arm64/kvm/mmu.c Suzuki K Poulose    2020-05-07  1528  	 * backed by a THP and thus use block mapping if possible.
3f58bf63455588a virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1529  	 */
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1530  	if (vma_pagesize == PAGE_SIZE && !(force_pte || device)) {
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1531  		if (fault_is_perm && fault_granule > PAGE_SIZE)
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1532  			vma_pagesize = fault_granule;
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1533  		else
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1534  			vma_pagesize = transparent_hugepage_adjust(kvm, memslot,
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1535  								   hva, &pfn,
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1536  								   &fault_ipa);
e86fc1a3a3e9b48 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1537  
e86fc1a3a3e9b48 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1538  		if (vma_pagesize < 0) {
e86fc1a3a3e9b48 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1539  			ret = vma_pagesize;
e86fc1a3a3e9b48 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1540  			goto out_unlock;
e86fc1a3a3e9b48 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1541  		}
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1542  	}
a9c0e12ebee56ef virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1543  
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1544  	if (!fault_is_perm && !device && kvm_has_mte(kvm)) {
d89585fbb308690 arch/arm64/kvm/mmu.c Peter Collingbourne 2022-11-03  1545  		/* Check the VMM hasn't introduced a new disallowed VMA */
8c2e8ac8ad4be68 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1546  		if (mte_allowed) {
2dbf12ae132cc78 arch/arm64/kvm/mmu.c Catalin Marinas     2022-11-03  1547  			sanitise_mte_tags(kvm, pfn, vma_pagesize);
2dbf12ae132cc78 arch/arm64/kvm/mmu.c Catalin Marinas     2022-11-03  1548  		} else {
9f03db6673598f6 arch/arm64/kvm/mmu.c Marc Zyngier        2021-06-22  1549  			ret = -EFAULT;
ea7fc1bb1cd1b92 arch/arm64/kvm/mmu.c Steven Price        2021-06-21  1550  			goto out_unlock;
ea7fc1bb1cd1b92 arch/arm64/kvm/mmu.c Steven Price        2021-06-21  1551  		}
2dbf12ae132cc78 arch/arm64/kvm/mmu.c Catalin Marinas     2022-11-03  1552  	}
3f58bf63455588a virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1553  
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1554  	if (writable)
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1555  		prot |= KVM_PGTABLE_PROT_W;
a9c0e12ebee56ef virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1556  
25aa28691bb960a arch/arm64/kvm/mmu.c Yanan Wang          2021-06-17  1557  	if (exec_fault)
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1558  		prot |= KVM_PGTABLE_PROT_X;
a9c0e12ebee56ef virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1559  
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1560  	if (device)
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1561  		prot |= KVM_PGTABLE_PROT_DEVICE;
d8569fba13850bb arch/arm64/kvm/mmu.c Mark Rutland        2023-10-16  1562  	else if (cpus_have_final_cap(ARM64_HAS_CACHE_DIC))
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1563  		prot |= KVM_PGTABLE_PROT_X;
a15f693935a9f1f virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1564  
7d894834a305568 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1565  	/*
7d894834a305568 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1566  	 * Under the premise of getting a FSC_PERM fault, we just need to relax
7d894834a305568 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1567  	 * permissions only if vma_pagesize equals fault_granule. Otherwise,
7d894834a305568 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1568  	 * kvm_pgtable_stage2_map() should be called to change block size.
7d894834a305568 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1569  	 */
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28 @1570  	if (fault_is_perm && vma_pagesize == fault_granule)
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1571  		ret = kvm_pgtable_stage2_relax_perms(pgt, fault_ipa, prot);
1577cb5823cefdf arch/arm64/kvm/mmu.c Oliver Upton        2022-11-07  1572  	else
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1573  		ret = kvm_pgtable_stage2_map(pgt, fault_ipa, vma_pagesize,
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1574  					     __pfn_to_phys(pfn), prot,
ddcadb297ce5cc1 arch/arm64/kvm/mmu.c Oliver Upton        2022-12-02  1575  					     memcache,
ddcadb297ce5cc1 arch/arm64/kvm/mmu.c Oliver Upton        2022-12-02  1576  					     KVM_PGTABLE_WALK_HANDLE_FAULT |
ddcadb297ce5cc1 arch/arm64/kvm/mmu.c Oliver Upton        2022-12-02  1577  					     KVM_PGTABLE_WALK_SHARED);
ad361f093c1e31d arch/arm/kvm/mmu.c   Christoffer Dall    2012-11-01  1578  
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1579  	/* Mark the page dirty only if the fault is handled successfully */
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1580  	if (writable && !ret) {
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1581  		kvm_set_pfn_dirty(pfn);
10ba2d17d297292 arch/arm64/kvm/mmu.c Gavin Shan          2021-03-16  1582  		mark_page_dirty_in_slot(kvm, memslot, gfn);
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1583  	}
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1584  
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1585  out_unlock:
f783ef1c0e82e4f arch/arm64/kvm/mmu.c Jing Zhang          2022-01-18  1586  	read_unlock(&kvm->mmu_lock);
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1587  	kvm_release_pfn_clean(pfn);
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1588  	return ret != -EAGAIN ? ret : 0;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1589  }
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1590  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

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

* arch/arm64/kvm/mmu.c:1570 user_mem_abort() error: uninitialized symbol 'fault_granule'.
@ 2024-12-14  7:15 kernel test robot
  0 siblings, 0 replies; 9+ messages in thread
From: kernel test robot @ 2024-12-14  7:15 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Ard Biesheuvel <ardb@kernel.org>
CC: Marc Zyngier <maz@kernel.org>

Hi Ard,

FYI, the error/warning was bisected to this commit, please ignore it if it's irrelevant.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   a446e965a188ee8f745859e63ce046fe98577d45
commit: 11e5ea5242e38d44fcede879473566bb6d68f954 KVM: arm64: Use helpers to classify exception types reported via ESR
date:   1 year ago
:::::: branch date: 6 hours ago
:::::: commit date: 1 year ago
config: arm64-randconfig-r073-20241207 (https://download.01.org/0day-ci/archive/20241214/202412141529.P024Z9Gw-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 14.2.0

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@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202412141529.P024Z9Gw-lkp@intel.com/

smatch warnings:
arch/arm64/kvm/mmu.c:1570 user_mem_abort() error: uninitialized symbol 'fault_granule'.

vim +/fault_granule +1570 arch/arm64/kvm/mmu.c

ea7fc1bb1cd1b92 arch/arm64/kvm/mmu.c Steven Price        2021-06-21  1376  
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1377  static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
98047888bb9fd57 arch/arm/kvm/mmu.c   Christoffer Dall    2014-08-19  1378  			  struct kvm_memory_slot *memslot, unsigned long hva,
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1379  			  bool fault_is_perm)
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1380  {
ffd1b63a5860968 arch/arm64/kvm/mmu.c Will Deacon         2020-09-30  1381  	int ret = 0;
6396b852e46e562 virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1382  	bool write_fault, writable, force_pte = false;
8c2e8ac8ad4be68 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1383  	bool exec_fault, mte_allowed;
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1384  	bool device = false;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1385  	unsigned long mmu_seq;
ad361f093c1e31d arch/arm/kvm/mmu.c   Christoffer Dall    2012-11-01  1386  	struct kvm *kvm = vcpu->kvm;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1387  	struct kvm_mmu_memory_cache *memcache = &vcpu->arch.mmu_page_cache;
ad361f093c1e31d arch/arm/kvm/mmu.c   Christoffer Dall    2012-11-01  1388  	struct vm_area_struct *vma;
1559b7583ff6ed0 virt/kvm/arm/mmu.c   James Morse         2019-12-17  1389  	short vma_shift;
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1390  	gfn_t gfn;
ba049e93aef7e8c arch/arm/kvm/mmu.c   Dan Williams        2016-01-15  1391  	kvm_pfn_t pfn;
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1392  	bool logging_active = memslot_is_logging(memslot);
e86fc1a3a3e9b48 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1393  	long vma_pagesize, fault_granule;
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1394  	enum kvm_pgtable_prot prot = KVM_PGTABLE_PROT_R;
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1395  	struct kvm_pgtable *pgt;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1396  
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1397  	if (fault_is_perm)
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1398  		fault_granule = kvm_vcpu_trap_get_perm_fault_granule(vcpu);
a7d079cea2dffb1 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-09  1399  	write_fault = kvm_is_write_fault(vcpu);
c4ad98e4b72cb5b arch/arm64/kvm/mmu.c Marc Zyngier        2020-09-15  1400  	exec_fault = kvm_vcpu_trap_is_exec_fault(vcpu);
d0e22b4ac3ba23c virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1401  	VM_BUG_ON(write_fault && exec_fault);
d0e22b4ac3ba23c virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1402  
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1403  	if (fault_is_perm && !write_fault && !exec_fault) {
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1404  		kvm_err("Unexpected L2 read permission error\n");
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1405  		return -EFAULT;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1406  	}
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1407  
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1408  	/*
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1409  	 * Permission faults just need to update the existing leaf entry,
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1410  	 * and so normally don't require allocations from the memcache. The
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1411  	 * only exception to this is when dirty logging is enabled at runtime
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1412  	 * and a write fault needs to collapse a block entry into a table.
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1413  	 */
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1414  	if (!fault_is_perm || (logging_active && write_fault)) {
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1415  		ret = kvm_mmu_topup_memory_cache(memcache,
fe49fd940e22592 arch/arm64/kvm/mmu.c Marc Zyngier        2023-10-12  1416  						 kvm_mmu_cache_min_pages(vcpu->arch.hw_mmu));
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1417  		if (ret)
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1418  			return ret;
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1419  	}
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1420  
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1421  	/*
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1422  	 * Let's check if we will get back a huge page backed by hugetlbfs, or
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1423  	 * get block mapping for device MMIO region.
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1424  	 */
89154dd5313f774 arch/arm64/kvm/mmu.c Michel Lespinasse   2020-06-08  1425  	mmap_read_lock(current->mm);
09eef83a801512a arch/arm64/kvm/mmu.c Liam Howlett        2021-06-28  1426  	vma = vma_lookup(current->mm, hva);
37b544087ef3f65 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1427  	if (unlikely(!vma)) {
37b544087ef3f65 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1428  		kvm_err("Failed to find VMA for hva 0x%lx\n", hva);
89154dd5313f774 arch/arm64/kvm/mmu.c Michel Lespinasse   2020-06-08  1429  		mmap_read_unlock(current->mm);
37b544087ef3f65 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1430  		return -EFAULT;
37b544087ef3f65 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1431  	}
37b544087ef3f65 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1432  
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1433  	/*
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1434  	 * logging_active is guaranteed to never be true for VM_PFNMAP
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1435  	 * memslots.
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1436  	 */
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1437  	if (logging_active) {
a80868f39855484 virt/kvm/arm/mmu.c   Suzuki K Poulose    2019-03-12  1438  		force_pte = true;
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1439  		vma_shift = PAGE_SHIFT;
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1440  	} else {
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1441  		vma_shift = get_vma_page_shift(vma, hva);
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1442  	}
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1443  
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1444  	switch (vma_shift) {
faf000397e7f103 arch/arm64/kvm/mmu.c Gavin Shan          2020-11-03  1445  #ifndef __PAGETABLE_PMD_FOLDED
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1446  	case PUD_SHIFT:
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1447  		if (fault_supports_stage2_huge_mapping(memslot, hva, PUD_SIZE))
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1448  			break;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1449  		fallthrough;
faf000397e7f103 arch/arm64/kvm/mmu.c Gavin Shan          2020-11-03  1450  #endif
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1451  	case CONT_PMD_SHIFT:
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1452  		vma_shift = PMD_SHIFT;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1453  		fallthrough;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1454  	case PMD_SHIFT:
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1455  		if (fault_supports_stage2_huge_mapping(memslot, hva, PMD_SIZE))
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1456  			break;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1457  		fallthrough;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1458  	case CONT_PTE_SHIFT:
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1459  		vma_shift = PAGE_SHIFT;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1460  		force_pte = true;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1461  		fallthrough;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1462  	case PAGE_SHIFT:
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1463  		break;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1464  	default:
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1465  		WARN_ONCE(1, "Unknown vma_shift %d", vma_shift);
a80868f39855484 virt/kvm/arm/mmu.c   Suzuki K Poulose    2019-03-12  1466  	}
a80868f39855484 virt/kvm/arm/mmu.c   Suzuki K Poulose    2019-03-12  1467  
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1468  	vma_pagesize = 1UL << vma_shift;
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1469  	if (vma_pagesize == PMD_SIZE || vma_pagesize == PUD_SIZE)
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1470  		fault_ipa &= ~(vma_pagesize - 1);
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1471  
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1472  	gfn = fault_ipa >> PAGE_SHIFT;
8c2e8ac8ad4be68 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1473  	mte_allowed = kvm_vma_mte_allowed(vma);
8c2e8ac8ad4be68 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1474  
8c2e8ac8ad4be68 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1475  	/* Don't use the VMA after the unlock -- it may have vanished */
8c2e8ac8ad4be68 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1476  	vma = NULL;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1477  
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1478  	/*
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1479  	 * Read mmu_invalidate_seq so that KVM can detect if the results of
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1480  	 * vma_lookup() or __gfn_to_pfn_memslot() become stale prior to
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1481  	 * acquiring kvm->mmu_lock.
10ba2d17d297292 arch/arm64/kvm/mmu.c Gavin Shan          2021-03-16  1482  	 *
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1483  	 * Rely on mmap_read_unlock() for an implicit smp_rmb(), which pairs
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1484  	 * with the smp_wmb() in kvm_mmu_invalidate_end().
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1485  	 */
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1486  	mmu_seq = vcpu->kvm->mmu_invalidate_seq;
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1487  	mmap_read_unlock(current->mm);
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1488  
c8b88b332bedf47 arch/arm64/kvm/mmu.c Peter Xu            2022-10-11  1489  	pfn = __gfn_to_pfn_memslot(memslot, gfn, false, false, NULL,
10ba2d17d297292 arch/arm64/kvm/mmu.c Gavin Shan          2021-03-16  1490  				   write_fault, &writable, NULL);
196f878a7ac2e72 virt/kvm/arm/mmu.c   James Morse         2017-06-20  1491  	if (pfn == KVM_PFN_ERR_HWPOISON) {
1559b7583ff6ed0 virt/kvm/arm/mmu.c   James Morse         2019-12-17  1492  		kvm_send_hwpoison_signal(hva, vma_shift);
196f878a7ac2e72 virt/kvm/arm/mmu.c   James Morse         2017-06-20  1493  		return 0;
196f878a7ac2e72 virt/kvm/arm/mmu.c   James Morse         2017-06-20  1494  	}
9ac715954682b23 arch/arm/kvm/mmu.c   Christoffer Dall    2016-08-17  1495  	if (is_error_noslot_pfn(pfn))
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1496  		return -EFAULT;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1497  
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1498  	if (kvm_is_device_pfn(pfn)) {
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1499  		/*
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1500  		 * If the page was identified as device early by looking at
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1501  		 * the VMA flags, vma_pagesize is already representing the
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1502  		 * largest quantity we can map.  If instead it was mapped
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1503  		 * via gfn_to_pfn_prot(), vma_pagesize is set to PAGE_SIZE
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1504  		 * and must not be upgraded.
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1505  		 *
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1506  		 * In both cases, we don't let transparent_hugepage_adjust()
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1507  		 * change things at the last minute.
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1508  		 */
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1509  		device = true;
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1510  	} else if (logging_active && !write_fault) {
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1511  		/*
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1512  		 * Only actually map the page as writable if this was a write
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1513  		 * fault.
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1514  		 */
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1515  		writable = false;
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1516  	}
b88657674d39fc2 arch/arm/kvm/mmu.c   Kim Phillips        2014-06-26  1517  
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1518  	if (exec_fault && device)
6d674e28f642e3f virt/kvm/arm/mmu.c   Marc Zyngier        2019-12-11  1519  		return -ENOEXEC;
6d674e28f642e3f virt/kvm/arm/mmu.c   Marc Zyngier        2019-12-11  1520  
f783ef1c0e82e4f arch/arm64/kvm/mmu.c Jing Zhang          2022-01-18  1521  	read_lock(&kvm->mmu_lock);
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1522  	pgt = vcpu->arch.hw_mmu->pgt;
20ec3ebd707c77f arch/arm64/kvm/mmu.c Chao Peng           2022-08-16  1523  	if (mmu_invalidate_retry(kvm, mmu_seq))
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1524  		goto out_unlock;
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1525  
3f58bf63455588a virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1526  	/*
0529c9021252a58 arch/arm64/kvm/mmu.c Suzuki K Poulose    2020-05-07  1527  	 * If we are not forced to use page mapping, check if we are
0529c9021252a58 arch/arm64/kvm/mmu.c Suzuki K Poulose    2020-05-07  1528  	 * backed by a THP and thus use block mapping if possible.
3f58bf63455588a virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1529  	 */
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1530  	if (vma_pagesize == PAGE_SIZE && !(force_pte || device)) {
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1531  		if (fault_is_perm && fault_granule > PAGE_SIZE)
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1532  			vma_pagesize = fault_granule;
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1533  		else
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1534  			vma_pagesize = transparent_hugepage_adjust(kvm, memslot,
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1535  								   hva, &pfn,
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1536  								   &fault_ipa);
e86fc1a3a3e9b48 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1537  
e86fc1a3a3e9b48 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1538  		if (vma_pagesize < 0) {
e86fc1a3a3e9b48 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1539  			ret = vma_pagesize;
e86fc1a3a3e9b48 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1540  			goto out_unlock;
e86fc1a3a3e9b48 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1541  		}
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1542  	}
a9c0e12ebee56ef virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1543  
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1544  	if (!fault_is_perm && !device && kvm_has_mte(kvm)) {
d89585fbb308690 arch/arm64/kvm/mmu.c Peter Collingbourne 2022-11-03  1545  		/* Check the VMM hasn't introduced a new disallowed VMA */
8c2e8ac8ad4be68 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1546  		if (mte_allowed) {
2dbf12ae132cc78 arch/arm64/kvm/mmu.c Catalin Marinas     2022-11-03  1547  			sanitise_mte_tags(kvm, pfn, vma_pagesize);
2dbf12ae132cc78 arch/arm64/kvm/mmu.c Catalin Marinas     2022-11-03  1548  		} else {
9f03db6673598f6 arch/arm64/kvm/mmu.c Marc Zyngier        2021-06-22  1549  			ret = -EFAULT;
ea7fc1bb1cd1b92 arch/arm64/kvm/mmu.c Steven Price        2021-06-21  1550  			goto out_unlock;
ea7fc1bb1cd1b92 arch/arm64/kvm/mmu.c Steven Price        2021-06-21  1551  		}
2dbf12ae132cc78 arch/arm64/kvm/mmu.c Catalin Marinas     2022-11-03  1552  	}
3f58bf63455588a virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1553  
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1554  	if (writable)
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1555  		prot |= KVM_PGTABLE_PROT_W;
a9c0e12ebee56ef virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1556  
25aa28691bb960a arch/arm64/kvm/mmu.c Yanan Wang          2021-06-17  1557  	if (exec_fault)
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1558  		prot |= KVM_PGTABLE_PROT_X;
a9c0e12ebee56ef virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1559  
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1560  	if (device)
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1561  		prot |= KVM_PGTABLE_PROT_DEVICE;
d8569fba13850bb arch/arm64/kvm/mmu.c Mark Rutland        2023-10-16  1562  	else if (cpus_have_final_cap(ARM64_HAS_CACHE_DIC))
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1563  		prot |= KVM_PGTABLE_PROT_X;
a15f693935a9f1f virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1564  
7d894834a305568 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1565  	/*
7d894834a305568 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1566  	 * Under the premise of getting a FSC_PERM fault, we just need to relax
7d894834a305568 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1567  	 * permissions only if vma_pagesize equals fault_granule. Otherwise,
7d894834a305568 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1568  	 * kvm_pgtable_stage2_map() should be called to change block size.
7d894834a305568 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1569  	 */
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28 @1570  	if (fault_is_perm && vma_pagesize == fault_granule)
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1571  		ret = kvm_pgtable_stage2_relax_perms(pgt, fault_ipa, prot);
1577cb5823cefdf arch/arm64/kvm/mmu.c Oliver Upton        2022-11-07  1572  	else
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1573  		ret = kvm_pgtable_stage2_map(pgt, fault_ipa, vma_pagesize,
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1574  					     __pfn_to_phys(pfn), prot,
ddcadb297ce5cc1 arch/arm64/kvm/mmu.c Oliver Upton        2022-12-02  1575  					     memcache,
ddcadb297ce5cc1 arch/arm64/kvm/mmu.c Oliver Upton        2022-12-02  1576  					     KVM_PGTABLE_WALK_HANDLE_FAULT |
ddcadb297ce5cc1 arch/arm64/kvm/mmu.c Oliver Upton        2022-12-02  1577  					     KVM_PGTABLE_WALK_SHARED);
ad361f093c1e31d arch/arm/kvm/mmu.c   Christoffer Dall    2012-11-01  1578  
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1579  	/* Mark the page dirty only if the fault is handled successfully */
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1580  	if (writable && !ret) {
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1581  		kvm_set_pfn_dirty(pfn);
10ba2d17d297292 arch/arm64/kvm/mmu.c Gavin Shan          2021-03-16  1582  		mark_page_dirty_in_slot(kvm, memslot, gfn);
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1583  	}
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1584  
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1585  out_unlock:
f783ef1c0e82e4f arch/arm64/kvm/mmu.c Jing Zhang          2022-01-18  1586  	read_unlock(&kvm->mmu_lock);
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1587  	kvm_release_pfn_clean(pfn);
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1588  	return ret != -EAGAIN ? ret : 0;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1589  }
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1590  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

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

* arch/arm64/kvm/mmu.c:1570 user_mem_abort() error: uninitialized symbol 'fault_granule'.
@ 2024-12-16  4:46 kernel test robot
  0 siblings, 0 replies; 9+ messages in thread
From: kernel test robot @ 2024-12-16  4:46 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Ard Biesheuvel <ardb@kernel.org>
CC: Marc Zyngier <maz@kernel.org>

Hi Ard,

FYI, the error/warning was bisected to this commit, please ignore it if it's irrelevant.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   78d4f34e2115b517bcbfe7ec0d018bbbb6f9b0b8
commit: 11e5ea5242e38d44fcede879473566bb6d68f954 KVM: arm64: Use helpers to classify exception types reported via ESR
date:   1 year, 1 month ago
:::::: branch date: 5 hours ago
:::::: commit date: 1 year, 1 month ago
config: arm64-randconfig-r073-20241207 (https://download.01.org/0day-ci/archive/20241216/202412161219.yvUleUYu-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 14.2.0

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@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202412161219.yvUleUYu-lkp@intel.com/

smatch warnings:
arch/arm64/kvm/mmu.c:1570 user_mem_abort() error: uninitialized symbol 'fault_granule'.

vim +/fault_granule +1570 arch/arm64/kvm/mmu.c

ea7fc1bb1cd1b92 arch/arm64/kvm/mmu.c Steven Price        2021-06-21  1376  
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1377  static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
98047888bb9fd57 arch/arm/kvm/mmu.c   Christoffer Dall    2014-08-19  1378  			  struct kvm_memory_slot *memslot, unsigned long hva,
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1379  			  bool fault_is_perm)
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1380  {
ffd1b63a5860968 arch/arm64/kvm/mmu.c Will Deacon         2020-09-30  1381  	int ret = 0;
6396b852e46e562 virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1382  	bool write_fault, writable, force_pte = false;
8c2e8ac8ad4be68 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1383  	bool exec_fault, mte_allowed;
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1384  	bool device = false;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1385  	unsigned long mmu_seq;
ad361f093c1e31d arch/arm/kvm/mmu.c   Christoffer Dall    2012-11-01  1386  	struct kvm *kvm = vcpu->kvm;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1387  	struct kvm_mmu_memory_cache *memcache = &vcpu->arch.mmu_page_cache;
ad361f093c1e31d arch/arm/kvm/mmu.c   Christoffer Dall    2012-11-01  1388  	struct vm_area_struct *vma;
1559b7583ff6ed0 virt/kvm/arm/mmu.c   James Morse         2019-12-17  1389  	short vma_shift;
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1390  	gfn_t gfn;
ba049e93aef7e8c arch/arm/kvm/mmu.c   Dan Williams        2016-01-15  1391  	kvm_pfn_t pfn;
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1392  	bool logging_active = memslot_is_logging(memslot);
e86fc1a3a3e9b48 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1393  	long vma_pagesize, fault_granule;
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1394  	enum kvm_pgtable_prot prot = KVM_PGTABLE_PROT_R;
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1395  	struct kvm_pgtable *pgt;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1396  
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1397  	if (fault_is_perm)
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1398  		fault_granule = kvm_vcpu_trap_get_perm_fault_granule(vcpu);
a7d079cea2dffb1 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-09  1399  	write_fault = kvm_is_write_fault(vcpu);
c4ad98e4b72cb5b arch/arm64/kvm/mmu.c Marc Zyngier        2020-09-15  1400  	exec_fault = kvm_vcpu_trap_is_exec_fault(vcpu);
d0e22b4ac3ba23c virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1401  	VM_BUG_ON(write_fault && exec_fault);
d0e22b4ac3ba23c virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1402  
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1403  	if (fault_is_perm && !write_fault && !exec_fault) {
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1404  		kvm_err("Unexpected L2 read permission error\n");
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1405  		return -EFAULT;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1406  	}
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1407  
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1408  	/*
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1409  	 * Permission faults just need to update the existing leaf entry,
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1410  	 * and so normally don't require allocations from the memcache. The
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1411  	 * only exception to this is when dirty logging is enabled at runtime
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1412  	 * and a write fault needs to collapse a block entry into a table.
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1413  	 */
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1414  	if (!fault_is_perm || (logging_active && write_fault)) {
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1415  		ret = kvm_mmu_topup_memory_cache(memcache,
fe49fd940e22592 arch/arm64/kvm/mmu.c Marc Zyngier        2023-10-12  1416  						 kvm_mmu_cache_min_pages(vcpu->arch.hw_mmu));
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1417  		if (ret)
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1418  			return ret;
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1419  	}
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1420  
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1421  	/*
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1422  	 * Let's check if we will get back a huge page backed by hugetlbfs, or
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1423  	 * get block mapping for device MMIO region.
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1424  	 */
89154dd5313f774 arch/arm64/kvm/mmu.c Michel Lespinasse   2020-06-08  1425  	mmap_read_lock(current->mm);
09eef83a801512a arch/arm64/kvm/mmu.c Liam Howlett        2021-06-28  1426  	vma = vma_lookup(current->mm, hva);
37b544087ef3f65 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1427  	if (unlikely(!vma)) {
37b544087ef3f65 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1428  		kvm_err("Failed to find VMA for hva 0x%lx\n", hva);
89154dd5313f774 arch/arm64/kvm/mmu.c Michel Lespinasse   2020-06-08  1429  		mmap_read_unlock(current->mm);
37b544087ef3f65 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1430  		return -EFAULT;
37b544087ef3f65 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1431  	}
37b544087ef3f65 arch/arm/kvm/mmu.c   Ard Biesheuvel      2014-09-17  1432  
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1433  	/*
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1434  	 * logging_active is guaranteed to never be true for VM_PFNMAP
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1435  	 * memslots.
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1436  	 */
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1437  	if (logging_active) {
a80868f39855484 virt/kvm/arm/mmu.c   Suzuki K Poulose    2019-03-12  1438  		force_pte = true;
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1439  		vma_shift = PAGE_SHIFT;
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1440  	} else {
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1441  		vma_shift = get_vma_page_shift(vma, hva);
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1442  	}
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1443  
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1444  	switch (vma_shift) {
faf000397e7f103 arch/arm64/kvm/mmu.c Gavin Shan          2020-11-03  1445  #ifndef __PAGETABLE_PMD_FOLDED
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1446  	case PUD_SHIFT:
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1447  		if (fault_supports_stage2_huge_mapping(memslot, hva, PUD_SIZE))
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1448  			break;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1449  		fallthrough;
faf000397e7f103 arch/arm64/kvm/mmu.c Gavin Shan          2020-11-03  1450  #endif
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1451  	case CONT_PMD_SHIFT:
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1452  		vma_shift = PMD_SHIFT;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1453  		fallthrough;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1454  	case PMD_SHIFT:
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1455  		if (fault_supports_stage2_huge_mapping(memslot, hva, PMD_SIZE))
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1456  			break;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1457  		fallthrough;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1458  	case CONT_PTE_SHIFT:
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1459  		vma_shift = PAGE_SHIFT;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1460  		force_pte = true;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1461  		fallthrough;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1462  	case PAGE_SHIFT:
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1463  		break;
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1464  	default:
2f40c46021bbb3e arch/arm64/kvm/mmu.c Gavin Shan          2020-10-26  1465  		WARN_ONCE(1, "Unknown vma_shift %d", vma_shift);
a80868f39855484 virt/kvm/arm/mmu.c   Suzuki K Poulose    2019-03-12  1466  	}
a80868f39855484 virt/kvm/arm/mmu.c   Suzuki K Poulose    2019-03-12  1467  
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1468  	vma_pagesize = 1UL << vma_shift;
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1469  	if (vma_pagesize == PMD_SIZE || vma_pagesize == PUD_SIZE)
523b3999e5f620c arch/arm64/kvm/mmu.c Alexandru Elisei    2020-09-10  1470  		fault_ipa &= ~(vma_pagesize - 1);
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1471  
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1472  	gfn = fault_ipa >> PAGE_SHIFT;
8c2e8ac8ad4be68 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1473  	mte_allowed = kvm_vma_mte_allowed(vma);
8c2e8ac8ad4be68 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1474  
8c2e8ac8ad4be68 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1475  	/* Don't use the VMA after the unlock -- it may have vanished */
8c2e8ac8ad4be68 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1476  	vma = NULL;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1477  
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1478  	/*
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1479  	 * Read mmu_invalidate_seq so that KVM can detect if the results of
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1480  	 * vma_lookup() or __gfn_to_pfn_memslot() become stale prior to
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1481  	 * acquiring kvm->mmu_lock.
10ba2d17d297292 arch/arm64/kvm/mmu.c Gavin Shan          2021-03-16  1482  	 *
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1483  	 * Rely on mmap_read_unlock() for an implicit smp_rmb(), which pairs
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1484  	 * with the smp_wmb() in kvm_mmu_invalidate_end().
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1485  	 */
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1486  	mmu_seq = vcpu->kvm->mmu_invalidate_seq;
13ec9308a85702a arch/arm64/kvm/mmu.c David Matlack       2023-03-13  1487  	mmap_read_unlock(current->mm);
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1488  
c8b88b332bedf47 arch/arm64/kvm/mmu.c Peter Xu            2022-10-11  1489  	pfn = __gfn_to_pfn_memslot(memslot, gfn, false, false, NULL,
10ba2d17d297292 arch/arm64/kvm/mmu.c Gavin Shan          2021-03-16  1490  				   write_fault, &writable, NULL);
196f878a7ac2e72 virt/kvm/arm/mmu.c   James Morse         2017-06-20  1491  	if (pfn == KVM_PFN_ERR_HWPOISON) {
1559b7583ff6ed0 virt/kvm/arm/mmu.c   James Morse         2019-12-17  1492  		kvm_send_hwpoison_signal(hva, vma_shift);
196f878a7ac2e72 virt/kvm/arm/mmu.c   James Morse         2017-06-20  1493  		return 0;
196f878a7ac2e72 virt/kvm/arm/mmu.c   James Morse         2017-06-20  1494  	}
9ac715954682b23 arch/arm/kvm/mmu.c   Christoffer Dall    2016-08-17  1495  	if (is_error_noslot_pfn(pfn))
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1496  		return -EFAULT;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1497  
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1498  	if (kvm_is_device_pfn(pfn)) {
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1499  		/*
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1500  		 * If the page was identified as device early by looking at
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1501  		 * the VMA flags, vma_pagesize is already representing the
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1502  		 * largest quantity we can map.  If instead it was mapped
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1503  		 * via gfn_to_pfn_prot(), vma_pagesize is set to PAGE_SIZE
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1504  		 * and must not be upgraded.
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1505  		 *
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1506  		 * In both cases, we don't let transparent_hugepage_adjust()
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1507  		 * change things at the last minute.
2aa53d68cee6603 arch/arm64/kvm/mmu.c Keqian Zhu          2021-05-07  1508  		 */
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1509  		device = true;
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1510  	} else if (logging_active && !write_fault) {
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1511  		/*
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1512  		 * Only actually map the page as writable if this was a write
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1513  		 * fault.
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1514  		 */
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1515  		writable = false;
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1516  	}
b88657674d39fc2 arch/arm/kvm/mmu.c   Kim Phillips        2014-06-26  1517  
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1518  	if (exec_fault && device)
6d674e28f642e3f virt/kvm/arm/mmu.c   Marc Zyngier        2019-12-11  1519  		return -ENOEXEC;
6d674e28f642e3f virt/kvm/arm/mmu.c   Marc Zyngier        2019-12-11  1520  
f783ef1c0e82e4f arch/arm64/kvm/mmu.c Jing Zhang          2022-01-18  1521  	read_lock(&kvm->mmu_lock);
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1522  	pgt = vcpu->arch.hw_mmu->pgt;
20ec3ebd707c77f arch/arm64/kvm/mmu.c Chao Peng           2022-08-16  1523  	if (mmu_invalidate_retry(kvm, mmu_seq))
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1524  		goto out_unlock;
15a49a44fc36209 arch/arm/kvm/mmu.c   Mario Smarduch      2015-01-15  1525  
3f58bf63455588a virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1526  	/*
0529c9021252a58 arch/arm64/kvm/mmu.c Suzuki K Poulose    2020-05-07  1527  	 * If we are not forced to use page mapping, check if we are
0529c9021252a58 arch/arm64/kvm/mmu.c Suzuki K Poulose    2020-05-07  1528  	 * backed by a THP and thus use block mapping if possible.
3f58bf63455588a virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1529  	 */
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1530  	if (vma_pagesize == PAGE_SIZE && !(force_pte || device)) {
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1531  		if (fault_is_perm && fault_granule > PAGE_SIZE)
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1532  			vma_pagesize = fault_granule;
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1533  		else
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1534  			vma_pagesize = transparent_hugepage_adjust(kvm, memslot,
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1535  								   hva, &pfn,
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1536  								   &fault_ipa);
e86fc1a3a3e9b48 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1537  
e86fc1a3a3e9b48 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1538  		if (vma_pagesize < 0) {
e86fc1a3a3e9b48 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1539  			ret = vma_pagesize;
e86fc1a3a3e9b48 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1540  			goto out_unlock;
e86fc1a3a3e9b48 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1541  		}
f2cc327303b13a7 arch/arm64/kvm/mmu.c Marc Zyngier        2021-07-26  1542  	}
a9c0e12ebee56ef virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1543  
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28  1544  	if (!fault_is_perm && !device && kvm_has_mte(kvm)) {
d89585fbb308690 arch/arm64/kvm/mmu.c Peter Collingbourne 2022-11-03  1545  		/* Check the VMM hasn't introduced a new disallowed VMA */
8c2e8ac8ad4be68 arch/arm64/kvm/mmu.c Marc Zyngier        2023-03-16  1546  		if (mte_allowed) {
2dbf12ae132cc78 arch/arm64/kvm/mmu.c Catalin Marinas     2022-11-03  1547  			sanitise_mte_tags(kvm, pfn, vma_pagesize);
2dbf12ae132cc78 arch/arm64/kvm/mmu.c Catalin Marinas     2022-11-03  1548  		} else {
9f03db6673598f6 arch/arm64/kvm/mmu.c Marc Zyngier        2021-06-22  1549  			ret = -EFAULT;
ea7fc1bb1cd1b92 arch/arm64/kvm/mmu.c Steven Price        2021-06-21  1550  			goto out_unlock;
ea7fc1bb1cd1b92 arch/arm64/kvm/mmu.c Steven Price        2021-06-21  1551  		}
2dbf12ae132cc78 arch/arm64/kvm/mmu.c Catalin Marinas     2022-11-03  1552  	}
3f58bf63455588a virt/kvm/arm/mmu.c   Punit Agrawal       2018-12-11  1553  
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1554  	if (writable)
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1555  		prot |= KVM_PGTABLE_PROT_W;
a9c0e12ebee56ef virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1556  
25aa28691bb960a arch/arm64/kvm/mmu.c Yanan Wang          2021-06-17  1557  	if (exec_fault)
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1558  		prot |= KVM_PGTABLE_PROT_X;
a9c0e12ebee56ef virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1559  
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1560  	if (device)
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1561  		prot |= KVM_PGTABLE_PROT_DEVICE;
d8569fba13850bb arch/arm64/kvm/mmu.c Mark Rutland        2023-10-16  1562  	else if (cpus_have_final_cap(ARM64_HAS_CACHE_DIC))
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1563  		prot |= KVM_PGTABLE_PROT_X;
a15f693935a9f1f virt/kvm/arm/mmu.c   Marc Zyngier        2017-10-23  1564  
7d894834a305568 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1565  	/*
7d894834a305568 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1566  	 * Under the premise of getting a FSC_PERM fault, we just need to relax
7d894834a305568 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1567  	 * permissions only if vma_pagesize equals fault_granule. Otherwise,
7d894834a305568 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1568  	 * kvm_pgtable_stage2_map() should be called to change block size.
7d894834a305568 arch/arm64/kvm/mmu.c Yanan Wang          2020-12-02  1569  	 */
11e5ea5242e38d4 arch/arm64/kvm/mmu.c Ard Biesheuvel      2023-11-28 @1570  	if (fault_is_perm && vma_pagesize == fault_granule)
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1571  		ret = kvm_pgtable_stage2_relax_perms(pgt, fault_ipa, prot);
1577cb5823cefdf arch/arm64/kvm/mmu.c Oliver Upton        2022-11-07  1572  	else
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1573  		ret = kvm_pgtable_stage2_map(pgt, fault_ipa, vma_pagesize,
6f745f1bb5bf291 arch/arm64/kvm/mmu.c Will Deacon         2020-09-11  1574  					     __pfn_to_phys(pfn), prot,
ddcadb297ce5cc1 arch/arm64/kvm/mmu.c Oliver Upton        2022-12-02  1575  					     memcache,
ddcadb297ce5cc1 arch/arm64/kvm/mmu.c Oliver Upton        2022-12-02  1576  					     KVM_PGTABLE_WALK_HANDLE_FAULT |
ddcadb297ce5cc1 arch/arm64/kvm/mmu.c Oliver Upton        2022-12-02  1577  					     KVM_PGTABLE_WALK_SHARED);
ad361f093c1e31d arch/arm/kvm/mmu.c   Christoffer Dall    2012-11-01  1578  
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1579  	/* Mark the page dirty only if the fault is handled successfully */
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1580  	if (writable && !ret) {
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1581  		kvm_set_pfn_dirty(pfn);
10ba2d17d297292 arch/arm64/kvm/mmu.c Gavin Shan          2021-03-16  1582  		mark_page_dirty_in_slot(kvm, memslot, gfn);
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1583  	}
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1584  
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1585  out_unlock:
f783ef1c0e82e4f arch/arm64/kvm/mmu.c Jing Zhang          2022-01-18  1586  	read_unlock(&kvm->mmu_lock);
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1587  	kvm_release_pfn_clean(pfn);
509552e65ae8287 arch/arm64/kvm/mmu.c Yanan Wang          2021-01-14  1588  	return ret != -EAGAIN ? ret : 0;
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1589  }
94f8e6418d3915d arch/arm/kvm/mmu.c   Christoffer Dall    2013-01-20  1590  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

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

end of thread, other threads:[~2024-12-16  4:47 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-17  4:22 arch/arm64/kvm/mmu.c:1570 user_mem_abort() error: uninitialized symbol 'fault_granule' kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2024-12-16  4:46 kernel test robot
2024-12-14  7:15 kernel test robot
2024-12-11 16:56 kernel test robot
2024-12-09  4:47 kernel test robot
2024-10-18 22:52 kernel test robot
2024-10-18  0:18 kernel test robot
2024-10-16  0:55 kernel test robot
2024-10-15  4:23 kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.