Message ID | 1430793998-21631-8-git-send-email-hanjun.guo@linaro.org |
---|---|
State | New |
Headers | show |
On 2015年05月05日 19:25, Sudeep Holla wrote: > > > On 05/05/15 03:46, Hanjun Guo wrote: >> Introduce invalid_phys_cpuid() to identify cpu with invalid >> physical ID, then used it as replacement of the direct comparisons >> with PHYS_CPUID_INVALID. >> >> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> >> --- >> drivers/acpi/acpi_processor.c | 4 ++-- >> drivers/acpi/processor_core.c | 4 ++-- >> include/linux/acpi.h | 5 +++++ >> 3 files changed, 9 insertions(+), 4 deletions(-) >> >> diff --git a/drivers/acpi/acpi_processor.c >> b/drivers/acpi/acpi_processor.c >> index 62c846b..92a5f73 100644 >> --- a/drivers/acpi/acpi_processor.c > > [...] > >> diff --git a/include/linux/acpi.h b/include/linux/acpi.h >> index 913b49f..cc82ff3 100644 >> --- a/include/linux/acpi.h >> +++ b/include/linux/acpi.h >> @@ -163,6 +163,11 @@ static inline bool invalid_logical_cpuid(u32 cpuid) >> return (int)cpuid < 0; >> } >> >> +static inline bool invalid_phys_cpuid(phys_cpuid_t phys_id) >> +{ >> + return (int)phys_id < 0; > > Should this be phys_id == PHYS_CPUID_INVALID ? else I don't see why we > need to even define PHYS_CPUID_INVALID I'm OK with this. For now, CPU phys_id will be valid value or PHYS_CPUID_INVALID in all cases for ACPI processor driver, but I want ask Rafael's opinion on this, is it OK to you too, Rafael? Thanks Hanjun -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 2015年05月05日 19:25, Sudeep Holla wrote: > > > On 05/05/15 03:46, Hanjun Guo wrote: >> Introduce invalid_phys_cpuid() to identify cpu with invalid >> physical ID, then used it as replacement of the direct comparisons >> with PHYS_CPUID_INVALID. >> >> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> >> --- >> drivers/acpi/acpi_processor.c | 4 ++-- >> drivers/acpi/processor_core.c | 4 ++-- >> include/linux/acpi.h | 5 +++++ >> 3 files changed, 9 insertions(+), 4 deletions(-) >> >> diff --git a/drivers/acpi/acpi_processor.c >> b/drivers/acpi/acpi_processor.c >> index 62c846b..92a5f73 100644 >> --- a/drivers/acpi/acpi_processor.c > > [...] > >> diff --git a/include/linux/acpi.h b/include/linux/acpi.h >> index 913b49f..cc82ff3 100644 >> --- a/include/linux/acpi.h >> +++ b/include/linux/acpi.h >> @@ -163,6 +163,11 @@ static inline bool invalid_logical_cpuid(u32 cpuid) >> return (int)cpuid < 0; >> } >> >> +static inline bool invalid_phys_cpuid(phys_cpuid_t phys_id) >> +{ >> + return (int)phys_id < 0; > > Should this be phys_id == PHYS_CPUID_INVALID ? else I don't see why we > need to even define PHYS_CPUID_INVALID Oh, we need PHYS_CPUID_INVALID because we defined +#ifndef PHYS_CPUID_INVALID +typedef u32 phys_cpuid_t; +#define PHYS_CPUID_INVALID (phys_cpuid_t)(-1) +#endif in the common head file linux/acpi.h, as it is needed for phys_cpuid_t for ARM64. this is already discussed here: https://lkml.org/lkml/2015/3/30/311 Thanks Hanjun -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 2015年05月12日 00:35, Lorenzo Pieralisi wrote: > On Tue, May 05, 2015 at 02:14:01PM +0100, Hanjun Guo wrote: >> On 2015???05???05??? 19:25, Sudeep Holla wrote: >>> >>> >>> On 05/05/15 03:46, Hanjun Guo wrote: >>>> Introduce invalid_phys_cpuid() to identify cpu with invalid >>>> physical ID, then used it as replacement of the direct comparisons >>>> with PHYS_CPUID_INVALID. >>>> >>>> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> >>>> --- >>>> drivers/acpi/acpi_processor.c | 4 ++-- >>>> drivers/acpi/processor_core.c | 4 ++-- >>>> include/linux/acpi.h | 5 +++++ >>>> 3 files changed, 9 insertions(+), 4 deletions(-) >>>> >>>> diff --git a/drivers/acpi/acpi_processor.c >>>> b/drivers/acpi/acpi_processor.c >>>> index 62c846b..92a5f73 100644 >>>> --- a/drivers/acpi/acpi_processor.c >>> >>> [...] >>> >>>> diff --git a/include/linux/acpi.h b/include/linux/acpi.h >>>> index 913b49f..cc82ff3 100644 >>>> --- a/include/linux/acpi.h >>>> +++ b/include/linux/acpi.h >>>> @@ -163,6 +163,11 @@ static inline bool invalid_logical_cpuid(u32 cpuid) >>>> return (int)cpuid < 0; >>>> } >>>> >>>> +static inline bool invalid_phys_cpuid(phys_cpuid_t phys_id) >>>> +{ >>>> + return (int)phys_id < 0; >>> >>> Should this be phys_id == PHYS_CPUID_INVALID ? else I don't see why we >>> need to even define PHYS_CPUID_INVALID >> >> I'm OK with this. For now, CPU phys_id will be valid value or >> PHYS_CPUID_INVALID in all cases for ACPI processor driver, but >> I want ask Rafael's opinion on this, is it OK to you too, Rafael? > > Is your worry related to functions returning error values > other than PHYS_CPUID_INVALID (when they are expected to return a > physical id) ? Yes. > Is there any in the current kernel ? No such returns as far as I know. > > static inline bool invalid_phys_cpuid(phys_cpuid_t phys_id) > { > return phys_id == PHYS_CPUID_INVALID; > } > > This should do, and if we need more mapping functions that are supposed > to return physical ids they should return PHYS_CPUID_INVALID on failure. OK, I will send a update version for this patch only. Thanks Hanjun -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processor.c index 62c846b..92a5f73 100644 --- a/drivers/acpi/acpi_processor.c +++ b/drivers/acpi/acpi_processor.c @@ -170,7 +170,7 @@ static int acpi_processor_hotadd_init(struct acpi_processor *pr) acpi_status status; int ret; - if (pr->phys_id == PHYS_CPUID_INVALID) + if (invalid_phys_cpuid(pr->phys_id)) return -ENODEV; status = acpi_evaluate_integer(pr->handle, "_STA", NULL, &sta); @@ -264,7 +264,7 @@ static int acpi_processor_get_info(struct acpi_device *device) pr->phys_id = acpi_get_phys_id(pr->handle, device_declaration, pr->acpi_id); - if (pr->phys_id == PHYS_CPUID_INVALID) + if (invalid_phys_cpuid(pr->phys_id)) acpi_handle_debug(pr->handle, "failed to get CPU physical ID.\n"); pr->id = acpi_map_cpuid(pr->phys_id, pr->acpi_id); diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c index fd4140d..33a38d6 100644 --- a/drivers/acpi/processor_core.c +++ b/drivers/acpi/processor_core.c @@ -184,7 +184,7 @@ phys_cpuid_t acpi_get_phys_id(acpi_handle handle, int type, u32 acpi_id) phys_cpuid_t phys_id; phys_id = map_mat_entry(handle, type, acpi_id); - if (phys_id == PHYS_CPUID_INVALID) + if (invalid_phys_cpuid(phys_id)) phys_id = map_madt_entry(type, acpi_id); return phys_id; @@ -196,7 +196,7 @@ int acpi_map_cpuid(phys_cpuid_t phys_id, u32 acpi_id) int i; #endif - if (phys_id == PHYS_CPUID_INVALID) { + if (invalid_phys_cpuid(phys_id)) { /* * On UP processor, there is no _MAT or MADT table. * So above phys_id is always set to PHYS_CPUID_INVALID. diff --git a/include/linux/acpi.h b/include/linux/acpi.h index 913b49f..cc82ff3 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h @@ -163,6 +163,11 @@ static inline bool invalid_logical_cpuid(u32 cpuid) return (int)cpuid < 0; } +static inline bool invalid_phys_cpuid(phys_cpuid_t phys_id) +{ + return (int)phys_id < 0; +} + #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);
Introduce invalid_phys_cpuid() to identify cpu with invalid physical ID, then used it as replacement of the direct comparisons with PHYS_CPUID_INVALID. Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> --- drivers/acpi/acpi_processor.c | 4 ++-- drivers/acpi/processor_core.c | 4 ++-- include/linux/acpi.h | 5 +++++ 3 files changed, 9 insertions(+), 4 deletions(-)