From: David Hildenbrand <david@redhat.com>
To: Aurelien Jarno <aurelien@aurel32.net>
Cc: qemu-devel@nongnu.org, Alexander Graf <agraf@suse.de>,
Richard Henderson <rth@twiddle.net>
Subject: Re: [Qemu-devel] [PATCH v3 30/30] target/s390x: update maximum TCG model to z800
Date: Thu, 1 Jun 2017 21:56:34 +0200 [thread overview]
Message-ID: <42f7b144-4576-33e9-b385-e95e1432d93d@redhat.com> (raw)
In-Reply-To: <20170601191702.feantajorjt33lsc@aurel32.net>
On 01.06.2017 21:17, Aurelien Jarno wrote:
> On 2017-06-01 10:38, David Hildenbrand wrote:
>> On 01.06.2017 00:01, Aurelien Jarno wrote:
>>> At the same time fix the TCG version of get_max_cpu_model to return the
>>> maximum model like on KVM. Remove the ETF2 and long-displacement
>>
>> I don't understand the part
>> "fix the TCG version of get_max_cpu_model to return the maximum model
>> like on KVM".
>>
>> Can you elaborate?
>
> Currently get_max_cpu_model returns the features of the base model, so
> for example the one of a z900 even on a z800. This makes impossible to
> enable the features that are provided by a z800 like etf2 or ldisp.
>
Right, you can always change the max_cpu_model, e.g. bumping up the
version or adding new features, that is just fine.
> For what I understand from the KVM code (but I haven't tested), the
> function return all the features that are supported by the current CPU,
> not all the features that are supported by the base model of the current
> CPU.
Correct, for KVM it is the detected model, that means: Base features +
optional features.
>
>
>>> facilities from the additional features as it is included in the z800.
>>>
>>> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
>>> ---
>>> target/s390x/cpu_models.c | 13 ++++++-------
>>> 1 file changed, 6 insertions(+), 7 deletions(-)
>>>
>>> diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c
>>> index fc3cb25cc3..c13bbd852c 100644
>>> --- a/target/s390x/cpu_models.c
>>> +++ b/target/s390x/cpu_models.c
>>> @@ -668,8 +668,6 @@ static void add_qemu_cpu_model_features(S390FeatBitmap fbm)
>>> static const int feats[] = {
>>> S390_FEAT_STFLE,
>>> S390_FEAT_EXTENDED_IMMEDIATE,
>>> - S390_FEAT_EXTENDED_TRANSLATION_2,
>>> - S390_FEAT_LONG_DISPLACEMENT,
>>> S390_FEAT_LONG_DISPLACEMENT_FAST,
>>> S390_FEAT_ETF2_ENH,
>>> S390_FEAT_STORE_CLOCK_FAST,
>>> @@ -696,9 +694,9 @@ static S390CPUModel *get_max_cpu_model(Error **errp)
>>> if (kvm_enabled()) {
>>> kvm_s390_get_host_cpu_model(&max_model, errp);
>>> } else {
>>> - /* TCG emulates a z900 (with some optional additional features) */
>>> - max_model.def = &s390_cpu_defs[0];
>>> - bitmap_copy(max_model.features, max_model.def->default_feat,
>>> + /* TCG emulates a z800 (with some optional additional features) */
>>> + max_model.def = s390_find_cpu_def(0x2066, 7, 3, NULL);
>>> + bitmap_copy(max_model.features, max_model.def->full_feat,
>>> S390_FEAT_MAX);
>>> add_qemu_cpu_model_features(max_model.features);
>>> }
>>> @@ -956,8 +954,9 @@ static void s390_qemu_cpu_model_initfn(Object *obj)
>>> S390CPU *cpu = S390_CPU(obj);
>>>
>>> cpu->model = g_malloc0(sizeof(*cpu->model));
>>> - /* TCG emulates a z900 (with some optional additional features) */
>>> - memcpy(&s390_qemu_cpu_defs, &s390_cpu_defs[0], sizeof(s390_qemu_cpu_defs));
>>> + /* TCG emulates a z800 (with some optional additional features) */
>>> + memcpy(&s390_qemu_cpu_defs, s390_find_cpu_def(0x2066, 7, 3, NULL),
>>> + sizeof(s390_qemu_cpu_defs));
>>
>> No changing the qemu model without compatibility handling.
>
> This patch series is based on the patch from Thomas Huth. It means the
> QEMU model is still based on a z900, but that it is possible to enable
> some more features like etf2.
Thomas' code did neither change features nor the "model definition". It
just allows for some more feature to be set. It is a hack.
I am pretty sure that expanding the "qemu" CPU model now (QMP
query-cpu-model-expansion) will indicate a z800, not a z900.
See cpu_info_from_model(). And that is a problem, because the QEMU CPU
model is a "migration-safe" CPU model, meaning it must remain equal for
every compatibility machine.
Thanks.
>
> Aurelien
>
--
Thanks,
David
next prev parent reply other threads:[~2017-06-01 19:56 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-31 22:00 [Qemu-devel] [PATCH v3 00/30] target/s390x: fix, improve and implement some more instructions Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 01/30] target/s390x: remove dead code in translate.c Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 02/30] target/s390x: remove some Linux assumptions from IPTE Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 03/30] target/s390x: implement local-TLB-clearing in IPTE Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 04/30] target/s390x: implement TEST AND SET Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 05/30] target/s390x: implement TEST ADDRESSING MODE Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 06/30] target/s390x: implement PACK Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 07/30] target/s390x: implement LOAD PAIR FROM QUADWORD Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 08/30] target/s390x: implement STORE PAIR TO QUADWORD Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 09/30] target/s390x: implement COMPARE AND SIGNAL Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 10/30] target/s390x: implement MOVE INVERSE Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 11/30] target/s390x: implement MOVE NUMERICS Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 12/30] target/s390x: implement MOVE WITH OFFSET Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 13/30] target/s390x: implement MOVE ZONES Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 14/30] target/s390x: improve 24-bit and 31-bit addresses read Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 15/30] target/s390x: improve 24-bit and 31-bit addresses write Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 16/30] target/s390x: improve 24-bit and 31-bit lengths read/write Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 17/30] target/s390x: fix COMPARE LOGICAL LONG EXTENDED Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 18/30] target/s390x: implement COMPARE LOGICAL LONG Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 19/30] target/s390x: fix adj_len_to_page Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 20/30] target/s390x: improve MOVE LONG and MOVE LONG EXTENDED Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 21/30] target/s390x: implement COMPARE LOGICAL LONG UNICODE Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 22/30] target/s390x: implement MOVE " Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 23/30] target/s390x: implement PACK ASCII Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 24/30] target/s390x: implement PACK UNICODE Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 25/30] target/s390x: implement UNPACK ASCII Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 26/30] target/s390x: implement UNPACK UNICODE Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 27/30] target/s390x: implement TEST DECIMAL Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 28/30] target/s390x: implement TRANSLATE ONE/TWO TO ONE/TWO Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 29/30] target/s390x: mark ETF2 and ETF2-ENH facilities as available Aurelien Jarno
2017-05-31 22:01 ` [Qemu-devel] [PATCH v3 30/30] target/s390x: update maximum TCG model to z800 Aurelien Jarno
2017-06-01 8:38 ` David Hildenbrand
2017-06-01 9:04 ` David Hildenbrand
2017-06-01 19:17 ` Aurelien Jarno
2017-06-02 8:09 ` Thomas Huth
2017-06-02 11:30 ` David Hildenbrand
2017-06-02 14:04 ` Aurelien Jarno
2017-06-02 14:27 ` David Hildenbrand
2017-06-02 14:34 ` Thomas Huth
2017-06-02 14:41 ` David Hildenbrand
2017-06-01 19:17 ` Aurelien Jarno
2017-06-01 19:56 ` David Hildenbrand [this message]
2017-06-02 13:40 ` Aurelien Jarno
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=42f7b144-4576-33e9-b385-e95e1432d93d@redhat.com \
--to=david@redhat.com \
--cc=agraf@suse.de \
--cc=aurelien@aurel32.net \
--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).