2005-05-16 21:34:16

by Yann Droneaud

[permalink] [raw]
Subject: Oops with IPMI and ACPI disabled on command line


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

--
Yann Droneaud <[email protected]>
Consulting Engineer
Professional Services
Mandriva http://mandriva.com/ (previously known as Mandrakesoft)


2005-05-16 21:50:33

by Yann Droneaud

[permalink] [raw]
Subject: [PATCH 2/2] IPMI and acpi=off|ht : ipmi_si_intf-acpi-disabled


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

--- linux-2.6.11.9/drivers/char/ipmi/ipmi_si_intf.c 2005-05-11 18:41:12.000000000 -0400
+++ linux-2.6.11.9-fixes/drivers/char/ipmi/ipmi_si_intf.c 2005-05-16 16:38:11.780589696 -0400
@@ -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]

--
Yann Droneaud <[email protected]>
Consulting Engineer
Professional Services
Mandriva http://mandriva.com/ (previously known as Mandrakesoft)

2005-05-16 21:54:14

by Yann Droneaud

[permalink] [raw]
Subject: [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.

--- linux-2.6.11.9/drivers/acpi/tables/tbxfroot.c 2005-05-11 18:42:39.000000000 -0400
+++ linux-2.6.11.9-fixes/drivers/acpi/tables/tbxfroot.c 2005-05-16 16:51:33.115768232 -0400
@@ -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]

--
Yann Droneaud <[email protected]>
Consulting Engineer
Professional Services
Mandriva http://mandriva.com/ (previously known as Mandrakesoft)

2005-05-16 21:54:15

by Corey Minyard

[permalink] [raw]
Subject: Re: Oops with IPMI and ACPI disabled on command line

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

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

Index: linux-2.6.12-rc4/drivers/acpi/tables/tbxfroot.c
===================================================================
--- linux-2.6.12-rc4.orig/drivers/acpi/tables/tbxfroot.c
+++ 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) {



Yann Droneaud wrote:

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

2005-05-17 23:27:58

by Sergio Monteiro Basto

[permalink] [raw]
Subject: 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,

On Mon, 2005-05-16 at 23:42 +0200, Yann Droneaud wrote:
> 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.
>
> --- linux-2.6.11.9/drivers/acpi/tables/tbxfroot.c 2005-05-11 18:42:39.000000000 -0400
> +++ linux-2.6.11.9-fixes/drivers/acpi/tables/tbxfroot.c 2005-05-16 16:51:33.115768232 -0400
> @@ -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]
>
--
S?rgio M.B.