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

Re: [Xen-devel] [PATCH] x86: compact supposedly unused entry point code



On 20/06/16 15:04, Jan Beulich wrote:
>>>> On 20.06.16 at 15:58, <andrew.cooper3@xxxxxxxxxx> wrote:
>> On 20/06/16 14:49, Jan Beulich wrote:
>>>>>> On 20.06.16 at 14:54, <andrew.cooper3@xxxxxxxxxx> wrote:
>>>> On 20/06/16 13:48, Jan Beulich wrote:
>>>>>>>> On 20.06.16 at 14:15, <andrew.cooper3@xxxxxxxxxx> wrote:
>>>>>> On 20/06/16 12:04, Jan Beulich wrote:
>>>>>>> No point in aligning entry points which aren't supposed to be used
>>>>>>> anyway.
>>>>>>>
>>>>>>> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
>>>>>> Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
>>>>> Thanks, but - any thoughts on this part:
>>>>>
>>>>> TBD: Might consider simply using "andq $-15,%rsp", delivering an
>>>>> uninitialized error code (which shouldn't matter).
>>>> I was still considering that part.
>>>>
>>>> These are entries we never expect to actually take.  At that point, the
>>>> small overhead of setting up the error code to 0 is probably better than
>>>> leaving it uninitialised.
>>> I understand - it's really a matter of balancing the overhead on
>>> these paths (which will never have an effect if these entries indeed
>>> are unused, and which is of no interest if they are used by due some
>>> other flaw) with the (likely negligible, but non-zero) overhead they
>>> introduce on _other_ paths (due to cache and TLB consumption). I.e.
>>> my goal was to make these unused entries as small as possible. And
>>>
>>>     andq    $-15,%rsp
>>>     movl    $vector,4(%rsp)
>>>
>>> (obviously we can't use movb here) is smaller than the current
>>>
>>>     testb   $8,%spl
>>>     jz      1f
>>>     pushq   $0
>>>     movb    $vector,4(%rsp)
>>>
>>> afaict.
>> All of them head to do_reserved_trap() and panic().
> Not sure I'm guessing right what you mean to say with that, so I
> can only reiterate that I don't care at all how long it takes for
> execution to get through this path. All I care about is that this
> code be as small as possible, to limit its impact on surrounding
> code. But for the few bytes to save here I guess there was
> already way to much talk.
>
>> An alternative would be to drop all this entry code, mark the vectors as
>> not present in the IDT, and handle #NP[IDT vector] with a slightly
>> different error message in do_trap().
> Would likely increase overall code size (i.e. the opposite of what
> I'd like to achieve here).

I find that hard to believe.

I have a number of other improvements pending in this area.  I will add
this to the list.

~Andrew

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