[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xen: arm: force guest memory accesses to cacheable when MMU is disabled
On Tue, 2014-01-07 at 20:39 +0000, Stefano Stabellini wrote: > > diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c > > index 124cccf..104d228 100644 > > --- a/xen/arch/arm/domain.c > > +++ b/xen/arch/arm/domain.c > > @@ -219,6 +219,11 @@ static void ctxt_switch_to(struct vcpu *n) > > else > > hcr |= HCR_RW; > > > > + if ( n->arch.sctlr & SCTLR_M ) > > + hcr &= ~(HCR_TVM|HCR_DC); > > + else > > + hcr |= (HCR_TVM|HCR_DC); > > + > > WRITE_SYSREG(hcr, HCR_EL2); > > isb(); > > Is this actually needed? Shouldn't HCR be already correctly updated by > update_sctlr? Not if we are switching back and forth between two guests which are in different states. > > +/* > > + * Passthru a 32-bit AArch32 register which is 64-bit under AArch64. > > + * Updates the lower 32-bits and clears the upper bits. > > + */ > > +#define CP32_PASSTHRU64(R...) do { \ > > + if ( cp32.read ) \ > > + *r = (uint32_t)READ_SYSREG64(R); \ > > + else \ > > + WRITE_SYSREG64((uint64_t)*r, R); \ > > +} while(0) > > Can/Should CP32_PASSTHRU64_LO be used instead of this? LO preserves the upper 32-bits which this macro deliberately does not. Now, an AArch32 guest on an AArch64 hypervisor should never have anything else in the top bits of a register which it sees as 32-bit, so using LO would work, but I think having it be explicit like this is better. Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |