Hi Sebastian, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on robh/for-next] [also build test WARNING on char-misc/char-misc-testing soc/for-next v5.18-rc6] [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] url: https://github.com/intel-lab-lkp/linux/commits/Sebastian-Ene/Detect-stalls-on-guest-vCPUS/20220509-174959 base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next config: h8300-randconfig-s032-20220509 (https://download.01.org/0day-ci/archive/20220510/202205100420.UlVQD7zP-lkp@xxxxxxxxx/config) compiler: h8300-linux-gcc (GCC) 11.3.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # apt-get install sparse # sparse version: v0.6.4-dirty # https://github.com/intel-lab-lkp/linux/commit/d3152372fdd19448b32806c0bffd78d8729d02e4 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Sebastian-Ene/Detect-stalls-on-guest-vCPUS/20220509-174959 git checkout d3152372fdd19448b32806c0bffd78d8729d02e4 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=h8300 SHELL=/bin/bash drivers/misc/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@xxxxxxxxx> sparse warnings: (new ones prefixed by >>) >> drivers/misc/vcpu_stall_detector.c:106:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct vm_stall_detect_s * @@ drivers/misc/vcpu_stall_detector.c:106:33: sparse: expected void const [noderef] __percpu *__vpp_verify drivers/misc/vcpu_stall_detector.c:106:33: sparse: got struct vm_stall_detect_s * drivers/misc/vcpu_stall_detector.c:115:32: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct vm_stall_detect_s * @@ drivers/misc/vcpu_stall_detector.c:115:32: sparse: expected void const [noderef] __percpu *__vpp_verify drivers/misc/vcpu_stall_detector.c:115:32: sparse: got struct vm_stall_detect_s * >> drivers/misc/vcpu_stall_detector.c:131:25: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct vm_stall_detect_s *vm_stall_detect @@ got struct vm_stall_detect_s [noderef] __percpu * @@ drivers/misc/vcpu_stall_detector.c:131:25: sparse: expected struct vm_stall_detect_s *vm_stall_detect drivers/misc/vcpu_stall_detector.c:131:25: sparse: got struct vm_stall_detect_s [noderef] __percpu * drivers/misc/vcpu_stall_detector.c:154:36: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct vm_stall_detect_s * @@ drivers/misc/vcpu_stall_detector.c:154:36: sparse: expected void const [noderef] __percpu *__vpp_verify drivers/misc/vcpu_stall_detector.c:154:36: sparse: got struct vm_stall_detect_s * >> drivers/misc/vcpu_stall_detector.c:177:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void [noderef] __percpu *__pdata @@ got struct vm_stall_detect_s *vm_stall_detect @@ drivers/misc/vcpu_stall_detector.c:177:21: sparse: expected void [noderef] __percpu *__pdata drivers/misc/vcpu_stall_detector.c:177:21: sparse: got struct vm_stall_detect_s *vm_stall_detect drivers/misc/vcpu_stall_detector.c:189:36: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct vm_stall_detect_s * @@ drivers/misc/vcpu_stall_detector.c:189:36: sparse: expected void const [noderef] __percpu *__vpp_verify drivers/misc/vcpu_stall_detector.c:189:36: sparse: got struct vm_stall_detect_s * drivers/misc/vcpu_stall_detector.c:194:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void [noderef] __percpu *__pdata @@ got struct vm_stall_detect_s *vm_stall_detect @@ drivers/misc/vcpu_stall_detector.c:194:21: sparse: expected void [noderef] __percpu *__pdata drivers/misc/vcpu_stall_detector.c:194:21: sparse: got struct vm_stall_detect_s *vm_stall_detect drivers/misc/vcpu_stall_detector.c: note: in included file (through include/linux/io.h): arch/h8300/include/asm/io.h:44:11: sparse: sparse: cast removes address space '__iomem' of expression arch/h8300/include/asm/io.h:44:11: sparse: sparse: cast removes address space '__iomem' of expression arch/h8300/include/asm/io.h:44:11: sparse: sparse: cast removes address space '__iomem' of expression arch/h8300/include/asm/io.h:44:11: sparse: sparse: cast removes address space '__iomem' of expression arch/h8300/include/asm/io.h:44:11: sparse: sparse: cast removes address space '__iomem' of expression vim +106 drivers/misc/vcpu_stall_detector.c 100 101 static int start_stall_detector_on_cpu(unsigned int cpu) 102 { 103 struct vm_stall_detect_s *vm_stall_detect; 104 105 vm_stall_detect = platform_get_drvdata(virt_dev); > 106 vcpu_stall_detect_start(this_cpu_ptr(vm_stall_detect)); 107 return 0; 108 } 109 110 static int stop_stall_detector_on_cpu(unsigned int cpu) 111 { 112 struct vm_stall_detect_s *vm_stall_detect; 113 114 vm_stall_detect = platform_get_drvdata(virt_dev); 115 vcpu_stall_detect_stop(this_cpu_ptr(vm_stall_detect)); 116 return 0; 117 } 118 119 static int vcpu_stall_detect_probe(struct platform_device *dev) 120 { 121 int cpu, ret, err; 122 void __iomem *membase; 123 struct resource *r; 124 struct vm_stall_detect_s *vm_stall_detect; 125 u32 stall_detect_clock, stall_detect_timeout_sec = 0; 126 127 r = platform_get_resource(dev, IORESOURCE_MEM, 0); 128 if (r == NULL) 129 return -ENOENT; 130 > 131 vm_stall_detect = alloc_percpu(typeof(struct vm_stall_detect_s)); 132 if (!vm_stall_detect) 133 return -ENOMEM; 134 135 membase = ioremap(r->start, resource_size(r)); 136 if (!membase) { 137 ret = -ENXIO; 138 goto err_withmem; 139 } 140 141 virt_dev = dev; 142 platform_set_drvdata(dev, vm_stall_detect); 143 if (of_property_read_u32(dev->dev.of_node, "clock-frequency", 144 &stall_detect_clock)) 145 stall_detect_clock = DEFAULT_CLOCK_HZ; 146 147 if (of_property_read_u32(dev->dev.of_node, "timeout-sec", 148 &stall_detect_timeout_sec)) 149 stall_detect_timeout_sec = DEFAULT_TIMEOT_SEC; 150 151 for_each_cpu_and(cpu, cpu_online_mask, &watchdog_cpumask) { 152 struct vm_stall_detect_s *cpu_stall_detect; 153 154 cpu_stall_detect = per_cpu_ptr(vm_stall_detect, cpu); 155 cpu_stall_detect->membase = membase + cpu * REG_LEN; 156 cpu_stall_detect->clock_freq = stall_detect_clock; 157 cpu_stall_detect->expiration_sec = stall_detect_timeout_sec; 158 cpu_stall_detect->ping_timeout_ms = stall_detect_timeout_sec * 159 MSEC_PER_SEC / 2; 160 smp_call_function_single(cpu, vcpu_stall_detect_start, 161 cpu_stall_detect, true); 162 } 163 164 err = cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN, 165 "virt/vcpu_stall_detector:online", 166 start_stall_detector_on_cpu, 167 stop_stall_detector_on_cpu); 168 if (err < 0) { 169 dev_warn(&dev->dev, "failed to install cpu hotplug"); 170 ret = err; 171 goto err_withmem; 172 } 173 174 return 0; 175 176 err_withmem: > 177 free_percpu(vm_stall_detect); 178 return ret; 179 } 180 -- 0-DAY CI Kernel Test Service https://01.org/lkp