[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v2] x86/traps: Correct overly-general assertion introduced in c/s d5c251c



>>> On 14.12.16 at 15:11, <andrew.cooper3@xxxxxxxxxx> wrote:
> @@ -1831,10 +1827,17 @@ static int fixup_page_fault(unsigned long addr, 
> struct cpu_user_regs *regs)
>              return EXCRET_fault_fixed;
>      }
>  
> -    /* Logdirty guests call back into the paging code to update shadows. */
> -    if ( paging_mode_log_dirty(d) )
> +    /*
> +     * Logdirty guests call back into the paging code to update shadows.  We
> +     * don't expect any other paging modes with PV guests.
> +     */
> +    if ( guest_mode(regs) && paging_mode_enabled(d) )

As said in the (apparently to late) reply to v1 - I think guest_mode()
is wrong to use here, as hypervisor accesses to guest buffers also
need to be handled by paging_fault() when the guest is in log-dirty
mode.

Jan

>      {
> -        int ret = paging_fault(addr, regs);
> +        int ret;
> +
> +        ASSERT(paging_mode_only_log_dirty(d));
> +
> +        ret = paging_fault(addr, regs);
>          if ( ret == EXCRET_fault_fixed )
>              trace_trap_two_addr(TRC_PV_PAGING_FIXUP, regs->eip, addr);
>          return ret;



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.