From: tip-bot for Dou Liyang <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: tglx@linutronix.de, mingo@kernel.org,
linux-kernel@vger.kernel.org, douly.fnst@cn.fujitsu.com,
hpa@zytor.com
Subject: [tip:x86/apic] acpi: Validate processor id when mapping the processor
Date: Thu, 22 Sep 2016 12:12:42 -0700 [thread overview]
Message-ID: <tip-fd74da217df7d4bd25e95411da64e0b92762842e@git.kernel.org> (raw)
In-Reply-To: <1472114120-3281-8-git-send-email-douly.fnst@cn.fujitsu.com>
Commit-ID: fd74da217df7d4bd25e95411da64e0b92762842e
Gitweb: http://git.kernel.org/tip/fd74da217df7d4bd25e95411da64e0b92762842e
Author: Dou Liyang <douly.fnst@cn.fujitsu.com>
AuthorDate: Thu, 25 Aug 2016 16:35:20 +0800
Committer: Thomas Gleixner <tglx@linutronix.de>
CommitDate: Wed, 21 Sep 2016 21:18:40 +0200
acpi: Validate processor id when mapping the processor
When we want to identify whether the proc_id is unreasonable or not, we
can call the "acpi_processor_validate_proc_id" function. It will search
in the duplicate IDs. If we find the proc_id in the IDs, we return true
to the call function. Conversely, the false represents available.
When we establish all possible cpuid <-> nodeid mapping to handle the
cpu hotplugs, we will use the proc_id from ACPI table.
We do validation when we get the proc_id. If the result is true, we
will stop the mapping.
[ tglx: Mark the new function __init ]
Signed-off-by: Dou Liyang <douly.fnst@cn.fujitsu.com>
Acked-by: Ingo Molnar <mingo@kernel.org>
Cc: mika.j.penttila@gmail.com
Cc: len.brown@intel.com
Cc: rafael@kernel.org
Cc: rjw@rjwysocki.net
Cc: yasu.isimatu@gmail.com
Cc: linux-mm@kvack.org
Cc: linux-acpi@vger.kernel.org
Cc: isimatu.yasuaki@jp.fujitsu.com
Cc: gongzhaogang@inspur.com
Cc: tj@kernel.org
Cc: izumi.taku@jp.fujitsu.com
Cc: cl@linux.com
Cc: chen.tang@easystack.cn
Cc: akpm@linux-foundation.org
Cc: kamezawa.hiroyu@jp.fujitsu.com
Cc: lenb@kernel.org
Link: http://lkml.kernel.org/r/1472114120-3281-8-git-send-email-douly.fnst@cn.fujitsu.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
drivers/acpi/acpi_processor.c | 15 +++++++++++++++
drivers/acpi/processor_core.c | 4 ++++
include/linux/acpi.h | 3 +++
3 files changed, 22 insertions(+)
diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processor.c
index f27c709..3de3b6b 100644
--- a/drivers/acpi/acpi_processor.c
+++ b/drivers/acpi/acpi_processor.c
@@ -659,6 +659,21 @@ static void __init acpi_processor_check_duplicates(void)
NULL, NULL, NULL);
}
+bool __init acpi_processor_validate_proc_id(int proc_id)
+{
+ int i;
+
+ /*
+ * compare the proc_id with duplicate IDs, if the proc_id is already
+ * in the duplicate IDs, return true, otherwise, return false.
+ */
+ for (i = 0; i < nr_duplicate_ids; i++) {
+ if (duplicate_processor_ids[i] == proc_id)
+ return true;
+ }
+ return false;
+}
+
void __init acpi_processor_init(void)
{
acpi_processor_check_duplicates();
diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c
index 8801976..9ac265f 100644
--- a/drivers/acpi/processor_core.c
+++ b/drivers/acpi/processor_core.c
@@ -302,6 +302,10 @@ map_processor(acpi_handle handle, phys_cpuid_t *phys_id, int *cpuid)
if (ACPI_FAILURE(status))
return false;
acpi_id = object.processor.proc_id;
+
+ /* validate the acpi_id */
+ if(acpi_processor_validate_proc_id(acpi_id))
+ return false;
break;
case ACPI_TYPE_DEVICE:
status = acpi_evaluate_integer(handle, "_UID", NULL, &tmp);
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 5b4f9ac..7f307f3 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -267,6 +267,9 @@ static inline bool invalid_phys_cpuid(phys_cpuid_t phys_id)
return phys_id == PHYS_CPUID_INVALID;
}
+/* Validate the processor object's proc_id */
+bool acpi_processor_validate_proc_id(int proc_id);
+
#ifdef CONFIG_ACPI_HOTPLUG_CPU
/* Arch dependent functions for cpu hotplug support */
int acpi_map_cpu(acpi_handle handle, phys_cpuid_t physid, int *pcpu);
next prev parent reply other threads:[~2016-09-22 19:43 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-25 8:35 [PATCH v12 0/7] Make cpuid <-> nodeid mapping persistent Dou Liyang
2016-08-25 8:35 ` [PATCH v12 1/7] x86, memhp, numa: Online memory-less nodes at boot time Dou Liyang
2016-09-22 19:09 ` [tip:x86/apic] x86/numa: " tip-bot for Tang Chen
2016-08-25 8:35 ` [PATCH v12 2/7] x86, acpi, cpu-hotplug: Enable acpi to register all possible cpus " Dou Liyang
2016-08-25 8:57 ` Dou Liyang
2016-09-22 19:10 ` [tip:x86/apic] x86/acpi: " tip-bot for Gu Zheng
2016-08-25 8:35 ` [PATCH v12 3/7] x86, acpi, cpu-hotplug: Introduce cpuid_to_apicid[] array to store persistent cpuid <-> apicid mapping Dou Liyang
2016-09-22 19:10 ` [tip:x86/apic] x86/acpi: Introduce persistent storage for " tip-bot for Gu Zheng
2016-10-04 6:02 ` Yinghai Lu
2016-10-05 14:04 ` Thomas Gleixner
2016-10-06 4:53 ` Yinghai Lu
2016-10-06 8:06 ` Dou Liyang
2016-10-06 21:20 ` Yinghai Lu
2016-10-07 4:35 ` Dou Liyang
2016-10-07 12:50 ` Thomas Gleixner
2016-10-07 13:00 ` Thomas Gleixner
2016-10-07 18:55 ` Yinghai Lu
2016-10-08 5:22 ` Dou Liyang
2016-10-07 11:02 ` Thomas Gleixner
2016-10-07 11:04 ` Thomas Gleixner
2016-10-07 13:07 ` Thomas Gleixner
2016-10-08 4:14 ` Dou Liyang
2016-08-25 8:35 ` [PATCH v12 4/7] x86, acpi, cpu-hotplug: Enable MADT APIs to return disabled apicid Dou Liyang
2016-09-22 19:11 ` [tip:x86/apic] x86/acpi: Enable MADT APIs to return disabled apicids tip-bot for Gu Zheng
2016-08-25 8:35 ` [PATCH v12 5/7] x86, acpi, cpu-hotplug: Set persistent cpuid <-> nodeid mapping when booting Dou Liyang
2016-09-22 19:11 ` [tip:x86/apic] x86/acpi: " tip-bot for Gu Zheng
2016-08-25 8:35 ` [PATCH v12 6/7] acpi: Provide the mechanism to validate processors in the ACPI tables Dou Liyang
2016-09-22 19:12 ` [tip:x86/apic] acpi: Provide " tip-bot for Dou Liyang
2016-08-25 8:35 ` [PATCH v12 7/7] acpi: Provide the interface to validate the proc_id Dou Liyang
2016-09-22 19:12 ` tip-bot for Dou Liyang [this message]
2016-08-25 9:08 ` [PATCH v12 0/7] Make cpuid <-> nodeid mapping persistent Dou Liyang
2016-09-02 6:57 ` Dou Liyang
2016-09-13 11:33 ` Dou Liyang
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=tip-fd74da217df7d4bd25e95411da64e0b92762842e@git.kernel.org \
--to=tipbot@zytor.com \
--cc=douly.fnst@cn.fujitsu.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).