Subject: linux-next: build failure after merge of the kvm-arm tree

From: Stephen Rothwell <[email-masked]>
Date: Thu, 6 Mar 2025 16:46:14 +1100

Hi all,

After merging the kvm-arm tree, today's linux-next build (arm
multi_v7_defconfig) failed like this:

drivers/firmware/smccc/kvm_guest.c:58:14: warning: no previous prototype for 'kvm_arm_target_impl_cpu_init' [-Wmissing-prototypes]
   58 | void  __init kvm_arm_target_impl_cpu_init(void)
      |              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/firmware/smccc/kvm_guest.c: In function 'kvm_arm_target_impl_cpu_init':
drivers/firmware/smccc/kvm_guest.c:89:39: error: invalid application of 'sizeof' to incomplete type 'struct target_impl_cpu'
   89 |         target = memblock_alloc(sizeof(*target) * max_cpus,  __alignof__(*target));
      |                                       ^
drivers/firmware/smccc/kvm_guest.c:89:62: error: invalid application of '__alignof__' to incomplete type 'struct target_impl_cpu'
   89 |         target = memblock_alloc(sizeof(*target) * max_cpus,  __alignof__(*target));
      |                                                              ^~~~~~~~~~~
drivers/firmware/smccc/kvm_guest.c:102:23: error: invalid use of undefined type 'struct target_impl_cpu'
  102 |                 target[i].midr = res.a1;
      |                       ^
drivers/firmware/smccc/kvm_guest.c:102:26: error: invalid use of undefined type 'struct target_impl_cpu'
  102 |                 target[i].midr = res.a1;
      |                          ^
drivers/firmware/smccc/kvm_guest.c:103:23: error: invalid use of undefined type 'struct target_impl_cpu'
  103 |                 target[i].revidr = res.a2;
      |                       ^
drivers/firmware/smccc/kvm_guest.c:103:26: error: invalid use of undefined type 'struct target_impl_cpu'
  103 |                 target[i].revidr = res.a2;
      |                          ^
drivers/firmware/smccc/kvm_guest.c:104:23: error: invalid use of undefined type 'struct target_impl_cpu'
  104 |                 target[i].aidr = res.a3;
      |                       ^
drivers/firmware/smccc/kvm_guest.c:104:26: error: invalid use of undefined type 'struct target_impl_cpu'
  104 |                 target[i].aidr = res.a3;
      |                          ^
drivers/firmware/smccc/kvm_guest.c:107:14: error: implicit declaration of function 'cpu_errata_set_target_impl' [-Wimplicit-function-declaration]
  107 |         if (!cpu_errata_set_target_impl(max_cpus, target)) {
      |              ^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/firmware/smccc/kvm_guest.c:116:37: error: invalid application of 'sizeof' to incomplete type 'struct target_impl_cpu'
  116 |         memblock_free(target, sizeof(*target) * max_cpus);
      |                                     ^

Caused by commit

  86edf6bdcf05 ("smccc/kvm_guest: Enable errata based on implementation CPUs")

I have used the kvm-arm tree from next-20250305 for today.

-- 
Cheers,
Stephen Rothwell