On Thursday, March 5, 2020 11:29:44 AM -03 David Hildenbrand wrote: > We want to actually use resizeable allocations in resizeable ram blocks > (IOW, make everything between used_length and max_length inaccessible) - > however, not all ram block notifiers can support that. > > Introduce a way to detect if any registered notifier does not > support resizes - ram_block_notifiers_support_resize() - which we can later > use to fallback to legacy handling if a registered notifier (esp., SEV and > HAX) does not support actual resizes. > > Reviewed-by: Peter Xu <pet...@redhat.com> > Cc: Richard Henderson <r...@twiddle.net> > Cc: Paolo Bonzini <pbonz...@redhat.com> > Cc: "Dr. David Alan Gilbert" <dgilb...@redhat.com> > Cc: Eduardo Habkost <ehabk...@redhat.com> > Cc: Marcel Apfelbaum <marcel.apfelb...@gmail.com> > Cc: "Michael S. Tsirkin" <m...@redhat.com> > Cc: Igor Mammedov <imamm...@redhat.com> > Signed-off-by: David Hildenbrand <da...@redhat.com> > ---
Acked-by: Murilo Opsfelder Araujo <muri...@linux.ibm.com> > hw/core/numa.c | 12 ++++++++++++ > include/exec/ramlist.h | 1 + > 2 files changed, 13 insertions(+) > > diff --git a/hw/core/numa.c b/hw/core/numa.c > index 37ce175e13..1d5288c22c 100644 > --- a/hw/core/numa.c > +++ b/hw/core/numa.c > @@ -914,3 +914,15 @@ void ram_block_notify_resize(void *host, size_t > old_size, size_t new_size) } > } > } > + > +bool ram_block_notifiers_support_resize(void) > +{ > + RAMBlockNotifier *notifier; > + > + QLIST_FOREACH(notifier, &ram_list.ramblock_notifiers, next) { > + if (!notifier->ram_block_resized) { > + return false; > + } > + } > + return true; > +} > diff --git a/include/exec/ramlist.h b/include/exec/ramlist.h > index 293c0ddabe..ac5811be96 100644 > --- a/include/exec/ramlist.h > +++ b/include/exec/ramlist.h > @@ -79,6 +79,7 @@ void ram_block_notifier_remove(RAMBlockNotifier *n); > void ram_block_notify_add(void *host, size_t size, size_t max_size); > void ram_block_notify_remove(void *host, size_t size, size_t max_size); > void ram_block_notify_resize(void *host, size_t old_size, size_t new_size); > +bool ram_block_notifiers_support_resize(void); > > void ram_block_dump(Monitor *mon); -- Murilo