diff mbox

[RFC,4/5] s390x/cpumodel: enable AP facilities for guest

Message ID 1509033294-4945-5-git-send-email-akrowiak@linux.vnet.ibm.com (mailing list archive)
State New, archived
Headers show

Commit Message

Tony Krowiak Oct. 26, 2017, 3:54 p.m. UTC
Sets up the following STFLE bits to enable the specified AP
facilities for the guest VM:
	* STFLE.12: Enables the AP Query Configuration Information
                    facility. The AP bus running in the guest uses
                    the information returned from this instruction
                    to configure AP adapters and domains for the
                    guest machine.
	* STFLE.15: Enables the AP Special Command facility. The AP
                    bus running in the guest sets the T bit in
                    register 0 for the PQAP(TAPQ) instruction when
                    scanning for AP devices if this facility is
                    installed.

These facilities are required in order for the AP bus running on
the KVM guest to function properly.

Signed-off-by: Tony Krowiak <akrowiak@linux.vnet.ibm.com>
---
 target/s390x/cpu_features.c     |    2 ++
 target/s390x/cpu_features_def.h |    2 ++
 target/s390x/gen-features.c     |    4 ++++
 3 files changed, 8 insertions(+), 0 deletions(-)

Comments

Cornelia Huck Nov. 14, 2017, 3:11 p.m. UTC | #1
On Thu, 26 Oct 2017 11:54:53 -0400
Tony Krowiak <akrowiak@linux.vnet.ibm.com> wrote:

> Sets up the following STFLE bits to enable the specified AP
> facilities for the guest VM:
> 	* STFLE.12: Enables the AP Query Configuration Information
>                     facility. The AP bus running in the guest uses
>                     the information returned from this instruction
>                     to configure AP adapters and domains for the
>                     guest machine.
> 	* STFLE.15: Enables the AP Special Command facility. The AP
>                     bus running in the guest sets the T bit in
>                     register 0 for the PQAP(TAPQ) instruction when
>                     scanning for AP devices if this facility is
>                     installed.
> 
> These facilities are required in order for the AP bus running on
> the KVM guest to function properly.
> 
> Signed-off-by: Tony Krowiak <akrowiak@linux.vnet.ibm.com>
> ---
>  target/s390x/cpu_features.c     |    2 ++
>  target/s390x/cpu_features_def.h |    2 ++
>  target/s390x/gen-features.c     |    4 ++++
>  3 files changed, 8 insertions(+), 0 deletions(-)
> 
> diff --git a/target/s390x/cpu_features.c b/target/s390x/cpu_features.c
> index 31a4676..63f002c 100644
> --- a/target/s390x/cpu_features.c
> +++ b/target/s390x/cpu_features.c
> @@ -36,8 +36,10 @@ static const S390FeatDef s390_features[] = {
>      FEAT_INIT("srs", S390_FEAT_TYPE_STFL, 9, "Sense-running-status facility"),
>      FEAT_INIT("csske", S390_FEAT_TYPE_STFL, 10, "Conditional-SSKE facility"),
>      FEAT_INIT("ctop", S390_FEAT_TYPE_STFL, 11, "Configuration-topology facility"),
> +    FEAT_INIT("apqci", S390_FEAT_TYPE_STFL, 12, "Query Adjunct Processor Configuration facility"),
>      FEAT_INIT("ipter", S390_FEAT_TYPE_STFL, 13, "IPTE-range facility"),
>      FEAT_INIT("nonqks", S390_FEAT_TYPE_STFL, 14, "Nonquiescing key-setting facility"),
> +    FEAT_INIT("apsc", S390_FEAT_TYPE_STFL, 15, "Adjunct Processor Special Command facility"),

Are there any interdependencies for those feature bits?

>      FEAT_INIT("etf2", S390_FEAT_TYPE_STFL, 16, "Extended-translation facility 2"),
>      FEAT_INIT("msa-base", S390_FEAT_TYPE_STFL, 17, "Message-security-assist facility (excluding subfunctions)"),
>      FEAT_INIT("ldisp", S390_FEAT_TYPE_STFL, 18, "Long-displacement facility"),
> diff --git a/target/s390x/cpu_features_def.h b/target/s390x/cpu_features_def.h
> index 4b6d4e9..4e2589f 100644
> --- a/target/s390x/cpu_features_def.h
> +++ b/target/s390x/cpu_features_def.h
> @@ -27,8 +27,10 @@ typedef enum {
>      S390_FEAT_SENSE_RUNNING_STATUS,
>      S390_FEAT_CONDITIONAL_SSKE,
>      S390_FEAT_CONFIGURATION_TOPOLOGY,
> +    S390_FEAT_AP_QUERY_CONFIG_INFO,
>      S390_FEAT_IPTE_RANGE,
>      S390_FEAT_NONQ_KEY_SETTING,
> +    S390_FEAT_AP_SPECIAL_CMD,
>      S390_FEAT_EXTENDED_TRANSLATION_2,
>      S390_FEAT_MSA,
>      S390_FEAT_LONG_DISPLACEMENT,
> diff --git a/target/s390x/gen-features.c b/target/s390x/gen-features.c
> index 68e6c31..42914cf 100644
> --- a/target/s390x/gen-features.c
> +++ b/target/s390x/gen-features.c
> @@ -425,6 +425,10 @@ static uint16_t full_GEN11_GA1[] = {
>      S390_FEAT_IPTE_RANGE,
>      S390_FEAT_ACCESS_EXCEPTION_FS_INDICATION,
>      S390_FEAT_GROUP_MSA_EXT_4,
> +    S390_FEAT_AP_QUERY_CONFIG_INFO,
> +    S390_FEAT_AP_SPECIAL_CMD,

As discussed for the kernel patch, this needs some thought. Do these
features need to be enabled conditionally?

> +    /* FIXME when GISA support is available
> +    S390_FEAT_AP_QUEUE_INTERRUPT_CONTROL,*/

Looking forward to seeing some gisa patches :)

>  };
>  
>  #define full_GEN11_GA2 EmptyFeat
David Hildenbrand Nov. 14, 2017, 4:23 p.m. UTC | #2
On 14.11.2017 16:11, Cornelia Huck wrote:
> On Thu, 26 Oct 2017 11:54:53 -0400
> Tony Krowiak <akrowiak@linux.vnet.ibm.com> wrote:
> 
>> Sets up the following STFLE bits to enable the specified AP
>> facilities for the guest VM:
>> 	* STFLE.12: Enables the AP Query Configuration Information
>>                     facility. The AP bus running in the guest uses
>>                     the information returned from this instruction
>>                     to configure AP adapters and domains for the
>>                     guest machine.
>> 	* STFLE.15: Enables the AP Special Command facility. The AP
>>                     bus running in the guest sets the T bit in
>>                     register 0 for the PQAP(TAPQ) instruction when
>>                     scanning for AP devices if this facility is
>>                     installed.
>>
>> These facilities are required in order for the AP bus running on
>> the KVM guest to function properly.
>>
>> Signed-off-by: Tony Krowiak <akrowiak@linux.vnet.ibm.com>
>> ---
>>  target/s390x/cpu_features.c     |    2 ++
>>  target/s390x/cpu_features_def.h |    2 ++
>>  target/s390x/gen-features.c     |    4 ++++
>>  3 files changed, 8 insertions(+), 0 deletions(-)
>>
>> diff --git a/target/s390x/cpu_features.c b/target/s390x/cpu_features.c
>> index 31a4676..63f002c 100644
>> --- a/target/s390x/cpu_features.c
>> +++ b/target/s390x/cpu_features.c
>> @@ -36,8 +36,10 @@ static const S390FeatDef s390_features[] = {
>>      FEAT_INIT("srs", S390_FEAT_TYPE_STFL, 9, "Sense-running-status facility"),
>>      FEAT_INIT("csske", S390_FEAT_TYPE_STFL, 10, "Conditional-SSKE facility"),
>>      FEAT_INIT("ctop", S390_FEAT_TYPE_STFL, 11, "Configuration-topology facility"),
>> +    FEAT_INIT("apqci", S390_FEAT_TYPE_STFL, 12, "Query Adjunct Processor Configuration facility"),
>>      FEAT_INIT("ipter", S390_FEAT_TYPE_STFL, 13, "IPTE-range facility"),
>>      FEAT_INIT("nonqks", S390_FEAT_TYPE_STFL, 14, "Nonquiescing key-setting facility"),
>> +    FEAT_INIT("apsc", S390_FEAT_TYPE_STFL, 15, "Adjunct Processor Special Command facility"),
> 
> Are there any interdependencies for those feature bits?

And just as a side node, CPU features should only be exposed once
migration support is fully in place (and usually bound to the flag for
compat handling).

(haven't had time yet to have a closer look, so just as a general comment)
diff mbox

Patch

diff --git a/target/s390x/cpu_features.c b/target/s390x/cpu_features.c
index 31a4676..63f002c 100644
--- a/target/s390x/cpu_features.c
+++ b/target/s390x/cpu_features.c
@@ -36,8 +36,10 @@  static const S390FeatDef s390_features[] = {
     FEAT_INIT("srs", S390_FEAT_TYPE_STFL, 9, "Sense-running-status facility"),
     FEAT_INIT("csske", S390_FEAT_TYPE_STFL, 10, "Conditional-SSKE facility"),
     FEAT_INIT("ctop", S390_FEAT_TYPE_STFL, 11, "Configuration-topology facility"),
+    FEAT_INIT("apqci", S390_FEAT_TYPE_STFL, 12, "Query Adjunct Processor Configuration facility"),
     FEAT_INIT("ipter", S390_FEAT_TYPE_STFL, 13, "IPTE-range facility"),
     FEAT_INIT("nonqks", S390_FEAT_TYPE_STFL, 14, "Nonquiescing key-setting facility"),
+    FEAT_INIT("apsc", S390_FEAT_TYPE_STFL, 15, "Adjunct Processor Special Command facility"),
     FEAT_INIT("etf2", S390_FEAT_TYPE_STFL, 16, "Extended-translation facility 2"),
     FEAT_INIT("msa-base", S390_FEAT_TYPE_STFL, 17, "Message-security-assist facility (excluding subfunctions)"),
     FEAT_INIT("ldisp", S390_FEAT_TYPE_STFL, 18, "Long-displacement facility"),
diff --git a/target/s390x/cpu_features_def.h b/target/s390x/cpu_features_def.h
index 4b6d4e9..4e2589f 100644
--- a/target/s390x/cpu_features_def.h
+++ b/target/s390x/cpu_features_def.h
@@ -27,8 +27,10 @@  typedef enum {
     S390_FEAT_SENSE_RUNNING_STATUS,
     S390_FEAT_CONDITIONAL_SSKE,
     S390_FEAT_CONFIGURATION_TOPOLOGY,
+    S390_FEAT_AP_QUERY_CONFIG_INFO,
     S390_FEAT_IPTE_RANGE,
     S390_FEAT_NONQ_KEY_SETTING,
+    S390_FEAT_AP_SPECIAL_CMD,
     S390_FEAT_EXTENDED_TRANSLATION_2,
     S390_FEAT_MSA,
     S390_FEAT_LONG_DISPLACEMENT,
diff --git a/target/s390x/gen-features.c b/target/s390x/gen-features.c
index 68e6c31..42914cf 100644
--- a/target/s390x/gen-features.c
+++ b/target/s390x/gen-features.c
@@ -425,6 +425,10 @@  static uint16_t full_GEN11_GA1[] = {
     S390_FEAT_IPTE_RANGE,
     S390_FEAT_ACCESS_EXCEPTION_FS_INDICATION,
     S390_FEAT_GROUP_MSA_EXT_4,
+    S390_FEAT_AP_QUERY_CONFIG_INFO,
+    S390_FEAT_AP_SPECIAL_CMD,
+    /* FIXME when GISA support is available
+    S390_FEAT_AP_QUEUE_INTERRUPT_CONTROL,*/
 };
 
 #define full_GEN11_GA2 EmptyFeat