Message ID | 20201029152054.28635-1-roger.pau@citrix.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | x86/hvm: process softirq while saving/loading entries | expand |
On 29.10.2020 16:20, Roger Pau Monne wrote: > On slow systems with sync_console saving or loading the context of big > guests can cause the watchdog to trigger. Fix this by adding a couple > of process_pending_softirqs. Which raises the question in how far this is then also a problem for the caller of the underlying hypercall. IOW I wonder whether instead we need to make use of continuations here. Nevertheless ... > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> Acked-by: Jan Beulich <jbeulich@suse.com> Jan
On Thu, Oct 29, 2020 at 05:38:17PM +0100, Jan Beulich wrote: > On 29.10.2020 16:20, Roger Pau Monne wrote: > > On slow systems with sync_console saving or loading the context of big > > guests can cause the watchdog to trigger. Fix this by adding a couple > > of process_pending_softirqs. > > Which raises the question in how far this is then also a problem > for the caller of the underlying hypercall. IOW I wonder whether > instead we need to make use of continuations here. Nevertheless FWIW, I've only hit this with debug builds on boxes that have slow serial with sync_console enabled, due to the verbose printks. > > > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> > > Acked-by: Jan Beulich <jbeulich@suse.com> Thanks.
diff --git a/xen/arch/x86/hvm/save.c b/xen/arch/x86/hvm/save.c index a2c56fbc1e..584620985b 100644 --- a/xen/arch/x86/hvm/save.c +++ b/xen/arch/x86/hvm/save.c @@ -21,6 +21,7 @@ */ #include <xen/guest_access.h> +#include <xen/softirq.h> #include <xen/version.h> #include <asm/hvm/support.h> @@ -255,6 +256,7 @@ int hvm_save(struct domain *d, hvm_domain_context_t *h) v, i); return -ENODATA; } + process_pending_softirqs(); } } else @@ -268,6 +270,7 @@ int hvm_save(struct domain *d, hvm_domain_context_t *h) d->domain_id, i); return -ENODATA; } + process_pending_softirqs(); } } @@ -341,6 +344,7 @@ int hvm_load(struct domain *d, hvm_domain_context_t *h) d->domain_id, desc->typecode, desc->instance); return -1; } + process_pending_softirqs(); } /* Not reached */
On slow systems with sync_console saving or loading the context of big guests can cause the watchdog to trigger. Fix this by adding a couple of process_pending_softirqs. Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> --- xen/arch/x86/hvm/save.c | 4 ++++ 1 file changed, 4 insertions(+)