On 08/02/2021 10:25, Jürgen Groß wrote: > On 08.02.21 11:23, Andrew Cooper wrote: >> On 08/02/2021 09:50, Jan Beulich wrote: >>> On 08.02.2021 10:44, Andrew Cooper wrote: >>>> On 06/02/2021 10:49, Juergen Gross wrote: >>>>> The ring buffer for user events is used in the local system only, so >>>>> smp barriers are fine for ensuring consistency. >>>>> >>>>> Reported-by: Andrew Cooper <andrew.coop...@citrix.com> >>>>> Signed-off-by: Juergen Gross <jgr...@suse.com> >>>> These need to be virt_* to not break in UP builds (on non-x86). >>> Initially I though so, too, but isn't the sole vCPU of such a >>> VM getting re-scheduled to a different pCPU in the hypervisor >>> an implied barrier anyway? >> >> Yes, but that isn't relevant to why UP builds break. >> >> smp_*() degrade to compiler barriers in UP builds, and while that's >> mostly fine for x86 read/write, its not fine for ARM barriers. >> >> virt_*() exist specifically to be smp_*() which don't degrade to broken >> in UP builds. > > But the barrier is really only necessary to serialize accesses within > the guest against each other. There is no guest outside party involved. > > In case you are right this would mean that UP guests are all broken on > Arm.
Oh - right. This is a ring between the interrupt handler and a task. Not a ring between the guest and something else. In which case smp_*() are correct. Sorry for the noise. ~Andrew