patch-2.4.0-test2 linux/arch/i386/kernel/acpi.c

Next file: linux/arch/i386/kernel/apic.c
Previous file: linux/arch/i386/kernel/Makefile
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test1/linux/arch/i386/kernel/acpi.c linux/arch/i386/kernel/acpi.c
@@ -700,7 +700,7 @@
 	if (!(pmregmisc & ACPI_PIIX4_PMIOSE))
 		return -ENODEV;
 	
-	base = dev->resource[PCI_BRIDGE_RESOURCES].start & PCI_BASE_ADDRESS_IO_MASK;
+	base = pci_resource_start (dev, PCI_BRIDGE_RESOURCES);
 	if (!base)
 		return -ENODEV;
 
@@ -759,7 +759,6 @@
 		if (!base)
 			return -ENODEV;
 	}
-	base &= PCI_BASE_ADDRESS_IO_MASK;
 
 	pci_read_config_byte(dev, 0x42, &irq);
 
@@ -824,7 +823,7 @@
 	{acpi_init_via},
 };
 	
-const static struct pci_device_id acpi_pci_tbl[] =
+static struct pci_device_id acpi_pci_tbl[] __initdata =
 {
 	{0x8086, 0x7113, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_INTEL_PIIX4},
 	{0x1106, 0x3040, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_VIA_586},
@@ -1169,6 +1168,8 @@
 
 	acpi_sleep_start = get_cmos_time();
 	acpi_enter_dx(ACPI_D3);
+	// disable interrupts globally while suspended
+	cli();
 	acpi_sleep_state = state;
 
 	facp = (struct acpi_facp*) acpi_facp.table;
@@ -1191,6 +1192,8 @@
 	// finished sleeping, update system time
 	acpi_update_clock();
 	acpi_enter_dx(ACPI_D0);
+	// reenable interrupts globally after resume
+	sti();
 	acpi_sleep_state = ACPI_S0;
 	
 	return 0;

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)