All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
To: Al Stone <ahs3@redhat.com>
Cc: Jeremy Linton <jeremy.linton@arm.com>,
	linux-acpi@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	sudeep.holla@arm.com, hanjun.guo@linaro.org, rjw@rjwysocki.net,
	will.deacon@arm.com, catalin.marinas@arm.com,
	gregkh@linuxfoundation.org, viresh.kumar@linaro.org,
	mark.rutland@arm.com, linux-kernel@vger.kernel.org,
	linux-pm@vger.kernel.org, jhugo@codeaurora.org,
	wangxiongfeng2@huawei.com, Jonathan.Zhang@cavium.com,
	Jayachandran.Nair@cavium.com, austinwc@codeaurora.org
Subject: Re: [PATCH v3 6/7] arm64: topology: Enable ACPI/PPTT based CPU topology.
Date: Thu, 2 Nov 2017 10:48:35 +0000	[thread overview]
Message-ID: <20171102104826.GB13580@red-moon> (raw)
In-Reply-To: <270ae2f5-0af6-1be4-2914-d1ce8d0a5cd0@redhat.com>

On Wed, Nov 01, 2017 at 02:29:26PM -0600, Al Stone wrote:
> On 10/20/2017 03:22 AM, Lorenzo Pieralisi wrote:
> > On Thu, Oct 19, 2017 at 11:54:22AM -0500, Jeremy Linton wrote:
> > 
> > [...]
> > 
> >>>> +			cpu_topology[cpu].core_id   = topology_id;
> >>>> +			topology_id = setup_acpi_cpu_topology(cpu, 2);
> >>>> +			cpu_topology[cpu].cluster_id = topology_id;
> >>>> +			topology_id = setup_acpi_cpu_topology(cpu, max_topo);
> >>>
> >>> If you want a package id (that's just a package tag to group cores), you
> >>> should not use a large level because you know how setup_acpi_cpu_topology()works, you should add an API that allows you to retrieve the package id
> >>> (so that you can use th ACPI_PPTT_PHYSICAL_PACKAGE flag consistenly,
> >>> whatever it represents).
> >>
> >> I don't think the spec requires the use of PHYSICAL_PACKAGE... Am I
> >> misreading it? Which means we need to "pick" a node level to
> >> represent the physical package if one doesn't exist...
> > 
> > The specs define a means to detect if a given PPTT node corresponds to a
> > package (I am refraining from stating again that to me that's not clean
> > cut what a package is _architecturally_, I think you know my POV by now)
> > and that's what you need to use to retrieve a packageid for a given cpu,
> > if I understand the aim of the physical package flag.
> > 
> > Either that or that flag is completely useless.
> > 
> > Lorenzo
> > 
> > ACPI 6.2 - Table 5-151 (page 248)
> > Physical package
> > -----------------
> > Set to 1 if this node of the processor topology represents the boundary
> > of a physical package, whether socketed or surface mounted.  Set to 0 if
> > this instance of the processor topology does not represent the boundary
> > of a physical package.
> > 
> 
> I've been following the discussion and I'm not sure I understand what the
> confusion is around having a physical package ID.  Since I'm the one that
> insisted it be in the spec, I'd be glad to clarify anything.  My apologies
> for not saying anything sooner but things IRL have been very complicated
> of late.
> 
> What was intended was a simple flag that was meant to tell me if a CPU ID
> (this could be a CPU, a cluster, a processor container -- I don't really
> care which) is *also* an actual physical device on a motherboard.  That is
> the only intent; there was no architectural meaning intended at all -- that
> is what the PPTT structures are for, in conjunction with any DSDT information
> uncovered later in the boot process.
> 
> However, in the broader server ecosystem, this can be incredibly useful.  There
> are a significant number of software products sold or supported that base their
> fees on the number of physical sockets in use.  There have been in the past (and
> may be in the near future) machines where the cost of the lease on the machine
> is determined by how many physical sockets (or even CPUs) are in use, even if
> the machine has many more available.
> 
> Some vendors also include FRU (Field Replaceable Unit) location info in their
> ACPI tables.  So, for example, one or more CPUs or caches might fail in one
> physical package, which is then reported to a maintenance system of some sort
> that tells some human which of the physical sockets on what motherboard needs a
> replacement device, or it's simply noted and shut off until it's time to replace
> the entire server, or perhaps it's logged and used in an algorithm to predict
> when the server might fail completely.
> 
> So, that's why the flag exists in the spec.  It seems to make sense to me to
> have a package ID as part of struct cpu_topology -- it might even be really
> handy for CPU hotplug.  If you don't, it seems to me a whole separate struct
> would be needed with more cpumasks to show who belongs to what physical package;
> that might be okay but seems unnecessarily complicated to me.
> 
> You can also tell me that I have completely missed the point of the discussion
> so far :-).  But if you do, you have to tell me what I missed.
> 
> Hope this helps clarify...

Hi Al,

yes it does.

I think we agree that package ID has a HW/architectural meaning on x86,
it has none on PPTT (ie it totally depends on how PPTT is enumerated).

That's the first remark. So, if the package flag is used to group CPUs
and provide the topology package hierarchy to the kernel/userspace fine,
if it is to be used to provide scheduler/userspace with an ID that can
identify a HW "component" of sorts it is not fine because the topology
package ID is a SW construction on ARM systems relying on PPTT
(and DT - by the way).

So, to group CPUs and call them a package, fine by me (with a hope
FW developers won't play too much with that package flag to make
things work but use it consistenly instead).

Having said that, all I asked is that, given that we _know_ (thanks
to the PPTT flag) the package boundary, let's use it to initialize
the topology package level and that's where this patch series should
stop IMHO.

For the time being, I see no point in adding another arbitrary topology
level (ie COD) with no architectural meaning, as I said, this is vague
enough already and there is legacy (and DT systems) to take into account
too.

Thanks,
Lorenzo

WARNING: multiple messages have this Message-ID (diff)
From: lorenzo.pieralisi@arm.com (Lorenzo Pieralisi)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 6/7] arm64: topology: Enable ACPI/PPTT based CPU topology.
Date: Thu, 2 Nov 2017 10:48:35 +0000	[thread overview]
Message-ID: <20171102104826.GB13580@red-moon> (raw)
In-Reply-To: <270ae2f5-0af6-1be4-2914-d1ce8d0a5cd0@redhat.com>

On Wed, Nov 01, 2017 at 02:29:26PM -0600, Al Stone wrote:
> On 10/20/2017 03:22 AM, Lorenzo Pieralisi wrote:
> > On Thu, Oct 19, 2017 at 11:54:22AM -0500, Jeremy Linton wrote:
> > 
> > [...]
> > 
> >>>> +			cpu_topology[cpu].core_id   = topology_id;
> >>>> +			topology_id = setup_acpi_cpu_topology(cpu, 2);
> >>>> +			cpu_topology[cpu].cluster_id = topology_id;
> >>>> +			topology_id = setup_acpi_cpu_topology(cpu, max_topo);
> >>>
> >>> If you want a package id (that's just a package tag to group cores), you
> >>> should not use a large level because you know how setup_acpi_cpu_topology()works, you should add an API that allows you to retrieve the package id
> >>> (so that you can use th ACPI_PPTT_PHYSICAL_PACKAGE flag consistenly,
> >>> whatever it represents).
> >>
> >> I don't think the spec requires the use of PHYSICAL_PACKAGE... Am I
> >> misreading it? Which means we need to "pick" a node level to
> >> represent the physical package if one doesn't exist...
> > 
> > The specs define a means to detect if a given PPTT node corresponds to a
> > package (I am refraining from stating again that to me that's not clean
> > cut what a package is _architecturally_, I think you know my POV by now)
> > and that's what you need to use to retrieve a packageid for a given cpu,
> > if I understand the aim of the physical package flag.
> > 
> > Either that or that flag is completely useless.
> > 
> > Lorenzo
> > 
> > ACPI 6.2 - Table 5-151 (page 248)
> > Physical package
> > -----------------
> > Set to 1 if this node of the processor topology represents the boundary
> > of a physical package, whether socketed or surface mounted.  Set to 0 if
> > this instance of the processor topology does not represent the boundary
> > of a physical package.
> > 
> 
> I've been following the discussion and I'm not sure I understand what the
> confusion is around having a physical package ID.  Since I'm the one that
> insisted it be in the spec, I'd be glad to clarify anything.  My apologies
> for not saying anything sooner but things IRL have been very complicated
> of late.
> 
> What was intended was a simple flag that was meant to tell me if a CPU ID
> (this could be a CPU, a cluster, a processor container -- I don't really
> care which) is *also* an actual physical device on a motherboard.  That is
> the only intent; there was no architectural meaning intended at all -- that
> is what the PPTT structures are for, in conjunction with any DSDT information
> uncovered later in the boot process.
> 
> However, in the broader server ecosystem, this can be incredibly useful.  There
> are a significant number of software products sold or supported that base their
> fees on the number of physical sockets in use.  There have been in the past (and
> may be in the near future) machines where the cost of the lease on the machine
> is determined by how many physical sockets (or even CPUs) are in use, even if
> the machine has many more available.
> 
> Some vendors also include FRU (Field Replaceable Unit) location info in their
> ACPI tables.  So, for example, one or more CPUs or caches might fail in one
> physical package, which is then reported to a maintenance system of some sort
> that tells some human which of the physical sockets on what motherboard needs a
> replacement device, or it's simply noted and shut off until it's time to replace
> the entire server, or perhaps it's logged and used in an algorithm to predict
> when the server might fail completely.
> 
> So, that's why the flag exists in the spec.  It seems to make sense to me to
> have a package ID as part of struct cpu_topology -- it might even be really
> handy for CPU hotplug.  If you don't, it seems to me a whole separate struct
> would be needed with more cpumasks to show who belongs to what physical package;
> that might be okay but seems unnecessarily complicated to me.
> 
> You can also tell me that I have completely missed the point of the discussion
> so far :-).  But if you do, you have to tell me what I missed.
> 
> Hope this helps clarify...

Hi Al,

yes it does.

I think we agree that package ID has a HW/architectural meaning on x86,
it has none on PPTT (ie it totally depends on how PPTT is enumerated).

That's the first remark. So, if the package flag is used to group CPUs
and provide the topology package hierarchy to the kernel/userspace fine,
if it is to be used to provide scheduler/userspace with an ID that can
identify a HW "component" of sorts it is not fine because the topology
package ID is a SW construction on ARM systems relying on PPTT
(and DT - by the way).

So, to group CPUs and call them a package, fine by me (with a hope
FW developers won't play too much with that package flag to make
things work but use it consistenly instead).

Having said that, all I asked is that, given that we _know_ (thanks
to the PPTT flag) the package boundary, let's use it to initialize
the topology package level and that's where this patch series should
stop IMHO.

For the time being, I see no point in adding another arbitrary topology
level (ie COD) with no architectural meaning, as I said, this is vague
enough already and there is legacy (and DT systems) to take into account
too.

Thanks,
Lorenzo

  reply	other threads:[~2017-11-02 10:48 UTC|newest]

Thread overview: 104+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-12 19:48 [PATCH v3 0/7] Support PPTT for ARM64 Jeremy Linton
2017-10-12 19:48 ` Jeremy Linton
2017-10-12 19:48 ` [PATCH v3 1/7] ACPI/PPTT: Add Processor Properties Topology Table parsing Jeremy Linton
2017-10-12 19:48   ` Jeremy Linton
2017-10-13  9:56   ` Julien Thierry
2017-10-13  9:56     ` Julien Thierry
2017-10-13 22:41     ` Jeremy Linton
2017-10-13 22:41       ` Jeremy Linton
2017-10-13 14:23   ` tn
2017-10-13 14:23     ` tn
2017-10-13 19:58     ` Jeremy Linton
2017-10-13 19:58       ` Jeremy Linton
2017-10-16 14:24   ` John Garry
2017-10-16 14:24     ` John Garry
2017-10-16 14:24     ` John Garry
2017-10-17 13:25   ` Tomasz Nowicki
2017-10-17 13:25     ` Tomasz Nowicki
2017-10-17 15:22     ` Jeremy Linton
2017-10-17 15:22       ` Jeremy Linton
2017-10-18  1:10       ` Xiongfeng Wang
2017-10-18  1:10         ` Xiongfeng Wang
2017-10-18  1:10         ` Xiongfeng Wang
2017-10-18  5:39       ` Tomasz Nowicki
2017-10-18  5:39         ` Tomasz Nowicki
2017-10-18 10:24         ` Tomasz Nowicki
2017-10-18 10:24           ` Tomasz Nowicki
2017-10-18 17:30           ` Jeremy Linton
2017-10-18 17:30             ` Jeremy Linton
2017-10-19  5:18             ` Tomasz Nowicki
2017-10-19  5:18               ` Tomasz Nowicki
2017-10-19 10:25               ` John Garry
2017-10-19 10:25                 ` John Garry
2017-10-19 10:25                 ` John Garry
2017-10-27  5:21                 ` Tomasz Nowicki
2017-10-27  5:21                   ` Tomasz Nowicki
2017-10-19 14:24               ` Jeremy Linton
2017-10-19 14:24                 ` Jeremy Linton
2017-10-19 10:22   ` Lorenzo Pieralisi
2017-10-19 10:22     ` Lorenzo Pieralisi
2017-10-19 15:43     ` Jeremy Linton
2017-10-19 15:43       ` Jeremy Linton
2017-10-20 10:15       ` Lorenzo Pieralisi
2017-10-20 10:15         ` Lorenzo Pieralisi
2017-10-20 19:53   ` Christ, Austin
2017-10-20 19:53     ` Christ, Austin
2017-10-23 21:14     ` Jeremy Linton
2017-10-23 21:14       ` Jeremy Linton
2017-10-12 19:48 ` [PATCH v3 2/7] ACPI: Enable PPTT support on ARM64 Jeremy Linton
2017-10-12 19:48   ` Jeremy Linton
2017-10-12 19:48   ` Jeremy Linton
2017-10-13  9:53   ` Hanjun Guo
2017-10-13  9:53     ` Hanjun Guo
2017-10-13  9:53     ` Hanjun Guo
2017-10-13 17:51     ` Jeremy Linton
2017-10-13 17:51       ` Jeremy Linton
2017-10-18 16:47   ` Lorenzo Pieralisi
2017-10-18 16:47     ` Lorenzo Pieralisi
2017-10-18 17:38     ` Jeremy Linton
2017-10-18 17:38       ` Jeremy Linton
2017-10-19  9:12       ` Lorenzo Pieralisi
2017-10-19  9:12         ` Lorenzo Pieralisi
2017-10-12 19:48 ` [PATCH v3 3/7] drivers: base: cacheinfo: arm64: Add support for ACPI based firmware tables Jeremy Linton
2017-10-12 19:48   ` Jeremy Linton
2017-10-19 15:20   ` Lorenzo Pieralisi
2017-10-19 15:20     ` Lorenzo Pieralisi
2017-10-19 15:52     ` Jeremy Linton
2017-10-19 15:52       ` Jeremy Linton
2017-10-12 19:48 ` [PATCH v3 4/7] Topology: Add cluster on die macros and arm64 decoding Jeremy Linton
2017-10-12 19:48   ` Jeremy Linton
2017-10-12 19:48 ` [PATCH v3 5/7] arm64: Fixup users of topology_physical_package_id Jeremy Linton
2017-10-12 19:48   ` Jeremy Linton
2017-10-12 19:48 ` [PATCH v3 6/7] arm64: topology: Enable ACPI/PPTT based CPU topology Jeremy Linton
2017-10-12 19:48   ` Jeremy Linton
2017-10-19 15:56   ` Lorenzo Pieralisi
2017-10-19 15:56     ` Lorenzo Pieralisi
2017-10-19 16:13     ` Jeremy Linton
2017-10-19 16:13       ` Jeremy Linton
2017-10-20  9:14       ` Lorenzo Pieralisi
2017-10-20  9:14         ` Lorenzo Pieralisi
2017-10-20 16:14         ` Jeremy Linton
2017-10-20 16:14           ` Jeremy Linton
2017-10-20 16:42           ` Sudeep Holla
2017-10-20 16:42             ` Sudeep Holla
2017-10-20 19:55           ` Jeffrey Hugo
2017-10-20 19:55             ` Jeffrey Hugo
2017-10-23 21:26             ` Jeremy Linton
2017-10-23 21:26               ` Jeremy Linton
2017-10-19 16:54     ` Jeremy Linton
2017-10-19 16:54       ` Jeremy Linton
2017-10-20  9:22       ` Lorenzo Pieralisi
2017-10-20  9:22         ` Lorenzo Pieralisi
2017-11-01 20:29         ` Al Stone
2017-11-01 20:29           ` Al Stone
2017-11-02 10:48           ` Lorenzo Pieralisi [this message]
2017-11-02 10:48             ` Lorenzo Pieralisi
2017-10-12 19:48 ` [PATCH v3 7/7] ACPI: Add PPTT to injectable table list Jeremy Linton
2017-10-12 19:48   ` Jeremy Linton
2017-10-13 11:08 ` [PATCH v3 0/7] Support PPTT for ARM64 John Garry
2017-10-13 11:08   ` John Garry
2017-10-13 11:08   ` John Garry
2017-10-13 19:34   ` Jeremy Linton
2017-10-13 19:34     ` Jeremy Linton
2017-10-31 12:46 ` Jon Masters
2017-10-31 12:46   ` Jon Masters

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171102104826.GB13580@red-moon \
    --to=lorenzo.pieralisi@arm.com \
    --cc=Jayachandran.Nair@cavium.com \
    --cc=Jonathan.Zhang@cavium.com \
    --cc=ahs3@redhat.com \
    --cc=austinwc@codeaurora.org \
    --cc=catalin.marinas@arm.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hanjun.guo@linaro.org \
    --cc=jeremy.linton@arm.com \
    --cc=jhugo@codeaurora.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=rjw@rjwysocki.net \
    --cc=sudeep.holla@arm.com \
    --cc=viresh.kumar@linaro.org \
    --cc=wangxiongfeng2@huawei.com \
    --cc=will.deacon@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.