qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Alexey Kardashevskiy <aik@ozlabs.ru>
To: "Andreas Färber" <afaerber@suse.de>, qemu-devel@nongnu.org
Cc: Paul Mackerras <paulus@samba.org>,
	Jacques Mony <Jacques.Mony@aero.bombardier.com>,
	qemu-ppc@nongnu.org, Alexander Graf <agraf@suse.de>
Subject: Re: [Qemu-devel] [PATCH v2] target-ppc: move POWER7+ to a separate family
Date: Tue, 12 Nov 2013 18:18:08 +1100	[thread overview]
Message-ID: <5281D630.8080302@ozlabs.ru> (raw)
In-Reply-To: <527D7FCA.9040201@ozlabs.ru>

On 11/09/2013 11:20 AM, Alexey Kardashevskiy wrote:
> On 11/09/2013 03:59 AM, Andreas Färber wrote:
>> Am 08.11.2013 15:54, schrieb Alexey Kardashevskiy:
>>> On 11/09/2013 12:44 AM, Andreas Färber wrote:
>>>> Am 08.11.2013 03:37, schrieb Alexey Kardashevskiy:
>>>>> So far POWER7+ was a part of POWER7 family. However it has a different
>>>>> PVR base value so in order to support PVR masks, it needs a separate
>>>>> family class.
>>>>>
>>>>
>>>> Alexey,
>>>>
>>>>> Another reason to make a POWER7+ family is that its name in the device
>>>>> tree (/proc/device-tree/cpus/cpu*) should be "Power7+" but not "Power7"
>>>>> and this cannot be easily fixed without a new family class.
>>>>>
>>>>> This adds a new family class, PVR base and mask values and moves
>>>>> Power7+ v2.1 CPU to a new family. The class init function is copied
>>>>> from the POWER7 family.
>>>>>
>>>>> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
>>>>> ---
>>>>> Changes:
>>>>> v2:
>>>>> * added VSX enable bit
>>>>> ---
>>>>>  target-ppc/cpu-models.c     |  2 +-
>>>>>  target-ppc/cpu-models.h     |  2 ++
>>>>>  target-ppc/translate_init.c | 38 ++++++++++++++++++++++++++++++++++++++
>>>>>  3 files changed, 41 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/target-ppc/cpu-models.c b/target-ppc/cpu-models.c
>>>>> index 04d88c5..7c9466f 100644
>>>>> --- a/target-ppc/cpu-models.c
>>>>> +++ b/target-ppc/cpu-models.c
>>>>> @@ -1140,7 +1140,7 @@
>>>>>                  "POWER7 v2.1")
>>>>>      POWERPC_DEF("POWER7_v2.3",   CPU_POWERPC_POWER7_v23,             POWER7,
>>>>>                  "POWER7 v2.3")
>>>>> -    POWERPC_DEF("POWER7+_v2.1",  CPU_POWERPC_POWER7P_v21,            POWER7,
>>>>> +    POWERPC_DEF("POWER7+_v2.1",  CPU_POWERPC_POWER7P_v21,            POWER7P,
>>>>>                  "POWER7+ v2.1")
>>>>>      POWERPC_DEF("POWER8_v1.0",   CPU_POWERPC_POWER8_v10,             POWER8,
>>>>>                  "POWER8 v1.0")
>>>>> diff --git a/target-ppc/cpu-models.h b/target-ppc/cpu-models.h
>>>>> index 731ec4a..49ba4a4 100644
>>>>> --- a/target-ppc/cpu-models.h
>>>>> +++ b/target-ppc/cpu-models.h
>>>>> @@ -558,6 +558,8 @@ enum {
>>>>>      CPU_POWERPC_POWER7_v20         = 0x003F0200,
>>>>>      CPU_POWERPC_POWER7_v21         = 0x003F0201,
>>>>>      CPU_POWERPC_POWER7_v23         = 0x003F0203,
>>>>> +    CPU_POWERPC_POWER7P_BASE       = 0x004A0000,
>>>>> +    CPU_POWERPC_POWER7P_MASK       = 0xFFFF0000,
>>>>>      CPU_POWERPC_POWER7P_v21        = 0x004A0201,
>>>>>      CPU_POWERPC_POWER8_BASE        = 0x004B0000,
>>>>>      CPU_POWERPC_POWER8_MASK        = 0xFFFF0000,
>>>>> diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
>>>>> index 35d1389..c030a20 100644
>>>>> --- a/target-ppc/translate_init.c
>>>>> +++ b/target-ppc/translate_init.c
>>>>> @@ -7253,6 +7253,44 @@ POWERPC_FAMILY(POWER7)(ObjectClass *oc, void *data)
>>>>>      pcc->l1_icache_size = 0x8000;
>>>>>  }
>>>>>  
>>>>> +POWERPC_FAMILY(POWER7P)(ObjectClass *oc, void *data)
>>>>> +{
>>>>> +    DeviceClass *dc = DEVICE_CLASS(oc);
>>>>> +    PowerPCCPUClass *pcc = POWERPC_CPU_CLASS(oc);
>>>>> +
>>>>> +    dc->fw_name = "PowerPC,POWER7+";
>>>>
>>>> Apart from the commit message differing from the code...
>>>
>>>
>>> In what part?
>>
>> The spelling of POWER7. You write it should be "Power7+" but implement
>> it as upper-case "POWER7+" (ignoring the "PowerPC," prefix, that is).
> 
> 
> Ah. Sorry.
> 
> 
>>>> We've had this discussion before: Jacques reported that on his POWER7+
>>>> box only "POWER7" is shown, not "POWER7+", equivalent to my POWER5+ box
>>>> showing only "PowerPC,POWER5". Compare my commit, which documents this:
>>>>
>>>> http://git.qemu.org/?p=qemu.git;a=commit;h=793826cd460828975591f289de78672af4a47ef9
>>>>
>>>> So, adding a POWER7P family seems correct to me, just the fw_name seems
>>>> wrong - or you'll need to investigate further why there are conflicting
>>>> reports of how it is shown. Possibly based on revision or pHyp vs. SLOF?
>>>
>>>
>>> Yes we have had this discussion. Paul said it should "POWER7+". The only
>>> P7+ machine I have handy shows "+":
>>>
>>> [aik@vpl4 ~]$ ls -d /proc/device-tree/cpus/PowerPC*
>>> /proc/device-tree/cpus/PowerPC,POWER7+@0
>>> /proc/device-tree/cpus/PowerPC,POWER7+@2c
>>> /proc/device-tree/cpus/PowerPC,POWER7+@10
>>> /proc/device-tree/cpus/PowerPC,POWER7+@30
>>> /proc/device-tree/cpus/PowerPC,POWER7+@14
>>> /proc/device-tree/cpus/PowerPC,POWER7+@34
>>> /proc/device-tree/cpus/PowerPC,POWER7+@18
>>> /proc/device-tree/cpus/PowerPC,POWER7+@38
>>> /proc/device-tree/cpus/PowerPC,POWER7+@1c
>>> /proc/device-tree/cpus/PowerPC,POWER7+@3c
>>> /proc/device-tree/cpus/PowerPC,POWER7+@20
>>> /proc/device-tree/cpus/PowerPC,POWER7+@4
>>> /proc/device-tree/cpus/PowerPC,POWER7+@24
>>> /proc/device-tree/cpus/PowerPC,POWER7+@8
>>> /proc/device-tree/cpus/PowerPC,POWER7+@28
>>> /proc/device-tree/cpus/PowerPC,POWER7+@c
>>>
>>> And this is a host, not a guest. I do not see any good reason to make dt
>>> names different.
>>>
>>> And this does not really matter if there is "+" or not for anybody as far
>>> as we concerned, ppc64_cpu works either way.
>>
>> Right, it may not matter, but I expect you to reference the above commit
>> id and explain why it should be POWER7+ after all. You failed to come up
>> with that answer before that patch got applied, so we need to correct
>> me/it now.
>>
>> I have checked with Dinar that under Linux using the Sapphire firmware
>> "PowerPC,POWER7+@0" does indeed show up in /proc/device-tree/cpus. So
>> that matches what this patch changes and what you report above.
>> What could be different in Jacques' setup that he reported it different
>> from us? He was checking from AIX, is that possibly using a different
>> firmware, pHyp as for my POWER5+?
> 
> It must be pHyp, I do not see any other options.
> 
>> In any case let's please document this properly in the commit message
>> and not just make contradictory statements about what things should be.
> 
> I have no idea how to document this. No specification tells what the naming
> should be so anything I write there is just my assumption.
> 
> "This defines the cpu node name as PowerPC,POWER7+ to stay in sync with the
> Sapphire host-side firmware"?
> 
> 
>> Also, in qemu.git POWER7 does not have the VSX flag, only the
>> instruction set VSX flag. The addition of this VSX flag for POWER7+ is
>> not mentioned in the commit message. Does it depend on any of the
>> lengthy VSX Stage X series on the list or something in ppc-next changing
>> it for POWER7?
> 
> The PPC-related patches I post are always made against Alex Graf "ppc-next"
> tree and his tree contains VSX fixes. Since my patch simply copies POWER7
> family, I do not see much sense in mentioning all the CPU features it
> enables for the new family.
> 
> 
>> Either way, if you or Alex improve on the commit message then you can
>> add my Reviewed-by, I verified that the VSX flag, desc and fw_name are
>> the only differences.


Would this commit message be ok?

===
    target-ppc: move POWER7+ to a separate family

    So far POWER7+ was a part of POWER7 family. However it has a different
    PVR base value so in order to support PVR masks, it needs a separate
    family class.

    This adds a new family class, PVR base and mask values and moves
    Power7+ v2.1 CPU to a new family. The class init function is copied
    from the POWER7 family.

    This defines a firmware name for the new family as "PowerPC,POWER7+"
    instead of previously used "PowerPC,POWER7" from the POWER7 family.
    The reason for that is that the Sapphire firmware (a host firmware)
    uses "PowerPC,POWER7+" already and since no specification defines
    exactly the CPU nodes naming in the device tree, we better stay
    in sync with the host firmware.
===



-- 
Alexey

  reply	other threads:[~2013-11-12  7:18 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-08  2:37 [Qemu-devel] [PATCH v2] target-ppc: move POWER7+ to a separate family Alexey Kardashevskiy
2013-11-08 13:44 ` Andreas Färber
2013-11-08 14:54   ` Alexey Kardashevskiy
2013-11-08 16:59     ` Andreas Färber
2013-11-09  0:20       ` Alexey Kardashevskiy
2013-11-12  7:18         ` Alexey Kardashevskiy [this message]
2013-11-18  8:55           ` Alexey Kardashevskiy
2013-11-18 21:03             ` Alexander Graf

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=5281D630.8080302@ozlabs.ru \
    --to=aik@ozlabs.ru \
    --cc=Jacques.Mony@aero.bombardier.com \
    --cc=afaerber@suse.de \
    --cc=agraf@suse.de \
    --cc=paulus@samba.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    /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).