cpu_index = convert_acpiid_to_cpu(pr->acpi_id); 
retval = convert_acpiid_to_cpu(pr->acpi_id, &cpu_index); 
static int acpi_processor_get_info(struct acpi_processor *pr){	acpi_status status = 0;	union acpi_object object = { 0 };	struct acpi_buffer buffer = { sizeof(union acpi_object), &object };	u8 cpu_index;	static int cpu0_initialized;	ACPI_FUNCTION_TRACE("acpi_processor_get_info");	if (!pr)		return_VALUE(-EINVAL);	if (num_online_cpus() > 1)		errata.smp = TRUE;	acpi_processor_errata(pr);	/*	 * Check to see if we have bus mastering arbitration control.  This	 * is required for proper C3 usage (to maintain cache coherency).	 */	if (acpi_fadt.V1_pm2_cnt_blk && acpi_fadt.pm2_cnt_len) {		pr->flags.bm_control = 1;		ACPI_DEBUG_PRINT((ACPI_DB_INFO,				  "Bus mastering arbitration control present\n"));	} else		ACPI_DEBUG_PRINT((ACPI_DB_INFO,				  "No bus mastering arbitration control\n"));	/*	 * Evalute the processor object.  Note that it is common on SMP to	 * have the first (boot) processor with a valid PBLK address while	 * all others have a NULL address.	 */	status = acpi_evaluate_object(pr->handle, NULL, NULL, &buffer);	if (ACPI_FAILURE(status)) {		ACPI_DEBUG_PRINT((ACPI_DB_ERROR,				  "Error evaluating processor object\n"));		return_VALUE(-ENODEV);	}	/*	 * TBD: Synch processor ID (via LAPIC/LSAPIC structures) on SMP.	 *      >>> 'acpi_get_processor_id(acpi_id, &id)' in arch/xxx/acpi.c	 */	pr->acpi_id = object.processor.proc_id;	cpu_index = convert_acpiid_to_cpu(pr->acpi_id);	/* Handle UP system running SMP kernel, with no LAPIC in MADT */	if (!cpu0_initialized && (cpu_index == 0xff) &&	    (num_online_cpus() == 1)) {		cpu_index = 0;	}	cpu0_initialized = 1;	pr->id = cpu_index;	/*	 *  Extra Processor objects may be enumerated on MP systems with	 *  less than the max # of CPUs. They should be ignored _iff	 *  they are physically not present.	 */	if (cpu_index >= NR_CPUS) {		if (ACPI_FAILURE		    (acpi_processor_hotadd_init(pr->handle, &pr->id))) {			ACPI_DEBUG_PRINT((ACPI_DB_ERROR,					  "Error getting cpuindex for acpiid 0x%x\n",					  pr->acpi_id));			return_VALUE(-ENODEV);		}	}	ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Processor [%d:%d]\n", pr->id,			  pr->acpi_id));	if (!object.processor.pblk_address)		ACPI_DEBUG_PRINT((ACPI_DB_INFO, "No PBLK (NULL address)\n"));	else if (object.processor.pblk_length != 6)		ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Invalid PBLK length [%d]\n",				  object.processor.pblk_length));	else {		pr->throttling.address = object.processor.pblk_address;		pr->throttling.duty_offset = acpi_fadt.duty_offset;		pr->throttling.duty_width = acpi_fadt.duty_width;		pr->pblk = object.processor.pblk_address;		/*		 * We don't care about error returns - we just try to mark		 * these reserved so that nobody else is confused into thinking		 * that this region might be unused..		 *		 * (In particular, allocating the IO range for Cardbus)		 */		request_region(pr->throttling.address, 6, "ACPI CPU throttle");	}#ifdef CONFIG_CPU_FREQ	acpi_processor_ppc_has_changed(pr);#endif	acpi_processor_get_throttling_info(pr);	acpi_processor_get_limit_info(pr);	return_VALUE(0);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/9a31477a95d642dd42a1be7cc342f5902b56f584/processor_core.c/clean/drivers/acpi/processor_core.c