|
|
|
|
|
|
|
|
|
|
xen-devel
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
|
|
|
|
|