x86/hvm: Bind device-model event-channels to registered device-model

domid during vcpu initialisation.

Signed-off-by: Keir Fraser <keir@xen.org>
This commit is contained in:
Keir Fraser committed 2013-01-09 15:00:58 +00:00
1 parent 54e3f79464
commit f6423f77ef
1 file changed
+9 -7
+9 -7
View File
@@ -1057,6 +1057,8 @@ __initcall(__hvm_register_CPU_XSAVE_save_and_restore);
int hvm_vcpu_initialise(struct vcpu *v)
{
int rc;
struct domain *d = v->domain;
domid_t dm_domid = d->arch.hvm_domain.params[HVM_PARAM_DM_DOMAIN];
hvm_asid_flush_vcpu(v);
@@ -1066,12 +1068,12 @@ int hvm_vcpu_initialise(struct vcpu *v)
if ( (rc = hvm_funcs.vcpu_initialise(v)) != 0 )
goto fail2;
if ( nestedhvm_enabled(v->domain)
if ( nestedhvm_enabled(d)
&& (rc = nestedhvm_vcpu_initialise(v)) < 0 )
goto fail3;
/* Create ioreq event channel. */
rc = alloc_unbound_xen_event_channel(v, current->domain->domain_id, NULL);
rc = alloc_unbound_xen_event_channel(v, dm_domid, NULL);
if ( rc < 0 )
goto fail4;
@@ -1081,16 +1083,16 @@ int hvm_vcpu_initialise(struct vcpu *v)
if ( v->vcpu_id == 0 )
{
/* Create bufioreq event channel. */
rc = alloc_unbound_xen_event_channel(v, current->domain->domain_id, NULL);
rc = alloc_unbound_xen_event_channel(v, dm_domid, NULL);
if ( rc < 0 )
goto fail2;
v->domain->arch.hvm_domain.params[HVM_PARAM_BUFIOREQ_EVTCHN] = rc;
d->arch.hvm_domain.params[HVM_PARAM_BUFIOREQ_EVTCHN] = rc;
}
spin_lock(&v->domain->arch.hvm_domain.ioreq.lock);
if ( v->domain->arch.hvm_domain.ioreq.va != NULL )
spin_lock(&d->arch.hvm_domain.ioreq.lock);
if ( d->arch.hvm_domain.ioreq.va != NULL )
get_ioreq(v)->vp_eport = v->arch.hvm_vcpu.xen_port;
spin_unlock(&v->domain->arch.hvm_domain.ioreq.lock);
spin_unlock(&d->arch.hvm_domain.ioreq.lock);
spin_lock_init(&v->arch.hvm_vcpu.tm_lock);
INIT_LIST_HEAD(&v->arch.hvm_vcpu.tm_list);
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.