From: Cornelia Huck <cohuck@redhat.com>
To: David Hildenbrand <david@redhat.com>
Cc: qemu-s390x@nongnu.org, qemu-devel@nongnu.org,
Christian Borntraeger <borntraeger@de.ibm.com>,
Richard Henderson <rth@twiddle.net>,
Alexander Graf <agraf@suse.de>,
Paolo Bonzini <pbonzini@redhat.com>,
Peter Crosthwaite <crosthwaite.peter@gmail.com>,
Thomas Huth <thuth@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v1 for-2-12 13/15] s390x/tcg: STSI overhaul
Date: Tue, 9 Jan 2018 18:32:30 +0100 [thread overview]
Message-ID: <20180109183230.5dfae15e.cohuck@redhat.com> (raw)
In-Reply-To: <20171211134740.8235-14-david@redhat.com>
On Mon, 11 Dec 2017 14:47:38 +0100
David Hildenbrand <david@redhat.com> wrote:
> Current STSI implementation is a mess, so let's rewrite it.
>
> Problems fixed by this patch:
> 1) The order of exceptions/when recognized is wrong.
> 2) We have to store to virtual address space, not absolute.
> 3) Alignment check of the block is missing.
> 3) The SMP information is not indicated.
>
> While at it:
> a) Make the code look nicer
> - get rid of nesting levels
> - use struct initialization instead of initializing to zero
> - rename a misspelled field and rename function code defines
> - use a union and have only one write statement
> - use cpu_to_beX()
> b) Indicate the VM name/extended name + UUID just like KVM does
> c) Indicate that all LPAR CPUs we fake are dedicated
> d) Add a comment why we fake being a KVM guest
> e) Give our guest as default the name "TCGguest"
> f) Fake the same CPU information we have in our Guest for all layers
>
> While at it, get rid of "potential_page_fault()" by forwarding the
> retaddr properly.
>
> The result is best verified by looking at "/proc/sysinfo" in the guest
> when specifying on the qemu command line
> -uuid "74738ff5-5367-5958-9aee-98fffdcd1876" \
> -name "extra long guest name"
>
> Signed-off-by: David Hildenbrand <david@redhat.com>
> ---
> target/s390x/cpu.h | 22 +++--
> target/s390x/misc_helper.c | 213 ++++++++++++++++++++++++---------------------
> 2 files changed, 132 insertions(+), 103 deletions(-)
>
> diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h
> index bfe650c46e..aded28d390 100644
> --- a/target/s390x/cpu.h
> +++ b/target/s390x/cpu.h
> @@ -425,11 +425,11 @@ static inline void setcc(S390CPU *cpu, uint64_t cc)
> }
>
> /* STSI */
> -#define STSI_LEVEL_MASK 0x00000000f0000000ULL
> -#define STSI_LEVEL_CURRENT 0x0000000000000000ULL
> -#define STSI_LEVEL_1 0x0000000010000000ULL
> -#define STSI_LEVEL_2 0x0000000020000000ULL
> -#define STSI_LEVEL_3 0x0000000030000000ULL
> +#define STSI_R0_FC_MASK 0x00000000f0000000ULL
> +#define STSI_R0_FC_CURRENT 0x0000000000000000ULL
> +#define STSI_R0_FC_LEVEL_1 0x0000000010000000ULL
> +#define STSI_R0_FC_LEVEL_2 0x0000000020000000ULL
> +#define STSI_R0_FC_LEVEL_3 0x0000000030000000ULL
> #define STSI_R0_RESERVED_MASK 0x000000000fffff00ULL
> #define STSI_R0_SEL1_MASK 0x00000000000000ffULL
> #define STSI_R1_RESERVED_MASK 0x00000000ffff0000ULL
> @@ -464,7 +464,7 @@ struct sysib_122 {
> uint8_t res1[32];
> uint32_t capability;
> uint16_t total_cpus;
> - uint16_t active_cpus;
> + uint16_t conf_cpus;
> uint16_t standby_cpus;
> uint16_t reserved_cpus;
> uint16_t adjustments[2026];
> @@ -524,6 +524,16 @@ struct sysib_322 {
> };
> QEMU_BUILD_BUG_ON(sizeof(struct sysib_322) != 4096);
>
> +union sysib {
> + struct sysib_111 sysib_111;
> + struct sysib_121 sysib_121;
> + struct sysib_122 sysib_122;
> + struct sysib_221 sysib_221;
> + struct sysib_222 sysib_222;
> + struct sysib_322 sysib_322;
> +};
Wondering whether you should add some typedefery to make this more
qemu-y.
> +QEMU_BUILD_BUG_ON(sizeof(union sysib) != 4096);
> +
> /* MMU defines */
> #define _ASCE_ORIGIN ~0xfffULL /* segment table origin */
> #define _ASCE_SUBSPACE 0x200 /* subspace group control */
(...)
> + /*
> + * In theory, we could report Level 1 / Level 2 as current. However,
> + * the Linux kernel will detect then assume that we have a sclp
> + * linemode console (which is not the default for QEMU), therefore not
> + * displaying boot messages and making booting a Linux kernel under
> + * TCG harder
I know what you mean, but this reads a bit confusing. What about:
"However, the Linux kernel will detect this as running under LPAR and
assume that we have a sclp linemode console (which is always present on
LPAR, but not the default for QEMU), therefore not displaying boot
messages and making booting a Linux kernel under TCG harder."
> + *
> + * For now we fake the same SMP configuration on all levels.
> + *
> + * TODO: We could later make the level configurable via the
> machine
> + * and change defaults (linemode console) based on machine
> type
> + * and accelerator.
> + */
next prev parent reply other threads:[~2018-01-09 17:32 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-11 13:47 [Qemu-devel] [PATCH v1 for-2-12 00/15] s390x: flic rework, tcg flic support and tcg David Hildenbrand
2017-12-11 13:47 ` [Qemu-devel] [PATCH v1 for-2-12 01/15] cpus: make pause_all_cpus() play with SMP on single threaded TCG David Hildenbrand
2017-12-11 13:47 ` [Qemu-devel] [PATCH v1 for-2-12 02/15] cpu-exec: fix missed CPU kick during interrupt injection David Hildenbrand
2017-12-11 13:47 ` [Qemu-devel] [PATCH v1 for-2-12 03/15] s390x/tcg: deliver multiple interrupts in a row David Hildenbrand
2017-12-11 13:47 ` [Qemu-devel] [PATCH v1 for-2-12 04/15] s390x/flic: simplify flic initialization David Hildenbrand
2017-12-11 14:00 ` Christian Borntraeger
2017-12-11 17:17 ` Cornelia Huck
2017-12-11 20:34 ` David Hildenbrand
2017-12-12 9:15 ` Cornelia Huck
2017-12-12 9:58 ` David Hildenbrand
2017-12-12 10:37 ` Cornelia Huck
2017-12-12 10:45 ` David Hildenbrand
2017-12-12 11:49 ` Cornelia Huck
2017-12-12 10:54 ` David Hildenbrand
2017-12-11 13:47 ` [Qemu-devel] [PATCH v1 for-2-12 05/15] s390x/tcg: simplify machine check handling David Hildenbrand
2018-01-09 16:31 ` Cornelia Huck
2017-12-11 13:47 ` [Qemu-devel] [PATCH v1 for-2-12 06/15] s390x/flic: factor out injection of floating interrupts David Hildenbrand
2017-12-12 13:49 ` Cornelia Huck
2017-12-12 14:13 ` Christian Borntraeger
2017-12-12 14:29 ` Cornelia Huck
2017-12-12 15:17 ` David Hildenbrand
2017-12-12 15:28 ` Cornelia Huck
2017-12-13 9:16 ` Christian Borntraeger
2017-12-13 9:31 ` David Hildenbrand
2017-12-13 10:05 ` Christian Borntraeger
2018-01-09 16:34 ` Cornelia Huck
2017-12-13 9:34 ` Cornelia Huck
2017-12-12 16:36 ` David Hildenbrand
2017-12-11 13:47 ` [Qemu-devel] [PATCH v1 for-2-12 07/15] s390x/tcg: tolerate wrong wakeups due to " David Hildenbrand
2017-12-11 13:47 ` [Qemu-devel] [PATCH v1 for-2-12 08/15] s390x/flic: make floating interrupts on TCG actually floating David Hildenbrand
2018-01-09 16:42 ` Cornelia Huck
2017-12-11 13:47 ` [Qemu-devel] [PATCH v1 for-2-12 09/15] s390x/tcg: implement TEST PENDING INTERRUPTION David Hildenbrand
2017-12-11 18:01 ` Cornelia Huck
2017-12-11 20:32 ` David Hildenbrand
2017-12-12 9:13 ` Cornelia Huck
2017-12-12 16:32 ` David Hildenbrand
2017-12-11 13:47 ` [Qemu-devel] [PATCH v1 for-2-12 10/15] s390x/flic: implement qemu_s390_clear_io_flic() David Hildenbrand
2017-12-11 13:47 ` [Qemu-devel] [PATCH v1 for-2-12 11/15] s390x/flic: optimize CPU wakeup for TCG David Hildenbrand
2017-12-11 13:47 ` [Qemu-devel] [PATCH v1 for-2-12 12/15] s390x/tcg: fix size + content of STSI blocks David Hildenbrand
2018-01-09 18:42 ` [Qemu-devel] [qemu-s390x] " Thomas Huth
2017-12-11 13:47 ` [Qemu-devel] [PATCH v1 for-2-12 13/15] s390x/tcg: STSI overhaul David Hildenbrand
2018-01-09 17:32 ` Cornelia Huck [this message]
2018-01-17 16:26 ` [Qemu-devel] [qemu-s390x] " David Hildenbrand
2017-12-11 13:47 ` [Qemu-devel] [PATCH v1 for-2-12 14/15] s390x/tcg: remove SMP warning David Hildenbrand
2017-12-11 13:47 ` [Qemu-devel] [PATCH v1 for-2-12 15/15] configure: s390x supports mttcg now David Hildenbrand
2018-01-09 17:33 ` [Qemu-devel] [PATCH v1 for-2-12 00/15] s390x: flic rework, tcg flic support and tcg 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=20180109183230.5dfae15e.cohuck@redhat.com \
--to=cohuck@redhat.com \
--cc=agraf@suse.de \
--cc=borntraeger@de.ibm.com \
--cc=crosthwaite.peter@gmail.com \
--cc=david@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=rth@twiddle.net \
--cc=thuth@redhat.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.