On Thu, 28 Feb 2019 14:16:09 +0100
Pierre Morel <pmorel@xxxxxxxxxxxxx> wrote:
On 28/02/2019 12:22, Cornelia Huck wrote:
So, to summarize, the function should do:
- Is userspace supposed to emulate everything (!ECA_APIE)? Return
-EOPNOTSUPP to hand control to it.
- We are now interpreting the instruction in KVM. Do common checks
(PSTATE etc.) and inject exceptions, if needed.
- Now look at the fc; if there's a handler for it, call that; if not
(case does not attempt to call a specific handler, or no handler
registered), inject a specification exception. (Do we want pre-checks
like for facility 65 here, or in the handler?)
That response code 0x01 thingy probably needs to go into the specific
handler function, if anywhere (don't know the semantics, sorry).
What do you mean with specific handler function?
If you mean a switch around the FC with static function's call, I agree,
if you mean a jump into a hook I do not agree.
Ah, ok; so each case (that we want to handle) should call into a
subhandler that does
{
(... check things like facilities ...)
if (!specific_hook)
inject_specif_excp_and_return();
ret = specific_hook();
if (ret)
set_resp_code_0x01(); // or in specific_hook()?
}
?
Question: Will the handlers for the individual fcs need to generate
different exceptions on their own? I.e., do they need to do injections
themselves, or should the calling function possibly inject an exception
on error?
There are some specificities.
Ok, should probably done in the subhandlers?
(I hope I don't muddy the waters too much; but basically, I'm poking
around with a stick in the dark :)