From: Wei Liu Date: Tue, 14 Apr 2015 13:01:14 +0000 (+0200) Subject: Revert "x86/hvm: wait for at least one ioreq server to be enabled" X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~3437 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=9b43a2a2e9a236cf5537f853d0175f326b4d9cb8;p=xen.git Revert "x86/hvm: wait for at least one ioreq server to be enabled" We don't need this workaround anymore since we have fixed the toolstack interlock problem that affects stubdom. Signed-off-by: Wei Liu Acked-by: Ian Campbell Reviewed-by: Paul Durrant --- diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index bfde380eb2..8b62296887 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -893,13 +893,6 @@ static void hvm_ioreq_server_enable(struct hvm_ioreq_server *s, done: spin_unlock(&s->lock); - - /* This check is protected by the domain ioreq server lock. */ - if ( d->arch.hvm_domain.ioreq_server.waiting ) - { - d->arch.hvm_domain.ioreq_server.waiting = 0; - domain_unpause(d); - } } static void hvm_ioreq_server_disable(struct hvm_ioreq_server *s, @@ -1451,20 +1444,6 @@ int hvm_domain_initialise(struct domain *d) spin_lock_init(&d->arch.hvm_domain.ioreq_server.lock); INIT_LIST_HEAD(&d->arch.hvm_domain.ioreq_server.list); - - /* - * In the case where a stub domain is providing emulation for - * the guest, there is no interlock in the toolstack to prevent - * the guest from running before the stub domain is ready. - * Hence the domain must remain paused until at least one ioreq - * server is created and enabled. - */ - if ( !is_pvh_domain(d) ) - { - domain_pause(d); - d->arch.hvm_domain.ioreq_server.waiting = 1; - } - spin_lock_init(&d->arch.hvm_domain.irq_lock); spin_lock_init(&d->arch.hvm_domain.uc_lock); diff --git a/xen/include/asm-x86/hvm/domain.h b/xen/include/asm-x86/hvm/domain.h index 0702bf5aa8..2757c7fedd 100644 --- a/xen/include/asm-x86/hvm/domain.h +++ b/xen/include/asm-x86/hvm/domain.h @@ -83,7 +83,6 @@ struct hvm_domain { struct { spinlock_t lock; ioservid_t id; - bool_t waiting; struct list_head list; } ioreq_server; struct hvm_ioreq_server *default_ioreq_server;