[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH RFC 04/11] s390/qemu: cpu model cpu facilitiy su
From: |
Michael Mueller |
Subject: |
Re: [Qemu-devel] [PATCH RFC 04/11] s390/qemu: cpu model cpu facilitiy support |
Date: |
Wed, 16 Oct 2013 14:21:23 +0200 |
On Tue, 15 Oct 2013 15:46:57 -0700
Richard Henderson <address@hidden> wrote:
> On 10/07/2013 03:47 AM, Michael Mueller wrote:
> > A second reason for using 2k of memory here is to fully represent the
> > facilities as defined
> > in the s390x architecture. The SIE state needs it and I want to represent
> > it identically in
> > user space and KVM. Otherwise I would need a specific interface just for
> > the facilities.
>
> If KVM needs the data in the format that you've got it in now, that's fair
> enough.
>
> Otherwise, 128 bits per s390 system seems nicer than 32 bits per facility.
>
I wrote it down with defines but it is really a mess, I need to
double/tripple-check it:
#define FAC0_CPU_S390_2064_GA1 \
( FAC_BIT(0, FAC_N3) \
| FAC_BIT(0, FAC_ZARCH) \
| FAC_BIT(0, FAC_ZARCH_ACTIVE))
#define FAC1_CPU_S390_2064_GA1 0ul
#define FAC0_CPU_S390_2064_GA2 \
( FAC0_CPU_S390_2064_GA1 \
| FAC_BIT(0, FAC_EXTENDED_TRANSLATION_2))
#define FAC1_CPU_S390_2064_GA2 FAC1_CPU_S390_2064_GA1
#define FAC0_CPU_S390_2064_GA3 FAC0_CPU_S390_2064_GA2
#define FAC1_CPU_S390_2064_GA3 FAC1_CPU_S390_2064_GA2
#define FAC0_CPU_S390_2066_GA1 FAC0_CPU_S390_2064_GA3
#define FAC1_CPU_S390_2066_GA1 FAC0_CPU_S390_2064_GA3
#define FAC0_CPU_S390_2084_GA1 \
( FAC0_CPU_S390_2064_GA3 \
| FAC_BIT(0, FAC_DAT_ENH) \
| FAC_BIT(0, FAC_MESSAGE_SECURITY_ASSIST) \
| FAC_BIT(0, FAC_LONG_DISPLACEMENT) \
| FAC_BIT(0, FAC_LONG_DISPLACEMENT_FAST) \
| FAC_BIT(0, FAC_HFP_MADDSUB))
#define FAC1_CPU_S390_2084_GA1 FAC1_CPU_S390_2064_GA3
#define FAC0_CPU_S390_2084_GA2 \
( FAC0_CPU_S390_2084_GA1 \
| FAC_BIT(0, 4))
#define FAC1_CPU_S390_2084_GA2 FAC1_CPU_S390_2084_GA1
#define FAC0_CPU_S390_2084_GA3 \
( FAC0_CPU_S390_2084_GA2 \
| FAC_BIT(0, FAC_ASN_LX_REUSE) \
| FAC_BIT(0, FAC_EXTENDED_TRANSLATION_3))
#define FAC1_CPU_S390_2084_GA3 FAC1_CPU_S390_2084_GA2
#define FAC0_CPU_S390_2084_GA4 FAC0_CPU_S390_2084_GA3
#define FAC1_CPU_S390_2084_GA4 FAC1_CPU_S390_2084_GA3
#define FAC0_CPU_S390_2084_GA5 \
( FAC0_CPU_S390_2084_GA4 \
| FAC_BIT(0, FAC_TOD_CLOCK_STEERING))
#define FAC1_CPU_S390_2084_GA5 FAC1_CPU_S390_2084_GA4
#define FAC0_CPU_S390_2086_GA1 FAC0_CPU_S390_2084_GA3
#define FAC1_CPU_S390_2086_GA1 FAC1_CPU_S390_2084_GA3
#define FAC0_CPU_S390_2086_GA2 FAC0_CPU_S390_2084_GA4
#define FAC1_CPU_S390_2086_GA2 FAC1_CPU_S390_2084_GA4
#define FAC0_CPU_S390_2086_GA3 FAC0_CPU_S390_2084_GA5
#define FAC1_CPU_S390_2086_GA3 FAC1_CPU_S390_2084_GA5
#define FAC0_CPU_S390_2094_GA1 \
( FAC0_CPU_S390_2084_GA5 \
| FAC_BIT(0, FAC_STFLE) \
| FAC_BIT(0, FAC_EXTENDED_IMMEDIATE) \
| FAC_BIT(0, FAC_HFP_UNNORMALIZED_EXT) \
| FAC_BIT(0, FAC_ETF2_ENH) \
| FAC_BIT(0, FAC_STORE_CLOCK_FAST) \
| FAC_BIT(0, FAC_ETF3_ENH) \
| FAC_BIT(0, FAC_EXTRACT_CPU_TIME))
#define FAC1_CPU_S390_2094_GA1 FAC1_CPU_S390_2084_GA5
#define FAC0_CPU_S390_2094_GA2 \
( FAC0_CPU_S390_2094_GA1 \
| FAC_BIT(0, FAC_SENSE_RUNNING_STATUS) \
| FAC_BIT(0, FAC_MOVE_WITH_OPTIONAL_SPEC) \
| FAC_BIT(0, FAC_COMPARE_AND_SWAP_AND_STORE) \
| FAC_BIT(0, FAC_FLOATING_POINT_SUPPPORT_ENH) \
| FAC_BIT(0, FAC_DFP))
#define FAC1_CPU_S390_2094_GA2 FAC1_CPU_S390_2094_GA1
#define FAC0_CPU_S390_2094_GA3 \
( FAC0_CPU_S390_2094_GA2 \
| FAC_BIT(0, FAC_PFPO))
#define FAC1_CPU_S390_2094_GA3 FAC1_CPU_S390_2094_GA2
#define FAC0_CPU_S390_2096_GA1 FAC0_CPU_S390_2094_GA3
#define FAC1_CPU_S390_2096_GA1 FAC1_CPU_S390_2094_GA3
#define FAC0_CPU_S390_2096_GA2 FAC0_CPU_S390_2096_GA1
#define FAC1_CPU_S390_2096_GA2 FAC1_CPU_S390_2096_GA1
#define FAC0_CPU_S390_2097_GA1 \
( FAC0_CPU_S390_2094_GA3 \
| FAC_BIT(0, FAC_ENHANCED_DAT_1) \
| FAC_BIT(0, FAC_CONDITIONAL_SSKE) \
| FAC_BIT(0, FAC_CONFIGURATION_TOPOLOGY) \
| FAC_BIT(0, FAC_PARSING_ENH) \
| FAC_BIT(0, FAC_COMPARE_AND_SWAP_AND_STORE_2) \
| FAC_BIT(0, FAC_GENERAL_INSTRUCTIONS_EXT) \
| FAC_BIT(0, FAC_EXECUTE_EXT) \
| FAC_BIT(0, FAC_DFP_FAST))
#define FAC1_CPU_S390_2097_GA1 FAC1_CPU_S390_2094_GA3
#define FAC0_CPU_S390_2097_GA2 FAC0_CPU_S390_2097_GA1
#define FAC1_CPU_S390_2097_GA2 \
( FAC1_CPU_S390_2097_GA1 \
| FAC_BIT(1, 65) \
| FAC_BIT(1, FAC_CPU_MEASUREMENT_COUNTER) \
| FAC_BIT(1, FAC_CPU_MEASUREMENT_SAMPLING))
#define FAC0_CPU_S390_2097_GA3 \
( FAC0_CPU_S390_2097_GA2 \
| FAC_BIT(0, FAC_SET_PROGRAM_PARAMETERS))
#define FAC1_CPU_S390_2097_GA3 FAC1_CPU_S390_2097_GA2
#define FAC0_CPU_S390_2098_GA1 FAC0_CPU_S390_2097_GA2
#define FAC1_CPU_S390_2098_GA1 FAC1_CPU_S390_2097_GA2
#define FAC0_CPU_S390_2098_GA2 FAC0_CPU_S390_2097_GA3
#define FAC1_CPU_S390_2098_GA2 FAC1_CPU_S390_2097_GA3
#define FAC0_CPU_S390_2817_GA1 \
( FAC0_CPU_S390_2097_GA3 \
| FAC_BIT(0, FAC_ENHANCED_MONITOR) \
| FAC_BIT(0, FAC_FLOATING_POINT_EXT) \
| FAC_BIT(0, FAC_MULTI_45) \
| FAC_BIT(0, 46))
#define FAC1_CPU_S390_2817_GA1 \
((FAC1_CPU_S390_2097_GA3 \
& ~FAC_BIT(1, 65)) \
| FAC_BIT(1, FAC_ACCESS_EXCEPTION_FS_INDICATION))
#define FAC0_CPU_S390_2817_GA2 \
( FAC0_CPU_S390_2817_GA1 \
| FAC_BIT(0, FAC_IPTE_RANGE) \
| FAC_BIT(0, FAC_NONQ_KEY_SETTING) \
| FAC_BIT(0, FAC_CMPSC_ENH))
#define FAC1_CPU_S390_2817_GA2 \
( FAC1_CPU_S390_2817_GA1 \
| FAC_BIT(1, FAC_RESET_REFERENCE_BITS_MULTIPLE) \
| FAC_BIT(1, FAC_MESSAGE_SECURITY_ASSIST_3) \
| FAC_BIT(1, FAC_MESSAGE_SECURITY_ASSIST_4))
#define FAC0_CPU_S390_2818_GA1 FAC0_CPU_S390_2817_GA2
#define FAC1_CPU_S390_2818_GA1 FAC1_CPU_S390_2817_GA2
#define FAC0_CPU_S390_2827_GA1 \
( FAC0_CPU_S390_2817_GA2 \
| FAC_BIT(0, FAC_DFP_ZONED_CONVERSION) \
| FAC_BIT(0, FAC_MULTI_49) \
| FAC_BIT(0, FAC_CONSTRAINT_TRANSACTIONAL_EXE) \
| FAC_BIT(0, FAC_LOCAL_TLB_CLEARING) \
| FAC_BIT(0, FAC_INTERLOCKED_ACCESS_2))
#define FAC1_CPU_S390_2827_GA1 \
( FAC1_CPU_S390_2817_GA2 \
| FAC_BIT(1, FAC_TRANSACTIONAL_EXE) \
| FAC_BIT(1, FAC_ENHANCED_DAT_2))
#define FAC0_CPU_S390_2827_GA2 FAC0_CPU_S390_2827_GA1
#define FAC1_CPU_S390_2827_GA2 FAC1_CPU_S390_2827_GA1
#define FAC0_CPU_S390_2828_GA1 FAC0_CPU_S390_2827_GA2
#define FAC1_CPU_S390_2828_GA1 FAC1_CPU_S390_2827_GA2
[Qemu-devel] [PATCH RFC 05/11] s390/qemu: cpu model alias support, Michael Mueller, 2013/10/02
[Qemu-devel] [PATCH RFC 02/11] s390/qemu: cpu model extend config device, Michael Mueller, 2013/10/02
[Qemu-devel] [PATCH RFC 11/11] s390/qemu: cpu model enablement, Michael Mueller, 2013/10/02
[Qemu-devel] [PATCH RFC 01/11] s390/qemu: cpu modle disable list cpus, Michael Mueller, 2013/10/02
[Qemu-devel] [PATCH RFC 08/11] s390/qemu: cpu model command line option help, Michael Mueller, 2013/10/02
[Qemu-devel] [PATCH RFC 09/11] s390/qemu: cpu model QMP query-cpu-definitions, Michael Mueller, 2013/10/02
[Qemu-devel] [PATCH RFC 07/11] s390/qemu: cpu model class initialization, Michael Mueller, 2013/10/02
[Qemu-devel] [PATCH RFC 10/11] s390/qemu: cpu model QMP query-cpu-model, Michael Mueller, 2013/10/02