All of lore.kernel.org
 help / color / mirror / Atom feed
From: Halil Pasic <pasic@linux.vnet.ibm.com>
To: Tony Krowiak <akrowiak@linux.vnet.ibm.com>,
	Pierre Morel <pmorel@linux.vnet.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	qemu-devel@nongnu.org
Cc: mjrosato@linux.vnet.ibm.com, peter.maydell@linaro.org,
	alifm@linux.vnet.ibm.com, eskultet@redhat.com, cohuck@redhat.com,
	heiko.carstens@de.ibm.com, alex.williamson@redhat.com,
	agraf@suse.de, borntraeger@de.ibm.com, qemu-s390x@nongnu.org,
	jjherne@linux.vnet.ibm.com, schwidefsky@de.ibm.com,
	pbonzini@redhat.com, bjsdjshi@linux.vnet.ibm.com,
	eric.auger@redhat.com, rth@twiddle.net
Subject: Re: [Qemu-devel] [PATCH v3 6/7] s390x/kvm: handle AP instruction interception
Date: Thu, 5 Apr 2018 15:51:49 +0200	[thread overview]
Message-ID: <a028ee1e-acf4-0796-7aa5-adeb151c24c3@linux.vnet.ibm.com> (raw)
In-Reply-To: <1dc47cbd-876c-7fb4-defe-cefe95c16b41@linux.vnet.ibm.com>



On 04/04/2018 10:12 PM, Tony Krowiak wrote:
> On 04/04/2018 09:43 AM, Pierre Morel wrote:
>> On 04/04/2018 15:33, Tony Krowiak wrote:
>>> On 04/04/2018 07:09 AM, Pierre Morel wrote:
>>>> On 02/04/2018 18:36, Tony Krowiak wrote:
>>>>> On 03/26/2018 05:03 AM, Pierre Morel wrote:
>>>>>> On 26/03/2018 10:32, David Hildenbrand wrote:
>>>>>>> On 16.03.2018 00:24, Tony Krowiak wrote:
>>>>>>>> If the CPU model indicates that AP facility is installed on
>>>>>>>> the guest (i.e., -cpu xxxx,ap=on), then the expectation is that
>>>>>>>> the AP bus running in the guest will initialize; however, if the
>>>>>>>> AP instructions are not being interpreted by the firmware, then
>>>>>>>> they will be intercepted and routed back to QEMU for handling.
>>>>>>>> If a handler is not defined to process the intercepted instruciton,
>>>>>>>> t
>>>>>> ...snip...
>>>>>>>
>>>>>>>> +int ap_device_handle_nqap(S390CPU *cpu)
>>>>>>>> +{
>>>>>>>> +    CPUS390XState *env = &cpu->env;
>>>>>>>> +
>>>>>>>> +    if (s390_has_feat(S390_FEAT_AP)) {
>>>>>>>> +        env->regs[1] = 0x10000;
>>>>>>>> +
>>>>>>>> +        return 0;
>>>>>>>> +    }
>>>>>>>> +
>>>>>>>> +    return -EOPNOTSUPP;
>>>>>>>> +}
>>>>>>>> +
>>>>>>>> +int ap_device_handle_dqap(S390CPU *cpu)
>>>>>>>> +{
>>>>>>>> +    CPUS390XState *env = &cpu->env;
>>>>>>>> +
>>>>>>>> +    if (s390_has_feat(S390_FEAT_AP)) {
>>>>>>>> +        env->regs[1] = 0x10000;
>>>>>>>> +
>>>>>>>> +        return 0;
>>>>>>>> +    }
>>>>>>>> +
>>>>>>>> +    return -EOPNOTSUPP;
>>>>>>>> +}
>>>>>>>> +
>>>>>>>> +int ap_device_handle_pqap(S390CPU *cpu)
>>>>>>>> +{
>>>>>>>> +    CPUS390XState *env = &cpu->env;
>>>>>>>> +    int fc = 4 & (env->regs[0] >> 24);
>>>>>>>> +
>>>>>>>> +    /*
>>>>>>>> +     * The Query Configuration Information (QCI) function (fc == 4) does not
>>>>>>>> +     * set a response code in reg 1, so check for that along with the
>>>>>>>> +     * AP feature.
>>>>>>>> +     */
>>>>>>>> +    if ((fc != 4) && s390_has_feat(S390_FEAT_AP)) {
>>>>>>>> +        env->regs[1] = 0x10000;
>>>>>>>> +
>>>>>>>> +        return 0;
>>>>>>>> +    }
>>>>>>> This would imply an operation exception in case fc==4, which sounds very
>>>>>>> wrong.
>>>>>>
>>>>>> It depends but I think that the S390_FEAT_AP_QUERY_CONFIG_INFO must be tested
>>>>>> to know what to answer.
>>>>>> If the feature is there, QCI must be answered correctly.
>>>>> This is an interesting proposition which raises several issues that will need to
>>>>> be addressed. The only time the PQAP(QCI) instruction is intercepted is when:
>>>>> * A vfio-ap device is NOT defined for the guest because the vfio_ap device driver
>>>>>   will set ECA.28 and the PQAP(QCI) instruction will be interpreted
>>>>> * STFLE.12 is set for the guest
>>>>>
>>>>> You say that the QCI must be answered correctly, but what is the correct response?
>>>>> If we return the matrix - i.e., APM, ADM and AQM - configured via the mediated
>>>>> matrix device's sysfs attributes files, then if any APQNs are defined in the matrix,
>>>>> we will have to handle *ALL* AP instructions by executing them on behalf of the
>>>>> guest. I suppose we could return an empty matrix in which case the AP bus will come
>>>>> up without any devices on the guest, but what is the expectation of an admin who
>>>>> deliberately configures the mediated matrix device? Should we forego handling interception
>>>>> of AP instructions and consider a guest configuration that turns on S390_FEAT_AP but
>>>>> does not define a vfio-ap device to be erroneous and terminate starting of the guest?
>>>>> Anybody have any thoughts?
>>>>>>
>>>>>>
>>>>>> there are also some error situations to handle in all three functions.
>>>>> To what error situations are you referring?
>>>>
>>>> program exceptions, like access, privilege or specification exceptions.
>>> Are you suggesting that these handlers need to verify that the instruction
>>> specification is correct? For example, the NQAP instruction - NQAP r1,r2 -
>>> expects an even-odd pair of general registers in the r1 and r2 and must
>>> designate an even register; otherwise a specification exception is
>>> recognized. Are you saying that the handler for NQAP must verify this
>>> requirement and inject a specification exception if it is not met? If not,
>>> then can you provide a specific example of what you are talking about?
>>
>> Yes I mean this.
>>
>> But one other thing.
>> Returning code 0x01 seems wrong for me, this is right if no AP card
>> are in the system but I do not thing that it is what we mean.
> I disagree .... for the guest, this is exactly what we mean. In my opinion, assigning
> AP devices to the mediated matrix device is like assigning AP devices to an LPAR.
> If no vfio-ap device is defined for the guest, then it is effectively the same as
> starting a linux host in an LPAR without any AP devices assigned to it.
>>
>> I think we should return code 0x03 stating that the AP card is not in configured state
> 
>>
>>
>> The difference is that we can get out of a not-configured state with a SCLP command but
>> we can not recover from an un-existing APQN.
> Remember, this state will occur only when the AP feature of the CPU model is turned on for
> the guest and no vfio-ap device is defined, so there is no configuration to recover for
> the guest because no AP devices will be configured for the guest.

Spoke with Pierre and we agreed that the response code 01 is what
we need to do.

Regards,
Halil

  reply	other threads:[~2018-04-05 13:52 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-15 23:24 [Qemu-devel] [PATCH v3 0/7] s390x: vfio-ap: guest dedicated crypto adapters Tony Krowiak
2018-03-15 23:24 ` [Qemu-devel] [PATCH v3 1/7] linux-headers: linux header updates for AP support Tony Krowiak
2018-03-15 23:24 ` [Qemu-devel] [PATCH v3 2/7] s390x/ap: base Adjunct Processor (AP) object Tony Krowiak
2018-03-16 10:27   ` Pierre Morel
2018-03-16 10:38   ` Pierre Morel
2018-03-16 14:18     ` Tony Krowiak
2018-03-15 23:24 ` [Qemu-devel] [PATCH v3 3/7] s390x/cpumodel: Set up CPU model for AP device support Tony Krowiak
2018-03-16  9:36   ` Pierre Morel
2018-03-16 14:23     ` Tony Krowiak
2018-04-06 14:51   ` Pierre Morel
2018-04-10 13:19     ` Tony Krowiak
2018-03-15 23:24 ` [Qemu-devel] [PATCH v3 4/7] s390x/kvm: interface to interpret AP instructions Tony Krowiak
2018-03-16 10:34   ` Pierre Morel
2018-03-16 10:36   ` Pierre Morel
2018-03-16 14:33     ` Tony Krowiak
2018-03-20 18:02   ` Tony Krowiak
2018-03-26  8:38   ` David Hildenbrand
2018-04-02 18:27     ` Tony Krowiak
2018-03-15 23:24 ` [Qemu-devel] [PATCH v3 5/7] s390x/vfio: ap: Introduce VFIO AP device Tony Krowiak
2018-03-16 10:42   ` Pierre Morel
2018-03-16 13:22     ` Halil Pasic
2018-03-16 15:29       ` Tony Krowiak
2018-03-16 15:36         ` Halil Pasic
2018-03-16 15:53           ` Tony Krowiak
2018-03-16 16:26             ` Halil Pasic
2018-03-27 12:02       ` Cornelia Huck
2018-04-02 17:05         ` Tony Krowiak
2018-04-03 18:53           ` Tony Krowiak
2018-03-16 15:00     ` Tony Krowiak
2018-03-15 23:24 ` [Qemu-devel] [PATCH v3 6/7] s390x/kvm: handle AP instruction interception Tony Krowiak
2018-03-16  8:03   ` Pierre Morel
2018-03-16 15:31     ` Tony Krowiak
2018-03-26  8:32   ` David Hildenbrand
2018-03-26  8:43     ` [Qemu-devel] [qemu-s390x] " David Hildenbrand
2018-03-26  9:03     ` [Qemu-devel] " Pierre Morel
2018-03-26 12:01       ` Halil Pasic
2018-04-02 16:39         ` Tony Krowiak
2018-04-02 16:36       ` Tony Krowiak
2018-04-03  9:36         ` Cornelia Huck
2018-04-04 11:06           ` Pierre Morel
2018-04-04 13:38           ` Tony Krowiak
2018-04-05 16:38           ` Tony Krowiak
2018-04-05 17:17             ` Halil Pasic
2018-04-06  8:40               ` Cornelia Huck
2018-04-06  9:11                 ` David Hildenbrand
2018-04-06 12:09                   ` Halil Pasic
2018-04-06 12:32                     ` Halil Pasic
2018-04-06 12:37                       ` Daniel P. Berrangé
2018-04-06 16:07             ` Halil Pasic
2018-04-09  9:32               ` Cornelia Huck
2018-04-09 10:37                 ` Halil Pasic
2018-04-09 10:51                   ` Cornelia Huck
2018-04-11 13:20                     ` Tony Krowiak
2018-04-11 13:50                       ` Halil Pasic
2018-04-12 15:24                         ` Tony Krowiak
2018-04-12 15:22                 ` Tony Krowiak
2018-04-04 11:09         ` Pierre Morel
2018-04-04 12:59           ` Tony Krowiak
2018-04-04 13:35             ` Pierre Morel
2018-04-04 13:33           ` Tony Krowiak
2018-04-04 13:43             ` Pierre Morel
2018-04-04 20:12               ` Tony Krowiak
2018-04-05 13:51                 ` Halil Pasic [this message]
2018-04-02 15:59     ` Tony Krowiak
2018-04-06 14:08   ` Pierre Morel
2018-04-06 14:42     ` Pierre Morel
2018-03-15 23:25 ` [Qemu-devel] [PATCH v3 7/7] s390: doc: detailed specifications for AP virtualization Tony Krowiak
2018-03-16  9:45   ` Pierre Morel
2018-03-16 10:03   ` Pierre Morel
2018-03-16 15:35     ` Tony Krowiak
2018-04-02 16:46     ` Tony Krowiak

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a028ee1e-acf4-0796-7aa5-adeb151c24c3@linux.vnet.ibm.com \
    --to=pasic@linux.vnet.ibm.com \
    --cc=agraf@suse.de \
    --cc=akrowiak@linux.vnet.ibm.com \
    --cc=alex.williamson@redhat.com \
    --cc=alifm@linux.vnet.ibm.com \
    --cc=bjsdjshi@linux.vnet.ibm.com \
    --cc=borntraeger@de.ibm.com \
    --cc=cohuck@redhat.com \
    --cc=david@redhat.com \
    --cc=eric.auger@redhat.com \
    --cc=eskultet@redhat.com \
    --cc=heiko.carstens@de.ibm.com \
    --cc=jjherne@linux.vnet.ibm.com \
    --cc=mjrosato@linux.vnet.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=pmorel@linux.vnet.ibm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-s390x@nongnu.org \
    --cc=rth@twiddle.net \
    --cc=schwidefsky@de.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.