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

Re: [Xen-devel] [PATCH] x86/HVM: drop bogus #PF raising from linear->phys translation


  • To: 'Jan Beulich' <JBeulich@xxxxxxxx>, xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Paul Durrant <Paul.Durrant@xxxxxxxxxx>
  • Date: Thu, 7 Sep 2017 08:24:42 +0000
  • Accept-language: en-GB, en-US
  • Cc: Andrew Cooper <Andrew.Cooper3@xxxxxxxxxx>
  • Delivery-date: Thu, 07 Sep 2017 08:24:57 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xen.org>
  • Thread-index: AQHTJ7FMbHs+CEaEQkefjCTImoazBKKpFaEw
  • Thread-topic: [PATCH] x86/HVM: drop bogus #PF raising from linear->phys translation

> -----Original Message-----
> From: Jan Beulich [mailto:JBeulich@xxxxxxxx]
> Sent: 07 September 2017 09:14
> To: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx>
> Cc: Andrew Cooper <Andrew.Cooper3@xxxxxxxxxx>; Paul Durrant
> <Paul.Durrant@xxxxxxxxxx>
> Subject: [PATCH] x86/HVM: drop bogus #PF raising from linear->phys
> translation
> 
> Translations spanning a page boundary not resulting in physically
> contiguous addresses is not a reason to raise #PF. In fact by not doing
> so accesses of this kind are being emulated correctly thanks to the
> fallback logic in the insn emulator's REP MOVS/STOS/INS/OUTS handling
> (non-string accesses to such locations are being split elsewhere and
> hence have been working fine already).

Yes, it does seem like this is way too low a layer to be raising this exception.

> 
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
> 

Reviewed-by: Paul Durrant <paul.durrant@xxxxxxxxxx>

> --- a/xen/arch/x86/hvm/emulate.c
> +++ b/xen/arch/x86/hvm/emulate.c
> @@ -566,15 +566,12 @@ static int hvmemul_linear_to_phys(
>              if ( pfec & (PFEC_page_paged | PFEC_page_shared) )
>                  return X86EMUL_RETRY;
>              done /= bytes_per_rep;
> -            *reps = done;
>              if ( done == 0 )
>              {
>                  ASSERT(!reverse);
> -                if ( npfn != gfn_x(INVALID_GFN) )
> -                    return X86EMUL_UNHANDLEABLE;
> -                x86_emul_pagefault(pfec, addr & PAGE_MASK, &hvmemul_ctxt-
> >ctxt);
> -                return X86EMUL_EXCEPTION;
> +                return X86EMUL_UNHANDLEABLE;
>              }
> +            *reps = done;
>              break;
>          }
> 
> 
> 


_______________________________________________
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®.