diff mbox

target/ppc/cpu-models: set POWER9_v1.0 as POWER9 DD1

Message ID 20170622112648.24815-1-lvivier@redhat.com
State New
Headers show

Commit Message

Laurent Vivier June 22, 2017, 11:26 a.m. UTC
CPU_POWERPC_POWER9_DD1 is 0x004E0100, so this is the POWER9 v1.0.

When we run qemu on a POWER9 DD1 host, we must use either
"-cpu host" or "-cpu POWER9", but in the latter case it fails with

    Unable to find sPAPR CPU Core definition

because POWER9 DD1 doesn't appear in the list of known CPUs.

This patch fixes this by defining POWER9_v1.0 with POWER9 DD1
PVR instead of CPU_POWERPC_POWER9_BASE.

Signed-off-by: Laurent Vivier <lvivier@redhat.com>
---
 target/ppc/cpu-models.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Thomas Huth June 22, 2017, 11:31 a.m. UTC | #1
On 22.06.2017 13:26, Laurent Vivier wrote:
> CPU_POWERPC_POWER9_DD1 is 0x004E0100, so this is the POWER9 v1.0.
> 
> When we run qemu on a POWER9 DD1 host, we must use either
> "-cpu host" or "-cpu POWER9", but in the latter case it fails with
> 
>     Unable to find sPAPR CPU Core definition
> 
> because POWER9 DD1 doesn't appear in the list of known CPUs.
> 
> This patch fixes this by defining POWER9_v1.0 with POWER9 DD1
> PVR instead of CPU_POWERPC_POWER9_BASE.
> 
> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
> ---
>  target/ppc/cpu-models.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/target/ppc/cpu-models.c b/target/ppc/cpu-models.c
> index 4d3e635..a22363c 100644
> --- a/target/ppc/cpu-models.c
> +++ b/target/ppc/cpu-models.c
> @@ -1144,7 +1144,7 @@
>      POWERPC_DEF("970_v2.2",      CPU_POWERPC_970_v22,                970,
>                  "PowerPC 970 v2.2")
>  
> -    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_BASE,            POWER9,
> +    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_DD1,             POWER9,
>                  "POWER9 v1.0")
>  
>      POWERPC_DEF("970fx_v1.0",    CPU_POWERPC_970FX_v10,              970,
> 

I think this also makes sense for running in TCG mode to get a valid
real PVR there.

Reviewed-by: Thomas Huth <thuth@redhat.com>
David Gibson June 23, 2017, 9:21 a.m. UTC | #2
On Thu, Jun 22, 2017 at 01:31:24PM +0200, Thomas Huth wrote:
> On 22.06.2017 13:26, Laurent Vivier wrote:
> > CPU_POWERPC_POWER9_DD1 is 0x004E0100, so this is the POWER9 v1.0.
> > 
> > When we run qemu on a POWER9 DD1 host, we must use either
> > "-cpu host" or "-cpu POWER9", but in the latter case it fails with
> > 
> >     Unable to find sPAPR CPU Core definition
> > 
> > because POWER9 DD1 doesn't appear in the list of known CPUs.
> > 
> > This patch fixes this by defining POWER9_v1.0 with POWER9 DD1
> > PVR instead of CPU_POWERPC_POWER9_BASE.
> > 
> > Signed-off-by: Laurent Vivier <lvivier@redhat.com>
> > ---
> >  target/ppc/cpu-models.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/target/ppc/cpu-models.c b/target/ppc/cpu-models.c
> > index 4d3e635..a22363c 100644
> > --- a/target/ppc/cpu-models.c
> > +++ b/target/ppc/cpu-models.c
> > @@ -1144,7 +1144,7 @@
> >      POWERPC_DEF("970_v2.2",      CPU_POWERPC_970_v22,                970,
> >                  "PowerPC 970 v2.2")
> >  
> > -    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_BASE,            POWER9,
> > +    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_DD1,             POWER9,
> >                  "POWER9 v1.0")
> >  
> >      POWERPC_DEF("970fx_v1.0",    CPU_POWERPC_970FX_v10,              970,
> > 
> 
> I think this also makes sense for running in TCG mode to get a valid
> real PVR there.

I'm not so convinced.

IIUC, this will make TCG default (for now) to a DD1 POWER9.  That's a)
probably not what anyone wants - who'd select a buggy prototype and b)
not accurate - TCG does not implement DD1's bugs.
Laurent Vivier June 23, 2017, 2:10 p.m. UTC | #3
On 23/06/2017 11:21, David Gibson wrote:
> On Thu, Jun 22, 2017 at 01:31:24PM +0200, Thomas Huth wrote:
>> On 22.06.2017 13:26, Laurent Vivier wrote:
>>> CPU_POWERPC_POWER9_DD1 is 0x004E0100, so this is the POWER9 v1.0.
>>>
>>> When we run qemu on a POWER9 DD1 host, we must use either
>>> "-cpu host" or "-cpu POWER9", but in the latter case it fails with
>>>
>>>     Unable to find sPAPR CPU Core definition
>>>
>>> because POWER9 DD1 doesn't appear in the list of known CPUs.
>>>
>>> This patch fixes this by defining POWER9_v1.0 with POWER9 DD1
>>> PVR instead of CPU_POWERPC_POWER9_BASE.
>>>
>>> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
>>> ---
>>>  target/ppc/cpu-models.c | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/target/ppc/cpu-models.c b/target/ppc/cpu-models.c
>>> index 4d3e635..a22363c 100644
>>> --- a/target/ppc/cpu-models.c
>>> +++ b/target/ppc/cpu-models.c
>>> @@ -1144,7 +1144,7 @@
>>>      POWERPC_DEF("970_v2.2",      CPU_POWERPC_970_v22,                970,
>>>                  "PowerPC 970 v2.2")
>>>  
>>> -    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_BASE,            POWER9,
>>> +    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_DD1,             POWER9,
>>>                  "POWER9 v1.0")
>>>  
>>>      POWERPC_DEF("970fx_v1.0",    CPU_POWERPC_970FX_v10,              970,
>>>
>>
>> I think this also makes sense for running in TCG mode to get a valid
>> real PVR there.
> 
> I'm not so convinced.
> 
> IIUC, this will make TCG default (for now) to a DD1 POWER9.  That's a)
> probably not what anyone wants - who'd select a buggy prototype and b)
> not accurate - TCG does not implement DD1's bugs.

According to the POWER8 user manual (I didn't fine the POWER9 one):

"3.6.3.1 Processor Version Register (PVR)

The processor revision level (PVR[16:31]) starts at x‘0100’, indicating
revision ‘1.0’. As revisions are made, bits [29:31] will indicate minor
revisions. Similarly, bits [20:23] indicate major changes."

POWER9 DD1 PVR is 0x004E0100, so this is really version 1.0 of the POWER9.

Perhaps we can define POWER9_v1.0 as CPU_POWERPC_POWER9_DD1, and
introduce a POWER9_v0.0 set to CPU_POWERPC_POWER9_BASE and define it as
the default one?

Laurent
Thomas Huth June 23, 2017, 4:05 p.m. UTC | #4
On 23.06.2017 11:21, David Gibson wrote:
> On Thu, Jun 22, 2017 at 01:31:24PM +0200, Thomas Huth wrote:
>> On 22.06.2017 13:26, Laurent Vivier wrote:
>>> CPU_POWERPC_POWER9_DD1 is 0x004E0100, so this is the POWER9 v1.0.
>>>
>>> When we run qemu on a POWER9 DD1 host, we must use either
>>> "-cpu host" or "-cpu POWER9", but in the latter case it fails with
>>>
>>>     Unable to find sPAPR CPU Core definition
>>>
>>> because POWER9 DD1 doesn't appear in the list of known CPUs.
>>>
>>> This patch fixes this by defining POWER9_v1.0 with POWER9 DD1
>>> PVR instead of CPU_POWERPC_POWER9_BASE.
>>>
>>> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
>>> ---
>>>  target/ppc/cpu-models.c | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/target/ppc/cpu-models.c b/target/ppc/cpu-models.c
>>> index 4d3e635..a22363c 100644
>>> --- a/target/ppc/cpu-models.c
>>> +++ b/target/ppc/cpu-models.c
>>> @@ -1144,7 +1144,7 @@
>>>      POWERPC_DEF("970_v2.2",      CPU_POWERPC_970_v22,                970,
>>>                  "PowerPC 970 v2.2")
>>>  
>>> -    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_BASE,            POWER9,
>>> +    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_DD1,             POWER9,
>>>                  "POWER9 v1.0")
>>>  
>>>      POWERPC_DEF("970fx_v1.0",    CPU_POWERPC_970FX_v10,              970,
>>>
>>
>> I think this also makes sense for running in TCG mode to get a valid
>> real PVR there.
> 
> I'm not so convinced.
> 
> IIUC, this will make TCG default (for now) to a DD1 POWER9.  That's a)
> probably not what anyone wants - who'd select a buggy prototype and b)
> not accurate - TCG does not implement DD1's bugs.

But DD1 = v1.0. There is no real chip which is using
CPU_POWERPC_POWER9_BASE as PVR ... so using that is also not accurate,
and also likely not what users expect when the select "POWER9_v1.0", and
it just does not work as soon as KVM is enabled. So I think Laurent's
patch is the right way to go. Or do you have a better suggestion?

 Thomas
Suraj Jitindar Singh June 28, 2017, 12:58 a.m. UTC | #5
On Fri, 2017-06-23 at 18:05 +0200, Thomas Huth wrote:
> On 23.06.2017 11:21, David Gibson wrote:
> > On Thu, Jun 22, 2017 at 01:31:24PM +0200, Thomas Huth wrote:
> > > On 22.06.2017 13:26, Laurent Vivier wrote:
> > > > CPU_POWERPC_POWER9_DD1 is 0x004E0100, so this is the POWER9
> > > > v1.0.
> > > > 
> > > > When we run qemu on a POWER9 DD1 host, we must use either
> > > > "-cpu host" or "-cpu POWER9", but in the latter case it fails
> > > > with
> > > > 
> > > >     Unable to find sPAPR CPU Core definition
> > > > 
> > > > because POWER9 DD1 doesn't appear in the list of known CPUs.
> > > > 
> > > > This patch fixes this by defining POWER9_v1.0 with POWER9 DD1
> > > > PVR instead of CPU_POWERPC_POWER9_BASE.
> > > > 
> > > > Signed-off-by: Laurent Vivier <lvivier@redhat.com>
> > > > ---
> > > >  target/ppc/cpu-models.c | 2 +-
> > > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > > 
> > > > diff --git a/target/ppc/cpu-models.c b/target/ppc/cpu-models.c
> > > > index 4d3e635..a22363c 100644
> > > > --- a/target/ppc/cpu-models.c
> > > > +++ b/target/ppc/cpu-models.c
> > > > @@ -1144,7 +1144,7 @@
> > > >      POWERPC_DEF("970_v2.2",      CPU_POWERPC_970_v22,         
> > > >        970,
> > > >                  "PowerPC 970 v2.2")
> > > >  
> > > > -    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_BASE,     
> > > >        POWER9,
> > > > +    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_DD1,      
> > > >        POWER9,
> > > >                  "POWER9 v1.0")
> > > >  
> > > >      POWERPC_DEF("970fx_v1.0",    CPU_POWERPC_970FX_v10,       
> > > >        970,
> > > > 
> > > 
> > > I think this also makes sense for running in TCG mode to get a
> > > valid
> > > real PVR there.
> > 
> > I'm not so convinced.
> > 
> > IIUC, this will make TCG default (for now) to a DD1 POWER9.  That's
> > a)
> > probably not what anyone wants - who'd select a buggy prototype and
> > b)
> > not accurate - TCG does not implement DD1's bugs.
> 
> But DD1 = v1.0. There is no real chip which is using
> CPU_POWERPC_POWER9_BASE as PVR ... so using that is also not
> accurate,
> and also likely not what users expect when the select "POWER9_v1.0",
> and
> it just does not work as soon as KVM is enabled. So I think Laurent's
> patch is the right way to go. Or do you have a better suggestion?
> 

I guess we have do decide what we want to be the primary behaviour when
someone puts -cpu POWER9 on the command line. Does that mean that they
want an ISAv3.0 compliant cpu or do they want a POWER9 cpu...

FWIW: Currently POWER8 is aliased to POWER8_v2.0 which afaik is the
last POWER8 revision. Should POWER9 just alias to the most recent
POWER9 cpu (currently DD1)? Then how would you specify an ISAv3.0
compliant processor?

TCG only implements a ISAv3 compliant POWER9 cpu so it doesn't make
sense, and should even refuse to boot with POWER9_DD1 since I think it
will fail to boot if we let it.

My personal preference would be to have POWER9 alias to the base and
the user have to explicitly select if they want a DD* version. But that
might frustrate/confuse people. Maybe we should have some table in
KVM_HV of allowable processor combinations so that if the user is on
ISA compliant hardware then they can specify any such cpu on the
command line and KVM_HV still start successfully.

>  Thomas
>
Jose Ricardo Ziviani June 28, 2017, 1:42 a.m. UTC | #6
On Fri, Jun 23, 2017 at 04:10:55PM +0200, Laurent Vivier wrote:
> On 23/06/2017 11:21, David Gibson wrote:
> > On Thu, Jun 22, 2017 at 01:31:24PM +0200, Thomas Huth wrote:
> >> On 22.06.2017 13:26, Laurent Vivier wrote:
> >>> CPU_POWERPC_POWER9_DD1 is 0x004E0100, so this is the POWER9 v1.0.
> >>>
> >>> When we run qemu on a POWER9 DD1 host, we must use either
> >>> "-cpu host" or "-cpu POWER9", but in the latter case it fails with
> >>>
> >>>     Unable to find sPAPR CPU Core definition
> >>>
> >>> because POWER9 DD1 doesn't appear in the list of known CPUs.
> >>>
> >>> This patch fixes this by defining POWER9_v1.0 with POWER9 DD1
> >>> PVR instead of CPU_POWERPC_POWER9_BASE.
> >>>
> >>> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
> >>> ---
> >>>  target/ppc/cpu-models.c | 2 +-
> >>>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>>
> >>> diff --git a/target/ppc/cpu-models.c b/target/ppc/cpu-models.c
> >>> index 4d3e635..a22363c 100644
> >>> --- a/target/ppc/cpu-models.c
> >>> +++ b/target/ppc/cpu-models.c
> >>> @@ -1144,7 +1144,7 @@
> >>>      POWERPC_DEF("970_v2.2",      CPU_POWERPC_970_v22,                970,
> >>>                  "PowerPC 970 v2.2")
> >>>  
> >>> -    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_BASE,            POWER9,
> >>> +    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_DD1,             POWER9,
> >>>                  "POWER9 v1.0")
> >>>  
> >>>      POWERPC_DEF("970fx_v1.0",    CPU_POWERPC_970FX_v10,              970,
> >>>
> >>
> >> I think this also makes sense for running in TCG mode to get a valid
> >> real PVR there.
> > 
> > I'm not so convinced.
> > 
> > IIUC, this will make TCG default (for now) to a DD1 POWER9.  That's a)
> > probably not what anyone wants - who'd select a buggy prototype and b)
> > not accurate - TCG does not implement DD1's bugs.
> 
> According to the POWER8 user manual (I didn't fine the POWER9 one):
> 
> "3.6.3.1 Processor Version Register (PVR)
> 
> The processor revision level (PVR[16:31]) starts at x‘0100’, indicating
> revision ‘1.0’. As revisions are made, bits [29:31] will indicate minor
> revisions. Similarly, bits [20:23] indicate major changes."
> 
> POWER9 DD1 PVR is 0x004E0100, so this is really version 1.0 of the POWER9.
> 
> Perhaps we can define POWER9_v1.0 as CPU_POWERPC_POWER9_DD1, and
> introduce a POWER9_v0.0 set to CPU_POWERPC_POWER9_BASE and define it as
> the default one?

I like the suggestion to set a v0.0 to CPU_POWERPC_POWER9_BASE. But, I
think we could have only that option, removing the
CPU_POWERPC_POWER9_DD1 entry. Then, we add the v2.0 (when ready) as the CPU
emulated by TCG.

To TCG, DD1 wouldn't be listed because it cannot be emulated today.

What do you think?

Ziviani

> 
> Laurent
> 
>
Thomas Huth June 28, 2017, 7:09 a.m. UTC | #7
On 28.06.2017 03:42, joserz@linux.vnet.ibm.com wrote:
> On Fri, Jun 23, 2017 at 04:10:55PM +0200, Laurent Vivier wrote:
>> On 23/06/2017 11:21, David Gibson wrote:
>>> On Thu, Jun 22, 2017 at 01:31:24PM +0200, Thomas Huth wrote:
>>>> On 22.06.2017 13:26, Laurent Vivier wrote:
>>>>> CPU_POWERPC_POWER9_DD1 is 0x004E0100, so this is the POWER9 v1.0.
>>>>>
>>>>> When we run qemu on a POWER9 DD1 host, we must use either
>>>>> "-cpu host" or "-cpu POWER9", but in the latter case it fails with
>>>>>
>>>>>     Unable to find sPAPR CPU Core definition
>>>>>
>>>>> because POWER9 DD1 doesn't appear in the list of known CPUs.
>>>>>
>>>>> This patch fixes this by defining POWER9_v1.0 with POWER9 DD1
>>>>> PVR instead of CPU_POWERPC_POWER9_BASE.
>>>>>
>>>>> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
>>>>> ---
>>>>>  target/ppc/cpu-models.c | 2 +-
>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/target/ppc/cpu-models.c b/target/ppc/cpu-models.c
>>>>> index 4d3e635..a22363c 100644
>>>>> --- a/target/ppc/cpu-models.c
>>>>> +++ b/target/ppc/cpu-models.c
>>>>> @@ -1144,7 +1144,7 @@
>>>>>      POWERPC_DEF("970_v2.2",      CPU_POWERPC_970_v22,                970,
>>>>>                  "PowerPC 970 v2.2")
>>>>>  
>>>>> -    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_BASE,            POWER9,
>>>>> +    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_DD1,             POWER9,
>>>>>                  "POWER9 v1.0")
>>>>>  
>>>>>      POWERPC_DEF("970fx_v1.0",    CPU_POWERPC_970FX_v10,              970,
>>>>>
>>>>
>>>> I think this also makes sense for running in TCG mode to get a valid
>>>> real PVR there.
>>>
>>> I'm not so convinced.
>>>
>>> IIUC, this will make TCG default (for now) to a DD1 POWER9.  That's a)
>>> probably not what anyone wants - who'd select a buggy prototype and b)
>>> not accurate - TCG does not implement DD1's bugs.
>>
>> According to the POWER8 user manual (I didn't fine the POWER9 one):
>>
>> "3.6.3.1 Processor Version Register (PVR)
>>
>> The processor revision level (PVR[16:31]) starts at x‘0100’, indicating
>> revision ‘1.0’. As revisions are made, bits [29:31] will indicate minor
>> revisions. Similarly, bits [20:23] indicate major changes."
>>
>> POWER9 DD1 PVR is 0x004E0100, so this is really version 1.0 of the POWER9.
>>
>> Perhaps we can define POWER9_v1.0 as CPU_POWERPC_POWER9_DD1, and
>> introduce a POWER9_v0.0 set to CPU_POWERPC_POWER9_BASE and define it as
>> the default one?
> 
> I like the suggestion to set a v0.0 to CPU_POWERPC_POWER9_BASE. But, I
> think we could have only that option, removing the
> CPU_POWERPC_POWER9_DD1 entry.
I really dislike the idea of having a CPU called "v0.0" ... we do not
have this for any other CPU generation, and it sounds like it could be
very confusing for the users (you'd need to document somewhere what the
v0.0 exactly means). If we really want to go this way, I think we should
name it "POWER9-generic" or "PowerISA-3.0" or something similar instead.

Or does somebody already know the exact PVR for DD2? If so, we could
simply add a POWER9_v2.0 CPU already and let the POWER9 alias point to
that version instead.

 Thomas
David Gibson June 28, 2017, 8:18 a.m. UTC | #8
On Wed, Jun 28, 2017 at 09:09:24AM +0200, Thomas Huth wrote:
> On 28.06.2017 03:42, joserz@linux.vnet.ibm.com wrote:
> > On Fri, Jun 23, 2017 at 04:10:55PM +0200, Laurent Vivier wrote:
> >> On 23/06/2017 11:21, David Gibson wrote:
> >>> On Thu, Jun 22, 2017 at 01:31:24PM +0200, Thomas Huth wrote:
> >>>> On 22.06.2017 13:26, Laurent Vivier wrote:
> >>>>> CPU_POWERPC_POWER9_DD1 is 0x004E0100, so this is the POWER9 v1.0.
> >>>>>
> >>>>> When we run qemu on a POWER9 DD1 host, we must use either
> >>>>> "-cpu host" or "-cpu POWER9", but in the latter case it fails with
> >>>>>
> >>>>>     Unable to find sPAPR CPU Core definition
> >>>>>
> >>>>> because POWER9 DD1 doesn't appear in the list of known CPUs.
> >>>>>
> >>>>> This patch fixes this by defining POWER9_v1.0 with POWER9 DD1
> >>>>> PVR instead of CPU_POWERPC_POWER9_BASE.
> >>>>>
> >>>>> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
> >>>>> ---
> >>>>>  target/ppc/cpu-models.c | 2 +-
> >>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>>>>
> >>>>> diff --git a/target/ppc/cpu-models.c b/target/ppc/cpu-models.c
> >>>>> index 4d3e635..a22363c 100644
> >>>>> --- a/target/ppc/cpu-models.c
> >>>>> +++ b/target/ppc/cpu-models.c
> >>>>> @@ -1144,7 +1144,7 @@
> >>>>>      POWERPC_DEF("970_v2.2",      CPU_POWERPC_970_v22,                970,
> >>>>>                  "PowerPC 970 v2.2")
> >>>>>  
> >>>>> -    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_BASE,            POWER9,
> >>>>> +    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_DD1,             POWER9,
> >>>>>                  "POWER9 v1.0")
> >>>>>  
> >>>>>      POWERPC_DEF("970fx_v1.0",    CPU_POWERPC_970FX_v10,              970,
> >>>>>
> >>>>
> >>>> I think this also makes sense for running in TCG mode to get a valid
> >>>> real PVR there.
> >>>
> >>> I'm not so convinced.
> >>>
> >>> IIUC, this will make TCG default (for now) to a DD1 POWER9.  That's a)
> >>> probably not what anyone wants - who'd select a buggy prototype and b)
> >>> not accurate - TCG does not implement DD1's bugs.
> >>
> >> According to the POWER8 user manual (I didn't fine the POWER9 one):
> >>
> >> "3.6.3.1 Processor Version Register (PVR)
> >>
> >> The processor revision level (PVR[16:31]) starts at x‘0100’, indicating
> >> revision ‘1.0’. As revisions are made, bits [29:31] will indicate minor
> >> revisions. Similarly, bits [20:23] indicate major changes."
> >>
> >> POWER9 DD1 PVR is 0x004E0100, so this is really version 1.0 of the POWER9.
> >>
> >> Perhaps we can define POWER9_v1.0 as CPU_POWERPC_POWER9_DD1, and
> >> introduce a POWER9_v0.0 set to CPU_POWERPC_POWER9_BASE and define it as
> >> the default one?
> > 
> > I like the suggestion to set a v0.0 to CPU_POWERPC_POWER9_BASE. But, I
> > think we could have only that option, removing the
> > CPU_POWERPC_POWER9_DD1 entry.
> I really dislike the idea of having a CPU called "v0.0" ... we do not
> have this for any other CPU generation, and it sounds like it could be
> very confusing for the users (you'd need to document somewhere what the
> v0.0 exactly means). If we really want to go this way, I think we should
> name it "POWER9-generic" or "PowerISA-3.0" or something similar instead.
> 
> Or does somebody already know the exact PVR for DD2? If so, we could
> simply add a POWER9_v2.0 CPU already and let the POWER9 alias point to
> that version instead.

Yes, I think that's a better idea.  I don't know the DD2 PVR, but I'm
pretty sure we should be able to find out from someone at IBM.

I've CCed Sam & Suraj - can you ask Mikey or someone what the PVR
value for DD2.0 will be?
Cédric Le Goater June 28, 2017, 9:11 a.m. UTC | #9
On 06/28/2017 10:18 AM, David Gibson wrote:
> On Wed, Jun 28, 2017 at 09:09:24AM +0200, Thomas Huth wrote:
>> On 28.06.2017 03:42, joserz@linux.vnet.ibm.com wrote:
>>> On Fri, Jun 23, 2017 at 04:10:55PM +0200, Laurent Vivier wrote:
>>>> On 23/06/2017 11:21, David Gibson wrote:
>>>>> On Thu, Jun 22, 2017 at 01:31:24PM +0200, Thomas Huth wrote:
>>>>>> On 22.06.2017 13:26, Laurent Vivier wrote:
>>>>>>> CPU_POWERPC_POWER9_DD1 is 0x004E0100, so this is the POWER9 v1.0.
>>>>>>>
>>>>>>> When we run qemu on a POWER9 DD1 host, we must use either
>>>>>>> "-cpu host" or "-cpu POWER9", but in the latter case it fails with
>>>>>>>
>>>>>>>     Unable to find sPAPR CPU Core definition
>>>>>>>
>>>>>>> because POWER9 DD1 doesn't appear in the list of known CPUs.
>>>>>>>
>>>>>>> This patch fixes this by defining POWER9_v1.0 with POWER9 DD1
>>>>>>> PVR instead of CPU_POWERPC_POWER9_BASE.
>>>>>>>
>>>>>>> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
>>>>>>> ---
>>>>>>>  target/ppc/cpu-models.c | 2 +-
>>>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>>
>>>>>>> diff --git a/target/ppc/cpu-models.c b/target/ppc/cpu-models.c
>>>>>>> index 4d3e635..a22363c 100644
>>>>>>> --- a/target/ppc/cpu-models.c
>>>>>>> +++ b/target/ppc/cpu-models.c
>>>>>>> @@ -1144,7 +1144,7 @@
>>>>>>>      POWERPC_DEF("970_v2.2",      CPU_POWERPC_970_v22,                970,
>>>>>>>                  "PowerPC 970 v2.2")
>>>>>>>  
>>>>>>> -    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_BASE,            POWER9,
>>>>>>> +    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_DD1,             POWER9,
>>>>>>>                  "POWER9 v1.0")
>>>>>>>  
>>>>>>>      POWERPC_DEF("970fx_v1.0",    CPU_POWERPC_970FX_v10,              970,
>>>>>>>
>>>>>>
>>>>>> I think this also makes sense for running in TCG mode to get a valid
>>>>>> real PVR there.
>>>>>
>>>>> I'm not so convinced.
>>>>>
>>>>> IIUC, this will make TCG default (for now) to a DD1 POWER9.  That's a)
>>>>> probably not what anyone wants - who'd select a buggy prototype and b)
>>>>> not accurate - TCG does not implement DD1's bugs.
>>>>
>>>> According to the POWER8 user manual (I didn't fine the POWER9 one):
>>>>
>>>> "3.6.3.1 Processor Version Register (PVR)
>>>>
>>>> The processor revision level (PVR[16:31]) starts at x‘0100’, indicating
>>>> revision ‘1.0’. As revisions are made, bits [29:31] will indicate minor
>>>> revisions. Similarly, bits [20:23] indicate major changes."
>>>>
>>>> POWER9 DD1 PVR is 0x004E0100, so this is really version 1.0 of the POWER9.
>>>>
>>>> Perhaps we can define POWER9_v1.0 as CPU_POWERPC_POWER9_DD1, and
>>>> introduce a POWER9_v0.0 set to CPU_POWERPC_POWER9_BASE and define it as
>>>> the default one?
>>>
>>> I like the suggestion to set a v0.0 to CPU_POWERPC_POWER9_BASE. But, I
>>> think we could have only that option, removing the
>>> CPU_POWERPC_POWER9_DD1 entry.
>> I really dislike the idea of having a CPU called "v0.0" ... we do not
>> have this for any other CPU generation, and it sounds like it could be
>> very confusing for the users (you'd need to document somewhere what the
>> v0.0 exactly means). If we really want to go this way, I think we should
>> name it "POWER9-generic" or "PowerISA-3.0" or something similar instead.
>>
>> Or does somebody already know the exact PVR for DD2? If so, we could
>> simply add a POWER9_v2.0 CPU already and let the POWER9 alias point to
>> that version instead.
> 
> Yes, I think that's a better idea.  I don't know the DD2 PVR, but I'm
> pretty sure we should be able to find out from someone at IBM.
> 
> I've CCed Sam & Suraj - can you ask Mikey or someone what the PVR
> value for DD2.0 will be?

I would expect something like :

 0x200D104980000000UL; /* P9 Nimbus DD2.0 */

C.
Laurent Vivier June 28, 2017, 9:18 a.m. UTC | #10
On 28/06/2017 11:11, Cédric Le Goater wrote:
> On 06/28/2017 10:18 AM, David Gibson wrote:
>> On Wed, Jun 28, 2017 at 09:09:24AM +0200, Thomas Huth wrote:
>>> On 28.06.2017 03:42, joserz@linux.vnet.ibm.com wrote:
>>>> On Fri, Jun 23, 2017 at 04:10:55PM +0200, Laurent Vivier wrote:
>>>>> On 23/06/2017 11:21, David Gibson wrote:
>>>>>> On Thu, Jun 22, 2017 at 01:31:24PM +0200, Thomas Huth wrote:
>>>>>>> On 22.06.2017 13:26, Laurent Vivier wrote:
>>>>>>>> CPU_POWERPC_POWER9_DD1 is 0x004E0100, so this is the POWER9 v1.0.
>>>>>>>>
>>>>>>>> When we run qemu on a POWER9 DD1 host, we must use either
>>>>>>>> "-cpu host" or "-cpu POWER9", but in the latter case it fails with
>>>>>>>>
>>>>>>>>     Unable to find sPAPR CPU Core definition
>>>>>>>>
>>>>>>>> because POWER9 DD1 doesn't appear in the list of known CPUs.
>>>>>>>>
>>>>>>>> This patch fixes this by defining POWER9_v1.0 with POWER9 DD1
>>>>>>>> PVR instead of CPU_POWERPC_POWER9_BASE.
>>>>>>>>
>>>>>>>> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
>>>>>>>> ---
>>>>>>>>  target/ppc/cpu-models.c | 2 +-
>>>>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>>>
>>>>>>>> diff --git a/target/ppc/cpu-models.c b/target/ppc/cpu-models.c
>>>>>>>> index 4d3e635..a22363c 100644
>>>>>>>> --- a/target/ppc/cpu-models.c
>>>>>>>> +++ b/target/ppc/cpu-models.c
>>>>>>>> @@ -1144,7 +1144,7 @@
>>>>>>>>      POWERPC_DEF("970_v2.2",      CPU_POWERPC_970_v22,                970,
>>>>>>>>                  "PowerPC 970 v2.2")
>>>>>>>>  
>>>>>>>> -    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_BASE,            POWER9,
>>>>>>>> +    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_DD1,             POWER9,
>>>>>>>>                  "POWER9 v1.0")
>>>>>>>>  
>>>>>>>>      POWERPC_DEF("970fx_v1.0",    CPU_POWERPC_970FX_v10,              970,
>>>>>>>>
>>>>>>>
>>>>>>> I think this also makes sense for running in TCG mode to get a valid
>>>>>>> real PVR there.
>>>>>>
>>>>>> I'm not so convinced.
>>>>>>
>>>>>> IIUC, this will make TCG default (for now) to a DD1 POWER9.  That's a)
>>>>>> probably not what anyone wants - who'd select a buggy prototype and b)
>>>>>> not accurate - TCG does not implement DD1's bugs.
>>>>>
>>>>> According to the POWER8 user manual (I didn't fine the POWER9 one):
>>>>>
>>>>> "3.6.3.1 Processor Version Register (PVR)
>>>>>
>>>>> The processor revision level (PVR[16:31]) starts at x‘0100’, indicating
>>>>> revision ‘1.0’. As revisions are made, bits [29:31] will indicate minor
>>>>> revisions. Similarly, bits [20:23] indicate major changes."
>>>>>
>>>>> POWER9 DD1 PVR is 0x004E0100, so this is really version 1.0 of the POWER9.
>>>>>
>>>>> Perhaps we can define POWER9_v1.0 as CPU_POWERPC_POWER9_DD1, and
>>>>> introduce a POWER9_v0.0 set to CPU_POWERPC_POWER9_BASE and define it as
>>>>> the default one?
>>>>
>>>> I like the suggestion to set a v0.0 to CPU_POWERPC_POWER9_BASE. But, I
>>>> think we could have only that option, removing the
>>>> CPU_POWERPC_POWER9_DD1 entry.
>>> I really dislike the idea of having a CPU called "v0.0" ... we do not
>>> have this for any other CPU generation, and it sounds like it could be
>>> very confusing for the users (you'd need to document somewhere what the
>>> v0.0 exactly means). If we really want to go this way, I think we should
>>> name it "POWER9-generic" or "PowerISA-3.0" or something similar instead.
>>>
>>> Or does somebody already know the exact PVR for DD2? If so, we could
>>> simply add a POWER9_v2.0 CPU already and let the POWER9 alias point to
>>> that version instead.
>>
>> Yes, I think that's a better idea.  I don't know the DD2 PVR, but I'm
>> pretty sure we should be able to find out from someone at IBM.
>>
>> I've CCed Sam & Suraj - can you ask Mikey or someone what the PVR
>> value for DD2.0 will be?
> 
> I would expect something like :
> 
>  0x200D104980000000UL; /* P9 Nimbus DD2.0 */


I would expect something like 0x004Exxxx.

Laurent
Cédric Le Goater June 28, 2017, 10:23 a.m. UTC | #11
On 06/28/2017 11:18 AM, Laurent Vivier wrote:
> On 28/06/2017 11:11, Cédric Le Goater wrote:
>> On 06/28/2017 10:18 AM, David Gibson wrote:
>>> On Wed, Jun 28, 2017 at 09:09:24AM +0200, Thomas Huth wrote:
>>>> On 28.06.2017 03:42, joserz@linux.vnet.ibm.com wrote:
>>>>> On Fri, Jun 23, 2017 at 04:10:55PM +0200, Laurent Vivier wrote:
>>>>>> On 23/06/2017 11:21, David Gibson wrote:
>>>>>>> On Thu, Jun 22, 2017 at 01:31:24PM +0200, Thomas Huth wrote:
>>>>>>>> On 22.06.2017 13:26, Laurent Vivier wrote:
>>>>>>>>> CPU_POWERPC_POWER9_DD1 is 0x004E0100, so this is the POWER9 v1.0.
>>>>>>>>>
>>>>>>>>> When we run qemu on a POWER9 DD1 host, we must use either
>>>>>>>>> "-cpu host" or "-cpu POWER9", but in the latter case it fails with
>>>>>>>>>
>>>>>>>>>     Unable to find sPAPR CPU Core definition
>>>>>>>>>
>>>>>>>>> because POWER9 DD1 doesn't appear in the list of known CPUs.
>>>>>>>>>
>>>>>>>>> This patch fixes this by defining POWER9_v1.0 with POWER9 DD1
>>>>>>>>> PVR instead of CPU_POWERPC_POWER9_BASE.
>>>>>>>>>
>>>>>>>>> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
>>>>>>>>> ---
>>>>>>>>>  target/ppc/cpu-models.c | 2 +-
>>>>>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>>>>
>>>>>>>>> diff --git a/target/ppc/cpu-models.c b/target/ppc/cpu-models.c
>>>>>>>>> index 4d3e635..a22363c 100644
>>>>>>>>> --- a/target/ppc/cpu-models.c
>>>>>>>>> +++ b/target/ppc/cpu-models.c
>>>>>>>>> @@ -1144,7 +1144,7 @@
>>>>>>>>>      POWERPC_DEF("970_v2.2",      CPU_POWERPC_970_v22,                970,
>>>>>>>>>                  "PowerPC 970 v2.2")
>>>>>>>>>  
>>>>>>>>> -    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_BASE,            POWER9,
>>>>>>>>> +    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_DD1,             POWER9,
>>>>>>>>>                  "POWER9 v1.0")
>>>>>>>>>  
>>>>>>>>>      POWERPC_DEF("970fx_v1.0",    CPU_POWERPC_970FX_v10,              970,
>>>>>>>>>
>>>>>>>>
>>>>>>>> I think this also makes sense for running in TCG mode to get a valid
>>>>>>>> real PVR there.
>>>>>>>
>>>>>>> I'm not so convinced.
>>>>>>>
>>>>>>> IIUC, this will make TCG default (for now) to a DD1 POWER9.  That's a)
>>>>>>> probably not what anyone wants - who'd select a buggy prototype and b)
>>>>>>> not accurate - TCG does not implement DD1's bugs.
>>>>>>
>>>>>> According to the POWER8 user manual (I didn't fine the POWER9 one):
>>>>>>
>>>>>> "3.6.3.1 Processor Version Register (PVR)
>>>>>>
>>>>>> The processor revision level (PVR[16:31]) starts at x‘0100’, indicating
>>>>>> revision ‘1.0’. As revisions are made, bits [29:31] will indicate minor
>>>>>> revisions. Similarly, bits [20:23] indicate major changes."
>>>>>>
>>>>>> POWER9 DD1 PVR is 0x004E0100, so this is really version 1.0 of the POWER9.
>>>>>>
>>>>>> Perhaps we can define POWER9_v1.0 as CPU_POWERPC_POWER9_DD1, and
>>>>>> introduce a POWER9_v0.0 set to CPU_POWERPC_POWER9_BASE and define it as
>>>>>> the default one?
>>>>>
>>>>> I like the suggestion to set a v0.0 to CPU_POWERPC_POWER9_BASE. But, I
>>>>> think we could have only that option, removing the
>>>>> CPU_POWERPC_POWER9_DD1 entry.
>>>> I really dislike the idea of having a CPU called "v0.0" ... we do not
>>>> have this for any other CPU generation, and it sounds like it could be
>>>> very confusing for the users (you'd need to document somewhere what the
>>>> v0.0 exactly means). If we really want to go this way, I think we should
>>>> name it "POWER9-generic" or "PowerISA-3.0" or something similar instead.
>>>>
>>>> Or does somebody already know the exact PVR for DD2? If so, we could
>>>> simply add a POWER9_v2.0 CPU already and let the POWER9 alias point to
>>>> that version instead.
>>>
>>> Yes, I think that's a better idea.  I don't know the DD2 PVR, but I'm
>>> pretty sure we should be able to find out from someone at IBM.
>>>
>>> I've CCed Sam & Suraj - can you ask Mikey or someone what the PVR
>>> value for DD2.0 will be?
>>
>> I would expect something like :
>>
>>  0x200D104980000000UL; /* P9 Nimbus DD2.0 */
> 
> 
> I would expect something like 0x004Exxxx.

ah yes, I am mistaking the PVR and the CFAM ID. 

C.
Laurent Vivier June 28, 2017, 10:59 a.m. UTC | #12
On 28/06/2017 03:42, joserz@linux.vnet.ibm.com wrote:
> On Fri, Jun 23, 2017 at 04:10:55PM +0200, Laurent Vivier wrote:
>> On 23/06/2017 11:21, David Gibson wrote:
>>> On Thu, Jun 22, 2017 at 01:31:24PM +0200, Thomas Huth wrote:
>>>> On 22.06.2017 13:26, Laurent Vivier wrote:
>>>>> CPU_POWERPC_POWER9_DD1 is 0x004E0100, so this is the POWER9 v1.0.
>>>>>
>>>>> When we run qemu on a POWER9 DD1 host, we must use either
>>>>> "-cpu host" or "-cpu POWER9", but in the latter case it fails with
>>>>>
>>>>>     Unable to find sPAPR CPU Core definition
>>>>>
>>>>> because POWER9 DD1 doesn't appear in the list of known CPUs.
>>>>>
>>>>> This patch fixes this by defining POWER9_v1.0 with POWER9 DD1
>>>>> PVR instead of CPU_POWERPC_POWER9_BASE.
>>>>>
>>>>> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
>>>>> ---
>>>>>  target/ppc/cpu-models.c | 2 +-
>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/target/ppc/cpu-models.c b/target/ppc/cpu-models.c
>>>>> index 4d3e635..a22363c 100644
>>>>> --- a/target/ppc/cpu-models.c
>>>>> +++ b/target/ppc/cpu-models.c
>>>>> @@ -1144,7 +1144,7 @@
>>>>>      POWERPC_DEF("970_v2.2",      CPU_POWERPC_970_v22,                970,
>>>>>                  "PowerPC 970 v2.2")
>>>>>  
>>>>> -    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_BASE,            POWER9,
>>>>> +    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_DD1,             POWER9,
>>>>>                  "POWER9 v1.0")
>>>>>  
>>>>>      POWERPC_DEF("970fx_v1.0",    CPU_POWERPC_970FX_v10,              970,
>>>>>
>>>>
>>>> I think this also makes sense for running in TCG mode to get a valid
>>>> real PVR there.
>>>
>>> I'm not so convinced.
>>>
>>> IIUC, this will make TCG default (for now) to a DD1 POWER9.  That's a)
>>> probably not what anyone wants - who'd select a buggy prototype and b)
>>> not accurate - TCG does not implement DD1's bugs.
>>
>> According to the POWER8 user manual (I didn't fine the POWER9 one):
>>
>> "3.6.3.1 Processor Version Register (PVR)
>>
>> The processor revision level (PVR[16:31]) starts at x‘0100’, indicating
>> revision ‘1.0’. As revisions are made, bits [29:31] will indicate minor
>> revisions. Similarly, bits [20:23] indicate major changes."
>>
>> POWER9 DD1 PVR is 0x004E0100, so this is really version 1.0 of the POWER9.
>>
>> Perhaps we can define POWER9_v1.0 as CPU_POWERPC_POWER9_DD1, and
>> introduce a POWER9_v0.0 set to CPU_POWERPC_POWER9_BASE and define it as
>> the default one?
> 
> I like the suggestion to set a v0.0 to CPU_POWERPC_POWER9_BASE. But, I
> think we could have only that option, removing the
> CPU_POWERPC_POWER9_DD1 entry. Then, we add the v2.0 (when ready) as the CPU
> emulated by TCG.
> 
> To TCG, DD1 wouldn't be listed because it cannot be emulated today.
> 
> What do you think?

We need the POWER9 DD1 in the list to be able to start QEMU on DD1 host
with "-cpu POWER9" (it works with "-cpu host"). The real question is to
what we should set the default CPU when it is not provided on the CLI.

I agree that using POWER9 DD1 to boot a kernel with TCG will confuse the
kernel.

we could set POWER9 DD1 PVR to define the "POWER9_v1.0", and add a
"POWER9_tcg" (?) set to CPU_POWERPC_POWER9_BASE to use with tcg until we
have the PVR of a public release of POWER9?

Thanks,
Laurent
Greg Kurz June 28, 2017, 11:59 a.m. UTC | #13
On Wed, 28 Jun 2017 12:23:06 +0200
Cédric Le Goater <clg@kaod.org> wrote:

> On 06/28/2017 11:18 AM, Laurent Vivier wrote:
> > On 28/06/2017 11:11, Cédric Le Goater wrote:  
> >> On 06/28/2017 10:18 AM, David Gibson wrote:  
> >>> On Wed, Jun 28, 2017 at 09:09:24AM +0200, Thomas Huth wrote:  
> >>>> On 28.06.2017 03:42, joserz@linux.vnet.ibm.com wrote:  
> >>>>> On Fri, Jun 23, 2017 at 04:10:55PM +0200, Laurent Vivier wrote:  
> >>>>>> On 23/06/2017 11:21, David Gibson wrote:  
> >>>>>>> On Thu, Jun 22, 2017 at 01:31:24PM +0200, Thomas Huth wrote:  
> >>>>>>>> On 22.06.2017 13:26, Laurent Vivier wrote:  
> >>>>>>>>> CPU_POWERPC_POWER9_DD1 is 0x004E0100, so this is the POWER9 v1.0.
> >>>>>>>>>
> >>>>>>>>> When we run qemu on a POWER9 DD1 host, we must use either
> >>>>>>>>> "-cpu host" or "-cpu POWER9", but in the latter case it fails with
> >>>>>>>>>
> >>>>>>>>>     Unable to find sPAPR CPU Core definition
> >>>>>>>>>
> >>>>>>>>> because POWER9 DD1 doesn't appear in the list of known CPUs.
> >>>>>>>>>
> >>>>>>>>> This patch fixes this by defining POWER9_v1.0 with POWER9 DD1
> >>>>>>>>> PVR instead of CPU_POWERPC_POWER9_BASE.
> >>>>>>>>>
> >>>>>>>>> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
> >>>>>>>>> ---
> >>>>>>>>>  target/ppc/cpu-models.c | 2 +-
> >>>>>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>>>>>>>>
> >>>>>>>>> diff --git a/target/ppc/cpu-models.c b/target/ppc/cpu-models.c
> >>>>>>>>> index 4d3e635..a22363c 100644
> >>>>>>>>> --- a/target/ppc/cpu-models.c
> >>>>>>>>> +++ b/target/ppc/cpu-models.c
> >>>>>>>>> @@ -1144,7 +1144,7 @@
> >>>>>>>>>      POWERPC_DEF("970_v2.2",      CPU_POWERPC_970_v22,                970,
> >>>>>>>>>                  "PowerPC 970 v2.2")
> >>>>>>>>>  
> >>>>>>>>> -    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_BASE,            POWER9,
> >>>>>>>>> +    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_DD1,             POWER9,
> >>>>>>>>>                  "POWER9 v1.0")
> >>>>>>>>>  
> >>>>>>>>>      POWERPC_DEF("970fx_v1.0",    CPU_POWERPC_970FX_v10,              970,
> >>>>>>>>>  
> >>>>>>>>
> >>>>>>>> I think this also makes sense for running in TCG mode to get a valid
> >>>>>>>> real PVR there.  
> >>>>>>>
> >>>>>>> I'm not so convinced.
> >>>>>>>
> >>>>>>> IIUC, this will make TCG default (for now) to a DD1 POWER9.  That's a)
> >>>>>>> probably not what anyone wants - who'd select a buggy prototype and b)
> >>>>>>> not accurate - TCG does not implement DD1's bugs.  
> >>>>>>
> >>>>>> According to the POWER8 user manual (I didn't fine the POWER9 one):
> >>>>>>
> >>>>>> "3.6.3.1 Processor Version Register (PVR)
> >>>>>>
> >>>>>> The processor revision level (PVR[16:31]) starts at x‘0100’, indicating
> >>>>>> revision ‘1.0’. As revisions are made, bits [29:31] will indicate minor
> >>>>>> revisions. Similarly, bits [20:23] indicate major changes."
> >>>>>>
> >>>>>> POWER9 DD1 PVR is 0x004E0100, so this is really version 1.0 of the POWER9.
> >>>>>>
> >>>>>> Perhaps we can define POWER9_v1.0 as CPU_POWERPC_POWER9_DD1, and
> >>>>>> introduce a POWER9_v0.0 set to CPU_POWERPC_POWER9_BASE and define it as
> >>>>>> the default one?  
> >>>>>
> >>>>> I like the suggestion to set a v0.0 to CPU_POWERPC_POWER9_BASE. But, I
> >>>>> think we could have only that option, removing the
> >>>>> CPU_POWERPC_POWER9_DD1 entry.  
> >>>> I really dislike the idea of having a CPU called "v0.0" ... we do not
> >>>> have this for any other CPU generation, and it sounds like it could be
> >>>> very confusing for the users (you'd need to document somewhere what the
> >>>> v0.0 exactly means). If we really want to go this way, I think we should
> >>>> name it "POWER9-generic" or "PowerISA-3.0" or something similar instead.
> >>>>
> >>>> Or does somebody already know the exact PVR for DD2? If so, we could
> >>>> simply add a POWER9_v2.0 CPU already and let the POWER9 alias point to
> >>>> that version instead.  
> >>>
> >>> Yes, I think that's a better idea.  I don't know the DD2 PVR, but I'm
> >>> pretty sure we should be able to find out from someone at IBM.
> >>>
> >>> I've CCed Sam & Suraj - can you ask Mikey or someone what the PVR
> >>> value for DD2.0 will be?  
> >>
> >> I would expect something like :
> >>
> >>  0x200D104980000000UL; /* P9 Nimbus DD2.0 */  
> > 
> > 
> > I would expect something like 0x004Exxxx.  
> 
> ah yes, I am mistaking the PVR and the CFAM ID. 
> 
> C. 
>  

According to https://patchwork.ozlabs.org/patch/776052/

POWER9 DD2's PVR is expected to be 0x004e1200

Cheers,

--
Greg
Laurent Vivier June 28, 2017, 4:18 p.m. UTC | #14
On 28/06/2017 13:59, Greg Kurz wrote:
> On Wed, 28 Jun 2017 12:23:06 +0200
> Cédric Le Goater <clg@kaod.org> wrote:
> 
>> On 06/28/2017 11:18 AM, Laurent Vivier wrote:
>>> On 28/06/2017 11:11, Cédric Le Goater wrote:  
>>>> On 06/28/2017 10:18 AM, David Gibson wrote:  
>>>>> On Wed, Jun 28, 2017 at 09:09:24AM +0200, Thomas Huth wrote:  
>>>>>> On 28.06.2017 03:42, joserz@linux.vnet.ibm.com wrote:  
>>>>>>> On Fri, Jun 23, 2017 at 04:10:55PM +0200, Laurent Vivier wrote:  
>>>>>>>> On 23/06/2017 11:21, David Gibson wrote:  
>>>>>>>>> On Thu, Jun 22, 2017 at 01:31:24PM +0200, Thomas Huth wrote:  
>>>>>>>>>> On 22.06.2017 13:26, Laurent Vivier wrote:  
>>>>>>>>>>> CPU_POWERPC_POWER9_DD1 is 0x004E0100, so this is the POWER9 v1.0.
>>>>>>>>>>>
>>>>>>>>>>> When we run qemu on a POWER9 DD1 host, we must use either
>>>>>>>>>>> "-cpu host" or "-cpu POWER9", but in the latter case it fails with
>>>>>>>>>>>
>>>>>>>>>>>     Unable to find sPAPR CPU Core definition
>>>>>>>>>>>
>>>>>>>>>>> because POWER9 DD1 doesn't appear in the list of known CPUs.
>>>>>>>>>>>
>>>>>>>>>>> This patch fixes this by defining POWER9_v1.0 with POWER9 DD1
>>>>>>>>>>> PVR instead of CPU_POWERPC_POWER9_BASE.
>>>>>>>>>>>
>>>>>>>>>>> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
>>>>>>>>>>> ---
>>>>>>>>>>>  target/ppc/cpu-models.c | 2 +-
>>>>>>>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>>>>>>
>>>>>>>>>>> diff --git a/target/ppc/cpu-models.c b/target/ppc/cpu-models.c
>>>>>>>>>>> index 4d3e635..a22363c 100644
>>>>>>>>>>> --- a/target/ppc/cpu-models.c
>>>>>>>>>>> +++ b/target/ppc/cpu-models.c
>>>>>>>>>>> @@ -1144,7 +1144,7 @@
>>>>>>>>>>>      POWERPC_DEF("970_v2.2",      CPU_POWERPC_970_v22,                970,
>>>>>>>>>>>                  "PowerPC 970 v2.2")
>>>>>>>>>>>  
>>>>>>>>>>> -    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_BASE,            POWER9,
>>>>>>>>>>> +    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_DD1,             POWER9,
>>>>>>>>>>>                  "POWER9 v1.0")
>>>>>>>>>>>  
>>>>>>>>>>>      POWERPC_DEF("970fx_v1.0",    CPU_POWERPC_970FX_v10,              970,
>>>>>>>>>>>  
>>>>>>>>>>
>>>>>>>>>> I think this also makes sense for running in TCG mode to get a valid
>>>>>>>>>> real PVR there.  
>>>>>>>>>
>>>>>>>>> I'm not so convinced.
>>>>>>>>>
>>>>>>>>> IIUC, this will make TCG default (for now) to a DD1 POWER9.  That's a)
>>>>>>>>> probably not what anyone wants - who'd select a buggy prototype and b)
>>>>>>>>> not accurate - TCG does not implement DD1's bugs.  
>>>>>>>>
>>>>>>>> According to the POWER8 user manual (I didn't fine the POWER9 one):
>>>>>>>>
>>>>>>>> "3.6.3.1 Processor Version Register (PVR)
>>>>>>>>
>>>>>>>> The processor revision level (PVR[16:31]) starts at x‘0100’, indicating
>>>>>>>> revision ‘1.0’. As revisions are made, bits [29:31] will indicate minor
>>>>>>>> revisions. Similarly, bits [20:23] indicate major changes."
>>>>>>>>
>>>>>>>> POWER9 DD1 PVR is 0x004E0100, so this is really version 1.0 of the POWER9.
>>>>>>>>
>>>>>>>> Perhaps we can define POWER9_v1.0 as CPU_POWERPC_POWER9_DD1, and
>>>>>>>> introduce a POWER9_v0.0 set to CPU_POWERPC_POWER9_BASE and define it as
>>>>>>>> the default one?  
>>>>>>>
>>>>>>> I like the suggestion to set a v0.0 to CPU_POWERPC_POWER9_BASE. But, I
>>>>>>> think we could have only that option, removing the
>>>>>>> CPU_POWERPC_POWER9_DD1 entry.  
>>>>>> I really dislike the idea of having a CPU called "v0.0" ... we do not
>>>>>> have this for any other CPU generation, and it sounds like it could be
>>>>>> very confusing for the users (you'd need to document somewhere what the
>>>>>> v0.0 exactly means). If we really want to go this way, I think we should
>>>>>> name it "POWER9-generic" or "PowerISA-3.0" or something similar instead.
>>>>>>
>>>>>> Or does somebody already know the exact PVR for DD2? If so, we could
>>>>>> simply add a POWER9_v2.0 CPU already and let the POWER9 alias point to
>>>>>> that version instead.  
>>>>>
>>>>> Yes, I think that's a better idea.  I don't know the DD2 PVR, but I'm
>>>>> pretty sure we should be able to find out from someone at IBM.
>>>>>
>>>>> I've CCed Sam & Suraj - can you ask Mikey or someone what the PVR
>>>>> value for DD2.0 will be?  
>>>>
>>>> I would expect something like :
>>>>
>>>>  0x200D104980000000UL; /* P9 Nimbus DD2.0 */  
>>>
>>>
>>> I would expect something like 0x004Exxxx.  
>>
>> ah yes, I am mistaking the PVR and the CFAM ID. 
>>
>> C. 
>>  
> 
> According to https://patchwork.ozlabs.org/patch/776052/
> 
> POWER9 DD2's PVR is expected to be 0x004e1200
>

So, perhaps I can send a v2 of the patch with POWER9_v1.0 set to DD1
PVR, and POWER9_v2.0 set to DD2 PVR?

Thanks,
Laurent
Greg Kurz June 28, 2017, 4:41 p.m. UTC | #15
On Wed, 28 Jun 2017 18:18:06 +0200
Laurent Vivier <lvivier@redhat.com> wrote:

> On 28/06/2017 13:59, Greg Kurz wrote:
> > On Wed, 28 Jun 2017 12:23:06 +0200
> > Cédric Le Goater <clg@kaod.org> wrote:
> >   
> >> On 06/28/2017 11:18 AM, Laurent Vivier wrote:  
> >>> On 28/06/2017 11:11, Cédric Le Goater wrote:    
> >>>> On 06/28/2017 10:18 AM, David Gibson wrote:    
> >>>>> On Wed, Jun 28, 2017 at 09:09:24AM +0200, Thomas Huth wrote:    
> >>>>>> On 28.06.2017 03:42, joserz@linux.vnet.ibm.com wrote:    
> >>>>>>> On Fri, Jun 23, 2017 at 04:10:55PM +0200, Laurent Vivier wrote:    
> >>>>>>>> On 23/06/2017 11:21, David Gibson wrote:    
> >>>>>>>>> On Thu, Jun 22, 2017 at 01:31:24PM +0200, Thomas Huth wrote:    
> >>>>>>>>>> On 22.06.2017 13:26, Laurent Vivier wrote:    
> >>>>>>>>>>> CPU_POWERPC_POWER9_DD1 is 0x004E0100, so this is the POWER9 v1.0.
> >>>>>>>>>>>
> >>>>>>>>>>> When we run qemu on a POWER9 DD1 host, we must use either
> >>>>>>>>>>> "-cpu host" or "-cpu POWER9", but in the latter case it fails with
> >>>>>>>>>>>
> >>>>>>>>>>>     Unable to find sPAPR CPU Core definition
> >>>>>>>>>>>
> >>>>>>>>>>> because POWER9 DD1 doesn't appear in the list of known CPUs.
> >>>>>>>>>>>
> >>>>>>>>>>> This patch fixes this by defining POWER9_v1.0 with POWER9 DD1
> >>>>>>>>>>> PVR instead of CPU_POWERPC_POWER9_BASE.
> >>>>>>>>>>>
> >>>>>>>>>>> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
> >>>>>>>>>>> ---
> >>>>>>>>>>>  target/ppc/cpu-models.c | 2 +-
> >>>>>>>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>>>>>>>>>>
> >>>>>>>>>>> diff --git a/target/ppc/cpu-models.c b/target/ppc/cpu-models.c
> >>>>>>>>>>> index 4d3e635..a22363c 100644
> >>>>>>>>>>> --- a/target/ppc/cpu-models.c
> >>>>>>>>>>> +++ b/target/ppc/cpu-models.c
> >>>>>>>>>>> @@ -1144,7 +1144,7 @@
> >>>>>>>>>>>      POWERPC_DEF("970_v2.2",      CPU_POWERPC_970_v22,                970,
> >>>>>>>>>>>                  "PowerPC 970 v2.2")
> >>>>>>>>>>>  
> >>>>>>>>>>> -    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_BASE,            POWER9,
> >>>>>>>>>>> +    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_DD1,             POWER9,
> >>>>>>>>>>>                  "POWER9 v1.0")
> >>>>>>>>>>>  
> >>>>>>>>>>>      POWERPC_DEF("970fx_v1.0",    CPU_POWERPC_970FX_v10,              970,
> >>>>>>>>>>>    
> >>>>>>>>>>
> >>>>>>>>>> I think this also makes sense for running in TCG mode to get a valid
> >>>>>>>>>> real PVR there.    
> >>>>>>>>>
> >>>>>>>>> I'm not so convinced.
> >>>>>>>>>
> >>>>>>>>> IIUC, this will make TCG default (for now) to a DD1 POWER9.  That's a)
> >>>>>>>>> probably not what anyone wants - who'd select a buggy prototype and b)
> >>>>>>>>> not accurate - TCG does not implement DD1's bugs.    
> >>>>>>>>
> >>>>>>>> According to the POWER8 user manual (I didn't fine the POWER9 one):
> >>>>>>>>
> >>>>>>>> "3.6.3.1 Processor Version Register (PVR)
> >>>>>>>>
> >>>>>>>> The processor revision level (PVR[16:31]) starts at x‘0100’, indicating
> >>>>>>>> revision ‘1.0’. As revisions are made, bits [29:31] will indicate minor
> >>>>>>>> revisions. Similarly, bits [20:23] indicate major changes."
> >>>>>>>>
> >>>>>>>> POWER9 DD1 PVR is 0x004E0100, so this is really version 1.0 of the POWER9.
> >>>>>>>>
> >>>>>>>> Perhaps we can define POWER9_v1.0 as CPU_POWERPC_POWER9_DD1, and
> >>>>>>>> introduce a POWER9_v0.0 set to CPU_POWERPC_POWER9_BASE and define it as
> >>>>>>>> the default one?    
> >>>>>>>
> >>>>>>> I like the suggestion to set a v0.0 to CPU_POWERPC_POWER9_BASE. But, I
> >>>>>>> think we could have only that option, removing the
> >>>>>>> CPU_POWERPC_POWER9_DD1 entry.    
> >>>>>> I really dislike the idea of having a CPU called "v0.0" ... we do not
> >>>>>> have this for any other CPU generation, and it sounds like it could be
> >>>>>> very confusing for the users (you'd need to document somewhere what the
> >>>>>> v0.0 exactly means). If we really want to go this way, I think we should
> >>>>>> name it "POWER9-generic" or "PowerISA-3.0" or something similar instead.
> >>>>>>
> >>>>>> Or does somebody already know the exact PVR for DD2? If so, we could
> >>>>>> simply add a POWER9_v2.0 CPU already and let the POWER9 alias point to
> >>>>>> that version instead.    
> >>>>>
> >>>>> Yes, I think that's a better idea.  I don't know the DD2 PVR, but I'm
> >>>>> pretty sure we should be able to find out from someone at IBM.
> >>>>>
> >>>>> I've CCed Sam & Suraj - can you ask Mikey or someone what the PVR
> >>>>> value for DD2.0 will be?    
> >>>>
> >>>> I would expect something like :
> >>>>
> >>>>  0x200D104980000000UL; /* P9 Nimbus DD2.0 */    
> >>>
> >>>
> >>> I would expect something like 0x004Exxxx.    
> >>
> >> ah yes, I am mistaking the PVR and the CFAM ID. 
> >>
> >> C. 
> >>    
> > 
> > According to https://patchwork.ozlabs.org/patch/776052/
> > 
> > POWER9 DD2's PVR is expected to be 0x004e1200
> >  
> 
> So, perhaps I can send a v2 of the patch with POWER9_v1.0 set to DD1
> PVR, and POWER9_v2.0 set to DD2 PVR?
> 

FWIW Thomas suggested to do just that and David agreed it was "a better idea".

> Thanks,
> Laurent
> 
>
Suraj Jitindar Singh June 29, 2017, 5:37 a.m. UTC | #16
On Wed, 2017-06-28 at 18:41 +0200, Greg Kurz wrote:
> On Wed, 28 Jun 2017 18:18:06 +0200
> Laurent Vivier <lvivier@redhat.com> wrote:
> 
> > On 28/06/2017 13:59, Greg Kurz wrote:
> > > On Wed, 28 Jun 2017 12:23:06 +0200
> > > Cédric Le Goater <clg@kaod.org> wrote:
> > >   
> > > > On 06/28/2017 11:18 AM, Laurent Vivier wrote:  
> > > > > On 28/06/2017 11:11, Cédric Le Goater wrote:    
> > > > > > On 06/28/2017 10:18 AM, David Gibson wrote:    
> > > > > > > On Wed, Jun 28, 2017 at 09:09:24AM +0200, Thomas Huth
> > > > > > > wrote:    
> > > > > > > > On 28.06.2017 03:42, joserz@linux.vnet.ibm.com
> > > > > > > > wrote:    
> > > > > > > > > On Fri, Jun 23, 2017 at 04:10:55PM +0200, Laurent
> > > > > > > > > Vivier wrote:    
> > > > > > > > > > On 23/06/2017 11:21, David Gibson wrote:    
> > > > > > > > > > > On Thu, Jun 22, 2017 at 01:31:24PM +0200, Thomas
> > > > > > > > > > > Huth wrote:    
> > > > > > > > > > > > On 22.06.2017 13:26, Laurent Vivier wrote:    
> > > > > > > > > > > > > CPU_POWERPC_POWER9_DD1 is 0x004E0100, so this
> > > > > > > > > > > > > is the POWER9 v1.0.
> > > > > > > > > > > > > 
> > > > > > > > > > > > > When we run qemu on a POWER9 DD1 host, we
> > > > > > > > > > > > > must use either
> > > > > > > > > > > > > "-cpu host" or "-cpu POWER9", but in the
> > > > > > > > > > > > > latter case it fails with
> > > > > > > > > > > > > 
> > > > > > > > > > > > >     Unable to find sPAPR CPU Core definition
> > > > > > > > > > > > > 
> > > > > > > > > > > > > because POWER9 DD1 doesn't appear in the list
> > > > > > > > > > > > > of known CPUs.
> > > > > > > > > > > > > 
> > > > > > > > > > > > > This patch fixes this by defining POWER9_v1.0
> > > > > > > > > > > > > with POWER9 DD1
> > > > > > > > > > > > > PVR instead of CPU_POWERPC_POWER9_BASE.
> > > > > > > > > > > > > 
> > > > > > > > > > > > > Signed-off-by: Laurent Vivier <lvivier@redhat
> > > > > > > > > > > > > .com>
> > > > > > > > > > > > > ---
> > > > > > > > > > > > >  target/ppc/cpu-models.c | 2 +-
> > > > > > > > > > > > >  1 file changed, 1 insertion(+), 1 deletion(-
> > > > > > > > > > > > > )
> > > > > > > > > > > > > 
> > > > > > > > > > > > > diff --git a/target/ppc/cpu-models.c
> > > > > > > > > > > > > b/target/ppc/cpu-models.c
> > > > > > > > > > > > > index 4d3e635..a22363c 100644
> > > > > > > > > > > > > --- a/target/ppc/cpu-models.c
> > > > > > > > > > > > > +++ b/target/ppc/cpu-models.c
> > > > > > > > > > > > > @@ -1144,7 +1144,7 @@
> > > > > > > > > > > > >      POWERPC_DEF("970_v2.2",      CPU_POWERPC
> > > > > > > > > > > > > _970_v22,                970,
> > > > > > > > > > > > >                  "PowerPC 970 v2.2")
> > > > > > > > > > > > >  
> > > > > > > > > > > > > -    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC
> > > > > > > > > > > > > _POWER9_BASE,            POWER9,
> > > > > > > > > > > > > +    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC
> > > > > > > > > > > > > _POWER9_DD1,             POWER9,
> > > > > > > > > > > > >                  "POWER9 v1.0")
> > > > > > > > > > > > >  
> > > > > > > > > > > > >      POWERPC_DEF("970fx_v1.0",    CPU_POWERPC
> > > > > > > > > > > > > _970FX_v10,              970,
> > > > > > > > > > > > >    
> > > > > > > > > > > > 
> > > > > > > > > > > > I think this also makes sense for running in
> > > > > > > > > > > > TCG mode to get a valid
> > > > > > > > > > > > real PVR there.    
> > > > > > > > > > > 
> > > > > > > > > > > I'm not so convinced.
> > > > > > > > > > > 
> > > > > > > > > > > IIUC, this will make TCG default (for now) to a
> > > > > > > > > > > DD1 POWER9.  That's a)
> > > > > > > > > > > probably not what anyone wants - who'd select a
> > > > > > > > > > > buggy prototype and b)
> > > > > > > > > > > not accurate - TCG does not implement DD1's
> > > > > > > > > > > bugs.    
> > > > > > > > > > 
> > > > > > > > > > According to the POWER8 user manual (I didn't fine
> > > > > > > > > > the POWER9 one):
> > > > > > > > > > 
> > > > > > > > > > "3.6.3.1 Processor Version Register (PVR)
> > > > > > > > > > 
> > > > > > > > > > The processor revision level (PVR[16:31]) starts at
> > > > > > > > > > x‘0100’, indicating
> > > > > > > > > > revision ‘1.0’. As revisions are made, bits [29:31]
> > > > > > > > > > will indicate minor
> > > > > > > > > > revisions. Similarly, bits [20:23] indicate major
> > > > > > > > > > changes."
> > > > > > > > > > 
> > > > > > > > > > POWER9 DD1 PVR is 0x004E0100, so this is really
> > > > > > > > > > version 1.0 of the POWER9.
> > > > > > > > > > 
> > > > > > > > > > Perhaps we can define POWER9_v1.0 as
> > > > > > > > > > CPU_POWERPC_POWER9_DD1, and
> > > > > > > > > > introduce a POWER9_v0.0 set to
> > > > > > > > > > CPU_POWERPC_POWER9_BASE and define it as
> > > > > > > > > > the default one?    
> > > > > > > > > 
> > > > > > > > > I like the suggestion to set a v0.0 to
> > > > > > > > > CPU_POWERPC_POWER9_BASE. But, I
> > > > > > > > > think we could have only that option, removing the
> > > > > > > > > CPU_POWERPC_POWER9_DD1 entry.    
> > > > > > > > 
> > > > > > > > I really dislike the idea of having a CPU called "v0.0"
> > > > > > > > ... we do not
> > > > > > > > have this for any other CPU generation, and it sounds
> > > > > > > > like it could be
> > > > > > > > very confusing for the users (you'd need to document
> > > > > > > > somewhere what the
> > > > > > > > v0.0 exactly means). If we really want to go this way,
> > > > > > > > I think we should
> > > > > > > > name it "POWER9-generic" or "PowerISA-3.0" or something
> > > > > > > > similar instead.
> > > > > > > > 
> > > > > > > > Or does somebody already know the exact PVR for DD2? If
> > > > > > > > so, we could
> > > > > > > > simply add a POWER9_v2.0 CPU already and let the POWER9
> > > > > > > > alias point to
> > > > > > > > that version instead.    
> > > > > > > 
> > > > > > > Yes, I think that's a better idea.  I don't know the DD2
> > > > > > > PVR, but I'm
> > > > > > > pretty sure we should be able to find out from someone at
> > > > > > > IBM.
> > > > > > > 
> > > > > > > I've CCed Sam & Suraj - can you ask Mikey or someone what
> > > > > > > the PVR
> > > > > > > value for DD2.0 will be?    
> > > > > > 
> > > > > > I would expect something like :
> > > > > > 
> > > > > >  0x200D104980000000UL; /* P9 Nimbus DD2.0 */    
> > > > > 
> > > > > 
> > > > > I would expect something like 0x004Exxxx.    
> > > > 
> > > > ah yes, I am mistaking the PVR and the CFAM ID. 
> > > > 
> > > > C. 
> > > >    
> > > 
> > > According to https://patchwork.ozlabs.org/patch/776052/
> > > 
> > > POWER9 DD2's PVR is expected to be 0x004e1200
> > >  
> > 
> > So, perhaps I can send a v2 of the patch with POWER9_v1.0 set to
> > DD1
> > PVR, and POWER9_v2.0 set to DD2 PVR?
> > 
> 
> FWIW Thomas suggested to do just that and David agreed it was "a
> better idea".

I assume we would have just -cpu POWER9 alias to DD2?

We probably need to have a nice abort if someone tries to run TCG with
DD1, I'm not sure where it will break but I'm fairly sure it won't
boot.

That makes the assumption that DD2 doesn't require any work arounds
which TCG can't handle.

I think the absence of -cpu on the CLI should give -cpu host for KVM-
HV. FWIW currently TCG defaults to POWER8, so I guess we have to decide
if/when we want to bump that to POWER9.

> 
> > Thanks,
> > Laurent
> > 
> > 
> 
>
Suraj Jitindar Singh June 29, 2017, 5:42 a.m. UTC | #17
On Thu, 2017-06-29 at 15:37 +1000, Suraj Jitindar Singh wrote:
> On Wed, 2017-06-28 at 18:41 +0200, Greg Kurz wrote:
> > On Wed, 28 Jun 2017 18:18:06 +0200
> > Laurent Vivier <lvivier@redhat.com> wrote:
> > 
> > > On 28/06/2017 13:59, Greg Kurz wrote:
> > > > On Wed, 28 Jun 2017 12:23:06 +0200
> > > > Cédric Le Goater <clg@kaod.org> wrote:
> > > >   
> > > > > On 06/28/2017 11:18 AM, Laurent Vivier wrote:  
> > > > > > On 28/06/2017 11:11, Cédric Le Goater wrote:    
> > > > > > > On 06/28/2017 10:18 AM, David Gibson wrote:    
> > > > > > > > On Wed, Jun 28, 2017 at 09:09:24AM +0200, Thomas Huth
> > > > > > > > wrote:    
> > > > > > > > > On 28.06.2017 03:42, joserz@linux.vnet.ibm.com
> > > > > > > > > wrote:    
> > > > > > > > > > On Fri, Jun 23, 2017 at 04:10:55PM +0200, Laurent
> > > > > > > > > > Vivier wrote:    
> > > > > > > > > > > On 23/06/2017 11:21, David Gibson wrote:    
> > > > > > > > > > > > On Thu, Jun 22, 2017 at 01:31:24PM +0200,
> > > > > > > > > > > > Thomas
> > > > > > > > > > > > Huth wrote:    
> > > > > > > > > > > > > On 22.06.2017 13:26, Laurent Vivier
> > > > > > > > > > > > > wrote:    
> > > > > > > > > > > > > > CPU_POWERPC_POWER9_DD1 is 0x004E0100, so
> > > > > > > > > > > > > > this
> > > > > > > > > > > > > > is the POWER9 v1.0.
> > > > > > > > > > > > > > 
> > > > > > > > > > > > > > When we run qemu on a POWER9 DD1 host, we
> > > > > > > > > > > > > > must use either
> > > > > > > > > > > > > > "-cpu host" or "-cpu POWER9", but in the
> > > > > > > > > > > > > > latter case it fails with
> > > > > > > > > > > > > > 
> > > > > > > > > > > > > >     Unable to find sPAPR CPU Core
> > > > > > > > > > > > > > definition
> > > > > > > > > > > > > > 
> > > > > > > > > > > > > > because POWER9 DD1 doesn't appear in the
> > > > > > > > > > > > > > list
> > > > > > > > > > > > > > of known CPUs.
> > > > > > > > > > > > > > 
> > > > > > > > > > > > > > This patch fixes this by defining
> > > > > > > > > > > > > > POWER9_v1.0
> > > > > > > > > > > > > > with POWER9 DD1
> > > > > > > > > > > > > > PVR instead of CPU_POWERPC_POWER9_BASE.
> > > > > > > > > > > > > > 
> > > > > > > > > > > > > > Signed-off-by: Laurent Vivier <lvivier@redh
> > > > > > > > > > > > > > at
> > > > > > > > > > > > > > .com>
> > > > > > > > > > > > > > ---
> > > > > > > > > > > > > >  target/ppc/cpu-models.c | 2 +-
> > > > > > > > > > > > > >  1 file changed, 1 insertion(+), 1
> > > > > > > > > > > > > > deletion(-
> > > > > > > > > > > > > > )
> > > > > > > > > > > > > > 
> > > > > > > > > > > > > > diff --git a/target/ppc/cpu-models.c
> > > > > > > > > > > > > > b/target/ppc/cpu-models.c
> > > > > > > > > > > > > > index 4d3e635..a22363c 100644
> > > > > > > > > > > > > > --- a/target/ppc/cpu-models.c
> > > > > > > > > > > > > > +++ b/target/ppc/cpu-models.c
> > > > > > > > > > > > > > @@ -1144,7 +1144,7 @@
> > > > > > > > > > > > > >      POWERPC_DEF("970_v2.2",      CPU_POWER
> > > > > > > > > > > > > > PC
> > > > > > > > > > > > > > _970_v22,                970,
> > > > > > > > > > > > > >                  "PowerPC 970 v2.2")
> > > > > > > > > > > > > >  
> > > > > > > > > > > > > > -    POWERPC_DEF("POWER9_v1.0",   CPU_POWER
> > > > > > > > > > > > > > PC
> > > > > > > > > > > > > > _POWER9_BASE,            POWER9,
> > > > > > > > > > > > > > +    POWERPC_DEF("POWER9_v1.0",   CPU_POWER
> > > > > > > > > > > > > > PC
> > > > > > > > > > > > > > _POWER9_DD1,             POWER9,
> > > > > > > > > > > > > >                  "POWER9 v1.0")
> > > > > > > > > > > > > >  
> > > > > > > > > > > > > >      POWERPC_DEF("970fx_v1.0",    CPU_POWER
> > > > > > > > > > > > > > PC
> > > > > > > > > > > > > > _970FX_v10,              970,
> > > > > > > > > > > > > >    
> > > > > > > > > > > > > 
> > > > > > > > > > > > > I think this also makes sense for running in
> > > > > > > > > > > > > TCG mode to get a valid
> > > > > > > > > > > > > real PVR there.    
> > > > > > > > > > > > 
> > > > > > > > > > > > I'm not so convinced.
> > > > > > > > > > > > 
> > > > > > > > > > > > IIUC, this will make TCG default (for now) to a
> > > > > > > > > > > > DD1 POWER9.  That's a)
> > > > > > > > > > > > probably not what anyone wants - who'd select a
> > > > > > > > > > > > buggy prototype and b)
> > > > > > > > > > > > not accurate - TCG does not implement DD1's
> > > > > > > > > > > > bugs.    
> > > > > > > > > > > 
> > > > > > > > > > > According to the POWER8 user manual (I didn't
> > > > > > > > > > > fine
> > > > > > > > > > > the POWER9 one):
> > > > > > > > > > > 
> > > > > > > > > > > "3.6.3.1 Processor Version Register (PVR)
> > > > > > > > > > > 
> > > > > > > > > > > The processor revision level (PVR[16:31]) starts
> > > > > > > > > > > at
> > > > > > > > > > > x‘0100’, indicating
> > > > > > > > > > > revision ‘1.0’. As revisions are made, bits
> > > > > > > > > > > [29:31]
> > > > > > > > > > > will indicate minor
> > > > > > > > > > > revisions. Similarly, bits [20:23] indicate major
> > > > > > > > > > > changes."
> > > > > > > > > > > 
> > > > > > > > > > > POWER9 DD1 PVR is 0x004E0100, so this is really
> > > > > > > > > > > version 1.0 of the POWER9.
> > > > > > > > > > > 
> > > > > > > > > > > Perhaps we can define POWER9_v1.0 as
> > > > > > > > > > > CPU_POWERPC_POWER9_DD1, and
> > > > > > > > > > > introduce a POWER9_v0.0 set to
> > > > > > > > > > > CPU_POWERPC_POWER9_BASE and define it as
> > > > > > > > > > > the default one?    
> > > > > > > > > > 
> > > > > > > > > > I like the suggestion to set a v0.0 to
> > > > > > > > > > CPU_POWERPC_POWER9_BASE. But, I
> > > > > > > > > > think we could have only that option, removing the
> > > > > > > > > > CPU_POWERPC_POWER9_DD1 entry.    
> > > > > > > > > 
> > > > > > > > > I really dislike the idea of having a CPU called
> > > > > > > > > "v0.0"
> > > > > > > > > ... we do not
> > > > > > > > > have this for any other CPU generation, and it sounds
> > > > > > > > > like it could be
> > > > > > > > > very confusing for the users (you'd need to document
> > > > > > > > > somewhere what the
> > > > > > > > > v0.0 exactly means). If we really want to go this
> > > > > > > > > way,
> > > > > > > > > I think we should
> > > > > > > > > name it "POWER9-generic" or "PowerISA-3.0" or
> > > > > > > > > something
> > > > > > > > > similar instead.
> > > > > > > > > 
> > > > > > > > > Or does somebody already know the exact PVR for DD2?
> > > > > > > > > If
> > > > > > > > > so, we could
> > > > > > > > > simply add a POWER9_v2.0 CPU already and let the
> > > > > > > > > POWER9
> > > > > > > > > alias point to
> > > > > > > > > that version instead.    
> > > > > > > > 
> > > > > > > > Yes, I think that's a better idea.  I don't know the
> > > > > > > > DD2
> > > > > > > > PVR, but I'm
> > > > > > > > pretty sure we should be able to find out from someone
> > > > > > > > at
> > > > > > > > IBM.
> > > > > > > > 
> > > > > > > > I've CCed Sam & Suraj - can you ask Mikey or someone
> > > > > > > > what
> > > > > > > > the PVR
> > > > > > > > value for DD2.0 will be?    
> > > > > > > 
> > > > > > > I would expect something like :
> > > > > > > 
> > > > > > >  0x200D104980000000UL; /* P9 Nimbus DD2.0 */    
> > > > > > 
> > > > > > 
> > > > > > I would expect something like 0x004Exxxx.    
> > > > > 
> > > > > ah yes, I am mistaking the PVR and the CFAM ID. 
> > > > > 
> > > > > C. 
> > > > >    
> > > > 
> > > > According to https://patchwork.ozlabs.org/patch/776052/
> > > > 
> > > > POWER9 DD2's PVR is expected to be 0x004e1200
> > > >  
> > > 
> > > So, perhaps I can send a v2 of the patch with POWER9_v1.0 set to
> > > DD1
> > > PVR, and POWER9_v2.0 set to DD2 PVR?
> > > 
> > 
> > FWIW Thomas suggested to do just that and David agreed it was "a
> > better idea".
> 
> I assume we would have just -cpu POWER9 alias to DD2?
> 
> We probably need to have a nice abort if someone tries to run TCG
> with
> DD1, I'm not sure where it will break but I'm fairly sure it won't
> boot.
> 
> That makes the assumption that DD2 doesn't require any work arounds
> which TCG can't handle.

Actually TCG is really a non-issue since we'll just go into the POWER9
architected mode.

Can't we just have -cpu POWER9 alias to DD1 for now and add DD2 when we
know the pvr?

> 
> I think the absence of -cpu on the CLI should give -cpu host for KVM-
> HV. FWIW currently TCG defaults to POWER8, so I guess we have to
> decide
> if/when we want to bump that to POWER9.
> 
> > 
> > > Thanks,
> > > Laurent
> > > 
> > > 
> > 
> >
Thomas Huth June 29, 2017, 6:44 a.m. UTC | #18
On 29.06.2017 07:37, Suraj Jitindar Singh wrote:
> On Wed, 2017-06-28 at 18:41 +0200, Greg Kurz wrote:
>> On Wed, 28 Jun 2017 18:18:06 +0200
>> Laurent Vivier <lvivier@redhat.com> wrote:
>>
>>> On 28/06/2017 13:59, Greg Kurz wrote:
>>>> On Wed, 28 Jun 2017 12:23:06 +0200
>>>> Cédric Le Goater <clg@kaod.org> wrote:
>>>>   
>>>>> On 06/28/2017 11:18 AM, Laurent Vivier wrote:  
>>>>>> On 28/06/2017 11:11, Cédric Le Goater wrote:    
>>>>>>> On 06/28/2017 10:18 AM, David Gibson wrote:    
>>>>>>>> On Wed, Jun 28, 2017 at 09:09:24AM +0200, Thomas Huth
>>>>>>>> wrote:    
>>>>>>>>> On 28.06.2017 03:42, joserz@linux.vnet.ibm.com
>>>>>>>>> wrote:    
>>>>>>>>>> On Fri, Jun 23, 2017 at 04:10:55PM +0200, Laurent
>>>>>>>>>> Vivier wrote:    
>>>>>>>>>>> On 23/06/2017 11:21, David Gibson wrote:    
>>>>>>>>>>>> On Thu, Jun 22, 2017 at 01:31:24PM +0200, Thomas
>>>>>>>>>>>> Huth wrote:    
>>>>>>>>>>>>> On 22.06.2017 13:26, Laurent Vivier wrote:    
>>>>>>>>>>>>>> CPU_POWERPC_POWER9_DD1 is 0x004E0100, so this
>>>>>>>>>>>>>> is the POWER9 v1.0.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> When we run qemu on a POWER9 DD1 host, we
>>>>>>>>>>>>>> must use either
>>>>>>>>>>>>>> "-cpu host" or "-cpu POWER9", but in the
>>>>>>>>>>>>>> latter case it fails with
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     Unable to find sPAPR CPU Core definition
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> because POWER9 DD1 doesn't appear in the list
>>>>>>>>>>>>>> of known CPUs.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> This patch fixes this by defining POWER9_v1.0
>>>>>>>>>>>>>> with POWER9 DD1
>>>>>>>>>>>>>> PVR instead of CPU_POWERPC_POWER9_BASE.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Signed-off-by: Laurent Vivier <lvivier@redhat
>>>>>>>>>>>>>> .com>
>>>>>>>>>>>>>> ---
>>>>>>>>>>>>>>  target/ppc/cpu-models.c | 2 +-
>>>>>>>>>>>>>>  1 file changed, 1 insertion(+), 1 deletion(-
>>>>>>>>>>>>>> )
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> diff --git a/target/ppc/cpu-models.c
>>>>>>>>>>>>>> b/target/ppc/cpu-models.c
>>>>>>>>>>>>>> index 4d3e635..a22363c 100644
>>>>>>>>>>>>>> --- a/target/ppc/cpu-models.c
>>>>>>>>>>>>>> +++ b/target/ppc/cpu-models.c
>>>>>>>>>>>>>> @@ -1144,7 +1144,7 @@
>>>>>>>>>>>>>>      POWERPC_DEF("970_v2.2",      CPU_POWERPC
>>>>>>>>>>>>>> _970_v22,                970,
>>>>>>>>>>>>>>                  "PowerPC 970 v2.2")
>>>>>>>>>>>>>>  
>>>>>>>>>>>>>> -    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC
>>>>>>>>>>>>>> _POWER9_BASE,            POWER9,
>>>>>>>>>>>>>> +    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC
>>>>>>>>>>>>>> _POWER9_DD1,             POWER9,
>>>>>>>>>>>>>>                  "POWER9 v1.0")
>>>>>>>>>>>>>>  
>>>>>>>>>>>>>>      POWERPC_DEF("970fx_v1.0",    CPU_POWERPC
>>>>>>>>>>>>>> _970FX_v10,              970,
>>>>>>>>>>>>>>    
>>>>>>>>>>>>>
>>>>>>>>>>>>> I think this also makes sense for running in
>>>>>>>>>>>>> TCG mode to get a valid
>>>>>>>>>>>>> real PVR there.    
>>>>>>>>>>>>
>>>>>>>>>>>> I'm not so convinced.
>>>>>>>>>>>>
>>>>>>>>>>>> IIUC, this will make TCG default (for now) to a
>>>>>>>>>>>> DD1 POWER9.  That's a)
>>>>>>>>>>>> probably not what anyone wants - who'd select a
>>>>>>>>>>>> buggy prototype and b)
>>>>>>>>>>>> not accurate - TCG does not implement DD1's
>>>>>>>>>>>> bugs.    
>>>>>>>>>>>
>>>>>>>>>>> According to the POWER8 user manual (I didn't fine
>>>>>>>>>>> the POWER9 one):
>>>>>>>>>>>
>>>>>>>>>>> "3.6.3.1 Processor Version Register (PVR)
>>>>>>>>>>>
>>>>>>>>>>> The processor revision level (PVR[16:31]) starts at
>>>>>>>>>>> x‘0100’, indicating
>>>>>>>>>>> revision ‘1.0’. As revisions are made, bits [29:31]
>>>>>>>>>>> will indicate minor
>>>>>>>>>>> revisions. Similarly, bits [20:23] indicate major
>>>>>>>>>>> changes."
>>>>>>>>>>>
>>>>>>>>>>> POWER9 DD1 PVR is 0x004E0100, so this is really
>>>>>>>>>>> version 1.0 of the POWER9.
>>>>>>>>>>>
>>>>>>>>>>> Perhaps we can define POWER9_v1.0 as
>>>>>>>>>>> CPU_POWERPC_POWER9_DD1, and
>>>>>>>>>>> introduce a POWER9_v0.0 set to
>>>>>>>>>>> CPU_POWERPC_POWER9_BASE and define it as
>>>>>>>>>>> the default one?    
>>>>>>>>>>
>>>>>>>>>> I like the suggestion to set a v0.0 to
>>>>>>>>>> CPU_POWERPC_POWER9_BASE. But, I
>>>>>>>>>> think we could have only that option, removing the
>>>>>>>>>> CPU_POWERPC_POWER9_DD1 entry.    
>>>>>>>>>
>>>>>>>>> I really dislike the idea of having a CPU called "v0.0"
>>>>>>>>> ... we do not
>>>>>>>>> have this for any other CPU generation, and it sounds
>>>>>>>>> like it could be
>>>>>>>>> very confusing for the users (you'd need to document
>>>>>>>>> somewhere what the
>>>>>>>>> v0.0 exactly means). If we really want to go this way,
>>>>>>>>> I think we should
>>>>>>>>> name it "POWER9-generic" or "PowerISA-3.0" or something
>>>>>>>>> similar instead.
>>>>>>>>>
>>>>>>>>> Or does somebody already know the exact PVR for DD2? If
>>>>>>>>> so, we could
>>>>>>>>> simply add a POWER9_v2.0 CPU already and let the POWER9
>>>>>>>>> alias point to
>>>>>>>>> that version instead.    
>>>>>>>>
>>>>>>>> Yes, I think that's a better idea.  I don't know the DD2
>>>>>>>> PVR, but I'm
>>>>>>>> pretty sure we should be able to find out from someone at
>>>>>>>> IBM.
>>>>>>>>
>>>>>>>> I've CCed Sam & Suraj - can you ask Mikey or someone what
>>>>>>>> the PVR
>>>>>>>> value for DD2.0 will be?    
>>>>>>>
>>>>>>> I would expect something like :
>>>>>>>
>>>>>>>  0x200D104980000000UL; /* P9 Nimbus DD2.0 */    
>>>>>>
>>>>>>
>>>>>> I would expect something like 0x004Exxxx.    
>>>>>
>>>>> ah yes, I am mistaking the PVR and the CFAM ID. 
>>>>>
>>>>> C. 
>>>>>    
>>>>
>>>> According to https://patchwork.ozlabs.org/patch/776052/
>>>>
>>>> POWER9 DD2's PVR is expected to be 0x004e1200
>>>>  
>>>
>>> So, perhaps I can send a v2 of the patch with POWER9_v1.0 set to
>>> DD1
>>> PVR, and POWER9_v2.0 set to DD2 PVR?
>>>
>>
>> FWIW Thomas suggested to do just that and David agreed it was "a
>> better idea".
> 
> I assume we would have just -cpu POWER9 alias to DD2?

Yes.

> We probably need to have a nice abort if someone tries to run TCG with
> DD1, I'm not sure where it will break but I'm fairly sure it won't
> boot.

I assume that we will remove DD1 again once DD2 is widely available
(just like we did on POWER8), so I would not bother adding special
logic here.

> I think the absence of -cpu on the CLI should give -cpu host for KVM-
> HV.

Yes, we've got this in spapr.c:

    /* init CPUs */
    if (machine->cpu_model == NULL) {
        machine->cpu_model = kvm_enabled() ? "host" : smc->tcg_default_cpu;
    }

> FWIW currently TCG defaults to POWER8, so I guess we have to decide
> if/when we want to bump that to POWER9.

The main reason for bumping to POWER8 was the fact that some (little
endian) Linux distros started to compile with -mcpu=power8 and thus suddenly
did not work by default anymore with QEMU. As long as we do notsee something
similar with POWER9 (which I do not expect), I think there is no
urgent need right now to increase the default CPU to POWER9.

 Thomas
Eric Blake June 29, 2017, 3:05 p.m. UTC | #19
[meta-comment]

On 06/29/2017 01:44 AM, Thomas Huth wrote:
...
>>>>>>>>>>>>>> On 22.06.2017 13:26, Laurent Vivier wrote:    
>>>>>>>>>>>>>>> CPU_POWERPC_POWER9_DD1 is 0x004E0100, so this

As a reminder, 14 levels of > quoting is a bit much. It's not only
acceptable, but encouraged, to trim replies to high-volume lists, such
that you only keep context relative to your reply, rather than the full
thread.

>>> FWIW Thomas suggested to do just that and David agreed it was "a
>>> better idea".
>>
>> I assume we would have just -cpu POWER9 alias to DD2?
> 
> Yes.

That way, existing thread readers can quickly see what you're adding to
the thread without scrolling past screens of quotations they've already
seen, and new readers can refer to the archives for the rest of the thread.
David Gibson June 30, 2017, 7:12 a.m. UTC | #20
On Thu, Jun 29, 2017 at 03:42:03PM +1000, Suraj Jitindar Singh wrote:
> On Thu, 2017-06-29 at 15:37 +1000, Suraj Jitindar Singh wrote:
> > On Wed, 2017-06-28 at 18:41 +0200, Greg Kurz wrote:
> > > On Wed, 28 Jun 2017 18:18:06 +0200
> > > Laurent Vivier <lvivier@redhat.com> wrote:
> > > 
> > > > On 28/06/2017 13:59, Greg Kurz wrote:
> > > > > On Wed, 28 Jun 2017 12:23:06 +0200
> > > > > Cédric Le Goater <clg@kaod.org> wrote:
> > > > >   
> > > > > > On 06/28/2017 11:18 AM, Laurent Vivier wrote:  
> > > > > > > On 28/06/2017 11:11, Cédric Le Goater wrote:    
> > > > > > > > On 06/28/2017 10:18 AM, David Gibson wrote:    
> > > > > > > > > On Wed, Jun 28, 2017 at 09:09:24AM +0200, Thomas Huth
> > > > > > > > > wrote:    
> > > > > > > > > > On 28.06.2017 03:42, joserz@linux.vnet.ibm.com
> > > > > > > > > > wrote:    
> > > > > > > > > > > On Fri, Jun 23, 2017 at 04:10:55PM +0200, Laurent
> > > > > > > > > > > Vivier wrote:    
> > > > > > > > > > > > On 23/06/2017 11:21, David Gibson wrote:    
> > > > > > > > > > > > > On Thu, Jun 22, 2017 at 01:31:24PM +0200,
> > > > > > > > > > > > > Thomas
> > > > > > > > > > > > > Huth wrote:    
> > > > > > > > > > > > > > On 22.06.2017 13:26, Laurent Vivier
> > > > > > > > > > > > > > wrote:    
> > > > > > > > > > > > > > > CPU_POWERPC_POWER9_DD1 is 0x004E0100, so
> > > > > > > > > > > > > > > this
> > > > > > > > > > > > > > > is the POWER9 v1.0.
> > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > When we run qemu on a POWER9 DD1 host, we
> > > > > > > > > > > > > > > must use either
> > > > > > > > > > > > > > > "-cpu host" or "-cpu POWER9", but in the
> > > > > > > > > > > > > > > latter case it fails with
> > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > >     Unable to find sPAPR CPU Core
> > > > > > > > > > > > > > > definition
> > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > because POWER9 DD1 doesn't appear in the
> > > > > > > > > > > > > > > list
> > > > > > > > > > > > > > > of known CPUs.
> > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > This patch fixes this by defining
> > > > > > > > > > > > > > > POWER9_v1.0
> > > > > > > > > > > > > > > with POWER9 DD1
> > > > > > > > > > > > > > > PVR instead of CPU_POWERPC_POWER9_BASE.
> > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > Signed-off-by: Laurent Vivier <lvivier@redh
> > > > > > > > > > > > > > > at
> > > > > > > > > > > > > > > .com>
> > > > > > > > > > > > > > > ---
> > > > > > > > > > > > > > >  target/ppc/cpu-models.c | 2 +-
> > > > > > > > > > > > > > >  1 file changed, 1 insertion(+), 1
> > > > > > > > > > > > > > > deletion(-
> > > > > > > > > > > > > > > )
> > > > > > > > > > > > > > > 
> > > > > > > > > > > > > > > diff --git a/target/ppc/cpu-models.c
> > > > > > > > > > > > > > > b/target/ppc/cpu-models.c
> > > > > > > > > > > > > > > index 4d3e635..a22363c 100644
> > > > > > > > > > > > > > > --- a/target/ppc/cpu-models.c
> > > > > > > > > > > > > > > +++ b/target/ppc/cpu-models.c
> > > > > > > > > > > > > > > @@ -1144,7 +1144,7 @@
> > > > > > > > > > > > > > >      POWERPC_DEF("970_v2.2",      CPU_POWER
> > > > > > > > > > > > > > > PC
> > > > > > > > > > > > > > > _970_v22,                970,
> > > > > > > > > > > > > > >                  "PowerPC 970 v2.2")
> > > > > > > > > > > > > > >  
> > > > > > > > > > > > > > > -    POWERPC_DEF("POWER9_v1.0",   CPU_POWER
> > > > > > > > > > > > > > > PC
> > > > > > > > > > > > > > > _POWER9_BASE,            POWER9,
> > > > > > > > > > > > > > > +    POWERPC_DEF("POWER9_v1.0",   CPU_POWER
> > > > > > > > > > > > > > > PC
> > > > > > > > > > > > > > > _POWER9_DD1,             POWER9,
> > > > > > > > > > > > > > >                  "POWER9 v1.0")
> > > > > > > > > > > > > > >  
> > > > > > > > > > > > > > >      POWERPC_DEF("970fx_v1.0",    CPU_POWER
> > > > > > > > > > > > > > > PC
> > > > > > > > > > > > > > > _970FX_v10,              970,
> > > > > > > > > > > > > > >    
> > > > > > > > > > > > > > 
> > > > > > > > > > > > > > I think this also makes sense for running in
> > > > > > > > > > > > > > TCG mode to get a valid
> > > > > > > > > > > > > > real PVR there.    
> > > > > > > > > > > > > 
> > > > > > > > > > > > > I'm not so convinced.
> > > > > > > > > > > > > 
> > > > > > > > > > > > > IIUC, this will make TCG default (for now) to a
> > > > > > > > > > > > > DD1 POWER9.  That's a)
> > > > > > > > > > > > > probably not what anyone wants - who'd select a
> > > > > > > > > > > > > buggy prototype and b)
> > > > > > > > > > > > > not accurate - TCG does not implement DD1's
> > > > > > > > > > > > > bugs.    
> > > > > > > > > > > > 
> > > > > > > > > > > > According to the POWER8 user manual (I didn't
> > > > > > > > > > > > fine
> > > > > > > > > > > > the POWER9 one):
> > > > > > > > > > > > 
> > > > > > > > > > > > "3.6.3.1 Processor Version Register (PVR)
> > > > > > > > > > > > 
> > > > > > > > > > > > The processor revision level (PVR[16:31]) starts
> > > > > > > > > > > > at
> > > > > > > > > > > > x‘0100’, indicating
> > > > > > > > > > > > revision ‘1.0’. As revisions are made, bits
> > > > > > > > > > > > [29:31]
> > > > > > > > > > > > will indicate minor
> > > > > > > > > > > > revisions. Similarly, bits [20:23] indicate major
> > > > > > > > > > > > changes."
> > > > > > > > > > > > 
> > > > > > > > > > > > POWER9 DD1 PVR is 0x004E0100, so this is really
> > > > > > > > > > > > version 1.0 of the POWER9.
> > > > > > > > > > > > 
> > > > > > > > > > > > Perhaps we can define POWER9_v1.0 as
> > > > > > > > > > > > CPU_POWERPC_POWER9_DD1, and
> > > > > > > > > > > > introduce a POWER9_v0.0 set to
> > > > > > > > > > > > CPU_POWERPC_POWER9_BASE and define it as
> > > > > > > > > > > > the default one?    
> > > > > > > > > > > 
> > > > > > > > > > > I like the suggestion to set a v0.0 to
> > > > > > > > > > > CPU_POWERPC_POWER9_BASE. But, I
> > > > > > > > > > > think we could have only that option, removing the
> > > > > > > > > > > CPU_POWERPC_POWER9_DD1 entry.    
> > > > > > > > > > 
> > > > > > > > > > I really dislike the idea of having a CPU called
> > > > > > > > > > "v0.0"
> > > > > > > > > > ... we do not
> > > > > > > > > > have this for any other CPU generation, and it sounds
> > > > > > > > > > like it could be
> > > > > > > > > > very confusing for the users (you'd need to document
> > > > > > > > > > somewhere what the
> > > > > > > > > > v0.0 exactly means). If we really want to go this
> > > > > > > > > > way,
> > > > > > > > > > I think we should
> > > > > > > > > > name it "POWER9-generic" or "PowerISA-3.0" or
> > > > > > > > > > something
> > > > > > > > > > similar instead.
> > > > > > > > > > 
> > > > > > > > > > Or does somebody already know the exact PVR for DD2?
> > > > > > > > > > If
> > > > > > > > > > so, we could
> > > > > > > > > > simply add a POWER9_v2.0 CPU already and let the
> > > > > > > > > > POWER9
> > > > > > > > > > alias point to
> > > > > > > > > > that version instead.    
> > > > > > > > > 
> > > > > > > > > Yes, I think that's a better idea.  I don't know the
> > > > > > > > > DD2
> > > > > > > > > PVR, but I'm
> > > > > > > > > pretty sure we should be able to find out from someone
> > > > > > > > > at
> > > > > > > > > IBM.
> > > > > > > > > 
> > > > > > > > > I've CCed Sam & Suraj - can you ask Mikey or someone
> > > > > > > > > what
> > > > > > > > > the PVR
> > > > > > > > > value for DD2.0 will be?    
> > > > > > > > 
> > > > > > > > I would expect something like :
> > > > > > > > 
> > > > > > > >  0x200D104980000000UL; /* P9 Nimbus DD2.0 */    
> > > > > > > 
> > > > > > > 
> > > > > > > I would expect something like 0x004Exxxx.    
> > > > > > 
> > > > > > ah yes, I am mistaking the PVR and the CFAM ID. 
> > > > > > 
> > > > > > C. 
> > > > > >    
> > > > > 
> > > > > According to https://patchwork.ozlabs.org/patch/776052/
> > > > > 
> > > > > POWER9 DD2's PVR is expected to be 0x004e1200
> > > > >  
> > > > 
> > > > So, perhaps I can send a v2 of the patch with POWER9_v1.0 set to
> > > > DD1
> > > > PVR, and POWER9_v2.0 set to DD2 PVR?
> > > > 
> > > 
> > > FWIW Thomas suggested to do just that and David agreed it was "a
> > > better idea".
> > 
> > I assume we would have just -cpu POWER9 alias to DD2?
> > 
> > We probably need to have a nice abort if someone tries to run TCG
> > with
> > DD1, I'm not sure where it will break but I'm fairly sure it won't
> > boot.
> > 
> > That makes the assumption that DD2 doesn't require any work arounds
> > which TCG can't handle.
> 
> Actually TCG is really a non-issue since we'll just go into the POWER9
> architected mode.
> 
> Can't we just have -cpu POWER9 alias to DD1 for now and add DD2 when we
> know the pvr?

No, because calling what qemu does DD1 is simply not accurate, in
important and guest-visible ways.

What we should do is add in DD2.0 - we know the PVR, even if the
chip's not out yet.  Then alias POWER9 to that.
David Gibson June 30, 2017, 7:14 a.m. UTC | #21
On Wed, Jun 28, 2017 at 06:18:06PM +0200, Laurent Vivier wrote:
> On 28/06/2017 13:59, Greg Kurz wrote:
> > On Wed, 28 Jun 2017 12:23:06 +0200
> > Cédric Le Goater <clg@kaod.org> wrote:
> > 
> >> On 06/28/2017 11:18 AM, Laurent Vivier wrote:
> >>> On 28/06/2017 11:11, Cédric Le Goater wrote:  
> >>>> On 06/28/2017 10:18 AM, David Gibson wrote:  
> >>>>> On Wed, Jun 28, 2017 at 09:09:24AM +0200, Thomas Huth wrote:  
> >>>>>> On 28.06.2017 03:42, joserz@linux.vnet.ibm.com wrote:  
> >>>>>>> On Fri, Jun 23, 2017 at 04:10:55PM +0200, Laurent Vivier wrote:  
> >>>>>>>> On 23/06/2017 11:21, David Gibson wrote:  
> >>>>>>>>> On Thu, Jun 22, 2017 at 01:31:24PM +0200, Thomas Huth wrote:  
> >>>>>>>>>> On 22.06.2017 13:26, Laurent Vivier wrote:  
> >>>>>>>>>>> CPU_POWERPC_POWER9_DD1 is 0x004E0100, so this is the POWER9 v1.0.
> >>>>>>>>>>>
> >>>>>>>>>>> When we run qemu on a POWER9 DD1 host, we must use either
> >>>>>>>>>>> "-cpu host" or "-cpu POWER9", but in the latter case it fails with
> >>>>>>>>>>>
> >>>>>>>>>>>     Unable to find sPAPR CPU Core definition
> >>>>>>>>>>>
> >>>>>>>>>>> because POWER9 DD1 doesn't appear in the list of known CPUs.
> >>>>>>>>>>>
> >>>>>>>>>>> This patch fixes this by defining POWER9_v1.0 with POWER9 DD1
> >>>>>>>>>>> PVR instead of CPU_POWERPC_POWER9_BASE.
> >>>>>>>>>>>
> >>>>>>>>>>> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
> >>>>>>>>>>> ---
> >>>>>>>>>>>  target/ppc/cpu-models.c | 2 +-
> >>>>>>>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>>>>>>>>>>
> >>>>>>>>>>> diff --git a/target/ppc/cpu-models.c b/target/ppc/cpu-models.c
> >>>>>>>>>>> index 4d3e635..a22363c 100644
> >>>>>>>>>>> --- a/target/ppc/cpu-models.c
> >>>>>>>>>>> +++ b/target/ppc/cpu-models.c
> >>>>>>>>>>> @@ -1144,7 +1144,7 @@
> >>>>>>>>>>>      POWERPC_DEF("970_v2.2",      CPU_POWERPC_970_v22,                970,
> >>>>>>>>>>>                  "PowerPC 970 v2.2")
> >>>>>>>>>>>  
> >>>>>>>>>>> -    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_BASE,            POWER9,
> >>>>>>>>>>> +    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_DD1,             POWER9,
> >>>>>>>>>>>                  "POWER9 v1.0")
> >>>>>>>>>>>  
> >>>>>>>>>>>      POWERPC_DEF("970fx_v1.0",    CPU_POWERPC_970FX_v10,              970,
> >>>>>>>>>>>  
> >>>>>>>>>>
> >>>>>>>>>> I think this also makes sense for running in TCG mode to get a valid
> >>>>>>>>>> real PVR there.  
> >>>>>>>>>
> >>>>>>>>> I'm not so convinced.
> >>>>>>>>>
> >>>>>>>>> IIUC, this will make TCG default (for now) to a DD1 POWER9.  That's a)
> >>>>>>>>> probably not what anyone wants - who'd select a buggy prototype and b)
> >>>>>>>>> not accurate - TCG does not implement DD1's bugs.  
> >>>>>>>>
> >>>>>>>> According to the POWER8 user manual (I didn't fine the POWER9 one):
> >>>>>>>>
> >>>>>>>> "3.6.3.1 Processor Version Register (PVR)
> >>>>>>>>
> >>>>>>>> The processor revision level (PVR[16:31]) starts at x‘0100’, indicating
> >>>>>>>> revision ‘1.0’. As revisions are made, bits [29:31] will indicate minor
> >>>>>>>> revisions. Similarly, bits [20:23] indicate major changes."
> >>>>>>>>
> >>>>>>>> POWER9 DD1 PVR is 0x004E0100, so this is really version 1.0 of the POWER9.
> >>>>>>>>
> >>>>>>>> Perhaps we can define POWER9_v1.0 as CPU_POWERPC_POWER9_DD1, and
> >>>>>>>> introduce a POWER9_v0.0 set to CPU_POWERPC_POWER9_BASE and define it as
> >>>>>>>> the default one?  
> >>>>>>>
> >>>>>>> I like the suggestion to set a v0.0 to CPU_POWERPC_POWER9_BASE. But, I
> >>>>>>> think we could have only that option, removing the
> >>>>>>> CPU_POWERPC_POWER9_DD1 entry.  
> >>>>>> I really dislike the idea of having a CPU called "v0.0" ... we do not
> >>>>>> have this for any other CPU generation, and it sounds like it could be
> >>>>>> very confusing for the users (you'd need to document somewhere what the
> >>>>>> v0.0 exactly means). If we really want to go this way, I think we should
> >>>>>> name it "POWER9-generic" or "PowerISA-3.0" or something similar instead.
> >>>>>>
> >>>>>> Or does somebody already know the exact PVR for DD2? If so, we could
> >>>>>> simply add a POWER9_v2.0 CPU already and let the POWER9 alias point to
> >>>>>> that version instead.  
> >>>>>
> >>>>> Yes, I think that's a better idea.  I don't know the DD2 PVR, but I'm
> >>>>> pretty sure we should be able to find out from someone at IBM.
> >>>>>
> >>>>> I've CCed Sam & Suraj - can you ask Mikey or someone what the PVR
> >>>>> value for DD2.0 will be?  
> >>>>
> >>>> I would expect something like :
> >>>>
> >>>>  0x200D104980000000UL; /* P9 Nimbus DD2.0 */  
> >>>
> >>>
> >>> I would expect something like 0x004Exxxx.  
> >>
> >> ah yes, I am mistaking the PVR and the CFAM ID. 
> >>
> >> C. 
> >>  
> > 
> > According to https://patchwork.ozlabs.org/patch/776052/
> > 
> > POWER9 DD2's PVR is expected to be 0x004e1200

Uh.. I spoke to Michael Ellerman, and he said he expected 0x004e0200.
Though he did mention there might be several variants.  Can we please
get a definitive answer on this from IBM.

> So, perhaps I can send a v2 of the patch with POWER9_v1.0 set to DD1
> PVR, and POWER9_v2.0 set to DD2 PVR?
> 
> Thanks,
> Laurent
>
Cédric Le Goater June 30, 2017, 7:56 a.m. UTC | #22
>>> According to https://patchwork.ozlabs.org/patch/776052/
>>>
>>> POWER9 DD2's PVR is expected to be 0x004e1200
> 
> Uh.. I spoke to Michael Ellerman, and he said he expected 0x004e0200.
> Though he did mention there might be several variants.  Can we please
> get a definitive answer on this from IBM.

Adding Michael Ellerman in cc: but I think Greg is correct. 

C.
Laurent Vivier June 30, 2017, 8:52 a.m. UTC | #23
On 30/06/2017 09:12, David Gibson wrote:
> On Thu, Jun 29, 2017 at 03:42:03PM +1000, Suraj Jitindar Singh wrote:
>> On Thu, 2017-06-29 at 15:37 +1000, Suraj Jitindar Singh wrote:
>>> On Wed, 2017-06-28 at 18:41 +0200, Greg Kurz wrote:
...
>>> That makes the assumption that DD2 doesn't require any work arounds
>>> which TCG can't handle.
>>
>> Actually TCG is really a non-issue since we'll just go into the POWER9
>> architected mode.
>>
>> Can't we just have -cpu POWER9 alias to DD1 for now and add DD2 when we
>> know the pvr?
> 
> No, because calling what qemu does DD1 is simply not accurate, in
> important and guest-visible ways.
> 
> What we should do is add in DD2.0 - we know the PVR, even if the
> chip's not out yet.  Then alias POWER9 to that.
> 

OK, I have patch that define v1.0 to DD1, v2 to DD2, and set the POWER9
alias to v2, but:
- on a DD1 host and KVM HV, "-cpu host" works well and "cpu POWER9"
(that select then the v1.0) boots the kernel and hangs at early boot of
the kernel (first display)
- in TCG mode, boot by default with v2, but some services does not start
correctly, and I have never the console login (perhaps because of some
time out: I test TCG on the POWER9 host, I should test on a x86 one).

I'm trying for the moment to understand why "-cpu POWER9" hangs while
"-cpu host" works.

Thanks,
Laurent
Michael Ellerman June 30, 2017, 10:36 a.m. UTC | #24
Cédric Le Goater <clg@kaod.org> writes:

>>>> According to https://patchwork.ozlabs.org/patch/776052/
>>>>
>>>> POWER9 DD2's PVR is expected to be 0x004e1200
>> 
>> Uh.. I spoke to Michael Ellerman, and he said he expected 0x004e0200.
>> Though he did mention there might be several variants.  Can we please
>> get a definitive answer on this from IBM.
>
> Adding Michael Ellerman in cc: but I think Greg is correct. 

I don't claim to be correct :)

AFAIK Mikey's patch (linked above) is the most definitive public
documentation we have on this.

Which says:
  The P9 PVR bits 12-15 don't indicate a revision but instead different
  chip configurations.  From BookIV we have:
     Bits      Configuration
      0 :    Scale out 12 cores
      1 :    Scale out 24 cores
      2 :    Scale up  12 cores
      3 :    Scale up  24 cores

His heading of "Bits" is somewhat confusing, I'm pretty sure he just
means "the decimal value of bits 12-15", not a bit number.

Which means there may be "POWER9 DD2" chips with PVRs of:
  - 0x004e02xx
  - 0x004e12xx
  - 0x004e22xx
  - 0x004e32xx
 
So the question is just which of the scale out values to use. Neither
is technically correct, because Qemu won't necessarily be emulating a 12
or 24 core system.

Mikey did say "Linux will mostly use the "Scale out 24 core"
configuration", but AFAIK that's really just about the system designs
that are currently in plan.

Hope that makes it clear as mud :)

cheers
diff mbox

Patch

diff --git a/target/ppc/cpu-models.c b/target/ppc/cpu-models.c
index 4d3e635..a22363c 100644
--- a/target/ppc/cpu-models.c
+++ b/target/ppc/cpu-models.c
@@ -1144,7 +1144,7 @@ 
     POWERPC_DEF("970_v2.2",      CPU_POWERPC_970_v22,                970,
                 "PowerPC 970 v2.2")
 
-    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_BASE,            POWER9,
+    POWERPC_DEF("POWER9_v1.0",   CPU_POWERPC_POWER9_DD1,             POWER9,
                 "POWER9 v1.0")
 
     POWERPC_DEF("970fx_v1.0",    CPU_POWERPC_970FX_v10,              970,