Hi Ashish,

kernel test robot noticed the following build errors:

[auto build test ERROR on tip/master]
[also build test ERROR on linus/master next-20240410]
[cannot apply to tip/x86/core tip/x86/mm tip/auto-latest]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    
https://github.com/intel-lab-lkp/linux/commits/Ashish-Kalra/efi-x86-skip-efi_arch_mem_reserve-in-case-of-kexec/20240410-044512
base:   tip/master
patch link:    
https://lore.kernel.org/r/b24885f5495f6b8ba2f9e825fda9188fcbf28231.1712694667.git.ashish.kalra%40amd.com
patch subject: [PATCH v4 4/4] x86/snp: Convert shared memory back to private on 
kexec
config: x86_64-rhel-8.3-rust 
(https://download.01.org/0day-ci/archive/20240410/202404102232.ukwwhste-...@intel.com/config)
compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 
6009708b4367171ccdbf4b5905cb6a803753fe18)
reproduce (this is a W=1 build): 
(https://download.01.org/0day-ci/archive/20240410/202404102232.ukwwhste-...@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <l...@intel.com>
| Closes: 
https://lore.kernel.org/oe-kbuild-all/202404102232.ukwwhste-...@intel.com/

All errors (new ones prefixed by >>):

>> arch/x86/kernel/sev.c:993:14: error: call to undeclared function 
>> 'pte_decrypted'; ISO C99 and later do not support implicit function 
>> declarations [-Wimplicit-function-declaration]
     993 |                 if (pte && pte_decrypted(*pte) && !pte_none(*pte)) {
         |                            ^
   arch/x86/kernel/sev.c:1021:16: error: call to undeclared function 
'pte_decrypted'; ISO C99 and later do not support implicit function 
declarations [-Wimplicit-function-declaration]
    1021 |                 if (!pte || !pte_decrypted(*pte) || pte_none(*pte))
         |                              ^
>> arch/x86/kernel/sev.c:1041:7: error: call to undeclared function 
>> 'stop_memory_enc_conversion'; ISO C99 and later do not support implicit 
>> function declarations [-Wimplicit-function-declaration]
    1041 |         if (!stop_memory_enc_conversion(wait_for_lock))
         |              ^
   3 errors generated.
--
>> arch/x86/mm/mem_encrypt_amd.c:471:21: error: no member named 
>> 'enc_kexec_stop_conversion' in 'struct x86_guest'
     471 |         x86_platform.guest.enc_kexec_stop_conversion = 
snp_kexec_stop_conversion;
         |         ~~~~~~~~~~~~~~~~~~ ^
>> arch/x86/mm/mem_encrypt_amd.c:472:21: error: no member named 
>> 'enc_kexec_unshare_mem' in 'struct x86_guest'
     472 |         x86_platform.guest.enc_kexec_unshare_mem     = 
snp_kexec_unshare_mem;
         |         ~~~~~~~~~~~~~~~~~~ ^
   2 errors generated.


vim +/pte_decrypted +993 arch/x86/kernel/sev.c

   970  
   971  static void unshare_all_memory(void)
   972  {
   973          unsigned long addr, end;
   974  
   975          /*
   976           * Walk direct mapping and convert all shared memory back to 
private,
   977           */
   978  
   979          addr = PAGE_OFFSET;
   980          end  = PAGE_OFFSET + get_max_mapped();
   981  
   982          while (addr < end) {
   983                  unsigned long size;
   984                  unsigned int level;
   985                  pte_t *pte;
   986  
   987                  pte = lookup_address(addr, &level);
   988                  size = page_level_size(level);
   989  
   990                  /*
   991                   * pte_none() check is required to skip physical memory 
holes in direct mapped.
   992                   */
 > 993                  if (pte && pte_decrypted(*pte) && !pte_none(*pte)) {
   994                          int pages = size / PAGE_SIZE;
   995  
   996                          if (!make_pte_private(pte, addr, pages, level)) 
{
   997                                  pr_err("Failed to unshare range 
%#lx-%#lx\n",
   998                                         addr, addr + size);
   999                          }
  1000  
  1001                  }
  1002  
  1003                  addr += size;
  1004          }
  1005          __flush_tlb_all();
  1006  
  1007  }
  1008  
  1009  static void unshare_all_bss_decrypted_memory(void)
  1010  {
  1011          unsigned long vaddr, vaddr_end;
  1012          unsigned int level;
  1013          unsigned int npages;
  1014          pte_t *pte;
  1015  
  1016          vaddr = (unsigned long)__start_bss_decrypted;
  1017          vaddr_end = (unsigned long)__start_bss_decrypted_unused;
  1018          npages = (vaddr_end - vaddr) >> PAGE_SHIFT;
  1019          for (; vaddr < vaddr_end; vaddr += PAGE_SIZE) {
  1020                  pte = lookup_address(vaddr, &level);
  1021                  if (!pte || !pte_decrypted(*pte) || pte_none(*pte))
  1022                          continue;
  1023  
  1024                  set_pte_enc(pte, level, (void *)vaddr);
  1025          }
  1026          vaddr = (unsigned long)__start_bss_decrypted;
  1027          snp_set_memory_private(vaddr, npages);
  1028  }
  1029  
  1030  /* Stop new private<->shared conversions */
  1031  void snp_kexec_stop_conversion(bool crash)
  1032  {
  1033          /*
  1034           * Crash kernel reaches here with interrupts disabled: can't 
wait for
  1035           * conversions to finish.
  1036           *
  1037           * If race happened, just report and proceed.
  1038           */
  1039          bool wait_for_lock = !crash;
  1040  
> 1041          if (!stop_memory_enc_conversion(wait_for_lock))
  1042                  pr_warn("Failed to finish shared<->private 
conversions\n");
  1043  }
  1044  

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

_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

Reply via email to