On 22/02/2023 4:17 pm, Jan Beulich wrote: > On 22.02.2023 17:04, Andrew Cooper wrote: >> While testing the rebuilt debian unstable container, I found: >> >> common/core_parking.c: In function 'core_parking_remove': >> common/core_parking.c:230:53: error: array subscript 1 is above array >> bounds of 'unsigned int[1]' [-Werror=array-bounds] >> 230 | core_parking_cpunum[i] = core_parking_cpunum[i + 1]; >> | ~~~~~~~~~~~~~~~~~~~^~~~~~~ >> common/core_parking.c:31:21: note: while referencing 'core_parking_cpunum' >> 31 | static unsigned int core_parking_cpunum[NR_CPUS] = {[0 ... >> NR_CPUS-1] = -1}; >> | ^~~~~~~~~~~~~~~~~~~ >> >> >> which is an legitimate complaint - this logic is simply broken with >> NR_CPUS=1. >> >> In principle, I think the best fix is probably to have CORE_PARKING >> depend on NR_CPUS > 1, except none of the interacting x86 code has been >> written in a way that would be compatible. >> >> But it also occurs to me that this is the kind of thing an embedded x86 >> usecase would want to compile. Frankly, its niche even on regular x86 >> use-cases. >> >> Except having looked at the code, it's a different to the other thing we >> call core parking which is the smt=0 logic to keep the stacks valid for >> cores/threads we don't want to use, because of #MC broadcast problems - >> and this logic does need to stay. >> >> Thoughts? > See "core-parking: fix build with gcc12 and NR_CPUS=1" sent back in September > last year.
I'd clearly missed that thread, but the final part seems to have agreed on a NR_CPUS check, with you saying that you'd send a v2 "in a minute". ~Andrew