[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 6/7] xen/evtch: use smp barriers for user event ring
On 08/02/2021 10:36, Jan Beulich wrote: > On 08.02.2021 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.cooper3@xxxxxxxxxx> >>>>> Signed-off-by: Juergen Gross <jgross@xxxxxxxx> >>>> 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. > Hmm, I may not know enough of Arm's memory model - are you saying > Arm CPUs aren't even self-coherent, i.e. later operations (e.g. > the consuming of ring contents) won't observe earlier ones (the > updating of ring contents) when only a single physical CPU is > involved in all of this? (I did mention the hypervisor level > context switch simply because that's the only way multiple CPUs > can get involved.) In this case, no - see my later reply. I'd mistaken the two ends of this ring. As they're both inside the same guest, its fine. For cases such as the xenstore/console ring, the semantics required really are SMP, even if the guest is built UP. These cases really will break when smp_rmb() etc degrade to just a compiler barrier on architectures with weaker semantics than x86. ~Andrew
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |