mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	ACPI: processor: Get rid of ACPICA message printing
The ACPI_DEBUG_PRINT() and ACPI_EXCEPTION() macros are used for message printing in the ACPICA code and they should not be used elsewhere. Special configuration (either kernel command line or sysfs-based) is needed to see the messages printed by them and the format of those messages is also special and convoluted. For this reason, replace all of the ACPI_DEBUG_PRINT() and ACPI_EXCEPTION() instances in the ACPI processor driver with corresponding dev_*(), acpi_handle_*() and pr_*() calls depending on the context in which they appear. Also drop the ACPI_PROCESSOR_COMPONENT definition that is not going to be necessary any more. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Reviewed-by: Hanjun Guo <guohanjun@huawei.com>
This commit is contained in:
		
							parent
							
								
									54e0519207
								
							
						
					
					
						commit
						52af99c3f5
					
				
					 9 changed files with 108 additions and 126 deletions
				
			
		| 
						 | 
					@ -58,7 +58,6 @@ shows the supported mask values, currently these::
 | 
				
			||||||
    ACPI_CONTAINER_COMPONENT        0x01000000
 | 
					    ACPI_CONTAINER_COMPONENT        0x01000000
 | 
				
			||||||
    ACPI_SYSTEM_COMPONENT           0x02000000
 | 
					    ACPI_SYSTEM_COMPONENT           0x02000000
 | 
				
			||||||
    ACPI_MEMORY_DEVICE_COMPONENT    0x08000000
 | 
					    ACPI_MEMORY_DEVICE_COMPONENT    0x08000000
 | 
				
			||||||
    ACPI_PROCESSOR_COMPONENT        0x20000000
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
debug_level
 | 
					debug_level
 | 
				
			||||||
===========
 | 
					===========
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,10 +22,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "internal.h"
 | 
					#include "internal.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define _COMPONENT	ACPI_PROCESSOR_COMPONENT
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
ACPI_MODULE_NAME("processor");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
DEFINE_PER_CPU(struct acpi_processor *, processors);
 | 
					DEFINE_PER_CPU(struct acpi_processor *, processors);
 | 
				
			||||||
EXPORT_PER_CPU_SYMBOL(processors);
 | 
					EXPORT_PER_CPU_SYMBOL(processors);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -51,19 +47,19 @@ static int acpi_processor_errata_piix4(struct pci_dev *dev)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	switch (dev->revision) {
 | 
						switch (dev->revision) {
 | 
				
			||||||
	case 0:
 | 
						case 0:
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Found PIIX4 A-step\n"));
 | 
							dev_dbg(&dev->dev, "Found PIIX4 A-step\n");
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case 1:
 | 
						case 1:
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Found PIIX4 B-step\n"));
 | 
							dev_dbg(&dev->dev, "Found PIIX4 B-step\n");
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case 2:
 | 
						case 2:
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Found PIIX4E\n"));
 | 
							dev_dbg(&dev->dev, "Found PIIX4E\n");
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case 3:
 | 
						case 3:
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Found PIIX4M\n"));
 | 
							dev_dbg(&dev->dev, "Found PIIX4M\n");
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Found unknown PIIX4\n"));
 | 
							dev_dbg(&dev->dev, "Found unknown PIIX4\n");
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -129,11 +125,9 @@ static int acpi_processor_errata_piix4(struct pci_dev *dev)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (errata.piix4.bmisx)
 | 
						if (errata.piix4.bmisx)
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 | 
							dev_dbg(&dev->dev, "Bus master activity detection (BM-IDE) erratum enabled\n");
 | 
				
			||||||
				  "Bus master activity detection (BM-IDE) erratum enabled\n"));
 | 
					 | 
				
			||||||
	if (errata.piix4.fdma)
 | 
						if (errata.piix4.fdma)
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 | 
							dev_dbg(&dev->dev, "Type-F DMA livelock erratum (C3 disabled)\n");
 | 
				
			||||||
				  "Type-F DMA livelock erratum (C3 disabled)\n"));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -244,11 +238,9 @@ static int acpi_processor_get_info(struct acpi_device *device)
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	if (acpi_gbl_FADT.pm2_control_block && acpi_gbl_FADT.pm2_control_length) {
 | 
						if (acpi_gbl_FADT.pm2_control_block && acpi_gbl_FADT.pm2_control_length) {
 | 
				
			||||||
		pr->flags.bm_control = 1;
 | 
							pr->flags.bm_control = 1;
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 | 
							dev_dbg(&device->dev, "Bus mastering arbitration control present\n");
 | 
				
			||||||
				  "Bus mastering arbitration control present\n"));
 | 
					 | 
				
			||||||
	} else
 | 
						} else
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 | 
							dev_dbg(&device->dev, "No bus mastering arbitration control\n");
 | 
				
			||||||
				  "No bus mastering arbitration control\n"));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!strcmp(acpi_device_hid(device), ACPI_PROCESSOR_OBJECT_HID)) {
 | 
						if (!strcmp(acpi_device_hid(device), ACPI_PROCESSOR_OBJECT_HID)) {
 | 
				
			||||||
		/* Declared with "Processor" statement; match ProcessorID */
 | 
							/* Declared with "Processor" statement; match ProcessorID */
 | 
				
			||||||
| 
						 | 
					@ -291,7 +283,7 @@ static int acpi_processor_get_info(struct acpi_device *device)
 | 
				
			||||||
	pr->phys_id = acpi_get_phys_id(pr->handle, device_declaration,
 | 
						pr->phys_id = acpi_get_phys_id(pr->handle, device_declaration,
 | 
				
			||||||
					pr->acpi_id);
 | 
										pr->acpi_id);
 | 
				
			||||||
	if (invalid_phys_cpuid(pr->phys_id))
 | 
						if (invalid_phys_cpuid(pr->phys_id))
 | 
				
			||||||
		acpi_handle_debug(pr->handle, "failed to get CPU physical ID.\n");
 | 
							dev_dbg(&device->dev, "Failed to get CPU physical ID.\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pr->id = acpi_map_cpuid(pr->phys_id, pr->acpi_id);
 | 
						pr->id = acpi_map_cpuid(pr->phys_id, pr->acpi_id);
 | 
				
			||||||
	if (!cpu0_initialized && !acpi_has_cpu_in_madt()) {
 | 
						if (!cpu0_initialized && !acpi_has_cpu_in_madt()) {
 | 
				
			||||||
| 
						 | 
					@ -328,11 +320,10 @@ static int acpi_processor_get_info(struct acpi_device *device)
 | 
				
			||||||
	 * CPU+CPU ID.
 | 
						 * CPU+CPU ID.
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	sprintf(acpi_device_bid(device), "CPU%X", pr->id);
 | 
						sprintf(acpi_device_bid(device), "CPU%X", pr->id);
 | 
				
			||||||
	ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Processor [%d:%d]\n", pr->id,
 | 
						dev_dbg(&device->dev, "Processor [%d:%d]\n", pr->id, pr->acpi_id);
 | 
				
			||||||
			  pr->acpi_id));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!object.processor.pblk_address)
 | 
						if (!object.processor.pblk_address)
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO, "No PBLK (NULL address)\n"));
 | 
							dev_dbg(&device->dev, "No PBLK (NULL address)\n");
 | 
				
			||||||
	else if (object.processor.pblk_length != 6)
 | 
						else if (object.processor.pblk_length != 6)
 | 
				
			||||||
		dev_err(&device->dev, "Invalid PBLK length [%d]\n",
 | 
							dev_err(&device->dev, "Invalid PBLK length [%d]\n",
 | 
				
			||||||
			    object.processor.pblk_length);
 | 
								    object.processor.pblk_length);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,9 +28,6 @@
 | 
				
			||||||
#define ACPI_PROCESSOR_NOTIFY_POWER	0x81
 | 
					#define ACPI_PROCESSOR_NOTIFY_POWER	0x81
 | 
				
			||||||
#define ACPI_PROCESSOR_NOTIFY_THROTTLING	0x82
 | 
					#define ACPI_PROCESSOR_NOTIFY_THROTTLING	0x82
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define _COMPONENT		ACPI_PROCESSOR_COMPONENT
 | 
					 | 
				
			||||||
ACPI_MODULE_NAME("processor_driver");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
MODULE_AUTHOR("Paul Diefenbaugh");
 | 
					MODULE_AUTHOR("Paul Diefenbaugh");
 | 
				
			||||||
MODULE_DESCRIPTION("ACPI Processor Driver");
 | 
					MODULE_DESCRIPTION("ACPI Processor Driver");
 | 
				
			||||||
MODULE_LICENSE("GPL");
 | 
					MODULE_LICENSE("GPL");
 | 
				
			||||||
| 
						 | 
					@ -87,8 +84,7 @@ static void acpi_processor_notify(acpi_handle handle, u32 event, void *data)
 | 
				
			||||||
						  dev_name(&device->dev), event, 0);
 | 
											  dev_name(&device->dev), event, 0);
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 | 
							acpi_handle_debug(handle, "Unsupported event [0x%x]\n", event);
 | 
				
			||||||
				  "Unsupported event [0x%x]\n", event));
 | 
					 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,9 +31,6 @@
 | 
				
			||||||
#include <asm/apic.h>
 | 
					#include <asm/apic.h>
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define _COMPONENT              ACPI_PROCESSOR_COMPONENT
 | 
					 | 
				
			||||||
ACPI_MODULE_NAME("processor_idle");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define ACPI_IDLE_STATE_START	(IS_ENABLED(CONFIG_ARCH_HAS_CPU_RELAX) ? 1 : 0)
 | 
					#define ACPI_IDLE_STATE_START	(IS_ENABLED(CONFIG_ARCH_HAS_CPU_RELAX) ? 1 : 0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static unsigned int max_cstate __read_mostly = ACPI_PROCESSOR_MAX_POWER;
 | 
					static unsigned int max_cstate __read_mostly = ACPI_PROCESSOR_MAX_POWER;
 | 
				
			||||||
| 
						 | 
					@ -239,8 +236,8 @@ static int acpi_processor_get_power_info_fadt(struct acpi_processor *pr)
 | 
				
			||||||
	 * 100 microseconds.
 | 
						 * 100 microseconds.
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	if (acpi_gbl_FADT.c2_latency > ACPI_PROCESSOR_MAX_C2_LATENCY) {
 | 
						if (acpi_gbl_FADT.c2_latency > ACPI_PROCESSOR_MAX_C2_LATENCY) {
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 | 
							acpi_handle_debug(pr->handle, "C2 latency too large [%d]\n",
 | 
				
			||||||
			"C2 latency too large [%d]\n", acpi_gbl_FADT.c2_latency));
 | 
									  acpi_gbl_FADT.c2_latency);
 | 
				
			||||||
		/* invalidate C2 */
 | 
							/* invalidate C2 */
 | 
				
			||||||
		pr->power.states[ACPI_STATE_C2].address = 0;
 | 
							pr->power.states[ACPI_STATE_C2].address = 0;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -250,16 +247,15 @@ static int acpi_processor_get_power_info_fadt(struct acpi_processor *pr)
 | 
				
			||||||
	 * 1000 microseconds.
 | 
						 * 1000 microseconds.
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	if (acpi_gbl_FADT.c3_latency > ACPI_PROCESSOR_MAX_C3_LATENCY) {
 | 
						if (acpi_gbl_FADT.c3_latency > ACPI_PROCESSOR_MAX_C3_LATENCY) {
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 | 
							acpi_handle_debug(pr->handle, "C3 latency too large [%d]\n",
 | 
				
			||||||
			"C3 latency too large [%d]\n", acpi_gbl_FADT.c3_latency));
 | 
									  acpi_gbl_FADT.c3_latency);
 | 
				
			||||||
		/* invalidate C3 */
 | 
							/* invalidate C3 */
 | 
				
			||||||
		pr->power.states[ACPI_STATE_C3].address = 0;
 | 
							pr->power.states[ACPI_STATE_C3].address = 0;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 | 
						acpi_handle_debug(pr->handle, "lvl2[0x%08x] lvl3[0x%08x]\n",
 | 
				
			||||||
			  "lvl2[0x%08x] lvl3[0x%08x]\n",
 | 
					 | 
				
			||||||
			  pr->power.states[ACPI_STATE_C2].address,
 | 
								  pr->power.states[ACPI_STATE_C2].address,
 | 
				
			||||||
			  pr->power.states[ACPI_STATE_C3].address));
 | 
								  pr->power.states[ACPI_STATE_C3].address);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	snprintf(pr->power.states[ACPI_STATE_C2].desc,
 | 
						snprintf(pr->power.states[ACPI_STATE_C2].desc,
 | 
				
			||||||
			 ACPI_CX_DESC_LEN, "ACPI P_LVL2 IOPORT 0x%x",
 | 
								 ACPI_CX_DESC_LEN, "ACPI P_LVL2 IOPORT 0x%x",
 | 
				
			||||||
| 
						 | 
					@ -324,8 +320,8 @@ static void acpi_processor_power_verify_c3(struct acpi_processor *pr,
 | 
				
			||||||
	 * devices thus we take the conservative approach.
 | 
						 * devices thus we take the conservative approach.
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	else if (errata.piix4.fdma) {
 | 
						else if (errata.piix4.fdma) {
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 | 
							acpi_handle_debug(pr->handle,
 | 
				
			||||||
				  "C3 not supported on PIIX4 with Type-F DMA\n"));
 | 
									  "C3 not supported on PIIX4 with Type-F DMA\n");
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -344,13 +340,13 @@ static void acpi_processor_power_verify_c3(struct acpi_processor *pr,
 | 
				
			||||||
		if (!pr->flags.bm_control) {
 | 
							if (!pr->flags.bm_control) {
 | 
				
			||||||
			if (pr->flags.has_cst != 1) {
 | 
								if (pr->flags.has_cst != 1) {
 | 
				
			||||||
				/* bus mastering control is necessary */
 | 
									/* bus mastering control is necessary */
 | 
				
			||||||
				ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 | 
									acpi_handle_debug(pr->handle,
 | 
				
			||||||
					"C3 support requires BM control\n"));
 | 
											  "C3 support requires BM control\n");
 | 
				
			||||||
				return;
 | 
									return;
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				/* Here we enter C3 without bus mastering */
 | 
									/* Here we enter C3 without bus mastering */
 | 
				
			||||||
				ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 | 
									acpi_handle_debug(pr->handle,
 | 
				
			||||||
					"C3 support without BM control\n"));
 | 
											  "C3 support without BM control\n");
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
| 
						 | 
					@ -359,9 +355,9 @@ static void acpi_processor_power_verify_c3(struct acpi_processor *pr,
 | 
				
			||||||
		 * supported on when bm_check is not required.
 | 
							 * supported on when bm_check is not required.
 | 
				
			||||||
		 */
 | 
							 */
 | 
				
			||||||
		if (!(acpi_gbl_FADT.flags & ACPI_FADT_WBINVD)) {
 | 
							if (!(acpi_gbl_FADT.flags & ACPI_FADT_WBINVD)) {
 | 
				
			||||||
			ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 | 
								acpi_handle_debug(pr->handle,
 | 
				
			||||||
					  "Cache invalidation should work properly"
 | 
										  "Cache invalidation should work properly"
 | 
				
			||||||
					  " for C3 to be enabled on SMP systems\n"));
 | 
										  " for C3 to be enabled on SMP systems\n");
 | 
				
			||||||
			return;
 | 
								return;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -843,7 +839,7 @@ static int acpi_processor_evaluate_lpi(acpi_handle handle,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	status = acpi_evaluate_object(handle, "_LPI", NULL, &buffer);
 | 
						status = acpi_evaluate_object(handle, "_LPI", NULL, &buffer);
 | 
				
			||||||
	if (ACPI_FAILURE(status)) {
 | 
						if (ACPI_FAILURE(status)) {
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO, "No _LPI, giving up\n"));
 | 
							acpi_handle_debug(handle, "No _LPI, giving up\n");
 | 
				
			||||||
		return -ENODEV;
 | 
							return -ENODEV;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,9 +16,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "internal.h"
 | 
					#include "internal.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define _COMPONENT              ACPI_PROCESSOR_COMPONENT
 | 
					 | 
				
			||||||
ACPI_MODULE_NAME("processor_pdc");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static bool __init processor_physically_present(acpi_handle handle)
 | 
					static bool __init processor_physically_present(acpi_handle handle)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	int cpuid, type;
 | 
						int cpuid, type;
 | 
				
			||||||
| 
						 | 
					@ -132,8 +129,8 @@ acpi_processor_eval_pdc(acpi_handle handle, struct acpi_object_list *pdc_in)
 | 
				
			||||||
	status = acpi_evaluate_object(handle, "_PDC", pdc_in, NULL);
 | 
						status = acpi_evaluate_object(handle, "_PDC", pdc_in, NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (ACPI_FAILURE(status))
 | 
						if (ACPI_FAILURE(status))
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 | 
							acpi_handle_debug(handle,
 | 
				
			||||||
		    "Could not evaluate _PDC, using legacy perf. control.\n"));
 | 
							    "Could not evaluate _PDC, using legacy perf control\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return status;
 | 
						return status;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,8 +23,6 @@
 | 
				
			||||||
#define PREFIX "ACPI: "
 | 
					#define PREFIX "ACPI: "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define ACPI_PROCESSOR_FILE_PERFORMANCE	"performance"
 | 
					#define ACPI_PROCESSOR_FILE_PERFORMANCE	"performance"
 | 
				
			||||||
#define _COMPONENT		ACPI_PROCESSOR_COMPONENT
 | 
					 | 
				
			||||||
ACPI_MODULE_NAME("processor_perflib");
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
static DEFINE_MUTEX(performance_mutex);
 | 
					static DEFINE_MUTEX(performance_mutex);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -70,7 +68,8 @@ static int acpi_processor_get_platform_limit(struct acpi_processor *pr)
 | 
				
			||||||
		acpi_processor_ppc_in_use = true;
 | 
							acpi_processor_ppc_in_use = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) {
 | 
						if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) {
 | 
				
			||||||
		ACPI_EXCEPTION((AE_INFO, status, "Evaluating _PPC"));
 | 
							acpi_handle_warn(pr->handle, "_PPC evaluation failed: %s\n",
 | 
				
			||||||
 | 
									 acpi_format_exception(status));
 | 
				
			||||||
		return -ENODEV;
 | 
							return -ENODEV;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -199,7 +198,8 @@ static int acpi_processor_get_performance_control(struct acpi_processor *pr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	status = acpi_evaluate_object(pr->handle, "_PCT", NULL, &buffer);
 | 
						status = acpi_evaluate_object(pr->handle, "_PCT", NULL, &buffer);
 | 
				
			||||||
	if (ACPI_FAILURE(status)) {
 | 
						if (ACPI_FAILURE(status)) {
 | 
				
			||||||
		ACPI_EXCEPTION((AE_INFO, status, "Evaluating _PCT"));
 | 
							acpi_handle_warn(pr->handle, "_PCT evaluation failed: %s\n",
 | 
				
			||||||
 | 
									 acpi_format_exception(status));
 | 
				
			||||||
		return -ENODEV;
 | 
							return -ENODEV;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -299,7 +299,8 @@ static int acpi_processor_get_performance_states(struct acpi_processor *pr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	status = acpi_evaluate_object(pr->handle, "_PSS", NULL, &buffer);
 | 
						status = acpi_evaluate_object(pr->handle, "_PSS", NULL, &buffer);
 | 
				
			||||||
	if (ACPI_FAILURE(status)) {
 | 
						if (ACPI_FAILURE(status)) {
 | 
				
			||||||
		ACPI_EXCEPTION((AE_INFO, status, "Evaluating _PSS"));
 | 
							acpi_handle_warn(pr->handle, "_PSS evaluation failed: %s\n",
 | 
				
			||||||
 | 
									 acpi_format_exception(status));
 | 
				
			||||||
		return -ENODEV;
 | 
							return -ENODEV;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -310,8 +311,8 @@ static int acpi_processor_get_performance_states(struct acpi_processor *pr)
 | 
				
			||||||
		goto end;
 | 
							goto end;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Found %d performance states\n",
 | 
						acpi_handle_debug(pr->handle, "Found %d performance states\n",
 | 
				
			||||||
			  pss->package.count));
 | 
								  pss->package.count);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pr->performance->state_count = pss->package.count;
 | 
						pr->performance->state_count = pss->package.count;
 | 
				
			||||||
	pr->performance->states =
 | 
						pr->performance->states =
 | 
				
			||||||
| 
						 | 
					@ -330,12 +331,13 @@ static int acpi_processor_get_performance_states(struct acpi_processor *pr)
 | 
				
			||||||
		state.length = sizeof(struct acpi_processor_px);
 | 
							state.length = sizeof(struct acpi_processor_px);
 | 
				
			||||||
		state.pointer = px;
 | 
							state.pointer = px;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Extracting state %d\n", i));
 | 
							acpi_handle_debug(pr->handle, "Extracting state %d\n", i);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		status = acpi_extract_package(&(pss->package.elements[i]),
 | 
							status = acpi_extract_package(&(pss->package.elements[i]),
 | 
				
			||||||
					      &format, &state);
 | 
										      &format, &state);
 | 
				
			||||||
		if (ACPI_FAILURE(status)) {
 | 
							if (ACPI_FAILURE(status)) {
 | 
				
			||||||
			ACPI_EXCEPTION((AE_INFO, status, "Invalid _PSS data"));
 | 
								acpi_handle_warn(pr->handle, "Invalid _PSS data: %s\n",
 | 
				
			||||||
 | 
										 acpi_format_exception(status));
 | 
				
			||||||
			result = -EFAULT;
 | 
								result = -EFAULT;
 | 
				
			||||||
			kfree(pr->performance->states);
 | 
								kfree(pr->performance->states);
 | 
				
			||||||
			goto end;
 | 
								goto end;
 | 
				
			||||||
| 
						 | 
					@ -343,14 +345,14 @@ static int acpi_processor_get_performance_states(struct acpi_processor *pr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		amd_fixup_frequency(px, i);
 | 
							amd_fixup_frequency(px, i);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 | 
							acpi_handle_debug(pr->handle,
 | 
				
			||||||
				  "State [%d]: core_frequency[%d] power[%d] transition_latency[%d] bus_master_latency[%d] control[0x%x] status[0x%x]\n",
 | 
									  "State [%d]: core_frequency[%d] power[%d] transition_latency[%d] bus_master_latency[%d] control[0x%x] status[0x%x]\n",
 | 
				
			||||||
				  i,
 | 
									  i,
 | 
				
			||||||
				  (u32) px->core_frequency,
 | 
									  (u32) px->core_frequency,
 | 
				
			||||||
				  (u32) px->power,
 | 
									  (u32) px->power,
 | 
				
			||||||
				  (u32) px->transition_latency,
 | 
									  (u32) px->transition_latency,
 | 
				
			||||||
				  (u32) px->bus_master_latency,
 | 
									  (u32) px->bus_master_latency,
 | 
				
			||||||
				  (u32) px->control, (u32) px->status));
 | 
									  (u32) px->control, (u32) px->status);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		/*
 | 
							/*
 | 
				
			||||||
		 * Check that ACPI's u64 MHz will be valid as u32 KHz in cpufreq
 | 
							 * Check that ACPI's u64 MHz will be valid as u32 KHz in cpufreq
 | 
				
			||||||
| 
						 | 
					@ -400,8 +402,8 @@ int acpi_processor_get_performance_info(struct acpi_processor *pr)
 | 
				
			||||||
		return -EINVAL;
 | 
							return -EINVAL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!acpi_has_method(pr->handle, "_PCT")) {
 | 
						if (!acpi_has_method(pr->handle, "_PCT")) {
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 | 
							acpi_handle_debug(pr->handle,
 | 
				
			||||||
				  "ACPI-based processor performance control unavailable\n"));
 | 
									  "ACPI-based processor performance control unavailable\n");
 | 
				
			||||||
		return -ENODEV;
 | 
							return -ENODEV;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -442,18 +444,17 @@ int acpi_processor_pstate_control(void)
 | 
				
			||||||
	if (!acpi_gbl_FADT.smi_command || !acpi_gbl_FADT.pstate_control)
 | 
						if (!acpi_gbl_FADT.smi_command || !acpi_gbl_FADT.pstate_control)
 | 
				
			||||||
		return 0;
 | 
							return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 | 
						pr_debug("Writing pstate_control [0x%x] to smi_command [0x%x]\n",
 | 
				
			||||||
			  "Writing pstate_control [0x%x] to smi_command [0x%x]\n",
 | 
							 acpi_gbl_FADT.pstate_control, acpi_gbl_FADT.smi_command);
 | 
				
			||||||
			  acpi_gbl_FADT.pstate_control, acpi_gbl_FADT.smi_command));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	status = acpi_os_write_port(acpi_gbl_FADT.smi_command,
 | 
						status = acpi_os_write_port(acpi_gbl_FADT.smi_command,
 | 
				
			||||||
				    (u32)acpi_gbl_FADT.pstate_control, 8);
 | 
									    (u32)acpi_gbl_FADT.pstate_control, 8);
 | 
				
			||||||
	if (ACPI_SUCCESS(status))
 | 
						if (ACPI_SUCCESS(status))
 | 
				
			||||||
		return 1;
 | 
							return 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ACPI_EXCEPTION((AE_INFO, status,
 | 
						pr_warn("Failed to write pstate_control [0x%x] to smi_command [0x%x]: %s\n",
 | 
				
			||||||
			"Failed to write pstate_control [0x%x] to smi_command [0x%x]",
 | 
							acpi_gbl_FADT.pstate_control, acpi_gbl_FADT.smi_command,
 | 
				
			||||||
			acpi_gbl_FADT.pstate_control, acpi_gbl_FADT.smi_command));
 | 
							acpi_format_exception(status));
 | 
				
			||||||
	return -EIO;
 | 
						return -EIO;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -485,7 +486,7 @@ int acpi_processor_notify_smm(struct module *calling_module)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	result = acpi_processor_pstate_control();
 | 
						result = acpi_processor_pstate_control();
 | 
				
			||||||
	if (!result) {
 | 
						if (!result) {
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO, "No SMI port or pstate_control\n"));
 | 
							pr_debug("No SMI port or pstate_control\n");
 | 
				
			||||||
		module_put(calling_module);
 | 
							module_put(calling_module);
 | 
				
			||||||
		return 0;
 | 
							return 0;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,9 +22,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define PREFIX "ACPI: "
 | 
					#define PREFIX "ACPI: "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define _COMPONENT              ACPI_PROCESSOR_COMPONENT
 | 
					 | 
				
			||||||
ACPI_MODULE_NAME("processor_throttling");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* ignore_tpc:
 | 
					/* ignore_tpc:
 | 
				
			||||||
 *  0 -> acpi processor driver doesn't ignore _TPC values
 | 
					 *  0 -> acpi processor driver doesn't ignore _TPC values
 | 
				
			||||||
 *  1 -> acpi processor driver ignores _TPC values
 | 
					 *  1 -> acpi processor driver ignores _TPC values
 | 
				
			||||||
| 
						 | 
					@ -196,10 +193,8 @@ static int acpi_processor_update_tsd_coord(void)
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
void acpi_processor_throttling_init(void)
 | 
					void acpi_processor_throttling_init(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (acpi_processor_update_tsd_coord()) {
 | 
						if (acpi_processor_update_tsd_coord())
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 | 
							pr_debug("Assume no T-state coordination\n");
 | 
				
			||||||
			"Assume no T-state coordination\n"));
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return;
 | 
						return;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -216,12 +211,13 @@ static int acpi_processor_throttling_notifier(unsigned long event, void *data)
 | 
				
			||||||
	cpu = p_tstate->cpu;
 | 
						cpu = p_tstate->cpu;
 | 
				
			||||||
	pr = per_cpu(processors, cpu);
 | 
						pr = per_cpu(processors, cpu);
 | 
				
			||||||
	if (!pr) {
 | 
						if (!pr) {
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Invalid pr pointer\n"));
 | 
							pr_debug("Invalid pr pointer\n");
 | 
				
			||||||
		return 0;
 | 
							return 0;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (!pr->flags.throttling) {
 | 
						if (!pr->flags.throttling) {
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Throttling control is "
 | 
							acpi_handle_debug(pr->handle,
 | 
				
			||||||
				"unsupported on CPU %d\n", cpu));
 | 
									  "Throttling control unsupported on CPU %d\n",
 | 
				
			||||||
 | 
									  cpu);
 | 
				
			||||||
		return 0;
 | 
							return 0;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	target_state = p_tstate->target_state;
 | 
						target_state = p_tstate->target_state;
 | 
				
			||||||
| 
						 | 
					@ -245,9 +241,9 @@ static int acpi_processor_throttling_notifier(unsigned long event, void *data)
 | 
				
			||||||
			target_state = p_throttling->state_count - 1;
 | 
								target_state = p_throttling->state_count - 1;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		p_tstate->target_state = target_state;
 | 
							p_tstate->target_state = target_state;
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO, "PreChange Event:"
 | 
							acpi_handle_debug(pr->handle,
 | 
				
			||||||
				"target T-state of CPU %d is T%d\n",
 | 
									  "PreChange Event: target T-state of CPU %d is T%d\n",
 | 
				
			||||||
				cpu, target_state));
 | 
									  cpu, target_state);
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case THROTTLING_POSTCHANGE:
 | 
						case THROTTLING_POSTCHANGE:
 | 
				
			||||||
		/*
 | 
							/*
 | 
				
			||||||
| 
						 | 
					@ -255,9 +251,9 @@ static int acpi_processor_throttling_notifier(unsigned long event, void *data)
 | 
				
			||||||
		 * T-state flag of acpi_processor_throttling.
 | 
							 * T-state flag of acpi_processor_throttling.
 | 
				
			||||||
		 */
 | 
							 */
 | 
				
			||||||
		p_throttling->state = target_state;
 | 
							p_throttling->state = target_state;
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO, "PostChange Event:"
 | 
							acpi_handle_debug(pr->handle,
 | 
				
			||||||
				"CPU %d is switched to T%d\n",
 | 
									  "PostChange Event: CPU %d is switched to T%d\n",
 | 
				
			||||||
				cpu, target_state));
 | 
									  cpu, target_state);
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
		printk(KERN_WARNING
 | 
							printk(KERN_WARNING
 | 
				
			||||||
| 
						 | 
					@ -284,9 +280,11 @@ static int acpi_processor_get_platform_limit(struct acpi_processor *pr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	status = acpi_evaluate_integer(pr->handle, "_TPC", NULL, &tpc);
 | 
						status = acpi_evaluate_integer(pr->handle, "_TPC", NULL, &tpc);
 | 
				
			||||||
	if (ACPI_FAILURE(status)) {
 | 
						if (ACPI_FAILURE(status)) {
 | 
				
			||||||
		if (status != AE_NOT_FOUND) {
 | 
							if (status != AE_NOT_FOUND)
 | 
				
			||||||
			ACPI_EXCEPTION((AE_INFO, status, "Evaluating _TPC"));
 | 
								acpi_handle_warn(pr->handle,
 | 
				
			||||||
		}
 | 
										 "_TPC evaluation failed: %s\n",
 | 
				
			||||||
 | 
										 acpi_format_exception(status));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return -ENODEV;
 | 
							return -ENODEV;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -417,9 +415,11 @@ static int acpi_processor_get_throttling_control(struct acpi_processor *pr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	status = acpi_evaluate_object(pr->handle, "_PTC", NULL, &buffer);
 | 
						status = acpi_evaluate_object(pr->handle, "_PTC", NULL, &buffer);
 | 
				
			||||||
	if (ACPI_FAILURE(status)) {
 | 
						if (ACPI_FAILURE(status)) {
 | 
				
			||||||
		if (status != AE_NOT_FOUND) {
 | 
							if (status != AE_NOT_FOUND)
 | 
				
			||||||
			ACPI_EXCEPTION((AE_INFO, status, "Evaluating _PTC"));
 | 
								acpi_handle_warn(pr->handle,
 | 
				
			||||||
		}
 | 
										 "_PTC evaluation failed: %s\n",
 | 
				
			||||||
 | 
										 acpi_format_exception(status));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return -ENODEV;
 | 
							return -ENODEV;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -502,9 +502,11 @@ static int acpi_processor_get_throttling_states(struct acpi_processor *pr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	status = acpi_evaluate_object(pr->handle, "_TSS", NULL, &buffer);
 | 
						status = acpi_evaluate_object(pr->handle, "_TSS", NULL, &buffer);
 | 
				
			||||||
	if (ACPI_FAILURE(status)) {
 | 
						if (ACPI_FAILURE(status)) {
 | 
				
			||||||
		if (status != AE_NOT_FOUND) {
 | 
							if (status != AE_NOT_FOUND)
 | 
				
			||||||
			ACPI_EXCEPTION((AE_INFO, status, "Evaluating _TSS"));
 | 
								acpi_handle_warn(pr->handle,
 | 
				
			||||||
		}
 | 
										 "_TSS evaluation failed: %s\n",
 | 
				
			||||||
 | 
										 acpi_format_exception(status));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return -ENODEV;
 | 
							return -ENODEV;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -515,8 +517,8 @@ static int acpi_processor_get_throttling_states(struct acpi_processor *pr)
 | 
				
			||||||
		goto end;
 | 
							goto end;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Found %d throttling states\n",
 | 
						acpi_handle_debug(pr->handle, "Found %d throttling states\n",
 | 
				
			||||||
			  tss->package.count));
 | 
								  tss->package.count);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pr->throttling.state_count = tss->package.count;
 | 
						pr->throttling.state_count = tss->package.count;
 | 
				
			||||||
	pr->throttling.states_tss =
 | 
						pr->throttling.states_tss =
 | 
				
			||||||
| 
						 | 
					@ -537,12 +539,13 @@ static int acpi_processor_get_throttling_states(struct acpi_processor *pr)
 | 
				
			||||||
		state.length = sizeof(struct acpi_processor_tx_tss);
 | 
							state.length = sizeof(struct acpi_processor_tx_tss);
 | 
				
			||||||
		state.pointer = tx;
 | 
							state.pointer = tx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Extracting state %d\n", i));
 | 
							acpi_handle_debug(pr->handle, "Extracting state %d\n", i);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		status = acpi_extract_package(&(tss->package.elements[i]),
 | 
							status = acpi_extract_package(&(tss->package.elements[i]),
 | 
				
			||||||
					      &format, &state);
 | 
										      &format, &state);
 | 
				
			||||||
		if (ACPI_FAILURE(status)) {
 | 
							if (ACPI_FAILURE(status)) {
 | 
				
			||||||
			ACPI_EXCEPTION((AE_INFO, status, "Invalid _TSS data"));
 | 
								acpi_handle_warn(pr->handle, "Invalid _TSS data: %s\n",
 | 
				
			||||||
 | 
										 acpi_format_exception(status));
 | 
				
			||||||
			result = -EFAULT;
 | 
								result = -EFAULT;
 | 
				
			||||||
			kfree(pr->throttling.states_tss);
 | 
								kfree(pr->throttling.states_tss);
 | 
				
			||||||
			goto end;
 | 
								goto end;
 | 
				
			||||||
| 
						 | 
					@ -582,9 +585,11 @@ static int acpi_processor_get_tsd(struct acpi_processor *pr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	status = acpi_evaluate_object(pr->handle, "_TSD", NULL, &buffer);
 | 
						status = acpi_evaluate_object(pr->handle, "_TSD", NULL, &buffer);
 | 
				
			||||||
	if (ACPI_FAILURE(status)) {
 | 
						if (ACPI_FAILURE(status)) {
 | 
				
			||||||
		if (status != AE_NOT_FOUND) {
 | 
							if (status != AE_NOT_FOUND)
 | 
				
			||||||
			ACPI_EXCEPTION((AE_INFO, status, "Evaluating _TSD"));
 | 
								acpi_handle_warn(pr->handle,
 | 
				
			||||||
		}
 | 
										 "_TSD evaluation failed: %s\n",
 | 
				
			||||||
 | 
										 acpi_format_exception(status));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return -ENODEV;
 | 
							return -ENODEV;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -698,9 +703,9 @@ static int acpi_processor_get_throttling_fadt(struct acpi_processor *pr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	local_irq_enable();
 | 
						local_irq_enable();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 | 
						acpi_handle_debug(pr->handle,
 | 
				
			||||||
			  "Throttling state is T%d (%d%% throttling applied)\n",
 | 
								  "Throttling state is T%d (%d%% throttling applied)\n",
 | 
				
			||||||
			  state, pr->throttling.states[state].performance));
 | 
								  state, pr->throttling.states[state].performance);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -875,8 +880,8 @@ static int acpi_processor_get_throttling_ptc(struct acpi_processor *pr)
 | 
				
			||||||
	if (ret >= 0) {
 | 
						if (ret >= 0) {
 | 
				
			||||||
		state = acpi_get_throttling_state(pr, value);
 | 
							state = acpi_get_throttling_state(pr, value);
 | 
				
			||||||
		if (state == -1) {
 | 
							if (state == -1) {
 | 
				
			||||||
			ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 | 
								acpi_handle_debug(pr->handle,
 | 
				
			||||||
				"Invalid throttling state, reset\n"));
 | 
										  "Invalid throttling state, reset\n");
 | 
				
			||||||
			state = 0;
 | 
								state = 0;
 | 
				
			||||||
			ret = __acpi_processor_set_throttling(pr, state, true,
 | 
								ret = __acpi_processor_set_throttling(pr, state, true,
 | 
				
			||||||
							      true);
 | 
												      true);
 | 
				
			||||||
| 
						 | 
					@ -921,10 +926,10 @@ static int acpi_processor_get_fadt_info(struct acpi_processor *pr)
 | 
				
			||||||
	int i, step;
 | 
						int i, step;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!pr->throttling.address) {
 | 
						if (!pr->throttling.address) {
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO, "No throttling register\n"));
 | 
							acpi_handle_debug(pr->handle, "No throttling register\n");
 | 
				
			||||||
		return -EINVAL;
 | 
							return -EINVAL;
 | 
				
			||||||
	} else if (!pr->throttling.duty_width) {
 | 
						} else if (!pr->throttling.duty_width) {
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO, "No throttling states\n"));
 | 
							acpi_handle_debug(pr->handle, "No throttling states\n");
 | 
				
			||||||
		return -EINVAL;
 | 
							return -EINVAL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	/* TBD: Support duty_cycle values that span bit 4. */
 | 
						/* TBD: Support duty_cycle values that span bit 4. */
 | 
				
			||||||
| 
						 | 
					@ -1015,10 +1020,10 @@ static int acpi_processor_set_throttling_fadt(struct acpi_processor *pr,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	local_irq_enable();
 | 
						local_irq_enable();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 | 
						acpi_handle_debug(pr->handle,
 | 
				
			||||||
			  "Throttling state set to T%d (%d%%)\n", state,
 | 
								  "Throttling state set to T%d (%d%%)\n", state,
 | 
				
			||||||
			  (pr->throttling.states[state].performance ? pr->
 | 
								  (pr->throttling.states[state].performance ? pr->
 | 
				
			||||||
			   throttling.states[state].performance / 10 : 0)));
 | 
								   throttling.states[state].performance / 10 : 0));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -1129,8 +1134,8 @@ static int __acpi_processor_set_throttling(struct acpi_processor *pr,
 | 
				
			||||||
			 * error message and continue.
 | 
								 * error message and continue.
 | 
				
			||||||
			 */
 | 
								 */
 | 
				
			||||||
			if (!match_pr) {
 | 
								if (!match_pr) {
 | 
				
			||||||
				ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 | 
									acpi_handle_debug(pr->handle,
 | 
				
			||||||
					"Invalid Pointer for CPU %d\n", i));
 | 
										"Invalid Pointer for CPU %d\n", i);
 | 
				
			||||||
				continue;
 | 
									continue;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			/*
 | 
								/*
 | 
				
			||||||
| 
						 | 
					@ -1138,9 +1143,8 @@ static int __acpi_processor_set_throttling(struct acpi_processor *pr,
 | 
				
			||||||
			 * we will report the error message and continue.
 | 
								 * we will report the error message and continue.
 | 
				
			||||||
			 */
 | 
								 */
 | 
				
			||||||
			if (!match_pr->flags.throttling) {
 | 
								if (!match_pr->flags.throttling) {
 | 
				
			||||||
				ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 | 
									acpi_handle_debug(pr->handle,
 | 
				
			||||||
					"Throttling Control is unsupported "
 | 
										"Throttling Control unsupported on CPU %d\n", i);
 | 
				
			||||||
					"on CPU %d\n", i));
 | 
					 | 
				
			||||||
				continue;
 | 
									continue;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1177,11 +1181,11 @@ int acpi_processor_get_throttling_info(struct acpi_processor *pr)
 | 
				
			||||||
	int result = 0;
 | 
						int result = 0;
 | 
				
			||||||
	struct acpi_processor_throttling *pthrottling;
 | 
						struct acpi_processor_throttling *pthrottling;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 | 
						acpi_handle_debug(pr->handle,
 | 
				
			||||||
			  "pblk_address[0x%08x] duty_offset[%d] duty_width[%d]\n",
 | 
								  "pblk_address[0x%08x] duty_offset[%d] duty_width[%d]\n",
 | 
				
			||||||
			  pr->throttling.address,
 | 
								  pr->throttling.address,
 | 
				
			||||||
			  pr->throttling.duty_offset,
 | 
								  pr->throttling.duty_offset,
 | 
				
			||||||
			  pr->throttling.duty_width));
 | 
								  pr->throttling.duty_width);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/*
 | 
						/*
 | 
				
			||||||
	 * Evaluate _PTC, _TSS and _TPC
 | 
						 * Evaluate _PTC, _TSS and _TPC
 | 
				
			||||||
| 
						 | 
					@ -1221,13 +1225,13 @@ int acpi_processor_get_throttling_info(struct acpi_processor *pr)
 | 
				
			||||||
	 * used this part.
 | 
						 * used this part.
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	if (errata.piix4.throttle) {
 | 
						if (errata.piix4.throttle) {
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 | 
							acpi_handle_debug(pr->handle,
 | 
				
			||||||
				  "Throttling not supported on PIIX4 A- or B-step\n"));
 | 
									  "Throttling not supported on PIIX4 A- or B-step\n");
 | 
				
			||||||
		return 0;
 | 
							return 0;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Found %d throttling states\n",
 | 
						acpi_handle_debug(pr->handle, "Found %d throttling states\n",
 | 
				
			||||||
			  pr->throttling.state_count));
 | 
								  pr->throttling.state_count);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pr->flags.throttling = 1;
 | 
						pr->flags.throttling = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1242,9 +1246,9 @@ int acpi_processor_get_throttling_info(struct acpi_processor *pr)
 | 
				
			||||||
		goto end;
 | 
							goto end;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (pr->throttling.state) {
 | 
						if (pr->throttling.state) {
 | 
				
			||||||
		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 | 
							acpi_handle_debug(pr->handle,
 | 
				
			||||||
				  "Disabling throttling (was T%d)\n",
 | 
									  "Disabling throttling (was T%d)\n",
 | 
				
			||||||
				  pr->throttling.state));
 | 
									  pr->throttling.state);
 | 
				
			||||||
		result = acpi_processor_set_throttling(pr, 0, false);
 | 
							result = acpi_processor_set_throttling(pr, 0, false);
 | 
				
			||||||
		if (result)
 | 
							if (result)
 | 
				
			||||||
			goto end;
 | 
								goto end;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -58,7 +58,6 @@ static const struct acpi_dlayer acpi_debug_layers[] = {
 | 
				
			||||||
	ACPI_DEBUG_INIT(ACPI_CONTAINER_COMPONENT),
 | 
						ACPI_DEBUG_INIT(ACPI_CONTAINER_COMPONENT),
 | 
				
			||||||
	ACPI_DEBUG_INIT(ACPI_SYSTEM_COMPONENT),
 | 
						ACPI_DEBUG_INIT(ACPI_SYSTEM_COMPONENT),
 | 
				
			||||||
	ACPI_DEBUG_INIT(ACPI_MEMORY_DEVICE_COMPONENT),
 | 
						ACPI_DEBUG_INIT(ACPI_MEMORY_DEVICE_COMPONENT),
 | 
				
			||||||
	ACPI_DEBUG_INIT(ACPI_PROCESSOR_COMPONENT),
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const struct acpi_dlevel acpi_debug_levels[] = {
 | 
					static const struct acpi_dlevel acpi_debug_levels[] = {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,7 +21,6 @@
 | 
				
			||||||
#define ACPI_CONTAINER_COMPONENT	0x01000000
 | 
					#define ACPI_CONTAINER_COMPONENT	0x01000000
 | 
				
			||||||
#define ACPI_SYSTEM_COMPONENT		0x02000000
 | 
					#define ACPI_SYSTEM_COMPONENT		0x02000000
 | 
				
			||||||
#define ACPI_MEMORY_DEVICE_COMPONENT	0x08000000
 | 
					#define ACPI_MEMORY_DEVICE_COMPONENT	0x08000000
 | 
				
			||||||
#define ACPI_PROCESSOR_COMPONENT	0x20000000
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * _HID definitions
 | 
					 * _HID definitions
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue