[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: [Xen-devel] x86-64 machine_to_phys vs NX bit
Rik van Riel wrote: > Keir Fraser wrote: >> On 24/8/06 8:25 pm, "Rik van Riel" <riel@xxxxxxxxxx> wrote: >> >>> Say, something like the following? >>> >>> - paddr_t phys = mfn_to_pfn(machine >> PAGE_SHIFT); >>> + paddr_t phys = mfn_to_pfn((machine >> PAGE_SHIFT) & >>> PHYSICAL_MASK); >>> >>> I'm still thinking I may have missed something in the code >>> somewhere, but I've been looking at this for over an hour now >>> and can't seem to find it... >>> >>> Any ideas? >> >> Your suggested patch looks reasonable but it'd be good to find out >> why this hasn't caused us problems. For example, perhaps >> supported_pte_mask doesn't include PAGE_NX, so we're never setting >> the NX bit on 64-bit PTEs? > > We do set the NX bit. Including on vmalloced pages... > >> That must be worth checking out, possibly also tracing >> machine_to_phys to find out where that bit 63 goes -- I agree that it >> looks like mfn_to_pfn() shouldn't work if bit63 is set in the >> 'maddr' argument. > > Absolutely :) I agree, and I'm wondering why we don't have the same problem on i386? To me it basically does the same thing. static inline unsigned long long pte_val(pte_t x) { unsigned long long ret; if (x.pte_low) { ret = x.pte_low | (unsigned long long)x.pte_high << 32; ret = machine_to_phys(ret) | 1; } else { ret = 0; } return ret; } Jun --- Intel Open Source Technology Center _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |