Skip to contentSkip to conversation

Oops with IPMI and ACPI disabled on command line

PATCH In review Yann Droneaud 3 participants 6 messages May 16, 2005 – Jun 7, 2005

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

Hi,

I encounter an Oops with IPMI modules using acpi=ht|off,
I fixed it (only the Oops, IPMI is still not available on the system), by two patches which follows.

Here is the Oops messages for reference:

May 16 11:18:29 localhost kernel: ipmi message handler version v33
May 16 11:18:29 localhost kernel: IPMI System Interface driver version v33, KCS version v33, SMIC version v33, BT version v33
May 16 11:18:29 localhost kernel:     ACPI-0166: *** Error: Invalid address flags 8
May 16 11:18:29 localhost kernel: Unable to handle kernel NULL pointer dereference at virtual address 00000004
May 16 11:18:29 localhost kernel:  printing eip:
May 16 11:18:29 localhost kernel: c01ff793
May 16 11:18:29 localhost kernel: *pde = 3764b001
May 16 11:18:29 localhost kernel: Oops: 0000 [#1]
May 16 11:18:29 localhost kernel: SMP
May 16 11:18:29 localhost kernel: Modules linked in: ipmi_si ipmi_msghandler af_packet floppy bcm5700 isofs nls_base md ehci_
hcd uhci_hcd usbcore genrtc unix sd_mod qla2300 qla2xxx scsi_transport_fc cciss ata_piix libata
May 16 11:18:29 localhost kernel: CPU:    0
May 16 11:18:29 localhost kernel: EIP:    0060:[acpi_get_firmware_table+630/694]    Not tainted VLI
May 16 11:18:29 localhost kernel: EIP:    0060:[<c01ff793>]    Not tainted VLI
May 16 11:18:29 localhost kernel: EFLAGS: 00010202   (2.6.11.9-mdvc)
May 16 11:18:29 localhost kernel: EIP is at acpi_get_firmware_table+0x276/0x2b6
May 16 11:18:29 localhost kernel: eax: 00000000   ebx: c21602c0   ecx: 00000000   edx: c21602c0
May 16 11:18:29 localhost ipmi: Starting IPMI failed
May 16 11:18:29 localhost kernel: esi: 00001001   edi: c02bfc49   ebp: 00000008   esp: f7f11eec
May 16 11:18:30 localhost kernel: ds: 007b   es: 007b   ss: 0068
May 16 11:18:30 localhost kernel: Process modprobe (pid: 2413, threadinfo=f7f11000 task=f744d540)
May 16 11:18:30 localhost kernel: Stack: c0119583 f76bff44 00000001 00000000 00000000 00000000 00000008 7fff32c0
May 16 11:18:30 localhost kernel:        00000000 f7f11f40 ffffffed 00000000 00000000 00000000 f8b81453 f8b851f9
May 16 11:18:30 localhost kernel:        00000001 00000008 f7f11f3c 000047d9 00000296 ffffffed f7f11f78 00000000
May 16 11:18:30 localhost kernel: Call Trace:
May 16 11:18:30 localhost kernel:  [__wake_up_common+63/94] __wake_up_common+0x3f/0x5e
May 16 11:18:30 localhost kernel:  [<c0119583>] __wake_up_common+0x3f/0x5e
May 16 11:18:30 localhost kernel:  [pg0+947508307/1069655040] try_init_acpi+0x41/0x2a9 [ipmi_si]
May 16 11:18:30 localhost kernel:  [<f8b81453>] try_init_acpi+0x41/0x2a9 [ipmi_si]
May 16 11:18:30 localhost kernel:  [pg0+947512705/1069655040] init_one_smi+0x4e2/0x57d [ipmi_si]
May 16 11:18:30 localhost kernel:  [<f8b82581>] init_one_smi+0x4e2/0x57d [ipmi_si]
May 16 11:18:30 localhost kernel:  [vprintk+312/367] vprintk+0x138/0x16f
May 16 11:18:30 localhost kernel:  [<c011dc62>] vprintk+0x138/0x16f
May 16 11:18:30 localhost kernel:  [pg0+944169095/1069655040] init_ipmi_si+0x87/0x22f [ipmi_si]
May 16 11:18:30 localhost kernel:  [<f8852087>] init_ipmi_si+0x87/0x22f [ipmi_si]
May 16 11:18:30 localhost kernel:  [sys_init_module+371/531] sys_init_module+0x173/0x213
May 16 11:18:30 localhost kernel:  [<c01361d9>] sys_init_module+0x173/0x213
May 16 11:18:30 localhost kernel:  [sysenter_past_esp+82/117] sysenter_past_esp+0x52/0x75
May 16 11:18:30 localhost kernel:  [<c0102fd5>] sysenter_past_esp+0x52/0x75
May 16 11:18:30 localhost kernel: Code: ff 83 c4 0c 85 c0 89 c6 75 1e 8b 54 24 10 8b 42 0c 8b 54 24 48 89 02 eb 0f 45 3b 6c 24 0c e9 4e ff ff ff be 06 00 00 00 8b 43 0c <ff> 70 04 50 e8 16 c5 fe ff 53 e8 a7 c4 fe ff 83 c4 0c 83 7c 24

Regards

Signature · 4 lines
Yann Droneaud <[email protected]>
Consulting Engineer
Professional Services
Mandriva http://mandriva.com/ (previously known as Mandrakesoft)
#1 lore raw

PATCH 1/2 IPMI and acpi=off|ht : acpi-get-firmware-failure.patch

This patch check that rsdt_info->pointer is not NULL before trying to unmap ACPI tables, which can happen if acpi_tb_get_rsdt_address() failed.

In my case, with ipmi_si_intf module and acpi=ht|off parameter, the call failed because acpi_gbl_table_flags is not initialised, so the address.pointer_type is not setup correctly, leading to message like:

May 16 11:18:29 localhost kernel:     ACPI-0166: *** Error: Invalid address flags 8

and rsdt_info->pointer equal to NULL leading to the Oops.

drivers/acpi/tables/tbxfroot.c +3 -1
@@ -313,7 +313,9 @@ acpi_get_firmware_table (
 
 
 cleanup:
-	acpi_os_unmap_memory (rsdt_info->pointer, (acpi_size) rsdt_info->pointer->length);
+	if (rsdt_info->pointer) {
+		acpi_os_unmap_memory (rsdt_info->pointer, (acpi_size) rsdt_info->pointer->length);
+	}
 	ACPI_MEM_FREE (rsdt_info);
 
 	if (header) {
Signed-off-by [email protected]
Signature · 4 lines
Yann Droneaud <[email protected]>
Consulting Engineer
Professional Services
Mandriva http://mandriva.com/ (previously known as Mandrakesoft)
#2 lore raw

Re: [ACPI] [PATCH 1/2] IPMI and acpi=off|ht : acpi-get-firmware-failure.patch

Hi,
I am CCing to Robert Moore because is about acpi/tables/tbxfroot.c. This is code from ACPICA
http://developer.intel.com/technology/iapc/acpi/downloads.htm
So we have to wait for the next version of ACPICA, on dmesg we can find it, for example:

ACPI: Subsystem revision 20050211

thanks,

Quoted 28 lines · Yann Droneaud

This patch check that rsdt_info->pointer is not NULL before trying to unmap ACPI tables, which can happen if acpi_tb_get_rsdt_address() failed.

In my case, with ipmi_si_intf module and acpi=ht|off parameter, the call failed because acpi_gbl_table_flags is not initialised, so the address.pointer_type is not setup correctly, leading to message like:

May 16 11:18:29 localhost kernel:     ACPI-0166: *** Error: Invalid address flags 8

and rsdt_info->pointer equal to NULL leading to the Oops.

drivers/acpi/tables/tbxfroot.c +3 -1
@@ -313,7 +313,9 @@ acpi_get_firmware_table (
 
 
 cleanup:
-	acpi_os_unmap_memory (rsdt_info->pointer, (acpi_size) rsdt_info->pointer->length);
+	if (rsdt_info->pointer) {
+		acpi_os_unmap_memory (rsdt_info->pointer, (acpi_size) rsdt_info->pointer->length);
+	}
 	ACPI_MEM_FREE (rsdt_info);
 
 	if (header) {
Signature · 9 lines
Sérgio M.B.



-------------------------------------------------------
This SF.Net email is sponsored by Oracle Space Sweepstakes
Want to be the first software developer in space?
Enter now for the Oracle Space Sweepstakes!
http://ads.osdn.com/?ad_id=7412&alloc_id=16344&op=click
#3 lore raw

PATCH 2/2 IPMI and acpi=off|ht : ipmi_si_intf-acpi-disabled

In reply to Yann Droneaud

This patch fix ipmi_si_intf to not use ACPI tables if the ACPI subsystem is disabled.

drivers/char/ipmi/ipmi_si_intf.c +3 -0
@@ -1443,6 +1443,9 @@ static int try_init_acpi(int intf_num, s
 	char             *io_type;
 	u8 		 addr_space;
 
+	if (acpi_disabled)
+		return -ENODEV;
+
 	if (acpi_failure)
 		return -ENODEV;
 
Signed-off-by [email protected]
Signature · 4 lines
Yann Droneaud <[email protected]>
Consulting Engineer
Professional Services
Mandriva http://mandriva.com/ (previously known as Mandrakesoft)
#4 lore raw

PATCH 1/1 Fix Oops in IPMI with acpi=off|ht : ipmi_si_intf-acpi-disabled

[The patch was dropped in 2.6.12-rc5-mm2 with bk-acpi although it wasn't related to it.
This patch is rediffed against 2.6.12-rc6, please apply]

This patch fix ipmi_si_intf to not use ACPI tables if the ACPI subsystem is disabled, removing a Oops in ACPI layer (which is really fixed by a previous patch sent by me but not confirmed by ACPI team).

Regards

drivers/char/ipmi/ipmi_si_intf.c +3 -0
@@ -1484,6 +1484,9 @@ static int try_init_acpi(int intf_num, s
 	char             *io_type;
 	u8 		 addr_space;
 
+	if (acpi_disabled)
+		return -ENODEV;
+
 	if (acpi_failure)
 		return -ENODEV;
 
Signature · 4 lines
Yann Droneaud <[email protected]>
Consulting Engineer
Professional Services
Mandriva http://mandriva.com/ (previously known as Mandrakesoft)
#5 lore raw
In reply to Yann Droneaud

Yes, I noticed this recently, too. It seems to be an ACPI bug, but I'm not 100% sure. Here's my post to lkml:

In 2.6.12-rc4, I added acpi=off to the kernel command line and it panic-ed in acpi_get_firmware_table, called from the IPMI driver.

The attached patch fixes the problem, but it still spits out ugly "ACPI-0166: *** Error: Invalid address flags 8" errors. So I doubt the patch is right, but maybe it points to something else.

Is it legal to call acpi_get_firmware_table if acpi is off? If not, how can I tell that acpi is off?

-Corey

------------------------------------------------------------------------

drivers/acpi/tables/tbxfroot.c +0 -0
Index: linux-2.6.12-rc4/drivers/acpi/tables/tbxfroot.c
===================================================================
@@ -313,7 +313,9 @@
 
 

cleanup:
- acpi_os_unmap_memory (rsdt_info->pointer, (acpi_size) rsdt_info->pointer->length);
+ if (rsdt_info->pointer)
+ acpi_os_unmap_memory (rsdt_info->pointer,

+			       	      (acpi_size) rsdt_info->pointer->length);
	ACPI_MEM_FREE (rsdt_info);

	if (header) {
Quoted 53 lines · Yann Droneaud

Hi,

I encounter an Oops with IPMI modules using acpi=ht|off,
I fixed it (only the Oops, IPMI is still not available on the system), by two patches which follows.

Here is the Oops messages for reference:

May 16 11:18:29 localhost kernel: ipmi message handler version v33
May 16 11:18:29 localhost kernel: IPMI System Interface driver version v33, KCS version v33, SMIC version v33, BT version v33
May 16 11:18:29 localhost kernel:     ACPI-0166: *** Error: Invalid address flags 8
May 16 11:18:29 localhost kernel: Unable to handle kernel NULL pointer dereference at virtual address 00000004
May 16 11:18:29 localhost kernel:  printing eip:
May 16 11:18:29 localhost kernel: c01ff793
May 16 11:18:29 localhost kernel: *pde = 3764b001
May 16 11:18:29 localhost kernel: Oops: 0000 [#1]
May 16 11:18:29 localhost kernel: SMP
May 16 11:18:29 localhost kernel: Modules linked in: ipmi_si ipmi_msghandler af_packet floppy bcm5700 isofs nls_base md ehci_
hcd uhci_hcd usbcore genrtc unix sd_mod qla2300 qla2xxx scsi_transport_fc cciss ata_piix libata
May 16 11:18:29 localhost kernel: CPU:    0
May 16 11:18:29 localhost kernel: EIP:    0060:[acpi_get_firmware_table+630/694]    Not tainted VLI
May 16 11:18:29 localhost kernel: EIP:    0060:[<c01ff793>]    Not tainted VLI
May 16 11:18:29 localhost kernel: EFLAGS: 00010202   (2.6.11.9-mdvc)
May 16 11:18:29 localhost kernel: EIP is at acpi_get_firmware_table+0x276/0x2b6
May 16 11:18:29 localhost kernel: eax: 00000000   ebx: c21602c0   ecx: 00000000   edx: c21602c0
May 16 11:18:29 localhost ipmi: Starting IPMI failed
May 16 11:18:29 localhost kernel: esi: 00001001   edi: c02bfc49   ebp: 00000008   esp: f7f11eec
May 16 11:18:30 localhost kernel: ds: 007b   es: 007b   ss: 0068
May 16 11:18:30 localhost kernel: Process modprobe (pid: 2413, threadinfo=f7f11000 task=f744d540)
May 16 11:18:30 localhost kernel: Stack: c0119583 f76bff44 00000001 00000000 00000000 00000000 00000008 7fff32c0
May 16 11:18:30 localhost kernel:        00000000 f7f11f40 ffffffed 00000000 00000000 00000000 f8b81453 f8b851f9
May 16 11:18:30 localhost kernel:        00000001 00000008 f7f11f3c 000047d9 00000296 ffffffed f7f11f78 00000000
May 16 11:18:30 localhost kernel: Call Trace:
May 16 11:18:30 localhost kernel:  [__wake_up_common+63/94] __wake_up_common+0x3f/0x5e
May 16 11:18:30 localhost kernel:  [<c0119583>] __wake_up_common+0x3f/0x5e
May 16 11:18:30 localhost kernel:  [pg0+947508307/1069655040] try_init_acpi+0x41/0x2a9 [ipmi_si]
May 16 11:18:30 localhost kernel:  [<f8b81453>] try_init_acpi+0x41/0x2a9 [ipmi_si]
May 16 11:18:30 localhost kernel:  [pg0+947512705/1069655040] init_one_smi+0x4e2/0x57d [ipmi_si]
May 16 11:18:30 localhost kernel:  [<f8b82581>] init_one_smi+0x4e2/0x57d [ipmi_si]
May 16 11:18:30 localhost kernel:  [vprintk+312/367] vprintk+0x138/0x16f
May 16 11:18:30 localhost kernel:  [<c011dc62>] vprintk+0x138/0x16f
May 16 11:18:30 localhost kernel:  [pg0+944169095/1069655040] init_ipmi_si+0x87/0x22f [ipmi_si]
May 16 11:18:30 localhost kernel:  [<f8852087>] init_ipmi_si+0x87/0x22f [ipmi_si]
May 16 11:18:30 localhost kernel:  [sys_init_module+371/531] sys_init_module+0x173/0x213
May 16 11:18:30 localhost kernel:  [<c01361d9>] sys_init_module+0x173/0x213
May 16 11:18:30 localhost kernel:  [sysenter_past_esp+82/117] sysenter_past_esp+0x52/0x75
May 16 11:18:30 localhost kernel:  [<c0102fd5>] sysenter_past_esp+0x52/0x75
May 16 11:18:30 localhost kernel: Code: ff 83 c4 0c 85 c0 89 c6 75 1e 8b 54 24 10 8b 42 0c 8b 54 24 48 89 02 eb 0f 45 3b 6c 24 0c e9 4e ff ff ff be 06 00 00 00 8b 43 0c <ff> 70 04 50 e8 16 c5 fe ff 53 e8 a7 c4 fe ff 83 c4 0c 83 7c 24

Regards