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

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



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

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

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.

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

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

Jan


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