On 09/18/2012 09:53 AM, Xiao Guangrong wrote:
> On 09/16/2012 08:07 PM, Avi Kivity wrote:
>
>>
>> - pt_access = ACC_ALL;
>> + pt_access = pte_access = ACC_ALL;
>> + ++walker->level;
>>
>> - for (;;) {
>> + do {
>> gfn_t real_gfn;
>> unsigned long host_addr;
>>
>> + pt_access &= pte_access;
>> + --walker->level;
>
> Any reason increase walker->level before the loop and decrease here?
> Can not use the origin style? :)
The original code had
if (last_gpte) {
...
break;
}
--walker->level
}
Since my change moves the check to the last '}', it would include an
extra decrement of walker->level.
>
>> + gfn = gpte_to_gfn_lvl(pte, walker->level);
>> + gfn += (addr & PT_LVL_OFFSET_MASK(walker->level)) >> PAGE_SHIFT;
>> +
>> + if (PTTYPE == 32 && walker->level == PT_DIRECTORY_LEVEL &&
>> is_cpuid_PSE36())
>> + gfn += pse36_gfn_delta(pte);
>> +
>> + ac = write_fault | fetch_fault | user_fault;
>
> Can use 'access' instead.
>
'access' also has other bits set, need to check if we need to mask them
off. Will add a separate patch for this.
--
error compiling committee.c: too many arguments to function
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html