Re: [PATCH v4 1/7] s390: ap: kvm: add PQAP interception for AQIC

From: Pierre Morel
Date: Thu Feb 28 2019 - 09:14:26 EST


On 28/02/2019 14:52, Cornelia Huck wrote:
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()?
}

?

Yes something in this direction.


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 :)


No problem, it is OK.
My first idea was to make only changes associated with PQAP/AQIC.
We already should have done it for all PQAP functions so it is decided that we will do it now as Christian proposed.

Regards,
Pierre


--
Pierre Morel
Linux/KVM/QEMU in BÃblingen - Germany