Lines Matching refs:pr
205 static int acpi_processor_hotadd_init(struct acpi_processor *pr)
211 if (invalid_phys_cpuid(pr->phys_id))
214 status = acpi_evaluate_integer(pr->handle, "_STA", NULL, &sta);
221 ret = acpi_map_cpu(pr->handle, pr->phys_id, pr->acpi_id, &pr->id);
225 ret = arch_register_cpu(pr->id);
227 acpi_unmap_cpu(pr->id);
236 pr_info("CPU%d has been hot-added\n", pr->id);
237 pr->flags.need_hotplug_init = 1;
245 static inline int acpi_processor_hotadd_init(struct acpi_processor *pr)
255 struct acpi_processor *pr = acpi_driver_data(device);
268 pr->flags.bm_control = 1;
275 status = acpi_evaluate_object(pr->handle, NULL, NULL, &buffer);
283 pr->acpi_id = object.processor.proc_id;
288 status = acpi_evaluate_integer(pr->handle, METHOD_NAME__UID,
297 pr->acpi_id = value;
300 if (acpi_duplicate_processor_id(pr->acpi_id)) {
301 if (pr->acpi_id == 0xff)
307 pr->acpi_id);
311 pr->phys_id = acpi_get_phys_id(pr->handle, device_declaration,
312 pr->acpi_id);
313 if (invalid_phys_cpuid(pr->phys_id))
316 pr->id = acpi_map_cpuid(pr->phys_id, pr->acpi_id);
323 if (!acpi_has_cpu_in_madt() && invalid_logical_cpuid(pr->id) &&
325 pr->id = 0;
331 if (acpi_has_method(pr->handle, "_PCT"))
343 if (invalid_logical_cpuid(pr->id) || !cpu_present(pr->id)) {
344 int ret = acpi_processor_hotadd_init(pr);
359 sprintf(acpi_device_bid(device), "CPU%X", pr->id);
360 dev_dbg(&device->dev, "Processor [%d:%d]\n", pr->id, pr->acpi_id);
368 pr->throttling.address = object.processor.pblk_address;
369 pr->throttling.duty_offset = acpi_gbl_FADT.duty_offset;
370 pr->throttling.duty_width = acpi_gbl_FADT.duty_width;
372 pr->pblk = object.processor.pblk_address;
380 status = acpi_evaluate_integer(pr->handle, "_SUN", NULL, &value);
382 arch_fix_phys_package_id(pr->id, value);
398 struct acpi_processor *pr;
402 pr = kzalloc(sizeof(struct acpi_processor), GFP_KERNEL);
403 if (!pr)
406 if (!zalloc_cpumask_var(&pr->throttling.shared_cpu_map, GFP_KERNEL)) {
411 pr->handle = device->handle;
414 device->driver_data = pr;
420 BUG_ON(pr->id >= nr_cpu_ids);
427 if (per_cpu(processor_device_array, pr->id) != NULL &&
428 per_cpu(processor_device_array, pr->id) != device) {
431 pr->id);
439 per_cpu(processor_device_array, pr->id) = device;
440 per_cpu(processors, pr->id) = pr;
442 dev = get_cpu_device(pr->id);
452 pr->dev = dev;
462 free_cpumask_var(pr->throttling.shared_cpu_map);
464 per_cpu(processors, pr->id) = NULL;
466 kfree(pr);
474 struct acpi_processor *pr;
479 pr = acpi_driver_data(device);
480 if (pr->id >= nr_cpu_ids)
491 device_release_driver(pr->dev);
492 acpi_unbind_one(pr->dev);
495 per_cpu(processor_device_array, pr->id) = NULL;
496 per_cpu(processors, pr->id) = NULL;
502 arch_unregister_cpu(pr->id);
503 acpi_unmap_cpu(pr->id);
508 try_offline_node(cpu_to_node(pr->id));
511 free_cpumask_var(pr->throttling.shared_cpu_map);
512 kfree(pr);