All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hanjun Guo <guohanjun@huawei.com>
To: Robert Richter <robert.richter@caviumnetworks.com>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Will Deacon <will.deacon@arm.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	linux-acpi@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	Ganapatrao Kulkarni <gkulkarni@caviumnetworks.com>,
	Lorenzo Pieralisi <Lorenzo.Pieralisi@arm.com>,
	Shannon Zhao <shannon.zhao@linaro.org>,
	Steve Capper <steve.capper@linaro.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Hanjun Guo <hanjun.guo@linaro.org>
Subject: Re: [PATCH v3 05/12] arm64, acpi, numa: NUMA support based on SRAT and SLIT
Date: Thu, 28 Jan 2016 11:16:34 +0800	[thread overview]
Message-ID: <56A98812.4060506@huawei.com> (raw)
In-Reply-To: <20160127140109.GQ24726@rric.localdomain>

On 2016/1/27 22:01, Robert Richter wrote:
> On 27.01.16 15:12:15, Hanjun Guo wrote:
>> On 2016/1/25 18:21, Robert Richter wrote:
>>> On 23.01.16 17:39:20, Hanjun Guo wrote:
>>>> diff --git a/arch/arm64/kernel/acpi_numa.c b/arch/arm64/kernel/acpi_numa.c
>>>> new file mode 100644
>>>> index 0000000..f7f7533
>>>> --- /dev/null
>>>> +++ b/arch/arm64/kernel/acpi_numa.c
>>>> +/* Callback for parsing of the Proximity Domain <-> Memory Area mappings */
>>>> +int __init acpi_numa_memory_affinity_init(struct acpi_srat_mem_affinity *ma)
>>>> +{
>>>> +	u64 start, end;
>>>> +	int node, pxm;
>>>> +
>>>> +	if (srat_disabled())
>>>> +		return -EINVAL;
>>>> +
>>>> +	if (ma->header.length != sizeof(struct acpi_srat_mem_affinity)) {
>>> Must be:
>>>
>>> 	ma->header.length < sizeof(struct acpi_srat_mem_affinity)) {
>>>
>>> Allow extensions to struct acpi_srat_mem_affinity in newer versions.
>> Hmm, I think we need to remove the check here now.
> No, we might have an out-of-bound access then.
>
>> There are three cases:
>>
>>  - firmware ACPI version is consistent with the ACPICA one, then
>>    ma->header.length == sizeof(struct acpi_srat_mem_affinity )
>>
>>  - firmware ACPI version is not consistent with the ACPICA one,
>>    for example, struct acpi_srat_mem_affinity is extended in
>>    new ACI version, but the formware is using the older one,
>>   then it's ok to use
>>   ma->header.length < sizeof(struct acpi_srat_mem_affinity )
> The check above is ok as we need at least struct
> acpi_srat_mem_affinity as it is now.
>
> If we later change the kernel to support multiple versions of struct
> acpi_srat_mem_affinity, i.e. use data from an extended section, we
> will need to add code to handle that. This will include support of
> data with length < acpi_srat_mem_affinity, in this case we may not use
> extended data.

I checked the ACPI spec about memory affinity structure, it still have 10 bytes
reserved for future use, so I think it's safe as you suggested for next few years.

>
>>  - but if we use the older kernel + updated new firmware,
>>    then
>>    ma->header.length > sizeof(struct acpi_srat_mem_affinity )
>>   will be the case, right?
> Right, and this is a valid case not resulting in an error with my
> suggestion above.

Yes, I just mixed up those two cases.

I will sync with Ganapat to prepare a new version and test it on x86 and
IA64 to make sure this patch set don't break anything.

Thanks
Hanjun


WARNING: multiple messages have this Message-ID (diff)
From: guohanjun@huawei.com (Hanjun Guo)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 05/12] arm64, acpi, numa: NUMA support based on SRAT and SLIT
Date: Thu, 28 Jan 2016 11:16:34 +0800	[thread overview]
Message-ID: <56A98812.4060506@huawei.com> (raw)
In-Reply-To: <20160127140109.GQ24726@rric.localdomain>

On 2016/1/27 22:01, Robert Richter wrote:
> On 27.01.16 15:12:15, Hanjun Guo wrote:
>> On 2016/1/25 18:21, Robert Richter wrote:
>>> On 23.01.16 17:39:20, Hanjun Guo wrote:
>>>> diff --git a/arch/arm64/kernel/acpi_numa.c b/arch/arm64/kernel/acpi_numa.c
>>>> new file mode 100644
>>>> index 0000000..f7f7533
>>>> --- /dev/null
>>>> +++ b/arch/arm64/kernel/acpi_numa.c
>>>> +/* Callback for parsing of the Proximity Domain <-> Memory Area mappings */
>>>> +int __init acpi_numa_memory_affinity_init(struct acpi_srat_mem_affinity *ma)
>>>> +{
>>>> +	u64 start, end;
>>>> +	int node, pxm;
>>>> +
>>>> +	if (srat_disabled())
>>>> +		return -EINVAL;
>>>> +
>>>> +	if (ma->header.length != sizeof(struct acpi_srat_mem_affinity)) {
>>> Must be:
>>>
>>> 	ma->header.length < sizeof(struct acpi_srat_mem_affinity)) {
>>>
>>> Allow extensions to struct acpi_srat_mem_affinity in newer versions.
>> Hmm, I think we need to remove the check here now.
> No, we might have an out-of-bound access then.
>
>> There are three cases:
>>
>>  - firmware ACPI version is consistent with the ACPICA one, then
>>    ma->header.length == sizeof(struct acpi_srat_mem_affinity )
>>
>>  - firmware ACPI version is not consistent with the ACPICA one,
>>    for example, struct acpi_srat_mem_affinity is extended in
>>    new ACI version, but the formware is using the older one,
>>   then it's ok to use
>>   ma->header.length < sizeof(struct acpi_srat_mem_affinity )
> The check above is ok as we need at least struct
> acpi_srat_mem_affinity as it is now.
>
> If we later change the kernel to support multiple versions of struct
> acpi_srat_mem_affinity, i.e. use data from an extended section, we
> will need to add code to handle that. This will include support of
> data with length < acpi_srat_mem_affinity, in this case we may not use
> extended data.

I checked the ACPI spec about memory affinity structure, it still have 10 bytes
reserved for future use, so I think it's safe as you suggested for next few years.

>
>>  - but if we use the older kernel + updated new firmware,
>>    then
>>    ma->header.length > sizeof(struct acpi_srat_mem_affinity )
>>   will be the case, right?
> Right, and this is a valid case not resulting in an error with my
> suggestion above.

Yes, I just mixed up those two cases.

I will sync with Ganapat to prepare a new version and test it on x86 and
IA64 to make sure this patch set don't break anything.

Thanks
Hanjun

WARNING: multiple messages have this Message-ID (diff)
From: Hanjun Guo <guohanjun@huawei.com>
To: Robert Richter <robert.richter@caviumnetworks.com>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Will Deacon <will.deacon@arm.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	<linux-acpi@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-kernel@vger.kernel.org>,
	Ganapatrao Kulkarni <gkulkarni@caviumnetworks.com>,
	Lorenzo Pieralisi <Lorenzo.Pieralisi@arm.com>,
	Shannon Zhao <shannon.zhao@linaro.org>,
	"Steve Capper" <steve.capper@linaro.org>,
	Mark Rutland <mark.rutland@arm.com>,
	"Hanjun Guo" <hanjun.guo@linaro.org>
Subject: Re: [PATCH v3 05/12] arm64, acpi, numa: NUMA support based on SRAT and SLIT
Date: Thu, 28 Jan 2016 11:16:34 +0800	[thread overview]
Message-ID: <56A98812.4060506@huawei.com> (raw)
In-Reply-To: <20160127140109.GQ24726@rric.localdomain>

On 2016/1/27 22:01, Robert Richter wrote:
> On 27.01.16 15:12:15, Hanjun Guo wrote:
>> On 2016/1/25 18:21, Robert Richter wrote:
>>> On 23.01.16 17:39:20, Hanjun Guo wrote:
>>>> diff --git a/arch/arm64/kernel/acpi_numa.c b/arch/arm64/kernel/acpi_numa.c
>>>> new file mode 100644
>>>> index 0000000..f7f7533
>>>> --- /dev/null
>>>> +++ b/arch/arm64/kernel/acpi_numa.c
>>>> +/* Callback for parsing of the Proximity Domain <-> Memory Area mappings */
>>>> +int __init acpi_numa_memory_affinity_init(struct acpi_srat_mem_affinity *ma)
>>>> +{
>>>> +	u64 start, end;
>>>> +	int node, pxm;
>>>> +
>>>> +	if (srat_disabled())
>>>> +		return -EINVAL;
>>>> +
>>>> +	if (ma->header.length != sizeof(struct acpi_srat_mem_affinity)) {
>>> Must be:
>>>
>>> 	ma->header.length < sizeof(struct acpi_srat_mem_affinity)) {
>>>
>>> Allow extensions to struct acpi_srat_mem_affinity in newer versions.
>> Hmm, I think we need to remove the check here now.
> No, we might have an out-of-bound access then.
>
>> There are three cases:
>>
>>  - firmware ACPI version is consistent with the ACPICA one, then
>>    ma->header.length == sizeof(struct acpi_srat_mem_affinity )
>>
>>  - firmware ACPI version is not consistent with the ACPICA one,
>>    for example, struct acpi_srat_mem_affinity is extended in
>>    new ACI version, but the formware is using the older one,
>>   then it's ok to use
>>   ma->header.length < sizeof(struct acpi_srat_mem_affinity )
> The check above is ok as we need at least struct
> acpi_srat_mem_affinity as it is now.
>
> If we later change the kernel to support multiple versions of struct
> acpi_srat_mem_affinity, i.e. use data from an extended section, we
> will need to add code to handle that. This will include support of
> data with length < acpi_srat_mem_affinity, in this case we may not use
> extended data.

I checked the ACPI spec about memory affinity structure, it still have 10 bytes
reserved for future use, so I think it's safe as you suggested for next few years.

>
>>  - but if we use the older kernel + updated new firmware,
>>    then
>>    ma->header.length > sizeof(struct acpi_srat_mem_affinity )
>>   will be the case, right?
> Right, and this is a valid case not resulting in an error with my
> suggestion above.

Yes, I just mixed up those two cases.

I will sync with Ganapat to prepare a new version and test it on x86 and
IA64 to make sure this patch set don't break anything.

Thanks
Hanjun

  reply	other threads:[~2016-01-28  3:16 UTC|newest]

Thread overview: 100+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-23  9:39 [PATCH v3 00/12] ACPI NUMA support for ARM64 Hanjun Guo
2016-01-23  9:39 ` Hanjun Guo
2016-01-23  9:39 ` Hanjun Guo
2016-01-23  9:39 ` [PATCH v3 01/12] acpi, numa: Use pr_fmt() instead of printk Hanjun Guo
2016-01-23  9:39   ` Hanjun Guo
2016-01-23  9:39   ` Hanjun Guo
2016-01-23  9:39 ` [PATCH v3 02/12] acpi, numa: Replace ACPI_DEBUG_PRINT() with pr_debug() Hanjun Guo
2016-01-23  9:39   ` Hanjun Guo
2016-01-23  9:39   ` Hanjun Guo
2016-01-23  9:39 ` [PATCH v3 03/12] acpi, numa: remove duplicate NULL check Hanjun Guo
2016-01-23  9:39   ` Hanjun Guo
2016-01-23  9:39   ` Hanjun Guo
2016-01-23  9:39 ` [PATCH v3 04/12] acpi, numa: introduce ACPI_HAS_NUMA_ARCH_FIXUP Hanjun Guo
2016-01-23  9:39   ` Hanjun Guo
2016-01-23  9:39   ` Hanjun Guo
2016-01-23 10:25   ` Robert Richter
2016-01-23 10:25     ` Robert Richter
2016-01-23 10:25     ` Robert Richter
2016-01-24  4:56     ` Hanjun Guo
2016-01-24  4:56       ` Hanjun Guo
2016-01-23  9:39 ` [PATCH v3 05/12] arm64, acpi, numa: NUMA support based on SRAT and SLIT Hanjun Guo
2016-01-23  9:39   ` Hanjun Guo
2016-01-23  9:39   ` Hanjun Guo
2016-01-25 10:21   ` Robert Richter
2016-01-25 10:21     ` Robert Richter
2016-01-25 10:21     ` Robert Richter
2016-01-27  7:12     ` Hanjun Guo
2016-01-27  7:12       ` Hanjun Guo
2016-01-27  7:12       ` Hanjun Guo
2016-01-27 14:01       ` Robert Richter
2016-01-27 14:01         ` Robert Richter
2016-01-27 14:01         ` Robert Richter
2016-01-28  3:16         ` Hanjun Guo [this message]
2016-01-28  3:16           ` Hanjun Guo
2016-01-28  3:16           ` Hanjun Guo
2016-02-01 18:09   ` Robert Richter
2016-02-01 18:09     ` Robert Richter
2016-02-01 18:09     ` Robert Richter
2016-02-02 11:30     ` Hanjun Guo
2016-02-02 11:30       ` Hanjun Guo
2016-02-02 17:00       ` Lorenzo Pieralisi
2016-02-02 17:00         ` Lorenzo Pieralisi
2016-03-02 14:10     ` Matthias Brugger
2016-03-02 14:10       ` Matthias Brugger
2016-03-02 14:10     ` Matthias Brugger
2016-03-02 14:10       ` Matthias Brugger
2016-03-02 14:08   ` Matthias Brugger
2016-03-02 14:08     ` Matthias Brugger
2016-03-10  9:50     ` Hanjun Guo
2016-03-10  9:50       ` Hanjun Guo
2016-01-23  9:39 ` [PATCH v3 06/12] acpi, numa: Enable ACPI based NUMA on ARM64 Hanjun Guo
2016-01-23  9:39   ` Hanjun Guo
2016-01-23  9:39   ` Hanjun Guo
2016-01-29 16:37   ` Robert Richter
2016-01-29 16:37     ` Robert Richter
2016-01-29 16:37     ` Robert Richter
2016-01-23  9:39 ` [PATCH v3 07/12] acpi, numa: move acpi_numa_slit_init() to common place Hanjun Guo
2016-01-23  9:39   ` Hanjun Guo
2016-01-23  9:39   ` Hanjun Guo
2016-01-23  9:39 ` [PATCH v3 08/12] arm64, numa: rework numa_add_memblk() Hanjun Guo
2016-01-23  9:39   ` Hanjun Guo
2016-01-23  9:39   ` Hanjun Guo
2016-01-25  9:34   ` Robert Richter
2016-01-25  9:34     ` Robert Richter
2016-01-25  9:34     ` Robert Richter
2016-01-27  6:20     ` Hanjun Guo
2016-01-27  6:20       ` Hanjun Guo
2016-01-27  6:20       ` Hanjun Guo
2016-03-09 12:27   ` Robert Richter
2016-03-09 12:27     ` Robert Richter
2016-03-09 12:27     ` Robert Richter
2016-03-10 10:10     ` Hanjun Guo
2016-03-10 10:10       ` Hanjun Guo
2016-01-23  9:39 ` [PATCH v3 09/12] x86, acpi, numa: cleanup acpi_numa_processor_affinity_init() Hanjun Guo
2016-01-23  9:39   ` Hanjun Guo
2016-01-23  9:39   ` Hanjun Guo
2016-01-23  9:39 ` [PATCH v3 10/12] acpi, numa: move bad_srat() and srat_disabled() to common place Hanjun Guo
2016-01-23  9:39   ` Hanjun Guo
2016-01-23  9:39   ` Hanjun Guo
2016-01-23  9:39 ` [PATCH v3 11/12] acpi, numa: remove unneeded acpi_numa=1 Hanjun Guo
2016-01-23  9:39   ` Hanjun Guo
2016-01-23  9:39   ` Hanjun Guo
2016-01-23  9:39 ` [PATCH v3 12/12] acpi, numa: reuse acpi_numa_memory_affinity_init() Hanjun Guo
2016-01-23  9:39   ` Hanjun Guo
2016-01-23  9:39   ` Hanjun Guo
2016-01-25 10:26   ` Robert Richter
2016-01-25 10:26     ` Robert Richter
2016-01-25 10:26     ` Robert Richter
2016-01-27  6:15     ` Hanjun Guo
2016-01-27  6:15       ` Hanjun Guo
2016-01-27  6:15       ` Hanjun Guo
2016-01-27 14:18       ` Robert Richter
2016-01-27 14:18         ` Robert Richter
2016-01-27 14:18         ` Robert Richter
2016-01-28  2:48         ` Hanjun Guo
2016-01-28  2:48           ` Hanjun Guo
2016-01-28  2:48           ` Hanjun Guo
2016-01-28 13:31           ` Robert Richter
2016-01-28 13:31             ` Robert Richter
2016-01-28 13:31             ` Robert Richter

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=56A98812.4060506@huawei.com \
    --to=guohanjun@huawei.com \
    --cc=Lorenzo.Pieralisi@arm.com \
    --cc=catalin.marinas@arm.com \
    --cc=gkulkarni@caviumnetworks.com \
    --cc=hanjun.guo@linaro.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=rjw@rjwysocki.net \
    --cc=robert.richter@caviumnetworks.com \
    --cc=shannon.zhao@linaro.org \
    --cc=steve.capper@linaro.org \
    --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.