* [-mmotm] BUG: scheduling while atomic: swapper
@ 2008-08-26 2:09 Ryan Hope
2008-08-26 6:37 ` Andrew Morton
2008-08-26 8:11 ` Dmitry Adamushko
0 siblings, 2 replies; 10+ messages in thread
From: Ryan Hope @ 2008-08-26 2:09 UTC (permalink / raw)
To: LKML, Andrew Morton
BUG: scheduling while atomic: swapper/1/0x00000002
Modules linked in:
Pid: 1, comm: swapper Tainted: G W 2.6.27-rc4-zenmmotm1 #4
[<c057a0c7>] schedule+0x287/0x6d0
[<c03672e6>] vsnprintf+0x3a6/0x6c0
[<c057a92d>] schedule_timeout+0x7d/0xb0
[<c021e0c8>] __wake_up+0x38/0x50
[<c057a74a>] wait_for_common+0x8a/0x130
[<c0220ab0>] default_wake_function+0x0/0x10
[<c0237743>] call_usermodehelper_exec+0xc3/0xf0
[<c0362ede>] kobject_uevent_env+0x37e/0x3a0
[<c03d5921>] device_add+0x551/0x630
[<c03d5ac3>] device_create_vargs+0xb3/0xd0
[<c06ccc47>] microcode_intel_module_init+0x0/0x39
[<c03d5b0b>] device_create+0x2b/0x30
[<c0385f2e>] misc_register+0xbe/0x170
[<c02137d1>] microcode_init+0x21/0xf0
[<c0201336>] do_one_initcall+0x26/0x170
[<c021e0c8>] __wake_up+0x38/0x50
[<c0237c98>] insert_work+0x48/0x50
[<c02380a5>] __queue_work+0x25/0x40
[<c023812a>] queue_work_on+0x3a/0x50
[<c06c29bf>] kernel_init+0x170/0x251
[<c06c284f>] kernel_init+0x0/0x251
[<c0204157>] kernel_thread_helper+0x7/0x10
=======================
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [-mmotm] BUG: scheduling while atomic: swapper
2008-08-26 2:09 [-mmotm] BUG: scheduling while atomic: swapper Ryan Hope
@ 2008-08-26 6:37 ` Andrew Morton
2008-08-26 7:01 ` Vegard Nossum
2008-08-26 8:11 ` Dmitry Adamushko
1 sibling, 1 reply; 10+ messages in thread
From: Andrew Morton @ 2008-08-26 6:37 UTC (permalink / raw)
To: Ryan Hope; +Cc: LKML, Ingo Molnar, Mike Travis
On Mon, 25 Aug 2008 22:09:25 -0400 "Ryan Hope" <rmh3093@gmail.com> wrote:
> BUG: scheduling while atomic: swapper/1/0x00000002
> Modules linked in:
> Pid: 1, comm: swapper Tainted: G W 2.6.27-rc4-zenmmotm1 #4
> [<c057a0c7>] schedule+0x287/0x6d0
> [<c03672e6>] vsnprintf+0x3a6/0x6c0
> [<c057a92d>] schedule_timeout+0x7d/0xb0
> [<c021e0c8>] __wake_up+0x38/0x50
> [<c057a74a>] wait_for_common+0x8a/0x130
> [<c0220ab0>] default_wake_function+0x0/0x10
> [<c0237743>] call_usermodehelper_exec+0xc3/0xf0
> [<c0362ede>] kobject_uevent_env+0x37e/0x3a0
> [<c03d5921>] device_add+0x551/0x630
> [<c03d5ac3>] device_create_vargs+0xb3/0xd0
> [<c06ccc47>] microcode_intel_module_init+0x0/0x39
> [<c03d5b0b>] device_create+0x2b/0x30
> [<c0385f2e>] misc_register+0xbe/0x170
> [<c02137d1>] microcode_init+0x21/0xf0
> [<c0201336>] do_one_initcall+0x26/0x170
> [<c021e0c8>] __wake_up+0x38/0x50
> [<c0237c98>] insert_work+0x48/0x50
> [<c02380a5>] __queue_work+0x25/0x40
> [<c023812a>] queue_work_on+0x3a/0x50
> [<c06c29bf>] kernel_init+0x170/0x251
> [<c06c284f>] kernel_init+0x0/0x251
> [<c0204157>] kernel_thread_helper+0x7/0x10
> =======================
As a mad guess, I'd guess that someone changed get_online_cpus() so
that disables preemption (with a suitable config combination, perhaps).
Which would cause microcode_init()'s sysdev_driver_register() to run
in atomic context.
But that's just a guess - I can't immediately see any change in there
which does this. Ingo, any theories?
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [-mmotm] BUG: scheduling while atomic: swapper
2008-08-26 6:37 ` Andrew Morton
@ 2008-08-26 7:01 ` Vegard Nossum
0 siblings, 0 replies; 10+ messages in thread
From: Vegard Nossum @ 2008-08-26 7:01 UTC (permalink / raw)
To: Andrew Morton; +Cc: Ryan Hope, LKML, Ingo Molnar, Mike Travis
On Tue, Aug 26, 2008 at 8:37 AM, Andrew Morton
<akpm@linux-foundation.org> wrote:
> On Mon, 25 Aug 2008 22:09:25 -0400 "Ryan Hope" <rmh3093@gmail.com> wrote:
>
>> BUG: scheduling while atomic: swapper/1/0x00000002
>> Modules linked in:
>> Pid: 1, comm: swapper Tainted: G W 2.6.27-rc4-zenmmotm1 #4
>> [<c057a0c7>] schedule+0x287/0x6d0
>> [<c03672e6>] vsnprintf+0x3a6/0x6c0
>> [<c057a92d>] schedule_timeout+0x7d/0xb0
>> [<c021e0c8>] __wake_up+0x38/0x50
>> [<c057a74a>] wait_for_common+0x8a/0x130
>> [<c0220ab0>] default_wake_function+0x0/0x10
>> [<c0237743>] call_usermodehelper_exec+0xc3/0xf0
>> [<c0362ede>] kobject_uevent_env+0x37e/0x3a0
>> [<c03d5921>] device_add+0x551/0x630
>> [<c03d5ac3>] device_create_vargs+0xb3/0xd0
>> [<c06ccc47>] microcode_intel_module_init+0x0/0x39
>> [<c03d5b0b>] device_create+0x2b/0x30
>> [<c0385f2e>] misc_register+0xbe/0x170
>> [<c02137d1>] microcode_init+0x21/0xf0
>> [<c0201336>] do_one_initcall+0x26/0x170
>> [<c021e0c8>] __wake_up+0x38/0x50
>> [<c0237c98>] insert_work+0x48/0x50
>> [<c02380a5>] __queue_work+0x25/0x40
>> [<c023812a>] queue_work_on+0x3a/0x50
>> [<c06c29bf>] kernel_init+0x170/0x251
>> [<c06c284f>] kernel_init+0x0/0x251
>> [<c0204157>] kernel_thread_helper+0x7/0x10
>> =======================
>
> As a mad guess, I'd guess that someone changed get_online_cpus() so
> that disables preemption (with a suitable config combination, perhaps).
> Which would cause microcode_init()'s sysdev_driver_register() to run
> in atomic context.
>
> But that's just a guess - I can't immediately see any change in there
> which does this. Ingo, any theories?
Looks like the kernel was W-tainted already... so likely there was a
BUG or a WARNING even before this. And I think this sort of warning
can happen if a(nother) process was killed while preemption was off
(e.g. a BUG() at the wrong moment). Ryan?
Vegard
--
"The animistic metaphor of the bug that maliciously sneaked in while
the programmer was not looking is intellectually dishonest as it
disguises that the error is the programmer's own creation."
-- E. W. Dijkstra, EWD1036
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [-mmotm] BUG: scheduling while atomic: swapper
2008-08-26 2:09 [-mmotm] BUG: scheduling while atomic: swapper Ryan Hope
2008-08-26 6:37 ` Andrew Morton
@ 2008-08-26 8:11 ` Dmitry Adamushko
2008-08-26 8:24 ` Andrew Morton
1 sibling, 1 reply; 10+ messages in thread
From: Dmitry Adamushko @ 2008-08-26 8:11 UTC (permalink / raw)
To: Ryan Hope; +Cc: LKML, Andrew Morton, Vegard Nossum
2008/8/26 Ryan Hope <rmh3093@gmail.com>:
> BUG: scheduling while atomic: swapper/1/0x00000002
> Modules linked in:
> Pid: 1, comm: swapper Tainted: G W 2.6.27-rc4-zenmmotm1 #4
> [<c057a0c7>] schedule+0x287/0x6d0
> [<c03672e6>] vsnprintf+0x3a6/0x6c0
> [<c057a92d>] schedule_timeout+0x7d/0xb0
> [<c021e0c8>] __wake_up+0x38/0x50
> [<c057a74a>] wait_for_common+0x8a/0x130
> [<c0220ab0>] default_wake_function+0x0/0x10
> [<c0237743>] call_usermodehelper_exec+0xc3/0xf0
> [<c0362ede>] kobject_uevent_env+0x37e/0x3a0
> [<c03d5921>] device_add+0x551/0x630
> [<c03d5ac3>] device_create_vargs+0xb3/0xd0
> [<c06ccc47>] microcode_intel_module_init+0x0/0x39
It doesn't look like Linus's tree... there is no
microcode_intel_module_init() in .27+. So what is it?
Anyway, your trace might be explained by a bug that has been already
fixed in Ingo's -tip.
Here is the commit:
http://git.kernel.org/?p=linux/kernel/git/x86/linux-2.6-tip.git;a=commit;h=8343ef2437c599d30568e6b5a257a40bf2f4902b
--
Best regards,
Dmitry Adamushko
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [-mmotm] BUG: scheduling while atomic: swapper
2008-08-26 8:11 ` Dmitry Adamushko
@ 2008-08-26 8:24 ` Andrew Morton
[not found] ` <9f8af95f0808260225u162da49aj1d6f6fd9db79499f@mail.gmail.com>
0 siblings, 1 reply; 10+ messages in thread
From: Andrew Morton @ 2008-08-26 8:24 UTC (permalink / raw)
To: Dmitry Adamushko; +Cc: Ryan Hope, LKML, Vegard Nossum
On Tue, 26 Aug 2008 10:11:24 +0200 "Dmitry Adamushko" <dmitry.adamushko@gmail.com> wrote:
> 2008/8/26 Ryan Hope <rmh3093@gmail.com>:
> > BUG: scheduling while atomic: swapper/1/0x00000002
> > Modules linked in:
> > Pid: 1, comm: swapper Tainted: G W 2.6.27-rc4-zenmmotm1 #4
> > [<c057a0c7>] schedule+0x287/0x6d0
> > [<c03672e6>] vsnprintf+0x3a6/0x6c0
> > [<c057a92d>] schedule_timeout+0x7d/0xb0
> > [<c021e0c8>] __wake_up+0x38/0x50
> > [<c057a74a>] wait_for_common+0x8a/0x130
> > [<c0220ab0>] default_wake_function+0x0/0x10
> > [<c0237743>] call_usermodehelper_exec+0xc3/0xf0
> > [<c0362ede>] kobject_uevent_env+0x37e/0x3a0
> > [<c03d5921>] device_add+0x551/0x630
> > [<c03d5ac3>] device_create_vargs+0xb3/0xd0
> > [<c06ccc47>] microcode_intel_module_init+0x0/0x39
>
> It doesn't look like Linus's tree... there is no
> microcode_intel_module_init() in .27+. So what is it?
mmotm is linux-next plus -mm stuff
> Anyway, your trace might be explained by a bug that has been already
> fixed in Ingo's -tip.
>
> Here is the commit:
> http://git.kernel.org/?p=linux/kernel/git/x86/linux-2.6-tip.git;a=commit;h=8343ef2437c599d30568e6b5a257a40bf2f4902b
Yes, an unbalanced get_cpu() would explain it.
However that patch is already in current -mm. Ryan, can you please
check to see if it's in the version you tested? The "fixed" version
looks like this:
static int __init microcode_intel_module_init(void)
{
struct cpuinfo_x86 *c = &cpu_data(get_cpu());
if (c->x86_vendor == X86_VENDOR_INTEL)
return microcode_init(µcode_intel_ops, THIS_MODULE);
else
return -ENODEV;
}
^ permalink raw reply [flat|nested] 10+ messages in thread
* [-mmotm] BUG: scheduling while atomic: swapper
[not found] ` <9f8af95f0808260225u162da49aj1d6f6fd9db79499f@mail.gmail.com>
@ 2008-08-26 9:29 ` james toy
2008-08-26 10:02 ` Dmitry Adamushko
1 sibling, 0 replies; 10+ messages in thread
From: james toy @ 2008-08-26 9:29 UTC (permalink / raw)
To: LKML
Andrew,
Yes, ours does look like this -- however when i checked the git diff
on git web i found:
index d2d9d74..6dd8907 100644 (file)
--- a/arch/x86/kernel/microcode_intel.c
+++ b/arch/x86/kernel/microcode_intel.c
@@ -531,12 +531,14 @@ static struct microcode_ops microcode_intel_ops = {
static int __init microcode_intel_module_init(void)
{
- struct cpuinfo_x86 *c = &cpu_data(get_cpu());
+ struct cpuinfo_x86 *c = &cpu_data(0);
- if (c->x86_vendor == X86_VENDOR_INTEL)
- return microcode_init(µcode_intel_ops, THIS_MODULE);
- else
+ if (c->x86_vendor != X86_VENDOR_INTEL) {
+ printk(KERN_ERR "microcode: CPU platform is not
Intel-capable\n");
return -ENODEV;
+ }
+
+ return microcode_init(µcode_intel_ops, THIS_MODULE);
}
static void __exit microcode_intel_module_exit(void)
am I missing something? It seems that the code you requested to be
checked is being nixed in the diff (i could be wrong it is 0500 EST
here)
again to confirm -- we have what you initially posted if that _is_ the
fixed version.
respectfully,
/jT
On Tue, Aug 26, 2008 at 4:24 AM, Andrew Morton
<akpm@linux-foundation.org> wrote:
>
> On Tue, 26 Aug 2008 10:11:24 +0200 "Dmitry Adamushko" <dmitry.adamushko@gmail.com> wrote:
>
> > 2008/8/26 Ryan Hope <rmh3093@gmail.com>:
> > > BUG: scheduling while atomic: swapper/1/0x00000002
> > > Modules linked in:
> > > Pid: 1, comm: swapper Tainted: G W 2.6.27-rc4-zenmmotm1 #4
> > > [<c057a0c7>] schedule+0x287/0x6d0
> > > [<c03672e6>] vsnprintf+0x3a6/0x6c0
> > > [<c057a92d>] schedule_timeout+0x7d/0xb0
> > > [<c021e0c8>] __wake_up+0x38/0x50
> > > [<c057a74a>] wait_for_common+0x8a/0x130
> > > [<c0220ab0>] default_wake_function+0x0/0x10
> > > [<c0237743>] call_usermodehelper_exec+0xc3/0xf0
> > > [<c0362ede>] kobject_uevent_env+0x37e/0x3a0
> > > [<c03d5921>] device_add+0x551/0x630
> > > [<c03d5ac3>] device_create_vargs+0xb3/0xd0
> > > [<c06ccc47>] microcode_intel_module_init+0x0/0x39
> >
> > It doesn't look like Linus's tree... there is no
> > microcode_intel_module_init() in .27+. So what is it?
>
> mmotm is linux-next plus -mm stuff
>
> > Anyway, your trace might be explained by a bug that has been already
> > fixed in Ingo's -tip.
> >
> > Here is the commit:
> > http://git.kernel.org/?p=linux/kernel/git/x86/linux-2.6-tip.git;a=commit;h=8343ef2437c599d30568e6b5a257a40bf2f4902b
>
> Yes, an unbalanced get_cpu() would explain it.
>
> However that patch is already in current -mm. Ryan, can you please
> check to see if it's in the version you tested? The "fixed" version
> looks like this:
>
> static int __init microcode_intel_module_init(void)
> {
> struct cpuinfo_x86 *c = &cpu_data(get_cpu());
>
> if (c->x86_vendor == X86_VENDOR_INTEL)
> return microcode_init(µcode_intel_ops, THIS_MODULE);
> else
> return -ENODEV;
> }
>
> --
> 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/
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [-mmotm] BUG: scheduling while atomic: swapper
[not found] ` <9f8af95f0808260225u162da49aj1d6f6fd9db79499f@mail.gmail.com>
2008-08-26 9:29 ` james toy
@ 2008-08-26 10:02 ` Dmitry Adamushko
2008-08-26 14:15 ` Ryan Hope
1 sibling, 1 reply; 10+ messages in thread
From: Dmitry Adamushko @ 2008-08-26 10:02 UTC (permalink / raw)
To: james toy; +Cc: Andrew Morton, Ryan Hope, LKML, Vegard Nossum
2008/8/26 james toy <unk.nown@unix.net>:
> Andrew,
>
> Yes, ours does look like this -- however when i checked the git diff on git
> web i found:
>
> index d2d9d74..6dd8907 100644 (file)
> --- a/arch/x86/kernel/microcode_intel.c
> +++ b/arch/x86/kernel/microcode_intel.c
> @@ -531,12 +531,14 @@ static struct microcode_ops microcode_intel_ops = {
>
> static int __init microcode_intel_module_init(void)
> {
> - struct cpuinfo_x86 *c = &cpu_data(get_cpu());
> + struct cpuinfo_x86 *c = &cpu_data(0);
(err... I'm a bit confused by the use of "fixed" here. The snippet
posted by Andrew illustrates how it was _before_ the fix,
i.e. it's the version that causes the "scheduling while atomic" bug).
IOW, If your local version has cpu_data(get_cpu()) in
microcode_intel_module_init(), then it explains the trace you have
observed. That also means you are not up-to-date with -next.
--
Best regards,
Dmitry Adamushko
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [-mmotm] BUG: scheduling while atomic: swapper
2008-08-26 10:02 ` Dmitry Adamushko
@ 2008-08-26 14:15 ` Ryan Hope
2008-08-26 14:53 ` Ryan Hope
0 siblings, 1 reply; 10+ messages in thread
From: Ryan Hope @ 2008-08-26 14:15 UTC (permalink / raw)
To: Dmitry Adamushko; +Cc: james toy, Andrew Morton, LKML, Vegard Nossum
Thanks for getting back to me on this guys. Yes I am using mmotm, the
daily -mm broken out tree... THe bug happens while booting, and it
shows up many times. Anyway I checked microcode_intel.c and the
function in question looks like this:
static int __init microcode_intel_module_init(void)
{
struct cpuinfo_x86 *c = &cpu_data(get_cpu());
if (c->x86_vendor == X86_VENDOR_INTEL)
return microcode_init(µcode_intel_ops, THIS_MODULE);
else
return -ENODEV;
}
I will try the changes in he patch in Jame's post.... and report back. THanks.
-Ryan
On Tue, Aug 26, 2008 at 6:02 AM, Dmitry Adamushko
<dmitry.adamushko@gmail.com> wrote:
> 2008/8/26 james toy <unk.nown@unix.net>:
>> Andrew,
>>
>> Yes, ours does look like this -- however when i checked the git diff on git
>> web i found:
>>
>> index d2d9d74..6dd8907 100644 (file)
>> --- a/arch/x86/kernel/microcode_intel.c
>> +++ b/arch/x86/kernel/microcode_intel.c
>> @@ -531,12 +531,14 @@ static struct microcode_ops microcode_intel_ops = {
>>
>> static int __init microcode_intel_module_init(void)
>> {
>> - struct cpuinfo_x86 *c = &cpu_data(get_cpu());
>> + struct cpuinfo_x86 *c = &cpu_data(0);
>
> (err... I'm a bit confused by the use of "fixed" here. The snippet
> posted by Andrew illustrates how it was _before_ the fix,
> i.e. it's the version that causes the "scheduling while atomic" bug).
>
> IOW, If your local version has cpu_data(get_cpu()) in
> microcode_intel_module_init(), then it explains the trace you have
> observed. That also means you are not up-to-date with -next.
>
>
> --
> Best regards,
> Dmitry Adamushko
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [-mmotm] BUG: scheduling while atomic: swapper
2008-08-26 14:15 ` Ryan Hope
@ 2008-08-26 14:53 ` Ryan Hope
2008-08-26 14:58 ` Ryan Hope
0 siblings, 1 reply; 10+ messages in thread
From: Ryan Hope @ 2008-08-26 14:53 UTC (permalink / raw)
To: Dmitry Adamushko; +Cc: james toy, Andrew Morton, LKML, Vegard Nossum
The patch from james fixes one of the issues, but who ever said my
kernel was already W tainted was right. I still have this other bug
showing in dmesg:
------------[ cut here ]------------
WARNING: at fs/sysfs/dir.c:465 sysfs_add_one+0x4a/0x50()
sysfs: duplicate filename 'acpi' can not be created
Modules linked in:
Pid: 1, comm: swapper Not tainted 2.6.27-rc4-zenmmotm1 #8
[<802277af>] warn_slowpath+0x6f/0xa0
[<80579dd6>] schedule+0x256/0x6d0
[<80361212>] idr_get_empty_slot+0xe2/0x260
[<80361410>] ida_get_new_above+0x80/0x1c0
[<802cd390>] sysfs_ilookup_test+0x0/0x10
[<802cd6f1>] sysfs_find_dirent+0x21/0x30
[<802cd7a0>] __sysfs_add_one+0x10/0x90
[<802cd86a>] sysfs_add_one+0x4a/0x50
[<802ce64c>] create_dir+0x4c/0xb0
[<802ce6d9>] sysfs_create_dir+0x29/0x50
[<80361e2f>] kobject_get+0xf/0x20
[<80361f7d>] kobject_add_internal+0xcd/0x1c0
[<803620fa>] kobject_set_name_vargs+0x3a/0x50
[<80362309>] kobject_init_and_add+0x29/0x30
[<806d235d>] kernel_param_sysfs_setup+0x5d/0xb8
[<806d2525>] param_sysfs_init+0x16d/0x172
[<806d23b8>] param_sysfs_init+0x0/0x172
[<80201336>] do_one_initcall+0x26/0x170
[<8021d87c>] activate_task+0x2c/0x50
[<80220a00>] pre_schedule_rt+0x0/0x30
[<80238547>] __create_workqueue_key+0x1a7/0x1f0
[<80237c00>] worker_thread+0x0/0x100
[<806c09bf>] kernel_init+0x170/0x251
[<806c084f>] kernel_init+0x0/0x251
[<80204157>] kernel_thread_helper+0x7/0x10
=======================
---[ end trace 4eaa2a86a8e2da22 ]---
kobject_add_internal failed for acpi with -EEXIST, don't try to register things
with the same name in the same directory.
Pid: 1, comm: swapper Tainted: G W 2.6.27-rc4-zenmmotm1 #8
[<80361fc2>] kobject_add_internal+0x112/0x1c0
[<80362309>] kobject_init_and_add+0x29/0x30
[<806d235d>] kernel_param_sysfs_setup+0x5d/0xb8
[<806d2525>] param_sysfs_init+0x16d/0x172
[<806d23b8>] param_sysfs_init+0x0/0x172
[<80201336>] do_one_initcall+0x26/0x170
[<8021d87c>] activate_task+0x2c/0x50
[<80220a00>] pre_schedule_rt+0x0/0x30
[<80238547>] __create_workqueue_key+0x1a7/0x1f0
[<80237c00>] worker_thread+0x0/0x100
[<806c09bf>] kernel_init+0x170/0x251
[<806c084f>] kernel_init+0x0/0x251
[<80204157>] kernel_thread_helper+0x7/0x10
=======================
On Tue, Aug 26, 2008 at 10:15 AM, Ryan Hope <rmh3093@gmail.com> wrote:
> Thanks for getting back to me on this guys. Yes I am using mmotm, the
> daily -mm broken out tree... THe bug happens while booting, and it
> shows up many times. Anyway I checked microcode_intel.c and the
> function in question looks like this:
>
> static int __init microcode_intel_module_init(void)
> {
> struct cpuinfo_x86 *c = &cpu_data(get_cpu());
>
> if (c->x86_vendor == X86_VENDOR_INTEL)
> return microcode_init(µcode_intel_ops, THIS_MODULE);
> else
> return -ENODEV;
> }
>
> I will try the changes in he patch in Jame's post.... and report back. THanks.
>
> -Ryan
>
> On Tue, Aug 26, 2008 at 6:02 AM, Dmitry Adamushko
> <dmitry.adamushko@gmail.com> wrote:
>> 2008/8/26 james toy <unk.nown@unix.net>:
>>> Andrew,
>>>
>>> Yes, ours does look like this -- however when i checked the git diff on git
>>> web i found:
>>>
>>> index d2d9d74..6dd8907 100644 (file)
>>> --- a/arch/x86/kernel/microcode_intel.c
>>> +++ b/arch/x86/kernel/microcode_intel.c
>>> @@ -531,12 +531,14 @@ static struct microcode_ops microcode_intel_ops = {
>>>
>>> static int __init microcode_intel_module_init(void)
>>> {
>>> - struct cpuinfo_x86 *c = &cpu_data(get_cpu());
>>> + struct cpuinfo_x86 *c = &cpu_data(0);
>>
>> (err... I'm a bit confused by the use of "fixed" here. The snippet
>> posted by Andrew illustrates how it was _before_ the fix,
>> i.e. it's the version that causes the "scheduling while atomic" bug).
>>
>> IOW, If your local version has cpu_data(get_cpu()) in
>> microcode_intel_module_init(), then it explains the trace you have
>> observed. That also means you are not up-to-date with -next.
>>
>>
>> --
>> Best regards,
>> Dmitry Adamushko
>>
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [-mmotm] BUG: scheduling while atomic: swapper
2008-08-26 14:53 ` Ryan Hope
@ 2008-08-26 14:58 ` Ryan Hope
0 siblings, 0 replies; 10+ messages in thread
From: Ryan Hope @ 2008-08-26 14:58 UTC (permalink / raw)
To: Dmitry Adamushko; +Cc: james toy, Andrew Morton, LKML, Vegard Nossum
[-- Attachment #1: Type: text/plain, Size: 4495 bytes --]
On a side note, if I have CONFIG_HIGHMEM4G=y my computer boots fine if
CONFIG_HIGHMEM4G=n I get the bugtrace shown in the attached photo
(sorry for the poor quality its the best i could do atm). The kernel
also hardlocks at this point.
-Ryan
On Tue, Aug 26, 2008 at 10:53 AM, Ryan Hope <rmh3093@gmail.com> wrote:
> The patch from james fixes one of the issues, but who ever said my
> kernel was already W tainted was right. I still have this other bug
> showing in dmesg:
>
> ------------[ cut here ]------------
> WARNING: at fs/sysfs/dir.c:465 sysfs_add_one+0x4a/0x50()
> sysfs: duplicate filename 'acpi' can not be created
> Modules linked in:
> Pid: 1, comm: swapper Not tainted 2.6.27-rc4-zenmmotm1 #8
> [<802277af>] warn_slowpath+0x6f/0xa0
> [<80579dd6>] schedule+0x256/0x6d0
> [<80361212>] idr_get_empty_slot+0xe2/0x260
> [<80361410>] ida_get_new_above+0x80/0x1c0
> [<802cd390>] sysfs_ilookup_test+0x0/0x10
> [<802cd6f1>] sysfs_find_dirent+0x21/0x30
> [<802cd7a0>] __sysfs_add_one+0x10/0x90
> [<802cd86a>] sysfs_add_one+0x4a/0x50
> [<802ce64c>] create_dir+0x4c/0xb0
> [<802ce6d9>] sysfs_create_dir+0x29/0x50
> [<80361e2f>] kobject_get+0xf/0x20
> [<80361f7d>] kobject_add_internal+0xcd/0x1c0
> [<803620fa>] kobject_set_name_vargs+0x3a/0x50
> [<80362309>] kobject_init_and_add+0x29/0x30
> [<806d235d>] kernel_param_sysfs_setup+0x5d/0xb8
> [<806d2525>] param_sysfs_init+0x16d/0x172
> [<806d23b8>] param_sysfs_init+0x0/0x172
> [<80201336>] do_one_initcall+0x26/0x170
> [<8021d87c>] activate_task+0x2c/0x50
> [<80220a00>] pre_schedule_rt+0x0/0x30
> [<80238547>] __create_workqueue_key+0x1a7/0x1f0
> [<80237c00>] worker_thread+0x0/0x100
> [<806c09bf>] kernel_init+0x170/0x251
> [<806c084f>] kernel_init+0x0/0x251
> [<80204157>] kernel_thread_helper+0x7/0x10
> =======================
> ---[ end trace 4eaa2a86a8e2da22 ]---
> kobject_add_internal failed for acpi with -EEXIST, don't try to register things
> with the same name in the same directory.
> Pid: 1, comm: swapper Tainted: G W 2.6.27-rc4-zenmmotm1 #8
> [<80361fc2>] kobject_add_internal+0x112/0x1c0
> [<80362309>] kobject_init_and_add+0x29/0x30
> [<806d235d>] kernel_param_sysfs_setup+0x5d/0xb8
> [<806d2525>] param_sysfs_init+0x16d/0x172
> [<806d23b8>] param_sysfs_init+0x0/0x172
> [<80201336>] do_one_initcall+0x26/0x170
> [<8021d87c>] activate_task+0x2c/0x50
> [<80220a00>] pre_schedule_rt+0x0/0x30
> [<80238547>] __create_workqueue_key+0x1a7/0x1f0
> [<80237c00>] worker_thread+0x0/0x100
> [<806c09bf>] kernel_init+0x170/0x251
> [<806c084f>] kernel_init+0x0/0x251
> [<80204157>] kernel_thread_helper+0x7/0x10
> =======================
>
>
> On Tue, Aug 26, 2008 at 10:15 AM, Ryan Hope <rmh3093@gmail.com> wrote:
>> Thanks for getting back to me on this guys. Yes I am using mmotm, the
>> daily -mm broken out tree... THe bug happens while booting, and it
>> shows up many times. Anyway I checked microcode_intel.c and the
>> function in question looks like this:
>>
>> static int __init microcode_intel_module_init(void)
>> {
>> struct cpuinfo_x86 *c = &cpu_data(get_cpu());
>>
>> if (c->x86_vendor == X86_VENDOR_INTEL)
>> return microcode_init(µcode_intel_ops, THIS_MODULE);
>> else
>> return -ENODEV;
>> }
>>
>> I will try the changes in he patch in Jame's post.... and report back. THanks.
>>
>> -Ryan
>>
>> On Tue, Aug 26, 2008 at 6:02 AM, Dmitry Adamushko
>> <dmitry.adamushko@gmail.com> wrote:
>>> 2008/8/26 james toy <unk.nown@unix.net>:
>>>> Andrew,
>>>>
>>>> Yes, ours does look like this -- however when i checked the git diff on git
>>>> web i found:
>>>>
>>>> index d2d9d74..6dd8907 100644 (file)
>>>> --- a/arch/x86/kernel/microcode_intel.c
>>>> +++ b/arch/x86/kernel/microcode_intel.c
>>>> @@ -531,12 +531,14 @@ static struct microcode_ops microcode_intel_ops = {
>>>>
>>>> static int __init microcode_intel_module_init(void)
>>>> {
>>>> - struct cpuinfo_x86 *c = &cpu_data(get_cpu());
>>>> + struct cpuinfo_x86 *c = &cpu_data(0);
>>>
>>> (err... I'm a bit confused by the use of "fixed" here. The snippet
>>> posted by Andrew illustrates how it was _before_ the fix,
>>> i.e. it's the version that causes the "scheduling while atomic" bug).
>>>
>>> IOW, If your local version has cpu_data(get_cpu()) in
>>> microcode_intel_module_init(), then it explains the trace you have
>>> observed. That also means you are not up-to-date with -next.
>>>
>>>
>>> --
>>> Best regards,
>>> Dmitry Adamushko
>>>
>>
>
[-- Attachment #2: sspx0176.jpg --]
[-- Type: image/jpeg, Size: 183877 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2008-08-26 14:58 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-08-26 2:09 [-mmotm] BUG: scheduling while atomic: swapper Ryan Hope
2008-08-26 6:37 ` Andrew Morton
2008-08-26 7:01 ` Vegard Nossum
2008-08-26 8:11 ` Dmitry Adamushko
2008-08-26 8:24 ` Andrew Morton
[not found] ` <9f8af95f0808260225u162da49aj1d6f6fd9db79499f@mail.gmail.com>
2008-08-26 9:29 ` james toy
2008-08-26 10:02 ` Dmitry Adamushko
2008-08-26 14:15 ` Ryan Hope
2008-08-26 14:53 ` Ryan Hope
2008-08-26 14:58 ` Ryan Hope
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox