[PATCH 1/3] powerpc: inline doorbell sending functions
kernel test robot
lkp at intel.com
Sun Jun 28 05:46:56 AEST 2020
Hi Nicholas,
I love your patch! Yet something to improve:
[auto build test ERROR on powerpc/next]
[also build test ERROR on scottwood/next v5.8-rc2 next-20200626]
[cannot apply to kvm-ppc/kvm-ppc-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Nicholas-Piggin/powerpc-pseries-IPI-doorbell-improvements/20200627-230544
base: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next
config: powerpc-randconfig-c003-20200628 (attached as .config)
compiler: powerpc64-linux-gcc (GCC) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp at intel.com>
All error/warnings (new ones prefixed by >>):
In file included from arch/powerpc/kernel/asm-offsets.c:38:
arch/powerpc/include/asm/dbell.h: In function 'doorbell_global_ipi':
>> arch/powerpc/include/asm/dbell.h:114:12: error: implicit declaration of function 'get_hard_smp_processor_id'; did you mean 'raw_smp_processor_id'? [-Werror=implicit-function-declaration]
114 | u32 tag = get_hard_smp_processor_id(cpu);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
| raw_smp_processor_id
arch/powerpc/include/asm/dbell.h: In function 'doorbell_try_core_ipi':
>> arch/powerpc/include/asm/dbell.h:146:28: error: implicit declaration of function 'cpu_sibling_mask'; did you mean 'cpu_online_mask'? [-Werror=implicit-function-declaration]
146 | if (cpumask_test_cpu(cpu, cpu_sibling_mask(this_cpu))) {
| ^~~~~~~~~~~~~~~~
| cpu_online_mask
>> arch/powerpc/include/asm/dbell.h:146:28: warning: passing argument 2 of 'cpumask_test_cpu' makes pointer from integer without a cast [-Wint-conversion]
146 | if (cpumask_test_cpu(cpu, cpu_sibling_mask(this_cpu))) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| int
In file included from include/linux/workqueue.h:15,
from include/linux/rhashtable-types.h:15,
from include/linux/ipc.h:7,
from include/uapi/linux/sem.h:5,
from include/linux/sem.h:5,
from include/linux/compat.h:14,
from arch/powerpc/kernel/asm-offsets.c:14:
include/linux/cpumask.h:365:67: note: expected 'const struct cpumask *' but argument is of type 'int'
365 | static inline int cpumask_test_cpu(int cpu, const struct cpumask *cpumask)
| ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:114: arch/powerpc/kernel/asm-offsets.s] Error 1
make[2]: Target '__build' not remade because of errors.
make[1]: *** [Makefile:1175: prepare0] Error 2
make[1]: Target 'prepare' not remade because of errors.
make: *** [Makefile:185: __sub-make] Error 2
make: Target 'prepare' not remade because of errors.
vim +114 arch/powerpc/include/asm/dbell.h
100
101 /*
102 * Doorbells must only be used if CPU_FTR_DBELL is available.
103 * msgsnd is used in HV, and msgsndp is used in !HV.
104 *
105 * These should be used by platform code that is aware of restrictions.
106 * Other arch code should use ->cause_ipi.
107 *
108 * doorbell_global_ipi() sends a dbell to any target CPU.
109 * Must be used only by architectures that address msgsnd target
110 * by PIR/get_hard_smp_processor_id.
111 */
112 static inline void doorbell_global_ipi(int cpu)
113 {
> 114 u32 tag = get_hard_smp_processor_id(cpu);
115
116 kvmppc_set_host_ipi(cpu);
117 /* Order previous accesses vs. msgsnd, which is treated as a store */
118 ppc_msgsnd_sync();
119 ppc_msgsnd(PPC_DBELL_MSGTYPE, 0, tag);
120 }
121
122 /*
123 * doorbell_core_ipi() sends a dbell to a target CPU in the same core.
124 * Must be used only by architectures that address msgsnd target
125 * by TIR/cpu_thread_in_core.
126 */
127 static inline void doorbell_core_ipi(int cpu)
128 {
129 u32 tag = cpu_thread_in_core(cpu);
130
131 kvmppc_set_host_ipi(cpu);
132 /* Order previous accesses vs. msgsnd, which is treated as a store */
133 ppc_msgsnd_sync();
134 ppc_msgsnd(PPC_DBELL_MSGTYPE, 0, tag);
135 }
136
137 /*
138 * Attempt to cause a core doorbell if destination is on the same core.
139 * Returns 1 on success, 0 on failure.
140 */
141 static inline int doorbell_try_core_ipi(int cpu)
142 {
143 int this_cpu = get_cpu();
144 int ret = 0;
145
> 146 if (cpumask_test_cpu(cpu, cpu_sibling_mask(this_cpu))) {
147 doorbell_core_ipi(cpu);
148 ret = 1;
149 }
150
151 put_cpu();
152
153 return ret;
154 }
155
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 25869 bytes
Desc: not available
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20200628/1429ec96/attachment-0001.gz>
More information about the Linuxppc-dev
mailing list