accel/kvm/kvm-all.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
Following commit 4802bf910eee9, add the other missing barrier when marking
the PFN as collected. This will also be required just like 4802bf910eee9
on weak ordering architectures like aarch64.
Cc: Marc Zyngier <maz@kernel.org>
Cc: Gavin Shan <gshan@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
---
accel/kvm/kvm-all.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index 136c8eaed3..60a044048e 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -728,7 +728,11 @@ static bool dirty_gfn_is_dirtied(struct kvm_dirty_gfn *gfn)
static void dirty_gfn_set_collected(struct kvm_dirty_gfn *gfn)
{
- gfn->flags = KVM_DIRTY_GFN_F_RESET;
+ /*
+ * Write the flags after reading the entry. Should pair with another
+ * smp_load_acquire() in KVM when reset dirty rings.
+ */
+ qatomic_store_release(&gfn->flags, KVM_DIRTY_GFN_F_RESET);
}
/*
--
2.32.0
Ping?
On 9/23/22 7:35 AM, Peter Xu wrote: > Following commit 4802bf910eee9, add the other missing barrier when marking > the PFN as collected. This will also be required just like 4802bf910eee9 > on weak ordering architectures like aarch64. > > Cc: Marc Zyngier <maz@kernel.org> > Cc: Gavin Shan <gshan@redhat.com> > Cc: Paolo Bonzini <pbonzini@redhat.com> > Signed-off-by: Peter Xu <peterx@redhat.com> > --- > accel/kvm/kvm-all.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > Reviewed-by: Gavin Shan <gshan@redhat.com> > diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c > index 136c8eaed3..60a044048e 100644 > --- a/accel/kvm/kvm-all.c > +++ b/accel/kvm/kvm-all.c > @@ -728,7 +728,11 @@ static bool dirty_gfn_is_dirtied(struct kvm_dirty_gfn *gfn) > > static void dirty_gfn_set_collected(struct kvm_dirty_gfn *gfn) > { > - gfn->flags = KVM_DIRTY_GFN_F_RESET; > + /* > + * Write the flags after reading the entry. Should pair with another > + * smp_load_acquire() in KVM when reset dirty rings. > + */ > + qatomic_store_release(&gfn->flags, KVM_DIRTY_GFN_F_RESET); > } > > /* >
On 22/9/22 23:35, Peter Xu wrote: > Following commit 4802bf910eee9, add the other missing barrier when marking > the PFN as collected. This will also be required just like 4802bf910eee9 > on weak ordering architectures like aarch64. > > Cc: Marc Zyngier <maz@kernel.org> > Cc: Gavin Shan <gshan@redhat.com> > Cc: Paolo Bonzini <pbonzini@redhat.com> > Signed-off-by: Peter Xu <peterx@redhat.com> > --- > accel/kvm/kvm-all.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c > index 136c8eaed3..60a044048e 100644 > --- a/accel/kvm/kvm-all.c > +++ b/accel/kvm/kvm-all.c > @@ -728,7 +728,11 @@ static bool dirty_gfn_is_dirtied(struct kvm_dirty_gfn *gfn) > > static void dirty_gfn_set_collected(struct kvm_dirty_gfn *gfn) > { > - gfn->flags = KVM_DIRTY_GFN_F_RESET; > + /* > + * Write the flags after reading the entry. Should pair with another > + * smp_load_acquire() in KVM when reset dirty rings. > + */ > + qatomic_store_release(&gfn->flags, KVM_DIRTY_GFN_F_RESET); > } > > /* Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
© 2016 - 2024 Red Hat, Inc.