From: Dou Liyang <douly.fnst@cn.fujitsu.com> To: mingo@kernel.org, tglx@linutronix.de, peterz@infradead.org, rjw@rjwysocki.net, hpa@zytor.com, rafael@kernel.org, cl@linux.com, tj@kernel.org, akpm@linux-foundation.org, rafael.j.wysocki@intel.com, len.brown@intel.com, izumi.taku@jp.fujitsu.com, xiaolong.ye@intel.com Cc: x86@kernel.org, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, Dou Liyang <douly.fnst@cn.fujitsu.com> Subject: [PATCH v2 3/4] acpi: Fix the check handle in case of declaring processors using the Device operator Date: Mon, 20 Feb 2017 16:47:50 +0800 [thread overview] Message-ID: <1487580471-17665-4-git-send-email-douly.fnst@cn.fujitsu.com> (raw) In-Reply-To: <1487580471-17665-1-git-send-email-douly.fnst@cn.fujitsu.com> In ACPI spec, we can declare processors using both Processor and Device operator. And before we use the ACPI table, we should check the correctness for all processors in ACPI namespace. But, Currently, the check handle is just include only the processors which are declared by Processor operator. It misses the processors declared by Device operator. The patch adds the case of Device operator. Signed-off-by: Dou Liyang <douly.fnst@cn.fujitsu.com> --- drivers/acpi/acpi_processor.c | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processor.c index f43a586..eb500e1 100644 --- a/drivers/acpi/acpi_processor.c +++ b/drivers/acpi/acpi_processor.c @@ -633,25 +633,43 @@ static acpi_status __init acpi_processor_ids_walk(acpi_handle handle, void **rv) { acpi_status status; + acpi_object_type acpi_type; + unsigned long long uid; union acpi_object object = { 0 }; struct acpi_buffer buffer = { sizeof(union acpi_object), &object }; - status = acpi_evaluate_object(handle, NULL, NULL, &buffer); - if (ACPI_FAILURE(status)) - acpi_handle_info(handle, "Not get the processor object\n"); - else - processor_validated_ids_update(object.processor.proc_id); + status = acpi_get_type(handle, &acpi_type); + switch (acpi_type) { + case ACPI_TYPE_PROCESSOR: + status = acpi_evaluate_object(handle, NULL, NULL, &buffer); + if (ACPI_FAILURE(status)) + acpi_handle_info(handle, "Not get the processor object\n"); + else + processor_validated_ids_update( + object.processor.proc_id); + break; + case ACPI_TYPE_DEVICE: + status = acpi_evaluate_integer(handle, "_UID", NULL, &uid); + if (ACPI_FAILURE(status)) + return false; + processor_validated_ids_update(uid); + break; + default: + return false; + } return AE_OK; } -static void __init acpi_processor_check_duplicates(void) +void __init acpi_processor_check_duplicates(void) { - /* Search all processor nodes in ACPI namespace */ + /* check the correctness for all processors in ACPI namespace */ acpi_walk_namespace(ACPI_TYPE_PROCESSOR, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, acpi_processor_ids_walk, NULL, NULL, NULL); + acpi_get_devices(ACPI_PROCESSOR_DEVICE_HID, acpi_processor_ids_walk, + NULL, NULL); } bool __init acpi_processor_validate_proc_id(int proc_id) -- 2.5.5
WARNING: multiple messages have this Message-ID (diff)
From: Dou Liyang <douly.fnst@cn.fujitsu.com> To: <mingo@kernel.org>, <tglx@linutronix.de>, <peterz@infradead.org>, <rjw@rjwysocki.net>, <hpa@zytor.com>, <rafael@kernel.org>, <cl@linux.com>, <tj@kernel.org>, <akpm@linux-foundation.org>, <rafael.j.wysocki@intel.com>, <len.brown@intel.com>, <izumi.taku@jp.fujitsu.com>, <xiaolong.ye@intel.com> Cc: <x86@kernel.org>, <linux-acpi@vger.kernel.org>, <linux-kernel@vger.kernel.org>, Dou Liyang <douly.fnst@cn.fujitsu.com> Subject: [PATCH v2 3/4] acpi: Fix the check handle in case of declaring processors using the Device operator Date: Mon, 20 Feb 2017 16:47:50 +0800 [thread overview] Message-ID: <1487580471-17665-4-git-send-email-douly.fnst@cn.fujitsu.com> (raw) In-Reply-To: <1487580471-17665-1-git-send-email-douly.fnst@cn.fujitsu.com> In ACPI spec, we can declare processors using both Processor and Device operator. And before we use the ACPI table, we should check the correctness for all processors in ACPI namespace. But, Currently, the check handle is just include only the processors which are declared by Processor operator. It misses the processors declared by Device operator. The patch adds the case of Device operator. Signed-off-by: Dou Liyang <douly.fnst@cn.fujitsu.com> --- drivers/acpi/acpi_processor.c | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processor.c index f43a586..eb500e1 100644 --- a/drivers/acpi/acpi_processor.c +++ b/drivers/acpi/acpi_processor.c @@ -633,25 +633,43 @@ static acpi_status __init acpi_processor_ids_walk(acpi_handle handle, void **rv) { acpi_status status; + acpi_object_type acpi_type; + unsigned long long uid; union acpi_object object = { 0 }; struct acpi_buffer buffer = { sizeof(union acpi_object), &object }; - status = acpi_evaluate_object(handle, NULL, NULL, &buffer); - if (ACPI_FAILURE(status)) - acpi_handle_info(handle, "Not get the processor object\n"); - else - processor_validated_ids_update(object.processor.proc_id); + status = acpi_get_type(handle, &acpi_type); + switch (acpi_type) { + case ACPI_TYPE_PROCESSOR: + status = acpi_evaluate_object(handle, NULL, NULL, &buffer); + if (ACPI_FAILURE(status)) + acpi_handle_info(handle, "Not get the processor object\n"); + else + processor_validated_ids_update( + object.processor.proc_id); + break; + case ACPI_TYPE_DEVICE: + status = acpi_evaluate_integer(handle, "_UID", NULL, &uid); + if (ACPI_FAILURE(status)) + return false; + processor_validated_ids_update(uid); + break; + default: + return false; + } return AE_OK; } -static void __init acpi_processor_check_duplicates(void) +void __init acpi_processor_check_duplicates(void) { - /* Search all processor nodes in ACPI namespace */ + /* check the correctness for all processors in ACPI namespace */ acpi_walk_namespace(ACPI_TYPE_PROCESSOR, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, acpi_processor_ids_walk, NULL, NULL, NULL); + acpi_get_devices(ACPI_PROCESSOR_DEVICE_HID, acpi_processor_ids_walk, + NULL, NULL); } bool __init acpi_processor_validate_proc_id(int proc_id) -- 2.5.5
next prev parent reply other threads:[~2017-02-20 8:47 UTC|newest] Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-02-20 8:47 [PATCH v2 0/4] Revert works for the mapping of cpuid <-> nodeid Dou Liyang 2017-02-20 8:47 ` Dou Liyang 2017-02-20 8:47 ` [PATCH v2 1/4] Revert"x86/acpi: Set persistent cpuid <-> nodeid mapping when booting" Dou Liyang 2017-02-20 8:47 ` Dou Liyang 2017-03-01 10:51 ` Thomas Gleixner 2017-03-02 7:58 ` Dou Liyang 2017-03-02 7:58 ` Dou Liyang 2017-02-20 8:47 ` [PATCH v2 2/4] Revert"x86/acpi: Enable MADT APIs to return disabled apicids" Dou Liyang 2017-02-20 8:47 ` Dou Liyang 2017-03-01 10:52 ` Thomas Gleixner 2017-03-02 8:02 ` Dou Liyang 2017-03-02 8:02 ` Dou Liyang 2017-02-20 8:47 ` Dou Liyang [this message] 2017-02-20 8:47 ` [PATCH v2 3/4] acpi: Fix the check handle in case of declaring processors using the Device operator Dou Liyang 2017-03-01 11:12 ` Thomas Gleixner 2017-03-02 8:12 ` Dou Liyang 2017-03-02 8:12 ` Dou Liyang 2017-02-20 8:47 ` [PATCH v2 4/4] acpi: Move the verification of duplicate proc_id from booting time to hot-plug time Dou Liyang 2017-02-20 8:47 ` Dou Liyang 2017-03-01 11:26 ` Thomas Gleixner 2017-03-02 8:20 ` Dou Liyang 2017-03-02 8:20 ` Dou Liyang 2017-02-21 1:02 ` [PATCH v2 0/4] Revert works for the mapping of cpuid <-> nodeid Ye Xiaolong 2017-02-21 7:10 ` Ye Xiaolong 2017-02-21 7:10 ` Ye Xiaolong 2017-02-22 1:56 ` Dou Liyang 2017-02-22 1:56 ` Dou Liyang 2017-02-22 1:56 ` Dou Liyang 2017-03-16 8:14 ` [LKP] " Aaron Lu 2017-03-16 8:14 ` Aaron Lu 2017-03-16 8:28 ` [LKP] " Thomas Gleixner 2017-03-16 8:28 ` Thomas Gleixner 2017-03-16 8:38 ` [LKP] " Aaron Lu 2017-03-16 8:38 ` Aaron Lu
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=1487580471-17665-4-git-send-email-douly.fnst@cn.fujitsu.com \ --to=douly.fnst@cn.fujitsu.com \ --cc=akpm@linux-foundation.org \ --cc=cl@linux.com \ --cc=hpa@zytor.com \ --cc=izumi.taku@jp.fujitsu.com \ --cc=len.brown@intel.com \ --cc=linux-acpi@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mingo@kernel.org \ --cc=peterz@infradead.org \ --cc=rafael.j.wysocki@intel.com \ --cc=rafael@kernel.org \ --cc=rjw@rjwysocki.net \ --cc=tglx@linutronix.de \ --cc=tj@kernel.org \ --cc=x86@kernel.org \ --cc=xiaolong.ye@intel.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: linkBe 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.