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 */ |