From: Marc Hartmayer <mhartmay@linux.ibm.com>
To: Janosch Frank <frankja@linux.ibm.com>, qemu-devel@nongnu.org
Cc: thuth@redhat.com, david@redhat.com, cohuck@redhat.com,
walling@linux.ibm.com, pasic@linux.ibm.com,
borntraeger@de.ibm.com, qemu-s390x@nongnu.org,
mhartmay@linux.ibm.com
Subject: Re: [PATCH v2 2/2] s390x: pv: Fix diag318 PV fencing
Date: Thu, 22 Oct 2020 14:40:40 +0200 [thread overview]
Message-ID: <871rhqo2lz.fsf@linux.ibm.com> (raw)
In-Reply-To: <20201022103135.126033-3-frankja@linux.ibm.com>
On Thu, Oct 22, 2020 at 06:31 AM -0400, Janosch Frank <frankja@linux.ibm.com> wrote:
> Diag318 fencing needs to be determined on the current VM PV state and
> not on the state that the VM has when we create the CPU model.
>
> Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
> Reported-by: Marc Hartmayer <mhartmay@linux.ibm.com>
> Fixes: fabdada935 ("s390: guest support for diagnose 0x318")
> ---
> target/s390x/cpu_features.c | 5 +++++
> target/s390x/cpu_features.h | 4 ++++
> target/s390x/cpu_models.c | 4 ++++
> target/s390x/kvm.c | 3 +--
> 4 files changed, 14 insertions(+), 2 deletions(-)
>
> diff --git a/target/s390x/cpu_features.c b/target/s390x/cpu_features.c
> index 31ea8df246..42fe0bf4ca 100644
> --- a/target/s390x/cpu_features.c
> +++ b/target/s390x/cpu_features.c
> @@ -14,6 +14,7 @@
> #include "qemu/osdep.h"
> #include "qemu/module.h"
> #include "cpu_features.h"
> +#include "hw/s390x/pv.h"
>
> #define DEF_FEAT(_FEAT, _NAME, _TYPE, _BIT, _DESC) \
> [S390_FEAT_##_FEAT] = { \
> @@ -105,6 +106,10 @@ void s390_fill_feat_block(const S390FeatBitmap features, S390FeatType type,
> }
> feat = find_next_bit(features, S390_FEAT_MAX, feat + 1);
> }
> +
> + if (type == S390_FEAT_TYPE_SCLP_FAC134 && s390_is_pv()) {
> + clear_be_bit(s390_feat_def(S390_FEAT_DIAG_318)->bit, data);
> + }
> }
>
> void s390_add_from_feat_block(S390FeatBitmap features, S390FeatType type,
> diff --git a/target/s390x/cpu_features.h b/target/s390x/cpu_features.h
> index ef52ffce83..87463f064d 100644
> --- a/target/s390x/cpu_features.h
> +++ b/target/s390x/cpu_features.h
> @@ -81,6 +81,10 @@ const S390FeatGroupDef *s390_feat_group_def(S390FeatGroup group);
>
> #define BE_BIT_NR(BIT) (BIT ^ (BITS_PER_LONG - 1))
>
> +static inline void clear_be_bit(unsigned int bit_nr, uint8_t *array)
> +{
> + array[bit_nr / 8] &= ~(0x80 >> (bit_nr % 8));
> +}
> static inline void set_be_bit(unsigned int bit_nr, uint8_t *array)
> {
> array[bit_nr / 8] |= 0x80 >> (bit_nr % 8);
> diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c
> index ca484bfda7..461e0b8f4a 100644
> --- a/target/s390x/cpu_models.c
> +++ b/target/s390x/cpu_models.c
> @@ -29,6 +29,7 @@
> #include "hw/pci/pci.h"
> #endif
> #include "qapi/qapi-commands-machine-target.h"
> +#include "hw/s390x/pv.h"
>
> #define CPUDEF_INIT(_type, _gen, _ec_ga, _mha_pow, _hmfai, _name, _desc) \
> { \
> @@ -238,6 +239,9 @@ bool s390_has_feat(S390Feat feat)
> }
> return 0;
> }
> + if (feat == S390_FEAT_DIAG_318 && s390_is_pv()) {
> + return false;
> + }
> return test_bit(feat, cpu->model->features);
> }
>
> diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c
> index f13eff688c..baa070fdf7 100644
> --- a/target/s390x/kvm.c
> +++ b/target/s390x/kvm.c
> @@ -2498,8 +2498,7 @@ void kvm_s390_get_host_cpu_model(S390CPUModel *model, Error **errp)
> */
> set_bit(S390_FEAT_EXTENDED_LENGTH_SCCB, model->features);
>
> - /* DIAGNOSE 0x318 is not supported under protected virtualization */
> - if (!s390_is_pv() && kvm_check_extension(kvm_state, KVM_CAP_S390_DIAG318)) {
> + if (kvm_check_extension(kvm_state, KVM_CAP_S390_DIAG318)) {
> set_bit(S390_FEAT_DIAG_318, model->features);
> }
>
> --
> 2.25.1
Tested-by: Marc Hartmayer <mhartmay@linux.ibm.com>
next prev parent reply other threads:[~2020-10-22 12:42 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-22 10:31 [PATCH v2 0/2] s390x: pv: Diag318 fixes Janosch Frank
2020-10-22 10:31 ` [PATCH v2 1/2] s390x: pv: Remove sclp boundary checks Janosch Frank
2020-10-22 10:31 ` [PATCH v2 2/2] s390x: pv: Fix diag318 PV fencing Janosch Frank
2020-10-22 10:53 ` David Hildenbrand
2020-10-22 11:07 ` Christian Borntraeger
2020-10-22 12:40 ` Marc Hartmayer [this message]
2020-10-22 12:50 ` [PATCH v2 0/2] s390x: pv: Diag318 fixes Collin Walling
2020-10-22 14:06 ` Cornelia Huck
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=871rhqo2lz.fsf@linux.ibm.com \
--to=mhartmay@linux.ibm.com \
--cc=borntraeger@de.ibm.com \
--cc=cohuck@redhat.com \
--cc=david@redhat.com \
--cc=frankja@linux.ibm.com \
--cc=pasic@linux.ibm.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=thuth@redhat.com \
--cc=walling@linux.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.