All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tony Krowiak <akrowiak@linux.vnet.ibm.com>
To: David Hildenbrand <david@redhat.com>, qemu-devel@nongnu.org
Cc: qemu-s390x@nongnu.org, schwidefsky@de.ibm.com,
	heiko.carstens@de.ibm.com, borntraeger@de.ibm.com,
	cohuck@redhat.com, bjsdjshi@linux.vnet.ibm.com,
	pmorel@linux.vnet.ibm.com, alifm@linux.vnet.ibm.com,
	mjrosato@linux.vnet.ibm.com, jjherne@linux.vnet.ibm.com,
	pasic@linux.vnet.ibm.com, eskultet@redhat.com,
	berrange@redhat.com, alex.williamson@redhat.com,
	eric.auger@redhat.com, pbonzini@redhat.com,
	peter.maydell@linaro.org, agraf@suse.de, rth@twiddle.net
Subject: Re: [Qemu-devel] [PATCH v3 6/7] s390x/kvm: handle AP instruction interception
Date: Mon, 2 Apr 2018 11:59:10 -0400	[thread overview]
Message-ID: <6388f801-9a13-7c5e-686a-0bd2ed20b5a0@linux.vnet.ibm.com> (raw)
In-Reply-To: <4d76348b-e1de-7d92-3434-5213d092c6d0@redhat.com>

On 03/26/2018 04:32 AM, 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,
>> then an operation exception will be injected into the
>> guest, in which case the AP bus will not initialize.
>>
>> There are two situations where AP instructions will not be
>> interpreted:
>>
>> 1. The guest is not configured with a vfio-ap device (i.e.,
>>     -device vfio-ap,sysfsdev=$path-to-mdev). The realize function for
>>     the vfio-ap device enables interpretive execution of AP
>>     instructions.
>>
>> 2. The guest is a second level guest but the first level guest has
>>     not enabled interpretive execution.
>>
>> This patch introduces AP instruction handlers to ensure the AP bus
>> module initializes on the guest when the AP facility is installed
>> on the guest but AP instructions are not being interpreted. The logic
>> incorporated is:
>>
>> * If the CPU model indicates AP instructions are
>>    installed
>>
>>    * Set the status response code for the instruction to indicate that
>>      the APQN contained in the instruction is not valid. This is
>>      a valid response because there will be no devices configured for
>>      the guest in any of the above scenarios.
>>
>> * Else return an error from the handler. This will result in an
>>    operation being injected into the guest and the AP bus will not
> s/operation/operation exception/
thanks
>
>>    initialize on the guest. That is commensurate with how things work
>>    today.
>>
>> Signed-off-by: Tony Krowiak <akrowiak@linux.vnet.ibm.com>
>> ---
>>   hw/vfio/ap.c                 |   45 ++++++++++++++++++++++++++++++++++++++++++
>>   include/hw/s390x/ap-device.h |    6 +++++
>>   target/s390x/kvm.c           |   14 +++++++++++++
>>   3 files changed, 65 insertions(+), 0 deletions(-)
>>
>> diff --git a/hw/vfio/ap.c b/hw/vfio/ap.c
>> index b397bb1..88e744d 100644
>> --- a/hw/vfio/ap.c
>> +++ b/hw/vfio/ap.c
>> @@ -148,6 +148,51 @@ static void vfio_ap_unrealize(DeviceState *dev, Error **errp)
>>       kvm_s390_set_interpret_ap(0);
>>   }
>>   
> I think you are missing cpu_synchronize_state(CPU(cpu)) in all of these
> functions.
I see you negated this in your next response.
>
>> +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.
Take a look at my response to Pierre for an answer to this one.
>
> Hard to review without access to documentation. (hard to understand why
> such stuff is to be kept confidential for decades)
You'll have to talk to the powers that be at IBM about that one :)
>
>> +
>> +    return -EOPNOTSUPP;
>> +}
>> +
>>   static Property vfio_ap_properties[] = {
>>       DEFINE_PROP_STRING("sysfsdev", VFIOAPDevice, vdev.sysfsdev),
>>       DEFINE_PROP_END_OF_LIST(),
>> diff --git a/include/hw/s390x/ap-device.h b/include/hw/s390x/ap-device.h
>> index 693df90..d45ae38 100644
>> --- a/include/hw/s390x/ap-device.h
>> +++ b/include/hw/s390x/ap-device.h
>> @@ -11,6 +11,8 @@
>>   #ifndef HW_S390X_AP_DEVICE_H
>>   #define HW_S390X_AP_DEVICE_H
>>   
>

  parent reply	other threads:[~2018-04-02 15:59 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
2018-04-02 15:59     ` Tony Krowiak [this message]
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=6388f801-9a13-7c5e-686a-0bd2ed20b5a0@linux.vnet.ibm.com \
    --to=akrowiak@linux.vnet.ibm.com \
    --cc=agraf@suse.de \
    --cc=alex.williamson@redhat.com \
    --cc=alifm@linux.vnet.ibm.com \
    --cc=berrange@redhat.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=pasic@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.