On 07/08/17 22:56, Boris Ostrovsky wrote:
> 
>> diff --git a/arch/x86/xen/enlighten_pv.c b/arch/x86/xen/enlighten_pv.c
>> index 811e4ddb3f37..a3dcd83187ce 100644
>> --- a/arch/x86/xen/enlighten_pv.c
>> +++ b/arch/x86/xen/enlighten_pv.c
>> @@ -579,6 +579,71 @@ static void xen_write_ldt_entry(struct desc_struct *dt, 
>> int entrynum,
>>      preempt_enable();
>>  }
>>  
>> +#ifdef CONFIG_X86_64
>> +static struct {
>> +    void (*orig)(void);
>> +    void (*xen)(void);
>> +    bool ist_okay;
>> +    bool handle;
>> +} trap_array[] = {
>> +    { debug, xen_xendebug, true, true },
>> +    { int3, xen_xenint3, true, true },
>> +    { double_fault, xen_double_fault, true, false },
> 
> Is it really worth adding 'handle' member to the structure because of a
> single special case? We don't expect to ever have another such vector.

Hmm, maybe you are right. We don't expect to ever see a double_fault in
a pv domain, so we could just drop that special case by handling it like
the other IST traps.

> (TBH, I think current implementation of cvt_gate_to_trap() is clearer,
> even if it is not as general as what is in this patch. I know that Andy
> disagrees).

I think being able to concentrate as much pv interface stuff as possible
to Xen specific sources is a win.

The less Xen modifications are needed in non-Xen sources the better.


Juergen

Reply via email to