Re: Linus 2.6.23-rc1: ACPI-related oops on x86_64

Mel Gorman
2007-07-24T10:37:16Z

On Mon, 23 Jul 2007, Len Brown wrote:

> On Monday 23 July 2007 05:50, Mel Gorman wrote:
>
>> This was seen on a machine on test.kernel.org;
>>
>> Unable to handle kernel NULL pointer dereference at 0000000000000000
>> RIP:
>> [<ffffffff8037379b>] acpi_processor_throttling_seq_show+0xa7/0xd6
>> PGD 3bd9e067 PUD 3bc6a067 PMD 0
>> Oops: 0000 [1] SMP
>> CPU 3
>> Modules linked in: video output button battery floppy ac lp parport_pc
>> parport nvram amd_rng rng_core i2c_amd756 i2c_core
>> Pid: 1522, comm: head Not tainted 2.6.23-rc1-autokern1 #1
>> RIP: 0010:[<ffffffff8037379b>] [<ffffffff8037379b>]
>> acpi_processor_throttling_seq_show+0xa7/0xd6
>> RSP: 0018:ffff81003c4a5e48 EFLAGS: 00010246
>> RAX: 0000000000000020 RBX: ffff810037ea1800 RCX: 0000000000000000
>> RDX: 000000000000002a RSI: ffffffff80599c02 RDI: ffff810037c6a9c0
>> RBP: ffff810037c6a9c0 R08: ffff81003c3e3051 R09: ffff810037c6a9c0
>> R10: ffffffffffffffff R11: ffffffff80373e66 R12: 0000000000000000
>> R13: 0000000000000000 R14: 0000000000000000 R15: 00007fffd59dcd40
>> FS: 00002b7ad50e36f0(0000) GS:ffff81003ee56b40(0000) knlGS:0000000000000000
>> CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
>> CR2: 0000000000000000 CR3: 000000003bd9b000 CR4: 00000000000006e0
>> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
>> DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
>> Process head (pid: 1522, threadinfo ffff81003c4a4000, task ffff81003ee81040)
>> Stack: ffff81003eed7180 ffff810037c6a9c0 0000000000000001 0000000000000001
>> 0000000000002000 ffffffff802a77b3 ffff81003c4a5f50 ffff81003e2f8ec0
>> ffff810037c6a9f0 ffff81003de65000 0000000000000000 fffffffffffffffb
>> Call Trace:
>> [<ffffffff802a77b3>] seq_read+0x105/0x28e
>> [<ffffffff802a76ae>] seq_read+0x0/0x28e
>> [<ffffffff802c8501>] proc_reg_read+0x80/0x9a
>> [<ffffffff8028eb3d>] vfs_read+0xcb/0x153
>> [<ffffffff8028eed9>] sys_read+0x45/0x6e
>> [<ffffffff8020bc6e>] system_call+0x7e/0x83
>> FATAL: Error inserting acpi_cpufreq
>> (/lib/modules/2.6.23-rc1-autokern1/kernel/arch/x86_64/kernel/cpufreq/acpi-cpufreq.ko):
>> No such device
>>
>> Full oops is at http://test.kernel.org/abat/100837/debug/console.log
>> Config file at http://test.kernel.org/abat/100837/build/dotconfig
>
> try this,
> thanks,
> -Len
>
> Subject: fix oops due to typo in new throttling code
> From: Luming Yu <luming.yu@gmail.com>
>

This works. When applied, the output to console is

FATAL: Error inserting acpi_cpufreq
(/lib/modules/2.6.23-rc1-autokern1/kernel/arch/x86_64/kernel/cpufreq/acpi-cpufreq.ko): No such device

Thanks Len

>
> Signed-off-by: Luming Yu <luming.yu@gmail.com>
> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
> Signed-off-by: Len Brown <len.brown@intel.com>
>

Tested-by: Mel Gorman <mel@csn.ul.ie>

> ---
>
> drivers/acpi/processor_throttling.c | 6 ++++--
> 1 files changed, 4 insertions(+), 2 deletions(-)
>
> Index: linus/drivers/acpi/processor_throttling.c
> ===================================================================
> --- linus.orig/drivers/acpi/processor_throttling.c
> +++ linus/drivers/acpi/processor_throttling.c
> @@ -658,18 +658,20 @@ static int acpi_processor_throttling_seq
> pr->throttling.state_count - 1);
>
> seq_puts(seq, "states:\n");
> - if (acpi_processor_get_throttling == acpi_processor_get_throttling_fadt)
> + if (pr->throttling.acpi_processor_get_throttling ==
> + acpi_processor_get_throttling_fadt) {
> for (i = 0; i < pr->throttling.state_count; i++)
> seq_printf(seq, " %cT%d: %02d%%\n",
> (i == pr->throttling.state ? '*' : ' '), i,
> (pr->throttling.states[i].performance ? pr->
> throttling.states[i].performance / 10 : 0));
> - else
> + } else {
> for (i = 0; i < pr->throttling.state_count; i++)
> seq_printf(seq, " %cT%d: %02d%%\n",
> (i == pr->throttling.state ? '*' : ' '), i,
> (int)pr->throttling.states_tss[i].
> freqpercentage);
> + }
>
> end:
> return 0;
>

--
Mel Gorman
Part-time Phd Student Linux Technology Center
University of Limerick IBM Dublin Software Lab