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

Re: [Xen-devel] [PATCH 1/4] x86/HVM: replace plain number in hvm_combine_hw_exceptions()



On 22/01/15 13:57, Jan Beulich wrote:
> While doing so also take care of #VE here (even if we don't make use of
> it yet).
>
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
>
> --- a/xen/arch/x86/hvm/hvm.c
> +++ b/xen/arch/x86/hvm/hvm.c
> @@ -205,6 +205,16 @@ int hvm_event_needs_reinjection(uint8_t 
>   */
>  uint8_t hvm_combine_hw_exceptions(uint8_t vec1, uint8_t vec2)
>  {
> +    const unsigned int contributory_exceptions =
> +        (1 << TRAP_divide_error) |
> +        (1 << TRAP_invalid_tss) |
> +        (1 << TRAP_no_segment) |
> +        (1 << TRAP_stack_error) |
> +        (1 << TRAP_gp_fault);
> +    const unsigned int page_faults =
> +        (1 << TRAP_page_fault) |
> +        (1 << TRAP_virtualisation);

static as an extra hint?

I frankly hope that any decent compiler would turn these into
instruction immediate data.

Either way, Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>

(FWIW the 0x7c01 constant was the inspiration for my vlapic patch,
although I felt that constructing the map at compile time was better
than an opaque number.)

> +
>      /* Exception during double-fault delivery always causes a triple fault. 
> */
>      if ( vec1 == TRAP_double_fault )
>      {
> @@ -213,11 +223,12 @@ uint8_t hvm_combine_hw_exceptions(uint8_
>      }
>  
>      /* Exception during page-fault delivery always causes a double fault. */
> -    if ( vec1 == TRAP_page_fault )
> +    if ( (1u << vec1) & page_faults )
>          return TRAP_double_fault;
>  
>      /* Discard the first exception if it's benign or if we now have a #PF. */
> -    if ( !((1u << vec1) & 0x7c01u) || (vec2 == TRAP_page_fault) )
> +    if ( !((1u << vec1) & contributory_exceptions) ||
> +         ((1u << vec2) & page_faults) )
>          return vec2;
>  
>      /* Cannot combine the exceptions: double fault. */
>
>
>



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


 


Rackspace

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