Loading arch/x86/kernel/acpi/boot.c +22 −7 Original line number Diff line number Diff line Loading @@ -538,9 +538,10 @@ static int __cpuinit _acpi_map_lsapic(acpi_handle handle, int *pcpu) struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; union acpi_object *obj; struct acpi_madt_local_apic *lapic; cpumask_t tmp_map, new_map; cpumask_var_t tmp_map, new_map; u8 physid; int cpu; int retval = -ENOMEM; if (ACPI_FAILURE(acpi_evaluate_object(handle, "_MAT", NULL, &buffer))) return -EINVAL; Loading Loading @@ -569,23 +570,37 @@ static int __cpuinit _acpi_map_lsapic(acpi_handle handle, int *pcpu) buffer.length = ACPI_ALLOCATE_BUFFER; buffer.pointer = NULL; tmp_map = cpu_present_map; if (!alloc_cpumask_var(&tmp_map, GFP_KERNEL)) goto out; if (!alloc_cpumask_var(&new_map, GFP_KERNEL)) goto free_tmp_map; cpumask_copy(tmp_map, cpu_present_mask); acpi_register_lapic(physid, lapic->lapic_flags & ACPI_MADT_ENABLED); /* * If mp_register_lapic successfully generates a new logical cpu * number, then the following will get us exactly what was mapped */ cpus_andnot(new_map, cpu_present_map, tmp_map); if (cpus_empty(new_map)) { cpumask_andnot(new_map, cpu_present_mask, tmp_map); if (cpumask_empty(new_map)) { printk ("Unable to map lapic to logical cpu number\n"); return -EINVAL; retval = -EINVAL; goto free_new_map; } cpu = first_cpu(new_map); cpu = cpumask_first(new_map); *pcpu = cpu; return 0; retval = 0; free_new_map: free_cpumask_var(new_map); free_tmp_map: free_cpumask_var(tmp_map); out: return retval; } /* wrapper to silence section mismatch warning */ Loading Loading
arch/x86/kernel/acpi/boot.c +22 −7 Original line number Diff line number Diff line Loading @@ -538,9 +538,10 @@ static int __cpuinit _acpi_map_lsapic(acpi_handle handle, int *pcpu) struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; union acpi_object *obj; struct acpi_madt_local_apic *lapic; cpumask_t tmp_map, new_map; cpumask_var_t tmp_map, new_map; u8 physid; int cpu; int retval = -ENOMEM; if (ACPI_FAILURE(acpi_evaluate_object(handle, "_MAT", NULL, &buffer))) return -EINVAL; Loading Loading @@ -569,23 +570,37 @@ static int __cpuinit _acpi_map_lsapic(acpi_handle handle, int *pcpu) buffer.length = ACPI_ALLOCATE_BUFFER; buffer.pointer = NULL; tmp_map = cpu_present_map; if (!alloc_cpumask_var(&tmp_map, GFP_KERNEL)) goto out; if (!alloc_cpumask_var(&new_map, GFP_KERNEL)) goto free_tmp_map; cpumask_copy(tmp_map, cpu_present_mask); acpi_register_lapic(physid, lapic->lapic_flags & ACPI_MADT_ENABLED); /* * If mp_register_lapic successfully generates a new logical cpu * number, then the following will get us exactly what was mapped */ cpus_andnot(new_map, cpu_present_map, tmp_map); if (cpus_empty(new_map)) { cpumask_andnot(new_map, cpu_present_mask, tmp_map); if (cpumask_empty(new_map)) { printk ("Unable to map lapic to logical cpu number\n"); return -EINVAL; retval = -EINVAL; goto free_new_map; } cpu = first_cpu(new_map); cpu = cpumask_first(new_map); *pcpu = cpu; return 0; retval = 0; free_new_map: free_cpumask_var(new_map); free_tmp_map: free_cpumask_var(tmp_map); out: return retval; } /* wrapper to silence section mismatch warning */ Loading