Hi, Robert,
There is another minor problem. in dt_init_action:
+ if (_32pae_l3 || c_curr_accessed)
+ action |= a_present;
+ /* else make present when accessed */
+ if (c_curr_rw)
+ action |= a_rw;
According to your comments, the following snippet may be more correct:
+ if (_32pae_l3 || c_curr_accessed)
+ action |= a_present;
+ /* else make present when accessed */
+ if (c_curr_rw && !_32_pae_l3)
+ action |= a_rw;
The doc said we should retain R/W be zero for pae_l3_pte in legacy mode.
If returned a_rw, resync_spte will set _PAGE_RW for the corresponding
spte.
_______________________________________________________
Best Regards,
hanzhu
Robert Phillips дµÀ:
Yes, that's true. If the caller supplied a bogus PFN (one larger than ram
size), we'd crash.
BTW, we are avoiding use of grant table transfers because they fragment PSE
pages.
-- rsp
On 6/30/06, zhu <vanbas.han@xxxxxxxxx> wrote:
I'm afraid it could trigger some certain problems only when you open l2
PSE flag and use grant table to transfer pages between domains. I'm not
very sure about it. :-)
_______________________________________________________
Best Regards,
hanzhu
Robert Phillips $B<LF;(B:
> Hi Han,
> You are right again. I have not seen this cause a problem but we'll
> certainly fix it.
> -- rsp
>
> On 6/29/06, zhu <vanbas.han@xxxxxxxxx> wrote:
>>
>> Hi, Robert,
>> I found out another confusing code snippet:
>> in void xi_invl_mfn(struct domain *d, unsigned long mfn)
>> if (ext && pfn < ext->large_page_aligned_size)
>>
>> According to the code, it should be
>> if (ext && (pfn>>SPT_ENTRIES_ORDER) <
ext->large_page_aligned_size)
>>
>> If I made any mistake, please point it out.
>> _______________________________________________________
>> Best Regards,
>> hanzhu
>>
>
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|