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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html