[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-ia64-devel] [PATCH] fix wrong insertion of TLB entry in region 0



Hi Tristan,

vcpu->arch.metaphysical_saved_rr0 is the mangled version of rr[0].
The difference of this patch is whether the machine rr is set or not.

Before the patch:

IA64FAULT vcpu_itc_d(VCPU * vcpu, u64 pte, u64 itir, u64 ifa)
{
        BOOLEAN swap_rr0 = (!(ifa >> 61) && PSCB(vcpu, metaphysical_mode));
        ...
        if (swap_rr0)
/// at this point, machine rr0 is metaphysical_rr0.
                set_one_rr(0, PSCB(vcpu, rrs[0]));
/// so, above set_one_rr() expects to set machine rr0 to PSCB(vcpu, rrs[0])
        vcpu_itc_no_srlz(vcpu, 2, ifa, pteval, pte, _itir.itir, &entry);
        if (swap_rr0)
                set_metaphysical_rr0();
/// restore machine rr0
        ...
}

int set_one_rr(unsigned long rr, unsigned long val)
{
        ...
        if (rreg == 0) {
/// below assignment is useless. it's already set before.
                v->arch.metaphysical_saved_rr0 = vmMangleRID(newrrv.rrval);
/// this is the case of metaphysical_mode.
                if (!PSCB(v,metaphysical_mode))
                        set_rr(rr,newrrv.rrval);
/// namely, set_one_rr does nothing.
        ...
}

-- Kouya

tgingold@xxxxxxx writes:
 > Quoting Kouya Shimura <kouya@xxxxxxxxxxxxxx>:
 > 
 > > On PV domain with metaphysical mode, emulation of itc.d in region 0
 > > doesn't work well and inserts an wrong TC entry.
 > > Because set_one_rr() doesn't set the machine region register.
 > > i.e. metaphyisical_rr0 is used instead of guest's rr[0].
 > >
 > > This bug causes Dom0/U crash when an application uses region 0.
 > > Actually I met the crash when I was building open GFW (java uses
 > > region 0).
 > 
 > I am a little bit puzzled.  Isn't saved_rr0 supposed to be the mangled 
 > version
 > of rr[0] ?  Either this patch should be a no-op or the bug is somewhere else
 > (or I am wrong).
 > 
 > Tristan.

_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.