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

Re: [Xen-devel] [PATCH] x86emul: minor cleanup



On 12/06/17 15:06, Jan Beulich wrote:
>>>> On 12.06.17 at 14:41, <andrew.cooper3@xxxxxxxxxx> wrote:
>> On 12/06/17 07:23, Jan Beulich wrote:
>>>>>> On 09.06.17 at 19:50, <andrew.cooper3@xxxxxxxxxx> wrote:
>>>> On 08/06/17 16:49, Jan Beulich wrote:
>>>>> Drop a redundant input constraint, correct a comment, and (re)move
>>>>> fix.insn_bytes adjustments (these aren't needed for custom stub
>>>>> invocations when the instruction placed in the stub can't raise #XF)
>>>> I'm not sure these are wise to remove.  Even if we don't expect an
>>>> exception, should one occur, fpu_handle_exception() will fail to step
>>>> over the instruction, and will re-execute it.
>>> Ah, perhaps I shouldn't have split this off the remaining
>>> emulator series I have ready - you refer to a no longer
>>> existing function (in my code base).
>> So you have dropped the legacy FPU exception infrastructure in the series?
> Yes.
>
>>> Once there, do_trap()
>>> will panic() as usual in that case, which I think it is sort of
>>> appropriate if we receive an exception that shouldn't occur -
>>> after all we then don't really know what to do with it. This
>>> btw goes along the lines of me not really being happy about
>>> us handling all sorts of exceptions once an .ex_table entry
>>> is associated with an instruction, rather than just the ones
>>> we really mean to recover from. You may recall such a
>>> discussion from a few years back.
>> I don't follow what you mean here. 
> 1) An exception when we don't expect one is bad.

Agreed.

>
> 2) If we get an exception we don't expect, we better don't
> behave as if all was well.

The grammar is a little awkward.  A more common way of phrasing that is
"we shouldn't behave as if".

Also, agreed.

>
> 3) This would imo better extend to our already existing
> exception recovery too, e.g. by .ex_table entries providing
> a bitmap of expected (i.e. to be recovered from) exceptions.

Ah - I remember now.  That was a long time ago.

ISTR part of the same conversation was to try and turn as many fatal
conditions into domain crashes as we reasonably could.  We should
probably get started on that at some point.

>
>>> Would you be okay with temporarily adding a respective
>>> BUG_ON(!fic->insn_bytes) to fpu_handle_exception() to
>>> achieve the same effect?
>> That would be better than nothing, but is fic->insn_bytes a useful field
>> with the legacy handling removed?  As all recovery is return-address
>> based, the length of the instruction (so long as it fits within the
>> stub) isn't important.
> The whole struct fpu_insn_ctxt is going away together with
> the conversion to the "normal" exception handling model. So
> adding the suggested BUG_ON() would be only a temporary
> thing until that other patch could be committed. insn_bytes
> is becoming a local variable, used solely for code outside of
> the big switch() to know where to place the RET instruction.

That also sounds like a good improvement.

>
>>> As a side note, I'm removing these here since the further
>>> SIMD emulation patches I have ready, but would prefer to
>>> post only once 4.9 is out, do not add respective code in the
>>> first place. Without knowing this in advance I'm not even
>>> sure this would be reliably spottable during review.
>> These what?  Again sorry, I don't understand what you mean.
> I have patches to add full AVX, F16C, FMA4, FMA, AVX2, XOP,
> and 3DNow! support to the emulator. Various of the instructions
> added can't raise #XM, and the patches don't set insn_bytes if
> it's not needed for aforementioned generic code inserting RET.
> I.e. what the patch here removes is what those patches won't
> add in the first place, yielding an overall consistent result.

Does this mean you have altered some of the instructions to be straight
inline?  I can't see how you could get away without a RET otherwise.

~Andrew

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