[arm-platforms:kvm-arm64/per-vcpu-host-pmu-data 3/4] arch/arm64/kvm/arm.c:764:23: error: 'struct kvm_pmu' has no member named 'events'

kernel test robot lkp at intel.com
Mon May 16 03:42:33 PDT 2022


tree:   https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git kvm-arm64/per-vcpu-host-pmu-data
head:   722625c6f4c5b6a9953d6af04c7bb1a6e12830b3
commit: 84d751a019a9792f5b4884e1d598b603c360ec22 [3/4] KVM: arm64: Pass pmu events to hyp via vcpu
config: arm64-randconfig-r022-20220516 (https://download.01.org/0day-ci/archive/20220516/202205161814.KQHpOzsJ-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 11.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git/commit/?id=84d751a019a9792f5b4884e1d598b603c360ec22
        git remote add arm-platforms https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git
        git fetch --no-tags arm-platforms kvm-arm64/per-vcpu-host-pmu-data
        git checkout 84d751a019a9792f5b4884e1d598b603c360ec22
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash arch/arm64/kvm/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp at intel.com>

All errors (new ones prefixed by >>):

   arch/arm64/kvm/arm.c: In function 'kvm_pmu_update_vcpu_events':
>> arch/arm64/kvm/arm.c:764:23: error: 'struct kvm_pmu' has no member named 'events'
     764 |         vcpu->arch.pmu.events = *kvm_get_pmu_events();
         |                       ^
>> arch/arm64/kvm/arm.c:764:33: error: invalid use of undefined type 'struct kvm_pmu_events'
     764 |         vcpu->arch.pmu.events = *kvm_get_pmu_events();
         |                                 ^
--
   In file included from include/asm-generic/percpu.h:7,
                    from arch/arm64/include/asm/percpu.h:248,
                    from arch/arm64/include/asm/smp.h:28,
                    from include/linux/smp.h:113,
                    from include/linux/percpu.h:7,
                    from include/linux/context_tracking_state.h:5,
                    from include/linux/hardirq.h:5,
                    from include/linux/kvm_host.h:7,
                    from arch/arm64/kvm/pmu.c:6:
   arch/arm64/kvm/pmu.c: In function 'kvm_get_pmu_events':
>> include/linux/percpu-defs.h:219:59: error: invalid use of undefined type 'struct kvm_pmu_events'
     219 |         const void __percpu *__vpp_verify = (typeof((ptr) + 0))NULL;    \
         |                                                           ^
   include/linux/percpu-defs.h:241:9: note: in expansion of macro '__verify_pcpu_ptr'
     241 |         __verify_pcpu_ptr(ptr);                                         \
         |         ^~~~~~~~~~~~~~~~~
   include/linux/percpu-defs.h:252:27: note: in expansion of macro 'raw_cpu_ptr'
     252 | #define this_cpu_ptr(ptr) raw_cpu_ptr(ptr)
         |                           ^~~~~~~~~~~
   arch/arm64/kvm/pmu.c:31:16: note: in expansion of macro 'this_cpu_ptr'
      31 |         return this_cpu_ptr(&kvm_pmu_events);
         |                ^~~~~~~~~~~~
   arch/arm64/kvm/pmu.c: In function 'kvm_set_pmu_events':
>> arch/arm64/kvm/pmu.c:46:20: error: invalid use of undefined type 'struct kvm_pmu_events'
      46 |                 pmu->events_host |= set;
         |                    ^~
   arch/arm64/kvm/pmu.c:48:20: error: invalid use of undefined type 'struct kvm_pmu_events'
      48 |                 pmu->events_guest |= set;
         |                    ^~
   arch/arm64/kvm/pmu.c: In function 'kvm_clr_pmu_events':
   arch/arm64/kvm/pmu.c:61:12: error: invalid use of undefined type 'struct kvm_pmu_events'
      61 |         pmu->events_host &= ~clr;
         |            ^~
   arch/arm64/kvm/pmu.c:62:12: error: invalid use of undefined type 'struct kvm_pmu_events'
      62 |         pmu->events_guest &= ~clr;
         |            ^~
   arch/arm64/kvm/pmu.c: In function 'kvm_vcpu_pmu_restore_guest':
   arch/arm64/kvm/pmu.c:186:27: error: invalid use of undefined type 'struct kvm_pmu_events'
     186 |         events_guest = pmu->events_guest;
         |                           ^~
   arch/arm64/kvm/pmu.c:187:26: error: invalid use of undefined type 'struct kvm_pmu_events'
     187 |         events_host = pmu->events_host;
         |                          ^~
   arch/arm64/kvm/pmu.c: In function 'kvm_vcpu_pmu_restore_host':
   arch/arm64/kvm/pmu.c:206:27: error: invalid use of undefined type 'struct kvm_pmu_events'
     206 |         events_guest = pmu->events_guest;
         |                           ^~
   arch/arm64/kvm/pmu.c:207:26: error: invalid use of undefined type 'struct kvm_pmu_events'
     207 |         events_host = pmu->events_host;
         |                          ^~
   In file included from include/asm-generic/percpu.h:7,
                    from arch/arm64/include/asm/percpu.h:248,
                    from arch/arm64/include/asm/smp.h:28,
                    from include/linux/smp.h:113,
                    from include/linux/percpu.h:7,
                    from include/linux/context_tracking_state.h:5,
                    from include/linux/hardirq.h:5,
                    from include/linux/kvm_host.h:7,
                    from arch/arm64/kvm/pmu.c:6:
   arch/arm64/kvm/pmu.c: At top level:
>> arch/arm64/kvm/pmu.c:9:46: error: storage size of 'kvm_pmu_events' isn't known
       9 | static DEFINE_PER_CPU(struct kvm_pmu_events, kvm_pmu_events);
         |                                              ^~~~~~~~~~~~~~
   include/linux/percpu-defs.h:104:44: note: in definition of macro 'DEFINE_PER_CPU_SECTION'
     104 |         __PCPU_ATTRS(sec) __typeof__(type) name
         |                                            ^~~~
   arch/arm64/kvm/pmu.c:9:8: note: in expansion of macro 'DEFINE_PER_CPU'
       9 | static DEFINE_PER_CPU(struct kvm_pmu_events, kvm_pmu_events);
         |        ^~~~~~~~~~~~~~
--
   arch/arm64/kvm/hyp/nvhe/switch.c: In function '__pmu_switch_to_guest':
>> arch/arm64/kvm/hyp/nvhe/switch.c:128:53: error: 'struct kvm_pmu' has no member named 'events'
     128 |         struct kvm_pmu_events *pmu = &vcpu->arch.pmu.events;
         |                                                     ^
>> arch/arm64/kvm/hyp/nvhe/switch.c:130:16: error: invalid use of undefined type 'struct kvm_pmu_events'
     130 |         if (pmu->events_host)
         |                ^~
   In file included from arch/arm64/include/asm/cputype.h:175,
                    from arch/arm64/include/asm/cache.h:8,
                    from include/linux/cache.h:6,
                    from include/linux/printk.h:9,
                    from include/asm-generic/bug.h:22,
                    from arch/arm64/include/asm/bug.h:26,
                    from include/linux/bug.h:5,
                    from include/linux/mmdebug.h:5,
                    from include/linux/percpu.h:5,
                    from include/linux/context_tracking_state.h:5,
                    from include/linux/hardirq.h:5,
                    from include/linux/kvm_host.h:7,
                    from arch/arm64/include/asm/kvm_emulate.h:14,
                    from arch/arm64/kvm/hyp/include/hyp/adjust_pc.h:13,
                    from arch/arm64/kvm/hyp/include/hyp/switch.h:10,
                    from arch/arm64/kvm/hyp/nvhe/switch.c:7:
   arch/arm64/kvm/hyp/nvhe/switch.c:131:33: error: invalid use of undefined type 'struct kvm_pmu_events'
     131 |                 write_sysreg(pmu->events_host, pmcntenclr_el0);
         |                                 ^~
   arch/arm64/include/asm/sysreg.h:1300:27: note: in definition of macro 'write_sysreg'
    1300 |         u64 __val = (u64)(v);                                   \
         |                           ^
   arch/arm64/kvm/hyp/nvhe/switch.c:133:16: error: invalid use of undefined type 'struct kvm_pmu_events'
     133 |         if (pmu->events_guest)
         |                ^~
   In file included from arch/arm64/include/asm/cputype.h:175,
                    from arch/arm64/include/asm/cache.h:8,
                    from include/linux/cache.h:6,
                    from include/linux/printk.h:9,
                    from include/asm-generic/bug.h:22,
                    from arch/arm64/include/asm/bug.h:26,
                    from include/linux/bug.h:5,
                    from include/linux/mmdebug.h:5,
                    from include/linux/percpu.h:5,
                    from include/linux/context_tracking_state.h:5,
                    from include/linux/hardirq.h:5,
                    from include/linux/kvm_host.h:7,
                    from arch/arm64/include/asm/kvm_emulate.h:14,
                    from arch/arm64/kvm/hyp/include/hyp/adjust_pc.h:13,
                    from arch/arm64/kvm/hyp/include/hyp/switch.h:10,
                    from arch/arm64/kvm/hyp/nvhe/switch.c:7:
   arch/arm64/kvm/hyp/nvhe/switch.c:134:33: error: invalid use of undefined type 'struct kvm_pmu_events'
     134 |                 write_sysreg(pmu->events_guest, pmcntenset_el0);
         |                                 ^~
   arch/arm64/include/asm/sysreg.h:1300:27: note: in definition of macro 'write_sysreg'
    1300 |         u64 __val = (u64)(v);                                   \
         |                           ^
   arch/arm64/kvm/hyp/nvhe/switch.c:136:20: error: invalid use of undefined type 'struct kvm_pmu_events'
     136 |         return (pmu->events_host || pmu->events_guest);
         |                    ^~
   arch/arm64/kvm/hyp/nvhe/switch.c:136:40: error: invalid use of undefined type 'struct kvm_pmu_events'
     136 |         return (pmu->events_host || pmu->events_guest);
         |                                        ^~
   arch/arm64/kvm/hyp/nvhe/switch.c: In function '__pmu_switch_to_host':
   arch/arm64/kvm/hyp/nvhe/switch.c:144:53: error: 'struct kvm_pmu' has no member named 'events'
     144 |         struct kvm_pmu_events *pmu = &vcpu->arch.pmu.events;
         |                                                     ^
   arch/arm64/kvm/hyp/nvhe/switch.c:146:16: error: invalid use of undefined type 'struct kvm_pmu_events'
     146 |         if (pmu->events_guest)
         |                ^~
   In file included from arch/arm64/include/asm/cputype.h:175,
                    from arch/arm64/include/asm/cache.h:8,
                    from include/linux/cache.h:6,
                    from include/linux/printk.h:9,
                    from include/asm-generic/bug.h:22,
                    from arch/arm64/include/asm/bug.h:26,
                    from include/linux/bug.h:5,
                    from include/linux/mmdebug.h:5,
                    from include/linux/percpu.h:5,
                    from include/linux/context_tracking_state.h:5,
                    from include/linux/hardirq.h:5,
                    from include/linux/kvm_host.h:7,
                    from arch/arm64/include/asm/kvm_emulate.h:14,
                    from arch/arm64/kvm/hyp/include/hyp/adjust_pc.h:13,
                    from arch/arm64/kvm/hyp/include/hyp/switch.h:10,
                    from arch/arm64/kvm/hyp/nvhe/switch.c:7:
   arch/arm64/kvm/hyp/nvhe/switch.c:147:33: error: invalid use of undefined type 'struct kvm_pmu_events'
     147 |                 write_sysreg(pmu->events_guest, pmcntenclr_el0);
         |                                 ^~
   arch/arm64/include/asm/sysreg.h:1300:27: note: in definition of macro 'write_sysreg'
    1300 |         u64 __val = (u64)(v);                                   \
         |                           ^
   arch/arm64/kvm/hyp/nvhe/switch.c:149:16: error: invalid use of undefined type 'struct kvm_pmu_events'
     149 |         if (pmu->events_host)
         |                ^~
   In file included from arch/arm64/include/asm/cputype.h:175,
                    from arch/arm64/include/asm/cache.h:8,
                    from include/linux/cache.h:6,
                    from include/linux/printk.h:9,
                    from include/asm-generic/bug.h:22,
                    from arch/arm64/include/asm/bug.h:26,
                    from include/linux/bug.h:5,
                    from include/linux/mmdebug.h:5,
                    from include/linux/percpu.h:5,
                    from include/linux/context_tracking_state.h:5,
                    from include/linux/hardirq.h:5,
                    from include/linux/kvm_host.h:7,
                    from arch/arm64/include/asm/kvm_emulate.h:14,


vim +764 arch/arm64/kvm/arm.c

   753	
   754	/*
   755	 * Updates the vcpu's view of the pmu events for this cpu.
   756	 * Must be called before every vcpu run after disabling interrupts, to ensure
   757	 * that an interrupt cannot fire and update the structure.
   758	 */
   759	static void kvm_pmu_update_vcpu_events(struct kvm_vcpu *vcpu)
   760	{
   761		if (has_vhe() || !kvm_vcpu_has_pmu(vcpu))
   762			return;
   763	
 > 764		vcpu->arch.pmu.events = *kvm_get_pmu_events();
   765	}
   766	

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp



More information about the linux-arm-kernel mailing list