36 lines
		
	
	
		
			1012 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1012 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
--- linux-3.5.4/arch/x86/kernel/acpi/boot.c	2012-11-05 06:02:54.660816905 +0000
 | 
						|
+++ linux-3.5.4.rasm/arch/x86/kernel/acpi/boot.c	2012-11-05 06:02:16.044145822 +0000
 | 
						|
@@ -1586,8 +1586,31 @@
 | 
						|
 	if (!arg)
 | 
						|
 		return -EINVAL;
 | 
						|
 
 | 
						|
+	/*
 | 
						|
+	This hack uses RTC Alarm Hour register to signal if we
 | 
						|
+	should enable ACPI or not. This is used to overcome a bug in
 | 
						|
+	Kontron pITX-SP and IO-APIC, where we need to boot the
 | 
						|
+	kernel without ACPI, reboot and then enable ACPI.
 | 
						|
+	*/
 | 
						|
+	if (strcmp(arg, "hack") == 0)
 | 
						|
+	{
 | 
						|
+		outb(0x05 | 0x80, 0x70);
 | 
						|
+		if (inb(0x71) == 1)
 | 
						|
+		{
 | 
						|
+			outb(0x05 | 0x80, 0x70);
 | 
						|
+			outb(0x00, 0x71);
 | 
						|
+			printk(KERN_WARNING "ACPI: overriding acpi=off\n");
 | 
						|
+		}
 | 
						|
+		else
 | 
						|
+		{
 | 
						|
+			outb(0x05 | 0x80, 0x70);
 | 
						|
+			outb(0x01, 0x71);
 | 
						|
+			printk(KERN_WARNING "ACPI: reboot needed\n");
 | 
						|
+			disable_acpi();
 | 
						|
+		}
 | 
						|
+	}
 | 
						|
 	/* "acpi=off" disables both ACPI table parsing and interpreter */
 | 
						|
-	if (strcmp(arg, "off") == 0) {
 | 
						|
+	else if (strcmp(arg, "off") == 0) {
 | 
						|
 		disable_acpi();
 | 
						|
 	}
 | 
						|
 	/* acpi=force to over-ride black-list */
 |