domid_t domid)
{
return add_msr_bank_intpose(xc_handle, cpu_nr,
- MC_MSRINJ_F_INTERPOSE |
- ((domid >= DOMID_FIRST_RESERVED &&
- domid != DOMID_SELF) ?
- 0 : MC_MSRINJ_F_GPADDR),
+ MC_MSRINJ_F_INTERPOSE | MC_MSRINJ_F_GPADDR,
MCi_type_ADDR, bank, val, domid);
}
if ( mc_msrinject->mcinj_flags & MC_MSRINJ_F_GPADDR )
{
- domid_t domid;
struct domain *d;
struct mcinfo_msr *msr;
unsigned int i;
unsigned long gfn, mfn;
p2m_type_t t;
- domid = (mc_msrinject->mcinj_domid == DOMID_SELF) ?
- current->domain->domain_id : mc_msrinject->mcinj_domid;
- if ( domid >= DOMID_FIRST_RESERVED )
- return x86_mcerr("do_mca inject: incompatible flag "
- "MC_MSRINJ_F_GPADDR with domain %d",
- -EINVAL, domid);
-
- d = get_domain_by_id(domid);
+ d = get_domain_by_id(mc_msrinject->mcinj_domid);
if ( d == NULL )
return x86_mcerr("do_mca inject: bad domain id %d",
- -EINVAL, domid);
+ -EINVAL, mc_msrinject->mcinj_domid);
for ( i = 0, msr = &mc_msrinject->mcinj_msr[0];
i < mc_msrinject->mcinj_count;
put_gfn(d, gfn);
put_domain(d);
return x86_mcerr("do_mca inject: bad gfn %#lx of domain %d",
- -EINVAL, gfn, domid);
+ -EINVAL, gfn, mc_msrinject->mcinj_domid);
}
msr->value = pfn_to_paddr(mfn) | (gaddr & (PAGE_SIZE - 1));