Re: ACPI warning from alloc_pages_nodemask on boot (2.6.33 regression)

KOSAKI Motohiro
2009-12-30T06:21:44Z

>> [    1.611664] ACPI Warning: Incorrect checksum in table [OEMB] - 94, should be 8C (20091214/tbutils-314)
>> [    1.611698] ACPI: SSDT 00000000bf7980c0 00403 (v01 DpgPmm  P001Ist 00000011 INTL 20060113)
>> [    1.613966] ACPI: SSDT 00000000bf7984d0 00403 (v01 DpgPmm  P002Ist 00000012 INTL 20060113)
>> [    1.616242] ACPI: SSDT 00000000bf7988e0 00403 (v01 DpgPmm  P003Ist 00000012 INTL 20060113)
>> [    1.618526] ACPI: SSDT 00000000bf798cf0 00403 (v01 DpgPmm  P004Ist 00000012 INTL 20060113)
>> [    1.620817] ACPI: SSDT 00000000bf799100 00403 (v01 DpgPmm  P005Ist 00000012 INTL 20060113)
>> [    1.623112] ACPI: SSDT 00000000bf799510 00403 (v01 DpgPmm  P006Ist 00000012 INTL 20060113)
>> [    1.625409] ACPI: SSDT 00000000bf799920 00403 (v01 DpgPmm  P007Ist 00000012 INTL 20060113)
>> [    1.627734] ACPI: SSDT 00000000bf799d30 00403 (v01 DpgPmm  P008Ist 00000012 INTL 20060113)
>> [    1.630020] ------------[ cut here ]------------
>> [    1.630026] WARNING: at mm/page_alloc.c:1812 __alloc_pages_nodemask+0x617/0x730()
>
>        if (order >= MAX_ORDER) {
>                WARN_ON_ONCE(!(gfp_mask & __GFP_NOWARN));
>                return NULL;
>        }
>
> I don't know what the mm alloc code is complaining about here.

first, exceeding MAX_ORDER makes to return NULL since linux 1.x. then
alloc_pages(MAX_ORDER) is wrong usage generally,
but we hope to allow following usage:

page = alloc_pages(__GFP_nowarn, big-order)
if (!page)
page = alloc_pages(small-order)

It is the reason of __GFP_NOWARN check.
I guess ACPI don't need large `contenious' memory.

>
>> [    1.630028] Hardware name: System Product Name
>> [    1.630029] Modules linked in:
>> [    1.630032] Pid: 1, comm: swapper Not tainted 2.6.33-rc2 #4
>> [    1.630034] Call Trace:
>> [    1.630038]  [<ffffffff810532a8>] warn_slowpath_common+0x78/0xb0
>> [    1.630041]  [<ffffffff810532ef>] warn_slowpath_null+0xf/0x20
>> [    1.630044]  [<ffffffff810e65a7>] __alloc_pages_nodemask+0x617/0x730
>> [    1.630048]  [<ffffffff81114d14>] alloc_page_interleave+0x34/0x90
>> [    1.630050]  [<ffffffff81115444>] alloc_pages_current+0xc4/0xd0
>> [    1.630053]  [<ffffffff810e5549>] __get_free_pages+0x9/0x50
>> [    1.630055]  [<ffffffff8111ef3b>] __kmalloc+0x1bb/0x1f0
>> [    1.630059]  [<ffffffff81089bdd>] ? trace_hardirqs_on+0xd/0x10
>> [    1.630064]  [<ffffffff812cae3e>] acpi_os_allocate+0x25/0x27
>> [    1.630067]  [<ffffffff812cafab>] acpi_ex_load_op+0xd8/0x260
>> [    1.630070]  [<ffffffff812cd89e>] acpi_ex_opcode_1A_1T_0R+0x25/0x4b
>> [    1.630073]  [<ffffffff812c5008>] acpi_ds_exec_end_op+0xea/0x3d6
>> [    1.630076]  [<ffffffff812d7532>] acpi_ps_parse_loop+0x7d9/0x95f
>> [    1.630079]  [<ffffffff812c58cf>] ? acpi_ds_call_control_method+0x166/0x1d7
>> [    1.630082]  [<ffffffff812d6641>] acpi_ps_parse_aml+0x9a/0x2b9
>> [    1.630085]  [<ffffffff812d7d3a>] acpi_ps_execute_method+0x1c8/0x29a
>> [    1.630088]  [<ffffffff812d2f4d>] acpi_ns_evaluate+0xe1/0x1a8
>> [    1.630090]  [<ffffffff812d29a1>] acpi_evaluate_object+0xf9/0x1f2
>> [    1.630094]  [<ffffffff812bda07>] acpi_processor_set_pdc+0x1be/0x1e8
>> [    1.630097]  [<ffffffff812bda3a>] early_init_pdc+0x9/0xf
>> [    1.630100]  [<ffffffff812d4a96>] acpi_ns_walk_namespace+0xb9/0x187
>> [    1.630102]  [<ffffffff812bda31>] ? early_init_pdc+0x0/0xf
>> [    1.630105]  [<ffffffff812bda31>] ? early_init_pdc+0x0/0xf
>> [    1.630108]  [<ffffffff812d27e0>] acpi_walk_namespace+0x85/0xbf
>> [    1.630111]  [<ffffffff81cc7da9>] ? acpi_init+0x0/0x12f
>> [    1.630113]  [<ffffffff81cc7da9>] ? acpi_init+0x0/0x12f
>> [    1.630116]  [<ffffffff812bd7c6>] acpi_early_processor_set_pdc+0x3a/0x3c
>> [    1.630119]  [<ffffffff81cc7c80>] acpi_bus_init+0xb5/0x1de
>> [    1.630123]  [<ffffffff8128239e>] ? kobject_create_and_add+0x3e/0x80
>> [    1.630126]  [<ffffffff81cc2f0c>] ? genhd_device_init+0x0/0x7b
>> [    1.630128]  [<ffffffff81cc7da9>] ? acpi_init+0x0/0x12f
>> [    1.630131]  [<ffffffff81cc7e1a>] acpi_init+0x71/0x12f
>> [    1.630134]  [<ffffffff81002047>] do_one_initcall+0x37/0x1a0
>> [    1.630137]  [<ffffffff81ca1731>] kernel_init+0x166/0x1bc
>> [    1.630140]  [<ffffffff8100a3e4>] kernel_thread_helper+0x4/0x10
>> [    1.630144]  [<ffffffff814f95d0>] ? restore_args+0x0/0x30
>> [    1.630147]  [<ffffffff81ca15cb>] ? kernel_init+0x0/0x1bc
>> [    1.630149]  [<ffffffff8100a3e0>] ? kernel_thread_helper+0x0/0x10
>> [    1.630156] ---[ end trace f17e946d22a56015 ]---
>> [    1.630159] ACPI Error (psparse-0537): Method parse/execution failed [\_PR_.P009._OSC] (Node ffff8801b9069c20), AE_NO_MEMORY
>> [    1.630196] ACPI Error (psparse-0537): Method parse/execution failed [\_PR_.P009._PDC] (Node ffff8801b9069c00), AE_NO_MEMORY
>
> We've changed both the _OSC and _PDC code in this release.
> In particular, _PDC is being evaluated earler than last release
> in an attempt to be more Windows compatible...
>
> Stephen,
> Please attach the output from acpidump to a new bugzilla entry
> and point this thread to it.
>
> thanks,
> Len Brown, Intel Open Source Technology Center
>
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
>
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html