qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Michael Mueller <mimu@linux.vnet.ibm.com>
To: Richard Henderson <rth@twiddle.net>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH RFC 04/11] s390/qemu: cpu model cpu facilitiy support
Date: Wed, 16 Oct 2013 14:21:23 +0200	[thread overview]
Message-ID: <20131016142123.375f47f8@bee> (raw)
In-Reply-To: <525DC5E1.3090308@twiddle.net>

On Tue, 15 Oct 2013 15:46:57 -0700
Richard Henderson <rth@twiddle.net> 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

  reply	other threads:[~2013-10-16 12:22 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-02 11:33 [Qemu-devel] [PATCH RFC 00/11] s390 cpu models for KVM accelerator Michael Mueller
2013-10-02 11:33 ` [Qemu-devel] [PATCH RFC 01/11] s390/qemu: cpu modle disable list cpus Michael Mueller
2013-10-02 11:33 ` [Qemu-devel] [PATCH RFC 02/11] s390/qemu: cpu model extend config device Michael Mueller
2013-10-02 11:33 ` [Qemu-devel] [PATCH RFC 03/11] s390/qemu: cpu model cpu class definition Michael Mueller
2013-10-02 11:33 ` [Qemu-devel] [PATCH RFC 04/11] s390/qemu: cpu model cpu facilitiy support Michael Mueller
2013-10-03 14:53   ` Richard Henderson
2013-10-07 10:47     ` Michael Mueller
2013-10-07 15:35       ` Michael Mueller
2013-10-15 22:46       ` Richard Henderson
2013-10-16 12:21         ` Michael Mueller [this message]
2013-10-02 11:33 ` [Qemu-devel] [PATCH RFC 05/11] s390/qemu: cpu model alias support Michael Mueller
2013-10-02 11:33 ` [Qemu-devel] [PATCH RFC 06/11] s390/qemu: cpu model KVM properties requests Michael Mueller
2013-10-02 11:33 ` [Qemu-devel] [PATCH RFC 07/11] s390/qemu: cpu model class initialization Michael Mueller
2013-10-02 11:33 ` [Qemu-devel] [PATCH RFC 08/11] s390/qemu: cpu model command line option help Michael Mueller
2013-10-02 11:33 ` [Qemu-devel] [PATCH RFC 09/11] s390/qemu: cpu model QMP query-cpu-definitions Michael Mueller
2013-10-02 11:33 ` [Qemu-devel] [PATCH RFC 10/11] s390/qemu: cpu model QMP query-cpu-model Michael Mueller
2013-10-02 12:06   ` Eric Blake
2013-10-02 14:30     ` Michael Mueller
2013-10-02 11:33 ` [Qemu-devel] [PATCH RFC 11/11] s390/qemu: cpu model enablement Michael Mueller

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=20131016142123.375f47f8@bee \
    --to=mimu@linux.vnet.ibm.com \
    --cc=qemu-devel@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).