WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] [PATCH] pm: don't truncate processors' ACPI IDs to 8 bit

>>> On 24.08.11 at 22:00, Steven <wangwangkang@xxxxxxxxx> wrote:
> Why do you use "u32"? Is it because u32 can support more CPU id than u8?

Yes, of course. ACPI specifies them to be 32 bits wide.

Jan

> On Fri, Aug 19, 2011 at 11:04 AM, Jan Beulich <JBeulich@xxxxxxxxxx> wrote:
>> This is just another adjustment to allow systems with very many CPUs
>> (or unusual ACPI IDs) to be properly power-managed.
>>
>> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>
>>
>> --- a/xen/arch/ia64/linux-xen/acpi.c
>> +++ b/xen/arch/ia64/linux-xen/acpi.c
>> @@ -221,11 +221,14 @@ static u16 ia64_acpiid_to_sapicid[ MAX_L
>>                {[0 ... MAX_LOCAL_SAPIC - 1] = 0xffff };
>>
>>  /* acpi id to cpu id */
>> -int get_cpu_id(u8 acpi_id)
>> +int get_cpu_id(u32 acpi_id)
>>  {
>>        int i;
>>        u16 apic_id;
>>
>> +       if ( acpi_id >= MAX_LOCAL_SAPIC )
>> +               return -EINVAL;
>> +
>>        apic_id = ia64_acpiid_to_sapicid[acpi_id];
>>        if ( apic_id == 0xffff )
>>                return -EINVAL;
>> --- a/xen/arch/x86/acpi/cpu_idle.c
>> +++ b/xen/arch/x86/acpi/cpu_idle.c
>> @@ -895,11 +895,14 @@ static void set_cx(
>>         acpi_power->safe_state = cx;
>>  }
>>
>> -int get_cpu_id(u8 acpi_id)
>> +int get_cpu_id(u32 acpi_id)
>>  {
>>     int i;
>>     u32 apic_id;
>>
>> +    if ( acpi_id >= MAX_MADT_ENTRIES )
>> +        return -1;
>> +
>>     apic_id = x86_acpiid_to_apicid[acpi_id];
>>     if ( apic_id == BAD_APICID )
>>         return -1;
>> @@ -976,7 +979,7 @@ long set_cx_pminfo(uint32_t cpu, struct
>>     print_cx_pminfo(cpu, power);
>>
>>     /* map from acpi_id to cpu_id */
>> -    cpu_id = get_cpu_id((u8)cpu);
>> +    cpu_id = get_cpu_id(cpu);
>>     if ( cpu_id == -1 )
>>     {
>>         printk(XENLOG_ERR "no cpu_id for acpi_id %d\n", cpu);
>> --- a/xen/include/acpi/cpufreq/processor_perf.h
>> +++ b/xen/include/acpi/cpufreq/processor_perf.h
>> @@ -6,7 +6,7 @@
>>
>>  #define XEN_PX_INIT 0x80000000
>>
>> -int get_cpu_id(u8);
>> +int get_cpu_id(u32);
>>  int powernow_cpufreq_init(void);
>>  unsigned int powernow_register_driver(void);
>>  unsigned int get_measured_perf(unsigned int cpu, unsigned int flag);
>>
>>
>>
>>
>> _______________________________________________
>> Xen-devel mailing list
>> Xen-devel@xxxxxxxxxxxxxxxxxxx 
>> http://lists.xensource.com/xen-devel 
>>
>>




_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel