lkml.org 
[lkml]   [2021]   [Oct]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
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]
\
 
 \ /
  Last update: 2021-10-21 02:05    [W:0.159 / U:1.360 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site