From: Pierre Morel <pmorel@linux.ibm.com>
To: borntraeger@de.ibm.com
Cc: akrowiak@linux.ibm.com, peter.maydell@linaro.org,
david@redhat.com, cohuck@redhat.com, qemu-devel@nongnu.org,
agraf@suse.de, pasic@linux.ibm.com, eric.auger@redhat.com,
qemu-s390x@nongnu.org, mst@redhat.com, pbonzini@redhat.com,
rth@twiddle.net
Subject: Re: [Qemu-devel] [PATCH v3] s390x/cpumodel: Set up CPU model for AQIC interception
Date: Fri, 15 Feb 2019 10:53:24 +0100 [thread overview]
Message-ID: <68ef1f07-75c2-5d40-1bf9-d6f1db1fa839@linux.ibm.com> (raw)
In-Reply-To: <1550146494-21085-2-git-send-email-pmorel@linux.ibm.com>
On 14/02/2019 13:14, Pierre Morel wrote:
> A new CPU model facilities is introduced to support AP devices
> interruption interception for a KVM guest.
>
> "APQI" for "AP-Queue Interruption" facility
>
> The S390_FEAT_AP_QUEUE_INTERRUPT_CONTROL, CPU facility indicates
> whether the PQAP instruction with the AQIC command is available
> to the guest.
> This feature will be enabled only if the AP instructions are
> available on the linux host and AQIC facility is installed on
> the host.
>
> This feature must be turned on from userspace to intercept AP
> instructions on the KVM guest. The QEMU command line to turn
> this feature on looks something like this:
>
> qemu-system-s390x ... -cpu xxx,apqi=on ...
Hi,
I suddenly have a very big doubt on this QEMU patch.
Older Linux advertise PQAP/AQIC feature (65)
Older Qemu mask it for the guest
Now if we set aqic = on in the new QEMU,
QEMU advertises feature (65)
The guest gets an OPERATION EXCEPTION even we advertised the feature 65.
This seems wrong to me, we should verify that the vfio_driver is loaded
in the host before starting the guest with something like:
kvm_vm_check_attr(kvm_state, KVM_S390_VM_ENABLE_AQIC)
Don't you think?
Regards,
Pierre
>
> Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
> Reviewed-by: Tony Krowiak <akrowiak@linux.ibm.com>
> Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
> Reviewed-by: Halil Pasic <pasic@linux.ibm.com>
> ---
> target/s390x/cpu_features.c | 1 +
> target/s390x/cpu_features_def.h | 1 +
> target/s390x/cpu_models.c | 1 +
> target/s390x/gen-features.c | 1 +
> 4 files changed, 4 insertions(+)
>
> diff --git a/target/s390x/cpu_features.c b/target/s390x/cpu_features.c
> index 60cfeba..99bd382 100644
> --- a/target/s390x/cpu_features.c
> +++ b/target/s390x/cpu_features.c
> @@ -84,6 +84,7 @@ static const S390FeatDef s390_features[] = {
> FEAT_INIT("sema", S390_FEAT_TYPE_STFL, 59, "Semaphore-assist facility"),
> FEAT_INIT("tsi", S390_FEAT_TYPE_STFL, 60, "Time-slice Instrumentation facility"),
> FEAT_INIT("ri", S390_FEAT_TYPE_STFL, 64, "CPU runtime-instrumentation facility"),
> + FEAT_INIT("apqi", S390_FEAT_TYPE_STFL, 65, "AP-Queue interruption facility"),
> FEAT_INIT("zpci", S390_FEAT_TYPE_STFL, 69, "z/PCI facility"),
> FEAT_INIT("aen", S390_FEAT_TYPE_STFL, 71, "General-purpose-adapter-event-notification facility"),
> FEAT_INIT("ais", S390_FEAT_TYPE_STFL, 72, "General-purpose-adapter-interruption-suppression facility"),
> diff --git a/target/s390x/cpu_features_def.h b/target/s390x/cpu_features_def.h
> index 5fc7e7b..3f22780 100644
> --- a/target/s390x/cpu_features_def.h
> +++ b/target/s390x/cpu_features_def.h
> @@ -72,6 +72,7 @@ typedef enum {
> S390_FEAT_SEMAPHORE_ASSIST,
> S390_FEAT_TIME_SLICE_INSTRUMENTATION,
> S390_FEAT_RUNTIME_INSTRUMENTATION,
> + S390_FEAT_AP_QUEUE_INTERRUPT_CONTROL,
> S390_FEAT_ZPCI,
> S390_FEAT_ADAPTER_EVENT_NOTIFICATION,
> S390_FEAT_ADAPTER_INT_SUPPRESSION,
> diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c
> index 7c253ff..6b5e94b 100644
> --- a/target/s390x/cpu_models.c
> +++ b/target/s390x/cpu_models.c
> @@ -788,6 +788,7 @@ static void check_consistency(const S390CPUModel *model)
> { S390_FEAT_SIE_KSS, S390_FEAT_SIE_F2 },
> { S390_FEAT_AP_QUERY_CONFIG_INFO, S390_FEAT_AP },
> { S390_FEAT_AP_FACILITIES_TEST, S390_FEAT_AP },
> + { S390_FEAT_AP_QUEUE_INTERRUPT_CONTROL, S390_FEAT_AP },
> };
> int i;
>
> diff --git a/target/s390x/gen-features.c b/target/s390x/gen-features.c
> index 70015ea..b051221 100644
> --- a/target/s390x/gen-features.c
> +++ b/target/s390x/gen-features.c
> @@ -448,6 +448,7 @@ static uint16_t full_GEN12_GA1[] = {
> S390_FEAT_EDAT_2,
> S390_FEAT_SIDE_EFFECT_ACCESS_ESOP2,
> S390_FEAT_AP_QUERY_CONFIG_INFO,
> + S390_FEAT_AP_QUEUE_INTERRUPT_CONTROL,
> S390_FEAT_AP_FACILITIES_TEST,
> S390_FEAT_AP,
> };
>
--
Pierre Morel
Linux/KVM/QEMU in Böblingen - Germany
next prev parent reply other threads:[~2019-02-15 9:53 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-14 12:14 [Qemu-devel] [PATCH v3] [RFC] s390x/vfio: VFIO-AP interrupt control interception Pierre Morel
2019-02-14 12:14 ` [Qemu-devel] [PATCH v3] s390x/cpumodel: Set up CPU model for AQIC interception Pierre Morel
2019-02-15 9:53 ` Pierre Morel [this message]
2019-02-15 9:58 ` Christian Borntraeger
2019-02-15 11:00 ` Pierre Morel
2019-02-15 13:52 ` David Hildenbrand
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=68ef1f07-75c2-5d40-1bf9-d6f1db1fa839@linux.ibm.com \
--to=pmorel@linux.ibm.com \
--cc=agraf@suse.de \
--cc=akrowiak@linux.ibm.com \
--cc=borntraeger@de.ibm.com \
--cc=cohuck@redhat.com \
--cc=david@redhat.com \
--cc=eric.auger@redhat.com \
--cc=mst@redhat.com \
--cc=pasic@linux.ibm.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=rth@twiddle.net \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).