Messages in this thread | | | Date | Thu, 21 Oct 2021 08:03:51 +0800 | From | kernel test robot <> | Subject | [intel-tdx:guest 53/136] arch/x86/kernel/acpi/boot.c:366:2: error: call to __compiletime_assert_231 declared with 'error' attribute: Need native word sized stores/loads for atomicity. |
| |
tree: https://github.com/intel/tdx.git guest head: 12f4800ff5dbe89a642744796008f89f23b2e446 commit: b93c111150948d0c5a55fca8e1620a05aa7e4298 [53/136] x86/acpi, x86/boot: Add multiprocessor wake-up support config: i386-randconfig-c001-20211019 (attached as .config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 9660563950aaed54020bfdf0be07e7096a9553e4) 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://github.com/intel/tdx/commit/b93c111150948d0c5a55fca8e1620a05aa7e4298 git remote add intel-tdx https://github.com/intel/tdx.git git fetch --no-tags intel-tdx guest git checkout b93c111150948d0c5a55fca8e1620a05aa7e4298 # save the attached .config to linux build tree mkdir build_dir COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> arch/x86/kernel/acpi/boot.c:366:2: error: call to __compiletime_assert_231 declared with 'error' attribute: Need native word sized stores/loads for atomicity. smp_store_release(&acpi_mp_wake_mailbox->wakeup_vector, start_ip); ^ include/asm-generic/barrier.h:138:33: note: expanded from macro 'smp_store_release' #define smp_store_release(p, v) __smp_store_release(p, v) ^ arch/x86/include/asm/barrier.h:65:2: note: expanded from macro '__smp_store_release' compiletime_assert_atomic_type(*p); \ ^ include/linux/compiler_types.h:325:2: note: expanded from macro 'compiletime_assert_atomic_type' compiletime_assert(__native_word(t), \ ^ note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) include/linux/compiler_types.h:310:2: note: expanded from macro '_compiletime_assert' __compiletime_assert(condition, msg, prefix, suffix) ^ include/linux/compiler_types.h:303:4: note: expanded from macro '__compiletime_assert' prefix ## suffix(); \ ^ <scratch space>:18:1: note: expanded from here __compiletime_assert_231 ^ 1 error generated.
vim +/error +366 arch/x86/kernel/acpi/boot.c
333 334 static int acpi_wakeup_cpu(int apicid, unsigned long start_ip) 335 { 336 u8 timeout = 0xFF; 337 338 /* Remap mailbox memory only for the first call to acpi_wakeup_cpu() */ 339 if (physids_empty(apic_id_wakemap)) { 340 acpi_mp_wake_mailbox = memremap(acpi_mp_wake_mailbox_paddr, 341 sizeof(*acpi_mp_wake_mailbox), 342 MEMREMAP_WB); 343 } 344 345 /* 346 * According to the ACPI specification r6.4, sec 5.2.12.19, the 347 * mailbox-based wakeup mechanism cannot be used more than once 348 * for the same CPU, so skip sending wake commands to already 349 * awake CPU. 350 */ 351 if (physid_isset(apicid, apic_id_wakemap)) { 352 pr_err("CPU already awake (APIC ID %x), skipping wakeup\n", 353 apicid); 354 return -EINVAL; 355 } 356 357 /* 358 * Mailbox memory is shared between firmware and OS. Firmware will 359 * listen on mailbox command address, and once it receives the wakeup 360 * command, CPU associated with the given apicid will be booted. So, 361 * the value of apic_id and wakeup_vector has to be set before updating 362 * the wakeup command. So use smp_store_release to let the compiler know 363 * about it and preserve the order of writes. 364 */ 365 smp_store_release(&acpi_mp_wake_mailbox->apic_id, apicid); > 366 smp_store_release(&acpi_mp_wake_mailbox->wakeup_vector, start_ip); 367 smp_store_release(&acpi_mp_wake_mailbox->command, 368 ACPI_MP_WAKE_COMMAND_WAKEUP); 369 370 /* 371 * After writing wakeup command, wait for maximum timeout of 0xFF 372 * for firmware to reset the command address back zero to indicate 373 * the successful reception of command. 374 * NOTE: 255 as timeout value is decided based on our experiments. 375 * 376 * XXX: Change the timeout once ACPI specification comes up with 377 * standard maximum timeout value. 378 */ 379 while (READ_ONCE(acpi_mp_wake_mailbox->command) && timeout--) 380 cpu_relax(); 381 382 if (timeout) { 383 /* 384 * If the CPU wakeup process is successful, store the 385 * status in apic_id_wakemap to prevent re-wakeup 386 * requests. 387 */ 388 physid_set(apicid, apic_id_wakemap); 389 return 0; 390 } 391 392 /* If timed out (timeout == 0), return error */ 393 return -EIO; 394 } 395
--- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org [unhandled content-type:application/gzip] | |