SOURCES (LINUX_2_6): acpi-20050408-2.6.12.diff (NEW) - new acpi pa...

pluto pluto at pld-linux.org
Wed Jun 22 19:23:21 CEST 2005


Author: pluto                        Date: Wed Jun 22 17:23:21 2005 GMT
Module: SOURCES                       Tag: LINUX_2_6
---- Log message:
- new acpi patch for 2.6.11.

---- Files affected:
SOURCES:
   acpi-20050408-2.6.12.diff (NONE -> 1.1.2.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/acpi-20050408-2.6.12.diff
diff -u /dev/null SOURCES/acpi-20050408-2.6.12.diff:1.1.2.1
--- /dev/null	Wed Jun 22 19:23:21 2005
+++ SOURCES/acpi-20050408-2.6.12.diff	Wed Jun 22 19:23:16 2005
@@ -0,0 +1,22761 @@
+diff -Nru a/arch/i386/kernel/acpi/wakeup.S b/arch/i386/kernel/acpi/wakeup.S
+--- a/arch/i386/kernel/acpi/wakeup.S	2005-04-19 01:34:14 -04:00
++++ b/arch/i386/kernel/acpi/wakeup.S	2005-04-19 01:34:14 -04:00
+@@ -74,8 +74,9 @@
+ 	movw	%ax,%fs
+ 	movw	$0x0e00 + 'i', %fs:(0x12)
+ 	
+-	# need a gdt
+-	lgdt	real_save_gdt - wakeup_code
++	# need a gdt -- use lgdtl to force 32-bit operands, in case
++	# the GDT is located past 16 megabytes.
++	lgdtl	real_save_gdt - wakeup_code
+ 
+ 	movl	real_save_cr0 - wakeup_code, %eax
+ 	movl	%eax, %cr0
+diff -Nru a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
+--- a/drivers/acpi/Kconfig	2005-04-19 01:34:14 -04:00
++++ b/drivers/acpi/Kconfig	2005-04-19 01:34:14 -04:00
+@@ -49,7 +49,6 @@
+ 
+ config ACPI_INTERPRETER
+ 	bool
+-	depends on !IA64_SGI_SN
+ 	default y
+ 
+ if ACPI_INTERPRETER
+@@ -80,6 +79,14 @@
+ 	depends on ACPI_SLEEP && PROC_FS
+ 	default y
+ 
++config ACPI_SLEEP_PROC_SLEEP
++	bool "/proc/acpi/sleep (deprecated)"
++	depends on ACPI_SLEEP_PROC_FS
++	default n
++	---help---
++	  Create /proc/acpi/sleep
++	  Deprecated by /sys/power/state
++
+ config ACPI_AC
+ 	tristate "AC Adapter"
+ 	depends on X86
+@@ -100,7 +107,6 @@
+ 
+ config ACPI_BUTTON
+ 	tristate "Button"
+-	depends on !IA64_SGI_SN
+ 	default m
+ 	help
+ 	  This driver registers for events based on buttons, such as the
+@@ -112,7 +118,6 @@
+ config ACPI_VIDEO
+ 	tristate "Video"
+ 	depends on EXPERIMENTAL
+-	depends on !IA64_SGI_SN
+ 	default m
+ 	help
+ 	  This driver implement the ACPI Extensions For Display Adapters
+@@ -125,7 +130,6 @@
+ 
+ config ACPI_FAN
+ 	tristate "Fan"
+-	depends on !IA64_SGI_SN
+ 	default m
+ 	help
+ 	  This driver adds support for ACPI fan devices, allowing user-mode 
+@@ -133,7 +137,6 @@
+ 
+ config ACPI_PROCESSOR
+ 	tristate "Processor"
+-	depends on !IA64_SGI_SN
+ 	default m
+ 	help
+ 	  This driver installs ACPI as the idle handler for Linux, and uses
+@@ -143,7 +146,6 @@
+ config ACPI_HOTPLUG_CPU
+ 	bool "Processor Hotplug (EXPERIMENTAL)"
+ 	depends on ACPI_PROCESSOR && HOTPLUG_CPU && EXPERIMENTAL
+-	depends on !IA64_SGI_SN
+ 	select ACPI_CONTAINER
+ 	default n
+ 	 ---help---
+@@ -263,7 +265,6 @@
+ 
+ config ACPI_DEBUG
+ 	bool "Debug Statements"
+-	depends on !IA64_SGI_SN
+ 	default n
+ 	help
+ 	  The ACPI driver can optionally report errors with a great deal
+@@ -272,7 +273,6 @@
+ 
+ config ACPI_BUS
+ 	bool
+-	depends on !IA64_SGI_SN
+ 	default y
+ 
+ config ACPI_EC
+@@ -286,17 +286,14 @@
+ 
+ config ACPI_POWER
+ 	bool
+-	depends on !IA64_SGI_SN
+ 	default y
+ 
+ config ACPI_PCI
+ 	bool
+-	depends on !IA64_SGI_SN
+ 	default PCI
+ 
+ config ACPI_SYSTEM
+ 	bool
+-	depends on !IA64_SGI_SN
+ 	default y
+ 	help
+ 	  This driver will enable your system to shut down using ACPI, and
+@@ -328,8 +325,13 @@
+ 	depends on EXPERIMENTAL
+ 	default (ACPI_HOTPLUG_MEMORY || ACPI_HOTPLUG_CPU || ACPI_HOTPLUG_IO)
+ 	 ---help---
+-	 	This is the ACPI generic container driver which supports
+-		ACPI0004, PNP0A05 and PNP0A06 devices
++	  This allows _physical_ insertion and removal of CPUs and memory.
++	  This can be useful, for example, on NUMA machines that support
++	  ACPI based physical hotplug of nodes, or non-NUMA machines that
++	  support physical cpu/memory hot-plug.
++
++	  If one selects "m", this driver can be loaded with
++	  "modprobe acpi_container".
+ 
+ config ACPI_HOTPLUG_MEMORY
+ 	tristate "Memory Hotplug"
+diff -Nru a/drivers/acpi/button.c b/drivers/acpi/button.c
+--- a/drivers/acpi/button.c	2005-04-19 01:34:14 -04:00
++++ b/drivers/acpi/button.c	2005-04-19 01:34:14 -04:00
+@@ -26,9 +26,6 @@
+ #include <linux/kernel.h>
+ #include <linux/module.h>
+ #include <linux/init.h>
+-#include <linux/types.h>
+-#include <linux/proc_fs.h>
+-#include <linux/seq_file.h>
+ #include <acpi/acpi_bus.h>
+ #include <acpi/acpi_drivers.h>
+ 
+@@ -36,9 +33,6 @@
+ #define ACPI_BUTTON_COMPONENT		0x00080000
+ #define ACPI_BUTTON_DRIVER_NAME		"ACPI Button Driver"
+ #define ACPI_BUTTON_CLASS		"button"
+-#define ACPI_BUTTON_FILE_INFO		"info"
+-#define ACPI_BUTTON_FILE_STATE		"state"
+-#define ACPI_BUTTON_TYPE_UNKNOWN	0x00
+ #define ACPI_BUTTON_NOTIFY_STATUS	0x80
+ 
+ #define ACPI_BUTTON_SUBCLASS_POWER	"power"
+@@ -70,8 +64,6 @@
+ 
+ static int acpi_button_add (struct acpi_device *device);
+ static int acpi_button_remove (struct acpi_device *device, int type);
+-static int acpi_button_info_open_fs(struct inode *inode, struct file *file);
+-static int acpi_button_state_open_fs(struct inode *inode, struct file *file);
+ 
+ static struct acpi_driver acpi_button_driver = {
+ 	.name =		ACPI_BUTTON_DRIVER_NAME,
+@@ -90,191 +82,6 @@
+ 	unsigned long		pushed;
+ };
+ 
+-static struct file_operations acpi_button_info_fops = {
+-	.open		= acpi_button_info_open_fs,
+-	.read		= seq_read,
+-	.llseek		= seq_lseek,
+-	.release	= single_release,
+-};
+-
+-static struct file_operations acpi_button_state_fops = {
+-	.open		= acpi_button_state_open_fs,
+-	.read		= seq_read,
+-	.llseek		= seq_lseek,
+-	.release	= single_release,
+-};
+-/* --------------------------------------------------------------------------
+-                              FS Interface (/proc)
+-   -------------------------------------------------------------------------- */
+-
+-static struct proc_dir_entry	*acpi_button_dir;
+-
+-static int acpi_button_info_seq_show(struct seq_file *seq, void *offset)
+-{
+-	struct acpi_button	*button = (struct acpi_button *) seq->private;
+-
+-	ACPI_FUNCTION_TRACE("acpi_button_info_seq_show");
+-
+-	if (!button || !button->device)
+-		return_VALUE(0);
+-
+-	seq_printf(seq, "type:                    %s\n", 
+-		acpi_device_name(button->device));
+-
+-	return_VALUE(0);
+-}
+-
+-static int acpi_button_info_open_fs(struct inode *inode, struct file *file)
+-{
+-	return single_open(file, acpi_button_info_seq_show, PDE(inode)->data);
+-}
+-	
+-static int acpi_button_state_seq_show(struct seq_file *seq, void *offset)
+-{
+-	struct acpi_button	*button = (struct acpi_button *) seq->private;
+-	acpi_status		status;
+-	unsigned long		state;
+-
+-	ACPI_FUNCTION_TRACE("acpi_button_state_seq_show");
+-
+-	if (!button || !button->device)
+-		return_VALUE(0);
+-
+-	status = acpi_evaluate_integer(button->handle,"_LID",NULL,&state);
+-	if (ACPI_FAILURE(status)) {
+-		seq_printf(seq, "state:      unsupported\n");
+-	}
+-	else{
+-		seq_printf(seq, "state:      %s\n", (state ? "open" : "closed")); 
+-	}
+-
+-	return_VALUE(0);
+-}
+-
+-static int acpi_button_state_open_fs(struct inode *inode, struct file *file)
+-{
+-	return single_open(file, acpi_button_state_seq_show, PDE(inode)->data);
+-}
+-
+-static int
+-acpi_button_add_fs (
+-	struct acpi_device	*device)
+-{
+-	struct proc_dir_entry	*entry = NULL;
+-	struct acpi_button	*button = NULL;
+-
+-	ACPI_FUNCTION_TRACE("acpi_button_add_fs");
+-
+-	if (!device || !acpi_driver_data(device))
+-		return_VALUE(-EINVAL);
+-
+-	button = acpi_driver_data(device);
+-
+-	switch (button->type) {
+-	case ACPI_BUTTON_TYPE_POWER:
+-	case ACPI_BUTTON_TYPE_POWERF:
+-			entry = proc_mkdir(ACPI_BUTTON_SUBCLASS_POWER, 
+-				acpi_button_dir);
+-		break;
+-	case ACPI_BUTTON_TYPE_SLEEP:
+-	case ACPI_BUTTON_TYPE_SLEEPF:
+-			entry = proc_mkdir(ACPI_BUTTON_SUBCLASS_SLEEP, 
+-				acpi_button_dir);
+-		break;
+-	case ACPI_BUTTON_TYPE_LID:
+-			entry = proc_mkdir(ACPI_BUTTON_SUBCLASS_LID, 
+-				acpi_button_dir);
+-		break;
+-	}
+-
+-	if (!entry)
+-		return_VALUE(-ENODEV);
+-	entry->owner = THIS_MODULE;
+-
+-	acpi_device_dir(device) = proc_mkdir(acpi_device_bid(device), entry);
+-	if (!acpi_device_dir(device))
+-		return_VALUE(-ENODEV);
+-	acpi_device_dir(device)->owner = THIS_MODULE;
+-
+-	/* 'info' [R] */
+-	entry = create_proc_entry(ACPI_BUTTON_FILE_INFO,
+-		S_IRUGO, acpi_device_dir(device));
+-	if (!entry)
+-		ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
+-			"Unable to create '%s' fs entry\n",
+-			ACPI_BUTTON_FILE_INFO));
+-	else {
+-		entry->proc_fops = &acpi_button_info_fops;
+-		entry->data = acpi_driver_data(device);
+-		entry->owner = THIS_MODULE;
+-	}
+-
+-	/* show lid state [R] */
+-	if (button->type == ACPI_BUTTON_TYPE_LID) {
+-		entry = create_proc_entry(ACPI_BUTTON_FILE_STATE,
+-			S_IRUGO, acpi_device_dir(device));
+-		if (!entry)
+-			ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
+-				"Unable to create '%s' fs entry\n",
+-				ACPI_BUTTON_FILE_INFO));
+-		else {
+-			entry->proc_fops = &acpi_button_state_fops;
+-			entry->data = acpi_driver_data(device);
+-			entry->owner = THIS_MODULE;
+-		}
+-	}
+-
+-	return_VALUE(0);
+-}
+-
+-
+-static int
+-acpi_button_remove_fs (
+-	struct acpi_device	*device)
+-{
+-	struct acpi_button	*button = NULL;
+-
+-	ACPI_FUNCTION_TRACE("acpi_button_remove_fs");
+-
+-	button = acpi_driver_data(device);
+-	if (acpi_device_dir(device)) {
+-		if (button->type == ACPI_BUTTON_TYPE_LID)
+-			remove_proc_entry(ACPI_BUTTON_FILE_STATE,
+-					     acpi_device_dir(device));
+-		remove_proc_entry(ACPI_BUTTON_FILE_INFO,
+-				     acpi_device_dir(device));
+-
+-		remove_proc_entry(acpi_device_bid(device),
+-				     acpi_device_dir(device)->parent);
+-
+-
+-		switch (button->type) {
+-			case ACPI_BUTTON_TYPE_POWER:
+-			case ACPI_BUTTON_TYPE_POWERF:
+-				remove_proc_entry(ACPI_BUTTON_SUBCLASS_POWER, 
+-					acpi_button_dir);
+-				break;
+-			case ACPI_BUTTON_TYPE_SLEEP:
+-			case ACPI_BUTTON_TYPE_SLEEPF:
+-				remove_proc_entry(ACPI_BUTTON_SUBCLASS_SLEEP, 
+-					acpi_button_dir);
+-				break;
+-			case ACPI_BUTTON_TYPE_LID:
+-				remove_proc_entry(ACPI_BUTTON_SUBCLASS_LID, 
+-					acpi_button_dir);
+-				break;
+-		}
+-		acpi_device_dir(device) = NULL;
+-	}
+-
+-	return_VALUE(0);
+-}
+-
+-
+-/* --------------------------------------------------------------------------
+-                                Driver Interface
+-   -------------------------------------------------------------------------- */
+-
+ static void
+ acpi_button_notify (
+ 	acpi_handle		handle,
+@@ -310,8 +117,7 @@
+ 	
+ 	ACPI_FUNCTION_TRACE("acpi_button_notify_fixed");
+ 
+-	if (!button)
+-		return_ACPI_STATUS(AE_BAD_PARAMETER);
++	BUG_ON(!button);
+ 
+ 	acpi_button_notify(button->handle, ACPI_BUTTON_NOTIFY_STATUS, button);
+ 
+@@ -327,10 +133,6 @@
+ 	acpi_status		status = AE_OK;
+ 	struct acpi_button	*button = NULL;
+ 
+-	static struct acpi_device *power_button;
+-	static struct acpi_device *sleep_button;
+-	static struct acpi_device *lid_button;
+-
+ 	ACPI_FUNCTION_TRACE("acpi_button_add");
+ 
+ 	if (!device)
+@@ -391,42 +193,6 @@
+ 		goto end;
+ 	}
+ 
+-	/*
+-	 * Ensure only one button of each type is used.
+-	 */
+-	switch (button->type) {
+-	case ACPI_BUTTON_TYPE_POWER:
+-	case ACPI_BUTTON_TYPE_POWERF:
+-		if (!power_button)
+-			power_button = device;
+-		else {
+-			kfree(button);
+-			return_VALUE(-ENODEV);
+-		}
+-		break;
+-	case ACPI_BUTTON_TYPE_SLEEP:
+-	case ACPI_BUTTON_TYPE_SLEEPF:
+-		if (!sleep_button)
+-			sleep_button = device;
+-		else {
+-			kfree(button);
+-			return_VALUE(-ENODEV);
+-		}
+-		break;
+-	case ACPI_BUTTON_TYPE_LID:
+-		if (!lid_button)
+-			lid_button = device;
+-		else {
+-			kfree(button);
+-			return_VALUE(-ENODEV);
+-		}
+-		break;
+-	}
+-
+-	result = acpi_button_add_fs(device);
+-	if (result)
+-		goto end;
+-
+ 	switch (button->type) {
+ 	case ACPI_BUTTON_TYPE_POWERF:
+ 		status = acpi_install_fixed_event_handler (
+@@ -470,7 +236,6 @@
+ 
+ end:
+ 	if (result) {
+-		acpi_button_remove_fs(device);
+ 		kfree(button);
+ 	}
+ 
+@@ -511,8 +276,6 @@
+ 		ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
+ 			"Error removing notify handler\n"));
+ 
+-	acpi_button_remove_fs(device);	
+-
+ 	kfree(button);
+ 
+ 	return_VALUE(0);
+@@ -526,21 +289,14 @@
+ 
+ 	ACPI_FUNCTION_TRACE("acpi_button_init");
+ 
+-	acpi_button_dir = proc_mkdir(ACPI_BUTTON_CLASS, acpi_root_dir);
+-	if (!acpi_button_dir)
+-		return_VALUE(-ENODEV);
+-	acpi_button_dir->owner = THIS_MODULE;
+-
+ 	result = acpi_bus_register_driver(&acpi_button_driver);
+ 	if (result < 0) {
+-		remove_proc_entry(ACPI_BUTTON_CLASS, acpi_root_dir);
+ 		return_VALUE(-ENODEV);
+ 	}
+ 
+ 	return_VALUE(0);
+ }
+ 
+-
+ static void __exit
+ acpi_button_exit (void)
+ {
+@@ -548,11 +304,8 @@
+ 
+ 	acpi_bus_unregister_driver(&acpi_button_driver);
+ 
+-	remove_proc_entry(ACPI_BUTTON_CLASS, acpi_root_dir);
+-
+ 	return_VOID;
+ }
+-
+ 
+ module_init(acpi_button_init);
+ module_exit(acpi_button_exit);
+diff -Nru a/drivers/acpi/dispatcher/dsfield.c b/drivers/acpi/dispatcher/dsfield.c
+--- a/drivers/acpi/dispatcher/dsfield.c	2005-04-19 01:34:14 -04:00
++++ b/drivers/acpi/dispatcher/dsfield.c	2005-04-19 01:34:14 -04:00
+@@ -53,13 +53,20 @@
+ #define _COMPONENT          ACPI_DISPATCHER
+ 	 ACPI_MODULE_NAME    ("dsfield")
+ 
++/* Local prototypes */
++
++static acpi_status
++acpi_ds_get_field_names (
++	struct acpi_create_field_info   *info,
++	struct acpi_walk_state          *walk_state,
++	union acpi_parse_object         *arg);
++
+ 
+ /*******************************************************************************
+  *
+  * FUNCTION:    acpi_ds_create_buffer_field
+  *
+- * PARAMETERS:  Opcode              - The opcode to be executed
+- *              Operands            - List of operands for the opcode
++ * PARAMETERS:  Op                  - Current parse op (create_xXField)
+  *              walk_state          - Current state
+  *
+  * RETURN:      Status
+@@ -70,7 +77,7 @@
+  *              create_word_field_op,
+  *              create_dword_field_op,
+  *              create_qword_field_op,
+- *              create_field_op     (all of which define fields in buffers)
++ *              create_field_op     (all of which define a field in a buffer)
+  *
+  ******************************************************************************/
+ 
+@@ -119,7 +126,8 @@
+ 			flags = ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE;
+ 		}
+ 		else {
+-			flags = ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE | ACPI_NS_ERROR_IF_FOUND;
++			flags = ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE |
++					ACPI_NS_ERROR_IF_FOUND;
+ 		}
+ 
+ 		/*
+@@ -134,16 +142,16 @@
+ 		}
+ 	}
+ 
+-	/* We could put the returned object (Node) on the object stack for later, but
+-	 * for now, we will put it in the "op" object that the parser uses, so we
+-	 * can get it again at the end of this scope
++	/* We could put the returned object (Node) on the object stack for later,
++	 * but for now, we will put it in the "op" object that the parser uses,
++	 * so we can get it again at the end of this scope
+ 	 */
+ 	op->common.node = node;
+ 
+ 	/*
+-	 * If there is no object attached to the node, this node was just created and
+-	 * we need to create the field object.  Otherwise, this was a lookup of an
+-	 * existing node and we don't want to create the field object again.
++	 * If there is no object attached to the node, this node was just created
++	 * and we need to create the field object.  Otherwise, this was a lookup
++	 * of an existing node and we don't want to create the field object again.
+ 	 */
+ 	obj_desc = acpi_ns_get_attached_object (node);
+ 	if (obj_desc) {
+@@ -205,7 +213,7 @@
+  *
+  ******************************************************************************/
+ 
+-acpi_status
++static acpi_status
+ acpi_ds_get_field_names (
+ 	struct acpi_create_field_info   *info,
+ 	struct acpi_walk_state          *walk_state,
+@@ -238,7 +246,8 @@
+ 					 + (acpi_integer) arg->common.value.size;
+ 
+ 			if (position > ACPI_UINT32_MAX) {
+-				ACPI_REPORT_ERROR (("Bit offset within field too large (> 0xFFFFFFFF)\n"));
++				ACPI_REPORT_ERROR ((
++					"Bit offset within field too large (> 0xFFFFFFFF)\n"));
+ 				return_ACPI_STATUS (AE_SUPPORT);
+ 			}
+ 
+@@ -250,12 +259,15 @@
+ 
+ 			/*
+ 			 * Get a new access_type and access_attribute -- to be used for all
+-			 * field units that follow, until field end or another access_as keyword.
++			 * field units that follow, until field end or another access_as
++			 * keyword.
+ 			 *
+-			 * In field_flags, preserve the flag bits other than the ACCESS_TYPE bits
++			 * In field_flags, preserve the flag bits other than the
++			 * ACCESS_TYPE bits
+ 			 */
+-			info->field_flags = (u8) ((info->field_flags & ~(AML_FIELD_ACCESS_TYPE_MASK)) |
+-					  ((u8) ((u32) arg->common.value.integer >> 8)));
++			info->field_flags = (u8)
++				((info->field_flags & ~(AML_FIELD_ACCESS_TYPE_MASK)) |
++				((u8) ((u32) arg->common.value.integer >> 8)));
+ 
+ 			info->attribute = (u8) (arg->common.value.integer);
+ 			break;
+@@ -267,7 +279,8 @@
+ 
+ 			status = acpi_ns_lookup (walk_state->scope_info,
+ 					  (char *) &arg->named.name,
+-					  info->field_type, ACPI_IMODE_EXECUTE, ACPI_NS_DONT_OPEN_SCOPE,
++					  info->field_type, ACPI_IMODE_EXECUTE,
++					  ACPI_NS_DONT_OPEN_SCOPE,
+ 					  walk_state, &info->field_node);
+ 			if (ACPI_FAILURE (status)) {
+ 				ACPI_REPORT_NSERROR ((char *) &arg->named.name, status);
+@@ -295,8 +308,9 @@
+ 					 + (acpi_integer) arg->common.value.size;
+ 
+ 			if (position > ACPI_UINT32_MAX) {
<<Diff was trimmed, longer than 597 lines>>



More information about the pld-cvs-commit mailing list