linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Realtime Preemption, 2.6.12, Beginners Guide?
@ 2005-07-06 11:57 Alistair John Strachan
  2005-07-06 12:51 ` Alistair John Strachan
  2005-07-06 13:31 ` Ingo Molnar
  0 siblings, 2 replies; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-06 11:57 UTC (permalink / raw)
  To: linux-kernel, Ingo Molnar

Hi,

Today I decided to try Ingo's rt-preempt patch on 2.6.12 (V0.7.51-02). I'm 
most interested in the CONFIG_PREEMPT_RT mode, so I selected this option 
instead of the others. I enabled a couple of the debugging options, but I 
wasn't totally clear on which options are most useful, so I just enabled the 
ones that didn't have a warning about significant overhead, namely..

CONFIG_DETECT_SOFTLOCKUP=y
CONFIG_WAKEUP_TIMING=y
CONFIG_CRITICAL_TIMING=y
CONFIG_LATENCY_TIMING=y

Additionally (by mistake) I enabled:

CONFIG_CRITICAL_IRQSOFF_TIMING=y

Which does mention overhead.

Which debugging options are most useful for testing purposes? Is what I've 
selected enough? Also, I got a few unexpected messages in dmesg on bootup. 
Firstly;

spawn_desched_task(00000000)
desched cpu_callback 3/00000000
ksoftirqd started up.
softirq RT prio: 24.
ksoftirqd started up.
softirq RT prio: 24.
[...]
desched cpu_callback 2/00000000
desched thread 0 started up.
softlockup thread 0 started up.

Why does it print out the same ksoftirqd message six times? Is this expected 
behaviour? Next, I got a warning about CONFIG_CRITICAL_IRQSOFF_TIMING;
should this option be enabled?

Finally, I got this:

BUG: soft lockup detected on CPU#0!
 [<c013d7e9>] softlockup_tick+0x89/0xb0 (8)
 [<c0108590>] timer_interrupt+0x50/0xf0 (20)
 [<c013da91>] handle_IRQ_event+0x81/0x100 (16)
 [<c013dbfc>] __do_IRQ+0xec/0x190 (48)
 [<c0105a28>] do_IRQ+0x48/0x70 (40)
 =======================
 [<c024df3b>] acpi_processor_idle+0x0/0x258 (8)
 [<c0103d03>] common_interrupt+0x1f/0x24 (12)
 [<c024df3b>] acpi_processor_idle+0x0/0x258 (4)
 [<c024e05e>] acpi_processor_idle+0x123/0x258 (40)
 [<c024df3b>] acpi_processor_idle+0x0/0x258 (32)
 [<c0101116>] cpu_idle+0x56/0x80 (16)
 [<c03a486c>] start_kernel+0x17c/0x1c0 (12)
 [<c03a43b0>] unknown_bootoption+0x0/0x1f0 (20)

I think it's when my scripts try to set up the IrDA port; the script runs the 
following (I have a weird broken NC6000 IrDA port which needs messing around 
with to work)..

/usr/bin/smcinit -v -s 0x3E8 -f 0x130 -i 4 -d 3 >/dev/null

Of course, the message could've just been coincidental, as it doesn't actually 
refer to the smcs driver at all.

I set preempt_max_latency to zero, but the only messages I've got back from 
the kernel so far are:

( softirq-timer/0-3    |#0): new 3 us maximum-latency wakeup.
( softirq-timer/0-3    |#0): new 1003 us maximum-latency wakeup.
( softirq-timer/0-3    |#0): new 1001 us maximum-latency wakeup.

Which is presumably a good sign.

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-06 11:57 Realtime Preemption, 2.6.12, Beginners Guide? Alistair John Strachan
@ 2005-07-06 12:51 ` Alistair John Strachan
  2005-07-06 13:39   ` Ingo Molnar
  2005-07-06 13:31 ` Ingo Molnar
  1 sibling, 1 reply; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-06 12:51 UTC (permalink / raw)
  To: linux-kernel; +Cc: Ingo Molnar

On Wednesday 06 Jul 2005 12:57, Alistair John Strachan wrote:
[snip]
> Which debugging options are most useful for testing purposes? Is what I've
> selected enough? Also, I got a few unexpected messages in dmesg on bootup.

I decided to just enable everything, as I got a lockup within 5 minutes of 
using the patch. The new options have made the BUG warning a bit more 
verbose, and I thought I'd share the information in case it's useful.

[snip]
> Finally, I got this:
>
> BUG: soft lockup detected on CPU#0!
>  [<c013d7e9>] softlockup_tick+0x89/0xb0 (8)
>  [<c0108590>] timer_interrupt+0x50/0xf0 (20)
>  [<c013da91>] handle_IRQ_event+0x81/0x100 (16)
>  [<c013dbfc>] __do_IRQ+0xec/0x190 (48)
>  [<c0105a28>] do_IRQ+0x48/0x70 (40)
>  =======================
>  [<c024df3b>] acpi_processor_idle+0x0/0x258 (8)
>  [<c0103d03>] common_interrupt+0x1f/0x24 (12)
>  [<c024df3b>] acpi_processor_idle+0x0/0x258 (4)
>  [<c024e05e>] acpi_processor_idle+0x123/0x258 (40)
>  [<c024df3b>] acpi_processor_idle+0x0/0x258 (32)
>  [<c0101116>] cpu_idle+0x56/0x80 (16)
>  [<c03a486c>] start_kernel+0x17c/0x1c0 (12)
>  [<c03a43b0>] unknown_bootoption+0x0/0x1f0 (20)
>

BUG: soft lockup detected on CPU#0!
 [<c010421f>] dump_stack+0x1f/0x30 (20)
 [<c0144a3a>] softlockup_tick+0x8a/0xb0 (24)
 [<c0108607>] timer_interrupt+0x57/0x100 (20)
 [<c0144ce5>] handle_IRQ_event+0x85/0x110 (52)
 [<c0144e4a>] __do_IRQ+0xda/0x170 (44)
 [<c0105b15>] do_IRQ+0x65/0xa0 (933642172)
 =======================
 [<c0103ceb>] common_interrupt+0x1f/0x24 (-942757148)
------------------------------
| showing all locks held by: |  (sed/2285 [f7e3c880, 123]):
------------------------------

Then it continues to boot. I'm getting periodic lockups under high network 
load, however, though I suspect that might be the ipw2200 driver I compiled 
against the realtime-preempt kernel. Are there any known issues with external 
modules versus PREEMPT-RT?

Any way to debug these problems?

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-06 11:57 Realtime Preemption, 2.6.12, Beginners Guide? Alistair John Strachan
  2005-07-06 12:51 ` Alistair John Strachan
@ 2005-07-06 13:31 ` Ingo Molnar
  2005-07-06 15:55   ` Alistair John Strachan
  1 sibling, 1 reply; 101+ messages in thread
From: Ingo Molnar @ 2005-07-06 13:31 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:

> Hi,
> 
> Today I decided to try Ingo's rt-preempt patch on 2.6.12 (V0.7.51-02). 
> I'm most interested in the CONFIG_PREEMPT_RT mode, so I selected this 
> option instead of the others. I enabled a couple of the debugging 
> options, but I wasn't totally clear on which options are most useful, 
> so I just enabled the ones that didn't have a warning about 
> significant overhead, namely..
> 
> CONFIG_DETECT_SOFTLOCKUP=y
> CONFIG_WAKEUP_TIMING=y
> CONFIG_CRITICAL_TIMING=y
> CONFIG_LATENCY_TIMING=y
> 
> Additionally (by mistake) I enabled:
> 
> CONFIG_CRITICAL_IRQSOFF_TIMING=y
> 
> Which does mention overhead.
> 
> Which debugging options are most useful for testing purposes? Is what 
> I've selected enough? [...]

for the first bootup it makes sense to enable most of them - just to 
make sure everything is ok. They have performance overhead, but it 
shouldnt show up during everyday use. (it will show up in benchmarks 
though) Here's the options i have enabled, typically:

 CONFIG_DETECT_SOFTLOCKUP=y
 # CONFIG_SCHEDSTATS is not set
 CONFIG_DEBUG_SLAB=y
 CONFIG_DEBUG_PREEMPT=y
 CONFIG_DEBUG_IRQ_FLAGS=y
 CONFIG_WAKEUP_TIMING=y
 CONFIG_PREEMPT_TRACE=y
 CONFIG_CRITICAL_PREEMPT_TIMING=y
 CONFIG_CRITICAL_IRQSOFF_TIMING=y
 CONFIG_CRITICAL_TIMING=y
 CONFIG_LATENCY_TIMING=y
 CONFIG_LATENCY_TRACE=y
 CONFIG_MCOUNT=y
 CONFIG_RT_DEADLOCK_DETECT=y
 # CONFIG_DEBUG_RT_LOCKING_MODE is not set
 # CONFIG_DEBUG_KOBJECT is not set
 CONFIG_DEBUG_BUGVERBOSE=y
 # CONFIG_DEBUG_INFO is not set
 # CONFIG_DEBUG_FS is not set
 CONFIG_FRAME_POINTER=y
 CONFIG_EARLY_PRINTK=y
 CONFIG_DEBUG_STACKOVERFLOW=y
 # CONFIG_KPROBES is not set
 CONFIG_DEBUG_STACK_USAGE=y
 # CONFIG_DEBUG_PAGEALLOC is not set

the 'big, costly ones' are LATENCY_TRACE, RT_DEADLOCK_DETECT, 
CRITICAL_PREEMPT_TIMING, CRITICAL_IRQSOFF_TIMING, DEBUG_PREEMPT, in cost 
order. The others are relatively low overhead. LATENCY_TRACE is useful 
if you want to send me latency traces - if enabled then you'll get 
/proc/latency_trace traces, whenever you see the 'latency detected' type 
of messages in the system log.

> [...] Also, I got a few unexpected messages in dmesg on bootup.
> Firstly;
>
> spawn_desched_task(00000000)
> desched cpu_callback 3/00000000
> ksoftirqd started up.
> softirq RT prio: 24.
> ksoftirqd started up.
> softirq RT prio: 24.
> [...]
> desched cpu_callback 2/00000000
> desched thread 0 started up.
> softlockup thread 0 started up.
> 
> Why does it print out the same ksoftirqd message six times? Is this 
> expected behaviour?

these messages are harmless status messages - they were added for 
debugging purposes. You are getting 6 of them because there are 6 
separate softirq threads. (but the message is the old one so it talks 
about ksoftirqd - very confusing.) In my tree i have removed these 
printks.

(generally i try to mark every message in the -RT kernel that signals 
some sort of anomaly with a 'BUG:' prefix - that makes it easy to do a 
'dmesg | grep BUG:' to find out whether anything bad is going on. All 
other messages should be benign.)

> [...] Next, I got a warning about CONFIG_CRITICAL_IRQSOFF_TIMING; 
> should this option be enabled?

do you mean the bootup warning about performance? That is just a warning 
to make sure the kernel is not misconfigured during benchmarks - the 
debugging options are otherwise safe and you should be able to use any 
variations of them.

> Finally, I got this:
> 
> BUG: soft lockup detected on CPU#0!
>  [<c013d7e9>] softlockup_tick+0x89/0xb0 (8)
>  [<c0108590>] timer_interrupt+0x50/0xf0 (20)
>  [<c013da91>] handle_IRQ_event+0x81/0x100 (16)
>  [<c013dbfc>] __do_IRQ+0xec/0x190 (48)
>  [<c0105a28>] do_IRQ+0x48/0x70 (40)
>  =======================
>  [<c024df3b>] acpi_processor_idle+0x0/0x258 (8)
>  [<c0103d03>] common_interrupt+0x1f/0x24 (12)
>  [<c024df3b>] acpi_processor_idle+0x0/0x258 (4)
>  [<c024e05e>] acpi_processor_idle+0x123/0x258 (40)
>  [<c024df3b>] acpi_processor_idle+0x0/0x258 (32)
>  [<c0101116>] cpu_idle+0x56/0x80 (16)
>  [<c03a486c>] start_kernel+0x17c/0x1c0 (12)
>  [<c03a43b0>] unknown_bootoption+0x0/0x1f0 (20)

yes, this is a problem. You can probably work it around by disabling 
ACPI, but it would be better to debug and fix it. The message was 
generated because the kernel spent too much time [more than 10 seconds] 
in acpi_processor_idle(), and the softlockup-thread (which runs at 
SCHED_FIFO prio 99) was not scheduled for that amount of time. [or it 
thought it was not scheduled.] Was there any suspend/resume activity 
while you got that message?

> I think it's when my scripts try to set up the IrDA port; the script 
> runs the following (I have a weird broken NC6000 IrDA port which needs 
> messing around with to work)..
> 
> /usr/bin/smcinit -v -s 0x3E8 -f 0x130 -i 4 -d 3 >/dev/null
> 
> Of course, the message could've just been coincidental, as it doesn't 
> actually refer to the smcs driver at all.
> 
> I set preempt_max_latency to zero, but the only messages I've got back 
> from the kernel so far are:
> 
> ( softirq-timer/0-3    |#0): new 3 us maximum-latency wakeup.
> ( softirq-timer/0-3    |#0): new 1003 us maximum-latency wakeup.
> ( softirq-timer/0-3    |#0): new 1001 us maximum-latency wakeup.
> 
> Which is presumably a good sign.

it's good in terms of stability, but the 1003 usecs maximum wakeup 
latency is bad - you should be getting much lower latencies. Could you 
enable LATENCY_TRACING and send me the /proc/latency_trace file? [if 
it's long then in bz2 format.] You can double-check that it's the right 
one: the trace is human-readable and should go roughly from 1 usec to 
1003 usecs. Looking at that trace i can probably tell more about how 
this latency happened.

	Ingo

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-06 12:51 ` Alistair John Strachan
@ 2005-07-06 13:39   ` Ingo Molnar
  2005-07-06 15:58     ` Alistair John Strachan
  0 siblings, 1 reply; 101+ messages in thread
From: Ingo Molnar @ 2005-07-06 13:39 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:

> Then it continues to boot. I'm getting periodic lockups under high 
> network load, however, though I suspect that might be the ipw2200 
> driver I compiled against the realtime-preempt kernel. Are there any 
> known issues with external modules versus PREEMPT-RT?

you should keep an eye on compile-time warnings, but otherwise, most of 
the API deviations should be runtime detected and should be reported in 
one way or another (if you have all debugging options enabled).

> Any way to debug these problems?

Is it a hard lockup? One good way to debug it is via serial logging and 
the NMI watchdog. I've attached a QuickStart below. Another method to 
debug hard lockups is to enable 'direct keyboard interrupts', via:

  echo 1 > /proc/sys/kernel/debug_direct_keyboard

note that with that switch activated you can use SysRq even when the 
system is otherwise locked up, but the keyboard IRQ might crash. So the 
best tactic is to not use the keyboard from that point on, only for the 
short period of time when you try to get info out of a crashed system, 
via SysRq. There's more about this flag in this post:

  http://www.uwsg.iu.edu/hypermail/linux/kernel/0411.2/0936.html

	Ingo

-------------------------
to set up serial logging:
-------------------------

install a null modem cable (== serial cable) to one of the serial ports
of the server, connect the cable to another box, run a terminal program
on that other box (e.g. "minicom -m" - do Alt-L to switch on logging
after starting it up) and set up the server's kernel to do serial
logging: enable CONFIG_SERIAL_8250_CONSOLE and
CONFIG_SERIAL_CORE_CONSOLE, recompile & reinstall the kernel, add
"console=ttyS0,38400 console=tty0" to your /etc/grub.conf or
/etc/lilo.conf kernel boot line, reboot the server with the new kernel
command line - and configure minicom to run with that speed (Alt-S).

e.g. my /etc/grub.conf has:

title test-2.6 (test-2.6)
        root (hd0,0)
        kernel /boot/bzImage root=/dev/sda1 console=ttyS0,38400 console=tty0 nmi_watchdog=1 kernel_preempt=1

if everything is set up correctly then you should see kernel messages
showing up in the minicom session when you boot up.

When the messages do not show up then typical errors are mismatch
between the serial port (or speed) and the device names used - if it's
COM2 then use ttyS1, and dont forget to set up the serial speed option
of minicom, etc. You can test the serial connection by doing:

	echo x > /dev/ttyS0

and that should show up in the minicom session on the other box.

to set up early-printk:
-----------------------

occasionally lockups/crashes happen so early in the bootup that nothing
makes it even to the serial log. In that case the 'earlyprintk' feature
is most useful. It is default-enabled on all 2.6 kernels, you only need
to add one more boot parameter to activate it over the serial console:

   earlyprintk=serial,ttyS0,38400

to set up the NMI watchdog:
---------------------------

add nmi_watchdog=1 to your boot parameters and reboot - that should be
all to get it active. If all CPU's NMI count increases in
/proc/interrupts then it's working fine. If the counts do not increase
(or only one CPU increases it) then try nmi_watchdog=2 - this is another
type of NMI that might work better. (Very rarely there are boxes that
dont have reliable NMI counts with 1 and 2 either - but i dont think
your box is one of those.)

once the NMI watchdog is up and running it should catch all hard lockups
and print backtraces to the serial console - even if you are within X
while the lockup happens. You can test hard lockups by running the
attached 'lockupcli' userspace code as root - it turns off interrupts
and goes into an infinite loop => instant lockup. The NMI watchdog
should notice this condition after a couple of seconds and should abort
the task, printing a kernel trace as well. Your box should be back in
working order after that point.

now for the real lockup your box wont be 'fixed' by the NMI watchdog, it
will likely stay locked up, but you should get messages on the serial
console, giving us an idea where the kernel locked up and why. (Very
rarely it happens that not even the NMI watchdog prints anything for a
hard lockup - this is often the sign of hardware problems.)

	Ingo

--- lockupcli.c

main ()
{
        iopl(3);
        for (;;) asm("cli");
}


^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-06 13:31 ` Ingo Molnar
@ 2005-07-06 15:55   ` Alistair John Strachan
  2005-07-06 16:24     ` Ingo Molnar
  0 siblings, 1 reply; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-06 15:55 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 4878 bytes --]

On Wednesday 06 Jul 2005 14:31, Ingo Molnar wrote:
[snip]
>
> for the first bootup it makes sense to enable most of them - just to
> make sure everything is ok. They have performance overhead, but it
> shouldnt show up during everyday use. (it will show up in benchmarks
> though) Here's the options i have enabled, typically:

Okay, I enabled everything.

[snip]
> > [...] Also, I got a few unexpected messages in dmesg on bootup.
> > Firstly;
> >
> > spawn_desched_task(00000000)
> > desched cpu_callback 3/00000000
> > ksoftirqd started up.
> > softirq RT prio: 24.
> > ksoftirqd started up.
> > softirq RT prio: 24.
> > [...]
> > desched cpu_callback 2/00000000
> > desched thread 0 started up.
> > softlockup thread 0 started up.
> >
> > Why does it print out the same ksoftirqd message six times? Is this
> > expected behaviour?
>
> these messages are harmless status messages - they were added for
> debugging purposes. You are getting 6 of them because there are 6
> separate softirq threads. (but the message is the old one so it talks
> about ksoftirqd - very confusing.) In my tree i have removed these
> printks.

That's good. I'm deliberately critical because I thought there might be a 
problem on my machine somewhere. Normally I wouldn't think twice about 
ksoftirqd's messages.

>
> (generally i try to mark every message in the -RT kernel that signals
> some sort of anomaly with a 'BUG:' prefix - that makes it easy to do a
> 'dmesg | grep BUG:' to find out whether anything bad is going on. All
> other messages should be benign.)

Okay, I've got multiple other BUG: messages within 2-3 minutes of booting that 
highlight problems in areas other than ACPI. Are they useful to you?

>
> > [...] Next, I got a warning about CONFIG_CRITICAL_IRQSOFF_TIMING;
> > should this option be enabled?
>
> do you mean the bootup warning about performance? That is just a warning
> to make sure the kernel is not misconfigured during benchmarks - the
> debugging options are otherwise safe and you should be able to use any
> variations of them.

Great.

>
> > Finally, I got this:
> >
> > BUG: soft lockup detected on CPU#0!
> >  [<c013d7e9>] softlockup_tick+0x89/0xb0 (8)
> >  [<c0108590>] timer_interrupt+0x50/0xf0 (20)
> >  [<c013da91>] handle_IRQ_event+0x81/0x100 (16)
> >  [<c013dbfc>] __do_IRQ+0xec/0x190 (48)
> >  [<c0105a28>] do_IRQ+0x48/0x70 (40)
> >  =======================
> >  [<c024df3b>] acpi_processor_idle+0x0/0x258 (8)
> >  [<c0103d03>] common_interrupt+0x1f/0x24 (12)
> >  [<c024df3b>] acpi_processor_idle+0x0/0x258 (4)
> >  [<c024e05e>] acpi_processor_idle+0x123/0x258 (40)
> >  [<c024df3b>] acpi_processor_idle+0x0/0x258 (32)
> >  [<c0101116>] cpu_idle+0x56/0x80 (16)
> >  [<c03a486c>] start_kernel+0x17c/0x1c0 (12)
> >  [<c03a43b0>] unknown_bootoption+0x0/0x1f0 (20)
>
> yes, this is a problem. You can probably work it around by disabling
> ACPI, but it would be better to debug and fix it. The message was
> generated because the kernel spent too much time [more than 10 seconds]
> in acpi_processor_idle(), and the softlockup-thread (which runs at
> SCHED_FIFO prio 99) was not scheduled for that amount of time. [or it
> thought it was not scheduled.] Was there any suspend/resume activity
> while you got that message?

No, this is during bootup that it occurs. Suspend and resume do work and are 
compiled in on my laptop, but were never utilised.

[snip]
> > ( softirq-timer/0-3    |#0): new 3 us maximum-latency wakeup.
> > ( softirq-timer/0-3    |#0): new 1003 us maximum-latency wakeup.
> > ( softirq-timer/0-3    |#0): new 1001 us maximum-latency wakeup.
> >
> > Which is presumably a good sign.
>
> it's good in terms of stability, but the 1003 usecs maximum wakeup
> latency is bad - you should be getting much lower latencies. Could you
> enable LATENCY_TRACING and send me the /proc/latency_trace file? [if
> it's long then in bz2 format.] You can double-check that it's the right
> one: the trace is human-readable and should go roughly from 1 usec to
> 1003 usecs. Looking at that trace i can probably tell more about how
> this latency happened.

I've got a pair of nearly identical traces that highlight a 2645us latency in 
smp_apic_timer_interrupt. I don't know how the trace is formatted, so I can't 
tell if it occurred before or after this function call. I also can't see how 
a ~1000us latency translates to a ~2600us latency in the trace.

Since both traces were under 6K each, and I think the list limit is higher, I 
risked it and have attached both.

Annoyingly, my original messages (sent SEVERAL hours ago) seem not to have 
gotten through to the list. Whatever braindead filter is nuking them, it 
needs to be fixed.

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

[-- Attachment #2: trace --]
[-- Type: text/plain, Size: 5334 bytes --]

preemption latency trace v1.1.4 on 2.6.12-RT-V0.7.51-02
--------------------------------------------------------------------
 latency: 2693 us, #77/77, CPU#0 | (M:rt VP:0, KP:1, SP:1 HP:1 #P:1)
    -----------------
    | task: softirq-timer/0-3 (uid:0 nice:-10 policy:0 rt_prio:0)
    -----------------

                 _------=> CPU#            
                / _-----=> irqs-off        
               | / _----=> need-resched    
               || / _---=> hardirq/softirq 
               ||| / _--=> preempt-depth   
               |||| /                      
               |||||     delay             
   cmd     pid ||||| time  |   caller      
      \   /    |||||   \   |   /           
  <idle>-0     0dnh3    0us!: <70617773> (<00726570>)
  <idle>-0     0dnh3    0us : __trace_start_sched_wakeup (try_to_wake_up)
  <idle>-0     0dnh3    0us : __trace_start_sched_wakeup <softirq--3> (69 0)
  <idle>-0     0dnh2    1us : try_to_wake_up <softirq--3> (69 8c)
  <idle>-0     0dnh1    1us : preempt_schedule (try_to_wake_up)
  <idle>-0     0dnh1    2us : wake_up_process (trigger_softirqs)
  <idle>-0     0dnh1    2us : local_irq_restore (do_softirq)
  <idle>-0     0dnh.    3us < (608)
  <idle>-0     0dn..    3us : acpi_hw_register_write (acpi_set_register)
  <idle>-0     0dn..    4us : acpi_hw_low_level_write (acpi_hw_register_write)
  <idle>-0     0dn..    4us+: acpi_os_write_port (acpi_hw_low_level_write)
  <idle>-0     0dn..    7us!: acpi_hw_low_level_write (acpi_hw_register_write)
  <idle>-0     0dnh. 2645us : smp_apic_timer_interrupt (c0252485 0 0)
  <idle>-0     0dnh. 2646us : irq_exit (apic_timer_interrupt)
  <idle>-0     0dnh1 2646us : do_softirq (irq_exit)
  <idle>-0     0dnh1 2646us : __local_irq_save (do_softirq)
  <idle>-0     0dnh1 2647us : __do_softirq (do_softirq)
  <idle>-0     0dnh1 2647us : trigger_softirqs (do_softirq)
  <idle>-0     0dnh1 2647us : wakeup_softirqd (trigger_softirqs)
  <idle>-0     0dnh1 2648us : local_irq_restore (do_softirq)
  <idle>-0     0dnh. 2648us+< (608)
  <idle>-0     0dnh. 2652us : do_IRQ (c0252485 0 0)
  <idle>-0     0dnh. 2652us : __local_irq_save (__do_IRQ)
  <idle>-0     0dnh1 2653us+: mask_and_ack_8259A (__do_IRQ)
  <idle>-0     0dnh1 2659us : preempt_schedule (__do_IRQ)
  <idle>-0     0dnh1 2660us : redirect_hardirq (__do_IRQ)
  <idle>-0     0dnh. 2660us : preempt_schedule (__do_IRQ)
  <idle>-0     0dnh. 2660us : handle_IRQ_event (__do_IRQ)
  <idle>-0     0dnh. 2661us : timer_interrupt (handle_IRQ_event)
  <idle>-0     0dnh1 2661us : mark_offset_tsc (timer_interrupt)
  <idle>-0     0dnh1 2662us : preempt_schedule (mark_offset_tsc)
  <idle>-0     0dnh1 2662us : preempt_schedule (mark_offset_tsc)
  <idle>-0     0dnh1 2663us : do_timer (timer_interrupt)
  <idle>-0     0dnh1 2663us : update_process_times (timer_interrupt)
  <idle>-0     0dnh1 2663us : account_system_time (update_process_times)
  <idle>-0     0dnh1 2664us : update_mem_hiwater (update_process_times)
  <idle>-0     0dnh1 2664us : run_local_timers (update_process_times)
  <idle>-0     0dnh1 2664us : raise_softirq (update_process_times)
  <idle>-0     0dnh1 2665us : scheduler_tick (update_process_times)
  <idle>-0     0dnh1 2665us : sched_clock (scheduler_tick)
  <idle>-0     0dnh1 2666us : softlockup_tick (timer_interrupt)
  <idle>-0     0dnh. 2666us : preempt_schedule (timer_interrupt)
  <idle>-0     0dnh1 2666us : note_interrupt (__do_IRQ)
  <idle>-0     0dnh1 2667us : end_8259A_irq (__do_IRQ)
  <idle>-0     0dnh1 2667us+: enable_8259A_irq (__do_IRQ)
  <idle>-0     0dnh1 2670us : preempt_schedule (__do_IRQ)
  <idle>-0     0dnh. 2670us : preempt_schedule (__do_IRQ)
  <idle>-0     0dnh. 2671us : local_irq_restore (__do_IRQ)
  <idle>-0     0dnh. 2671us : irq_exit (do_IRQ)
  <idle>-0     0dnh1 2671us : do_softirq (irq_exit)
  <idle>-0     0dnh1 2672us : __local_irq_save (do_softirq)
  <idle>-0     0dnh1 2672us : __do_softirq (do_softirq)
  <idle>-0     0dnh1 2672us : trigger_softirqs (do_softirq)
  <idle>-0     0dnh1 2672us : wakeup_softirqd (trigger_softirqs)
  <idle>-0     0dnh1 2673us : local_irq_restore (do_softirq)
  <idle>-0     0dnh. 2673us+< (608)
  <idle>-0     0dn.. 2679us : local_irq_enable (acpi_processor_idle)
  <idle>-0     0Dn.. 2679us : preempt_schedule (acpi_processor_idle)
  <idle>-0     0Dn.. 2679us : irqs_disabled (preempt_schedule)
  <idle>-0     0Dnh. 2680us : __schedule (preempt_schedule)
  <idle>-0     0Dnh. 2680us : profile_hit (__schedule)
  <idle>-0     0Dnh1 2681us : sched_clock (__schedule)
  <idle>-0     0Dnh2 2681us : dequeue_task (__schedule)
  <idle>-0     0Dnh2 2682us : recalc_task_prio (__schedule)
  <idle>-0     0Dnh2 2682us : effective_prio (recalc_task_prio)
  <idle>-0     0Dnh2 2683us : enqueue_task (__schedule)
  <idle>-0     0Dnh2 2683us+: trace_array (__schedule)
  <idle>-0     0Dnh2 2685us : trace_array <softirq--3> (69 6e)
  <idle>-0     0Dnh2 2686us+: trace_array (__schedule)
softirq--3     0Dnh2 2690us : __switch_to (__schedule)
softirq--3     0Dnh2 2691us : __schedule <<idle>-0> (8c 69)
softirq--3     0Dnh2 2691us : finish_task_switch (__schedule)
softirq--3     0Dnh1 2691us : trace_stop_sched_switched (finish_task_switch)
softirq--3     0Dnh2 2692us : trace_stop_sched_switched <softirq--3> (69 0)
softirq--3     0Dnh2 2693us : trace_stop_sched_switched (finish_task_switch)


vim:ft=help

[-- Attachment #3: trace2 --]
[-- Type: text/plain, Size: 5411 bytes --]

preemption latency trace v1.1.4 on 2.6.12-RT-V0.7.51-02
--------------------------------------------------------------------
 latency: 2692 us, #78/78, CPU#0 | (M:rt VP:0, KP:1, SP:1 HP:1 #P:1)
    -----------------
    | task: softirq-timer/0-3 (uid:0 nice:-10 policy:0 rt_prio:0)
    -----------------

                 _------=> CPU#            
                / _-----=> irqs-off        
               | / _----=> need-resched    
               || / _---=> hardirq/softirq 
               ||| / _--=> preempt-depth   
               |||| /                      
               |||||     delay             
   cmd     pid ||||| time  |   caller      
      \   /    |||||   \   |   /           
  <idle>-0     0dnh3    0us!: <70617773> (<00726570>)
  <idle>-0     0dnh3    0us : __trace_start_sched_wakeup (try_to_wake_up)
  <idle>-0     0dnh3    0us : __trace_start_sched_wakeup <softirq--3> (69 0)
  <idle>-0     0dnh2    1us : try_to_wake_up <softirq--3> (69 8c)
  <idle>-0     0dnh1    1us : preempt_schedule (try_to_wake_up)
  <idle>-0     0dnh1    1us : wake_up_process (trigger_softirqs)
  <idle>-0     0dnh1    2us : local_irq_restore (do_softirq)
  <idle>-0     0dnh.    2us < (608)
  <idle>-0     0dn..    3us : acpi_hw_low_level_read (acpi_hw_register_read)
  <idle>-0     0dn..    4us : acpi_hw_register_write (acpi_set_register)
  <idle>-0     0dn..    4us : acpi_hw_low_level_write (acpi_hw_register_write)
  <idle>-0     0dn..    4us+: acpi_os_write_port (acpi_hw_low_level_write)
  <idle>-0     0dn..    7us!: acpi_hw_low_level_write (acpi_hw_register_write)
  <idle>-0     0dnh. 2645us : smp_apic_timer_interrupt (c0252485 0 0)
  <idle>-0     0dnh. 2646us : irq_exit (apic_timer_interrupt)
  <idle>-0     0dnh1 2646us : do_softirq (irq_exit)
  <idle>-0     0dnh1 2647us : __local_irq_save (do_softirq)
  <idle>-0     0dnh1 2647us : __do_softirq (do_softirq)
  <idle>-0     0dnh1 2647us : trigger_softirqs (do_softirq)
  <idle>-0     0dnh1 2648us : wakeup_softirqd (trigger_softirqs)
  <idle>-0     0dnh1 2648us : local_irq_restore (do_softirq)
  <idle>-0     0dnh. 2648us+< (608)
  <idle>-0     0dnh. 2652us : do_IRQ (c0252485 0 0)
  <idle>-0     0dnh. 2652us : __local_irq_save (__do_IRQ)
  <idle>-0     0dnh1 2653us+: mask_and_ack_8259A (__do_IRQ)
  <idle>-0     0dnh1 2659us : preempt_schedule (__do_IRQ)
  <idle>-0     0dnh1 2660us : redirect_hardirq (__do_IRQ)
  <idle>-0     0dnh. 2660us : preempt_schedule (__do_IRQ)
  <idle>-0     0dnh. 2661us : handle_IRQ_event (__do_IRQ)
  <idle>-0     0dnh. 2661us : timer_interrupt (handle_IRQ_event)
  <idle>-0     0dnh1 2661us : mark_offset_tsc (timer_interrupt)
  <idle>-0     0dnh1 2662us : preempt_schedule (mark_offset_tsc)
  <idle>-0     0dnh1 2662us : preempt_schedule (mark_offset_tsc)
  <idle>-0     0dnh1 2663us : do_timer (timer_interrupt)
  <idle>-0     0dnh1 2663us : update_process_times (timer_interrupt)
  <idle>-0     0dnh1 2663us : account_system_time (update_process_times)
  <idle>-0     0dnh1 2664us : update_mem_hiwater (update_process_times)
  <idle>-0     0dnh1 2664us : run_local_timers (update_process_times)
  <idle>-0     0dnh1 2664us : raise_softirq (update_process_times)
  <idle>-0     0dnh1 2665us : scheduler_tick (update_process_times)
  <idle>-0     0dnh1 2665us : sched_clock (scheduler_tick)
  <idle>-0     0dnh1 2666us : softlockup_tick (timer_interrupt)
  <idle>-0     0dnh. 2666us : preempt_schedule (timer_interrupt)
  <idle>-0     0dnh1 2666us : note_interrupt (__do_IRQ)
  <idle>-0     0dnh1 2667us : end_8259A_irq (__do_IRQ)
  <idle>-0     0dnh1 2667us+: enable_8259A_irq (__do_IRQ)
  <idle>-0     0dnh1 2670us : preempt_schedule (__do_IRQ)
  <idle>-0     0dnh. 2670us : preempt_schedule (__do_IRQ)
  <idle>-0     0dnh. 2671us : local_irq_restore (__do_IRQ)
  <idle>-0     0dnh. 2671us : irq_exit (do_IRQ)
  <idle>-0     0dnh1 2671us : do_softirq (irq_exit)
  <idle>-0     0dnh1 2672us : __local_irq_save (do_softirq)
  <idle>-0     0dnh1 2672us : __do_softirq (do_softirq)
  <idle>-0     0dnh1 2672us : trigger_softirqs (do_softirq)
  <idle>-0     0dnh1 2673us : wakeup_softirqd (trigger_softirqs)
  <idle>-0     0dnh1 2673us : local_irq_restore (do_softirq)
  <idle>-0     0dnh. 2673us+< (608)
  <idle>-0     0dn.. 2678us : local_irq_enable (acpi_processor_idle)
  <idle>-0     0Dn.. 2679us : preempt_schedule (acpi_processor_idle)
  <idle>-0     0Dn.. 2679us : irqs_disabled (preempt_schedule)
  <idle>-0     0Dnh. 2679us : __schedule (preempt_schedule)
  <idle>-0     0Dnh. 2680us : profile_hit (__schedule)
  <idle>-0     0Dnh1 2680us : sched_clock (__schedule)
  <idle>-0     0Dnh2 2681us : dequeue_task (__schedule)
  <idle>-0     0Dnh2 2681us : recalc_task_prio (__schedule)
  <idle>-0     0Dnh2 2681us : effective_prio (recalc_task_prio)
  <idle>-0     0Dnh2 2682us : enqueue_task (__schedule)
  <idle>-0     0Dnh2 2682us+: trace_array (__schedule)
  <idle>-0     0Dnh2 2684us : trace_array <softirq--3> (69 6e)
  <idle>-0     0Dnh2 2685us+: trace_array (__schedule)
softirq--3     0Dnh2 2689us : __switch_to (__schedule)
softirq--3     0Dnh2 2689us : __schedule <<idle>-0> (8c 69)
softirq--3     0Dnh2 2690us : finish_task_switch (__schedule)
softirq--3     0Dnh1 2690us : trace_stop_sched_switched (finish_task_switch)
softirq--3     0Dnh2 2691us : trace_stop_sched_switched <softirq--3> (69 0)
softirq--3     0Dnh2 2691us : trace_stop_sched_switched (finish_task_switch)


vim:ft=help

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-06 13:39   ` Ingo Molnar
@ 2005-07-06 15:58     ` Alistair John Strachan
  2005-07-06 16:28       ` Ingo Molnar
  0 siblings, 1 reply; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-06 15:58 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

On Wednesday 06 Jul 2005 14:39, Ingo Molnar wrote:
> * Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:
> > Then it continues to boot. I'm getting periodic lockups under high
> > network load, however, though I suspect that might be the ipw2200
> > driver I compiled against the realtime-preempt kernel. Are there any
> > known issues with external modules versus PREEMPT-RT?
>
> you should keep an eye on compile-time warnings, but otherwise, most of
> the API deviations should be runtime detected and should be reported in
> one way or another (if you have all debugging options enabled).

I now no longer suspect the ipw2200 module. It locks up within 5 minutes, 
reliably, with or without network load. I seem to always have to promote a 
large redraw in X11 before it occurs, but this is just hand waving, I don't 
really have any evidence.

>
> > Any way to debug these problems?
>
> Is it a hard lockup? One good way to debug it is via serial logging and
> the NMI watchdog. I've attached a QuickStart below. Another method to
> debug hard lockups is to enable 'direct keyboard interrupts', via:
>
>   echo 1 > /proc/sys/kernel/debug_direct_keyboard

It's a hard lockup, and I'll attempt to carry this out.

>
> note that with that switch activated you can use SysRq even when the
> system is otherwise locked up, but the keyboard IRQ might crash. So the
> best tactic is to not use the keyboard from that point on, only for the
> short period of time when you try to get info out of a crashed system,
> via SysRq. There's more about this flag in this post:
>
>   http://www.uwsg.iu.edu/hypermail/linux/kernel/0411.2/0936.html
>
> 	Ingo

As usual Ingo, this is a thorough answer to my query and it explains exactly 
what I need to do. Fortunately this is an x86 laptop with a serial port, and 
I can easily find or make a cable to debug it over the serial console. I hope 
to have some useful information to you by the end of the day.

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-06 15:55   ` Alistair John Strachan
@ 2005-07-06 16:24     ` Ingo Molnar
  2005-07-06 16:37       ` Alistair John Strachan
  0 siblings, 1 reply; 101+ messages in thread
From: Ingo Molnar @ 2005-07-06 16:24 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:

> > (generally i try to mark every message in the -RT kernel that signals
> > some sort of anomaly with a 'BUG:' prefix - that makes it easy to do a
> > 'dmesg | grep BUG:' to find out whether anything bad is going on. All
> > other messages should be benign.)
> 
> Okay, I've got multiple other BUG: messages within 2-3 minutes of 
> booting that highlight problems in areas other than ACPI. Are they 
> useful to you?

yeah, please send them too - typically it's the first message that 
matters most (especially if the system crashes - which isnt the case 
here) - but sometimes the other ones are independent.

> > yes, this is a problem. You can probably work it around by disabling
> > ACPI, but it would be better to debug and fix it. The message was
> > generated because the kernel spent too much time [more than 10 seconds]
> > in acpi_processor_idle(), and the softlockup-thread (which runs at
> > SCHED_FIFO prio 99) was not scheduled for that amount of time. [or it
> > thought it was not scheduled.] Was there any suspend/resume activity
> > while you got that message?
> 
> No, this is during bootup that it occurs. Suspend and resume do work 
> and are compiled in on my laptop, but were never utilised.

was there a 10 seconds delay during bootup for such a message to be 
generated? Nothing should delay the softlockup threads. (but maybe their 
initial timekeeping is somehow impacted.)

> I've got a pair of nearly identical traces that highlight a 2645us 
> latency in smp_apic_timer_interrupt. I don't know how the trace is 
> formatted, so I can't tell if it occurred before or after this 
> function call. I also can't see how a ~1000us latency translates to a 
> ~2600us latency in the trace.
> 
> Since both traces were under 6K each, and I think the list limit is 
> higher, I risked it and have attached both.

thanks. They do show a real regression. softirq--3 got woken up at 
timestamp 1us:

  <idle>-0     0dnh2    1us : try_to_wake_up <softirq--3> (69 8c)

then we return from the (presumably timer) interrupt at timestamp 3us:

  <idle>-0     0dnh.    3us < (608)

( '<' in the trace signals return activity - can happen for syscalls and 
for interrupts.)

but the ACPI code is busy going to sleep:

  <idle>-0     0dn..    3us : acpi_hw_register_write (acpi_set_register)
  <idle>-0     0dn..    4us : acpi_hw_low_level_write (acpi_hw_register_write)
  <idle>-0     0dn..    4us+: acpi_os_write_port (acpi_hw_low_level_write)
  <idle>-0     0dn..    7us!: acpi_hw_low_level_write (acpi_hw_register_write)
  <idle>-0     0dnh. 2645us : smp_apic_timer_interrupt (c0252485 0 0)

and doesnt return for another 2638 microseconds!

the bug is probably that the ACPI code became interruptible when we 
introduced the IRQ soft-flag. This is clearly visible from the "d" flag:

                 _------=> CPU#
                / _-----=> irqs-off
               | / _----=> need-resched
               || / _---=> hardirq/softirq
               ||| / _--=> preempt-depth
               |||| /
               |||||     delay
   cmd     pid ||||| time  |   caller
      \   /    |||||   \   |   /
  <idle>-0     0dn..    3us : acpi_hw_register_write (acpi_set_register)
    /-----------^
 here

small 'd' means the soft IRQ-flag was disabled. Capital 'D' means that 
the CPU's irq-flag got disabled too. The ACPI code, when it prepares to 
sleep, has to disable direct interrupts too, otherwise the above 
scenario may occur. If a timer interrupt hits the ACPI code in that 
small window where it has already checked for need_resched(), but has 
not gone to sleep yet (so it cannot react to the timer IRQ by waking 
up), then we lose the wakeup.

could you try the patch below (or the -51-05 patch that i just 
uploaded), does it fix this latency?

	Ingo

Index: linux/arch/i386/kernel/process.c
===================================================================
--- linux.orig/arch/i386/kernel/process.c
+++ linux/arch/i386/kernel/process.c
@@ -211,7 +211,7 @@ EXPORT_SYMBOL_GPL(cpu_idle_wait);
  */
 static void mwait_idle(void)
 {
-	local_irq_enable();
+	raw_local_irq_enable();
 
 	if (!need_resched() && !need_resched_delayed()) {
 		set_thread_flag(TIF_POLLING_NRFLAG);
Index: linux/drivers/acpi/processor_idle.c
===================================================================
--- linux.orig/drivers/acpi/processor_idle.c
+++ linux/drivers/acpi/processor_idle.c
@@ -179,14 +179,14 @@ static void acpi_processor_idle (void)
 	 * Interrupts must be disabled during bus mastering calculations and
 	 * for C2/C3 transitions.
 	 */
-	local_irq_disable();
+	raw_local_irq_disable();
 
 	/*
 	 * Check whether we truly need to go idle, or should
 	 * reschedule:
 	 */
 	if (unlikely(need_resched())) {
-		local_irq_enable();
+		raw_local_irq_enable();
 		return;
 	}
 
@@ -248,7 +248,7 @@ static void acpi_processor_idle (void)
 		 *      issues (e.g. floppy DMA transfer overrun/underrun).
 		 */
 		if (pr->power.bm_activity & cx->demotion.threshold.bm) {
-			local_irq_enable();
+			raw_local_irq_enable();
 			next_state = cx->demotion.state;
 			goto end;
 		}
@@ -272,7 +272,7 @@ static void acpi_processor_idle (void)
 		if (pm_idle_save)
 			pm_idle_save();
 		else
-			safe_halt();
+			raw_safe_halt();
 		/*
                  * TBD: Can't get time duration while in C1, as resumes
 		 *      go to an ISR rather than here.  Need to instrument
@@ -291,7 +291,7 @@ static void acpi_processor_idle (void)
 		/* Get end time (ticks) */
 		t2 = inl(acpi_fadt.xpm_tmr_blk.address);
 		/* Re-enable interrupts */
-		local_irq_enable();
+		raw_local_irq_enable();
 		/* Compute time (ticks) that we were actually asleep */
 		sleep_ticks = ticks_elapsed(t1, t2) - cx->latency_ticks - C2_OVERHEAD;
 		break;
@@ -310,13 +310,13 @@ static void acpi_processor_idle (void)
 		/* Enable bus master arbitration */
 		acpi_set_register(ACPI_BITREG_ARB_DISABLE, 0, ACPI_MTX_DO_NOT_LOCK);
 		/* Re-enable interrupts */
-		local_irq_enable();
+		raw_local_irq_enable();
 		/* Compute time (ticks) that we were actually asleep */
 		sleep_ticks = ticks_elapsed(t1, t2) - cx->latency_ticks - C3_OVERHEAD;
 		break;
 
 	default:
-		local_irq_enable();
+		raw_local_irq_enable();
 		return;
 	}
 
@@ -392,7 +392,7 @@ end:
 	if (pm_idle_save)
 		pm_idle_save();
 	else
-		safe_halt();
+		raw_safe_halt();
 	return;
 }
 
Index: linux/include/asm-i386/system.h
===================================================================
--- linux.orig/include/asm-i386/system.h
+++ linux/include/asm-i386/system.h
@@ -469,8 +469,6 @@ struct alt_instr { 
 
 #include <linux/rt_irq.h>
 
-#define safe_halt()	do { local_irq_enable(); __asm__ __volatile__("hlt": : :"memory"); } while (0)
-
 /*
  * disable hlt during certain critical i/o operations
  */

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-06 15:58     ` Alistair John Strachan
@ 2005-07-06 16:28       ` Ingo Molnar
  2005-07-06 16:31         ` Alistair John Strachan
  0 siblings, 1 reply; 101+ messages in thread
From: Ingo Molnar @ 2005-07-06 16:28 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:

> On Wednesday 06 Jul 2005 14:39, Ingo Molnar wrote:
> > * Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:
> > > Then it continues to boot. I'm getting periodic lockups under high
> > > network load, however, though I suspect that might be the ipw2200
> > > driver I compiled against the realtime-preempt kernel. Are there any
> > > known issues with external modules versus PREEMPT-RT?
> >
> > you should keep an eye on compile-time warnings, but otherwise, most of
> > the API deviations should be runtime detected and should be reported in
> > one way or another (if you have all debugging options enabled).
> 
> I now no longer suspect the ipw2200 module. It locks up within 5 
> minutes, reliably, with or without network load. I seem to always have 
> to promote a large redraw in X11 before it occurs, but this is just 
> hand waving, I don't really have any evidence.

just to make sure: you dont have debug_direct_keyboard when using the 
console keyboard and mouse, correct? Sometimes i forget to turn it off 
and i get a crash in the keyboard or mouse irq after some time. Under X 
that often looks like a silent hard lockup.

	Ingo

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-06 16:28       ` Ingo Molnar
@ 2005-07-06 16:31         ` Alistair John Strachan
  0 siblings, 0 replies; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-06 16:31 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

On Wednesday 06 Jul 2005 17:28, Ingo Molnar wrote:
> * Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:
> > On Wednesday 06 Jul 2005 14:39, Ingo Molnar wrote:
> > > * Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:
> > > > Then it continues to boot. I'm getting periodic lockups under high
> > > > network load, however, though I suspect that might be the ipw2200
> > > > driver I compiled against the realtime-preempt kernel. Are there any
> > > > known issues with external modules versus PREEMPT-RT?
> > >
> > > you should keep an eye on compile-time warnings, but otherwise, most of
> > > the API deviations should be runtime detected and should be reported in
> > > one way or another (if you have all debugging options enabled).
> >
> > I now no longer suspect the ipw2200 module. It locks up within 5
> > minutes, reliably, with or without network load. I seem to always have
> > to promote a large redraw in X11 before it occurs, but this is just
> > hand waving, I don't really have any evidence.
>
> just to make sure: you dont have debug_direct_keyboard when using the
> console keyboard and mouse, correct? Sometimes i forget to turn it off
> and i get a crash in the keyboard or mouse irq after some time. Under X
> that often looks like a silent hard lockup.

Nope, this effect is independent of any attempt to debug the hardlock. I've 
not played with debug_direct_keyboard at all before it happens.

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-06 16:24     ` Ingo Molnar
@ 2005-07-06 16:37       ` Alistair John Strachan
  2005-07-06 16:56         ` Alistair John Strachan
  0 siblings, 1 reply; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-06 16:37 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

On Wednesday 06 Jul 2005 17:24, Ingo Molnar wrote:
> * Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:
> > > (generally i try to mark every message in the -RT kernel that signals
> > > some sort of anomaly with a 'BUG:' prefix - that makes it easy to do a
> > > 'dmesg | grep BUG:' to find out whether anything bad is going on. All
> > > other messages should be benign.)
> >
> > Okay, I've got multiple other BUG: messages within 2-3 minutes of
> > booting that highlight problems in areas other than ACPI. Are they
> > useful to you?
>
> yeah, please send them too - typically it's the first message that
> matters most (especially if the system crashes - which isnt the case
> here) - but sometimes the other ones are independent.

BUG: soft lockup detected on CPU#0!
 [<c010421f>] dump_stack+0x1f/0x30 (20)
 [<c0144a3a>] softlockup_tick+0x8a/0xb0 (24)
 [<c0108607>] timer_interrupt+0x57/0x100 (20)
 [<c0144ce5>] handle_IRQ_event+0x85/0x110 (52)
 [<c0144e4a>] __do_IRQ+0xda/0x170 (44)
 [<c0105b15>] do_IRQ+0x65/0xa0 (-196752)
 =======================
 [<c0103ceb>] common_interrupt+0x1f/0x24 (96)
 [<c0101145>] cpu_idle+0x65/0x90 (16)
 [<c03b0902>] start_kernel+0x182/0x1c0 (32)
 [<c010019f>] 0xc010019f (1076011023)

(I get this one semi-frequently)

>
> > > yes, this is a problem. You can probably work it around by disabling
> > > ACPI, but it would be better to debug and fix it. The message was
> > > generated because the kernel spent too much time [more than 10 seconds]
> > > in acpi_processor_idle(), and the softlockup-thread (which runs at
> > > SCHED_FIFO prio 99) was not scheduled for that amount of time. [or it
> > > thought it was not scheduled.] Was there any suspend/resume activity
> > > while you got that message?
> >
> > No, this is during bootup that it occurs. Suspend and resume do work
> > and are compiled in on my laptop, but were never utilised.
>
> was there a 10 seconds delay during bootup for such a message to be
> generated? Nothing should delay the softlockup threads. (but maybe their
> initial timekeeping is somehow impacted.)

I don't think so, the whole boot process takes about 11 seconds. I have 
noticed boot-time slow down since a few kernels ago, but I was never able to 
identify whether it's just hotplug or a real freeze.

I'll get back to you on this if I find anything definitive. The later 
messages, however, appear to happen sporadically and the machine does not 
freeze or idle at the same time.

>
> > I've got a pair of nearly identical traces that highlight a 2645us
> > latency in smp_apic_timer_interrupt. I don't know how the trace is
> > formatted, so I can't tell if it occurred before or after this
> > function call. I also can't see how a ~1000us latency translates to a
> > ~2600us latency in the trace.
> >
> > Since both traces were under 6K each, and I think the list limit is
> > higher, I risked it and have attached both.
>
> thanks. They do show a real regression. softirq--3 got woken up at
> timestamp 1us:
>
>   <idle>-0     0dnh2    1us : try_to_wake_up <softirq--3> (69 8c)
>
> then we return from the (presumably timer) interrupt at timestamp 3us:
>
>   <idle>-0     0dnh.    3us < (608)
>
> ( '<' in the trace signals return activity - can happen for syscalls and
> for interrupts.)
>
> but the ACPI code is busy going to sleep:
>
>   <idle>-0     0dn..    3us : acpi_hw_register_write (acpi_set_register)
>   <idle>-0     0dn..    4us : acpi_hw_low_level_write
> (acpi_hw_register_write) <idle>-0     0dn..    4us+: acpi_os_write_port
> (acpi_hw_low_level_write) <idle>-0     0dn..    7us!:
> acpi_hw_low_level_write (acpi_hw_register_write) <idle>-0     0dnh. 2645us
> : smp_apic_timer_interrupt (c0252485 0 0)
>
> and doesnt return for another 2638 microseconds!
>
> the bug is probably that the ACPI code became interruptible when we
> introduced the IRQ soft-flag. This is clearly visible from the "d" flag:
>
>                  _------=> CPU#
>                 / _-----=> irqs-off
>
>                | / _----=> need-resched
>                |
>                || / _---=> hardirq/softirq
>                ||
>                ||| / _--=> preempt-depth
>                |||
>                |||| /
>                ||||
>                |||||     delay
>
>    cmd     pid ||||| time  |   caller
>       \   /    |||||   \   |   /
>   <idle>-0     0dn..    3us : acpi_hw_register_write (acpi_set_register)
>     /-----------^
>  here
>
> small 'd' means the soft IRQ-flag was disabled. Capital 'D' means that
> the CPU's irq-flag got disabled too. The ACPI code, when it prepares to
> sleep, has to disable direct interrupts too, otherwise the above
> scenario may occur. If a timer interrupt hits the ACPI code in that
> small window where it has already checked for need_resched(), but has
> not gone to sleep yet (so it cannot react to the timer IRQ by waking
> up), then we lose the wakeup.
>
> could you try the patch below (or the -51-05 patch that i just
> uploaded), does it fix this latency?
>
> 	Ingo

I'm beginning to understand the issue, and I see why you think the proposed 
patch fixes it. I'll compile and boot V0.7.51-05 now.

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-06 16:37       ` Alistair John Strachan
@ 2005-07-06 16:56         ` Alistair John Strachan
  2005-07-06 17:01           ` Ingo Molnar
  0 siblings, 1 reply; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-06 16:56 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1000 bytes --]

On Wednesday 06 Jul 2005 17:37, Alistair John Strachan wrote:
[big snip]
> >
> > could you try the patch below (or the -51-05 patch that i just
> > uploaded), does it fix this latency?
> >
> > 	Ingo
>
> I'm beginning to understand the issue, and I see why you think the proposed
> patch fixes it. I'll compile and boot V0.7.51-05 now.

Indeed, this seems to have fixed it.

( softirq-timer/0-3    |#0): new 8 us maximum-latency wakeup.
( softirq-timer/0-3    |#0): new 9 us maximum-latency wakeup.
( softirq-timer/0-3    |#0): new 9 us maximum-latency wakeup.
( softirq-timer/0-3    |#0): new 9 us maximum-latency wakeup.
( softirq-timer/0-3    |#0): new 10 us maximum-latency wakeup.
( softirq-timer/0-3    |#0): new 14 us maximum-latency wakeup.

Find attached another trace (only 33us this time).

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

[-- Attachment #2: trace3 --]
[-- Type: text/plain, Size: 2281 bytes --]

preemption latency trace v1.1.4 on 2.6.12-RT-V0.7.51-05
--------------------------------------------------------------------
 latency: 38 us, #27/27, CPU#0 | (M:rt VP:0, KP:1, SP:1 HP:1 #P:1)
    -----------------
    | task: softirq-timer/0-3 (uid:0 nice:-10 policy:0 rt_prio:0)
    -----------------

                 _------=> CPU#            
                / _-----=> irqs-off        
               | / _----=> need-resched    
               || / _---=> hardirq/softirq 
               ||| / _--=> preempt-depth   
               |||| /                      
               |||||     delay             
   cmd     pid ||||| time  |   caller      
      \   /    |||||   \   |   /           
   <...>-3485  0dnh3    0us!: <6f6f726b> (<616d6974>)
   <...>-3485  0dnh3    1us : __trace_start_sched_wakeup (try_to_wake_up)
   <...>-3485  0dnh3    1us : __trace_start_sched_wakeup <softirq--3> (69 0)
   <...>-3485  0dnh2    2us : try_to_wake_up <softirq--3> (69 76)
   <...>-3485  0dnh1    2us : preempt_schedule (try_to_wake_up)
   <...>-3485  0dnh1    3us : wake_up_process (trigger_softirqs)
   <...>-3485  0dnh1    3us : local_irq_restore (do_softirq)
   <...>-3485  0Dnh1    4us+: preempt_schedule (do_softirq)
   <...>-3485  0Dnh.    7us : __schedule (work_resched)
   <...>-3485  0Dnh.    8us : profile_hit (__schedule)
   <...>-3485  0Dnh1    8us+: sched_clock (__schedule)
   <...>-3485  0Dnh2   12us : dequeue_task (__schedule)
   <...>-3485  0Dnh2   13us : recalc_task_prio (__schedule)
   <...>-3485  0Dnh2   13us : effective_prio (recalc_task_prio)
   <...>-3485  0Dnh2   13us : enqueue_task (__schedule)
   <...>-3485  0Dnh2   14us+: trace_array (__schedule)
   <...>-3485  0Dnh2   18us : trace_array <softirq--3> (69 6e)
   <...>-3485  0Dnh2   18us : trace_array <<...>-3485> (76 78)
   <...>-3485  0Dnh2   20us+: trace_array (__schedule)
softirq--3     0Dnh2   28us+: __switch_to (__schedule)
softirq--3     0Dnh2   31us : __schedule <<...>-3485> (76 69)
softirq--3     0Dnh2   31us : finish_task_switch (__schedule)
softirq--3     0Dnh1   32us : trace_stop_sched_switched (finish_task_switch)
softirq--3     0Dnh2   33us+: trace_stop_sched_switched <softirq--3> (69 0)
softirq--3     0Dnh2   35us : trace_stop_sched_switched (finish_task_switch)


vim:ft=help

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-06 16:56         ` Alistair John Strachan
@ 2005-07-06 17:01           ` Ingo Molnar
  2005-07-06 17:14             ` Alistair John Strachan
  0 siblings, 1 reply; 101+ messages in thread
From: Ingo Molnar @ 2005-07-06 17:01 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:

> > I'm beginning to understand the issue, and I see why you think the proposed
> > patch fixes it. I'll compile and boot V0.7.51-05 now.
> 
> Indeed, this seems to have fixed it.
> 
> ( softirq-timer/0-3    |#0): new 8 us maximum-latency wakeup.
> ( softirq-timer/0-3    |#0): new 9 us maximum-latency wakeup.
> ( softirq-timer/0-3    |#0): new 9 us maximum-latency wakeup.
> ( softirq-timer/0-3    |#0): new 9 us maximum-latency wakeup.
> ( softirq-timer/0-3    |#0): new 10 us maximum-latency wakeup.
> ( softirq-timer/0-3    |#0): new 14 us maximum-latency wakeup.

great! Do the softlockup warnings still occur?

> Find attached another trace (only 33us this time).

the main latency comes from here:

>    <...>-3485  0Dnh2   13us : enqueue_task (__schedule)
>    <...>-3485  0Dnh2   14us+: trace_array (__schedule)
>    <...>-3485  0Dnh2   18us : trace_array <softirq--3> (69 6e)
>    <...>-3485  0Dnh2   18us : trace_array <<...>-3485> (76 78)
>    <...>-3485  0Dnh2   20us+: trace_array (__schedule)
> softirq--3     0Dnh2   28us+: __switch_to (__schedule)

trace_array() can be quite expensive (it generates a trace entry of 
every runnable task, with interrupts and preemption disabled). It is 
disabled if RT_DEADLOCK_DETECT is disabled. For pure wakeup latency 
tracing, the most optimal combination of options is:

 # CONFIG_DETECT_SOFTLOCKUP is not set
 # CONFIG_SCHEDSTATS is not set
 # CONFIG_DEBUG_SLAB is not set
 # CONFIG_DEBUG_PREEMPT is not set
 # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
 CONFIG_WAKEUP_TIMING=y
 # CONFIG_CRITICAL_PREEMPT_TIMING is not set
 # CONFIG_CRITICAL_IRQSOFF_TIMING is not set
 CONFIG_LATENCY_TIMING=y
 CONFIG_LATENCY_TRACE=y
 CONFIG_MCOUNT=y
 # CONFIG_RT_DEADLOCK_DETECT is not set
 # CONFIG_DEBUG_RT_LOCKING_MODE is not set
 # CONFIG_DEBUG_KOBJECT is not set
 CONFIG_DEBUG_BUGVERBOSE=y
 # CONFIG_DEBUG_INFO is not set
 # CONFIG_DEBUG_FS is not set
 CONFIG_FRAME_POINTER=y
 CONFIG_EARLY_PRINTK=y
 # CONFIG_DEBUG_STACKOVERFLOW is not set
 # CONFIG_KPROBES is not set
 # CONFIG_DEBUG_STACK_USAGE is not set
 # CONFIG_DEBUG_PAGEALLOC is not set

such a kernel will still be able to generate /proc/latency_trace traces, 
but has much lower runtime overhead than your current kernel. (But you 
should probably keep all debugging enabled until all of the current 
problems have been resolved.)

	Ingo

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-06 17:01           ` Ingo Molnar
@ 2005-07-06 17:14             ` Alistair John Strachan
  2005-07-06 17:27               ` Ingo Molnar
  0 siblings, 1 reply; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-06 17:14 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

On Wednesday 06 Jul 2005 18:01, Ingo Molnar wrote:
> * Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:
> > > I'm beginning to understand the issue, and I see why you think the
> > > proposed patch fixes it. I'll compile and boot V0.7.51-05 now.
> >
> > Indeed, this seems to have fixed it.
> >
> > ( softirq-timer/0-3    |#0): new 8 us maximum-latency wakeup.
> > ( softirq-timer/0-3    |#0): new 9 us maximum-latency wakeup.
> > ( softirq-timer/0-3    |#0): new 9 us maximum-latency wakeup.
> > ( softirq-timer/0-3    |#0): new 9 us maximum-latency wakeup.
> > ( softirq-timer/0-3    |#0): new 10 us maximum-latency wakeup.
> > ( softirq-timer/0-3    |#0): new 14 us maximum-latency wakeup.
>
> great! Do the softlockup warnings still occur?

Yes, but in no greater a number.

[root] 18:09 [~] uptime
 18:09:39 up 19 min,  4 users,  load average: 0.36, 0.29, 0.16

[root] 18:09 [~] dmesg | grep BUG: | wc -l
5

So far, however, there have been no lockups! The previous kernels would die 
very obviously within a couple of minutes.

I wonder if the ACPI problem was causing lockups (one thought I had was that 
the "ondemand" cpufreq governor was generating more ACPI events than usual, 
as the BIOS stepped through the different CPU speeds).

>
> > Find attached another trace (only 33us this time).
>
> the main latency comes from here:
> >    <...>-3485  0Dnh2   13us : enqueue_task (__schedule)
> >    <...>-3485  0Dnh2   14us+: trace_array (__schedule)
> >    <...>-3485  0Dnh2   18us : trace_array <softirq--3> (69 6e)
> >    <...>-3485  0Dnh2   18us : trace_array <<...>-3485> (76 78)
> >    <...>-3485  0Dnh2   20us+: trace_array (__schedule)
> > softirq--3     0Dnh2   28us+: __switch_to (__schedule)
>
> trace_array() can be quite expensive (it generates a trace entry of
> every runnable task, with interrupts and preemption disabled). It is
> disabled if RT_DEADLOCK_DETECT is disabled. For pure wakeup latency
> tracing, the most optimal combination of options is:
>
[snip]
>
> such a kernel will still be able to generate /proc/latency_trace traces,
> but has much lower runtime overhead than your current kernel. (But you
> should probably keep all debugging enabled until all of the current
> problems have been resolved.)
>
> 	Ingo

Well, thanks for the info. As you said, when the remaining issues have been 
resolved, I'll need to step up to a more efficient kernel, because I require 
extremely low kernel latency for the software I'm writing (this was not an 
idle patch fest).

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-06 17:14             ` Alistair John Strachan
@ 2005-07-06 17:27               ` Ingo Molnar
  2005-07-06 18:23                 ` Alistair John Strachan
  0 siblings, 1 reply; 101+ messages in thread
From: Ingo Molnar @ 2005-07-06 17:27 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:

> > great! Do the softlockup warnings still occur?
> 
> Yes, but in no greater a number.

could you apply the patch below, so that we can see what kind of time 
gap the softlockup detector encountered?

	Ingo

Index: linux/kernel/softlockup.c
===================================================================
--- linux.orig/kernel/softlockup.c
+++ linux/kernel/softlockup.c
@@ -65,8 +65,8 @@ void softlockup_tick(void)
 		per_cpu(print_timestamp, this_cpu) = timestamp;
 
 		spin_lock(&print_lock);
-		printk(KERN_ERR "BUG: soft lockup detected on CPU#%d!\n",
-			this_cpu);
+		printk(KERN_ERR "BUG: soft lockup detected on CPU#%d! %ld-%ld\n",
+			this_cpu, jiffies, timestamp);
 		dump_stack();
 #if defined(__i386__) && defined(CONFIG_SMP)
 		nmi_show_all_regs();

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-06 17:27               ` Ingo Molnar
@ 2005-07-06 18:23                 ` Alistair John Strachan
  2005-07-06 18:38                   ` Ingo Molnar
  0 siblings, 1 reply; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-06 18:23 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

On Wednesday 06 Jul 2005 18:27, Ingo Molnar wrote:
> * Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:
> > > great! Do the softlockup warnings still occur?
> >
> > Yes, but in no greater a number.
>
> could you apply the patch below, so that we can see what kind of time
> gap the softlockup detector encountered?
>
> 	Ingo
>

Interesting. They're both exactly 10001 jiffies apart.

BUG: soft lockup detected on CPU#0! -283805--293806
 [<c010421f>] dump_stack+0x1f/0x30 (20)
 [<c01449d7>] softlockup_tick+0x97/0xc0 (32)
 [<c0108607>] timer_interrupt+0x57/0x100 (20)
 [<c0144c85>] handle_IRQ_event+0x85/0x110 (52)
 [<c0144dea>] __do_IRQ+0xda/0x170 (44)
 [<c0105b15>] do_IRQ+0x65/0xa0 (920170428)
 =======================
 [<c0103ceb>] common_interrupt+0x1f/0x24 (-925676316)
------------------------------
| showing all locks held by: |  (usb.agent/2424 [f7140800, 125]):
------------------------------

BUG: soft lockup detected on CPU#0! -251889--261890
 [<c010421f>] dump_stack+0x1f/0x30 (20)
 [<c01449d7>] softlockup_tick+0x97/0xc0 (32)
 [<c0108607>] timer_interrupt+0x57/0x100 (20)
 [<c0144c85>] handle_IRQ_event+0x85/0x110 (52)
 [<c0144dea>] __do_IRQ+0xda/0x170 (44)
 [<c0105b15>] do_IRQ+0x65/0xa0 (-196752)
 =======================
 [<c0103ceb>] common_interrupt+0x1f/0x24 (96)
 [<c0101145>] cpu_idle+0x65/0x90 (16)
 [<c03b0902>] start_kernel+0x182/0x1c0 (32)
 [<c010019f>] 0xc010019f (1076011023)
------------------------------
| showing all locks held by: |  (swapper/0 [c035de00, 140]):
------------------------------

Note the minus sign -- this is only just into the boot process.

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-06 18:23                 ` Alistair John Strachan
@ 2005-07-06 18:38                   ` Ingo Molnar
  2005-07-06 18:41                     ` Ingo Molnar
  0 siblings, 1 reply; 101+ messages in thread
From: Ingo Molnar @ 2005-07-06 18:38 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:

> Interesting. They're both exactly 10001 jiffies apart.
>
> BUG: soft lockup detected on CPU#0! -283805--293806

yes, that's the 10 second softlockup timeout.

does the patch below help? We initialized the timestamps to 0, but with 
jiffies starting out negative, that means a ~5 minutes gap until we 
first reach a value of 0. That would explain the messages. The only 
thing it doesnt explain, why did this only trigger on your box?

	Ingo

Index: linux/kernel/softlockup.c
===================================================================
--- linux.orig/kernel/softlockup.c
+++ linux/kernel/softlockup.c
@@ -16,9 +16,9 @@
 
 static DEFINE_RAW_SPINLOCK(print_lock);
 
-static DEFINE_PER_CPU(unsigned long, timeout) = 0;
-static DEFINE_PER_CPU(unsigned long, timestamp) = 0;
-static DEFINE_PER_CPU(unsigned long, print_timestamp) = 0;
+static DEFINE_PER_CPU(unsigned long, timeout) = INITIAL_JIFFIES;
+static DEFINE_PER_CPU(unsigned long, timestamp) = INITIAL_JIFFIES;
+static DEFINE_PER_CPU(unsigned long, print_timestamp) = INITIAL_JIFFIES;
 static DEFINE_PER_CPU(struct task_struct *, watchdog_task);
 
 static int did_panic = 0;

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-06 18:38                   ` Ingo Molnar
@ 2005-07-06 18:41                     ` Ingo Molnar
  2005-07-06 19:47                       ` Alistair John Strachan
  0 siblings, 1 reply; 101+ messages in thread
From: Ingo Molnar @ 2005-07-06 18:41 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Ingo Molnar <mingo@elte.hu> wrote:

> does the patch below help? We initialized the timestamps to 0, but 
> with jiffies starting out negative, that means a ~5 minutes gap until 
> we first reach a value of 0. That would explain the messages. The only 
> thing it doesnt explain, why did this only trigger on your box?

here's an updated patch - it will print out all timestamps too. (you'll 
have to revert all previous softlockup patches first, via patch -R.)

	Ingo

Index: linux/kernel/softlockup.c
===================================================================
--- linux.orig/kernel/softlockup.c
+++ linux/kernel/softlockup.c
@@ -16,9 +16,9 @@
 
 static DEFINE_RAW_SPINLOCK(print_lock);
 
-static DEFINE_PER_CPU(unsigned long, timeout) = 0;
-static DEFINE_PER_CPU(unsigned long, timestamp) = 0;
-static DEFINE_PER_CPU(unsigned long, print_timestamp) = 0;
+static DEFINE_PER_CPU(unsigned long, timeout) = INITIAL_JIFFIES;
+static DEFINE_PER_CPU(unsigned long, timestamp) = INITIAL_JIFFIES;
+static DEFINE_PER_CPU(unsigned long, print_timestamp) = INITIAL_JIFFIES;
 static DEFINE_PER_CPU(struct task_struct *, watchdog_task);
 
 static int did_panic = 0;
@@ -65,8 +65,8 @@ void softlockup_tick(void)
 		per_cpu(print_timestamp, this_cpu) = timestamp;
 
 		spin_lock(&print_lock);
-		printk(KERN_ERR "BUG: soft lockup detected on CPU#%d!\n",
-			this_cpu);
+		printk(KERN_ERR "BUG: soft lockup detected on CPU#%d! %ld-%ld(%ld)\n",
+			this_cpu, jiffies, timestamp, timeout);
 		dump_stack();
 #if defined(__i386__) && defined(CONFIG_SMP)
 		nmi_show_all_regs();

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-06 18:41                     ` Ingo Molnar
@ 2005-07-06 19:47                       ` Alistair John Strachan
  2005-07-06 20:44                         ` Ingo Molnar
  0 siblings, 1 reply; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-06 19:47 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

On Wednesday 06 Jul 2005 19:41, Ingo Molnar wrote:
> * Ingo Molnar <mingo@elte.hu> wrote:
> > does the patch below help? We initialized the timestamps to 0, but
> > with jiffies starting out negative, that means a ~5 minutes gap until
> > we first reach a value of 0. That would explain the messages. The only
> > thing it doesnt explain, why did this only trigger on your box?
>
> here's an updated patch - it will print out all timestamps too. (you'll
> have to revert all previous softlockup patches first, via patch -R.)
>
> 	Ingo
>

Yep, thanks, that fixed it. I don't know why it only shows up on my 
configuration, but it was a bug, and this patch fixes it. I also took the 
liberty of upgrading to -06 while I was doing it, so I think you can probably 
release -07 with the specified changes.

So far no lockups, either, but I'm not convinced they're gone forever. I'll 
let you know how it goes.

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-06 19:47                       ` Alistair John Strachan
@ 2005-07-06 20:44                         ` Ingo Molnar
  2005-07-06 21:00                           ` Alistair John Strachan
  2005-07-07  9:46                           ` Alistair John Strachan
  0 siblings, 2 replies; 101+ messages in thread
From: Ingo Molnar @ 2005-07-06 20:44 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:

> > here's an updated patch - it will print out all timestamps too. (you'll
> > have to revert all previous softlockup patches first, via patch -R.)
> 
> Yep, thanks, that fixed it. I don't know why it only shows up on my 
> configuration, but it was a bug, and this patch fixes it. I also took 
> the liberty of upgrading to -06 while I was doing it, so I think you 
> can probably release -07 with the specified changes.

great.

> So far no lockups, either, but I'm not convinced they're gone forever.  
> I'll let you know how it goes.

the ACPI-idle bug's primary effects were the missed wakeups, but they 
should not cause lockups, because timer interrupts should always occur 
and should eventually 'fix up' such missed wakeups.

but there's another side-effect of the ACPI-idle bug: the ACPI code was 
running with interrupts enabled and maybe the hardware locks up if 
interrupted in the wrong moment. ACPI sleeps are sensitive things and 
closely related to other IRQ hardware, which we all program with 
interrupts disabled. So i'd not be surprised if the lockups were caused 
by the ACPI-idle bug.

	Ingo

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-06 20:44                         ` Ingo Molnar
@ 2005-07-06 21:00                           ` Alistair John Strachan
  2005-07-06 21:02                             ` Ingo Molnar
  2005-07-07  9:46                           ` Alistair John Strachan
  1 sibling, 1 reply; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-06 21:00 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

On Wednesday 06 Jul 2005 21:44, Ingo Molnar wrote:
[snip]
>
> the ACPI-idle bug's primary effects were the missed wakeups, but they
> should not cause lockups, because timer interrupts should always occur
> and should eventually 'fix up' such missed wakeups.
>
> but there's another side-effect of the ACPI-idle bug: the ACPI code was
> running with interrupts enabled and maybe the hardware locks up if
> interrupted in the wrong moment. ACPI sleeps are sensitive things and
> closely related to other IRQ hardware, which we all program with
> interrupts disabled. So i'd not be surprised if the lockups were caused
> by the ACPI-idle bug.
>
> 	Ingo

Okay, well an hour later and still no lockups, so you're probably right.

This is a completely unrelated question, but now we've got everything under 
control.. how do I make "quiet" actually do something on the RT patchset?

Currently I flag it on the kernel cmdline, but I still get everything spewed 
to my primary VT.

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-06 21:00                           ` Alistair John Strachan
@ 2005-07-06 21:02                             ` Ingo Molnar
  2005-07-06 22:15                               ` Alistair John Strachan
  0 siblings, 1 reply; 101+ messages in thread
From: Ingo Molnar @ 2005-07-06 21:02 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:

> This is a completely unrelated question, but now we've got everything 
> under control.. how do I make "quiet" actually do something on the RT 
> patchset?
> 
> Currently I flag it on the kernel cmdline, but I still get everything 
> spewed to my primary VT.

do you have CONFIG_PRINTK_IGNORE_LOGLEVEL enabled perhaps?

	Ingo

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-06 21:02                             ` Ingo Molnar
@ 2005-07-06 22:15                               ` Alistair John Strachan
  2005-07-06 23:08                                 ` Fernando Lopez-Lezcano
  0 siblings, 1 reply; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-06 22:15 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1448 bytes --]

On Wednesday 06 Jul 2005 22:02, Ingo Molnar wrote:
> * Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:
> > This is a completely unrelated question, but now we've got everything
> > under control.. how do I make "quiet" actually do something on the RT
> > patchset?
> >
> > Currently I flag it on the kernel cmdline, but I still get everything
> > spewed to my primary VT.
>
> do you have CONFIG_PRINTK_IGNORE_LOGLEVEL enabled perhaps?

Good idea, but nope. Find attached the config I'm using, and here's the output 
from /proc/cmdline:

[alistair] 23:07 [~] cat /proc/cmdline
BOOT_IMAGE=2.6.12rt ro root=301 acpi_sleep=s3_bios lapic quiet

[alistair] 23:07 [~] uname -r
2.6.12-RT-V0.7.51-06

What I see are the kernel messages pre-init not suppressed (like I think they 
should be with quiet) and spurious noise from usb, etc. as the system boots 
up. sysklogd starts up but the messages are still duplicated on the console.

Maybe my configuration is subtlely broken. Is anybody else experiencing this?

By the way, I've been hammering the machine with the RT fixups and so far I've 
only been able to get a ~50us maximum; everything seems to be working fine. 
Find attached a final trace with the minimum kernel options enabled to get 
it.

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

[-- Attachment #2: trace --]
[-- Type: text/plain, Size: 6384 bytes --]

preemption latency trace v1.1.4 on 2.6.12-RT-V0.7.51-06
--------------------------------------------------------------------
 latency: 54 us, #93/93, CPU#0 | (M:rt VP:0, KP:1, SP:1 HP:1 #P:1)
    -----------------
    | task: softirq-net-rx/-5 (uid:0 nice:-10 policy:0 rt_prio:0)
    -----------------

                 _------=> CPU#            
                / _-----=> irqs-off        
               | / _----=> need-resched    
               || / _---=> hardirq/softirq 
               ||| / _--=> preempt-depth   
               |||| /                      
               |||||     delay             
   cmd     pid ||||| time  |   caller      
      \   /    |||||   \   |   /           
   <...>-3142  0dnh2    0us!: <5f6f696b> (<70747468>)
   <...>-3142  0dnh2    0us : __trace_start_sched_wakeup (try_to_wake_up)
   <...>-3142  0dnh2    0us : __trace_start_sched_wakeup <softirq--5> (69 0)
   <...>-3142  0dnh1    1us+: try_to_wake_up <softirq--5> (69 76)
   <...>-3142  0dnh.    4us : do_IRQ (c0117743 0 0)
   <...>-3142  0dnh.    5us : __local_irq_save (__do_IRQ)
   <...>-3142  0dnh1    5us+: mask_and_ack_8259A (__do_IRQ)
   <...>-3142  0dnh1   12us : preempt_schedule (__do_IRQ)
   <...>-3142  0dnh1   12us : redirect_hardirq (__do_IRQ)
   <...>-3142  0dnh.   13us : preempt_schedule (__do_IRQ)
   <...>-3142  0dnh.   13us : handle_IRQ_event (__do_IRQ)
   <...>-3142  0dnh.   14us : timer_interrupt (handle_IRQ_event)
   <...>-3142  0dnh1   14us : mark_offset_tsc (timer_interrupt)
   <...>-3142  0dnh1   16us : preempt_schedule (mark_offset_tsc)
   <...>-3142  0dnh1   16us : preempt_schedule (mark_offset_tsc)
   <...>-3142  0dnh1   16us : do_timer (timer_interrupt)
   <...>-3142  0dnh1   17us : update_process_times (timer_interrupt)
   <...>-3142  0dnh1   17us : account_system_time (update_process_times)
   <...>-3142  0dnh1   18us : update_mem_hiwater (update_process_times)
   <...>-3142  0dnh1   19us : run_local_timers (update_process_times)
   <...>-3142  0dnh1   19us : raise_softirq (update_process_times)
   <...>-3142  0dnh1   20us : rcu_check_callbacks (update_process_times)
   <...>-3142  0dnh1   21us : idle_cpu (rcu_check_callbacks)
   <...>-3142  0dnh1   21us : __tasklet_schedule (update_process_times)
   <...>-3142  0dnh1   21us : scheduler_tick (update_process_times)
   <...>-3142  0dnh1   22us : sched_clock (scheduler_tick)
   <...>-3142  0dnh1   22us : preempt_schedule (scheduler_tick)
   <...>-3142  0dnh1   23us : softlockup_tick (timer_interrupt)
   <...>-3142  0dnh.   23us : preempt_schedule (timer_interrupt)
   <...>-3142  0dnh1   24us : note_interrupt (__do_IRQ)
   <...>-3142  0dnh1   24us : end_8259A_irq (__do_IRQ)
   <...>-3142  0dnh1   25us+: enable_8259A_irq (__do_IRQ)
   <...>-3142  0dnh1   28us : preempt_schedule (__do_IRQ)
   <...>-3142  0dnh.   28us : preempt_schedule (__do_IRQ)
   <...>-3142  0dnh.   28us : local_irq_restore (__do_IRQ)
   <...>-3142  0dnh.   29us : irq_exit (do_IRQ)
   <...>-3142  0dnh1   29us : do_softirq (irq_exit)
   <...>-3142  0dnh1   29us : __local_irq_save (do_softirq)
   <...>-3142  0dnh1   30us : __do_softirq (do_softirq)
   <...>-3142  0dnh1   30us : trigger_softirqs (do_softirq)
   <...>-3142  0dnh1   30us : wakeup_softirqd (trigger_softirqs)
   <...>-3142  0dnh1   31us : wake_up_process (trigger_softirqs)
   <...>-3142  0dnh1   31us : try_to_wake_up (wake_up_process)
   <...>-3142  0dnh1   31us : activate_task (try_to_wake_up)
   <...>-3142  0dnh1   32us : sched_clock (activate_task)
   <...>-3142  0dnh1   32us : recalc_task_prio (activate_task)
   <...>-3142  0dnh1   33us : effective_prio (recalc_task_prio)
   <...>-3142  0dnh1   33us : activate_task <<...>-3> (69 4)
   <...>-3142  0dnh1   33us : enqueue_task (activate_task)
   <...>-3142  0dnh1   34us : __trace_start_sched_wakeup (try_to_wake_up)
   <...>-3142  0dnh1   34us : preempt_schedule (try_to_wake_up)
   <...>-3142  0dnh1   34us : try_to_wake_up <<...>-3> (69 76)
   <...>-3142  0dnh1   35us : preempt_schedule (try_to_wake_up)
   <...>-3142  0dnh1   35us : wake_up_process (trigger_softirqs)
   <...>-3142  0dnh1   36us : wakeup_softirqd (trigger_softirqs)
   <...>-3142  0dnh1   36us : wakeup_softirqd (trigger_softirqs)
   <...>-3142  0dnh1   36us : wake_up_process (trigger_softirqs)
   <...>-3142  0dnh1   36us : try_to_wake_up (wake_up_process)
   <...>-3142  0dnh1   37us : activate_task (try_to_wake_up)
   <...>-3142  0dnh1   37us : sched_clock (activate_task)
   <...>-3142  0dnh1   38us : recalc_task_prio (activate_task)
   <...>-3142  0dnh1   38us : effective_prio (recalc_task_prio)
   <...>-3142  0dnh1   38us : activate_task <<...>-7> (69 5)
   <...>-3142  0dnh1   38us : enqueue_task (activate_task)
   <...>-3142  0dnh1   39us : __trace_start_sched_wakeup (try_to_wake_up)
   <...>-3142  0dnh1   39us : preempt_schedule (try_to_wake_up)
   <...>-3142  0dnh1   39us : try_to_wake_up <<...>-7> (69 76)
   <...>-3142  0dnh1   40us : preempt_schedule (try_to_wake_up)
   <...>-3142  0dnh1   40us : wake_up_process (trigger_softirqs)
   <...>-3142  0dnh1   40us : local_irq_restore (do_softirq)
   <...>-3142  0dnh.   41us < (2097760)
   <...>-3142  0dn..   42us : preempt_schedule (try_to_wake_up)
   <...>-3142  0dn..   42us : wake_up_process (trigger_softirqs)
   <...>-3142  0dn..   43us : local_irq_restore (netif_rx)
   <...>-3142  0dn..   43us : get_sample_stats (netif_rx)
   <...>-3142  0dn..   43us : local_irq_restore (netif_rx)
   <...>-3142  0Dn..   44us : preempt_schedule (netif_rx)
   <...>-3142  0Dn..   44us : irqs_disabled (preempt_schedule)
   <...>-3142  0Dnh.   44us : __schedule (preempt_schedule)
   <...>-3142  0Dnh.   45us : profile_hit (__schedule)
   <...>-3142  0Dnh1   45us : sched_clock (__schedule)
   <...>-3142  0Dnh2   46us : dequeue_task (__schedule)
   <...>-3142  0Dnh2   46us : recalc_task_prio (__schedule)
   <...>-3142  0Dnh2   47us : effective_prio (recalc_task_prio)
   <...>-3142  0Dnh2   47us : enqueue_task (__schedule)
softirq--5     0Dnh2   49us : __switch_to (__schedule)
softirq--5     0Dnh2   50us : __schedule <<...>-3142> (76 69)
softirq--5     0Dnh2   50us : finish_task_switch (__schedule)
softirq--5     0Dnh1   51us : trace_stop_sched_switched (finish_task_switch)
softirq--5     0Dnh2   51us : trace_stop_sched_switched <softirq--5> (69 0)
softirq--5     0Dnh2   52us : trace_stop_sched_switched (finish_task_switch)


vim:ft=help

[-- Attachment #3: config.gz --]
[-- Type: application/x-gzip, Size: 8557 bytes --]

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-06 22:15                               ` Alistair John Strachan
@ 2005-07-06 23:08                                 ` Fernando Lopez-Lezcano
  2005-07-07  6:04                                   ` Michal Schmidt
  0 siblings, 1 reply; 101+ messages in thread
From: Fernando Lopez-Lezcano @ 2005-07-06 23:08 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: Ingo Molnar, linux-kernel

On Wed, 2005-07-06 at 15:15, Alistair John Strachan wrote:
> On Wednesday 06 Jul 2005 22:02, Ingo Molnar wrote:
> > * Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:
> > > This is a completely unrelated question, but now we've got everything
> > > under control.. how do I make "quiet" actually do something on the RT
> > > patchset?
> > >
> > > Currently I flag it on the kernel cmdline, but I still get everything
> > > spewed to my primary VT.
> >
> > do you have CONFIG_PRINTK_IGNORE_LOGLEVEL enabled perhaps?
> 
> Good idea, but nope. Find attached the config I'm using, and here's the output 
> from /proc/cmdline:
> 
> [alistair] 23:07 [~] cat /proc/cmdline
> BOOT_IMAGE=2.6.12rt ro root=301 acpi_sleep=s3_bios lapic quiet
> 
> [alistair] 23:07 [~] uname -r
> 2.6.12-RT-V0.7.51-06
> 
> What I see are the kernel messages pre-init not suppressed (like I think they 
> should be with quiet) and spurious noise from usb, etc. as the system boots 
> up. sysklogd starts up but the messages are still duplicated on the console.
> 
> Maybe my configuration is subtlely broken. Is anybody else experiencing this?

I see the same thing. "CONFIG_PRINTK_IGNORE_LOGLEVEL is not set" but
still printk ignores the loglevel (I commented out the #ifdef in
kernel/printk.c to make the spurious messages go away). 

-- Fernando



^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-06 23:08                                 ` Fernando Lopez-Lezcano
@ 2005-07-07  6:04                                   ` Michal Schmidt
  2005-07-07 10:25                                     ` Ingo Molnar
  0 siblings, 1 reply; 101+ messages in thread
From: Michal Schmidt @ 2005-07-07  6:04 UTC (permalink / raw)
  To: Fernando Lopez-Lezcano; +Cc: Alistair John Strachan, Ingo Molnar, linux-kernel

Fernando Lopez-Lezcano wrote:
> I see the same thing. "CONFIG_PRINTK_IGNORE_LOGLEVEL is not set" but
> still printk ignores the loglevel (I commented out the #ifdef in
> kernel/printk.c to make the spurious messages go away). 

The condition is reversed.
The '#ifdef CONFIG_PRINTK_IGNORE_LOGLEVEL' should be
'#ifndef CONFIG_PRINTK_IGNORE_LOGLEVEL'.

Michal

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-06 20:44                         ` Ingo Molnar
  2005-07-06 21:00                           ` Alistair John Strachan
@ 2005-07-07  9:46                           ` Alistair John Strachan
  2005-07-07 11:21                             ` Alistair John Strachan
  1 sibling, 1 reply; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-07  9:46 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

On Wednesday 06 Jul 2005 21:44, Ingo Molnar wrote:
> * Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:
> > > here's an updated patch - it will print out all timestamps too. (you'll
> > > have to revert all previous softlockup patches first, via patch -R.)
> >
> > Yep, thanks, that fixed it. I don't know why it only shows up on my
> > configuration, but it was a bug, and this patch fixes it. I also took
> > the liberty of upgrading to -06 while I was doing it, so I think you
> > can probably release -07 with the specified changes.
>
> great.
>
> > So far no lockups, either, but I'm not convinced they're gone forever.
> > I'll let you know how it goes.
>
> the ACPI-idle bug's primary effects were the missed wakeups, but they
> should not cause lockups, because timer interrupts should always occur
> and should eventually 'fix up' such missed wakeups.

Okay, when I brought my laptop back into work today for audio work, it locked 
up again within two minutes. I realise now what the problem is, but I don't 
have a serial cable here, so I'll have to rely on capturing the oops from the 
console.

The only difference between work and home is that I connect over an OpenVPN 
connection at work, which is a userspace program that creates a "tun" device 
as a virtual network adaptor.

I'm convinced this is the problem, because I enabled IPMASQ on the company 
server today and bypassed the VPN, and I'm happily typing this email from the 
same computer on the same network, just with no VPN started.

It's a bizarre problem, but my guess is that your user test bed don't end up 
using tap/tun very often, which means it's poorly tested.

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-07  6:04                                   ` Michal Schmidt
@ 2005-07-07 10:25                                     ` Ingo Molnar
  0 siblings, 0 replies; 101+ messages in thread
From: Ingo Molnar @ 2005-07-07 10:25 UTC (permalink / raw)
  To: Michal Schmidt
  Cc: Fernando Lopez-Lezcano, Alistair John Strachan, linux-kernel


* Michal Schmidt <xschmi00@stud.feec.vutbr.cz> wrote:

> Fernando Lopez-Lezcano wrote:
> >I see the same thing. "CONFIG_PRINTK_IGNORE_LOGLEVEL is not set" but
> >still printk ignores the loglevel (I commented out the #ifdef in
> >kernel/printk.c to make the spurious messages go away). 
> 
> The condition is reversed.
> The '#ifdef CONFIG_PRINTK_IGNORE_LOGLEVEL' should be
> '#ifndef CONFIG_PRINTK_IGNORE_LOGLEVEL'.

indeed - fixed.

	Ingo

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-07  9:46                           ` Alistair John Strachan
@ 2005-07-07 11:21                             ` Alistair John Strachan
  2005-07-07 11:29                               ` Ingo Molnar
  0 siblings, 1 reply; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-07 11:21 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

On Thursday 07 Jul 2005 10:46, Alistair John Strachan wrote:
[snip]
>
> Okay, when I brought my laptop back into work today for audio work, it
> locked up again within two minutes. I realise now what the problem is, but
> I don't have a serial cable here, so I'll have to rely on capturing the
> oops from the console.
>
> The only difference between work and home is that I connect over an OpenVPN
> connection at work, which is a userspace program that creates a "tun"
> device as a virtual network adaptor.
>
> I'm convinced this is the problem, because I enabled IPMASQ on the company
> server today and bypassed the VPN, and I'm happily typing this email from
> the same computer on the same network, just with no VPN started.
>
> It's a bizarre problem, but my guess is that your user test bed don't end
> up using tap/tun very often, which means it's poorly tested.

Okay, I've managed to figure out a reproducible test for this problem. Bring 
up a normal network interface, in my case wlan (my ipw2200 wireless). Start 
an openvpn session to any nearby host.

Without X loaded, running in multi-user text mode, I switched VTs to the 
second VT and started;

sleep 10; wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.0.tar.bz2

Then I switched back to the primary VT and waited. About 15 seconds later, I 
get:

 =======================
 =======================
 =======================
 =======================
 =======================
 =======================
 =======================
 =======================
[...]

Filling my screen up, page after page. Then eventually the kernel freezes and 
I get no more output. Now, I scanned through your realtime-preempt patch and 
only found a single place where this occurs; a small hunk in 
linux/arch/i386/kernel/traps.c show_trace().

        while (1) {
                struct thread_info *context;
                context = (struct thread_info *)
                        ((unsigned long)stack & (~(THREAD_SIZE - 1)));
                ebp = print_context_stack(context, stack, ebp);
                stack = (unsigned long*)context->previous_esp;
                if (!stack)
                        break;
                printk(" =======================\n");
        }

Something's been corrupted so badly that "stack" is always true; presumably it 
never reaches the bottom stack, and printk()s forever. That, or show_trace() 
is being called from multiple contexts.

Unfortunately, since this is called when the kernel crashes, it's impossible 
for me to capture any messages prior to this spam, if there even are any.

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-07 11:21                             ` Alistair John Strachan
@ 2005-07-07 11:29                               ` Ingo Molnar
  2005-07-07 11:37                                 ` Alistair John Strachan
  0 siblings, 1 reply; 101+ messages in thread
From: Ingo Molnar @ 2005-07-07 11:29 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:

> Unfortunately, since this is called when the kernel crashes, it's 
> impossible for me to capture any messages prior to this spam, if there 
> even are any.

this is where serial logging (or netconsole/netlogging) may be useful.

do you have DEBUG_STACKOVERFLOW and latency tracing still enabled?  The 
combination of those two options is pretty good at detecting stack 
overflows. Also, you might want to enable CONFIG_4KSTACKS, that too 
disturbs the stack layout enough so that the error message may make it 
to the console.

	Ingo

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-07 11:29                               ` Ingo Molnar
@ 2005-07-07 11:37                                 ` Alistair John Strachan
  2005-07-07 11:42                                   ` Ingo Molnar
  0 siblings, 1 reply; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-07 11:37 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

On Thursday 07 Jul 2005 12:29, Ingo Molnar wrote:
> * Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:
> > Unfortunately, since this is called when the kernel crashes, it's
> > impossible for me to capture any messages prior to this spam, if there
> > even are any.
>
> this is where serial logging (or netconsole/netlogging) may be useful.
>
> do you have DEBUG_STACKOVERFLOW and latency tracing still enabled?  The
> combination of those two options is pretty good at detecting stack
> overflows. Also, you might want to enable CONFIG_4KSTACKS, that too
> disturbs the stack layout enough so that the error message may make it
> to the console.

I already have 4KSTACKS on. Latency tracing is enabled, but STACKOVERFLOW 
isn't; I'll just reenable everything again until we fix this. Do you think if 
I removed the printk() line I might get some useful information, before it 
does the stack trace?

I'm happy enough to work with this indefinitely now, at least I have a certain 
cause for the lockups, so I can continue to use the machine for R&D.

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-07 11:37                                 ` Alistair John Strachan
@ 2005-07-07 11:42                                   ` Ingo Molnar
  2005-07-07 12:15                                     ` Alistair John Strachan
  2005-07-08  9:47                                     ` Alistair John Strachan
  0 siblings, 2 replies; 101+ messages in thread
From: Ingo Molnar @ 2005-07-07 11:42 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:

> > do you have DEBUG_STACKOVERFLOW and latency tracing still enabled?  The
> > combination of those two options is pretty good at detecting stack
> > overflows. Also, you might want to enable CONFIG_4KSTACKS, that too
> > disturbs the stack layout enough so that the error message may make it
> > to the console.
> 
> I already have 4KSTACKS on. Latency tracing is enabled, but 
> STACKOVERFLOW isn't; I'll just reenable everything again until we fix 
> this. Do you think if I removed the printk() line I might get some 
> useful information, before it does the stack trace?

usually such loops happen if the stack has been overflown and critical 
information that lies on the bottom of the stack (struct thread_info) is 
overwritten. Then we often cannot even perform simple printks. Stack 
overflow debugging wont prevent the crash, but might give a better 
traceback.

	Ingo

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-07 11:42                                   ` Ingo Molnar
@ 2005-07-07 12:15                                     ` Alistair John Strachan
  2005-07-07 12:29                                       ` Ingo Molnar
  2005-07-07 12:33                                       ` Alistair John Strachan
  2005-07-08  9:47                                     ` Alistair John Strachan
  1 sibling, 2 replies; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-07 12:15 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

On Thursday 07 Jul 2005 12:42, Ingo Molnar wrote:
> * Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:
> > > do you have DEBUG_STACKOVERFLOW and latency tracing still enabled?  The
> > > combination of those two options is pretty good at detecting stack
> > > overflows. Also, you might want to enable CONFIG_4KSTACKS, that too
> > > disturbs the stack layout enough so that the error message may make it
> > > to the console.
> >
> > I already have 4KSTACKS on. Latency tracing is enabled, but
> > STACKOVERFLOW isn't; I'll just reenable everything again until we fix
> > this. Do you think if I removed the printk() line I might get some
> > useful information, before it does the stack trace?
>
> usually such loops happen if the stack has been overflown and critical
> information that lies on the bottom of the stack (struct thread_info) is
> overwritten. Then we often cannot even perform simple printks. Stack
> overflow debugging wont prevent the crash, but might give a better
> traceback.
>
> 	Ingo

http://devzero.co.uk/~alistair/oops1.jpeg

I disabled the trace and the STACKOVERFLOW option seems to help; I've got a 
(slightly truncated) oops from the kernel. What happens is that I get an 
oops, then I get a BUG: warning me about the softlock, then I get another 
oops. I'm about to reboot to confirm whether the second oops is identical to 
the first (I suspect that it is).

Is this any help do you?

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-07 12:15                                     ` Alistair John Strachan
@ 2005-07-07 12:29                                       ` Ingo Molnar
  2005-07-07 13:38                                         ` Alistair John Strachan
  2005-07-07 12:33                                       ` Alistair John Strachan
  1 sibling, 1 reply; 101+ messages in thread
From: Ingo Molnar @ 2005-07-07 12:29 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:

> http://devzero.co.uk/~alistair/oops1.jpeg
> 
> I disabled the trace and the STACKOVERFLOW option seems to help; I've 
> got a (slightly truncated) oops from the kernel. What happens is that 
> I get an oops, then I get a BUG: warning me about the softlock, then I 
> get another oops. I'm about to reboot to confirm whether the second 
> oops is identical to the first (I suspect that it is).

unfortunately the EIP is at 0xedc, which is a corrupted value. The stack 
trace portion that is visible on the screen is the usual pagefault trace 
- without any information about the crash site itself. What the oops 
tells us is that it's the openvpn process that crashed (if this was the 
first oops). The preempt_count is 0x20010004, which shows us that this 
was a section that had soft-IRQ-flags disabled and was in a hardirq 
context.  (see the meaning of the preempt bits at the top of 
include/linux/hardirq.h) That it's a hardirq handler that crashed is 
further corroborated by the esp, which points into a kernel data area 
(hardirq_ctx[], the 4K irq stacks), not into the process's kernel stack 
(which is at threadinfo).

the stack pointer itself looks healthy, it's near the end of a 4K page, 
i.e. far from overflowing. So it would be really useful to get the full 
oops output. (that way you can also be sure it's the first crash you are 
seeing.)

(i doubt netconsole debugging will work, given that we are in a hardirq 
context. Serial logging will work.)

one thing you could try is to apply the attached patch and reproduce the 
crash. It should print a pure backtrace and lock the box up afterwards, 
so that you can take a picture.

	Ingo

--- linux/arch/i386/kernel/traps.c.orig
+++ linux/arch/i386/kernel/traps.c
@@ -323,6 +323,8 @@ void die(const char * str, struct pt_reg
 
 	if (++die.lock_owner_depth < 3) {
 		int nl = 0;
+		dump_stack();
+		for (;;) raw_local_irq_disable(); // freeze the box
 		handle_BUG(regs);
 		printk(KERN_ALERT "%s: %04lx [#%d]\n", str, err & 0xffff, ++die_counter);
 #ifdef CONFIG_PREEMPT

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-07 12:15                                     ` Alistair John Strachan
  2005-07-07 12:29                                       ` Ingo Molnar
@ 2005-07-07 12:33                                       ` Alistair John Strachan
  1 sibling, 0 replies; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-07 12:33 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

On Thursday 07 Jul 2005 13:15, Alistair John Strachan wrote:
> On Thursday 07 Jul 2005 12:42, Ingo Molnar wrote:
> > * Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:
> > > > do you have DEBUG_STACKOVERFLOW and latency tracing still enabled? 
> > > > The combination of those two options is pretty good at detecting
> > > > stack overflows. Also, you might want to enable CONFIG_4KSTACKS, that
> > > > too disturbs the stack layout enough so that the error message may
> > > > make it to the console.
> > >
> > > I already have 4KSTACKS on. Latency tracing is enabled, but
> > > STACKOVERFLOW isn't; I'll just reenable everything again until we fix
> > > this. Do you think if I removed the printk() line I might get some
> > > useful information, before it does the stack trace?
> >
> > usually such loops happen if the stack has been overflown and critical
> > information that lies on the bottom of the stack (struct thread_info) is
> > overwritten. Then we often cannot even perform simple printks. Stack
> > overflow debugging wont prevent the crash, but might give a better
> > traceback.
> >
> > 	Ingo
>
> http://devzero.co.uk/~alistair/oops1.jpeg
>
> I disabled the trace and the STACKOVERFLOW option seems to help; I've got a
> (slightly truncated) oops from the kernel. What happens is that I get an
> oops, then I get a BUG: warning me about the softlock, then I get another
> oops. I'm about to reboot to confirm whether the second oops is identical
> to the first (I suspect that it is).

http://devzero.co.uk/~alistair/oops3.jpeg

This shows the first oops (it's slightly different).

http://devzero.co.uk/~alistair/oops2.jpeg

This shows the BUG: after the first oops

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-07 12:29                                       ` Ingo Molnar
@ 2005-07-07 13:38                                         ` Alistair John Strachan
  0 siblings, 0 replies; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-07 13:38 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

On Thursday 07 Jul 2005 13:29, Ingo Molnar wrote:
> * Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:
> > http://devzero.co.uk/~alistair/oops1.jpeg
> >
> > I disabled the trace and the STACKOVERFLOW option seems to help; I've
> > got a (slightly truncated) oops from the kernel. What happens is that
> > I get an oops, then I get a BUG: warning me about the softlock, then I
> > get another oops. I'm about to reboot to confirm whether the second
> > oops is identical to the first (I suspect that it is).
>
> unfortunately the EIP is at 0xedc, which is a corrupted value. The stack
> trace portion that is visible on the screen is the usual pagefault trace
> - without any information about the crash site itself. What the oops
> tells us is that it's the openvpn process that crashed (if this was the
> first oops). The preempt_count is 0x20010004, which shows us that this
> was a section that had soft-IRQ-flags disabled and was in a hardirq
> context.  (see the meaning of the preempt bits at the top of
> include/linux/hardirq.h) That it's a hardirq handler that crashed is
> further corroborated by the esp, which points into a kernel data area
> (hardirq_ctx[], the 4K irq stacks), not into the process's kernel stack
> (which is at threadinfo).
>
> the stack pointer itself looks healthy, it's near the end of a 4K page,
> i.e. far from overflowing. So it would be really useful to get the full
> oops output. (that way you can also be sure it's the first crash you are
> seeing.)
>
> (i doubt netconsole debugging will work, given that we are in a hardirq
> context. Serial logging will work.)
>
> one thing you could try is to apply the attached patch and reproduce the
> crash. It should print a pure backtrace and lock the box up afterwards,
> so that you can take a picture.

Done, sorry for the delay.

http://devzero.co.uk/~alistair/oops4.jpeg

I don't think this is really any more helpful, the dereference is at "virtual 
address 00000001" which sounds fishy.

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-07 11:42                                   ` Ingo Molnar
  2005-07-07 12:15                                     ` Alistair John Strachan
@ 2005-07-08  9:47                                     ` Alistair John Strachan
  2005-07-08 11:46                                       ` Ingo Molnar
  2005-07-08 11:48                                       ` Ingo Molnar
  1 sibling, 2 replies; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-08  9:47 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

On Thursday 07 Jul 2005 12:42, Ingo Molnar wrote:
> * Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:
> > > do you have DEBUG_STACKOVERFLOW and latency tracing still enabled?  The
> > > combination of those two options is pretty good at detecting stack
> > > overflows. Also, you might want to enable CONFIG_4KSTACKS, that too
> > > disturbs the stack layout enough so that the error message may make it
> > > to the console.
> >
> > I already have 4KSTACKS on. Latency tracing is enabled, but
> > STACKOVERFLOW isn't; I'll just reenable everything again until we fix
> > this. Do you think if I removed the printk() line I might get some
> > useful information, before it does the stack trace?
>
> usually such loops happen if the stack has been overflown and critical
> information that lies on the bottom of the stack (struct thread_info) is
> overwritten. Then we often cannot even perform simple printks. Stack
> overflow debugging wont prevent the crash, but might give a better
> traceback.

Well, just to let others who have this problem know, it's clear that Ingo's 
rt-preempt patches increase stack pressure on systems (like mine) where stack 
is borderline under 4K by default.

If you disable CONFIG_4KSTACKS the stack overflows seem to disappear. As a 
result, until we isolate the problem, it'd probably be better if Ingo 
maintained an 8K stacks option in the rt-preempt patches assuming Adrian 
Bunk's "kill !4KSTACKS" patch gets into mainline..

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-08  9:47                                     ` Alistair John Strachan
@ 2005-07-08 11:46                                       ` Ingo Molnar
  2005-07-08 18:38                                         ` Alistair John Strachan
  2005-07-08 11:48                                       ` Ingo Molnar
  1 sibling, 1 reply; 101+ messages in thread
From: Ingo Molnar @ 2005-07-08 11:46 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:

> Well, just to let others who have this problem know, it's clear that 
> Ingo's rt-preempt patches increase stack pressure on systems (like 
> mine) where stack is borderline under 4K by default.
> 
> If you disable CONFIG_4KSTACKS the stack overflows seem to disappear.  
> As a result, until we isolate the problem, it'd probably be better if 
> Ingo maintained an 8K stacks option in the rt-preempt patches assuming 
> Adrian Bunk's "kill !4KSTACKS" patch gets into mainline..

Ok. Could you try to debug this some more? In the -51-17 patch i've 
implemented a new stack-overflow debugging feature: 'stack footprint 
maximum searching'. It is automatically active if you have 
CONFIG_LATENCY_TRACE and CONFIG_DEBUG_STACKOVERFLOW enabled. It will 
track and (if it can be done safely) print out maximum stack usage sites 
immediately. Hopefully this results in better stackdumps. It should 
print similar traces:

----------------------------->
| new stack-footprint maximum: smartd/1747, 1768 bytes.
------------|
 [<c013c1b6>] check_raw_flags+0xb/0x55 (8)
 [<c013ebeb>] sub_preempt_count+0x1a/0x1c (8)
 [<c013cb28>] __mcount+0x6a/0x91 (28)
 [<c013c3ff>] irqs_disabled+0x8/0x19 (16)
 [<c013c7b5>] ____trace+0x9e/0x208 (4)
 [<c01142d8>] mcount+0x14/0x18 (24)
 [<c013c3ff>] irqs_disabled+0x8/0x19 (20)
 [<c013c7b5>] ____trace+0x9e/0x208 (8)
 [<c013f145>] trace_stop_sched_switched+0x40/0x17d (8)
 [...]

i've written a separate, hopefully more robust stack-dumper which is 
used for the above traces. Perhaps in your overflow case it results in 
something usable.

	Ingo

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-08  9:47                                     ` Alistair John Strachan
  2005-07-08 11:46                                       ` Ingo Molnar
@ 2005-07-08 11:48                                       ` Ingo Molnar
  2005-07-08 17:42                                         ` Alistair John Strachan
  1 sibling, 1 reply; 101+ messages in thread
From: Ingo Molnar @ 2005-07-08 11:48 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:

> Well, just to let others who have this problem know, it's clear that 
> Ingo's rt-preempt patches increase stack pressure on systems (like 
> mine) where stack is borderline under 4K by default.

btw., which gcc version are you using?

	Ingo

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-08 11:48                                       ` Ingo Molnar
@ 2005-07-08 17:42                                         ` Alistair John Strachan
  2005-07-08 17:48                                           ` Jakub Jelinek
  0 siblings, 1 reply; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-08 17:42 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

On Friday 08 Jul 2005 12:48, Ingo Molnar wrote:
> * Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:
> > Well, just to let others who have this problem know, it's clear that
> > Ingo's rt-preempt patches increase stack pressure on systems (like
> > mine) where stack is borderline under 4K by default.
>
> btw., which gcc version are you using?
>

Not the GCC version known to bloat stacks ;-)

3.4.4, on both my machines. I'm not touching 4.x until 4.0.1 is released with 
the miscompiled-code fixes.

btw, sorry for the delay replying, busy day..

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-08 17:42                                         ` Alistair John Strachan
@ 2005-07-08 17:48                                           ` Jakub Jelinek
  2005-07-08 18:12                                             ` Alistair John Strachan
  0 siblings, 1 reply; 101+ messages in thread
From: Jakub Jelinek @ 2005-07-08 17:48 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: Ingo Molnar, linux-kernel

On Fri, Jul 08, 2005 at 06:42:53PM +0100, Alistair John Strachan wrote:
> > btw., which gcc version are you using?
> 
> Not the GCC version known to bloat stacks ;-)
> 
> 3.4.4, on both my machines. I'm not touching 4.x until 4.0.1 is released with 
> the miscompiled-code fixes.

GCC 4.0.x bloats stacks less than 3.4.4.
And, if you are looking for 4.0.1, it has been released yesterday.

	Jakub

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-08 17:48                                           ` Jakub Jelinek
@ 2005-07-08 18:12                                             ` Alistair John Strachan
  0 siblings, 0 replies; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-08 18:12 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: Ingo Molnar, linux-kernel

On Friday 08 Jul 2005 18:48, Jakub Jelinek wrote:
> On Fri, Jul 08, 2005 at 06:42:53PM +0100, Alistair John Strachan wrote:
> > > btw., which gcc version are you using?
> >
> > Not the GCC version known to bloat stacks ;-)
> >
> > 3.4.4, on both my machines. I'm not touching 4.x until 4.0.1 is released
> > with the miscompiled-code fixes.
>
> GCC 4.0.x bloats stacks less than 3.4.4.
> And, if you are looking for 4.0.1, it has been released yesterday.
>

Thanks for the info, great. However, I'm sure it would be good if a "known 
good" GCC prior to 4.0.x was usable on a 4KSTACKS/RT-PREEMPT kernel?

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-08 11:46                                       ` Ingo Molnar
@ 2005-07-08 18:38                                         ` Alistair John Strachan
  2005-07-08 19:12                                           ` USB storage does not work with 3GB of RAM, but does with 2G of RAM Jon Schindler
                                                             ` (3 more replies)
  0 siblings, 4 replies; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-08 18:38 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1994 bytes --]

On Friday 08 Jul 2005 12:46, Ingo Molnar wrote:
[snip]
>
> Ok. Could you try to debug this some more? In the -51-17 patch i've
> implemented a new stack-overflow debugging feature: 'stack footprint
> maximum searching'. It is automatically active if you have
> CONFIG_LATENCY_TRACE and CONFIG_DEBUG_STACKOVERFLOW enabled. It will
> track and (if it can be done safely) print out maximum stack usage sites
> immediately. Hopefully this results in better stackdumps. It should
> print similar traces:
>
> ----------------------------->
>
> | new stack-footprint maximum: smartd/1747, 1768 bytes.
>
> ------------|
>  [<c013c1b6>] check_raw_flags+0xb/0x55 (8)
>  [<c013ebeb>] sub_preempt_count+0x1a/0x1c (8)
>  [<c013cb28>] __mcount+0x6a/0x91 (28)
>  [<c013c3ff>] irqs_disabled+0x8/0x19 (16)
>  [<c013c7b5>] ____trace+0x9e/0x208 (4)
>  [<c01142d8>] mcount+0x14/0x18 (24)
>  [<c013c3ff>] irqs_disabled+0x8/0x19 (20)
>  [<c013c7b5>] ____trace+0x9e/0x208 (8)
>  [<c013f145>] trace_stop_sched_switched+0x40/0x17d (8)
>  [...]
>
> i've written a separate, hopefully more robust stack-dumper which is
> used for the above traces. Perhaps in your overflow case it results in
> something usable.

Unfortunately I see nothing like this when the machine crashes. Find attached 
my config, which has CONFIG_4KSTACKS and the options you specified. Are you 
sure this is sufficient to enable it?

Here is an extremely bad digital camera pic from the crash. My debugging 
prowess has evolved to the stage where by I'm using a maximum res vesafb 
console.

However, I'm not at work so it's my own digital camera that I'm using rather 
than work's, and it seems to react badly to the LCD. I hope you can read the 
numbers, if not I'll try to transliterate them for you.

http://devzero.co.uk/~alistair/oops5.jpeg

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

[-- Attachment #2: config.gz --]
[-- Type: application/x-gzip, Size: 8558 bytes --]

^ permalink raw reply	[flat|nested] 101+ messages in thread

* USB storage does not work with 3GB of RAM, but does with 2G of RAM
  2005-07-08 18:38                                         ` Alistair John Strachan
@ 2005-07-08 19:12                                           ` Jon Schindler
  2005-07-08 19:25                                           ` Realtime Preemption, 2.6.12, Beginners Guide? Ingo Molnar
                                                             ` (2 subsequent siblings)
  3 siblings, 0 replies; 101+ messages in thread
From: Jon Schindler @ 2005-07-08 19:12 UTC (permalink / raw)
  To: linux-kernel

I submitted this bug to both the USB users and developers mailing list, and 
haven't heard anything after waiting several days, so I thought that I would 
try here.  While waiting for a response another user contacted me who is 
having the same problem, so I am not the only person who is running into 
problems with USB storage when using large amounts of RAM.  Below is the 
text of my original submission...

I have just upgraded my RAM, and now have 3GB of total memory.  For some 
reason USB does not work with this amount of RAM.  However, if I remove two 
DIMM's it works again (it works fine with either the 2x1GB DIMMs or 2x512MB 
DIMMS, but not all 4 DIMMS installed).  I'm assuming that it's an issue with 
having over 2GB's of RAM installed.  I will post both of my dmesgs below, 
the first one is when my system has 2GB's of RAM, and the 2nd when my system 
has 3GB's of RAM.  I've already tried adding --no-mem-option to my kernel 
options, to see if maybe grub wasn't feeding the kernel the wrong memory 
layout.  I am running a beta bios 1.9b5 on an MSI K8N neo2 platinum.  I also 
have a dual core athlon 4800+, and am running Fedora Core 4 64 bit edition.  
The USB does work in knoppix 3.9 with 3GB of RAM, but I would like to get 
this working in Fedora Core 4 with 3GB of RAM, not just 2GB.

This mainly seems to be an issue with USB mass storage devices like USB 
memory sticks and USB hard drives (I've tried both, and neither is assigned 
a scsi device properly).  I am still able to use my USB mouse when I have 
3GB installed.  I'm not sure if that makes it a USB 1.1 issue or a USB 
storage issue, but hopefully someone will have some insight after looking at 
the logs.  Thanks in advance for any help.

Jon

dmesg with 2GB of RAM:
Bootdata ok (command line is ro root=LABEL=/1 rhgb 3)
Linux version 2.6.12.1 (root@localhost) (gcc version 4.0.0 20050519 (Red Hat 
4.0.0-8)) #14 SMP Tue Jul 5 00:33:42 CDT 2005
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009f000 (usable)
BIOS-e820: 000000000009f000 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 000000007fff0000 (usable)
BIOS-e820: 000000007fff0000 - 000000007fff3000 (ACPI NVS)
BIOS-e820: 000000007fff3000 - 0000000080000000 (ACPI data)
BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved)
ACPI: RSDP (v000 Nvidia                                ) @ 
0x00000000000f8e80
ACPI: RSDT (v001 Nvidia AWRDACPI 0x42302e31 AWRD 0x00000000) @ 
0x000000007fff3040
ACPI: FADT (v001 Nvidia AWRDACPI 0x42302e31 AWRD 0x00000000) @ 
0x000000007fff30c0
ACPI: SSDT (v001 PTLTD  POWERNOW 0x00000001  LTP 0x00000001) @ 
0x000000007fff7b80
ACPI: MADT (v001 Nvidia AWRDACPI 0x42302e31 AWRD 0x00000000) @ 
0x000000007fff7ac0
ACPI: DSDT (v001 NVIDIA AWRDACPI 0x00001000 MSFT 0x0100000e) @ 
0x0000000000000000
Scanning NUMA topology in Northbridge 24
Number of nodes 1
Node 0 MemBase 0000000000000000 Limit 000000007fff0000
Using node hash shift of 24
Bootmem setup node 0 0000000000000000-000000007fff0000
On node 0 totalpages: 524272
DMA zone: 4096 pages, LIFO batch:1
Normal zone: 520176 pages, LIFO batch:31
HighMem zone: 0 pages, LIFO batch:1
Nvidia board detected. Ignoring ACPI timer override.
ACPI: Local APIC address 0xfee00000
ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
Processor #0 15:3 APIC version 16
ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)
Processor #1 15:3 APIC version 16
ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
IOAPIC[0]: apic_id 2, version 17, address 0xfec00000, GSI 0-23
ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
ACPI: BIOS IRQ0 pin2 override ignored.
ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
ACPI: INT_SRC_OVR (bus 0 bus_irq 14 global_irq 14 high edge)
ACPI: INT_SRC_OVR (bus 0 bus_irq 15 global_irq 15 high edge)
ACPI: IRQ9 used by override.
ACPI: IRQ14 used by override.
ACPI: IRQ15 used by override.
Setting APIC routing to flat
Using ACPI (MADT) for SMP configuration information
Allocating PCI resources starting at 80000000 (gap: 80000000:7ec00000)
Checking aperture...
CPU 0: aperture @ f0000000 size 128 MB
Built 1 zonelists
Kernel command line: ro root=LABEL=/1 rhgb 3
Initializing CPU#0
PID hash table entries: 4096 (order: 12, 131072 bytes)
time.c: Using 1.193182 MHz PIT timer.
time.c: Detected 2411.013 MHz processor.
Console: colour VGA+ 80x25
Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes)
Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes)
Memory: 2054132k/2097088k available (2382k kernel code, 0k reserved, 1584k 
data, 228k init)
Calibrating delay loop... 4767.74 BogoMIPS (lpj=2383872)
Security Framework v1.0.0 initialized
SELinux:  Initializing.
SELinux:  Starting in permissive mode
selinux_register_security:  Registering secondary module capability
Capability LSM initialized as secondary
Mount-cache hash table entries: 256
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 1024K (64 bytes/line)
CPU 0(2) -> Node 0 -> Core 0
Using local APIC timer interrupts.
Detected 12.557 MHz APIC timer.
Booting processor 1/1 rip 6000 rsp ffff810003351f58
Initializing CPU#1
Calibrating delay loop... 4816.89 BogoMIPS (lpj=2408448)
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 1024K (64 bytes/line)
CPU 1(2) -> Node 0 -> Core 1
AMD Athlon(tm) 64 X2 Dual Core Processor 4800+ stepping 02
CPU 1: Syncing TSC to CPU 0.
Brought up 2 CPUs
CPU 1: synchronized TSC with CPU 0 (last diff -1 cycles, maxerr 505 cycles)
time.c: Using PIT/TSC based timekeeping.
testing NMI watchdog ... OK.
CPU0 attaching sched-domain:
domain 0: span 00000001
groups: 00000001
domain 1: span 00000003
groups: 00000001 00000002
domain 2: span 00000003
  groups: 00000003
CPU1 attaching sched-domain:
domain 0: span 00000002
groups: 00000002
domain 1: span 00000003
groups: 00000002 00000001
domain 2: span 00000003
  groups: 00000003
checking if image is initramfs... it is
NET: Registered protocol family 16
PCI: Using configuration type 1
mtrr: v2.0 (20020519)
ACPI: Subsystem revision 20050309
ACPI: Interpreter enabled
ACPI: Using IOAPIC for interrupt routing
ACPI: PCI Root Bridge [PCI0] (0000:00)
PCI: Probing PCI hardware (bus 00)
Boot video device is 0000:01:00.0
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.HUB0._PRT]
ACPI: Power Resource [ISAV] (on)
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.AGPB._PRT]
ACPI: PCI Interrupt Link [LNK1] (IRQs 3 4 5 6 7 *10 11 12 14 15)
ACPI: PCI Interrupt Link [LNK2] (IRQs 3 4 *5 6 7 10 11 12 14 15)
ACPI: PCI Interrupt Link [LNK3] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, 
disabled.
ACPI: PCI Interrupt Link [LNK4] (IRQs 3 4 *5 6 7 10 11 12 14 15)
ACPI: PCI Interrupt Link [LNK5] (IRQs 3 4 *5 6 7 10 11 12 14 15)
ACPI: PCI Interrupt Link [LUBA] (IRQs 3 4 *5 6 7 10 11 12 14 15)
ACPI: PCI Interrupt Link [LUBB] (IRQs 3 4 5 6 7 *10 11 12 14 15)
ACPI: PCI Interrupt Link [LMAC] (IRQs 3 4 5 6 7 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LAPU] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, 
disabled.
ACPI: PCI Interrupt Link [LACI] (IRQs 3 4 5 6 7 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LMCI] (IRQs 3 4 5 6 7 *10 11 12 14 15)
ACPI: PCI Interrupt Link [LSMB] (IRQs 3 4 5 6 7 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LUB2] (IRQs 3 4 5 6 7 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LFIR] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, 
disabled.
ACPI: PCI Interrupt Link [L3CM] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, 
disabled.
ACPI: PCI Interrupt Link [LIDE] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, 
disabled.
ACPI: PCI Interrupt Link [LSID] (IRQs 3 4 5 6 7 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LFID] (IRQs 3 4 5 6 7 *10 11 12 14 15)
ACPI: PCI Interrupt Link [APC1] (IRQs 16) *0, disabled.
ACPI: PCI Interrupt Link [APC2] (IRQs 17) *0, disabled.
ACPI: PCI Interrupt Link [APC3] (IRQs 18) *0, disabled.
ACPI: PCI Interrupt Link [APC4] (IRQs 19) *0, disabled.
ACPI: PCI Interrupt Link [APC5] (IRQs *16), disabled.
ACPI: PCI Interrupt Link [APCF] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCG] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCH] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCI] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCJ] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCK] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCS] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCL] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCM] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [AP3C] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCZ] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APSI] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APSJ] (IRQs 20 21 22 23) *0, disabled.
Linux Plug and Play Support v0.97 (c) Adam Belay
pnp: PnP ACPI init
pnp: PnP ACPI: found 13 devices
usbcore: registered new driver usbfs
usbcore: registered new driver hub
PCI: Using ACPI for IRQ routing
PCI: If a device doesn't work, try "pci=routeirq".  If it helps, post a 
report
agpgart: Detected AGP bridge 0
agpgart: Setting up Nforce3 AGP.
agpgart: AGP aperture is 128M @ 0xf0000000
PCI-DMA: Disabling IOMMU.
pnp: 00:00: ioport range 0x4000-0x407f could not be reserved
pnp: 00:00: ioport range 0x4080-0x40ff has been reserved
pnp: 00:00: ioport range 0x4400-0x447f has been reserved
pnp: 00:00: ioport range 0x4480-0x44ff could not be reserved
pnp: 00:00: ioport range 0x4800-0x487f has been reserved
pnp: 00:00: ioport range 0x4880-0x48ff has been reserved
IA32 emulation $Id: sys_ia32.c,v 1.32 2002/03/24 13:02:28 ak Exp $
audit: initializing netlink socket (disabled)
audit(1120524127.297:0): initialized
Total HugeTLB memory allocated, 0
VFS: Disk quotas dquot_6.5.1
Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
SELinux:  Registering netfilter hooks
Initializing Cryptographic API
pci_hotplug: PCI Hot Plug PCI Core version: 0.5
Real Time Clock Driver v1.12
Linux agpgart interface v0.101 (c) Dave Jones
PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12
serio: i8042 AUX port at 0x60,0x64 irq 12
serio: i8042 KBD port at 0x60,0x64 irq 1
Serial: 8250/16550 driver $Revision: 1.90 $ 76 ports, IRQ sharing enabled
ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered
RAMDISK driver initialized: 16 RAM disks of 16384K size 1024 blocksize
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
NFORCE3-250: IDE controller at PCI slot 0000:00:08.0
NFORCE3-250: chipset revision 162
NFORCE3-250: not 100% native mode: will probe irqs later
NFORCE3-250: BIOS didn't set cable bits correctly. Enabling workaround.
NFORCE3-250: BIOS didn't set cable bits correctly. Enabling workaround.
NFORCE3-250: 0000:00:08.0 (rev a2) UDMA133 controller
  ide0: BM-DMA at 0xdc00-0xdc07, BIOS settings: hda:DMA, hdb:DMA
  ide1: BM-DMA at 0xdc08-0xdc0f, BIOS settings: hdc:DMA, hdd:DMA
Probing IDE interface ide0...
hda: Maxtor 6Y250P0, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
Probing IDE interface ide1...
hdc: PLEXTOR DVDR PX-716A, ATAPI CD/DVD-ROM drive
hdd: TOSHIBA DVD-ROM SD-M1212, ATAPI CD/DVD-ROM drive
ide1 at 0x170-0x177,0x376 on irq 15
Probing IDE interface ide2...
Probing IDE interface ide3...
Probing IDE interface ide4...
Probing IDE interface ide5...
hda: max request size: 1024KiB
hda: 490234752 sectors (251000 MB) w/7936KiB Cache, CHS=30515/255/63, 
UDMA(133)
hda: cache flushes supported
hda: hda1 hda2
hdc: ATAPI 40X DVD-ROM DVD-R CD-R/RW drive, 8192kB Cache
Uniform CD-ROM driver Revision: 3.20
hdd: ATAPI 32X DVD-ROM drive, 256kB Cache, UDMA(33)
ide-floppy driver 0.99.newide
usbcore: registered new driver hiddev
usbcore: registered new driver usbhid
drivers/usb/input/hid-core.c: v2.01:USB HID core driver
mice: PS/2 mouse device common for all mice
md: md driver 0.90.1 MAX_MD_DEVS=256, MD_SB_DISKS=27
NET: Registered protocol family 2
IP: routing cache hash table of 8192 buckets, 128Kbytes
TCP established hash table entries: 262144 (order: 10, 4194304 bytes)
TCP bind hash table entries: 65536 (order: 8, 1048576 bytes)
TCP: Hash tables configured (established 262144 bind 65536)
Initializing IPsec netlink socket
NET: Registered protocol family 1
NET: Registered protocol family 17
powernow-k8: Found 2 AMD Athlon 64 / Opteron processors (version 1.40.2)
powernow-k8:    0 : fid 0x10 (2400 MHz), vid 0xa (1300 mV)
powernow-k8:    1 : fid 0xe (2200 MHz), vid 0xa (1300 mV)
powernow-k8:    2 : fid 0xc (2000 MHz), vid 0xc (1250 mV)
powernow-k8:    3 : fid 0xa (1800 MHz), vid 0xe (1200 mV)
powernow-k8:    4 : fid 0x2 (1000 MHz), vid 0x12 (1100 mV)
cpu_init done, current fid 0x10, vid 0xa
ACPI wakeup devices:
HUB0 HUB1 USB0 USB1 USB2 F139 MMAC MMCI UAR1
ACPI: (supports S0 S1 S4 S5)
Freeing unused kernel memory: 228k freed
input: AT Translated Set 2 keyboard on isa0060/serio0
SCSI subsystem initialized
libata version 1.11 loaded.
sata_nv version 0.6
ACPI: PCI Interrupt Link [APSI] enabled at IRQ 23
ACPI: PCI Interrupt 0000:00:09.0[A] -> Link [APSI] -> GSI 23 (level, high) 
-> IRQ 177
PCI: Setting latency timer of device 0000:00:09.0 to 64
ata1: SATA max UDMA/133 cmd 0x9E0 ctl 0xBE2 bmdma 0xC800 irq 177
ata2: SATA max UDMA/133 cmd 0x960 ctl 0xB62 bmdma 0xC808 irq 177
ata1: no device found (phy stat 00000000)
scsi0 : sata_nv
input: PS2++ Logitech Wheel Mouse on isa0060/serio1
ata2: dev 0 cfg 49:2f00 82:346b 83:7f01 84:4003 85:3469 86:3c01 87:4003 
88:203f
ata2: dev 0 ATA, max UDMA/100, 625142448 sectors: lba48
nv_sata: Primary device removed
nv_sata: Secondary device added
nv_sata: Secondary device removed
ata2: dev 0 configured for UDMA/100
scsi1 : sata_nv
Vendor: ATA       Model: WDC WD3200SD-01K  Rev: 08.0
Type:   Direct-Access                      ANSI SCSI revision: 05
SCSI device sda: 625142448 512-byte hdwr sectors (320073 MB)
SCSI device sda: drive cache: write back
SCSI device sda: 625142448 512-byte hdwr sectors (320073 MB)
SCSI device sda: drive cache: write back
sda: sda1 sda2 sda3
Attached scsi disk sda at scsi1, channel 0, id 0, lun 0
ACPI: PCI Interrupt Link [APSJ] enabled at IRQ 22
ACPI: PCI Interrupt 0000:00:0a.0[A] -> Link [APSJ] -> GSI 22 (level, high) 
-> IRQ 185
PCI: Setting latency timer of device 0000:00:0a.0 to 64
ata3: SATA max UDMA/133 cmd 0x9F0 ctl 0xBF2 bmdma 0xB000 irq 185
ata4: SATA max UDMA/133 cmd 0x970 ctl 0xB72 bmdma 0xB008 irq 185
ata3: dev 0 cfg 49:0e00 82:0000 83:0000 84:0000 85:0000 86:0000 87:0000 
88:0000
ata3: no dma/lba
ata3: dev 0 not supported, ignoring
scsi2 : sata_nv
ata4: dev 0 cfg 49:2f00 82:74eb 83:7f63 84:4003 85:74e9 86:3c43 87:4003 
88:407f
ata4: dev 0 ATA, max UDMA/133, 145226112 sectors: lba48
nv_sata: Primary device added
nv_sata: Primary device removed
nv_sata: Secondary device added
nv_sata: Secondary device removed
ata4: dev 0 configured for UDMA/133
scsi3 : sata_nv
Vendor: ATA       Model: WDC WD740GD-00FL  Rev: 31.0
Type:   Direct-Access                      ANSI SCSI revision: 05
SCSI device sdb: 145226112 512-byte hdwr sectors (74356 MB)
SCSI device sdb: drive cache: write back
SCSI device sdb: 145226112 512-byte hdwr sectors (74356 MB)
SCSI device sdb: drive cache: write back
sdb: sdb1
Attached scsi disk sdb at scsi3, channel 0, id 0, lun 0
kjournald starting.  Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
SELinux:  Disabled at runtime.
SELinux:  Unregistering netfilter hooks
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
forcedeth.c: Reverse Engineered nForce ethernet driver. Version 0.32.
ACPI: PCI Interrupt Link [APCH] enabled at IRQ 21
ACPI: PCI Interrupt 0000:00:05.0[A] -> Link [APCH] -> GSI 21 (level, high) 
-> IRQ 193
PCI: Setting latency timer of device 0000:00:05.0 to 64
0000:00:05.0: Invalid Mac address detected: 8d:f0:00:e7:39:00
Please complain to your hardware vendor. Switching to a random MAC.
eth0: forcedeth.c: subsystem: 01462:0250 bound to 0000:00:05.0
r8169 Gigabit Ethernet driver 2.2LK loaded
ACPI: PCI Interrupt Link [APC5] enabled at IRQ 16
ACPI: PCI Interrupt 0000:02:0d.0[A] -> Link [APC5] -> GSI 16 (level, low) -> 
IRQ 201
r8169: NAPI enabled
eth1: Identified chip type is 'RTL8169s/8110s'.
eth1: RTL8169 at 0xffffc20000006000, 00:11:09:8f:4f:a4, IRQ 201
ACPI: PCI Interrupt Link [APCJ] enabled at IRQ 20
ACPI: PCI Interrupt 0000:00:06.0[A] -> Link [APCJ] -> GSI 20 (level, high) 
-> IRQ 209
PCI: Setting latency timer of device 0000:00:06.0 to 64
intel8x0_measure_ac97_clock: measured 49682 usecs
intel8x0: clocking to 46759
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
i2c_adapter i2c-0: nForce2 SMBus adapter at 0x4c00
i2c_adapter i2c-1: nForce2 SMBus adapter at 0x4c40
Linux video capture interface: v1.00
bttv: driver version 0.9.15 loaded
bttv: using 8 buffers with 2080k (520 pages) each for capture
bttv: Bt8xx card found (0).
ACPI: PCI Interrupt Link [APC2] enabled at IRQ 17
ACPI: PCI Interrupt 0000:02:0a.0[A] -> Link [APC2] -> GSI 17 (level, low) -> 
IRQ 217
bttv0: Bt878 (rev 2) at 0000:02:0a.0, irq: 217, latency: 32, mmio: 
0xfdeff000
bttv0: detected: ATI TV Wonder [card=63], PCI subsystem ID is 1002:0001
bttv0: using: ATI TV-Wonder [card=63,autodetected]
bttv0: gpio: en=00000000, out=00000000 in=00ffffff [init]
bttv0: using tuner=19
bttv0: i2c: checking for MSP34xx @ 0x80... found
msp34xx: init: chip=MSP3430G-A4 +nicam +simple +simpler +radio mode=simpler
msp34xxg: daemon started
bttv0: i2c: checking for TDA9875 @ 0xb0... not found
bttv0: i2c: checking for TDA7432 @ 0x8a... not found
bttv0: i2c: checking for TDA9887 @ 0x86... not found
tuner 2-0060: chip found @ 0xc0 (bt878 #0 [sw])
tuner 2-0060: type set to 19 (Temic PAL* auto (4006 FN5))
bttv0: registered device video0
bttv0: registered device vbi0
bttv0: PLL: 28636363 => 35468950 .. ok
bt878: AUDIO driver version 0.0.0 loaded
bt878: Bt878 AUDIO function found (0).
ACPI: PCI Interrupt 0000:02:0a.1[A] -> Link [APC2] -> GSI 17 (level, low) -> 
IRQ 217
bt878(0): Bt878 (rev 2) at 02:0a.1, irq: 217, latency: 32, memory: 
0xfdefe000
ehci_hcd: block sizes: qh 160 qtd 96 itd 192 sitd 96
ACPI: PCI Interrupt Link [APCL] enabled at IRQ 23
ACPI: PCI Interrupt 0000:00:02.2[C] -> Link [APCL] -> GSI 23 (level, high) 
-> IRQ 177
PCI: Setting latency timer of device 0000:00:02.2 to 64
ehci_hcd 0000:00:02.2: nVidia Corporation nForce3 EHCI USB 2.0 Controller
ehci_hcd 0000:00:02.2: reset hcs_params 0x102488 dbg=1 cc=2 pcc=4 !ppc 
ports=8
ehci_hcd 0000:00:02.2: reset portroute 0 0 1 1 1 0 1 0
ehci_hcd 0000:00:02.2: reset hcc_params a082 caching frame 256/512/1024
ehci_hcd 0000:00:02.2: debug port 1
ehci_hcd 0000:00:02.2: capability 0001 at a0
ehci_hcd 0000:00:02.2: new USB bus registered, assigned bus number 1
ehci_hcd 0000:00:02.2: irq 177, io mem 0xfe02d000
ehci_hcd 0000:00:02.2: reset command 080002 (park)=0 ithresh=8 period=1024 
Reset HALT
PCI: cache line size of 64 is not supported by device 0000:00:02.2
ehci_hcd 0000:00:02.2: init command 010009 (park)=0 ithresh=1 period=256 RUN
ehci_hcd 0000:00:02.2: USB 2.0 initialized, EHCI 1.00, driver 10 Dec 2004
ehci_hcd 0000:00:02.2: supports USB remote wakeup
usb usb1: default language 0x0409
usb usb1: new device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: nVidia Corporation nForce3 EHCI USB 2.0 Controller
usb usb1: Manufacturer: Linux 2.6.12.1 ehci_hcd
usb usb1: SerialNumber: 0000:00:02.2
usb usb1: hotplug
usb usb1: adding 1-0:1.0 (config #1, interface 0)
usb 1-0:1.0: hotplug
hub 1-0:1.0: usb_probe_interface
hub 1-0:1.0: usb_probe_interface - got id
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 8 ports detected
hub 1-0:1.0: standalone hub
hub 1-0:1.0: no power switching (usb 1.0)
hub 1-0:1.0: individual port over-current protection
hub 1-0:1.0: Single TT
hub 1-0:1.0: TT requires at most 8 FS bit times
hub 1-0:1.0: power on to power good time: 20ms
hub 1-0:1.0: local power source is good
hub 1-0:1.0: state 5 ports 8 chg 0000 evt 0000
ohci_hcd: 2004 Nov 08 USB 1.1 'Open' Host Controller (OHCI) Driver (PCI)
ohci_hcd: block sizes: ed 80 td 96
ACPI: PCI Interrupt Link [APCF] enabled at IRQ 22
ACPI: PCI Interrupt 0000:00:02.0[A] -> Link [APCF] -> GSI 22 (level, high) 
-> IRQ 185
PCI: Setting latency timer of device 0000:00:02.0 to 64
ohci_hcd 0000:00:02.0: nVidia Corporation CK8S USB Controller
ohci_hcd 0000:00:02.0: new USB bus registered, assigned bus number 2
ohci_hcd 0000:00:02.0: irq 185, io mem 0xfe02f000
ohci_hcd 0000:00:02.0: resetting from state 'reset', control = 0x600
ohci_hcd 0000:00:02.0: OHCI controller state
ohci_hcd 0000:00:02.0: OHCI 1.0, NO legacy support registers
ohci_hcd 0000:00:02.0: control 0x683 RWE RWC HCFS=operational CBSR=3
ohci_hcd 0000:00:02.0: cmdstatus 0x00000 SOC=0
ohci_hcd 0000:00:02.0: intrstatus 0x00000004 SF
ohci_hcd 0000:00:02.0: intrenable 0x8000000a MIE RD WDH
ohci_hcd 0000:00:02.0: fminterval a7782edf
ohci_hcd 0000:00:02.0: hcca frame #0002
ohci_hcd 0000:00:02.0: roothub.a 01000204 POTPGT=1 NPS NDP=4
ohci_hcd 0000:00:02.0: roothub.b 00000000 PPCM=0000 DR=0000
ohci_hcd 0000:00:02.0: roothub.status 00008000 DRWE
ohci_hcd 0000:00:02.0: roothub.portstatus [0] 0x00000100 PPS
ohci_hcd 0000:00:02.0: roothub.portstatus [1] 0x00000100 PPS
ohci_hcd 0000:00:02.0: roothub.portstatus [2] 0x00000100 PPS
ohci_hcd 0000:00:02.0: roothub.portstatus [3] 0x00000100 PPS
ohci_hcd 0000:00:02.0: supports USB remote wakeup
usb usb2: default language 0x0409
usb usb2: new device strings: Mfr=3, Product=2, SerialNumber=1
usb usb2: Product: nVidia Corporation CK8S USB Controller
usb usb2: Manufacturer: Linux 2.6.12.1 ohci_hcd
usb usb2: SerialNumber: 0000:00:02.0
usb usb2: hotplug
usb usb2: adding 2-0:1.0 (config #1, interface 0)
usb 2-0:1.0: hotplug
hub 2-0:1.0: usb_probe_interface
hub 2-0:1.0: usb_probe_interface - got id
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 4 ports detected
hub 2-0:1.0: standalone hub
hub 2-0:1.0: no power switching (usb 1.0)
hub 2-0:1.0: global over-current protection
hub 2-0:1.0: power on to power good time: 2ms
hub 2-0:1.0: local power source is good
hub 2-0:1.0: no over-current condition exists
ohci_hcd 0000:00:02.0: created debug files
ACPI: PCI Interrupt Link [APCG] enabled at IRQ 21
ACPI: PCI Interrupt 0000:00:02.1[B] -> Link [APCG] -> GSI 21 (level, high) 
-> IRQ 193
PCI: Setting latency timer of device 0000:00:02.1 to 64
ohci_hcd 0000:00:02.1: nVidia Corporation CK8S USB Controller (#2)
hub 2-0:1.0: state 5 ports 4 chg 0000 evt 0000
ohci_hcd 0000:00:02.1: new USB bus registered, assigned bus number 3
ohci_hcd 0000:00:02.1: irq 193, io mem 0xfe02e000
ohci_hcd 0000:00:02.1: resetting from state 'reset', control = 0x600
ohci_hcd 0000:00:02.1: OHCI controller state
ohci_hcd 0000:00:02.1: OHCI 1.0, NO legacy support registers
ohci_hcd 0000:00:02.1: control 0x683 RWE RWC HCFS=operational CBSR=3
ohci_hcd 0000:00:02.1: cmdstatus 0x00000 SOC=0
ohci_hcd 0000:00:02.1: intrstatus 0x00000004 SF
ohci_hcd 0000:00:02.1: intrenable 0x8000000a MIE RD WDH
ohci_hcd 0000:00:02.1: fminterval a7782edf
ohci_hcd 0000:00:02.1: hcca frame #0002
ohci_hcd 0000:00:02.1: roothub.a 01000204 POTPGT=1 NPS NDP=4
ohci_hcd 0000:00:02.1: roothub.b 00000000 PPCM=0000 DR=0000
ohci_hcd 0000:00:02.1: roothub.status 00008000 DRWE
ohci_hcd 0000:00:02.1: roothub.portstatus [0] 0x00000100 PPS
ohci_hcd 0000:00:02.1: roothub.portstatus [1] 0x00000100 PPS
ohci_hcd 0000:00:02.1: roothub.portstatus [2] 0x00000100 PPS
ohci_hcd 0000:00:02.1: roothub.portstatus [3] 0x00000100 PPS
ohci_hcd 0000:00:02.1: supports USB remote wakeup
usb usb3: default language 0x0409
usb usb3: new device strings: Mfr=3, Product=2, SerialNumber=1
usb usb3: Product: nVidia Corporation CK8S USB Controller (#2)
usb usb3: Manufacturer: Linux 2.6.12.1 ohci_hcd
usb usb3: SerialNumber: 0000:00:02.1
usb usb3: hotplug
usb usb3: adding 3-0:1.0 (config #1, interface 0)
usb 3-0:1.0: hotplug
hub 3-0:1.0: usb_probe_interface
hub 3-0:1.0: usb_probe_interface - got id
hub 3-0:1.0: USB hub found
hub 3-0:1.0: 4 ports detected
hub 3-0:1.0: standalone hub
hub 3-0:1.0: no power switching (usb 1.0)
hub 3-0:1.0: global over-current protection
hub 3-0:1.0: power on to power good time: 2ms
hub 3-0:1.0: local power source is good
hub 3-0:1.0: no over-current condition exists
ohci_hcd 0000:00:02.1: created debug files
hub 3-0:1.0: state 5 ports 4 chg 0000 evt 0000
ohci_hcd 0000:00:02.0: suspend root hub
ohci_hcd 0000:00:02.1: suspend root hub
ieee1394: Initialized config rom entry `ip1394'
ohci1394: $Rev: 1250 $ Ben Collins <bcollins@debian.org>
ACPI: PCI Interrupt Link [APC4] enabled at IRQ 19
ACPI: PCI Interrupt 0000:02:0c.0[A] -> Link [APC4] -> GSI 19 (level, low) -> 
IRQ 225
PCI: Via IRQ fixup for 0000:02:0c.0, from 5 to 1
ohci1394: fw-host0: OHCI-1394 1.0 (PCI): IRQ=[225]  MMIO=[fdfff000-fdfff7ff] 
  Max Packet=[2048]
ieee1394: Host added: ID:BUS[0-00:1023]  GUID[0010dc00007aa441]
ACPI: Power Button (FF) [PWRF]
ibm_acpi: ec object not found
md: Autodetecting RAID arrays.
md: autorun ...
md: ... autorun DONE.
device-mapper: 4.4.0-ioctl (2005-01-12) initialised: dm-devel@redhat.com
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 0
Buffer I/O error on device hdc, logical block 0
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 4
Buffer I/O error on device hdc, logical block 1
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 8
Buffer I/O error on device hdc, logical block 2
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 12
Buffer I/O error on device hdc, logical block 3
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 16
Buffer I/O error on device hdc, logical block 4
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 20
Buffer I/O error on device hdc, logical block 5
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 24
Buffer I/O error on device hdc, logical block 6
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 28
Buffer I/O error on device hdc, logical block 7
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 32
Buffer I/O error on device hdc, logical block 8
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 36
Buffer I/O error on device hdc, logical block 9
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 40
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 44
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 48
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 52
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 56
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 60
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 0
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 4
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 795776
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 0
cdrom: open failed.
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 0
cdrom: open failed.
EXT3-fs warning: maximal mount count reached, running e2fsck is recommended
EXT3 FS on sda1, internal journal
kjournald starting.  Commit interval 5 seconds
EXT3-fs warning: maximal mount count reached, running e2fsck is recommended
EXT3 FS on sda2, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
NTFS driver 2.1.22 [Flags: R/O MODULE].
NTFS volume version 3.1.
kjournald starting.  Commit interval 5 seconds
EXT3-fs warning: maximal mount count reached, running e2fsck is recommended
EXT3 FS on hda2, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
Linux Kernel Card Services
options:  [pci] [cardbus] [pm]
parport: PnPBIOS parport detected.
parport0: PC-style at 0x378, irq 7 [PCSPP,TRISTATE]
lp0: using parport0 (interrupt-driven).
lp0: console ready
NET: Registered protocol family 10
Disabled Privacy Extensions on device ffffffff80497340(lo)
IPv6 over IPv4 tunneling driver
eth0: no IPv6 routers present
hub 1-0:1.0: state 5 ports 8 chg 0000 evt 0010
ehci_hcd 0000:00:02.2: GetStatus port 4 status 001803 POWER sig=j  CSC 
CONNECT
hub 1-0:1.0: port 4, status 0501, change 0001, 480 Mb/s
hub 1-0:1.0: debounce: port 4: total 100ms stable 100ms status 0x501
ehci_hcd 0000:00:02.2: port 4 high speed
ehci_hcd 0000:00:02.2: GetStatus port 4 status 001005 POWER sig=se0  PE 
CONNECT
usb 1-4: new high speed USB device using ehci_hcd and address 2
ehci_hcd 0000:00:02.2: port 4 high speed
ehci_hcd 0000:00:02.2: GetStatus port 4 status 001005 POWER sig=se0  PE 
CONNECT
usb 1-4: default language 0x0409
usb 1-4: new device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-4: Product: JUMPDRIVE PRO
usb 1-4: Manufacturer: LEXAR MEDIA
usb 1-4: SerialNumber: 3563BF08114025291104
usb 1-4: hotplug
usb 1-4: adding 1-4:1.0 (config #1, interface 0)
usb 1-4:1.0: hotplug
Initializing USB Mass Storage driver...
usb-storage 1-4:1.0: usb_probe_interface
usb-storage 1-4:1.0: usb_probe_interface - got id
scsi4 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 2
usb-storage: waiting for device to settle before scanning
usbcore: registered new driver usb-storage
USB Mass Storage support registered.
Vendor: LEXAR     Model: JUMPDRIVE PRO     Rev: 1000
Type:   Direct-Access                      ANSI SCSI revision: 00
SCSI device sdc: 2030592 512-byte hdwr sectors (1040 MB)
sdc: Write Protect is off
sdc: Mode Sense: 43 00 00 00
sdc: assuming drive cache: write through
SCSI device sdc: 2030592 512-byte hdwr sectors (1040 MB)
sdc: Write Protect is off
sdc: Mode Sense: 43 00 00 00
sdc: assuming drive cache: write through
sdc: sdc1
Attached scsi removable disk sdc at scsi4, channel 0, id 0, lun 0
usb-storage: device scan complete
hub 1-0:1.0: state 5 ports 8 chg 0000 evt 0010
ehci_hcd 0000:00:02.2: GetStatus port 4 status 001002 POWER sig=se0  CSC
hub 1-0:1.0: port 4, status 0100, change 0001, 12 Mb/s
usb 1-4: USB disconnect, address 2
usb 1-4: usb_disable_device nuking all URBs
usb 1-4: unregistering interface 1-4:1.0
usb 1-4:1.0: hotplug
usb 1-4: unregistering device
usb 1-4: hotplug
hub 1-0:1.0: debounce: port 4: total 100ms stable 100ms status 0x100

dmesg with 3GB of RAM:
Bootdata ok (command line is ro root=LABEL=/1 rhgb 3)
Linux version 2.6.12.1 (root@localhost) (gcc version 4.0.0 20050519 (Red Hat 
4.0.0-8)) #14 SMP Tue Jul 5 00:33:42 CDT 2005
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009f000 (usable)
BIOS-e820: 000000000009f000 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 00000000bfff0000 (usable)
BIOS-e820: 00000000bfff0000 - 00000000bfff3000 (ACPI NVS)
BIOS-e820: 00000000bfff3000 - 00000000c0000000 (ACPI data)
BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved)
ACPI: RSDP (v000 Nvidia                                ) @ 
0x00000000000f8e80
ACPI: RSDT (v001 Nvidia AWRDACPI 0x42302e31 AWRD 0x00000000) @ 
0x00000000bfff3040
ACPI: FADT (v001 Nvidia AWRDACPI 0x42302e31 AWRD 0x00000000) @ 
0x00000000bfff30c0
ACPI: SSDT (v001 PTLTD  POWERNOW 0x00000001  LTP 0x00000001) @ 
0x00000000bfff7b80
ACPI: MADT (v001 Nvidia AWRDACPI 0x42302e31 AWRD 0x00000000) @ 
0x00000000bfff7ac0
ACPI: DSDT (v001 NVIDIA AWRDACPI 0x00001000 MSFT 0x0100000e) @ 
0x0000000000000000
Scanning NUMA topology in Northbridge 24
Number of nodes 1
Node 0 MemBase 0000000000000000 Limit 00000000bfff0000
Using node hash shift of 24
Bootmem setup node 0 0000000000000000-00000000bfff0000
On node 0 totalpages: 786416
DMA zone: 4096 pages, LIFO batch:1
Normal zone: 782320 pages, LIFO batch:31
HighMem zone: 0 pages, LIFO batch:1
Nvidia board detected. Ignoring ACPI timer override.
ACPI: Local APIC address 0xfee00000
ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
Processor #0 15:3 APIC version 16
ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)
Processor #1 15:3 APIC version 16
ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
IOAPIC[0]: apic_id 2, version 17, address 0xfec00000, GSI 0-23
ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
ACPI: BIOS IRQ0 pin2 override ignored.
ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
ACPI: INT_SRC_OVR (bus 0 bus_irq 14 global_irq 14 high edge)
ACPI: INT_SRC_OVR (bus 0 bus_irq 15 global_irq 15 high edge)
ACPI: IRQ9 used by override.
ACPI: IRQ14 used by override.
ACPI: IRQ15 used by override.
Setting APIC routing to flat
Using ACPI (MADT) for SMP configuration information
Allocating PCI resources starting at c0000000 (gap: c0000000:3ec00000)
Checking aperture...
CPU 0: aperture @ f0000000 size 128 MB
Built 1 zonelists
Kernel command line: ro root=LABEL=/1 rhgb 3
Initializing CPU#0
PID hash table entries: 4096 (order: 12, 131072 bytes)
time.c: Using 1.193182 MHz PIT timer.
time.c: Detected 2411.002 MHz processor.
Console: colour VGA+ 80x25
Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes)
Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes)
Memory: 3088372k/3145664k available (2382k kernel code, 0k reserved, 1584k 
data, 228k init)
Calibrating delay loop... 4767.74 BogoMIPS (lpj=2383872)
Security Framework v1.0.0 initialized
SELinux:  Initializing.
SELinux:  Starting in permissive mode
selinux_register_security:  Registering secondary module capability
Capability LSM initialized as secondary
Mount-cache hash table entries: 256
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 1024K (64 bytes/line)
CPU 0(2) -> Node 0 -> Core 0
Using local APIC timer interrupts.
Detected 12.557 MHz APIC timer.
Booting processor 1/1 rip 6000 rsp ffff810004171f58
Initializing CPU#1
Calibrating delay loop... 4816.89 BogoMIPS (lpj=2408448)
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 1024K (64 bytes/line)
CPU 1(2) -> Node 0 -> Core 1
AMD Athlon(tm) 64 X2 Dual Core Processor 4800+ stepping 02
CPU 1: Syncing TSC to CPU 0.
Brought up 2 CPUs
CPU 1: synchronized TSC with CPU 0 (last diff -75 cycles, maxerr 541 cycles)
time.c: Using PIT/TSC based timekeeping.
testing NMI watchdog ... OK.
CPU0 attaching sched-domain:
domain 0: span 00000001
groups: 00000001
domain 1: span 00000003
groups: 00000001 00000002
domain 2: span 00000003
  groups: 00000003
CPU1 attaching sched-domain:
domain 0: span 00000002
groups: 00000002
domain 1: span 00000003
groups: 00000002 00000001
domain 2: span 00000003
  groups: 00000003
checking if image is initramfs... it is
NET: Registered protocol family 16
PCI: Using configuration type 1
mtrr: v2.0 (20020519)
ACPI: Subsystem revision 20050309
ACPI: Interpreter enabled
ACPI: Using IOAPIC for interrupt routing
ACPI: PCI Root Bridge [PCI0] (0000:00)
PCI: Probing PCI hardware (bus 00)
Boot video device is 0000:01:00.0
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.HUB0._PRT]
ACPI: Power Resource [ISAV] (on)
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.AGPB._PRT]
ACPI: PCI Interrupt Link [LNK1] (IRQs 3 4 5 6 7 *10 11 12 14 15)
ACPI: PCI Interrupt Link [LNK2] (IRQs 3 4 *5 6 7 10 11 12 14 15)
ACPI: PCI Interrupt Link [LNK3] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, 
disabled.
ACPI: PCI Interrupt Link [LNK4] (IRQs 3 4 *5 6 7 10 11 12 14 15)
ACPI: PCI Interrupt Link [LNK5] (IRQs 3 4 *5 6 7 10 11 12 14 15)
ACPI: PCI Interrupt Link [LUBA] (IRQs 3 4 *5 6 7 10 11 12 14 15)
ACPI: PCI Interrupt Link [LUBB] (IRQs 3 4 5 6 7 *10 11 12 14 15)
ACPI: PCI Interrupt Link [LMAC] (IRQs 3 4 5 6 7 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LAPU] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, 
disabled.
ACPI: PCI Interrupt Link [LACI] (IRQs 3 4 5 6 7 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LMCI] (IRQs 3 4 5 6 7 *10 11 12 14 15)
ACPI: PCI Interrupt Link [LSMB] (IRQs 3 4 5 6 7 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LUB2] (IRQs 3 4 5 6 7 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LFIR] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, 
disabled.
ACPI: PCI Interrupt Link [L3CM] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, 
disabled.
ACPI: PCI Interrupt Link [LIDE] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, 
disabled.
ACPI: PCI Interrupt Link [LSID] (IRQs 3 4 5 6 7 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LFID] (IRQs 3 4 5 6 7 *10 11 12 14 15)
ACPI: PCI Interrupt Link [APC1] (IRQs 16) *0, disabled.
ACPI: PCI Interrupt Link [APC2] (IRQs 17) *0, disabled.
ACPI: PCI Interrupt Link [APC3] (IRQs 18) *0, disabled.
ACPI: PCI Interrupt Link [APC4] (IRQs 19) *0, disabled.
ACPI: PCI Interrupt Link [APC5] (IRQs *16), disabled.
ACPI: PCI Interrupt Link [APCF] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCG] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCH] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCI] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCJ] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCK] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCS] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCL] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCM] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [AP3C] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCZ] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APSI] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APSJ] (IRQs 20 21 22 23) *0, disabled.
Linux Plug and Play Support v0.97 (c) Adam Belay
pnp: PnP ACPI init
pnp: PnP ACPI: found 13 devices
usbcore: registered new driver usbfs
usbcore: registered new driver hub
PCI: Using ACPI for IRQ routing
PCI: If a device doesn't work, try "pci=routeirq".  If it helps, post a 
report
agpgart: Detected AGP bridge 0
agpgart: Setting up Nforce3 AGP.
agpgart: AGP aperture is 128M @ 0xf0000000
PCI-DMA: Disabling IOMMU.
pnp: 00:00: ioport range 0x4000-0x407f could not be reserved
pnp: 00:00: ioport range 0x4080-0x40ff has been reserved
pnp: 00:00: ioport range 0x4400-0x447f has been reserved
pnp: 00:00: ioport range 0x4480-0x44ff could not be reserved
pnp: 00:00: ioport range 0x4800-0x487f has been reserved
pnp: 00:00: ioport range 0x4880-0x48ff has been reserved
IA32 emulation $Id: sys_ia32.c,v 1.32 2002/03/24 13:02:28 ak Exp $
audit: initializing netlink socket (disabled)
audit(1120523834.311:0): initialized
Total HugeTLB memory allocated, 0
VFS: Disk quotas dquot_6.5.1
Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
SELinux:  Registering netfilter hooks
Initializing Cryptographic API
pci_hotplug: PCI Hot Plug PCI Core version: 0.5
Real Time Clock Driver v1.12
Linux agpgart interface v0.101 (c) Dave Jones
PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12
serio: i8042 AUX port at 0x60,0x64 irq 12
serio: i8042 KBD port at 0x60,0x64 irq 1
Serial: 8250/16550 driver $Revision: 1.90 $ 76 ports, IRQ sharing enabled
ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered
RAMDISK driver initialized: 16 RAM disks of 16384K size 1024 blocksize
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
NFORCE3-250: IDE controller at PCI slot 0000:00:08.0
NFORCE3-250: chipset revision 162
NFORCE3-250: not 100% native mode: will probe irqs later
NFORCE3-250: BIOS didn't set cable bits correctly. Enabling workaround.
NFORCE3-250: BIOS didn't set cable bits correctly. Enabling workaround.
NFORCE3-250: 0000:00:08.0 (rev a2) UDMA133 controller
  ide0: BM-DMA at 0xdc00-0xdc07, BIOS settings: hda:DMA, hdb:DMA
  ide1: BM-DMA at 0xdc08-0xdc0f, BIOS settings: hdc:DMA, hdd:DMA
Probing IDE interface ide0...
hda: Maxtor 6Y250P0, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
Probing IDE interface ide1...
hdc: PLEXTOR DVDR PX-716A, ATAPI CD/DVD-ROM drive
hdd: TOSHIBA DVD-ROM SD-M1212, ATAPI CD/DVD-ROM drive
ide1 at 0x170-0x177,0x376 on irq 15
Probing IDE interface ide2...
Probing IDE interface ide3...
Probing IDE interface ide4...
Probing IDE interface ide5...
hda: max request size: 1024KiB
hda: 490234752 sectors (251000 MB) w/7936KiB Cache, CHS=30515/255/63, 
UDMA(133)
hda: cache flushes supported
hda: hda1 hda2
hdc: ATAPI 40X DVD-ROM DVD-R CD-R/RW drive, 8192kB Cache
Uniform CD-ROM driver Revision: 3.20
hdd: ATAPI 32X DVD-ROM drive, 256kB Cache, UDMA(33)
ide-floppy driver 0.99.newide
usbcore: registered new driver hiddev
usbcore: registered new driver usbhid
drivers/usb/input/hid-core.c: v2.01:USB HID core driver
mice: PS/2 mouse device common for all mice
md: md driver 0.90.1 MAX_MD_DEVS=256, MD_SB_DISKS=27
NET: Registered protocol family 2
IP: routing cache hash table of 16384 buckets, 256Kbytes
TCP established hash table entries: 262144 (order: 10, 4194304 bytes)
TCP bind hash table entries: 65536 (order: 8, 1048576 bytes)
TCP: Hash tables configured (established 262144 bind 65536)
Initializing IPsec netlink socket
NET: Registered protocol family 1
NET: Registered protocol family 17
powernow-k8: Found 2 AMD Athlon 64 / Opteron processors (version 1.40.2)
powernow-k8:    0 : fid 0x10 (2400 MHz), vid 0xa (1300 mV)
powernow-k8:    1 : fid 0xe (2200 MHz), vid 0xa (1300 mV)
powernow-k8:    2 : fid 0xc (2000 MHz), vid 0xc (1250 mV)
powernow-k8:    3 : fid 0xa (1800 MHz), vid 0xe (1200 mV)
powernow-k8:    4 : fid 0x2 (1000 MHz), vid 0x12 (1100 mV)
cpu_init done, current fid 0x10, vid 0xa
ACPI wakeup devices:
HUB0 HUB1 USB0 USB1 USB2 F139 MMAC MMCI UAR1
ACPI: (supports S0 S1 S4 S5)
Freeing unused kernel memory: 228k freed
input: AT Translated Set 2 keyboard on isa0060/serio0
SCSI subsystem initialized
libata version 1.11 loaded.
sata_nv version 0.6
ACPI: PCI Interrupt Link [APSI] enabled at IRQ 23
ACPI: PCI Interrupt 0000:00:09.0[A] -> Link [APSI] -> GSI 23 (level, high) 
-> IRQ 177
PCI: Setting latency timer of device 0000:00:09.0 to 64
ata1: SATA max UDMA/133 cmd 0x9E0 ctl 0xBE2 bmdma 0xC800 irq 177
ata2: SATA max UDMA/133 cmd 0x960 ctl 0xB62 bmdma 0xC808 irq 177
ata1: no device found (phy stat 00000000)
scsi0 : sata_nv
input: PS2++ Logitech Wheel Mouse on isa0060/serio1
ata2: dev 0 cfg 49:2f00 82:346b 83:7f01 84:4003 85:3469 86:3c01 87:4003 
88:203f
ata2: dev 0 ATA, max UDMA/100, 625142448 sectors: lba48
nv_sata: Primary device removed
nv_sata: Secondary device added
nv_sata: Secondary device removed
ata2: dev 0 configured for UDMA/100
scsi1 : sata_nv
Vendor: ATA       Model: WDC WD3200SD-01K  Rev: 08.0
Type:   Direct-Access                      ANSI SCSI revision: 05
SCSI device sda: 625142448 512-byte hdwr sectors (320073 MB)
SCSI device sda: drive cache: write back
SCSI device sda: 625142448 512-byte hdwr sectors (320073 MB)
SCSI device sda: drive cache: write back
sda: sda1 sda2 sda3
Attached scsi disk sda at scsi1, channel 0, id 0, lun 0
ACPI: PCI Interrupt Link [APSJ] enabled at IRQ 22
ACPI: PCI Interrupt 0000:00:0a.0[A] -> Link [APSJ] -> GSI 22 (level, high) 
-> IRQ 185
PCI: Setting latency timer of device 0000:00:0a.0 to 64
ata3: SATA max UDMA/133 cmd 0x9F0 ctl 0xBF2 bmdma 0xB000 irq 185
ata4: SATA max UDMA/133 cmd 0x970 ctl 0xB72 bmdma 0xB008 irq 185
ata3: dev 0 cfg 49:0e00 82:0000 83:0000 84:0000 85:0000 86:0000 87:0000 
88:0000
ata3: no dma/lba
ata3: dev 0 not supported, ignoring
scsi2 : sata_nv
ata4: dev 0 cfg 49:2f00 82:74eb 83:7f63 84:4003 85:74e9 86:3c43 87:4003 
88:407f
ata4: dev 0 ATA, max UDMA/133, 145226112 sectors: lba48
nv_sata: Primary device added
nv_sata: Primary device removed
nv_sata: Secondary device added
nv_sata: Secondary device removed
ata4: dev 0 configured for UDMA/133
scsi3 : sata_nv
Vendor: ATA       Model: WDC WD740GD-00FL  Rev: 31.0
Type:   Direct-Access                      ANSI SCSI revision: 05
SCSI device sdb: 145226112 512-byte hdwr sectors (74356 MB)
SCSI device sdb: drive cache: write back
SCSI device sdb: 145226112 512-byte hdwr sectors (74356 MB)
SCSI device sdb: drive cache: write back
sdb: sdb1
Attached scsi disk sdb at scsi3, channel 0, id 0, lun 0
kjournald starting.  Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
SELinux:  Disabled at runtime.
SELinux:  Unregistering netfilter hooks
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
forcedeth.c: Reverse Engineered nForce ethernet driver. Version 0.32.
ACPI: PCI Interrupt Link [APCH] enabled at IRQ 21
ACPI: PCI Interrupt 0000:00:05.0[A] -> Link [APCH] -> GSI 21 (level, high) 
-> IRQ 193
PCI: Setting latency timer of device 0000:00:05.0 to 64
0000:00:05.0: Invalid Mac address detected: 8d:f0:00:e7:39:00
Please complain to your hardware vendor. Switching to a random MAC.
eth0: forcedeth.c: subsystem: 01462:0250 bound to 0000:00:05.0
r8169 Gigabit Ethernet driver 2.2LK loaded
ACPI: PCI Interrupt Link [APC5] enabled at IRQ 16
ACPI: PCI Interrupt 0000:02:0d.0[A] -> Link [APC5] -> GSI 16 (level, low) -> 
IRQ 201
r8169: NAPI enabled
eth1: Identified chip type is 'RTL8169s/8110s'.
eth1: RTL8169 at 0xffffc20000006000, 00:11:09:8f:4f:a4, IRQ 201
ACPI: PCI Interrupt Link [APCJ] enabled at IRQ 20
ACPI: PCI Interrupt 0000:00:06.0[A] -> Link [APCJ] -> GSI 20 (level, high) 
-> IRQ 209
PCI: Setting latency timer of device 0000:00:06.0 to 64
intel8x0_measure_ac97_clock: measured 49638 usecs
intel8x0: clocking to 46872
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: shpc_init : shpc_cap_offset == 0
shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
i2c_adapter i2c-0: nForce2 SMBus adapter at 0x4c00
i2c_adapter i2c-1: nForce2 SMBus adapter at 0x4c40
Linux video capture interface: v1.00
bttv: driver version 0.9.15 loaded
bttv: using 8 buffers with 2080k (520 pages) each for capture
bttv: Bt8xx card found (0).
ACPI: PCI Interrupt Link [APC2] enabled at IRQ 17
ACPI: PCI Interrupt 0000:02:0a.0[A] -> Link [APC2] -> GSI 17 (level, low) -> 
IRQ 217
bttv0: Bt878 (rev 2) at 0000:02:0a.0, irq: 217, latency: 32, mmio: 
0xfdeff000
bttv0: detected: ATI TV Wonder [card=63], PCI subsystem ID is 1002:0001
bttv0: using: ATI TV-Wonder [card=63,autodetected]
bttv0: gpio: en=00000000, out=00000000 in=00ffffff [init]
bttv0: using tuner=19
bttv0: i2c: checking for MSP34xx @ 0x80... found
msp34xx: init: chip=MSP3430G-A4 +nicam +simple +simpler +radio mode=simpler
msp34xxg: daemon started
bttv0: i2c: checking for TDA9875 @ 0xb0... not found
bttv0: i2c: checking for TDA7432 @ 0x8a... not found
bttv0: i2c: checking for TDA9887 @ 0x86... not found
tuner 2-0060: chip found @ 0xc0 (bt878 #0 [sw])
tuner 2-0060: type set to 19 (Temic PAL* auto (4006 FN5))
bttv0: registered device video0
bttv0: registered device vbi0
bttv0: PLL: 28636363 => 35468950 .. ok
bt878: AUDIO driver version 0.0.0 loaded
bt878: Bt878 AUDIO function found (0).
ACPI: PCI Interrupt 0000:02:0a.1[A] -> Link [APC2] -> GSI 17 (level, low) -> 
IRQ 217
bt878(0): Bt878 (rev 2) at 02:0a.1, irq: 217, latency: 32, memory: 
0xfdefe000
ehci_hcd: block sizes: qh 160 qtd 96 itd 192 sitd 96
ACPI: PCI Interrupt Link [APCL] enabled at IRQ 23
ACPI: PCI Interrupt 0000:00:02.2[C] -> Link [APCL] -> GSI 23 (level, high) 
-> IRQ 177
PCI: Setting latency timer of device 0000:00:02.2 to 64
ehci_hcd 0000:00:02.2: nVidia Corporation nForce3 EHCI USB 2.0 Controller
ehci_hcd 0000:00:02.2: reset hcs_params 0x102488 dbg=1 cc=2 pcc=4 !ppc 
ports=8
ehci_hcd 0000:00:02.2: reset portroute 0 0 1 1 1 0 1 0
ehci_hcd 0000:00:02.2: reset hcc_params a082 caching frame 256/512/1024
ehci_hcd 0000:00:02.2: debug port 1
ehci_hcd 0000:00:02.2: capability 0001 at a0
ehci_hcd 0000:00:02.2: new USB bus registered, assigned bus number 1
ehci_hcd 0000:00:02.2: irq 177, io mem 0xfe02d000
ehci_hcd 0000:00:02.2: reset command 080002 (park)=0 ithresh=8 period=1024 
Reset HALT
PCI: cache line size of 64 is not supported by device 0000:00:02.2
ehci_hcd 0000:00:02.2: init command 010009 (park)=0 ithresh=1 period=256 RUN
ehci_hcd 0000:00:02.2: USB 2.0 initialized, EHCI 1.00, driver 10 Dec 2004
ehci_hcd 0000:00:02.2: supports USB remote wakeup
usb usb1: default language 0x0409
usb usb1: new device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: nVidia Corporation nForce3 EHCI USB 2.0 Controller
usb usb1: Manufacturer: Linux 2.6.12.1 ehci_hcd
usb usb1: SerialNumber: 0000:00:02.2
usb usb1: hotplug
usb usb1: adding 1-0:1.0 (config #1, interface 0)
usb 1-0:1.0: hotplug
hub 1-0:1.0: usb_probe_interface
hub 1-0:1.0: usb_probe_interface - got id
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 8 ports detected
hub 1-0:1.0: standalone hub
hub 1-0:1.0: no power switching (usb 1.0)
hub 1-0:1.0: individual port over-current protection
hub 1-0:1.0: Single TT
hub 1-0:1.0: TT requires at most 8 FS bit times
hub 1-0:1.0: power on to power good time: 20ms
hub 1-0:1.0: local power source is good
hub 1-0:1.0: state 5 ports 8 chg 0000 evt 0000
ohci_hcd: 2004 Nov 08 USB 1.1 'Open' Host Controller (OHCI) Driver (PCI)
ohci_hcd: block sizes: ed 80 td 96
ACPI: PCI Interrupt Link [APCF] enabled at IRQ 22
ACPI: PCI Interrupt 0000:00:02.0[A] -> Link [APCF] -> GSI 22 (level, high) 
-> IRQ 185
PCI: Setting latency timer of device 0000:00:02.0 to 64
ohci_hcd 0000:00:02.0: nVidia Corporation CK8S USB Controller
ohci_hcd 0000:00:02.0: new USB bus registered, assigned bus number 2
ohci_hcd 0000:00:02.0: irq 185, io mem 0xfe02f000
ohci_hcd 0000:00:02.0: resetting from state 'reset', control = 0x600
ohci_hcd 0000:00:02.0: OHCI controller state
ohci_hcd 0000:00:02.0: OHCI 1.0, NO legacy support registers
ohci_hcd 0000:00:02.0: control 0x683 RWE RWC HCFS=operational CBSR=3
ohci_hcd 0000:00:02.0: cmdstatus 0x00000 SOC=0
ohci_hcd 0000:00:02.0: intrstatus 0x00000004 SF
ohci_hcd 0000:00:02.0: intrenable 0x8000000a MIE RD WDH
ohci_hcd 0000:00:02.0: fminterval a7782edf
ohci_hcd 0000:00:02.0: hcca frame #0002
ohci_hcd 0000:00:02.0: roothub.a 01000204 POTPGT=1 NPS NDP=4
ohci_hcd 0000:00:02.0: roothub.b 00000000 PPCM=0000 DR=0000
ohci_hcd 0000:00:02.0: roothub.status 00008000 DRWE
ohci_hcd 0000:00:02.0: roothub.portstatus [0] 0x00000100 PPS
ohci_hcd 0000:00:02.0: roothub.portstatus [1] 0x00000100 PPS
ohci_hcd 0000:00:02.0: roothub.portstatus [2] 0x00000100 PPS
ohci_hcd 0000:00:02.0: roothub.portstatus [3] 0x00000100 PPS
ohci_hcd 0000:00:02.0: supports USB remote wakeup
usb usb2: default language 0x0409
usb usb2: new device strings: Mfr=3, Product=2, SerialNumber=1
usb usb2: Product: nVidia Corporation CK8S USB Controller
usb usb2: Manufacturer: Linux 2.6.12.1 ohci_hcd
usb usb2: SerialNumber: 0000:00:02.0
usb usb2: hotplug
usb usb2: adding 2-0:1.0 (config #1, interface 0)
usb 2-0:1.0: hotplug
hub 2-0:1.0: usb_probe_interface
hub 2-0:1.0: usb_probe_interface - got id
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 4 ports detected
hub 2-0:1.0: standalone hub
hub 2-0:1.0: no power switching (usb 1.0)
hub 2-0:1.0: global over-current protection
hub 2-0:1.0: power on to power good time: 2ms
hub 2-0:1.0: local power source is good
hub 2-0:1.0: no over-current condition exists
ohci_hcd 0000:00:02.0: created debug files
ACPI: PCI Interrupt Link [APCG] enabled at IRQ 21
ACPI: PCI Interrupt 0000:00:02.1[B] -> Link [APCG] -> GSI 21 (level, high) 
-> IRQ 193
PCI: Setting latency timer of device 0000:00:02.1 to 64
ohci_hcd 0000:00:02.1: nVidia Corporation CK8S USB Controller (#2)
hub 2-0:1.0: state 5 ports 4 chg 0000 evt 0000
ohci_hcd 0000:00:02.1: new USB bus registered, assigned bus number 3
ohci_hcd 0000:00:02.1: irq 193, io mem 0xfe02e000
ohci_hcd 0000:00:02.1: resetting from state 'reset', control = 0x600
ohci_hcd 0000:00:02.1: OHCI controller state
ohci_hcd 0000:00:02.1: OHCI 1.0, NO legacy support registers
ohci_hcd 0000:00:02.1: control 0x683 RWE RWC HCFS=operational CBSR=3
ohci_hcd 0000:00:02.1: cmdstatus 0x00000 SOC=0
ohci_hcd 0000:00:02.1: intrstatus 0x00000004 SF
ohci_hcd 0000:00:02.1: intrenable 0x8000000a MIE RD WDH
ohci_hcd 0000:00:02.1: fminterval a7782edf
ohci_hcd 0000:00:02.1: hcca frame #0002
ohci_hcd 0000:00:02.1: roothub.a 01000204 POTPGT=1 NPS NDP=4
ohci_hcd 0000:00:02.1: roothub.b 00000000 PPCM=0000 DR=0000
ohci_hcd 0000:00:02.1: roothub.status 00008000 DRWE
ohci_hcd 0000:00:02.1: roothub.portstatus [0] 0x00000100 PPS
ohci_hcd 0000:00:02.1: roothub.portstatus [1] 0x00000100 PPS
ohci_hcd 0000:00:02.1: roothub.portstatus [2] 0x00000100 PPS
ohci_hcd 0000:00:02.1: roothub.portstatus [3] 0x00000100 PPS
ohci_hcd 0000:00:02.1: supports USB remote wakeup
usb usb3: default language 0x0409
usb usb3: new device strings: Mfr=3, Product=2, SerialNumber=1
usb usb3: Product: nVidia Corporation CK8S USB Controller (#2)
usb usb3: Manufacturer: Linux 2.6.12.1 ohci_hcd
usb usb3: SerialNumber: 0000:00:02.1
usb usb3: hotplug
usb usb3: adding 3-0:1.0 (config #1, interface 0)
usb 3-0:1.0: hotplug
hub 3-0:1.0: usb_probe_interface
hub 3-0:1.0: usb_probe_interface - got id
hub 3-0:1.0: USB hub found
hub 3-0:1.0: 4 ports detected
hub 3-0:1.0: standalone hub
hub 3-0:1.0: no power switching (usb 1.0)
hub 3-0:1.0: global over-current protection
hub 3-0:1.0: power on to power good time: 2ms
hub 3-0:1.0: local power source is good
hub 3-0:1.0: no over-current condition exists
ohci_hcd 0000:00:02.1: created debug files
hub 3-0:1.0: state 5 ports 4 chg 0000 evt 0000
ohci_hcd 0000:00:02.0: suspend root hub
ohci_hcd 0000:00:02.1: suspend root hub
ieee1394: Initialized config rom entry `ip1394'
ohci1394: $Rev: 1250 $ Ben Collins <bcollins@debian.org>
ACPI: PCI Interrupt Link [APC4] enabled at IRQ 19
ACPI: PCI Interrupt 0000:02:0c.0[A] -> Link [APC4] -> GSI 19 (level, low) -> 
IRQ 225
PCI: Via IRQ fixup for 0000:02:0c.0, from 5 to 1
ohci1394: fw-host0: OHCI-1394 1.0 (PCI): IRQ=[225]  MMIO=[fdfff000-fdfff7ff] 
  Max Packet=[2048]
ieee1394: Host added: ID:BUS[0-00:1023]  GUID[0010dc00007aa441]
ACPI: Power Button (FF) [PWRF]
ibm_acpi: ec object not found
md: Autodetecting RAID arrays.
md: autorun ...
md: ... autorun DONE.
device-mapper: 4.4.0-ioctl (2005-01-12) initialised: dm-devel@redhat.com
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 0
Buffer I/O error on device hdc, logical block 0
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 4
Buffer I/O error on device hdc, logical block 1
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 8
Buffer I/O error on device hdc, logical block 2
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 12
Buffer I/O error on device hdc, logical block 3
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 16
Buffer I/O error on device hdc, logical block 4
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 20
Buffer I/O error on device hdc, logical block 5
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 24
Buffer I/O error on device hdc, logical block 6
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 28
Buffer I/O error on device hdc, logical block 7
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 32
Buffer I/O error on device hdc, logical block 8
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 36
Buffer I/O error on device hdc, logical block 9
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 40
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 44
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 48
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 52
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 56
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 60
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 0
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 4
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 795776
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 0
cdrom: open failed.
hdc: command error: status=0x51 { DriveReady SeekComplete Error }
hdc: command error: error=0x54 { AbortedCommand LastFailedSense=0x05 }
ide: failed opcode was: unknown
end_request: I/O error, dev hdc, sector 0
cdrom: open failed.
EXT3-fs warning: maximal mount count reached, running e2fsck is recommended
EXT3 FS on sda1, internal journal
kjournald starting.  Commit interval 5 seconds
EXT3-fs warning: maximal mount count reached, running e2fsck is recommended
EXT3 FS on sda2, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
NTFS driver 2.1.22 [Flags: R/O MODULE].
NTFS volume version 3.1.
kjournald starting.  Commit interval 5 seconds
EXT3-fs warning: maximal mount count reached, running e2fsck is recommended
EXT3 FS on hda2, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
Linux Kernel Card Services
options:  [pci] [cardbus] [pm]
parport: PnPBIOS parport detected.
parport0: PC-style at 0x378, irq 7 [PCSPP,TRISTATE]
lp0: using parport0 (interrupt-driven).
lp0: console ready
NET: Registered protocol family 10
Disabled Privacy Extensions on device ffffffff80497340(lo)
IPv6 over IPv4 tunneling driver
eth0: no IPv6 routers present
hub 1-0:1.0: state 5 ports 8 chg 0000 evt 0010
ehci_hcd 0000:00:02.2: GetStatus port 4 status 001803 POWER sig=j  CSC 
CONNECT
hub 1-0:1.0: port 4, status 0501, change 0001, 480 Mb/s
hub 1-0:1.0: debounce: port 4: total 100ms stable 100ms status 0x501
ehci_hcd 0000:00:02.2: port 4 high speed
ehci_hcd 0000:00:02.2: GetStatus port 4 status 001005 POWER sig=se0  PE 
CONNECT
usb 1-4: new high speed USB device using ehci_hcd and address 2
usb 1-4: khubd timed out on ep0in len=0/64
usb 1-4: khubd timed out on ep0in len=0/64
usb 1-4: khubd timed out on ep0in len=0/64
ehci_hcd 0000:00:02.2: port 4 high speed
ehci_hcd 0000:00:02.2: GetStatus port 4 status 001005 POWER sig=se0  PE 
CONNECT
usb 1-4: device descriptor read/64, error -110
usb 1-4: khubd timed out on ep0in len=0/64
usb 1-4: khubd timed out on ep0in len=0/64
usb 1-4: khubd timed out on ep0in len=0/64
ehci_hcd 0000:00:02.2: port 4 high speed
ehci_hcd 0000:00:02.2: GetStatus port 4 status 001005 POWER sig=se0  PE 
CONNECT
usb 1-4: device descriptor read/64, error -110
ehci_hcd 0000:00:02.2: port 4 high speed
ehci_hcd 0000:00:02.2: GetStatus port 4 status 001005 POWER sig=se0  PE 
CONNECT
usb 1-4: new high speed USB device using ehci_hcd and address 3
usb 1-4: khubd timed out on ep0in len=0/64
usb 1-4: khubd timed out on ep0in len=0/64
usb 1-4: khubd timed out on ep0in len=0/64
ehci_hcd 0000:00:02.2: port 4 high speed
ehci_hcd 0000:00:02.2: GetStatus port 4 status 001005 POWER sig=se0  PE 
CONNECT
usb 1-4: device descriptor read/64, error -110
usb 1-4: khubd timed out on ep0in len=0/64
usb 1-4: khubd timed out on ep0in len=0/64
usb 1-4: khubd timed out on ep0in len=0/64
ehci_hcd 0000:00:02.2: port 4 high speed
ehci_hcd 0000:00:02.2: GetStatus port 4 status 001005 POWER sig=se0  PE 
CONNECT
usb 1-4: device descriptor read/64, error -110
ehci_hcd 0000:00:02.2: port 4 high speed
ehci_hcd 0000:00:02.2: GetStatus port 4 status 001005 POWER sig=se0  PE 
CONNECT
usb 1-4: new high speed USB device using ehci_hcd and address 4
usb 1-4: khubd timed out on ep0out len=0/0
usb 1-4: khubd timed out on ep0out len=0/0
usb 1-4: device not accepting address 4, error -110
ehci_hcd 0000:00:02.2: port 4 high speed
ehci_hcd 0000:00:02.2: GetStatus port 4 status 001005 POWER sig=se0  PE 
CONNECT
usb 1-4: new high speed USB device using ehci_hcd and address 5
usb 1-4: khubd timed out on ep0out len=0/0
usb 1-4: khubd timed out on ep0out len=0/0
usb 1-4: device not accepting address 5, error -110
hub 1-0:1.0: state 5 ports 8 chg 0000 evt 0010



^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-08 18:38                                         ` Alistair John Strachan
  2005-07-08 19:12                                           ` USB storage does not work with 3GB of RAM, but does with 2G of RAM Jon Schindler
@ 2005-07-08 19:25                                           ` Ingo Molnar
  2005-07-08 19:31                                           ` Ingo Molnar
  2005-07-08 19:48                                           ` Ingo Molnar
  3 siblings, 0 replies; 101+ messages in thread
From: Ingo Molnar @ 2005-07-08 19:25 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:

> > | new stack-footprint maximum: smartd/1747, 1768 bytes.

> Unfortunately I see nothing like this when the machine crashes. Find 
> attached my config, which has CONFIG_4KSTACKS and the options you 
> specified. Are you sure this is sufficient to enable it?

do you have any such messages in the syslog? You should be getting a 
bunch of them during bootup.

> Here is an extremely bad digital camera pic from the crash. My 
> debugging prowess has evolved to the stage where by I'm using a 
> maximum res vesafb console.
> 
> However, I'm not at work so it's my own digital camera that I'm using 
> rather than work's, and it seems to react badly to the LCD. I hope you 
> can read the numbers, if not I'll try to transliterate them for you.
> 
> http://devzero.co.uk/~alistair/oops5.jpeg

yeah, i could decypher it - it's a rare type of crash which too signals 
some sort of stack trouble. But it's not necessarily a stack overflow - 
e.g. the process name that is printed (openvpn) is correct, which means 
the kernel could find the right thread_info (which lies on the bottom of 
the stack). So it could be some other type of stack corruption. To debug 
this even more, there's this line in kernel/latency.c:

//#define DEBUG_STACK_POISON

could you enable it by uncommenting the line? Does that make the crash 
any more informative? (Note that runtime stack poisoning is extremely 
expensive (we clear 128 bytes of stack for every function call), so if 
it doesnt have any impact then turn it off. That's the reason why i'm 
not offering the option even over a .config flag.)

	Ingo

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-08 18:38                                         ` Alistair John Strachan
  2005-07-08 19:12                                           ` USB storage does not work with 3GB of RAM, but does with 2G of RAM Jon Schindler
  2005-07-08 19:25                                           ` Realtime Preemption, 2.6.12, Beginners Guide? Ingo Molnar
@ 2005-07-08 19:31                                           ` Ingo Molnar
  2005-07-08 19:34                                             ` Ingo Molnar
  2005-07-08 19:48                                           ` Ingo Molnar
  3 siblings, 1 reply; 101+ messages in thread
From: Ingo Molnar @ 2005-07-08 19:31 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:

> Unfortunately I see nothing like this when the machine crashes. Find 
> attached my config, which has CONFIG_4KSTACKS and the options you 
> specified. Are you sure this is sufficient to enable it?

another thing - if you disable 4K stacks, which doesnt crash, and do the 
workload that crashes 4K stacks, do you get any stack-footprint maximum 
printouts from openvpn (or related) contexts?

	Ingo

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-08 19:31                                           ` Ingo Molnar
@ 2005-07-08 19:34                                             ` Ingo Molnar
  0 siblings, 0 replies; 101+ messages in thread
From: Ingo Molnar @ 2005-07-08 19:34 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Ingo Molnar <mingo@elte.hu> wrote:

> * Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:
> 
> > Unfortunately I see nothing like this when the machine crashes. Find 
> > attached my config, which has CONFIG_4KSTACKS and the options you 
> > specified. Are you sure this is sufficient to enable it?
> 
> another thing - if you disable 4K stacks, which doesnt crash, and do 
> the workload that crashes 4K stacks, do you get any stack-footprint 
> maximum printouts from openvpn (or related) contexts?

and yet another guess: if this is related to interrupts then disabling 
UP_IOAPIC could change the characteristics of the crash.

	Ingo

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-08 18:38                                         ` Alistair John Strachan
                                                             ` (2 preceding siblings ...)
  2005-07-08 19:31                                           ` Ingo Molnar
@ 2005-07-08 19:48                                           ` Ingo Molnar
  2005-07-08 19:55                                             ` Alistair John Strachan
  2005-07-08 20:45                                             ` Alistair John Strachan
  3 siblings, 2 replies; 101+ messages in thread
From: Ingo Molnar @ 2005-07-08 19:48 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:

> Unfortunately I see nothing like this when the machine crashes. Find 
> attached my config, which has CONFIG_4KSTACKS and the options you 
> specified. Are you sure this is sufficient to enable it?

i have booted your .config, and stack overflow debugging is active and 
working. So it probably wasnt a straight (detectable) stack recursion / 
stack footprint issue.

	Ingo

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-08 19:48                                           ` Ingo Molnar
@ 2005-07-08 19:55                                             ` Alistair John Strachan
  2005-07-08 20:45                                             ` Alistair John Strachan
  1 sibling, 0 replies; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-08 19:55 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

On Friday 08 Jul 2005 20:48, Ingo Molnar wrote:
> * Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:
> > Unfortunately I see nothing like this when the machine crashes. Find
> > attached my config, which has CONFIG_4KSTACKS and the options you
> > specified. Are you sure this is sufficient to enable it?
>
> i have booted your .config, and stack overflow debugging is active and
> working. So it probably wasnt a straight (detectable) stack recursion /
> stack footprint issue.
>

Ingo,

Your first guess was accurate, I hadn't realised these messages were a lower 
log level than BUG: or the oops, so I wasn't watching them. Disabling quiet 
now, I'll try to address all your queries in a timely fashion.

We're getting closer anyway, I feel.

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-08 19:48                                           ` Ingo Molnar
  2005-07-08 19:55                                             ` Alistair John Strachan
@ 2005-07-08 20:45                                             ` Alistair John Strachan
  2005-07-09 11:58                                               ` Ingo Molnar
  2005-07-09 12:41                                               ` Ingo Molnar
  1 sibling, 2 replies; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-08 20:45 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

On Friday 08 Jul 2005 20:48, Ingo Molnar wrote:
> * Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:
> > Unfortunately I see nothing like this when the machine crashes. Find
> > attached my config, which has CONFIG_4KSTACKS and the options you
> > specified. Are you sure this is sufficient to enable it?
>
> i have booted your .config, and stack overflow debugging is active and
> working. So it probably wasnt a straight (detectable) stack recursion /
> stack footprint issue.
>

Okay, I disabled IO-APIC and Local APIC, recompiled with (an otherwise 
identical) config.

Got this (slightly better) oops. Figured out how to use my camera :-)

http://devzero.co.uk/~alistair/oops6.jpeg

Onto your stack-footprint metric. I don't know what the number means, but at a 
guess it's the size of the stack. Unfortunately, if this is the case, it's 
unlikely to be an overflow causing the crash. Here's a grep of dmesg just 
before the crash.

[root] 21:39 [~] dmesg | grep new\ stack
| new stack-footprint maximum: swapper/1, 1760 bytes.
| new stack-footprint maximum: mount/471, 1716 bytes.
| new stack-footprint maximum: cupsd/2623, 1564 bytes.
| new stack-footprint maximum: kdm_greet/2845, 1528 bytes.
| new stack-footprint maximum: krootimage/2846, 1204 bytes.
| new stack-footprint maximum: konqueror/2938, 836 bytes.

The complete traces are a bit long to include here, but I've uploaded the 
entire dmesg:

http://devzero.co.uk/~alistair/dmesg.gz

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-08 20:45                                             ` Alistair John Strachan
@ 2005-07-09 11:58                                               ` Ingo Molnar
  2005-07-09 14:07                                                 ` Alistair John Strachan
  2005-07-09 12:41                                               ` Ingo Molnar
  1 sibling, 1 reply; 101+ messages in thread
From: Ingo Molnar @ 2005-07-09 11:58 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:

> Got this (slightly better) oops. Figured out how to use my camera :-)
> 
> http://devzero.co.uk/~alistair/oops6.jpeg

this was a bit more useful - shows a softirq wakeup. Could you send me 
your vmlinux (bzip -9 compressed, via private mail), your gcc generates 
a slightly different code layout so i couldnt match up everything that 
might be useful.

> Onto your stack-footprint metric. I don't know what the number means, 
> but at a guess it's the size of the stack. Unfortunately, if this is 
> the case, it's unlikely to be an overflow causing the crash. Here's a 
> grep of dmesg just before the crash.

it could still be near an overflow. To make sure i've changed the oops 
printout to also include the current stack left, and the worst-case 
stack-left value, and have uploaded the -51-18 kernel - could you try 
it? That way we can tell for sure. (note that the maximum-tracker can 
not always do an immediate printout of a worst-case - we have to skip 
printouts if irqs are disabled. [or we could recurse from within the 
scheduler or the printk code] Even in those cases we save the worst-case 
stack and print it out as soon as interrupts are enabled again. (The 
worst-case stack-left value printed out at oops time is immediate.)

	Ingo

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-08 20:45                                             ` Alistair John Strachan
  2005-07-09 11:58                                               ` Ingo Molnar
@ 2005-07-09 12:41                                               ` Ingo Molnar
  2005-07-09 12:46                                                 ` Ingo Molnar
                                                                   ` (5 more replies)
  1 sibling, 6 replies; 101+ messages in thread
From: Ingo Molnar @ 2005-07-09 12:41 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel, Arjan van de Ven


* Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:

> | new stack-footprint maximum: krootimage/2846, 1204 bytes.
> | new stack-footprint maximum: konqueror/2938, 836 bytes.

btw., that's quite borderline to overflow. STACK_WARN is 512 bytes, i.e.  
another 324 bytes of stack footprint and you'd trigger an overflow 
warning. The worst-case stack footprint that your .config has is 1300+ 
bytes (zlib). Does openvpn trigger any zlib functionality? Also, the 
worst-case stack footprint you had was an XFS trace. Below i've attached 
a printout of all stackframes that are larger than 256 bytes (using your 
.config).

	Ingo

-----------------------------
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 12
EXTRAVERSION = -RT-V0.7.51-18

(gdb) 
(gdb) ####################################
(gdb) # c049d976, stack size: 1368 bytes #
(gdb) ####################################
(gdb) 0xc049d976 is in inflate_dynamic (inflate.c:765).
760	/*
761	 * We use `noinline' here to prevent gcc-3.5 from using too much stack space
762	 */
763	STATIC int noinline INIT inflate_dynamic(void)
764	/* decompress an inflated type 2 (dynamic Huffman codes) block. */
765	{
766	  int i;                /* temporary variables */
767	  unsigned j;
768	  unsigned l;           /* last length */
769	  unsigned m;           /* mask for bit lengths table */
(gdb) 770	  unsigned n;           /* number of lengths to get */
771	  struct huft *tl;      /* literal/length code table */
772	  struct huft *td;      /* distance code table */
773	  int bl;               /* lookup bits for tl */
774	  int bd;               /* lookup bits for td */
775	  unsigned nb;          /* number of bit length codes */
776	  unsigned nl;          /* number of literal/length codes */
777	  unsigned nd;          /* number of distance codes */
778	#ifdef PKZIP_BUG_WORKAROUND
779	  unsigned ll[288+32];  /* literal/length and distance code lengths */
(gdb) 
(gdb) ####################################
(gdb) # c049d7b5, stack size: 1196 bytes #
(gdb) ####################################
(gdb) 0xc049d7b5 is in inflate_fixed (inflate.c:711).
706	 */
707	STATIC int noinline INIT inflate_fixed(void)
708	/* decompress an inflated type 1 (fixed Huffman codes) block.  We should
709	   either replace this with a custom decoder, or at least precompute the
710	   Huffman tables. */
711	{
712	  int i;                /* temporary variable */
713	  struct huft *tl;      /* literal/length code table */
714	  struct huft *td;      /* distance code table */
715	  int bl;               /* lookup bits for tl */
(gdb) 716	  int bd;               /* lookup bits for td */
717	  unsigned l[288];      /* length list for huft_build */
718	
719	DEBG("<fix");
720	
721	  /* set up literal table */
722	  for (i = 0; i < 144; i++)
723	    l[i] = 8;
724	  for (; i < 256; i++)
725	    l[i] = 9;
(gdb) 
(gdb) ####################################
(gdb) # c0228ec3, stack size:  764 bytes #
(gdb) ####################################
(gdb) 0xc0228ec3 is in calc_mode_timings (drivers/video/fbmon.c:317).
312		else
313			return 0;
314	}
315	
316	static void calc_mode_timings(int xres, int yres, int refresh, struct fb_videomode *mode)
317	{
318		struct fb_var_screeninfo var;
319		struct fb_info info;
320		
321		var.xres = xres;
(gdb) 322		var.yres = yres;
323		fb_get_mode(FB_VSYNCTIMINGS | FB_IGNOREMON, 
324			    refresh, &var, &info);
325		mode->xres = xres;
326		mode->yres = yres;
327		mode->pixclock = var.pixclock;
328		mode->refresh = refresh;
329		mode->left_margin = var.left_margin;
330		mode->right_margin = var.right_margin;
331		mode->upper_margin = var.upper_margin;
(gdb) 
(gdb) ####################################
(gdb) # c0208e26, stack size:  600 bytes #
(gdb) ####################################
(gdb) 0xc0208e26 is in semctl_main (ipc/sem.c:586).
581		sem_unlock(sma);
582		return err;
583	}
584	
585	static int semctl_main(int semid, int semnum, int cmd, int version, union semun arg)
586	{
587		struct sem_array *sma;
588		struct sem* curr;
589		int err;
590		ushort fast_sem_io[SEMMSL_FAST];
(gdb) 591		ushort* sem_io = fast_sem_io;
592		int nsems;
593	
594		sma = sem_lock(semid);
595		if(sma==NULL)
596			return -EINVAL;
597	
598		nsems = sma->sem_nsems;
599	
600		err=-EIDRM;
(gdb) 
(gdb) ####################################
(gdb) # c02de0f3, stack size:  572 bytes #
(gdb) ####################################
(gdb) 0xc02de0f3 is in ip_setsockopt (net/ipv4/ip_sockglue.c:385).
380	 *	Socket option code for IP. This is the end of the line after any TCP,UDP etc options on
381	 *	an IP socket.
382	 */
383	
384	int ip_setsockopt(struct sock *sk, int level, int optname, char __user *optval, int optlen)
385	{
386		struct inet_sock *inet = inet_sk(sk);
387		int val=0,err;
388	
389		if (level != SOL_IP)
(gdb) 390			return -ENOPROTOOPT;
391	
392		if (((1<<optname) & ((1<<IP_PKTINFO) | (1<<IP_RECVTTL) | 
393				    (1<<IP_RECVOPTS) | (1<<IP_RECVTOS) | 
394				    (1<<IP_RETOPTS) | (1<<IP_TOS) | 
395				    (1<<IP_TTL) | (1<<IP_HDRINCL) | 
396				    (1<<IP_MTU_DISCOVER) | (1<<IP_RECVERR) | 
397				    (1<<IP_ROUTER_ALERT) | (1<<IP_FREEBIND))) || 
398					optname == IP_MULTICAST_TTL || 
399					optname == IP_MULTICAST_LOOP) { 
(gdb) 
(gdb) ####################################
(gdb) # c0209846, stack size:  488 bytes #
(gdb) ####################################
(gdb) 0xc0209846 is in sys_semtimedop (ipc/sem.c:1057).
1052		return un;
1053	}
1054	
1055	asmlinkage long sys_semtimedop(int semid, struct sembuf __user *tsops,
1056				unsigned nsops, const struct timespec __user *timeout)
1057	{
1058		int error = -EINVAL;
1059		struct sem_array *sma;
1060		struct sembuf fast_sops[SEMOPM_FAST];
1061		struct sembuf* sops = fast_sops, *sop;
(gdb) 1062		struct sem_undo *un;
1063		int undos = 0, decrease = 0, alter = 0, max;
1064		struct sem_queue queue;
1065		unsigned long jiffies_left = 0;
1066	
1067		if (nsops < 1 || semid < 0)
1068			return -EINVAL;
1069		if (nsops > sc_semopm)
1070			return -E2BIG;
1071		if(nsops > SEMOPM_FAST) {
(gdb) 
(gdb) ####################################
(gdb) # c02decd6, stack size:  460 bytes #
(gdb) ####################################
(gdb) 0xc02decd6 is in ip_getsockopt (net/ipv4/ip_sockglue.c:877).
872	 *	Get the options. Note for future reference. The GET of IP options gets the
873	 *	_received_ ones. The set sets the _sent_ ones.
874	 */
875	
876	int ip_getsockopt(struct sock *sk, int level, int optname, char __user *optval, int __user *optlen)
877	{
878		struct inet_sock *inet = inet_sk(sk);
879		int val;
880		int len;
881		
(gdb) 882		if(level!=SOL_IP)
883			return -EOPNOTSUPP;
884	
885	#ifdef CONFIG_IP_MROUTE
886		if(optname>=MRT_BASE && optname <=MRT_BASE+10)
887		{
888			return ip_mroute_getsockopt(sk,optname,optval,optlen);
889		}
890	#endif
891	
(gdb) 
(gdb) ####################################
(gdb) # c0252146, stack size:  432 bytes #
(gdb) ####################################
(gdb) 0xc0252146 is in extract_buf (drivers/char/random.c:760).
755	
756		return nbytes;
757	}
758	
759	static void extract_buf(struct entropy_store *r, __u8 *out)
760	{
761		int i, x;
762		__u32 data[16], buf[5 + SHA_WORKSPACE_WORDS];
763	
764		sha_init(buf);
(gdb) 765		/*
766		 * As we hash the pool, we mix intermediate values of
767		 * the hash back into the pool.  This eliminates
768		 * backtracking attacks (where the attacker knows
769		 * the state of the pool plus the current outputs, and
770		 * attempts to find previous ouputs), unless the hash
771		 * function can be inverted.
772		 */
773		for (i = 0, x = 0; i < r->poolinfo->poolwords; i += 16, x+=2) {
774			sha_transform(buf, (__u8 *)r->pool+i, buf + 5);
(gdb) 
(gdb) ####################################
(gdb) # c02a0a26, stack size:  416 bytes #
(gdb) ####################################
(gdb) 0xc02a0a26 is in pcmcia_device_query (drivers/pcmcia/ds.c:436).
431	
432	/*
433	 * pcmcia_device_query -- determine information about a pcmcia device
434	 */
435	static int pcmcia_device_query(struct pcmcia_device *p_dev)
436	{
437		cistpl_manfid_t manf_id;
438		cistpl_funcid_t func_id;
439		cistpl_vers_1_t	vers1;
440		unsigned int i;
(gdb) 441	
442		if (!pccard_read_tuple(p_dev->socket, p_dev->func,
443				       CISTPL_MANFID, &manf_id)) {
444			p_dev->manf_id = manf_id.manf;
445			p_dev->card_id = manf_id.card;
446			p_dev->has_manf_id = 1;
447			p_dev->has_card_id = 1;
448		}
449	
450		if (!pccard_read_tuple(p_dev->socket, p_dev->func,
(gdb) 
(gdb) ####################################
(gdb) # c0169503, stack size:  408 bytes #
(gdb) ####################################
(gdb) 0xc0169503 is in blkdev_get (fs/block_dev.c:663).
658			bdput(bdev);
659		return ret;
660	}
661	
662	int blkdev_get(struct block_device *bdev, mode_t mode, unsigned flags)
663	{
664		/*
665		 * This crockload is due to bad choice of ->open() type.
666		 * It will go away.
667		 * For now, block device ->open() routine must _not_
(gdb) 668		 * examine anything in 'inode' argument except ->i_rdev.
669		 */
670		struct file fake_file = {};
671		struct dentry fake_dentry = {};
672		fake_file.f_mode = mode;
673		fake_file.f_flags = flags;
674		fake_file.f_dentry = &fake_dentry;
675		fake_dentry.d_inode = bdev->bd_inode;
676	
677		return do_open(bdev, &fake_file);
(gdb) 
(gdb) ####################################
(gdb) # c013ebf4, stack size:  388 bytes #
(gdb) ####################################
(gdb) 0xc013ebf4 is in __print_symbol (kernel/kallsyms.c:234).
229		return NULL;
230	}
231	
232	/* Replace "%s" in format with address, or returns -errno. */
233	void __print_symbol(const char *fmt, unsigned long address)
234	{
235		char *modname;
236		const char *name;
237		unsigned long offset, size;
238		char namebuf[KSYM_NAME_LEN+1];
(gdb) 239		char buffer[sizeof("%s+%#lx/%#lx [%s]") + KSYM_NAME_LEN +
240			    2*(BITS_PER_LONG*3/10) + MODULE_NAME_LEN + 1];
241	
242		name = kallsyms_lookup(address, &size, &offset, &modname, namebuf);
243	
244		if (!name)
245			sprintf(buffer, "0x%lx", address);
246		else {
247			if (modname)
248				sprintf(buffer, "%s+%#lx/%#lx [%s]", name, offset,
(gdb) 
(gdb) ####################################
(gdb) # c020a773, stack size:  368 bytes #
(gdb) ####################################
(gdb) 0xc020a773 is in sys_shmctl (ipc/shm.c:409).
404			}
405		}
406	}
407	
408	asmlinkage long sys_shmctl (int shmid, int cmd, struct shmid_ds __user *buf)
409	{
410		struct shm_setbuf setbuf;
411		struct shmid_kernel *shp;
412		int err, version;
413	
(gdb) 414		if (cmd < 0 || shmid < 0) {
415			err = -EINVAL;
416			goto out;
417		}
418	
419		version = ipc_parse_version(&cmd);
420	
421		switch (cmd) { /* replace with proc interface ? */
422		case IPC_INFO:
423		{
(gdb) 
(gdb) ####################################
(gdb) # c01ad8b6, stack size:  348 bytes #
(gdb) ####################################
(gdb) 0xc01ad8b6 is in xfs_bmapi (fs/xfs/xfs_bmap.c:4530).
4525						   controls a.g. for allocs */
4526		xfs_extlen_t	total,		/* total blocks needed */
4527		xfs_bmbt_irec_t	*mval,		/* output: map values */
4528		int		*nmap,		/* i/o: mval size/count */
4529		xfs_bmap_free_t	*flist)		/* i/o: list extents to free */
4530	{
4531		xfs_fsblock_t	abno;		/* allocated block number */
4532		xfs_extlen_t	alen;		/* allocated extent length */
4533		xfs_fileoff_t	aoff;		/* allocated file offset */
4534		xfs_bmalloca_t	bma;		/* args for xfs_bmap_alloc */
(gdb) 4535		char		contig;		/* allocation must be one extent */
4536		xfs_btree_cur_t	*cur;		/* bmap btree cursor */
4537		char		delay;		/* this request is for delayed alloc */
4538		xfs_fileoff_t	end;		/* end of mapped file region */
4539		int		eof;		/* we've hit the end of extent list */
4540		xfs_bmbt_rec_t	*ep;		/* extent list entry pointer */
4541		int		error;		/* error return */
4542		char		exact;		/* don't do all of wasdelayed extent */
4543		xfs_bmbt_irec_t	got;		/* current extent list record */
4544		xfs_ifork_t	*ifp;		/* inode fork pointer */
(gdb) 
(gdb) ####################################
(gdb) # c0191e66, stack size:  344 bytes #
(gdb) ####################################
(gdb) 0xc0191e66 is in show_stat (fs/proc/proc_misc.c:327).
322		.llseek		= seq_lseek,
323		.release	= seq_release,
324	};
325	
326	static int show_stat(struct seq_file *p, void *v)
327	{
328		int i;
329		unsigned long jif;
330		cputime64_t user, nice, system, idle, iowait, irq, softirq, steal;
331		u64 sum = 0;
(gdb) 332	
333		user = nice = system = idle = iowait =
334			irq = softirq = steal = cputime64_zero;
335		jif = - wall_to_monotonic.tv_sec;
336		if (wall_to_monotonic.tv_nsec)
337			--jif;
338	
339		for_each_cpu(i) {
340			int j;
341	
(gdb) 
(gdb) ####################################
(gdb) # c0191af6, stack size:  344 bytes #
(gdb) ####################################
(gdb) 0xc0191af6 is in meminfo_read_proc (fs/proc/proc_misc.c:119).
114		return proc_calc_metrics(page, start, off, count, eof, len);
115	}
116	
117	static int meminfo_read_proc(char *page, char **start, off_t off,
118					 int count, int *eof, void *data)
119	{
120		struct sysinfo i;
121		int len;
122		struct page_state ps;
123		unsigned long inactive;
(gdb) 124		unsigned long active;
125		unsigned long free;
126		unsigned long committed;
127		unsigned long allowed;
128		struct vmalloc_info vmi;
129		long cached;
130	
131		get_page_state(&ps);
132		get_zone_counts(&active, &inactive, &free);
133	
(gdb) 
(gdb) ####################################
(gdb) # c017f553, stack size:  344 bytes #
(gdb) ####################################
(gdb) 0xc017f553 is in sys_pivot_root (fs/namespace.c:1280).
1275	 *    though, so you may need to say mount --bind /nfs/my_root /nfs/my_root
1276	 *    first.
1277	 */
1278	
1279	asmlinkage long sys_pivot_root(const char __user *new_root, const char __user *put_old)
1280	{
1281		struct vfsmount *tmp;
1282		struct nameidata new_nd, old_nd, parent_nd, root_parent, user_nd;
1283		int error;
1284	
(gdb) 1285		if (!capable(CAP_SYS_ADMIN))
1286			return -EPERM;
1287	
1288		lock_kernel();
1289	
1290		error = __user_walk(new_root, LOOKUP_FOLLOW|LOOKUP_DIRECTORY, &new_nd);
1291		if (error)
1292			goto out0;
1293		error = -EINVAL;
1294		if (!check_mnt(new_nd.mnt))
(gdb) 
(gdb) ####################################
(gdb) # c01dc746, stack size:  340 bytes #
(gdb) ####################################
(gdb) 0xc01dc746 is in xfs_swapext (fs/xfs/xfs_dfrag.c:69).
64	 * Syssgi interface for swapext
65	 */
66	int
67	xfs_swapext(
68		xfs_swapext_t	__user *sxp)
69	{
70		xfs_swapext_t	sx;
71		xfs_inode_t     *ip=NULL, *tip=NULL, *ips[2];
72		xfs_trans_t     *tp;
73		xfs_mount_t     *mp;
(gdb) 74		xfs_bstat_t	*sbp;
75		struct file	*fp = NULL, *tfp = NULL;
76		vnode_t		*vp, *tvp;
77		bhv_desc_t      *bdp, *tbdp;
78		vn_bhv_head_t   *bhp, *tbhp;
79		uint		lock_flags=0;
80		int		ilf_fields, tilf_fields;
81		int		error = 0;
82		xfs_ifork_t	tempif, *ifp, *tifp;
83		__uint64_t	tmp;
(gdb) 
(gdb) ####################################
(gdb) # c011ad66, stack size:  340 bytes #
(gdb) ####################################
(gdb) 0xc011ad66 is in mm_init (kernel/fork.c:353).
348	#define free_mm(mm)	(kmem_cache_free(mm_cachep, (mm)))
349	
350	#include <linux/init_task.h>
351	
352	static struct mm_struct * mm_init(struct mm_struct * mm)
353	{
354		atomic_set(&mm->mm_users, 1);
355		atomic_set(&mm->mm_count, 1);
356		init_rwsem(&mm->mmap_sem);
357		INIT_LIST_HEAD(&mm->mmlist);
(gdb) 358		mm->core_waiters = 0;
359		mm->nr_ptes = 0;
360		spin_lock_init(&mm->page_table_lock);
361		rwlock_init(&mm->ioctx_list_lock);
362		mm->ioctx_list = NULL;
363		mm->default_kioctx = (struct kioctx)INIT_KIOCTX(mm->default_kioctx, *mm);
364		INIT_LIST_HEAD(&mm->delayed_drop);
365		mm->free_area_cache = TASK_UNMAPPED_BASE;
366	
367		if (likely(!mm_alloc_pgd(mm))) {
(gdb) 
(gdb) ####################################
(gdb) # c0298a03, stack size:  336 bytes #
(gdb) ####################################
(gdb) 0xc0298a03 is in mmc_ioctl (drivers/cdrom/cdrom.c:2623).
2618		return cdo->generic_packet(cdi, &cgc);
2619	}
2620	
2621	static int mmc_ioctl(struct cdrom_device_info *cdi, unsigned int cmd,
2622			     unsigned long arg)
2623	{		
2624		struct cdrom_device_ops *cdo = cdi->ops;
2625		struct packet_command cgc;
2626		struct request_sense sense;
2627		unsigned char buffer[32];
(gdb) 2628		int ret = 0;
2629	
2630		memset(&cgc, 0, sizeof(cgc));
2631	
2632		/* build a unified command and queue it through
2633		   cdo->generic_packet() */
2634		switch (cmd) {
2635		case CDROMREADRAW:
2636		case CDROMREADMODE1:
2637		case CDROMREADMODE2: {
(gdb) 
(gdb) ####################################
(gdb) # c02077d3, stack size:  336 bytes #
(gdb) ####################################
(gdb) 0xc02077d3 is in sys_msgctl (ipc/msg.c:328).
323			return -EINVAL;
324		}
325	}
326	
327	asmlinkage long sys_msgctl (int msqid, int cmd, struct msqid_ds __user *buf)
328	{
329		int err, version;
330		struct msg_queue *msq;
331		struct msq_setbuf setbuf;
332		struct kern_ipc_perm *ipcp;
(gdb) 333		
334		if (msqid < 0 || cmd < 0)
335			return -EINVAL;
336	
337		version = ipc_parse_version(&cmd);
338	
339		switch (cmd) {
340		case IPC_INFO: 
341		case MSG_INFO: 
342		{ 
(gdb) 
(gdb) ####################################
(gdb) # c0190996, stack size:  336 bytes #
(gdb) ####################################
(gdb) 0xc0190996 is in do_task_stat (fs/proc/array.c:314).
309	#endif
310		return buffer - orig;
311	}
312	
313	static int do_task_stat(struct task_struct *task, char * buffer, int whole)
314	{
315		unsigned long vsize, eip, esp, wchan = ~0UL;
316		long priority, nice;
317		int tty_pgrp = -1, tty_nr = 0;
318		sigset_t sigign, sigcatch;
(gdb) 319		char state;
320		int res;
321	 	pid_t ppid, pgid = -1, sid = -1;
322		int num_threads = 0;
323		struct mm_struct *mm;
324		unsigned long long start_time;
325		unsigned long cmin_flt = 0, cmaj_flt = 0;
326		unsigned long  min_flt = 0,  maj_flt = 0;
327		cputime_t cutime, cstime, utime, stime;
328		unsigned long rsslim = 0;
(gdb) 
(gdb) ####################################
(gdb) # c02014f3, stack size:  332 bytes #
(gdb) ####################################
(gdb) 0xc02014f3 is in linvfs_mknod (fs/xfs/linux-2.6/xfs_iops.c:114).
109	linvfs_mknod(
110		struct inode	*dir,
111		struct dentry	*dentry,
112		int		mode,
113		dev_t		rdev)
114	{
115		struct inode	*ip;
116		vattr_t		va;
117		vnode_t		*vp = NULL, *dvp = LINVFS_GET_VP(dir);
118		xfs_acl_t	*default_acl = NULL;
(gdb) 119		attrexists_t	test_default_acl = _ACL_DEFAULT_EXISTS;
120		int		error;
121	
122		/*
123		 * Irix uses Missed'em'V split, but doesn't want to see
124		 * the upper 5 bits of (14bit) major.
125		 */
126		if (!sysv_valid_dev(rdev) || MAJOR(rdev) & ~0x1ff)
127			return -EINVAL;
128	
(gdb) 
(gdb) ####################################
(gdb) # c0192f96, stack size:  332 bytes #
(gdb) ####################################
(gdb) 0xc0192f96 is in elf_kcore_store_hdr (fs/proc/kcore.c:143).
138	/*
139	 * store an ELF coredump header in the supplied buffer
140	 * nphdr is the number of elf_phdr to insert
141	 */
142	static void elf_kcore_store_hdr(char *bufp, int nphdr, int dataoff)
143	{
144		struct elf_prstatus prstatus;	/* NT_PRSTATUS */
145		struct elf_prpsinfo prpsinfo;	/* NT_PRPSINFO */
146		struct elf_phdr *nhdr, *phdr;
147		struct elfhdr *elf;
(gdb) 148		struct memelfnote notes[3];
149		off_t offset = 0;
150		struct kcore_list *m;
151	
152		/* setup ELF header */
153		elf = (struct elfhdr *) bufp;
154		bufp += sizeof(struct elfhdr);
155		offset += sizeof(struct elfhdr);
156		memcpy(elf->e_ident, ELFMAG, SELFMAG);
157		elf->e_ident[EI_CLASS]	= ELF_CLASS;
(gdb) 
(gdb) ####################################
(gdb) # c02d3076, stack size:  328 bytes #
(gdb) ####################################
(gdb) 0xc02d3076 is in rt_cache_seq_show (net/ipv4/route.c:292).
287		if (v && v != SEQ_START_TOKEN)
288			rcu_read_unlock_bh();
289	}
290	
291	static int rt_cache_seq_show(struct seq_file *seq, void *v)
292	{
293		if (v == SEQ_START_TOKEN)
294			seq_printf(seq, "%-127s\n",
295				   "Iface\tDestination\tGateway \tFlags\t\tRefCnt\tUse\t"
296				   "Metric\tSource\t\tMTU\tWindow\tIRTT\tTOS\tHHRef\t"
(gdb) 297				   "HHUptod\tSpecDst");
298		else {
299			struct rtable *r = v;
300			char temp[256];
301	
302			sprintf(temp, "%s\t%08lX\t%08lX\t%8X\t%d\t%u\t%d\t"
303				      "%08lX\t%d\t%u\t%u\t%02X\t%d\t%1d\t%08X",
304				r->u.dst.dev ? r->u.dst.dev->name : "*",
305				(unsigned long)r->rt_dst, (unsigned long)r->rt_gateway,
306				r->rt_flags, atomic_read(&r->u.dst.__refcnt),
(gdb) 
(gdb) ####################################
(gdb) # c02953a5, stack size:  320 bytes #
(gdb) ####################################
(gdb) 0xc02953a5 is in mo_open_write (drivers/cdrom/cdrom.c:814).
809	
810		return ret;
811	}
812	
813	static int mo_open_write(struct cdrom_device_info *cdi)
814	{
815		struct packet_command cgc;
816		char buffer[255];
817		int ret;
818	
(gdb) 819		init_cdrom_command(&cgc, &buffer, 4, CGC_DATA_READ);
820		cgc.quiet = 1;
821	
822		/*
823		 * obtain write protect information as per
824		 * drivers/scsi/sd.c:sd_read_write_protect_flag
825		 */
826	
827		ret = cdrom_mode_sense(cdi, &cgc, GPMODE_ALL_PAGES, 0);
828		if (ret)
(gdb) 
(gdb) ####################################
(gdb) # c0227bd3, stack size:  320 bytes #
(gdb) ####################################
(gdb) 0xc0227bd3 is in fb_ioctl (drivers/video/fbmem.c:769).
764	}
765	
766	static int 
767	fb_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
768		 unsigned long arg)
769	{
770		int fbidx = iminor(inode);
771		struct fb_info *info = registered_fb[fbidx];
772		struct fb_ops *fb = info->fbops;
773		struct fb_var_screeninfo var;
(gdb) 774		struct fb_fix_screeninfo fix;
775		struct fb_con2fbmap con2fb;
776		struct fb_cmap_user cmap;
777		struct fb_event event;
778		void __user *argp = (void __user *)arg;
779		int i;
780		
781		if (!fb)
782			return -ENODEV;
783		switch (cmd) {
(gdb) 
(gdb) ####################################
(gdb) # c02fdec3, stack size:  312 bytes #
(gdb) ####################################
(gdb) 0xc02fdec3 is in icmp_send (net/ipv4/icmp.c:434).
429	 *			MUST NOT reply to a multicast/broadcast MAC address.
430	 *			MUST reply to only the first fragment.
431	 */
432	
433	void icmp_send(struct sk_buff *skb_in, int type, int code, u32 info)
434	{
435		struct iphdr *iph;
436		int room;
437		struct icmp_bxm icmp_param;
438		struct rtable *rt = (struct rtable *)skb_in->dst;
(gdb) 439		struct ipcm_cookie ipc;
440		u32 saddr;
441		u8  tos;
442	
443		if (!rt)
444			goto out;
445	
446		/*
447		 *	Find the original header. It is expected to be valid, of course.
448		 *	Check this, icmp_send is called from the most obscure devices
(gdb) 
(gdb) ####################################
(gdb) # c01ea456, stack size:  308 bytes #
(gdb) ####################################
(gdb) 0xc01ea456 is in xfs_trans_init (fs/xfs/xfs_trans.c:82).
77	 * in the mount structure.
78	 */
79	void
80	xfs_trans_init(
81		xfs_mount_t	*mp)
82	{
83		xfs_trans_reservations_t	*resp;
84	
85		resp = &(mp->m_reservations);
86		resp->tr_write =
(gdb) 87			(uint)(XFS_CALC_WRITE_LOG_RES(mp) + XFS_DQUOT_LOGRES(mp));
88		resp->tr_itruncate =
89			(uint)(XFS_CALC_ITRUNCATE_LOG_RES(mp) + XFS_DQUOT_LOGRES(mp));
90		resp->tr_rename =
91			(uint)(XFS_CALC_RENAME_LOG_RES(mp) + XFS_DQUOT_LOGRES(mp));
92		resp->tr_link = (uint)XFS_CALC_LINK_LOG_RES(mp);
93		resp->tr_remove =
94			(uint)(XFS_CALC_REMOVE_LOG_RES(mp) + XFS_DQUOT_LOGRES(mp));
95		resp->tr_symlink =
96			(uint)(XFS_CALC_SYMLINK_LOG_RES(mp) + XFS_DQUOT_LOGRES(mp));
(gdb) 
(gdb) ####################################
(gdb) # c022af86, stack size:  300 bytes #
(gdb) ####################################
(gdb) 0xc022af86 is in store_mode (drivers/video/fbsysfs.c:108).
103		return snprintf(&buf[offset], PAGE_SIZE - offset, "%c:%dx%d-%d\n", m, mode->xres, mode->yres, mode->refresh);
104	}
105	
106	static ssize_t store_mode(struct class_device *class_device, const char * buf,
107				  size_t count)
108	{
109		struct fb_info *fb_info =
110			(struct fb_info *)class_get_devdata(class_device);
111		char mstr[100];
112		struct fb_var_screeninfo var;
(gdb) 113		struct fb_modelist *modelist;
114		struct fb_videomode *mode;
115		struct list_head *pos;
116		size_t i;
117		int err;
118	
119		memset(&var, 0, sizeof(var));
120	
121		list_for_each(pos, &fb_info->modelist) {
122			modelist = list_entry(pos, struct fb_modelist, list);
(gdb) 
(gdb) ####################################
(gdb) # c049cae6, stack size:  292 bytes #
(gdb) ####################################
(gdb) 0xc049cae6 is in huft_build (inflate.c:293).
288	/* Given a list of code lengths and a maximum table size, make a set of
289	   tables to decode that set of codes.  Return zero on success, one if
290	   the given code set is incomplete (the tables are still built in this
291	   case), two if the input is invalid (all zero length codes or an
292	   oversubscribed set of lengths), and three if not enough memory. */
293	{
294	  unsigned a;                   /* counter for codes of length k */
295	  unsigned c[BMAX+1];           /* bit length count table */
296	  unsigned f;                   /* i repeats in table every f entries */
297	  int g;                        /* maximum code length */
(gdb) 298	  int h;                        /* table level */
299	  register unsigned i;          /* counter, current code */
300	  register unsigned j;          /* counter */
301	  register int k;               /* number of bits in current code */
302	  int l;                        /* bits per table (returned in m) */
303	  register unsigned *p;         /* pointer into c[], b[], or v[] */
304	  register struct huft *q;      /* points to current table */
305	  struct huft r;                /* table entry for structure assignment */
306	  struct huft *u[BMAX];         /* table stack */
307	  unsigned *v;                  /* values in order of bit length */
(gdb) 
(gdb) ####################################
(gdb) # c02b9426, stack size:  288 bytes #
(gdb) ####################################
(gdb) 0xc02b9426 is in sys_sendmsg (net/socket.c:1692).
1687	/*
1688	 *	BSD sendmsg interface
1689	 */
1690	
1691	asmlinkage long sys_sendmsg(int fd, struct msghdr __user *msg, unsigned flags)
1692	{
1693		struct compat_msghdr __user *msg_compat = (struct compat_msghdr __user *)msg;
1694		struct socket *sock;
1695		char address[MAX_SOCK_ADDR];
1696		struct iovec iovstack[UIO_FASTIOV], *iov = iovstack;
(gdb) 1697		unsigned char ctl[sizeof(struct cmsghdr) + 20];	/* 20 is size of ipv6_pktinfo */
1698		unsigned char *ctl_buf = ctl;
1699		struct msghdr msg_sys;
1700		int err, ctl_len, iov_size, total_len;
1701		
1702		err = -EFAULT;
1703		if (MSG_CMSG_COMPAT & flags) {
1704			if (get_compat_msghdr(&msg_sys, msg_compat))
1705				return -EFAULT;
1706		} else if (copy_from_user(&msg_sys, msg, sizeof(struct msghdr)))
(gdb) 
(gdb) ####################################
(gdb) # c01825c3, stack size:  288 bytes #
(gdb) ####################################
(gdb) 0xc01825c3 is in setxattr (fs/xattr.c:27).
22	 * Extended attribute SET operations
23	 */
24	static long
25	setxattr(struct dentry *d, char __user *name, void __user *value,
26		 size_t size, int flags)
27	{
28		int error;
29		void *kvalue = NULL;
30		char kname[XATTR_NAME_MAX + 1];
31	
(gdb) 32		if (flags & ~(XATTR_CREATE|XATTR_REPLACE))
33			return -EINVAL;
34	
35		error = strncpy_from_user(kname, name, sizeof(kname));
36		if (error == 0 || error == sizeof(kname))
37			error = -ERANGE;
38		if (error < 0)
39			return error;
40	
41		if (size) {
(gdb) 
(gdb) ####################################
(gdb) # c01828a3, stack size:  284 bytes #
(gdb) ####################################
(gdb) 0xc01828a3 is in getxattr (fs/xattr.c:120).
115	/*
116	 * Extended attribute GET operations
117	 */
118	static ssize_t
119	getxattr(struct dentry *d, char __user *name, void __user *value, size_t size)
120	{
121		ssize_t error;
122		void *kvalue = NULL;
123		char kname[XATTR_NAME_MAX + 1];
124	
(gdb) 125		error = strncpy_from_user(kname, name, sizeof(kname));
126		if (error == 0 || error == sizeof(kname))
127			error = -ERANGE;
128		if (error < 0)
129			return error;
130	
131		if (size) {
132			if (size > XATTR_SIZE_MAX)
133				size = XATTR_SIZE_MAX;
134			kvalue = kmalloc(size, GFP_KERNEL);
(gdb) 
(gdb) ####################################
(gdb) # c02dd456, stack size:  280 bytes #
(gdb) ####################################
(gdb) 0xc02dd456 is in ip_send_reply (net/ipv4/ip_output.c:1276).
1271	 *
1272	 *	LATER: switch from ip_build_xmit to ip_append_*
1273	 */
1274	void ip_send_reply(struct sock *sk, struct sk_buff *skb, struct ip_reply_arg *arg,
1275			   unsigned int len)
1276	{
1277		struct inet_sock *inet = inet_sk(sk);
1278		struct {
1279			struct ip_options	opt;
1280			char			data[40];
(gdb) 1281		} replyopts;
1282		struct ipcm_cookie ipc;
1283		u32 daddr;
1284		struct rtable *rt = (struct rtable*)skb->dst;
1285	
1286		if (ip_options_echo(&replyopts.opt, skb))
1287			return;
1288	
1289		daddr = ipc.addr = rt->rt_src;
1290		ipc.opt = NULL;
(gdb) 
(gdb) ####################################
(gdb) # c0182d33, stack size:  280 bytes #
(gdb) ####################################
(gdb) 0xc0182d33 is in removexattr (fs/xattr.c:289).
284	/*
285	 * Extended attribute REMOVE operations
286	 */
287	static long
288	removexattr(struct dentry *d, char __user *name)
289	{
290		int error;
291		char kname[XATTR_NAME_MAX + 1];
292	
293		error = strncpy_from_user(kname, name, sizeof(kname));
(gdb) 294		if (error == 0 || error == sizeof(kname))
295			error = -ERANGE;
296		if (error < 0)
297			return error;
298	
299		error = -EOPNOTSUPP;
300		if (d->d_inode->i_op && d->d_inode->i_op->removexattr) {
301			error = security_inode_removexattr(d, kname);
302			if (error)
303				goto out;
(gdb) 
(gdb) ####################################
(gdb) # c02b1f86, stack size:  276 bytes #
(gdb) ####################################
(gdb) 0xc02b1f86 is in cpufreq_add_dev (drivers/cpufreq/cpufreq.c:568).
563	 * cpufreq_add_dev - add a CPU device
564	 *
565	 * Adds the cpufreq interface for a CPU device. 
566	 */
567	static int cpufreq_add_dev (struct sys_device * sys_dev)
568	{
569		unsigned int cpu = sys_dev->id;
570		int ret = 0;
571		struct cpufreq_policy new_policy;
572		struct cpufreq_policy *policy;
(gdb) 573		struct freq_attr **drv_attr;
574		unsigned long flags;
575		unsigned int j;
576	
577		cpufreq_debug_disable_ratelimit();
578		dprintk("adding CPU %u\n", cpu);
579	
580	#ifdef CONFIG_SMP
581		/* check whether a different CPU already registered this
582		 * CPU because it is in the same boat. */
(gdb) 
(gdb) ####################################
(gdb) # c02b1c73, stack size:  276 bytes #
(gdb) ####################################
(gdb) 0xc02b1c73 is in store_scaling_governor (drivers/cpufreq/cpufreq.c:406).
401	/**
402	 * store_scaling_governor - store policy for the specified CPU
403	 */
404	static ssize_t store_scaling_governor (struct cpufreq_policy * policy, 
405					       const char *buf, size_t count) 
406	{
407		unsigned int ret = -EINVAL;
408		char	str_governor[16];
409		struct cpufreq_policy new_policy;
410	
(gdb) 411		ret = cpufreq_get_policy(&new_policy, policy->cpu);
412		if (ret)
413			return ret;
414	
415		ret = sscanf (buf, "%15s", str_governor);
416		if (ret != 1)
417			return -EINVAL;
418	
419		if (cpufreq_parse_governor(str_governor, &new_policy.policy, &new_policy.governor))
420			return -EINVAL;
(gdb) 
(gdb) ####################################
(gdb) # c04b4bb5, stack size:  272 bytes #
(gdb) ####################################
(gdb) 0xc04b4bb5 is in pirq_peer_trick (arch/i386/pci/irq.c:96).
91	 *  bridges.  It's a gross hack, but since there are no other known
92	 *  ways how to get a list of buses, we have to go this way.
93	 */
94	
95	static void __init pirq_peer_trick(void)
96	{
97		struct irq_routing_table *rt = pirq_table;
98		u8 busmap[256];
99		int i;
100		struct irq_info *e;
(gdb) 101	
102		memset(busmap, 0, sizeof(busmap));
103		for(i=0; i < (rt->size - sizeof(struct irq_routing_table)) / sizeof(struct irq_info); i++) {
104			e = &rt->slots[i];
105	#ifdef DEBUG
106			{
107				int j;
108				DBG("%02x:%02x slot=%02x", e->bus, e->devfn/8, e->slot);
109				for(j=0; j<4; j++)
110					DBG(" %d:%02x/%04x", j, e->irq[j].link, e->irq[j].bitmap);
(gdb) 
(gdb) ####################################
(gdb) # c02b3003, stack size:  272 bytes #
(gdb) ####################################
(gdb) 0xc02b3003 is in cpufreq_update_policy (drivers/cpufreq/cpufreq.c:1391).
1386	 *
1387	 *	Usefull for policy notifiers which have different necessities
1388	 *	at different times.
1389	 */
1390	int cpufreq_update_policy(unsigned int cpu)
1391	{
1392		struct cpufreq_policy *data = cpufreq_cpu_get(cpu);
1393		struct cpufreq_policy policy;
1394		int ret = 0;
1395	
(gdb) 1396		if (!data)
1397			return -ENODEV;
1398	
1399		down(&data->lock);
1400	
1401		dprintk("updating policy for CPU %u\n", cpu);
1402		memcpy(&policy, 
1403		       data,
1404		       sizeof(struct cpufreq_policy));
1405		policy.min = data->user_policy.min;
(gdb) 
(gdb) ####################################
(gdb) # c0297193, stack size:  268 bytes #
(gdb) ####################################
(gdb) 0xc0297193 is in dvd_read_bca (drivers/cdrom/cdrom.c:1831).
1826		kfree(buf);
1827		return ret;
1828	}
1829	
1830	static int dvd_read_bca(struct cdrom_device_info *cdi, dvd_struct *s)
1831	{
1832		int ret;
1833		u_char buf[4 + 188];
1834		struct packet_command cgc;
1835		struct cdrom_device_ops *cdo = cdi->ops;
(gdb) 1836	
1837		init_cdrom_command(&cgc, buf, sizeof(buf), CGC_DATA_READ);
1838		cgc.cmd[0] = GPCMD_READ_DVD_STRUCTURE;
1839		cgc.cmd[7] = s->type;
1840		cgc.cmd[9] = cgc.buflen = 0xff;
1841	
1842		if ((ret = cdo->generic_packet(cdi, &cgc)))
1843			return ret;
1844	
1845		s->bca.len = buf[0] << 8 | buf[1];
(gdb) 
(gdb) ####################################
(gdb) # c01d9e46, stack size:  268 bytes #
(gdb) ####################################
(gdb) 0xc01d9e46 is in xfs_iomap_write_delay (fs/xfs/xfs_iomap.c:552).
547		xfs_off_t	offset,
548		size_t		count,
549		int		ioflag,
550		xfs_bmbt_irec_t *ret_imap,
551		int		*nmaps)
552	{
553		xfs_mount_t	*mp = ip->i_mount;
554		xfs_iocore_t	*io = &ip->i_iocore;
555		xfs_fileoff_t	offset_fsb;
556		xfs_fileoff_t	last_fsb;
(gdb) 557		xfs_fsize_t	isize;
558		xfs_fsblock_t	firstblock;
559		int		nimaps;
560		int		error;
561		xfs_bmbt_irec_t imap[XFS_WRITE_IMAPS];
562		int		aeof;
563		int		fsynced = 0;
564	
565		ASSERT(ismrlocked(&ip->i_lock, MR_UPDATE) != 0);
566	
(gdb) 
(gdb) ####################################
(gdb) # c01cd5b6, stack size:  268 bytes #
(gdb) ####################################
(gdb) 0xc01cd5b6 is in xfs_ialloc_ag_alloc (fs/xfs/xfs_ialloc.c:138).
133	STATIC int				/* error code or 0 */
134	xfs_ialloc_ag_alloc(
135		xfs_trans_t	*tp,		/* transaction pointer */
136		xfs_buf_t	*agbp,		/* alloc group buffer */
137		int		*alloc)
138	{
139		xfs_agi_t	*agi;		/* allocation group header */
140		xfs_alloc_arg_t	args;		/* allocation argument structure */
141		int		blks_per_cluster;  /* fs blocks per inode cluster */
142		xfs_btree_cur_t	*cur;		/* inode btree cursor */
(gdb) 143		xfs_daddr_t	d;		/* disk addr of buffer */
144		int		error;
145		xfs_buf_t	*fbuf;		/* new free inodes' buffer */
146		xfs_dinode_t	*free;		/* new free inode structure */
147		int		i;		/* inode counter */
148		int		j;		/* block counter */
149		int		nbufs;		/* num bufs of new inodes */
150		xfs_agino_t	newino;		/* new first inode's number */
151		xfs_agino_t	newlen;		/* new number of inodes */
152		int		ninodes;	/* num inodes per buf */
(gdb) 
(gdb) ####################################
(gdb) # c0178186, stack size:  268 bytes #
(gdb) ####################################
(gdb) 0xc0178186 is in locks_remove_flock (fs/locks.c:1859).
1854	
1855	/*
1856	 * This function is called on the last close of an open file.
1857	 */
1858	void locks_remove_flock(struct file *filp)
1859	{
1860		struct inode * inode = filp->f_dentry->d_inode; 
1861		struct file_lock *fl;
1862		struct file_lock **before;
1863	
(gdb) 1864		if (!inode->i_flock)
1865			return;
1866	
1867		if (filp->f_op && filp->f_op->flock) {
1868			struct file_lock fl = {
1869				.fl_pid = current->tgid,
1870				.fl_file = filp,
1871				.fl_flags = FL_FLOCK,
1872				.fl_type = F_UNLCK,
1873				.fl_end = OFFSET_MAX,
(gdb) 
(gdb) ####################################
(gdb) # c012bc04, stack size:  268 bytes #
(gdb) ####################################
(gdb) 0xc012bc04 is in sys_reboot (kernel/sys.c:372).
367	 * You can also set the meaning of the ctrl-alt-del-key here.
368	 *
369	 * reboot doesn't sync: do that yourself before calling this.
370	 */
371	asmlinkage long sys_reboot(int magic1, int magic2, unsigned int cmd, void __user * arg)
372	{
373		char buffer[256];
374	
375		/* We only trust the superuser with rebooting the system. */
376		if (!capable(CAP_SYS_BOOT))
(gdb) 377			return -EPERM;
378	
379		/* For safety, we require "magic" arguments. */
380		if (magic1 != LINUX_REBOOT_MAGIC1 ||
381		    (magic2 != LINUX_REBOOT_MAGIC2 &&
382		                magic2 != LINUX_REBOOT_MAGIC2A &&
383				magic2 != LINUX_REBOOT_MAGIC2B &&
384		                magic2 != LINUX_REBOOT_MAGIC2C))
385			return -EINVAL;
386	
(gdb) 
(gdb) ####################################
(gdb) # c02b96d6, stack size:  264 bytes #
(gdb) ####################################
(gdb) 0xc02b96d6 is in sys_recvmsg (net/socket.c:1786).
1781	/*
1782	 *	BSD recvmsg interface
1783	 */
1784	
1785	asmlinkage long sys_recvmsg(int fd, struct msghdr __user *msg, unsigned int flags)
1786	{
1787		struct compat_msghdr __user *msg_compat = (struct compat_msghdr __user *)msg;
1788		struct socket *sock;
1789		struct iovec iovstack[UIO_FASTIOV];
1790		struct iovec *iov=iovstack;
(gdb) 1791		struct msghdr msg_sys;
1792		unsigned long cmsg_ptr;
1793		int err, iov_size, total_len, len;
1794	
1795		/* kernel mode address */
1796		char addr[MAX_SOCK_ADDR];
1797	
1798		/* user mode address pointers */
1799		struct sockaddr __user *uaddr;
1800		int __user *uaddr_len;
(gdb) 
(gdb) ####################################
(gdb) # c0280a83, stack size:  260 bytes #
(gdb) ####################################
(gdb) 0xc0280a83 is in generic_ide_resume (drivers/ide/ide.c:1238).
1233	
1234		return ide_do_drive_cmd(drive, &rq, ide_wait);
1235	}
1236	
1237	static int generic_ide_resume(struct device *dev)
1238	{
1239		ide_drive_t *drive = dev->driver_data;
1240		struct request rq;
1241		struct request_pm_state rqpm;
1242		ide_task_t args;
(gdb) 1243	
1244		memset(&rq, 0, sizeof(rq));
1245		memset(&rqpm, 0, sizeof(rqpm));
1246		memset(&args, 0, sizeof(args));
1247		rq.flags = REQ_PM_RESUME;
1248		rq.special = &args;
1249		rq.pm = &rqpm;
1250		rqpm.pm_step = ide_pm_state_start_resume;
1251		rqpm.pm_state = 0;
1252	
(gdb) 
(gdb) ####################################
(gdb) # c02809e3, stack size:  260 bytes #
(gdb) ####################################
(gdb) 0xc02809e3 is in generic_ide_suspend (drivers/ide/ide.c:1219).
1214	}
1215	
1216	EXPORT_SYMBOL(system_bus_clock);
1217	
1218	static int generic_ide_suspend(struct device *dev, pm_message_t state)
1219	{
1220		ide_drive_t *drive = dev->driver_data;
1221		struct request rq;
1222		struct request_pm_state rqpm;
1223		ide_task_t args;
(gdb) 1224	
1225		memset(&rq, 0, sizeof(rq));
1226		memset(&rqpm, 0, sizeof(rqpm));
1227		memset(&args, 0, sizeof(args));
1228		rq.flags = REQ_PM_SUSPEND;
1229		rq.special = &args;
1230		rq.pm = &rqpm;
1231		rqpm.pm_step = ide_pm_state_start_suspend;
1232		rqpm.pm_state = state;
1233	
(gdb) 
(gdb) ####################################
(gdb) # c0277623, stack size:  260 bytes #
(gdb) ####################################
(gdb) 0xc0277623 is in blkpg_ioctl (drivers/block/ioctl.c:10).
5	#include <linux/buffer_head.h>
6	#include <linux/smp_lock.h>
7	#include <asm/uaccess.h>
8	
9	static int blkpg_ioctl(struct block_device *bdev, struct blkpg_ioctl_arg __user *arg)
10	{
11		struct block_device *bdevp;
12		struct gendisk *disk;
13		struct blkpg_ioctl_arg a;
14		struct blkpg_partition p;
(gdb) 15		long long start, length;
16		int part;
17		int i;
18	
19		if (!capable(CAP_SYS_ADMIN))
20			return -EACCES;
21		if (copy_from_user(&a, arg, sizeof(struct blkpg_ioctl_arg)))
22			return -EFAULT;
23		if (copy_from_user(&p, a.data, sizeof(struct blkpg_partition)))
24			return -EFAULT;
(gdb) 
(gdb) ####################################
(gdb) # c01a99b6, stack size:  256 bytes #
(gdb) ####################################
(gdb) 0xc01a99b6 is in xfs_bmap_alloc (fs/xfs/xfs_bmap.c:2154).
2149	 * It figures out where to ask the underlying allocator to put the new extent.
2150	 */
2151	STATIC int				/* error */
2152	xfs_bmap_alloc(
2153		xfs_bmalloca_t	*ap)		/* bmap alloc argument struct */
2154	{
2155		xfs_fsblock_t	adjust;		/* adjustment to block numbers */
2156		xfs_alloctype_t	atype=0;	/* type for allocation routines */
2157		int		error;		/* error return value */
2158		xfs_agnumber_t	fb_agno;	/* ag number of ap->firstblock */
(gdb) 2159		xfs_mount_t	*mp;		/* mount point structure */
2160		int		nullfb;		/* true if ap->firstblock isn't set */
2161		int		rt;		/* true if inode is realtime */
2162	#ifdef __KERNEL__
2163		xfs_extlen_t	prod=0;		/* product factor for allocators */
2164		xfs_extlen_t	ralen=0;	/* realtime allocation length */
2165	#endif
2166	
2167	#define	ISVALID(x,y)	\
2168		(rt ? \
(gdb) 

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-09 12:41                                               ` Ingo Molnar
@ 2005-07-09 12:46                                                 ` Ingo Molnar
  2005-07-09 13:05                                                 ` Ingo Molnar
                                                                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 101+ messages in thread
From: Ingo Molnar @ 2005-07-09 12:46 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel, Arjan van de Ven


> (gdb) ####################################
> (gdb) # c0228ec3, stack size:  764 bytes #
> (gdb) ####################################
> (gdb) 0xc0228ec3 is in calc_mode_timings (drivers/video/fbmon.c:317).

fix below.

	Ingo

--

quick hack to remove a 764 bytes stack footprint from fbmon.c. Codepath 
is most likely serialized but with the semaphore it's for sure.

Signed-off-by: Ingo Molnar <mingo@elte.hu>

Index: linux/drivers/video/fbmon.c
===================================================================
--- linux.orig/drivers/video/fbmon.c
+++ linux/drivers/video/fbmon.c
@@ -315,9 +315,11 @@ static int edid_is_monitor_block(unsigne
 
 static void calc_mode_timings(int xres, int yres, int refresh, struct fb_videomode *mode)
 {
-	struct fb_var_screeninfo var;
-	struct fb_info info;
-	
+	static struct fb_var_screeninfo var;
+	static struct fb_info info;
+	static DECLARE_MUTEX(fb_lock);
+
+	down(&fb_lock);
 	var.xres = xres;
 	var.yres = yres;
 	fb_get_mode(FB_VSYNCTIMINGS | FB_IGNOREMON, 
@@ -334,6 +336,7 @@ static void calc_mode_timings(int xres, 
 	mode->vsync_len = var.vsync_len;
 	mode->vmode = 0;
 	mode->sync = 0;
+	up(&fb_lock);
 }
 
 static int get_est_timing(unsigned char *block, struct fb_videomode *mode)


^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-09 12:41                                               ` Ingo Molnar
  2005-07-09 12:46                                                 ` Ingo Molnar
@ 2005-07-09 13:05                                                 ` Ingo Molnar
  2005-07-11 22:48                                                   ` William Weston
  2005-07-09 13:13                                                 ` Ingo Molnar
                                                                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 101+ messages in thread
From: Ingo Molnar @ 2005-07-09 13:05 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel, Arjan van de Ven, David S. Miller


> (gdb) ####################################
> (gdb) # c02de0f3, stack size:  572 bytes #
> (gdb) ####################################
> (gdb) 0xc02de0f3 is in ip_setsockopt (net/ipv4/ip_sockglue.c:385).

----
this patch reduces ip_setsockopt's stack footprint from 572 bytes to 164 
bytes. (Note: needs review and testing as i could not excercise this 
multicast codepath.)

Signed-off-by: Ingo Molnar <mingo@elte.hu>

Index: linux/net/ipv4/ip_sockglue.c
===================================================================
--- linux.orig/net/ipv4/ip_sockglue.c
+++ linux/net/ipv4/ip_sockglue.c
@@ -691,52 +691,65 @@ int ip_setsockopt(struct sock *sk, int l
 		case MCAST_JOIN_GROUP:
 		case MCAST_LEAVE_GROUP: 
 		{
-			struct group_req greq;
+			struct group_req *greq;
 			struct sockaddr_in *psin;
 			struct ip_mreqn mreq;
 
+			err = -ENOMEM;
+			greq = kmalloc(sizeof(*greq), GFP_KERNEL);
+			if (!greq)
+				break;
 			if (optlen < sizeof(struct group_req))
-				goto e_inval;
+				goto free_greq_e_inval;
 			err = -EFAULT;
-			if(copy_from_user(&greq, optval, sizeof(greq)))
-				break;
-			psin = (struct sockaddr_in *)&greq.gr_group;
+			if(copy_from_user(greq, optval, sizeof(*greq)))
+				goto free_greq_break;
+			psin = (struct sockaddr_in *)&greq->gr_group;
 			if (psin->sin_family != AF_INET)
-				goto e_inval;
+				goto free_greq_e_inval;
 			memset(&mreq, 0, sizeof(mreq));
 			mreq.imr_multiaddr = psin->sin_addr;
-			mreq.imr_ifindex = greq.gr_interface;
+			mreq.imr_ifindex = greq->gr_interface;
 
 			if (optname == MCAST_JOIN_GROUP)
 				err = ip_mc_join_group(sk, &mreq);
 			else
 				err = ip_mc_leave_group(sk, &mreq);
+free_greq_break:
+			kfree(greq);
 			break;
+free_greq_e_inval:
+			kfree(greq);
+			goto e_inval;
 		}
 		case MCAST_JOIN_SOURCE_GROUP:
 		case MCAST_LEAVE_SOURCE_GROUP:
 		case MCAST_BLOCK_SOURCE:
 		case MCAST_UNBLOCK_SOURCE:
 		{
-			struct group_source_req greqs;
+			struct group_source_req *greqs;
 			struct ip_mreq_source mreqs;
 			struct sockaddr_in *psin;
 			int omode, add;
 
+			err = -ENOMEM;
+			greqs = kmalloc(sizeof(*greqs), GFP_KERNEL);
+			if (!greqs)
+				break;
 			if (optlen != sizeof(struct group_source_req))
-				goto e_inval;
-			if (copy_from_user(&greqs, optval, sizeof(greqs))) {
+				goto free_greqs_e_inval;
+			if (copy_from_user(&greqs, optval, sizeof(*greqs))) {
 				err = -EFAULT;
-				break;
+				goto free_greqs_break;
 			}
-			if (greqs.gsr_group.ss_family != AF_INET ||
-			    greqs.gsr_source.ss_family != AF_INET) {
+			if (greqs->gsr_group.ss_family != AF_INET ||
+			    greqs->gsr_source.ss_family != AF_INET) {
 				err = -EADDRNOTAVAIL;
-				break;
+				goto free_greqs_break;
 			}
-			psin = (struct sockaddr_in *)&greqs.gsr_group;
+			psin = (struct sockaddr_in *)&greqs->gsr_group;
 			mreqs.imr_multiaddr = psin->sin_addr.s_addr;
-			psin = (struct sockaddr_in *)&greqs.gsr_source;
+			psin = (struct sockaddr_in *)&greqs->gsr_source;
 			mreqs.imr_sourceaddr = psin->sin_addr.s_addr;
 			mreqs.imr_interface = 0; /* use index for mc_source */
 
@@ -749,14 +762,14 @@ int ip_setsockopt(struct sock *sk, int l
 			} else if (optname == MCAST_JOIN_SOURCE_GROUP) {
 				struct ip_mreqn mreq;
 
-				psin = (struct sockaddr_in *)&greqs.gsr_group;
+				psin = (struct sockaddr_in *)&greqs->gsr_group;
 				mreq.imr_multiaddr = psin->sin_addr;
 				mreq.imr_address.s_addr = 0;
-				mreq.imr_ifindex = greqs.gsr_interface;
+				mreq.imr_ifindex = greqs->gsr_interface;
 				err = ip_mc_join_group(sk, &mreq);
 				if (err)
-					break;
-				greqs.gsr_interface = mreq.imr_ifindex;
+					goto free_greqs_break;
+				greqs->gsr_interface = mreq.imr_ifindex;
 				omode = MCAST_INCLUDE;
 				add = 1;
 			} else /* MCAST_LEAVE_SOURCE_GROUP */ {
@@ -764,8 +777,13 @@ int ip_setsockopt(struct sock *sk, int l
 				add = 0;
 			}
 			err = ip_mc_source(add, omode, sk, &mreqs,
-				greqs.gsr_interface);
-			break;
+				greqs->gsr_interface);
+free_greqs_break:
+			kfree(greqs);
+			break;
+free_greqs_e_inval:
+			kfree(greqs);
+			goto e_inval;
 		}
 		case MCAST_MSFILTER:
 		{

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-09 12:41                                               ` Ingo Molnar
  2005-07-09 12:46                                                 ` Ingo Molnar
  2005-07-09 13:05                                                 ` Ingo Molnar
@ 2005-07-09 13:13                                                 ` Ingo Molnar
  2005-07-09 13:26                                                 ` Ingo Molnar
                                                                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 101+ messages in thread
From: Ingo Molnar @ 2005-07-09 13:13 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel, Arjan van de Ven, David S. Miller


> (gdb) ####################################
> (gdb) # c02decd6, stack size:  460 bytes #
> (gdb) ####################################
> (gdb) 0xc02decd6 is in ip_getsockopt (net/ipv4/ip_sockglue.c:877).

----
this patch reduces the stack footprint of ip_getsockopt() from 460 bytes 
to 188 bytes. (note: needs review & testing because i did not excercise 
this multicast codepath.)

Signed-off-by: Ingo Molnar <mingo@elte.hu>

Index: linux/net/ipv4/ip_sockglue.c
===================================================================
--- linux.orig/net/ipv4/ip_sockglue.c
+++ linux/net/ipv4/ip_sockglue.c
@@ -1006,20 +1024,28 @@ int ip_getsockopt(struct sock *sk, int l
 		}
 		case MCAST_MSFILTER:
 		{
-			struct group_filter gsf;
+			struct group_filter *gsf;
 			int err;
 
+			gsf = kmalloc(sizeof(*gsf), GFP_KERNEL);
+			if (!gsf) {
+				release_sock(sk);
+				return -ENOMEM;
+			}
 			if (len < GROUP_FILTER_SIZE(0)) {
 				release_sock(sk);
+				kfree(gsf);
 				return -EINVAL;
 			}
-			if (copy_from_user(&gsf, optval, GROUP_FILTER_SIZE(0))) {
+			if (copy_from_user(gsf, optval, GROUP_FILTER_SIZE(0))) {
 				release_sock(sk);
+				kfree(gsf);
 				return -EFAULT;
 			}
-			err = ip_mc_gsfget(sk, &gsf,
+			err = ip_mc_gsfget(sk, gsf,
 				(struct group_filter __user *)optval, optlen);
 			release_sock(sk);
+			kfree(gsf);
 			return err;
 		}
 		case IP_PKTOPTIONS:		

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-09 12:41                                               ` Ingo Molnar
                                                                   ` (2 preceding siblings ...)
  2005-07-09 13:13                                                 ` Ingo Molnar
@ 2005-07-09 13:26                                                 ` Ingo Molnar
  2005-07-10 19:01                                                   ` PCMCIA stack reduction patch [Was: Re: Realtime Preemption, 2.6.12, Beginners Guide?] Dominik Brodowski
  2005-07-09 13:36                                                 ` Realtime Preemption, 2.6.12, Beginners Guide? Ingo Molnar
  2005-07-11 13:28                                                 ` Paulo Marques
  5 siblings, 1 reply; 101+ messages in thread
From: Ingo Molnar @ 2005-07-09 13:26 UTC (permalink / raw)
  To: Alistair John Strachan
  Cc: linux-kernel, Arjan van de Ven, Dominik Brodowski, Andrew Morton


> (gdb) ####################################
> (gdb) # c02a0a26, stack size:  416 bytes #
> (gdb) ####################################
> (gdb) 0xc02a0a26 is in pcmcia_device_query (drivers/pcmcia/ds.c:436).

----
this patch reduces the stack footprint of pcmcia_device_query() from 416 
bytes to 36 bytes. (patch only build-tested)

Signed-off-by: Ingo Molnar <mingo@elte.hu>

Index: linux/drivers/pcmcia/ds.c
===================================================================
--- linux.orig/drivers/pcmcia/ds.c
+++ linux/drivers/pcmcia/ds.c
@@ -436,9 +436,13 @@ static int pcmcia_device_query(struct pc
 {
 	cistpl_manfid_t manf_id;
 	cistpl_funcid_t func_id;
-	cistpl_vers_1_t	vers1;
+	cistpl_vers_1_t	*vers1;
 	unsigned int i;
 
+	vers1 = kmalloc(sizeof(*vers1), GFP_KERNEL);
+	if (!vers1)
+		return -ENOMEM;
+
 	if (!pccard_read_tuple(p_dev->socket, p_dev->func,
 			       CISTPL_MANFID, &manf_id)) {
 		p_dev->manf_id = manf_id.manf;
@@ -455,23 +459,30 @@ static int pcmcia_device_query(struct pc
 		/* rule of thumb: cards with no FUNCID, but with
 		 * common memory device geometry information, are
 		 * probably memory cards (from pcmcia-cs) */
-		cistpl_device_geo_t devgeo;
+		cistpl_device_geo_t *devgeo;
+
+		devgeo = kmalloc(sizeof(*devgeo), GFP_KERNEL);
+		if (!devgeo) {
+			kfree(vers1);
+			return -ENOMEM;
+		}
 		if (!pccard_read_tuple(p_dev->socket, p_dev->func,
-				      CISTPL_DEVICE_GEO, &devgeo)) {
+				      CISTPL_DEVICE_GEO, devgeo)) {
 			ds_dbg(0, "mem device geometry probably means "
 			       "FUNCID_MEMORY\n");
 			p_dev->func_id = CISTPL_FUNCID_MEMORY;
 			p_dev->has_func_id = 1;
 		}
+		kfree(devgeo);
 	}
 
 	if (!pccard_read_tuple(p_dev->socket, p_dev->func, CISTPL_VERS_1,
-			       &vers1)) {
-		for (i=0; i < vers1.ns; i++) {
+			       vers1)) {
+		for (i=0; i < vers1->ns; i++) {
 			char *tmp;
 			unsigned int length;
 
-			tmp = vers1.str + vers1.ofs[i];
+			tmp = vers1->str + vers1->ofs[i];
 
 			length = strlen(tmp) + 1;
 			if ((length < 3) || (length > 255))
@@ -487,6 +498,7 @@ static int pcmcia_device_query(struct pc
 		}
 	}
 
+	kfree(vers1);
 	return 0;
 }
 
@@ -856,7 +868,9 @@ static int bind_request(struct pcmcia_bu
 rescan:
 	p_dev->cardmgr = p_drv;
 
-	pcmcia_device_query(p_dev);
+	ret = pcmcia_device_query(p_dev);
+	if (ret)
+		goto err_put_module;
 
 	/*
 	 * Prevent this racing with a card insertion.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-09 12:41                                               ` Ingo Molnar
                                                                   ` (3 preceding siblings ...)
  2005-07-09 13:26                                                 ` Ingo Molnar
@ 2005-07-09 13:36                                                 ` Ingo Molnar
  2005-07-11 13:28                                                 ` Paulo Marques
  5 siblings, 0 replies; 101+ messages in thread
From: Ingo Molnar @ 2005-07-09 13:36 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel, Arjan van de Ven, Alexander Viro


> (gdb) ####################################
> (gdb) # c0169503, stack size:  408 bytes #
> (gdb) ####################################
> (gdb) 0xc0169503 is in blkdev_get (fs/block_dev.c:663).

----
this patch reduces the stack footprint of blkdev_get() from 408 bytes to 
28 bytes. Build and boot-tested.

Signed-off-by: Ingo Molnar <mingo@elte.hu>

Index: linux/fs/block_dev.c
===================================================================
--- linux.orig/fs/block_dev.c
+++ linux/fs/block_dev.c
@@ -667,14 +667,32 @@ int blkdev_get(struct block_device *bdev
 	 * For now, block device ->open() routine must _not_
 	 * examine anything in 'inode' argument except ->i_rdev.
 	 */
-	struct file fake_file = {};
-	struct dentry fake_dentry = {};
-	fake_file.f_mode = mode;
-	fake_file.f_flags = flags;
-	fake_file.f_dentry = &fake_dentry;
-	fake_dentry.d_inode = bdev->bd_inode;
-
-	return do_open(bdev, &fake_file);
+	struct file *fake_file;
+	struct dentry *fake_dentry;
+	int err = -ENOMEM;
+
+	fake_file = kmalloc(sizeof(*fake_file), GFP_KERNEL);
+	if (!fake_file)
+		goto out;
+	memset(fake_file, 0, sizeof(*fake_file));
+
+	fake_dentry = kmalloc(sizeof(*fake_dentry), GFP_KERNEL);
+	if (!fake_dentry)
+		goto out_free_file;
+	memset(fake_dentry, 0, sizeof(*fake_dentry));
+
+	fake_file->f_mode = mode;
+	fake_file->f_flags = flags;
+	fake_file->f_dentry = fake_dentry;
+	fake_dentry->d_inode = bdev->bd_inode;
+
+	err = do_open(bdev, fake_file);
+
+	kfree(fake_dentry);
+out_free_file:
+	kfree(fake_file);
+out:
+	return err;
 }
 
 EXPORT_SYMBOL(blkdev_get);

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-09 11:58                                               ` Ingo Molnar
@ 2005-07-09 14:07                                                 ` Alistair John Strachan
  2005-07-09 14:55                                                   ` Ingo Molnar
  2005-07-09 15:57                                                   ` Ingo Molnar
  0 siblings, 2 replies; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-09 14:07 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

On Saturday 09 Jul 2005 12:58, Ingo Molnar wrote:
> * Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:
> > Got this (slightly better) oops. Figured out how to use my camera :-)
> >
> > http://devzero.co.uk/~alistair/oops6.jpeg
>
> this was a bit more useful - shows a softirq wakeup. Could you send me
> your vmlinux (bzip -9 compressed, via private mail), your gcc generates
> a slightly different code layout so i couldnt match up everything that
> might be useful.

Okay, I'll send you the vmlinux from -18 with a new digital photo, and config, 
with CONFIG_4KSTACKS enabled.

Do you want me to apply the patch blitz you just sent to the list before 
testing? Those are some impressive stack reductions, the 
ip_sockglue.c/blkdev_get() ones in combination look promising.

>
> > Onto your stack-footprint metric. I don't know what the number means,
> > but at a guess it's the size of the stack. Unfortunately, if this is
> > the case, it's unlikely to be an overflow causing the crash. Here's a
> > grep of dmesg just before the crash.
>
> it could still be near an overflow. To make sure i've changed the oops
> printout to also include the current stack left, and the worst-case
> stack-left value, and have uploaded the -51-18 kernel - could you try
> it? That way we can tell for sure. (note that the maximum-tracker can
> not always do an immediate printout of a worst-case - we have to skip
> printouts if irqs are disabled. [or we could recurse from within the
> scheduler or the printk code] Even in those cases we save the worst-case
> stack and print it out as soon as interrupts are enabled again. (The
> worst-case stack-left value printed out at oops time is immediate.)

I guess also, as you suggested elsewhere in this thread, I could try an 8K 
stacks kernel, let openvpn run (even just for 5 minutes, then close it) and 
see if I get a stack-footprint dump *for openvpn*, which so far I've not been 
able to observe.

Hopefully this would negate the possibility that there's a stack-footprint 
waiting to be generated, but just masked by the crash.

Is this actually useful to you?

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-09 14:07                                                 ` Alistair John Strachan
@ 2005-07-09 14:55                                                   ` Ingo Molnar
  2005-07-09 15:57                                                   ` Ingo Molnar
  1 sibling, 0 replies; 101+ messages in thread
From: Ingo Molnar @ 2005-07-09 14:55 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1448 bytes --]


* Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:

> I guess also, as you suggested elsewhere in this thread, I could try 
> an 8K stacks kernel, let openvpn run (even just for 5 minutes, then 
> close it) and see if I get a stack-footprint dump *for openvpn*, which 
> so far I've not been able to observe.
> 
> Hopefully this would negate the possibility that there's a 
> stack-footprint waiting to be generated, but just masked by the crash.

indeed, you are right. I think we can exclude the stack-overflow for 
now. (also, the likelyhood of it not being detected and printed in a 
safe manner as it happens is very low. We do a stack-overflow test for 
every function entered, and the threshold is 1024 bytes - more than the 
biggest (realistic) offenders could cause.)

> Is this actually useful to you?

yeah. You are triggering a type of crash that is hard to debug. Those 
are always important to track down, so that we can see whether the debug 
infrastructure can be improved to make the debugging process much 
quicker. Next time such a bug could be sporadic, making it close to
impossible to debug.

if you still have some debugging stamina left then i'd now suggest to 
try an 'all debugging options enabled' (including the enabling 
DEBUG_STACK_POISON in kernel/latency.c) run with the latest -51-20 
kernel. I've attached a .config with all the debug options set that may 
matter - it should be ready-to-use for you.

	Ingo

[-- Attachment #2: config2.bz2 --]
[-- Type: application/x-bzip2, Size: 8003 bytes --]

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-09 14:07                                                 ` Alistair John Strachan
  2005-07-09 14:55                                                   ` Ingo Molnar
@ 2005-07-09 15:57                                                   ` Ingo Molnar
  2005-07-09 16:02                                                     ` Ingo Molnar
  2005-07-09 16:04                                                     ` Alistair John Strachan
  1 sibling, 2 replies; 101+ messages in thread
From: Ingo Molnar @ 2005-07-09 15:57 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:

> Okay, I'll send you the vmlinux from -18 with a new digital photo, and 
> config, with CONFIG_4KSTACKS enabled.

this crash too seems to indicate trigger_softirqs()/wakeup_softirqd().  
Somewhere we somehow corrupt the stack and e.g. in oops7.jpg we return 
to 00c011ed. Note that it's a right-shifted address that could be one of 
these:

 c011ed50 t wakeup_softirqd
 c011ed80 t trigger_softirqs

but it looks pretty weird. DEBUG_STACK_POISON (and the full-debug 
.config i sent) could perhaps uncover other types of stack corruptions.

	Ingo

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-09 15:57                                                   ` Ingo Molnar
@ 2005-07-09 16:02                                                     ` Ingo Molnar
  2005-07-09 16:04                                                     ` Alistair John Strachan
  1 sibling, 0 replies; 101+ messages in thread
From: Ingo Molnar @ 2005-07-09 16:02 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Ingo Molnar <mingo@elte.hu> wrote:

>  c011ed50 t wakeup_softirqd
>  c011ed80 t trigger_softirqs
> 
> but it looks pretty weird. DEBUG_STACK_POISON (and the full-debug 
> .config i sent) could perhaps uncover other types of stack 
> corruptions.

there's one more pretty efficient debugging method:

  echo 1 > /proc/sys/kernel/trace_print_at_crash
  echo 1 > /proc/sys/kernel/trace_freerunning

and then upon oopses the kernel will print a full execution trace that 
led up to the crash. But this definitely needs a serial console to be 
usable, as the kernel will print out thousands of trace entries.

(also, since it seems your kernel crashes when trying to print out the 
stacktrace, you'd also have to move the print_traces(task) line within 
arch/i386/kernel/traps.c:show_trace() to the beginning of that 
function.)

	Ingo

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-09 15:57                                                   ` Ingo Molnar
  2005-07-09 16:02                                                     ` Ingo Molnar
@ 2005-07-09 16:04                                                     ` Alistair John Strachan
  2005-07-11 13:55                                                       ` Alistair John Strachan
  1 sibling, 1 reply; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-09 16:04 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

On Saturday 09 Jul 2005 16:57, Ingo Molnar wrote:
> * Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:
> > Okay, I'll send you the vmlinux from -18 with a new digital photo, and
> > config, with CONFIG_4KSTACKS enabled.
>
> this crash too seems to indicate trigger_softirqs()/wakeup_softirqd().
> Somewhere we somehow corrupt the stack and e.g. in oops7.jpg we return
> to 00c011ed. Note that it's a right-shifted address that could be one of
> these:
>
>  c011ed50 t wakeup_softirqd
>  c011ed80 t trigger_softirqs
>
> but it looks pretty weird. DEBUG_STACK_POISON (and the full-debug
> .config i sent) could perhaps uncover other types of stack corruptions.
>

You weren't kidding about the overhead from DEBUG_STACK_POISON. Unfortunately 
that config causes a triple fault randomly after boot. The machine doesn't 
crash, or oops, it just resets.

This problem has gone from bad to worse :-)

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* PCMCIA stack reduction patch [Was: Re: Realtime Preemption, 2.6.12, Beginners Guide?]
  2005-07-09 13:26                                                 ` Ingo Molnar
@ 2005-07-10 19:01                                                   ` Dominik Brodowski
  0 siblings, 0 replies; 101+ messages in thread
From: Dominik Brodowski @ 2005-07-10 19:01 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Alistair John Strachan, linux-kernel, Arjan van de Ven,
	Andrew Morton, linux-pcmcia

Hi,

On Sat, Jul 09, 2005 at 03:26:57PM +0200, Ingo Molnar wrote:
> 
> > (gdb) ####################################
> > (gdb) # c02a0a26, stack size:  416 bytes #
> > (gdb) ####################################
> > (gdb) 0xc02a0a26 is in pcmcia_device_query (drivers/pcmcia/ds.c:436).
> 
> ----
> this patch reduces the stack footprint of pcmcia_device_query() from 416 
> bytes to 36 bytes. (patch only build-tested)

Applied and tested, but without the final hunk.

> @@ -856,7 +868,9 @@ static int bind_request(struct pcmcia_bu
>  rescan:
>  	p_dev->cardmgr = p_drv;
>  
> -	pcmcia_device_query(p_dev);
> +	ret = pcmcia_device_query(p_dev);
> +	if (ret)
> +		goto err_put_module;
>  
>  	/*
>  	 * Prevent this racing with a card insertion.


We don't check the return value here for a reason.

Thanks,

	Dominik

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-09 12:41                                               ` Ingo Molnar
                                                                   ` (4 preceding siblings ...)
  2005-07-09 13:36                                                 ` Realtime Preemption, 2.6.12, Beginners Guide? Ingo Molnar
@ 2005-07-11 13:28                                                 ` Paulo Marques
  5 siblings, 0 replies; 101+ messages in thread
From: Paulo Marques @ 2005-07-11 13:28 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Alistair John Strachan, linux-kernel, Arjan van de Ven

[-- Attachment #1: Type: text/plain, Size: 1249 bytes --]

Ingo Molnar wrote:
> (gdb) ####################################
> (gdb) # c013ebf4, stack size:  388 bytes #
> (gdb) ####################################
> (gdb) 0xc013ebf4 is in __print_symbol (kernel/kallsyms.c:234).

The attached patch fixes this partially by reducing the stack usage by
128 bytes. Compile, boot and run tested and apparently it works fine.

I didn't want to use kmalloc's in there because this function is
probably called from very "hard" contexts (kernel OOPS, stack overflow
dumps, etc.).

The stack usage could be reduced even further (I can do a patch for this
if needed) by changing the function to receive a "prefix" and a "suffix"
string instead of a format string.

The function could then simply do:
    printk(prefix);
    printk(symbol);
    printk(address);
    if (module) printk(module name);
    printk(suffix);

This way it wouldn't need to allocate a buffer big enough for the whole
string, just for one symbol name (128 bytes).

This is a much more intrusive change however (there are ~65 callers that
would need changing), so I leave the decision to more experienced hackers :)

-- 
Paulo Marques - www.grupopie.com

It is a mistake to think you can solve any major problems
just with potatoes.
Douglas Adams

[-- Attachment #2: kallsyms_reduce_stack.patch --]
[-- Type: text/x-patch, Size: 1075 bytes --]

--- ./kernel/kallsyms.c.orig	2005-07-11 12:32:32.000000000 +0100
+++ ./kernel/kallsyms.c	2005-07-11 12:34:42.000000000 +0100
@@ -232,23 +232,21 @@ const char *kallsyms_lookup(unsigned lon
 /* Replace "%s" in format with address, or returns -errno. */
 void __print_symbol(const char *fmt, unsigned long address)
 {
-	char *modname;
+	char *modname, *bufend;
 	const char *name;
 	unsigned long offset, size;
-	char namebuf[KSYM_NAME_LEN+1];
 	char buffer[sizeof("%s+%#lx/%#lx [%s]") + KSYM_NAME_LEN +
 		    2*(BITS_PER_LONG*3/10) + MODULE_NAME_LEN + 1];

-	name = kallsyms_lookup(address, &size, &offset, &modname, namebuf);
+	name = kallsyms_lookup(address, &size, &offset, &modname, buffer);

 	if (!name)
 		sprintf(buffer, "0x%lx", address);
 	else {
+		bufend = strchr(buffer, '\0');
+		bufend += sprintf(bufend, "+%#lx/%#lx", offset, size);
 		if (modname)
-			sprintf(buffer, "%s+%#lx/%#lx [%s]", name, offset,
-				size, modname);
-		else
-			sprintf(buffer, "%s+%#lx/%#lx", name, offset, size);
+			sprintf(bufend, " [%s]", modname);
 	}
 	printk(fmt, buffer);
 }


^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-09 16:04                                                     ` Alistair John Strachan
@ 2005-07-11 13:55                                                       ` Alistair John Strachan
  2005-07-11 14:12                                                         ` Ingo Molnar
  0 siblings, 1 reply; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-11 13:55 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

On Saturday 09 Jul 2005 17:04, Alistair John Strachan wrote:
> On Saturday 09 Jul 2005 16:57, Ingo Molnar wrote:
> > * Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:
> > > Okay, I'll send you the vmlinux from -18 with a new digital photo, and
> > > config, with CONFIG_4KSTACKS enabled.
> >
> > this crash too seems to indicate trigger_softirqs()/wakeup_softirqd().
> > Somewhere we somehow corrupt the stack and e.g. in oops7.jpg we return
> > to 00c011ed. Note that it's a right-shifted address that could be one of
> > these:
> >
> >  c011ed50 t wakeup_softirqd
> >  c011ed80 t trigger_softirqs
> >
> > but it looks pretty weird. DEBUG_STACK_POISON (and the full-debug
> > .config i sent) could perhaps uncover other types of stack corruptions.
>
> You weren't kidding about the overhead from DEBUG_STACK_POISON.
> Unfortunately that config causes a triple fault randomly after boot. The
> machine doesn't crash, or oops, it just resets.
>
> This problem has gone from bad to worse :-)

Okay, maybe not. Some combination of the debug options you enabled causes this 
problem, but DEBUG_STACK_POISON itself is not the cause. Today I compiled Yet 
Another (tm) CONFIG_4KSTACKS kernel with DEBUG_STACK_POISON, 
CONFIG_DEBUG_STACKOVERFLOW and CONFIG_LATENCY_TRACE, which worked fine (from 
a random reboot perspective).

I've also upgraded GCC to 4.0.1 as Jakub highlighted elsewhere in this thread 
that it had been released.

Here's a screenshot of the oops. Notice that "stack left" is now -52. We've 
confirmed this is a stack overflow!

http://devzero.co.uk/~alistair/oops8.jpeg

I'm going to try the 8K stack kernel with the same stuff and see if I can get 
a stack trace. I hope this is the beginning of the end for this problem.

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-11 13:55                                                       ` Alistair John Strachan
@ 2005-07-11 14:12                                                         ` Ingo Molnar
  2005-07-11 14:16                                                           ` Ingo Molnar
  0 siblings, 1 reply; 101+ messages in thread
From: Ingo Molnar @ 2005-07-11 14:12 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:

> Here's a screenshot of the oops. Notice that "stack left" is now -52. 
> We've confirmed this is a stack overflow!
> 
> http://devzero.co.uk/~alistair/oops8.jpeg
> 
> I'm going to try the 8K stack kernel with the same stuff and see if I 
> can get a stack trace. I hope this is the beginning of the end for 
> this problem.

might be an incorrect printout of stack_left :( The esp looks more or 
less normal. Not sure why it printed -52.

	Ingo

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-11 14:12                                                         ` Ingo Molnar
@ 2005-07-11 14:16                                                           ` Ingo Molnar
  2005-07-11 14:38                                                             ` Alistair John Strachan
  2005-07-11 15:07                                                             ` Ingo Molnar
  0 siblings, 2 replies; 101+ messages in thread
From: Ingo Molnar @ 2005-07-11 14:16 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Ingo Molnar <mingo@elte.hu> wrote:

> might be an incorrect printout of stack_left :( The esp looks more or 
> less normal. Not sure why it printed -52.

here's the stack_left calculation:

+       printk("ds: %04x   es: %04x   ss: %04x   preempt: %08x\n",
+               regs->xds & 0xffff, regs->xes & 0xffff, ss, preempt_count());
+       printk("Process %s (pid: %d, threadinfo=%p task=%p stack_left=%ld worst_left=%ld)",
+               current->comm, current->pid, current_thread_info(), current,
+               (regs->esp & (THREAD_SIZE-1))-sizeof(struct thread_info),
+               worst_stack_left);

i cannot see anything wrong in it, but your esp is 0xc04cded0, 
THREAD_SIZE-1 is 0xfff, so the result should be:

	0xed0-sizeof(struct thread_info).

which should not be -52.

	Ingo

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-11 14:16                                                           ` Ingo Molnar
@ 2005-07-11 14:38                                                             ` Alistair John Strachan
  2005-07-11 14:43                                                               ` Ingo Molnar
  2005-07-12  2:56                                                               ` Lee Revell
  2005-07-11 15:07                                                             ` Ingo Molnar
  1 sibling, 2 replies; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-11 14:38 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

On Monday 11 Jul 2005 15:16, Ingo Molnar wrote:
> * Ingo Molnar <mingo@elte.hu> wrote:
> > might be an incorrect printout of stack_left :( The esp looks more or
> > less normal. Not sure why it printed -52.
>
> here's the stack_left calculation:
>
> +       printk("ds: %04x   es: %04x   ss: %04x   preempt: %08x\n",
> +               regs->xds & 0xffff, regs->xes & 0xffff, ss,
> preempt_count()); +       printk("Process %s (pid: %d, threadinfo=%p
> task=%p stack_left=%ld worst_left=%ld)", +               current->comm,
> current->pid, current_thread_info(), current, +               (regs->esp &
> (THREAD_SIZE-1))-sizeof(struct thread_info), +              
> worst_stack_left);
>
> i cannot see anything wrong in it, but your esp is 0xc04cded0,
> THREAD_SIZE-1 is 0xfff, so the result should be:
>
> 	0xed0-sizeof(struct thread_info).
>
> which should not be -52.

Actually, it's now pretty much confirmed that this ISN'T a stack overflow, not 
just because of what you've said (now and before), but also because I've 
tried an 8K stacks kernel and, sadly, there's no stand-out stack abusers.

It's annoying that this is so readily reproducible here, yet almost impossible 
to debug, and clearly a sideaffect of 4KSTACKS.. without it actually being a 
stack overflow.

I realise 4KSTACKS is a considerable rework of the IRQ handler, etc. and 
probably even more heavily modified by rt-preempt, but is there nothing else 
that can be tested before a serial console run?

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-11 14:38                                                             ` Alistair John Strachan
@ 2005-07-11 14:43                                                               ` Ingo Molnar
  2005-07-11 15:50                                                                 ` Alistair John Strachan
  2005-07-12  2:56                                                               ` Lee Revell
  1 sibling, 1 reply; 101+ messages in thread
From: Ingo Molnar @ 2005-07-11 14:43 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:

> It's annoying that this is so readily reproducible here, yet almost 
> impossible to debug, and clearly a sideaffect of 4KSTACKS.. without it 
> actually being a stack overflow.
> 
> I realise 4KSTACKS is a considerable rework of the IRQ handler, etc.  
> and probably even more heavily modified by rt-preempt, but is there 
> nothing else that can be tested before a serial console run?

4K stacks never really caused any trouble under PREEMPT_RT (or any other 
kernel i tried). It's not that complex either.

one useful thing could be to give me exact instructions on how to set up 
an openvpn network similar to yours, and what kind of workload to 
generate. Maybe i can reproduce it here.

	Ingo

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-11 14:16                                                           ` Ingo Molnar
  2005-07-11 14:38                                                             ` Alistair John Strachan
@ 2005-07-11 15:07                                                             ` Ingo Molnar
  2005-07-12 20:09                                                               ` Lee Revell
  1 sibling, 1 reply; 101+ messages in thread
From: Ingo Molnar @ 2005-07-11 15:07 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Ingo Molnar <mingo@elte.hu> wrote:

> > might be an incorrect printout of stack_left :( The esp looks more or 
> > less normal. Not sure why it printed -52.
> 
> here's the stack_left calculation:
> 
> +       printk("ds: %04x   es: %04x   ss: %04x   preempt: %08x\n",
> +               regs->xds & 0xffff, regs->xes & 0xffff, ss, preempt_count());
> +       printk("Process %s (pid: %d, threadinfo=%p task=%p stack_left=%ld worst_left=%ld)",
> +               current->comm, current->pid, current_thread_info(), current,
> +               (regs->esp & (THREAD_SIZE-1))-sizeof(struct thread_info),
> +               worst_stack_left);
> 
> i cannot see anything wrong in it, [...]

that should be "esp", not "regs->esp". regs->esp is something different 
upon in-kernel faults. I've uploaded -27 with the fix - but it should 
only confirm that it's not a stack overflow.

	Ingo

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-11 14:43                                                               ` Ingo Molnar
@ 2005-07-11 15:50                                                                 ` Alistair John Strachan
  2005-07-13 14:45                                                                   ` Ingo Molnar
  0 siblings, 1 reply; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-11 15:50 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 4706 bytes --]

On Monday 11 Jul 2005 15:43, Ingo Molnar wrote:
> * Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:
> > It's annoying that this is so readily reproducible here, yet almost
> > impossible to debug, and clearly a sideaffect of 4KSTACKS.. without it
> > actually being a stack overflow.
> >
> > I realise 4KSTACKS is a considerable rework of the IRQ handler, etc.
> > and probably even more heavily modified by rt-preempt, but is there
> > nothing else that can be tested before a serial console run?
>
> 4K stacks never really caused any trouble under PREEMPT_RT (or any other
> kernel i tried). It's not that complex either.
>
> one useful thing could be to give me exact instructions on how to set up
> an openvpn network similar to yours, and what kind of workload to
> generate. Maybe i can reproduce it here.

OpenVPN isn't terribly difficult to set up, but it's more than a 5 minute job. 
You'll need universal tun/tap in your kernel before you start, and openvpn 
itself installed (I've compiled from source and used Debian's 2.0.0 package, 
I'm sure Red Hat has an equivalent), then it's just a case of setting up a 
client and a server.

If you like, I can generate the "keys" used for server/client and I've 
attached the configs for the server and the client they we use here. 
Obviously for security reasons I can't attach OUR keys verbatim, but I'll 
instruct you on how to generate them.

So, on the server:

a) Install OpenVPN
b) mkdir -p /etc/openvpn/keys
c) Copy attached server.conf to /etc/openvpn
d) Modify server.conf if necessary (shouldn't be required)
e) Generate your server and client keys (see below)

This mostly repeats the moderately good documentation on 
http://openvpn.net/howto.html, but I can't expect you to read it all so I'll 
give you a bite-sized version. It saves you figuring out the same rubbish I 
had to about 6 months ago. OpenVPN will create (with my configs) a verbose 
log in /etc/openvpn/log on both machines.

1) cd /usr/share/doc/openvpn/easy-rsa

2) Edit "vars". Change line export KEY_DIR=... to:

	export KEY_DIR=/etc/openvpn/keys

3) Save and exit

4) On Bash (at least) type

	. ./vars

	Which imports "vars" into your environment.

5) ./clean-all

6) ./build-ca (enter any old crap)

7) ./build-key-server server

	Enter the common-name as "server" again. No password.

8) Finally, generate the client key (used by the client for crypto)

	./build-key client1

	Where "client1" is an arbitrary name. When prompted for "common-name", enter
	the same string; this is important and I was head-scratching for some time
	as to why it wouldn't work without this... Again no password.

8) ./build-dh (this takes a while)

With that done, /etc/openvpn/keys should contain at least..

01.pem
ca.{crt,key}
dh1024.pem
server.{crt,csr,key}
client1.{crt,csr,key}

Plus some other cruft that's probably not required. Now you should be able to 
start the openvpn server with something like..

openvpn --cd /etc/openvpn --config server.conf

Add some other flags like verbose if you want to see what's happening. 
Remember it's logging everything to /etc/openvpn/log which you can supress by 
commenting out the logfile line in the config.

It'll bring up a tun device on the server side, and wait patiently for VPN 
connections.

The client side is a piece of cake.

1) mkdir /etc/openvpn

2) Copy client1.crt, client1.key, and ca.crt from the server's /etc/openvpn 
directory to the client's /etc/openvpn directory.

3) Copy the attached client.conf to the same directory.

4) Edit the config as necessary and save (should work with only the server IP 
changes).

Again, the client machine will need to have the universal tun/tap driver 
loaded. Bring up the openvpn with:

openvpn --cd /etc/openvpn --config client.conf

A connection should be established and, hopefully, you'll get a pingable route 
to 10.0.0.1. I then made this my default gateway with:

route del default wlan
route add default tun0

Then I was able to ping machines on the server side without having a local 
gateway to them. One working VPN.

I suggest you try all this on a "stable" kernel, and once you've established 
it works, just transfer a file at a reasonable data rate through the tunnel.

Ours links to a company server with a consumer grade 1Mbit ADSL connection, 
and transferring just about anything at 110K/s causes the kernel to crash 
within about 10 seconds.

I wish you the best of luck with getting this going, and I apologise in 
advance for the poor instructions.

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

[-- Attachment #2: client.conf --]
[-- Type: text/plain, Size: 200 bytes --]

client
remote 192.168.99.1 443

ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server

dev tun
proto udp
nobind
user nobody
group nobody

persist-key
persist-tun

log /etc/openvpn/log
verb 3

[-- Attachment #3: server.conf --]
[-- Type: text/plain, Size: 358 bytes --]

server 10.0.0.0 255.255.255.0
port 443

ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh1024.pem

dev tun
proto udp
user nobody
group nogroup

persist-key
persist-tun
ifconfig-pool-persist ipp

log /etc/openvpn/log
verb 3

client-to-client
push "redirect-gateway def1"
push "dhcp-option DNS 192.168.1.1"
push "dhcp-option WINS 192.168.1.2"

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-09 13:05                                                 ` Ingo Molnar
@ 2005-07-11 22:48                                                   ` William Weston
  2005-07-12 13:53                                                     ` Ingo Molnar
  0 siblings, 1 reply; 101+ messages in thread
From: William Weston @ 2005-07-11 22:48 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Alistair John Strachan, linux-kernel, Arjan van de Ven, David S. Miller

On Sat, 9 Jul 2005, Ingo Molnar wrote:

> this patch reduces ip_setsockopt's stack footprint from 572 bytes to 164 
> bytes. (Note: needs review and testing as i could not excercise this 
> multicast codepath.)

This patch breaks multicast source group joins.  Here's the fix:

--- linux.old/net/ipv4/ip_sockglue.c	2005-07-11 01:50:19.000000000 -0700
+++ linux/net/ipv4/ip_sockglue.c	2005-07-11 13:54:34.000000000 -0700
@@ -738,7 +738,7 @@
 				break;
 			if (optlen != sizeof(struct group_source_req))
 				goto free_greqs_e_inval;
-			if (copy_from_user(&greqs, optval, sizeof(*greqs))) {
+			if (copy_from_user(greqs, optval, sizeof(*greqs))) {
 				err = -EFAULT;
 				goto free_greqs_break;
 			}

Cheers,
--ww

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-11 14:38                                                             ` Alistair John Strachan
  2005-07-11 14:43                                                               ` Ingo Molnar
@ 2005-07-12  2:56                                                               ` Lee Revell
  1 sibling, 0 replies; 101+ messages in thread
From: Lee Revell @ 2005-07-12  2:56 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: Ingo Molnar, linux-kernel

On Mon, 2005-07-11 at 15:38 +0100, Alistair John Strachan wrote:
> I realise 4KSTACKS is a considerable rework of the IRQ handler, etc. and 
> probably even more heavily modified by rt-preempt, but is there nothing else 
> that can be tested before a serial console run?
> 

Well, netconsole is a lot quicker to set up than serial, but AIUI can
fail in some cases where serial console succeeds.

Lee 


^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-11 22:48                                                   ` William Weston
@ 2005-07-12 13:53                                                     ` Ingo Molnar
  0 siblings, 0 replies; 101+ messages in thread
From: Ingo Molnar @ 2005-07-12 13:53 UTC (permalink / raw)
  To: William Weston
  Cc: Alistair John Strachan, linux-kernel, Arjan van de Ven, David S. Miller


* William Weston <weston@sysex.net> wrote:

> On Sat, 9 Jul 2005, Ingo Molnar wrote:
> 
> > this patch reduces ip_setsockopt's stack footprint from 572 bytes to 164 
> > bytes. (Note: needs review and testing as i could not excercise this 
> > multicast codepath.)
> 
> This patch breaks multicast source group joins.  Here's the fix:

ouch - indeed, thanks.

	Ingo

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-11 15:07                                                             ` Ingo Molnar
@ 2005-07-12 20:09                                                               ` Lee Revell
  2005-07-12 21:01                                                                 ` Chuck Harding
  0 siblings, 1 reply; 101+ messages in thread
From: Lee Revell @ 2005-07-12 20:09 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Alistair John Strachan, linux-kernel

On Mon, 2005-07-11 at 17:07 +0200, Ingo Molnar wrote:
> I've uploaded -27 with the fix - but it should 
> only confirm that it's not a stack overflow.

V0.7.51-28 does not compile:

  CC [M]  sound/oss/emu10k1/midi.o
sound/oss/emu10k1/midi.c:48: error: syntax error before '__attribute__'
sound/oss/emu10k1/midi.c:48: error: syntax error before ')' token

Here's the offending line:

    48 static DEFINE_SPINLOCK(midi_spinlock __attribute((unused)));

Lee



^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-12 20:09                                                               ` Lee Revell
@ 2005-07-12 21:01                                                                 ` Chuck Harding
  2005-07-13 10:39                                                                   ` Ingo Molnar
  0 siblings, 1 reply; 101+ messages in thread
From: Chuck Harding @ 2005-07-12 21:01 UTC (permalink / raw)
  To: Linux Kernel Discussion List; +Cc: Ingo Molnar

[-- Attachment #1: Type: TEXT/PLAIN, Size: 1020 bytes --]

On Tue, 12 Jul 2005, Lee Revell wrote:

> On Mon, 2005-07-11 at 17:07 +0200, Ingo Molnar wrote:
>> I've uploaded -27 with the fix - but it should
>> only confirm that it's not a stack overflow.
>
> V0.7.51-28 does not compile:
>
>  CC [M]  sound/oss/emu10k1/midi.o
> sound/oss/emu10k1/midi.c:48: error: syntax error before '__attribute__'
> sound/oss/emu10k1/midi.c:48: error: syntax error before ')' token
>
> Here's the offending line:
>
>    48 static DEFINE_SPINLOCK(midi_spinlock __attribute((unused)));
>
> Lee
>

I got it to compile but it won't boot - it hangs right after the
'Uncompressing Linux... OK, booting the kernel' - I'm using .config
from 51-27 (attached)

-- 
Charles D. (Chuck) Harding <charding@llnl.gov>  Voice: 925-423-8879
Senior Computer Associate         ICCD            Fax: 925-423-6961
Lawrence Livermore National Laboratory      Computation Directorate
Livermore, CA USA  http://www.llnl.gov  GPG Public Key ID: B9EB6601
------------------ http://tinyurl.com/5w5ey -----------------------

[-- Attachment #2: -RT-V0.7.51-28 config file --]
[-- Type: TEXT/PLAIN, Size: 32780 bytes --]

#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.12-RT-V0.7.51-28
# Tue Jul 12 12:18:43 2005
#
CONFIG_X86=y
CONFIG_MMU=y
CONFIG_UID16=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=y

#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
CONFIG_CLEAN_COMPILE=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32

#
# General setup
#
CONFIG_LOCALVERSION=""
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_POSIX_MQUEUE=y
CONFIG_BSD_PROCESS_ACCT=y
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
CONFIG_SYSCTL=y
CONFIG_AUDIT=y
CONFIG_AUDITSYSCALL=y
CONFIG_HOTPLUG=y
CONFIG_KOBJECT_UEVENT=y
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
# CONFIG_EMBEDDED is not set
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
CONFIG_KALLSYMS_EXTRA_PASS=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_SHMEM=y
CONFIG_CC_ALIGN_FUNCTIONS=0
CONFIG_CC_ALIGN_LABELS=0
CONFIG_CC_ALIGN_LOOPS=0
CONFIG_CC_ALIGN_JUMPS=0
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0

#
# Loadable module support
#
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
# CONFIG_MODULE_FORCE_UNLOAD is not set
CONFIG_OBSOLETE_MODPARM=y
CONFIG_MODVERSIONS=y
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_KMOD=y

#
# Processor type and features
#
CONFIG_X86_PC=y
# CONFIG_X86_ELAN is not set
# CONFIG_X86_VOYAGER is not set
# CONFIG_X86_NUMAQ is not set
# CONFIG_X86_SUMMIT is not set
# CONFIG_X86_BIGSMP is not set
# CONFIG_X86_VISWS is not set
# CONFIG_X86_GENERICARCH is not set
# CONFIG_X86_ES7000 is not set
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
# CONFIG_M686 is not set
# CONFIG_MPENTIUMII is not set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUMM is not set
CONFIG_MPENTIUM4=y
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
# CONFIG_MK8 is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MEFFICEON is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP2 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MGEODEGX1 is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
CONFIG_X86_GENERIC=y
CONFIG_X86_CMPXCHG=y
CONFIG_X86_XADD=y
CONFIG_X86_L1_CACHE_SHIFT=7
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_BSWAP=y
CONFIG_X86_POPAD_OK=y
CONFIG_X86_GOOD_APIC=y
CONFIG_X86_INTEL_USERCOPY=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_HPET_TIMER=y
CONFIG_HPET_EMULATE_RTC=y
# CONFIG_SMP is not set
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT_DESKTOP is not set
CONFIG_PREEMPT_RT=y
CONFIG_PREEMPT=y
CONFIG_PREEMPT_SOFTIRQS=y
CONFIG_PREEMPT_HARDIRQS=y
CONFIG_PREEMPT_RCU=y
CONFIG_PREEMPT_BKL=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
CONFIG_ASM_SEMAPHORES=y
CONFIG_X86_UP_APIC=y
CONFIG_X86_UP_IOAPIC=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_IOAPIC_FAST=y
CONFIG_X86_TSC=y
CONFIG_X86_MCE=y
CONFIG_X86_MCE_NONFATAL=y
CONFIG_X86_MCE_P4THERMAL=y
# CONFIG_TOSHIBA is not set
# CONFIG_I8K is not set
# CONFIG_X86_REBOOTFIXUPS is not set
CONFIG_MICROCODE=m
CONFIG_X86_MSR=m
CONFIG_X86_CPUID=m

#
# Firmware Drivers
#
CONFIG_EDD=m
# CONFIG_NOHIGHMEM is not set
CONFIG_HIGHMEM4G=y
# CONFIG_HIGHMEM64G is not set
CONFIG_HIGHMEM=y
CONFIG_HIGHPTE=y
# CONFIG_MATH_EMULATION is not set
CONFIG_MTRR=y
# CONFIG_EFI is not set
CONFIG_HAVE_DEC_LOCK=y
CONFIG_REGPARM=y
CONFIG_SECCOMP=y

#
# Power management options (ACPI, APM)
#
CONFIG_PM=y
# CONFIG_PM_DEBUG is not set
# CONFIG_SOFTWARE_SUSPEND is not set

#
# ACPI (Advanced Configuration and Power Interface) Support
#
CONFIG_ACPI=y
CONFIG_ACPI_BOOT=y
CONFIG_ACPI_INTERPRETER=y
CONFIG_ACPI_SLEEP=y
CONFIG_ACPI_SLEEP_PROC_FS=y
# CONFIG_ACPI_AC is not set
# CONFIG_ACPI_BATTERY is not set
CONFIG_ACPI_BUTTON=y
CONFIG_ACPI_VIDEO=y
CONFIG_ACPI_FAN=y
CONFIG_ACPI_PROCESSOR=y
CONFIG_ACPI_THERMAL=y
# CONFIG_ACPI_ASUS is not set
# CONFIG_ACPI_IBM is not set
# CONFIG_ACPI_TOSHIBA is not set
CONFIG_ACPI_BLACKLIST_YEAR=2001
# CONFIG_ACPI_DEBUG is not set
CONFIG_ACPI_BUS=y
CONFIG_ACPI_EC=y
CONFIG_ACPI_POWER=y
CONFIG_ACPI_PCI=y
CONFIG_ACPI_SYSTEM=y
CONFIG_X86_PM_TIMER=y
# CONFIG_ACPI_CONTAINER is not set

#
# APM (Advanced Power Management) BIOS Support
#
# CONFIG_APM is not set

#
# CPU Frequency scaling
#
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=y
# CONFIG_CPU_FREQ_DEBUG is not set
CONFIG_CPU_FREQ_STAT=y
# CONFIG_CPU_FREQ_STAT_DETAILS is not set
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m

#
# CPUFreq processor drivers
#
CONFIG_X86_ACPI_CPUFREQ=y
# CONFIG_X86_POWERNOW_K6 is not set
# CONFIG_X86_POWERNOW_K7 is not set
# CONFIG_X86_POWERNOW_K8 is not set
# CONFIG_X86_GX_SUSPMOD is not set
CONFIG_X86_SPEEDSTEP_CENTRINO=y
CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI=y
CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y
CONFIG_X86_SPEEDSTEP_ICH=y
CONFIG_X86_SPEEDSTEP_SMI=y
CONFIG_X86_P4_CLOCKMOD=y
# CONFIG_X86_CPUFREQ_NFORCE2 is not set
# CONFIG_X86_LONGRUN is not set
# CONFIG_X86_LONGHAUL is not set

#
# shared options
#
# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set
CONFIG_X86_SPEEDSTEP_LIB=y
# CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK is not set

#
# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
#
CONFIG_PCI=y
# CONFIG_PCI_GOBIOS is not set
# CONFIG_PCI_GOMMCONFIG is not set
# CONFIG_PCI_GODIRECT is not set
CONFIG_PCI_GOANY=y
CONFIG_PCI_BIOS=y
CONFIG_PCI_DIRECT=y
CONFIG_PCI_MMCONFIG=y
# CONFIG_PCIEPORTBUS is not set
# CONFIG_PCI_MSI is not set
CONFIG_PCI_LEGACY_PROC=y
# CONFIG_PCI_NAMES is not set
# CONFIG_PCI_DEBUG is not set
CONFIG_ISA_DMA_API=y
# CONFIG_ISA is not set
# CONFIG_MCA is not set
# CONFIG_SCx200 is not set

#
# PCCARD (PCMCIA/CardBus) support
#
# CONFIG_PCCARD is not set

#
# PCI Hotplug Support
#
# CONFIG_HOTPLUG_PCI is not set

#
# Executable file formats
#
CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_AOUT=m
CONFIG_BINFMT_MISC=y

#
# Device Drivers
#

#
# Generic Driver Options
#
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=m
# CONFIG_DEBUG_DRIVER is not set

#
# Memory Technology Devices (MTD)
#
CONFIG_MTD=m
# CONFIG_MTD_DEBUG is not set
# CONFIG_MTD_CONCAT is not set
# CONFIG_MTD_PARTITIONS is not set

#
# User Modules And Translation Layers
#
# CONFIG_MTD_CHAR is not set
# CONFIG_MTD_BLOCK is not set
# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
# CONFIG_INFTL is not set

#
# RAM/ROM/Flash chip drivers
#
# CONFIG_MTD_CFI is not set
# CONFIG_MTD_JEDECPROBE is not set
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
CONFIG_MTD_MAP_BANK_WIDTH_4=y
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_CFI_I4 is not set
# CONFIG_MTD_CFI_I8 is not set
# CONFIG_MTD_RAM is not set
# CONFIG_MTD_ROM is not set
# CONFIG_MTD_ABSENT is not set

#
# Mapping drivers for chip access
#
# CONFIG_MTD_COMPLEX_MAPPINGS is not set

#
# Self-contained MTD device drivers
#
# CONFIG_MTD_PMC551 is not set
# CONFIG_MTD_SLRAM is not set
# CONFIG_MTD_PHRAM is not set
# CONFIG_MTD_MTDRAM is not set
# CONFIG_MTD_BLKMTD is not set
# CONFIG_MTD_BLOCK2MTD is not set

#
# Disk-On-Chip Device Drivers
#
# CONFIG_MTD_DOC2000 is not set
# CONFIG_MTD_DOC2001 is not set
# CONFIG_MTD_DOC2001PLUS is not set

#
# NAND Flash Device Drivers
#
# CONFIG_MTD_NAND is not set

#
# Parallel port support
#
CONFIG_PARPORT=m
CONFIG_PARPORT_PC=m
CONFIG_PARPORT_SERIAL=m
# CONFIG_PARPORT_PC_FIFO is not set
# CONFIG_PARPORT_PC_SUPERIO is not set
# CONFIG_PARPORT_GSC is not set
CONFIG_PARPORT_1284=y

#
# Plug and Play support
#
# CONFIG_PNP is not set

#
# Block devices
#
# CONFIG_BLK_DEV_FD is not set
# CONFIG_PARIDE is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
CONFIG_BLK_DEV_CRYPTOLOOP=m
CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_SX8 is not set
# CONFIG_BLK_DEV_UB is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=16384
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_LBD=y
# CONFIG_CDROM_PKTCDVD is not set

#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
# CONFIG_ATA_OVER_ETH is not set

#
# ATA/ATAPI/MFM/RLL support
#
CONFIG_IDE=y
CONFIG_BLK_DEV_IDE=y

#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_IDE_SATA is not set
# CONFIG_BLK_DEV_HD_IDE is not set
CONFIG_BLK_DEV_IDEDISK=y
CONFIG_IDEDISK_MULTI_MODE=y
CONFIG_BLK_DEV_IDECD=y
# CONFIG_BLK_DEV_IDETAPE is not set
CONFIG_BLK_DEV_IDEFLOPPY=y
# CONFIG_IDE_TASK_IOCTL is not set

#
# IDE chipset support/bugfixes
#
CONFIG_IDE_GENERIC=y
# CONFIG_BLK_DEV_CMD640 is not set
CONFIG_BLK_DEV_IDEPCI=y
CONFIG_IDEPCI_SHARE_IRQ=y
# CONFIG_BLK_DEV_OFFBOARD is not set
CONFIG_BLK_DEV_GENERIC=y
# CONFIG_BLK_DEV_OPTI621 is not set
# CONFIG_BLK_DEV_RZ1000 is not set
CONFIG_BLK_DEV_IDEDMA_PCI=y
# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
CONFIG_IDEDMA_PCI_AUTO=y
# CONFIG_IDEDMA_ONLYDISK is not set
# CONFIG_BLK_DEV_AEC62XX is not set
# CONFIG_BLK_DEV_ALI15X3 is not set
# CONFIG_BLK_DEV_AMD74XX is not set
# CONFIG_BLK_DEV_ATIIXP is not set
# CONFIG_BLK_DEV_CMD64X is not set
# CONFIG_BLK_DEV_TRIFLEX is not set
# CONFIG_BLK_DEV_CY82C693 is not set
# CONFIG_BLK_DEV_CS5520 is not set
# CONFIG_BLK_DEV_CS5530 is not set
# CONFIG_BLK_DEV_HPT34X is not set
# CONFIG_BLK_DEV_HPT366 is not set
# CONFIG_BLK_DEV_SC1200 is not set
CONFIG_BLK_DEV_PIIX=y
# CONFIG_BLK_DEV_NS87415 is not set
# CONFIG_BLK_DEV_PDC202XX_OLD is not set
# CONFIG_BLK_DEV_PDC202XX_NEW is not set
# CONFIG_BLK_DEV_SVWKS is not set
# CONFIG_BLK_DEV_SIIMAGE is not set
# CONFIG_BLK_DEV_SIS5513 is not set
# CONFIG_BLK_DEV_SLC90E66 is not set
# CONFIG_BLK_DEV_TRM290 is not set
# CONFIG_BLK_DEV_VIA82CXXX is not set
# CONFIG_IDE_ARM is not set
CONFIG_BLK_DEV_IDEDMA=y
# CONFIG_IDEDMA_IVB is not set
CONFIG_IDEDMA_AUTO=y
# CONFIG_BLK_DEV_HD is not set

#
# SCSI device support
#
# CONFIG_SCSI is not set

#
# Multi-device support (RAID and LVM)
#
# CONFIG_MD is not set

#
# Fusion MPT device support
#

#
# IEEE 1394 (FireWire) support
#
# CONFIG_IEEE1394 is not set

#
# I2O device support
#
# CONFIG_I2O is not set

#
# Networking support
#
CONFIG_NET=y

#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
CONFIG_NET_KEY=m
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_ROUTE_FWMARK=y
CONFIG_IP_ROUTE_MULTIPATH=y
# CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set
CONFIG_IP_ROUTE_VERBOSE=y
# CONFIG_IP_PNP is not set
CONFIG_NET_IPIP=m
CONFIG_NET_IPGRE=m
CONFIG_NET_IPGRE_BROADCAST=y
CONFIG_IP_MROUTE=y
CONFIG_IP_PIMSM_V1=y
CONFIG_IP_PIMSM_V2=y
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
CONFIG_INET_AH=m
CONFIG_INET_ESP=m
CONFIG_INET_IPCOMP=m
CONFIG_INET_TUNNEL=m
CONFIG_IP_TCPDIAG=y
# CONFIG_IP_TCPDIAG_IPV6 is not set

#
# IP: Virtual Server Configuration
#
CONFIG_IP_VS=m
# CONFIG_IP_VS_DEBUG is not set
CONFIG_IP_VS_TAB_BITS=12

#
# IPVS transport protocol load balancing support
#
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_VS_PROTO_ESP=y
CONFIG_IP_VS_PROTO_AH=y

#
# IPVS scheduler
#
CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
CONFIG_IP_VS_SH=m
CONFIG_IP_VS_SED=m
CONFIG_IP_VS_NQ=m

#
# IPVS application helper
#
CONFIG_IP_VS_FTP=m
CONFIG_IPV6=m
CONFIG_IPV6_PRIVACY=y
CONFIG_INET6_AH=m
CONFIG_INET6_ESP=m
CONFIG_INET6_IPCOMP=m
CONFIG_INET6_TUNNEL=m
CONFIG_IPV6_TUNNEL=m
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
CONFIG_BRIDGE_NETFILTER=y

#
# IP: Netfilter Configuration
#
CONFIG_IP_NF_CONNTRACK=m
CONFIG_IP_NF_CT_ACCT=y
# CONFIG_IP_NF_CONNTRACK_MARK is not set
CONFIG_IP_NF_CT_PROTO_SCTP=m
CONFIG_IP_NF_FTP=m
CONFIG_IP_NF_IRC=m
CONFIG_IP_NF_TFTP=m
CONFIG_IP_NF_AMANDA=m
CONFIG_IP_NF_QUEUE=m
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_MATCH_LIMIT=m
CONFIG_IP_NF_MATCH_IPRANGE=m
CONFIG_IP_NF_MATCH_MAC=m
CONFIG_IP_NF_MATCH_PKTTYPE=m
CONFIG_IP_NF_MATCH_MARK=m
CONFIG_IP_NF_MATCH_MULTIPORT=m
CONFIG_IP_NF_MATCH_TOS=m
CONFIG_IP_NF_MATCH_RECENT=m
CONFIG_IP_NF_MATCH_ECN=m
CONFIG_IP_NF_MATCH_DSCP=m
CONFIG_IP_NF_MATCH_AH_ESP=m
CONFIG_IP_NF_MATCH_LENGTH=m
CONFIG_IP_NF_MATCH_TTL=m
CONFIG_IP_NF_MATCH_TCPMSS=m
CONFIG_IP_NF_MATCH_HELPER=m
CONFIG_IP_NF_MATCH_STATE=m
CONFIG_IP_NF_MATCH_CONNTRACK=m
CONFIG_IP_NF_MATCH_OWNER=m
CONFIG_IP_NF_MATCH_PHYSDEV=m
CONFIG_IP_NF_MATCH_ADDRTYPE=m
CONFIG_IP_NF_MATCH_REALM=m
CONFIG_IP_NF_MATCH_SCTP=m
CONFIG_IP_NF_MATCH_COMMENT=m
# CONFIG_IP_NF_MATCH_HASHLIMIT is not set
CONFIG_IP_NF_FILTER=m
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IP_NF_TARGET_LOG=m
CONFIG_IP_NF_TARGET_ULOG=m
CONFIG_IP_NF_TARGET_TCPMSS=m
CONFIG_IP_NF_NAT=m
CONFIG_IP_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=m
CONFIG_IP_NF_TARGET_REDIRECT=m
CONFIG_IP_NF_TARGET_NETMAP=m
CONFIG_IP_NF_TARGET_SAME=m
CONFIG_IP_NF_NAT_SNMP_BASIC=m
CONFIG_IP_NF_NAT_IRC=m
CONFIG_IP_NF_NAT_FTP=m
CONFIG_IP_NF_NAT_TFTP=m
CONFIG_IP_NF_NAT_AMANDA=m
CONFIG_IP_NF_MANGLE=m
CONFIG_IP_NF_TARGET_TOS=m
CONFIG_IP_NF_TARGET_ECN=m
CONFIG_IP_NF_TARGET_DSCP=m
CONFIG_IP_NF_TARGET_MARK=m
CONFIG_IP_NF_TARGET_CLASSIFY=m
CONFIG_IP_NF_RAW=m
CONFIG_IP_NF_TARGET_NOTRACK=m
CONFIG_IP_NF_ARPTABLES=m
CONFIG_IP_NF_ARPFILTER=m
CONFIG_IP_NF_ARP_MANGLE=m

#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
CONFIG_IP6_NF_IPTABLES=m
CONFIG_IP6_NF_MATCH_LIMIT=m
CONFIG_IP6_NF_MATCH_MAC=m
CONFIG_IP6_NF_MATCH_RT=m
CONFIG_IP6_NF_MATCH_OPTS=m
CONFIG_IP6_NF_MATCH_FRAG=m
CONFIG_IP6_NF_MATCH_HL=m
CONFIG_IP6_NF_MATCH_MULTIPORT=m
CONFIG_IP6_NF_MATCH_OWNER=m
CONFIG_IP6_NF_MATCH_MARK=m
CONFIG_IP6_NF_MATCH_IPV6HEADER=m
CONFIG_IP6_NF_MATCH_AHESP=m
CONFIG_IP6_NF_MATCH_LENGTH=m
CONFIG_IP6_NF_MATCH_EUI64=m
CONFIG_IP6_NF_MATCH_PHYSDEV=m
CONFIG_IP6_NF_FILTER=m
CONFIG_IP6_NF_TARGET_LOG=m
CONFIG_IP6_NF_MANGLE=m
CONFIG_IP6_NF_TARGET_MARK=m
CONFIG_IP6_NF_RAW=m

#
# Bridge: Netfilter Configuration
#
CONFIG_BRIDGE_NF_EBTABLES=m
CONFIG_BRIDGE_EBT_BROUTE=m
CONFIG_BRIDGE_EBT_T_FILTER=m
CONFIG_BRIDGE_EBT_T_NAT=m
CONFIG_BRIDGE_EBT_802_3=m
CONFIG_BRIDGE_EBT_AMONG=m
CONFIG_BRIDGE_EBT_ARP=m
CONFIG_BRIDGE_EBT_IP=m
CONFIG_BRIDGE_EBT_LIMIT=m
CONFIG_BRIDGE_EBT_MARK=m
CONFIG_BRIDGE_EBT_PKTTYPE=m
CONFIG_BRIDGE_EBT_STP=m
CONFIG_BRIDGE_EBT_VLAN=m
CONFIG_BRIDGE_EBT_ARPREPLY=m
CONFIG_BRIDGE_EBT_DNAT=m
CONFIG_BRIDGE_EBT_MARK_T=m
CONFIG_BRIDGE_EBT_REDIRECT=m
CONFIG_BRIDGE_EBT_SNAT=m
CONFIG_BRIDGE_EBT_LOG=m
# CONFIG_BRIDGE_EBT_ULOG is not set
CONFIG_XFRM=y
CONFIG_XFRM_USER=y

#
# SCTP Configuration (EXPERIMENTAL)
#
CONFIG_IP_SCTP=m
# CONFIG_SCTP_DBG_MSG is not set
# CONFIG_SCTP_DBG_OBJCNT is not set
# CONFIG_SCTP_HMAC_NONE is not set
# CONFIG_SCTP_HMAC_SHA1 is not set
CONFIG_SCTP_HMAC_MD5=y
CONFIG_ATM=m
CONFIG_ATM_CLIP=m
# CONFIG_ATM_CLIP_NO_ICMP is not set
CONFIG_ATM_LANE=m
# CONFIG_ATM_MPOA is not set
CONFIG_ATM_BR2684=m
# CONFIG_ATM_BR2684_IPFILTER is not set
CONFIG_BRIDGE=m
CONFIG_VLAN_8021Q=m
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
CONFIG_NET_DIVERT=y
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set

#
# QoS and/or fair queueing
#
CONFIG_NET_SCHED=y
CONFIG_NET_SCH_CLK_JIFFIES=y
# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
# CONFIG_NET_SCH_CLK_CPU is not set
CONFIG_NET_SCH_CBQ=m
CONFIG_NET_SCH_HTB=m
CONFIG_NET_SCH_HFSC=m
CONFIG_NET_SCH_ATM=m
CONFIG_NET_SCH_PRIO=m
CONFIG_NET_SCH_RED=m
CONFIG_NET_SCH_SFQ=m
CONFIG_NET_SCH_TEQL=m
CONFIG_NET_SCH_TBF=m
CONFIG_NET_SCH_GRED=m
CONFIG_NET_SCH_DSMARK=m
CONFIG_NET_SCH_NETEM=m
CONFIG_NET_SCH_INGRESS=m
CONFIG_NET_QOS=y
CONFIG_NET_ESTIMATOR=y
CONFIG_NET_CLS=y
# CONFIG_NET_CLS_BASIC is not set
CONFIG_NET_CLS_TCINDEX=m
CONFIG_NET_CLS_ROUTE4=m
CONFIG_NET_CLS_ROUTE=y
CONFIG_NET_CLS_FW=m
CONFIG_NET_CLS_U32=m
CONFIG_CLS_U32_PERF=y
CONFIG_NET_CLS_IND=y
# CONFIG_CLS_U32_MARK is not set
CONFIG_NET_CLS_RSVP=m
CONFIG_NET_CLS_RSVP6=m
# CONFIG_NET_EMATCH is not set
# CONFIG_NET_CLS_ACT is not set
CONFIG_NET_CLS_POLICE=y

#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
CONFIG_NETDEVICES=y
CONFIG_DUMMY=m
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set

#
# ARCnet devices
#
# CONFIG_ARCNET is not set

#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
CONFIG_MII=m
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
CONFIG_NET_VENDOR_3COM=y
CONFIG_VORTEX=m
CONFIG_TYPHOON=m

#
# Tulip family network device support
#
# CONFIG_NET_TULIP is not set
# CONFIG_HP100 is not set
# CONFIG_NET_PCI is not set

#
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
# CONFIG_DL2K is not set
# CONFIG_E1000 is not set
# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_R8169 is not set
# CONFIG_SK98LIN is not set
# CONFIG_TIGON3 is not set
# CONFIG_BNX2 is not set

#
# Ethernet (10000 Mbit)
#
# CONFIG_IXGB is not set
# CONFIG_S2IO is not set

#
# Token Ring devices
#
# CONFIG_TR is not set

#
# Wireless LAN (non-hamradio)
#
# CONFIG_NET_RADIO is not set

#
# Wan interfaces
#
# CONFIG_WAN is not set

#
# ATM drivers
#
# CONFIG_ATM_TCP is not set
# CONFIG_ATM_LANAI is not set
# CONFIG_ATM_ENI is not set
# CONFIG_ATM_FIRESTREAM is not set
# CONFIG_ATM_ZATM is not set
# CONFIG_ATM_NICSTAR is not set
# CONFIG_ATM_IDT77252 is not set
# CONFIG_ATM_AMBASSADOR is not set
# CONFIG_ATM_HORIZON is not set
# CONFIG_ATM_IA is not set
# CONFIG_ATM_FORE200E_MAYBE is not set
# CONFIG_ATM_HE is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PLIP is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set

#
# ISDN subsystem
#
# CONFIG_ISDN is not set

#
# Telephony Support
#
# CONFIG_PHONE is not set

#
# Input device support
#
CONFIG_INPUT=y

#
# Userland interfaces
#
CONFIG_INPUT_MOUSEDEV=y
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_TSDEV is not set
CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
CONFIG_INPUT_MOUSE=y
# CONFIG_MOUSE_PS2 is not set
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_VSXXXAA is not set
CONFIG_INPUT_JOYSTICK=y
# CONFIG_JOYSTICK_ANALOG is not set
# CONFIG_JOYSTICK_A3D is not set
# CONFIG_JOYSTICK_ADI is not set
# CONFIG_JOYSTICK_COBRA is not set
# CONFIG_JOYSTICK_GF2K is not set
# CONFIG_JOYSTICK_GRIP is not set
# CONFIG_JOYSTICK_GRIP_MP is not set
# CONFIG_JOYSTICK_GUILLEMOT is not set
# CONFIG_JOYSTICK_INTERACT is not set
# CONFIG_JOYSTICK_SIDEWINDER is not set
# CONFIG_JOYSTICK_TMDC is not set
# CONFIG_JOYSTICK_IFORCE is not set
# CONFIG_JOYSTICK_WARRIOR is not set
# CONFIG_JOYSTICK_MAGELLAN is not set
# CONFIG_JOYSTICK_SPACEORB is not set
# CONFIG_JOYSTICK_SPACEBALL is not set
# CONFIG_JOYSTICK_STINGER is not set
# CONFIG_JOYSTICK_TWIDJOY is not set
# CONFIG_JOYSTICK_DB9 is not set
# CONFIG_JOYSTICK_GAMECON is not set
# CONFIG_JOYSTICK_TURBOGRAFX is not set
# CONFIG_JOYSTICK_JOYDUMP is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
CONFIG_INPUT_MISC=y
CONFIG_INPUT_PCSPKR=m
CONFIG_INPUT_UINPUT=m

#
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
CONFIG_SERIO_SERPORT=y
# CONFIG_SERIO_CT82C710 is not set
# CONFIG_SERIO_PARKBD is not set
# CONFIG_SERIO_PCIPS2 is not set
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_RAW is not set
# CONFIG_GAMEPORT is not set

#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_SERIAL_NONSTANDARD is not set

#
# Serial drivers
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
# CONFIG_SERIAL_8250_ACPI is not set
CONFIG_SERIAL_8250_NR_UARTS=4
CONFIG_SERIAL_8250_EXTENDED=y
# CONFIG_SERIAL_8250_MANY_PORTS is not set
CONFIG_SERIAL_8250_SHARE_IRQ=y
CONFIG_SERIAL_8250_DETECT_IRQ=y
CONFIG_SERIAL_8250_MULTIPORT=y
CONFIG_SERIAL_8250_RSA=y

#
# Non-8250 serial port support
#
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_JSM is not set
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
# CONFIG_PRINTER is not set
# CONFIG_PPDEV is not set
# CONFIG_TIPAR is not set

#
# IPMI
#
# CONFIG_IPMI_HANDLER is not set

#
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set
# CONFIG_HW_RANDOM is not set
CONFIG_NVRAM=m
CONFIG_RTC=y
CONFIG_RTC_HISTOGRAM=y
CONFIG_BLOCKER=y
CONFIG_LPPTEST=m
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_SONYPI is not set

#
# Ftape, the floppy tape device driver
#
# CONFIG_FTAPE is not set
CONFIG_AGP=y
# CONFIG_AGP_ALI is not set
CONFIG_AGP_ATI=y
# CONFIG_AGP_AMD is not set
# CONFIG_AGP_AMD64 is not set
CONFIG_AGP_INTEL=m
# CONFIG_AGP_NVIDIA is not set
# CONFIG_AGP_SIS is not set
# CONFIG_AGP_SWORKS is not set
# CONFIG_AGP_VIA is not set
# CONFIG_AGP_EFFICEON is not set
CONFIG_DRM=y
# CONFIG_DRM_TDFX is not set
CONFIG_DRM_R128=m
CONFIG_DRM_RADEON=m
CONFIG_DRM_I810=m
CONFIG_DRM_I830=m
CONFIG_DRM_I915=m
# CONFIG_DRM_MGA is not set
# CONFIG_DRM_SIS is not set
# CONFIG_MWAVE is not set
CONFIG_RAW_DRIVER=y
CONFIG_HPET=y
# CONFIG_HPET_RTC_IRQ is not set
CONFIG_HPET_MMAP=y
CONFIG_MAX_RAW_DEVS=8192
CONFIG_HANGCHECK_TIMER=y

#
# TPM devices
#
# CONFIG_TCG_TPM is not set

#
# I2C support
#
# CONFIG_I2C is not set

#
# Dallas's 1-wire bus
#
# CONFIG_W1 is not set

#
# Misc devices
#
# CONFIG_IBM_ASM is not set

#
# Multimedia devices
#
CONFIG_VIDEO_DEV=m

#
# Video For Linux
#

#
# Video Adapters
#
# CONFIG_VIDEO_BWQCAM is not set
# CONFIG_VIDEO_CQCAM is not set
# CONFIG_VIDEO_W9966 is not set
# CONFIG_VIDEO_CPIA is not set
# CONFIG_VIDEO_STRADIS is not set
# CONFIG_VIDEO_MXB is not set
# CONFIG_VIDEO_DPC is not set
# CONFIG_VIDEO_HEXIUM_ORION is not set
# CONFIG_VIDEO_HEXIUM_GEMINI is not set

#
# Radio Adapters
#
# CONFIG_RADIO_GEMTEK_PCI is not set
# CONFIG_RADIO_MAXIRADIO is not set
# CONFIG_RADIO_MAESTRO is not set

#
# Digital Video Broadcasting Devices
#
# CONFIG_DVB is not set

#
# Graphics support
#
# CONFIG_FB is not set
CONFIG_VIDEO_SELECT=y

#
# Console display driver support
#
CONFIG_VGA_CONSOLE=y
CONFIG_DUMMY_CONSOLE=y

#
# Sound
#
CONFIG_SOUND=m

#
# Advanced Linux Sound Architecture
#
CONFIG_SND=m
CONFIG_SND_TIMER=m
CONFIG_SND_PCM=m
CONFIG_SND_HWDEP=m
CONFIG_SND_RAWMIDI=m
CONFIG_SND_SEQUENCER=m
CONFIG_SND_SEQ_DUMMY=m
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
CONFIG_SND_SEQUENCER_OSS=y
CONFIG_SND_RTCTIMER=m
# CONFIG_SND_VERBOSE_PRINTK is not set
# CONFIG_SND_DEBUG is not set

#
# Generic devices
#
CONFIG_SND_MPU401_UART=m
CONFIG_SND_OPL3_LIB=m
CONFIG_SND_VX_LIB=m
CONFIG_SND_DUMMY=m
CONFIG_SND_VIRMIDI=m
CONFIG_SND_MTPAV=m
# CONFIG_SND_SERIAL_U16550 is not set
CONFIG_SND_MPU401=m

#
# PCI devices
#
CONFIG_SND_AC97_CODEC=m
CONFIG_SND_ALI5451=m
CONFIG_SND_ATIIXP=m
CONFIG_SND_ATIIXP_MODEM=m
CONFIG_SND_AU8810=m
CONFIG_SND_AU8820=m
CONFIG_SND_AU8830=m
CONFIG_SND_AZT3328=m
CONFIG_SND_BT87X=m
# CONFIG_SND_BT87X_OVERCLOCK is not set
CONFIG_SND_CS46XX=m
CONFIG_SND_CS46XX_NEW_DSP=y
CONFIG_SND_CS4281=m
CONFIG_SND_EMU10K1=m
CONFIG_SND_EMU10K1X=m
CONFIG_SND_CA0106=m
CONFIG_SND_KORG1212=m
CONFIG_SND_MIXART=m
CONFIG_SND_NM256=m
CONFIG_SND_RME32=m
CONFIG_SND_RME96=m
CONFIG_SND_RME9652=m
CONFIG_SND_HDSP=m
CONFIG_SND_TRIDENT=m
CONFIG_SND_YMFPCI=m
CONFIG_SND_ALS4000=m
CONFIG_SND_CMIPCI=m
CONFIG_SND_ENS1370=m
CONFIG_SND_ENS1371=m
CONFIG_SND_ES1938=m
CONFIG_SND_ES1968=m
CONFIG_SND_MAESTRO3=m
CONFIG_SND_FM801=m
CONFIG_SND_FM801_TEA575X=m
CONFIG_SND_ICE1712=m
CONFIG_SND_ICE1724=m
CONFIG_SND_INTEL8X0=m
CONFIG_SND_INTEL8X0M=m
CONFIG_SND_SONICVIBES=m
CONFIG_SND_VIA82XX=m
CONFIG_SND_VIA82XX_MODEM=m
CONFIG_SND_VX222=m
CONFIG_SND_HDA_INTEL=m

#
# USB devices
#
# CONFIG_SND_USB_AUDIO is not set
# CONFIG_SND_USB_USX2Y is not set

#
# Open Sound System
#
# CONFIG_SOUND_PRIME is not set

#
# USB support
#
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
CONFIG_USB=y
# CONFIG_USB_DEBUG is not set

#
# Miscellaneous USB options
#
CONFIG_USB_DEVICEFS=y
# CONFIG_USB_BANDWIDTH is not set
# CONFIG_USB_DYNAMIC_MINORS is not set
CONFIG_USB_SUSPEND=y
# CONFIG_USB_OTG is not set

#
# USB Host Controller Drivers
#
CONFIG_USB_EHCI_HCD=m
CONFIG_USB_EHCI_SPLIT_ISO=y
CONFIG_USB_EHCI_ROOT_HUB_TT=y
CONFIG_USB_OHCI_HCD=m
# CONFIG_USB_OHCI_BIG_ENDIAN is not set
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_USB_UHCI_HCD=m
# CONFIG_USB_SL811_HCD is not set

#
# USB Device Class drivers
#
# CONFIG_USB_AUDIO is not set
# CONFIG_USB_BLUETOOTH_TTY is not set
CONFIG_USB_MIDI=m
CONFIG_USB_ACM=m
CONFIG_USB_PRINTER=m

#
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
#
# CONFIG_USB_STORAGE is not set

#
# USB Input Devices
#
CONFIG_USB_HID=y
CONFIG_USB_HIDINPUT=y
CONFIG_HID_FF=y
CONFIG_HID_PID=y
CONFIG_LOGITECH_FF=y
CONFIG_THRUSTMASTER_FF=y
CONFIG_USB_HIDDEV=y
# CONFIG_USB_AIPTEK is not set
# CONFIG_USB_WACOM is not set
# CONFIG_USB_KBTAB is not set
# CONFIG_USB_POWERMATE is not set
# CONFIG_USB_MTOUCH is not set
# CONFIG_USB_EGALAX is not set
# CONFIG_USB_XPAD is not set
# CONFIG_USB_ATI_REMOTE is not set

#
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set

#
# USB Multimedia devices
#
# CONFIG_USB_DABUSB is not set
# CONFIG_USB_VICAM is not set
# CONFIG_USB_DSBR is not set
# CONFIG_USB_IBMCAM is not set
# CONFIG_USB_KONICAWC is not set
# CONFIG_USB_OV511 is not set
# CONFIG_USB_SE401 is not set
# CONFIG_USB_SN9C102 is not set
# CONFIG_USB_STV680 is not set
# CONFIG_USB_PWC is not set

#
# USB Network Adapters
#
# CONFIG_USB_CATC is not set
# CONFIG_USB_KAWETH is not set
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_RTL8150 is not set
# CONFIG_USB_USBNET is not set
# CONFIG_USB_MON is not set

#
# USB port drivers
#
# CONFIG_USB_USS720 is not set

#
# USB Serial Converter support
#
# CONFIG_USB_SERIAL is not set

#
# USB Miscellaneous drivers
#
# CONFIG_USB_EMI62 is not set
# CONFIG_USB_EMI26 is not set
# CONFIG_USB_AUERSWALD is not set
# CONFIG_USB_RIO500 is not set
# CONFIG_USB_LEGOTOWER is not set
# CONFIG_USB_LCD is not set
# CONFIG_USB_LED is not set
# CONFIG_USB_CYTHERM is not set
# CONFIG_USB_PHIDGETKIT is not set
# CONFIG_USB_PHIDGETSERVO is not set
# CONFIG_USB_IDMOUSE is not set
# CONFIG_USB_SISUSBVGA is not set
# CONFIG_USB_TEST is not set

#
# USB ATM/DSL drivers
#
# CONFIG_USB_ATM is not set
# CONFIG_USB_SPEEDTOUCH is not set

#
# USB Gadget Support
#
# CONFIG_USB_GADGET is not set

#
# MMC/SD Card support
#
# CONFIG_MMC is not set

#
# InfiniBand support
#
# CONFIG_INFINIBAND is not set

#
# File systems
#
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT2_FS_SECURITY=y
CONFIG_EXT3_FS=y
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
CONFIG_FS_MBCACHE=y
CONFIG_REISERFS_FS=m
# CONFIG_REISERFS_CHECK is not set
# CONFIG_REISERFS_PROC_INFO is not set
CONFIG_REISERFS_FS_XATTR=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_SECURITY=y
# CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y

#
# XFS support
#
# CONFIG_XFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_QUOTA=y
# CONFIG_QFMT_V1 is not set
CONFIG_QFMT_V2=y
CONFIG_QUOTACTL=y
CONFIG_DNOTIFY=y
CONFIG_AUTOFS_FS=m
CONFIG_AUTOFS4_FS=m

#
# CD-ROM/DVD Filesystems
#
CONFIG_ISO9660_FS=y
CONFIG_JOLIET=y
CONFIG_ZISOFS=y
CONFIG_ZISOFS_FS=y
CONFIG_UDF_FS=m
CONFIG_UDF_NLS=y

#
# DOS/FAT/NT Filesystems
#
# CONFIG_MSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_NTFS_FS is not set

#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
CONFIG_SYSFS=y
# CONFIG_DEVFS_FS is not set
CONFIG_DEVPTS_FS_XATTR=y
CONFIG_DEVPTS_FS_SECURITY=y
CONFIG_TMPFS=y
CONFIG_TMPFS_XATTR=y
CONFIG_TMPFS_SECURITY=y
CONFIG_HUGETLBFS=y
CONFIG_HUGETLB_PAGE=y
CONFIG_RAMFS=y

#
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
# CONFIG_JFFS2_FS is not set
CONFIG_CRAMFS=m
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set

#
# Network File Systems
#
CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
CONFIG_NFS_V4=y
CONFIG_NFS_DIRECTIO=y
CONFIG_NFSD=m
CONFIG_NFSD_V3=y
CONFIG_NFSD_V4=y
CONFIG_NFSD_TCP=y
CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
CONFIG_SUNRPC=m
CONFIG_SUNRPC_GSS=m
CONFIG_RPCSEC_GSS_KRB5=m
CONFIG_RPCSEC_GSS_SPKM3=m
CONFIG_SMB_FS=m
# CONFIG_SMB_NLS_DEFAULT is not set
CONFIG_CIFS=m
# CONFIG_CIFS_STATS is not set
CONFIG_CIFS_XATTR=y
CONFIG_CIFS_POSIX=y
# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set

#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y

#
# Native Language Support
#
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="utf8"
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_CODEPAGE_737=m
CONFIG_NLS_CODEPAGE_775=m
CONFIG_NLS_CODEPAGE_850=m
CONFIG_NLS_CODEPAGE_852=m
CONFIG_NLS_CODEPAGE_855=m
CONFIG_NLS_CODEPAGE_857=m
CONFIG_NLS_CODEPAGE_860=m
CONFIG_NLS_CODEPAGE_861=m
CONFIG_NLS_CODEPAGE_862=m
CONFIG_NLS_CODEPAGE_863=m
CONFIG_NLS_CODEPAGE_864=m
CONFIG_NLS_CODEPAGE_865=m
CONFIG_NLS_CODEPAGE_866=m
CONFIG_NLS_CODEPAGE_869=m
CONFIG_NLS_CODEPAGE_936=m
CONFIG_NLS_CODEPAGE_950=m
CONFIG_NLS_CODEPAGE_932=m
CONFIG_NLS_CODEPAGE_949=m
CONFIG_NLS_CODEPAGE_874=m
CONFIG_NLS_ISO8859_8=m
CONFIG_NLS_CODEPAGE_1250=m
CONFIG_NLS_CODEPAGE_1251=m
CONFIG_NLS_ASCII=y
CONFIG_NLS_ISO8859_1=m
CONFIG_NLS_ISO8859_2=m
CONFIG_NLS_ISO8859_3=m
CONFIG_NLS_ISO8859_4=m
CONFIG_NLS_ISO8859_5=m
CONFIG_NLS_ISO8859_6=m
CONFIG_NLS_ISO8859_7=m
CONFIG_NLS_ISO8859_9=m
CONFIG_NLS_ISO8859_13=m
CONFIG_NLS_ISO8859_14=m
CONFIG_NLS_ISO8859_15=m
CONFIG_NLS_KOI8_R=m
CONFIG_NLS_KOI8_U=m
CONFIG_NLS_UTF8=m

#
# Profiling support
#
CONFIG_PROFILING=y
CONFIG_OPROFILE=m

#
# Kernel hacking
#
# CONFIG_PRINTK_TIME is not set
# CONFIG_PRINTK_IGNORE_LOGLEVEL is not set
CONFIG_DEBUG_KERNEL=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_LOG_BUF_SHIFT=17
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
CONFIG_DEBUG_IRQ_FLAGS=y
# CONFIG_WAKEUP_TIMING is not set
CONFIG_PREEMPT_TRACE=y
# CONFIG_CRITICAL_PREEMPT_TIMING is not set
# CONFIG_CRITICAL_IRQSOFF_TIMING is not set
CONFIG_RT_DEADLOCK_DETECT=y
# CONFIG_DEBUG_RT_LOCKING_MODE is not set
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_HIGHMEM is not set
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_FS is not set
# CONFIG_USE_FRAME_POINTER is not set
CONFIG_EARLY_PRINTK=y
CONFIG_DEBUG_STACKOVERFLOW=y
# CONFIG_KPROBES is not set
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_PAGEALLOC is not set
# CONFIG_4KSTACKS is not set
CONFIG_X86_FIND_SMP_CONFIG=y
CONFIG_X86_MPPARSE=y

#
# Security options
#
# CONFIG_KEYS is not set
CONFIG_SECURITY=y
CONFIG_SECURITY_NETWORK=y
CONFIG_SECURITY_CAPABILITIES=y
# CONFIG_SECURITY_ROOTPLUG is not set
# CONFIG_SECURITY_SECLVL is not set
CONFIG_SECURITY_SELINUX=y
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1
CONFIG_SECURITY_SELINUX_DISABLE=y
CONFIG_SECURITY_SELINUX_DEVELOP=y
CONFIG_SECURITY_SELINUX_AVC_STATS=y
CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1

#
# Cryptographic options
#
CONFIG_CRYPTO=y
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=m
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_SHA512=m
CONFIG_CRYPTO_WP512=m
CONFIG_CRYPTO_TGR192=m
CONFIG_CRYPTO_DES=m
CONFIG_CRYPTO_BLOWFISH=m
CONFIG_CRYPTO_TWOFISH=m
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_AES_586=m
CONFIG_CRYPTO_CAST5=m
CONFIG_CRYPTO_CAST6=m
CONFIG_CRYPTO_TEA=m
CONFIG_CRYPTO_ARC4=m
CONFIG_CRYPTO_KHAZAD=m
# CONFIG_CRYPTO_ANUBIS is not set
CONFIG_CRYPTO_DEFLATE=m
CONFIG_CRYPTO_MICHAEL_MIC=m
CONFIG_CRYPTO_CRC32C=m
# CONFIG_CRYPTO_TEST is not set

#
# Hardware crypto devices
#
# CONFIG_CRYPTO_DEV_PADLOCK is not set

#
# Library routines
#
CONFIG_CRC_CCITT=m
CONFIG_CRC32=y
CONFIG_LIBCRC32C=m
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=m
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_X86_BIOS_REBOOT=y
CONFIG_PC=y

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-12 21:01                                                                 ` Chuck Harding
@ 2005-07-13 10:39                                                                   ` Ingo Molnar
  2005-07-13 12:29                                                                     ` Gene Heskett
  2005-07-13 14:01                                                                     ` K.R. Foley
  0 siblings, 2 replies; 101+ messages in thread
From: Ingo Molnar @ 2005-07-13 10:39 UTC (permalink / raw)
  To: Chuck Harding; +Cc: Linux Kernel Discussion List, karsten wiese


* Chuck Harding <charding@llnl.gov> wrote:

> > CC [M]  sound/oss/emu10k1/midi.o
> >sound/oss/emu10k1/midi.c:48: error: syntax error before '__attribute__'
> >sound/oss/emu10k1/midi.c:48: error: syntax error before ')' token
> >
> >Here's the offending line:
> >
> >   48 static DEFINE_SPINLOCK(midi_spinlock __attribute((unused)));
> >
> >Lee
> >
> 
> I got it to compile but it won't boot - it hangs right after the
> 'Uncompressing Linux... OK, booting the kernel' - I'm using .config
> from 51-27 (attached)

and -51-27 worked just fine? I've uploaded -29 with the -28 io-apic 
changes undone (will re-apply them once Karsten has figured out what's 
wrong).

	Ingo

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-13 10:39                                                                   ` Ingo Molnar
@ 2005-07-13 12:29                                                                     ` Gene Heskett
  2005-07-13 14:01                                                                     ` K.R. Foley
  1 sibling, 0 replies; 101+ messages in thread
From: Gene Heskett @ 2005-07-13 12:29 UTC (permalink / raw)
  To: linux-kernel; +Cc: Ingo Molnar, Chuck Harding, karsten wiese

On Wednesday 13 July 2005 06:39, Ingo Molnar wrote:
>* Chuck Harding <charding@llnl.gov> wrote:
>> > CC [M]  sound/oss/emu10k1/midi.o
>> >sound/oss/emu10k1/midi.c:48: error: syntax error before
>> > '__attribute__' sound/oss/emu10k1/midi.c:48: error: syntax error
>> > before ')' token
>> >
>> >Here's the offending line:
>> >
>> >   48 static DEFINE_SPINLOCK(midi_spinlock
>> > __attribute((unused)));
>> >
>> >Lee
>>
>> I got it to compile but it won't boot - it hangs right after the
>> 'Uncompressing Linux... OK, booting the kernel' - I'm using
>> .config from 51-27 (attached)
>
>and -51-27 worked just fine? I've uploaded -29 with the -28 io-apic
>changes undone (will re-apply them once Karsten has figured out
> what's wrong).
>
> Ingo
>-

27 and 28 both worked in mode 4 here Ingo, except of course for 
tvtime.  I built a 28 in mode 3 last night but haven't rebooted to it 
yet.  I don't have an sblive in this box either.

-- 
Cheers, Gene
"There are four boxes to be used in defense of liberty:
 soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)
99.35% setiathome rank, not too shabby for a WV hillbilly
Yahoo.com and AOL/TW attorneys please note, additions to the above
message by Gene Heskett are:
Copyright 2005 by Maurice Eugene Heskett, all rights reserved.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-13 10:39                                                                   ` Ingo Molnar
  2005-07-13 12:29                                                                     ` Gene Heskett
@ 2005-07-13 14:01                                                                     ` K.R. Foley
  2005-07-13 19:41                                                                       ` Chuck Harding
  2005-07-14 12:50                                                                       ` Karsten Wiese
  1 sibling, 2 replies; 101+ messages in thread
From: K.R. Foley @ 2005-07-13 14:01 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Chuck Harding, Linux Kernel Discussion List, karsten wiese

Ingo Molnar wrote:
> * Chuck Harding <charding@llnl.gov> wrote:
> 
> 
>>>CC [M]  sound/oss/emu10k1/midi.o
>>>sound/oss/emu10k1/midi.c:48: error: syntax error before '__attribute__'
>>>sound/oss/emu10k1/midi.c:48: error: syntax error before ')' token
>>>
>>>Here's the offending line:
>>>
>>>  48 static DEFINE_SPINLOCK(midi_spinlock __attribute((unused)));
>>>
>>>Lee
>>>
>>
>>I got it to compile but it won't boot - it hangs right after the
>>'Uncompressing Linux... OK, booting the kernel' - I'm using .config
>>from 51-27 (attached)
> 
> 
> and -51-27 worked just fine? I've uploaded -29 with the -28 io-apic 
> changes undone (will re-apply them once Karsten has figured out what's 
> wrong).
> 
> 	Ingo

I too had the same problem booting -51-28 on my older SMP system at 
home. -51-29 just booted fine.


-- 
    kr

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-11 15:50                                                                 ` Alistair John Strachan
@ 2005-07-13 14:45                                                                   ` Ingo Molnar
  2005-07-13 15:30                                                                     ` Ingo Molnar
  0 siblings, 1 reply; 101+ messages in thread
From: Ingo Molnar @ 2005-07-13 14:45 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Alistair John Strachan <s0348365@sms.ed.ac.uk> wrote:

> Ours links to a company server with a consumer grade 1Mbit ADSL 
> connection, and transferring just about anything at 110K/s causes the 
> kernel to crash within about 10 seconds.
> 
> I wish you the best of luck with getting this going, and I apologise 
> in advance for the poor instructions.

it worked upon the first try, and indeed my testbox crashed within 10 
seconds:

 BUG: Unable to handle kernel NULL pointer dereference
 BUG: Unable to handle kernel NULL pointer dereference at virtual address 00000006
  printing eip:
 00000006
 *pde = 00000000
 Oops: 0000 [#1]
 PREEMPT
 Modules linked in:
 CPU:    0
 EIP:    0060:[<00000006>]    Not tainted VLI
 EFLAGS: 00010286   (2.6.12-RT-V0.7.51-30-debug)
 EIP is at 0x6
 eax: c057fef8   ebx: c0614340   ecx: c04490b8   edx: 00000001
 esi: c057ff34   edi: c0135d52   ebp: c057ff54   esp: c057ff3c
 ds: 007b   es: 007b   ss: 0068   preempt: 20000002

it was enough to "ssh 10.0.0.1" from the client, and typing "yes" would 
trigger the crash very soon.

thanks for the instructions - now i can start debugging this :-)

	Ingo

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-13 14:45                                                                   ` Ingo Molnar
@ 2005-07-13 15:30                                                                     ` Ingo Molnar
  2005-07-14 19:58                                                                       ` Alistair John Strachan
  0 siblings, 1 reply; 101+ messages in thread
From: Ingo Molnar @ 2005-07-13 15:30 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: linux-kernel


* Ingo Molnar <mingo@elte.hu> wrote:

> it worked upon the first try, and indeed my testbox crashed within 10 
> seconds:
> 
>  BUG: Unable to handle kernel NULL pointer dereference
>  BUG: Unable to handle kernel NULL pointer dereference at virtual address 00000006

a couple of crashes later i got an important clue:

 BUG: bad soft irq-flag value 00000f64, openvpn/3386!
  [<c0104052>] dump_stack+0x1f/0x21 (20)
  [<c013b883>] check_soft_flags+0x73/0xc9 (24)
  [<00000f78>] 0xf78 (1066836133)

it turns out that a small portion of the softirq processing path was 
still using the soft IRQ-flag, instead of the raw IRQ-flag! Given enough 
irq and softirq workload, we were interrupted in a piece of code where 
the data structure was inconsistent. (tinfo.task was already changed, 
but %esp not yet) Since interrupts were enabled during the crash 
printout, it would crash again and again as it got more interrupts. The 
backtrace printout crashed too due to the inconsistency. That's why you 
got those repeat ============= lines.

the patch below should fix this bug and i've uploaded the -51-30 patch 
with this fix included. Could you check whether 4K stacks are now stable 
for you under PREEMPT_RT?

so your intuitition about this being related to 4K stacks was completely 
right.

	Ingo

Index: linux/arch/i386/kernel/irq.c
===================================================================
--- linux.orig/arch/i386/kernel/irq.c
+++ linux/arch/i386/kernel/irq.c
@@ -169,7 +169,7 @@ asmlinkage void do_softirq(void)
 	if (in_interrupt())
 		return;
 
-	local_irq_save(flags);
+	raw_local_irq_save(flags);
 
 	if (local_softirq_pending()) {
 		curctx = current_thread_info();
@@ -190,7 +190,7 @@ asmlinkage void do_softirq(void)
 		);
 	}
 
-	local_irq_restore(flags);
+	raw_local_irq_restore(flags);
 }
 
 EXPORT_SYMBOL(do_softirq);

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-13 14:01                                                                     ` K.R. Foley
@ 2005-07-13 19:41                                                                       ` Chuck Harding
  2005-07-13 19:45                                                                         ` Ingo Molnar
  2005-07-14 12:50                                                                       ` Karsten Wiese
  1 sibling, 1 reply; 101+ messages in thread
From: Chuck Harding @ 2005-07-13 19:41 UTC (permalink / raw)
  To: Linux Kernel Discussion List; +Cc: Ingo Molnar, karsten wiese

On Wed, 13 Jul 2005, K.R. Foley wrote:

> Ingo Molnar wrote:
>> * Chuck Harding <charding@llnl.gov> wrote:
>> 
>> 
>>>> CC [M]  sound/oss/emu10k1/midi.o
>>>> sound/oss/emu10k1/midi.c:48: error: syntax error before '__attribute__'
>>>> sound/oss/emu10k1/midi.c:48: error: syntax error before ')' token
>>>> 
>>>> Here's the offending line:
>>>>
>>>>  48 static DEFINE_SPINLOCK(midi_spinlock __attribute((unused)));
>>>> 
>>>> Lee
>>>> 
>>> 
>>> I got it to compile but it won't boot - it hangs right after the
>>> 'Uncompressing Linux... OK, booting the kernel' - I'm using .config
>>> from 51-27 (attached)
>> 
>> 
>> and -51-27 worked just fine? I've uploaded -29 with the -28 io-apic changes 
>> undone (will re-apply them once Karsten has figured out what's wrong).
>>
>> 	Ingo
>
> I too had the same problem booting -51-28 on my older SMP system at home. 
> -51-29 just booted fine.
>

I missed getting -51-29 but just booted up -51-30 and all is well. Thanks.
Just out of curiosity, what was changed between -51-28, 29, and 30?

-- 
Charles D. (Chuck) Harding <charding@llnl.gov>  Voice: 925-423-8879
Senior Computer Associate         ICCD            Fax: 925-423-6961
Lawrence Livermore National Laboratory      Computation Directorate
Livermore, CA USA  http://www.llnl.gov  GPG Public Key ID: B9EB6601
------------------ http://tinyurl.com/5w5ey -----------------------
-- I'm leaving my body to science fiction. --

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-13 19:41                                                                       ` Chuck Harding
@ 2005-07-13 19:45                                                                         ` Ingo Molnar
  2005-07-14 13:39                                                                           ` K.R. Foley
  0 siblings, 1 reply; 101+ messages in thread
From: Ingo Molnar @ 2005-07-13 19:45 UTC (permalink / raw)
  To: Chuck Harding; +Cc: Linux Kernel Discussion List, karsten wiese


* Chuck Harding <charding@llnl.gov> wrote:

> I missed getting -51-29 but just booted up -51-30 and all is well. 
> Thanks. Just out of curiosity, what was changed between -51-28, 29, 
> and 30?

-51-29 had new IO-APIC optimizations - and i reverted them in -51-30.

	Ingo

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-13 14:01                                                                     ` K.R. Foley
  2005-07-13 19:41                                                                       ` Chuck Harding
@ 2005-07-14 12:50                                                                       ` Karsten Wiese
  2005-07-14 13:56                                                                         ` K.R. Foley
                                                                                           ` (2 more replies)
  1 sibling, 3 replies; 101+ messages in thread
From: Karsten Wiese @ 2005-07-14 12:50 UTC (permalink / raw)
  To: K.R. Foley, Ingo Molnar, Chuck Harding, William Weston
  Cc: Linux Kernel Discussion List, Gene Heskett

[-- Attachment #1: Type: text/plain, Size: 1189 bytes --]

Am Mittwoch, 13. Juli 2005 16:01 schrieb K.R. Foley:
> Ingo Molnar wrote:
> > * Chuck Harding <charding@llnl.gov> wrote:
> > 
> > 
> >>>CC [M]  sound/oss/emu10k1/midi.o
> >>>sound/oss/emu10k1/midi.c:48: error: syntax error before '__attribute__'
> >>>sound/oss/emu10k1/midi.c:48: error: syntax error before ')' token
> >>>
> >>>Here's the offending line:
> >>>
> >>>  48 static DEFINE_SPINLOCK(midi_spinlock __attribute((unused)));
> >>>
> >>>Lee
> >>>
> >>
> >>I got it to compile but it won't boot - it hangs right after the
> >>'Uncompressing Linux... OK, booting the kernel' - I'm using .config
> >>from 51-27 (attached)
> > 
> > 
> > and -51-27 worked just fine? I've uploaded -29 with the -28 io-apic 
> > changes undone (will re-apply them once Karsten has figured out what's 
> > wrong).
> > 
> > 	Ingo
> 
> I too had the same problem booting -51-28 on my older SMP system at 
> home. -51-29 just booted fine.
> 
Have I corrected the other path of ioapic early initialization, which had lacked
virtual-address setup before ioapic_data[ioapic] was to be filled in -51-28?
Please test attached patch on top of -51-29 or later.
Also on Systems that liked -51-28.

    thanks, Karsten

[-- Attachment #2: io_apic-RT-51-27.diff --]
[-- Type: text/x-diff, Size: 23742 bytes --]

diff -ur ../linux-2.6.12-RT-51-23/arch/i386/kernel/apic.c ./arch/i386/kernel/apic.c
--- ../linux-2.6.12-RT-51-23/arch/i386/kernel/apic.c	2005-07-14 12:31:33.000000000 +0200
+++ linux-2.6.12-RT/arch/i386/kernel/apic.c	2005-07-14 12:34:53.000000000 +0200
@@ -832,10 +832,10 @@
 				ioapic_phys = (unsigned long)
 					      alloc_bootmem_pages(PAGE_SIZE);
 				ioapic_phys = __pa(ioapic_phys);
+				set_fixmap_nocache(idx, ioapic_phys);
+				printk(KERN_DEBUG "faked IOAPIC to %08lx (%08lx)\n",
+				       __fix_to_virt(idx), ioapic_phys);
 			}
-			set_fixmap_nocache(idx, ioapic_phys);
-			printk(KERN_DEBUG "mapped IOAPIC to %08lx (%08lx)\n",
-			       __fix_to_virt(idx), ioapic_phys);
 			idx++;
 		}
 	}
diff -ur ../linux-2.6.12-RT-51-23/arch/i386/kernel/io_apic.c ./arch/i386/kernel/io_apic.c
--- ../linux-2.6.12-RT-51-23/arch/i386/kernel/io_apic.c	2005-07-09 23:49:21.000000000 +0200
+++ linux-2.6.12-RT/arch/i386/kernel/io_apic.c	2005-07-14 12:34:54.000000000 +0200
@@ -31,6 +31,7 @@
 #include <linux/mc146818rtc.h>
 #include <linux/compiler.h>
 #include <linux/acpi.h>
+#include <linux/bootmem.h>
 
 #include <linux/sysdev.h>
 #include <asm/io.h>
@@ -55,11 +56,6 @@
 int sis_apic_bug = -1;
 
 /*
- * # of IRQ routing registers
- */
-int nr_ioapic_registers[MAX_IO_APICS];
-
-/*
  * Rough estimation of how many shared IRQs there are, can
  * be changed anytime.
  */
@@ -132,88 +128,74 @@
 # define IOAPIC_CACHE
 #endif
 
-#ifdef IOAPIC_CACHE
-# define MAX_IOAPIC_CACHE 512
 
-/*
- * Cache register values:
- */
-static struct {
-	unsigned int reg;
-	unsigned int val[MAX_IOAPIC_CACHE];
-} io_apic_cache[MAX_IO_APICS]
-		____cacheline_aligned_in_smp;
+
+struct ioapic_data_struct {
+	struct sys_device dev;
+	int nr_registers;	//  # of IRQ routing registers
+	volatile unsigned int *base;
+	struct IO_APIC_route_entry *entry;
+#ifdef IOAPIC_CACHE
+	unsigned int reg_set;
+	u32 cached_val[0];
 #endif
+};
 
-volatile unsigned int *io_apic_base[MAX_IO_APICS];
+static struct ioapic_data_struct *ioapic_data[MAX_IO_APICS];
 
-static inline unsigned int __raw_io_apic_read(unsigned int apic, unsigned int reg)
+
+static inline unsigned int __raw_io_apic_read(struct ioapic_data_struct *ioapic, unsigned int reg)
 {
-	volatile unsigned int *io_apic;
-#ifdef IOAPIC_CACHE
-	io_apic_cache[apic].reg = reg;
-#endif
-	io_apic = io_apic_base[apic];
-	io_apic[0] = reg;
-	return io_apic[4];
+# ifdef IOAPIC_CACHE
+	ioapic->reg_set = reg;
+# endif
+	ioapic->base[0] = reg;
+	return ioapic->base[4];
 }
 
-unsigned int raw_io_apic_read(unsigned int apic, unsigned int reg)
+
+# ifdef IOAPIC_CACHE
+static void __init ioapic_cache_init(struct ioapic_data_struct *ioapic)
 {
-	unsigned int val = __raw_io_apic_read(apic, reg);
+	int reg;
+	for (reg = 0; reg < (ioapic->nr_registers + 10); reg++)
+		ioapic->cached_val[reg] = __raw_io_apic_read(ioapic, reg);
+}
+# endif
 
-#ifdef IOAPIC_CACHE
-	io_apic_cache[apic].val[reg] = val;
-#endif
+
+static unsigned int raw_io_apic_read(struct ioapic_data_struct *ioapic, unsigned int reg)
+{
+	unsigned int val = __raw_io_apic_read(ioapic, reg);
+
+# ifdef IOAPIC_CACHE
+	ioapic->cached_val[reg] = val;
+# endif
 	return val;
 }
 
-unsigned int io_apic_read(unsigned int apic, unsigned int reg)
+static unsigned int io_apic_read(struct ioapic_data_struct *ioapic, unsigned int reg)
 {
-#ifdef IOAPIC_CACHE
-	if (unlikely(reg >= MAX_IOAPIC_CACHE)) {
-		static int once = 1;
-
-		if (once) {
-			once = 0;
-			printk("WARNING: ioapic register cache overflow: %d.\n",
-				reg);
-			dump_stack();
-		}
-		return __raw_io_apic_read(apic, reg);
-	}
-	if (io_apic_cache[apic].val[reg] && !sis_apic_bug) {
-		io_apic_cache[apic].reg = -1;
-		return io_apic_cache[apic].val[reg];
+# ifdef IOAPIC_CACHE
+	if (likely(!sis_apic_bug)) {
+		ioapic->reg_set = -1;
+		return ioapic->cached_val[reg];
 	}
-#endif
-	return raw_io_apic_read(apic, reg);
+# endif
+	return raw_io_apic_read(ioapic, reg);
 }
 
-void io_apic_write(unsigned int apic, unsigned int reg, unsigned int val)
+static void io_apic_write(struct ioapic_data_struct *ioapic, unsigned int reg, unsigned int val)
 {
-	volatile unsigned int *io_apic;
-#ifdef IOAPIC_CACHE
-	if (unlikely(reg >= MAX_IOAPIC_CACHE)) {
-		static int once = 1;
-
-		if (once) {
-			once = 0;
-			printk("WARNING: ioapic register cache overflow: %d.\n",
-				reg);
-			dump_stack();
-		}
-	} else
-		io_apic_cache[apic].val[reg] = val;
-#endif
-	io_apic = io_apic_base[apic];
-#ifdef IOAPIC_CACHE
-	io_apic_cache[apic].reg = reg;
-#endif
-	io_apic[0] = reg;
-	io_apic[4] = val;
+# ifdef IOAPIC_CACHE
+	ioapic->cached_val[reg] = val;
+	ioapic->reg_set = reg;
+# endif
+	ioapic->base[0] = reg;
+	ioapic->base[4] = val;
 }
 
+
 /*
  * Some systems need a POST flush or else level-triggered interrupts
  * generate lots of spurious interrupts due to the POST-ed write not
@@ -231,44 +213,42 @@
  *
  * Older SiS APIC requires we rewrite the index regiser
  */
-void io_apic_modify(unsigned int apic, unsigned int reg, unsigned int val)
+static void io_apic_modify(struct ioapic_data_struct *ioapic, unsigned int reg, unsigned int val)
 {
-	volatile unsigned int *io_apic;
-#ifdef IOAPIC_CACHE
-	io_apic_cache[apic].val[reg] = val;
-#endif
-	io_apic = io_apic_base[apic];
 #ifdef IOAPIC_CACHE
-	if (io_apic_cache[apic].reg != reg || sis_apic_bug) {
-		io_apic_cache[apic].reg = reg;
+	ioapic->cached_val[reg] = val;
+	if (ioapic->reg_set != reg || sis_apic_bug) {
+		ioapic->reg_set = reg;
 #else
 	if (unlikely(sis_apic_bug)) {
 #endif
-		io_apic[0] = reg;
+		ioapic->base[0] = reg;
 	}
-	io_apic[4] = val;
+	ioapic->base[4] = val;
 #ifndef IOAPIC_POSTFLUSH
 	if (unlikely(sis_apic_bug))
 #endif
 		/*
 		 * Force POST flush by reading:
  		 */
-		val = io_apic[4];
+		val = ioapic->base[4];
 }
 
 static void __modify_IO_APIC_irq (unsigned int irq, unsigned long enable, unsigned long disable)
 {
 	struct irq_pin_list *entry = irq_2_pin + irq;
 	unsigned int pin, val;
+	struct ioapic_data_struct *ioapic;
 
 	for (;;) {
 		pin = entry->pin;
 		if (pin == -1)
 			break;
-		val = io_apic_read(entry->apic, 0x10 + pin*2);
+		ioapic = ioapic_data[entry->apic];
+		val = io_apic_read(ioapic, 0x10 + pin*2);
 		val &= ~disable;
 		val |= enable;
-		io_apic_modify(entry->apic, 0x10 + pin*2, val);
+		io_apic_modify(ioapic, 0x10 + pin*2, val);
 		if (!entry->next)
 			break;
 		entry = irq_2_pin + entry->next;
@@ -305,15 +285,15 @@
 	spin_unlock_irqrestore(&ioapic_lock, flags);
 }
 
-static void clear_IO_APIC_pin(unsigned int apic, unsigned int pin)
+static void clear_IO_APIC_pin(struct ioapic_data_struct *ioapic, unsigned int pin)
 {
 	struct IO_APIC_route_entry entry;
 	unsigned long flags;
 	
 	/* Check delivery_mode to be sure we're not clearing an SMI pin */
 	spin_lock_irqsave(&ioapic_lock, flags);
-	*(((int*)&entry) + 0) = io_apic_read(apic, 0x10 + 2 * pin);
-	*(((int*)&entry) + 1) = io_apic_read(apic, 0x11 + 2 * pin);
+	*(((int*)&entry) + 0) = io_apic_read(ioapic, 0x10 + 2 * pin);
+	*(((int*)&entry) + 1) = io_apic_read(ioapic, 0x11 + 2 * pin);
 	spin_unlock_irqrestore(&ioapic_lock, flags);
 	if (entry.delivery_mode == dest_SMI)
 		return;
@@ -324,8 +304,8 @@
 	memset(&entry, 0, sizeof(entry));
 	entry.mask = 1;
 	spin_lock_irqsave(&ioapic_lock, flags);
-	io_apic_write(apic, 0x10 + 2 * pin, *(((int *)&entry) + 0));
-	io_apic_write(apic, 0x11 + 2 * pin, *(((int *)&entry) + 1));
+	io_apic_write(ioapic, 0x10 + 2 * pin, *(((int *)&entry) + 0));
+	io_apic_write(ioapic, 0x11 + 2 * pin, *(((int *)&entry) + 1));
 	spin_unlock_irqrestore(&ioapic_lock, flags);
 }
 
@@ -334,11 +314,12 @@
 	int apic, pin;
 
 	for (apic = 0; apic < nr_ioapics; apic++) {
+		struct ioapic_data_struct *ioapic = ioapic_data[apic];
 #ifdef IOAPIC_CACHE
-		io_apic_cache[apic].reg = -1;
+		ioapic->reg_set = -1;
 #endif
-		for (pin = 0; pin < nr_ioapic_registers[apic]; pin++)
-			clear_IO_APIC_pin(apic, pin);
+		for (pin = 0; pin < ioapic->nr_registers; pin++)
+			clear_IO_APIC_pin(ioapic, pin);
 	}
 }
 
@@ -357,7 +338,7 @@
 		pin = entry->pin;
 		if (pin == -1)
 			break;
-		io_apic_write(entry->apic, 0x10 + 1 + pin*2, apicid_value);
+		io_apic_write(ioapic_data[entry->apic], 0x10 + 1 + pin*2, apicid_value);
 		if (!entry->next)
 			break;
 		entry = irq_2_pin + entry->next;
@@ -947,7 +928,7 @@
 		return;
 
 	for (ioapic = 0; ioapic < nr_ioapics; ioapic++) {
-		for (pin = 0; pin < nr_ioapic_registers[ioapic]; pin++) {
+		for (pin = 0; pin < ioapic_data[ioapic]->nr_registers; pin++) {
 			irq_entry = find_irq_entry(ioapic, pin, mp_INT);
 			if (irq_entry == -1)
 				continue;
@@ -1190,7 +1171,7 @@
 			 */
 			i = irq = 0;
 			while (i < apic)
-				irq += nr_ioapic_registers[i++];
+				irq += ioapic_data[i++]->nr_registers;
 			irq += pin;
 
 			/*
@@ -1233,7 +1214,7 @@
 	int apic, idx, pin;
 
 	for (apic = 0; apic < nr_ioapics; apic++) {
-		for (pin = 0; pin < nr_ioapic_registers[apic]; pin++) {
+		for (pin = 0; pin < ioapic_data[apic]->nr_registers; pin++) {
 			idx = find_irq_entry(apic,pin,mp_INT);
 			if ((idx != -1) && (irq == pin_2_irq(idx,apic,pin)))
 				return irq_trigger(idx);
@@ -1305,11 +1286,13 @@
 	struct IO_APIC_route_entry entry;
 	int apic, pin, idx, irq, first_notcon = 1, vector;
 	unsigned long flags;
+	struct ioapic_data_struct *ioapic;
 
 	apic_printk(APIC_VERBOSE, KERN_DEBUG "init IO_APIC IRQs\n");
 
 	for (apic = 0; apic < nr_ioapics; apic++) {
-	for (pin = 0; pin < nr_ioapic_registers[apic]; pin++) {
+		ioapic = ioapic_data[apic];
+	for (pin = 0; pin < ioapic->nr_registers; pin++) {
 
 		/*
 		 * add it to the IO-APIC irq-routing table:
@@ -1366,8 +1349,8 @@
 				disable_8259A_irq(irq);
 		}
 		spin_lock_irqsave(&ioapic_lock, flags);
-		io_apic_write(apic, 0x11+2*pin, *(((int *)&entry)+1));
-		io_apic_write(apic, 0x10+2*pin, *(((int *)&entry)+0));
+		io_apic_write(ioapic, 0x11+2*pin, *(((int *)&entry)+1));
+		io_apic_write(ioapic, 0x10+2*pin, *(((int *)&entry)+0));
 		spin_unlock_irqrestore(&ioapic_lock, flags);
 	}
 	}
@@ -1432,6 +1415,7 @@
 	union IO_APIC_reg_02 reg_02;
 	union IO_APIC_reg_03 reg_03;
 	unsigned long flags;
+	struct ioapic_data_struct *ioapic;
 
 	if (apic_verbosity == APIC_QUIET)
 		return;
@@ -1439,7 +1423,7 @@
  	printk(KERN_DEBUG "number of MP IRQ sources: %d.\n", mp_irq_entries);
 	for (i = 0; i < nr_ioapics; i++)
 		printk(KERN_DEBUG "number of IO-APIC #%d registers: %d.\n",
-		       mp_ioapics[i].mpc_apicid, nr_ioapic_registers[i]);
+		       mp_ioapics[i].mpc_apicid, ioapic_data[i]->nr_registers);
 
 	/*
 	 * We are a bit conservative about what we expect.  We have to
@@ -1448,14 +1432,14 @@
 	printk(KERN_INFO "testing the IO APIC.......................\n");
 
 	for (apic = 0; apic < nr_ioapics; apic++) {
-
+	ioapic = ioapic_data[apic];
 	spin_lock_irqsave(&ioapic_lock, flags);
-	reg_00.raw = io_apic_read(apic, 0);
-	reg_01.raw = io_apic_read(apic, 1);
+	reg_00.raw = io_apic_read(ioapic, 0);
+	reg_01.raw = io_apic_read(ioapic, 1);
 	if (reg_01.bits.version >= 0x10)
-		reg_02.raw = io_apic_read(apic, 2);
+		reg_02.raw = io_apic_read(ioapic, 2);
 	if (reg_01.bits.version >= 0x20)
-		reg_03.raw = io_apic_read(apic, 3);
+		reg_03.raw = io_apic_read(ioapic, 3);
 	spin_unlock_irqrestore(&ioapic_lock, flags);
 
 	printk(KERN_DEBUG "IO APIC #%d......\n", mp_ioapics[apic].mpc_apicid);
@@ -1526,8 +1510,8 @@
 		struct IO_APIC_route_entry entry;
 
 		spin_lock_irqsave(&ioapic_lock, flags);
-		*(((int *)&entry)+0) = raw_io_apic_read(apic, 0x10+i*2);
-		*(((int *)&entry)+1) = raw_io_apic_read(apic, 0x11+i*2);
+		*(((int *)&entry)+0) = raw_io_apic_read(ioapic, 0x10+i*2);
+		*(((int *)&entry)+1) = raw_io_apic_read(ioapic, 0x11+i*2);
 		spin_unlock_irqrestore(&ioapic_lock, flags);
 
 		printk(KERN_DEBUG " %02x %03X %02X  ",
@@ -1720,9 +1704,7 @@
 
 static void __init enable_IO_APIC(void)
 {
-	union IO_APIC_reg_01 reg_01;
 	int i;
-	unsigned long flags;
 
 	for (i = 0; i < PIN_MAP_SIZE; i++) {
 		irq_2_pin[i].pin = -1;
@@ -1733,16 +1715,6 @@
 			pirq_entries[i] = -1;
 
 	/*
-	 * The number of IO-APIC IRQ registers (== #pins):
-	 */
-	for (i = 0; i < nr_ioapics; i++) {
-		spin_lock_irqsave(&ioapic_lock, flags);
-		reg_01.raw = io_apic_read(i, 1);
-		spin_unlock_irqrestore(&ioapic_lock, flags);
-		nr_ioapic_registers[i] = reg_01.bits.entries+1;
-	}
-
-	/*
 	 * Do not trust the IO-APIC being empty at bootup
 	 */
 	clear_IO_APIC();
@@ -1777,6 +1749,7 @@
 	int i;
 	unsigned char old_id;
 	unsigned long flags;
+	struct ioapic_data_struct *ioapic;
 
 	/*
 	 * This is broken; anything with a real cpu count has to
@@ -1788,10 +1761,10 @@
 	 * Set the IOAPIC ID to the value stored in the MPC table.
 	 */
 	for (apic = 0; apic < nr_ioapics; apic++) {
-
+		ioapic = ioapic_data[apic];
 		/* Read the register 0 value */
 		spin_lock_irqsave(&ioapic_lock, flags);
-		reg_00.raw = io_apic_read(apic, 0);
+		reg_00.raw = io_apic_read(ioapic, 0);
 		spin_unlock_irqrestore(&ioapic_lock, flags);
 		
 		old_id = mp_ioapics[apic].mpc_apicid;
@@ -1856,14 +1829,14 @@
 
 		reg_00.bits.ID = mp_ioapics[apic].mpc_apicid;
 		spin_lock_irqsave(&ioapic_lock, flags);
-		io_apic_write(apic, 0, reg_00.raw);
+		io_apic_write(ioapic, 0, reg_00.raw);
 		spin_unlock_irqrestore(&ioapic_lock, flags);
 
 		/*
 		 * Sanity check
 		 */
 		spin_lock_irqsave(&ioapic_lock, flags);
-		reg_00.raw = io_apic_read(apic, 0);
+		reg_00.raw = io_apic_read(ioapic, 0);
 		spin_unlock_irqrestore(&ioapic_lock, flags);
 		if (reg_00.bits.ID != mp_ioapics[apic].mpc_apicid)
 			printk("could not set ID!\n");
@@ -2230,7 +2203,7 @@
  * cycles as some i82489DX-based boards have glue logic that keeps the
  * 8259A interrupt line asserted until INTA.  --macro
  */
-static inline void unlock_ExtINT_logic(void)
+static void __init unlock_ExtINT_logic(void)
 {
 	int pin, i;
 	struct IO_APIC_route_entry entry0, entry1;
@@ -2291,7 +2264,7 @@
  * is so screwy.  Thanks to Brian Perkins for testing/hacking this beast
  * fanatically on his truly buggy board.
  */
-static inline void check_timer(void)
+static void __init check_timer(void)
 {
 	int pin1, pin2;
 	int vector;
@@ -2402,6 +2375,46 @@
 		"report.  Then try booting with the 'noapic' option");
 }
 
+void __init setup_IO_APIC_early(int _ioapic)
+{
+	union IO_APIC_reg_01 reg_01;
+	unsigned long flags;
+	int size, nr_ioapic_registers;
+	volatile int *ioapic;
+	if (ioapic_data[_ioapic]) {
+		printk("been in %s before !!!!!\n", __FUNCTION__);
+		return;
+	}
+
+	set_fixmap_nocache(FIX_IO_APIC_BASE_0 + _ioapic, mp_ioapics[_ioapic].mpc_apicaddr);
+	printk(KERN_DEBUG "mapped IOAPIC to %08lx (%08lx)\n",
+	       __fix_to_virt(FIX_IO_APIC_BASE_0 + _ioapic), mp_ioapics[_ioapic].mpc_apicaddr);
+	/*
+	 * The number of IO-APIC IRQ registers (== #pins):
+	 */
+	ioapic = IO_APIC_BASE(_ioapic);
+	spin_lock_irqsave(&ioapic_lock, flags);
+	ioapic[0] = 1;
+	reg_01.raw = ioapic[4];
+	spin_unlock_irqrestore(&ioapic_lock, flags);
+	nr_ioapic_registers = reg_01.bits.entries+1;
+
+	/*
+	 * Initialsize ioapic_data struct:
+	 */
+	size = sizeof(struct ioapic_data_struct);
+#ifdef IOAPIC_CACHE
+	size += 0x10 * sizeof(u32) + nr_ioapic_registers * sizeof(struct IO_APIC_route_entry);
+#endif
+	ioapic_data[_ioapic] = alloc_bootmem(size);
+	memset(ioapic_data[_ioapic], 0, size);
+	ioapic_data[_ioapic]->nr_registers = nr_ioapic_registers;
+	ioapic_data[_ioapic]->base = ioapic;
+#ifdef IOAPIC_CACHE
+	ioapic_cache_init(ioapic_data[_ioapic]);
+#endif
+}
+
 /*
  *
  * IRQ's that are handled by the PIC in the MPS IOAPIC case.
@@ -2449,25 +2462,22 @@
 
 late_initcall(io_apic_bug_finalize);
 
-struct sysfs_ioapic_data {
-	struct sys_device dev;
-	struct IO_APIC_route_entry entry[0];
-};
-static struct sysfs_ioapic_data * mp_ioapic_data[MAX_IO_APICS];
-
 static int ioapic_suspend(struct sys_device *dev, pm_message_t state)
 {
 	struct IO_APIC_route_entry *entry;
-	struct sysfs_ioapic_data *data;
+	struct ioapic_data_struct *data;
 	unsigned long flags;
 	int i;
+	struct ioapic_data_struct *ioapic;
 	
-	data = container_of(dev, struct sysfs_ioapic_data, dev);
+	data = container_of(dev, struct ioapic_data_struct, dev);
 	entry = data->entry;
+
+	ioapic = ioapic_data[dev->id];
 	spin_lock_irqsave(&ioapic_lock, flags);
-	for (i = 0; i < nr_ioapic_registers[dev->id]; i ++, entry ++ ) {
-		*(((int *)entry) + 1) = io_apic_read(dev->id, 0x11 + 2 * i);
-		*(((int *)entry) + 0) = io_apic_read(dev->id, 0x10 + 2 * i);
+	for (i = 0; i < ioapic_data[dev->id]->nr_registers; i ++, entry ++) {
+		*(((int *)entry) + 1) = io_apic_read(ioapic, 0x11 + 2 * i);
+		*(((int *)entry) + 0) = io_apic_read(ioapic, 0x10 + 2 * i);
 	}
 	spin_unlock_irqrestore(&ioapic_lock, flags);
 
@@ -2477,23 +2487,25 @@
 static int ioapic_resume(struct sys_device *dev)
 {
 	struct IO_APIC_route_entry *entry;
-	struct sysfs_ioapic_data *data;
+	struct ioapic_data_struct *data;
 	unsigned long flags;
 	union IO_APIC_reg_00 reg_00;
 	int i;
-	
-	data = container_of(dev, struct sysfs_ioapic_data, dev);
+	struct ioapic_data_struct *ioapic;
+
+	data = container_of(dev, struct ioapic_data_struct, dev);
 	entry = data->entry;
 
+	ioapic = ioapic_data[dev->id];
 	spin_lock_irqsave(&ioapic_lock, flags);
-	reg_00.raw = io_apic_read(dev->id, 0);
+	reg_00.raw = io_apic_read(ioapic, 0);
 	if (reg_00.bits.ID != mp_ioapics[dev->id].mpc_apicid) {
 		reg_00.bits.ID = mp_ioapics[dev->id].mpc_apicid;
-		io_apic_write(dev->id, 0, reg_00.raw);
+		io_apic_write(ioapic, 0, reg_00.raw);
 	}
-	for (i = 0; i < nr_ioapic_registers[dev->id]; i ++, entry ++ ) {
-		io_apic_write(dev->id, 0x11+2*i, *(((int *)entry)+1));
-		io_apic_write(dev->id, 0x10+2*i, *(((int *)entry)+0));
+	for (i = 0; i < ioapic_data[dev->id]->nr_registers; i ++, entry ++) {
+		io_apic_write(ioapic, 0x11+2*i, *(((int *)entry)+1));
+		io_apic_write(ioapic, 0x10+2*i, *(((int *)entry)+0));
 	}
 	spin_unlock_irqrestore(&ioapic_lock, flags);
 
@@ -2516,21 +2528,20 @@
 		return error;
 
 	for (i = 0; i < nr_ioapics; i++ ) {
-		size = sizeof(struct sys_device) + nr_ioapic_registers[i] 
-			* sizeof(struct IO_APIC_route_entry);
-		mp_ioapic_data[i] = kmalloc(size, GFP_KERNEL);
-		if (!mp_ioapic_data[i]) {
+		size = ioapic_data[i]->nr_registers * sizeof(struct IO_APIC_route_entry);
+		ioapic_data[i]->entry = kmalloc(size, GFP_KERNEL);
+		if (!ioapic_data[i]->entry) {
 			printk(KERN_ERR "Can't suspend/resume IOAPIC %d\n", i);
 			continue;
 		}
-		memset(mp_ioapic_data[i], 0, size);
-		dev = &mp_ioapic_data[i]->dev;
+		memset(ioapic_data[i]->entry, 0, size);
+		dev = &ioapic_data[i]->dev;
 		dev->id = i; 
 		dev->cls = &ioapic_sysdev_class;
 		error = sysdev_register(dev);
 		if (error) {
-			kfree(mp_ioapic_data[i]);
-			mp_ioapic_data[i] = NULL;
+			kfree(ioapic_data[i]->entry);
+			ioapic_data[i]->entry = NULL;
 			printk(KERN_ERR "Can't suspend/resume IOAPIC %d\n", i);
 			continue;
 		}
@@ -2547,13 +2558,14 @@
 
 #ifdef CONFIG_ACPI_BOOT
 
-int __init io_apic_get_unique_id (int ioapic, int apic_id)
+int __init io_apic_get_unique_id (int apic, int apic_id)
 {
 	union IO_APIC_reg_00 reg_00;
 	static physid_mask_t apic_id_map = PHYSID_MASK_NONE;
 	physid_mask_t tmp;
 	unsigned long flags;
 	int i = 0;
+	struct ioapic_data_struct *ioapic = ioapic_data[apic];
 
 	/*
 	 * The P4 platform supports up to 256 APIC IDs on two separate APIC 
@@ -2573,7 +2585,7 @@
 
 	if (apic_id >= get_physical_broadcast()) {
 		printk(KERN_WARNING "IOAPIC[%d]: Invalid apic_id %d, trying "
-			"%d\n", ioapic, apic_id, reg_00.bits.ID);
+			"%d\n", apic, apic_id, reg_00.bits.ID);
 		apic_id = reg_00.bits.ID;
 	}
 
@@ -2592,7 +2604,7 @@
 			panic("Max apic_id exceeded!\n");
 
 		printk(KERN_WARNING "IOAPIC[%d]: apic_id %d already used, "
-			"trying %d\n", ioapic, apic_id, i);
+			"trying %d\n", apic, apic_id, i);
 
 		apic_id = i;
 	} 
@@ -2610,50 +2622,50 @@
 
 		/* Sanity check */
 		if (reg_00.bits.ID != apic_id)
-			panic("IOAPIC[%d]: Unable change apic_id!\n", ioapic);
+			panic("IOAPIC[%d]: Unable change apic_id!\n", apic);
 	}
 
 	apic_printk(APIC_VERBOSE, KERN_INFO
-			"IOAPIC[%d]: Assigned apic_id %d\n", ioapic, apic_id);
+			"IOAPIC[%d]: Assigned apic_id %d\n", apic, apic_id);
 
 	return apic_id;
 }
 
 
-int __init io_apic_get_version (int ioapic)
+int __init io_apic_get_version (int apic)
 {
 	union IO_APIC_reg_01	reg_01;
 	unsigned long flags;
 
 	spin_lock_irqsave(&ioapic_lock, flags);
-	reg_01.raw = io_apic_read(ioapic, 1);
+	reg_01.raw = io_apic_read(ioapic_data[apic], 1);
 	spin_unlock_irqrestore(&ioapic_lock, flags);
 
 	return reg_01.bits.version;
 }
 
 
-int __init io_apic_get_redir_entries (int ioapic)
+int __init io_apic_get_redir_entries (int apic)
 {
 	union IO_APIC_reg_01	reg_01;
 	unsigned long flags;
 
 	spin_lock_irqsave(&ioapic_lock, flags);
-	reg_01.raw = io_apic_read(ioapic, 1);
+	reg_01.raw = io_apic_read(ioapic_data[apic], 1);
 	spin_unlock_irqrestore(&ioapic_lock, flags);
 
 	return reg_01.bits.entries;
 }
 
 
-int io_apic_set_pci_routing (int ioapic, int pin, int irq, int edge_level, int active_high_low)
+int io_apic_set_pci_routing (int apic, int pin, int irq, int edge_level, int active_high_low)
 {
 	struct IO_APIC_route_entry entry;
 	unsigned long flags;
-
+	struct ioapic_data_struct *ioapic = ioapic_data[apic];
 	if (!IO_APIC_IRQ(irq)) {
 		printk(KERN_ERR "IOAPIC[%d]: Invalid reference to IRQ 0\n",
-			ioapic);
+			apic);
 		return -EINVAL;
 	}
 
@@ -2676,18 +2688,18 @@
 	 * IRQs < 16 are already in the irq_2_pin[] map
 	 */
 	if (irq >= 16)
-		add_pin_to_irq(irq, ioapic, pin);
+		add_pin_to_irq(irq, apic, pin);
 
 	entry.vector = assign_irq_vector(irq);
 
 	apic_printk(APIC_DEBUG, KERN_DEBUG "IOAPIC[%d]: Set PCI routing entry "
-		"(%d-%d -> 0x%x -> IRQ %d Mode:%i Active:%i)\n", ioapic,
-		mp_ioapics[ioapic].mpc_apicid, pin, entry.vector, irq,
+		"(%d-%d -> 0x%x -> IRQ %d Mode:%i Active:%i)\n", apic,
+		mp_ioapics[apic].mpc_apicid, pin, entry.vector, irq,
 		edge_level, active_high_low);
 
 	ioapic_register_intr(irq, entry.vector, edge_level);
 
-	if (!ioapic && (irq < 16))
+	if (!apic && (irq < 16))
 		disable_8259A_irq(irq);
 
 	spin_lock_irqsave(&ioapic_lock, flags);
diff -ur ../linux-2.6.12-RT-51-23/arch/i386/kernel/mpparse.c ./arch/i386/kernel/mpparse.c
--- ../linux-2.6.12-RT-51-23/arch/i386/kernel/mpparse.c	2005-07-09 23:53:19.000000000 +0200
+++ linux-2.6.12-RT/arch/i386/kernel/mpparse.c	2005-07-14 12:24:25.000000000 +0200
@@ -263,7 +263,7 @@
 		return;
 	}
 	mp_ioapics[nr_ioapics] = *m;
-	io_apic_base[nr_ioapics] = IO_APIC_BASE(nr_ioapics);
+	setup_IO_APIC_early(nr_ioapics);
 	nr_ioapics++;
 }
 
@@ -914,8 +914,7 @@
 	mp_ioapics[idx].mpc_flags = MPC_APIC_USABLE;
 	mp_ioapics[idx].mpc_apicaddr = address;
 
-	set_fixmap_nocache(FIX_IO_APIC_BASE_0 + idx, address);
-	io_apic_base[idx] = IO_APIC_BASE(idx);
+	setup_IO_APIC_early(idx);
 	mp_ioapics[idx].mpc_apicid = io_apic_get_unique_id(idx, id);
 	mp_ioapics[idx].mpc_apicver = io_apic_get_version(idx);
 	
diff -ur ../linux-2.6.12-RT-51-23/include/asm-i386/io_apic.h ./include/asm-i386/io_apic.h
--- ../linux-2.6.12-RT-51-23/include/asm-i386/io_apic.h	2005-07-09 23:55:50.000000000 +0200
+++ linux-2.6.12-RT/include/asm-i386/io_apic.h	2005-07-14 11:39:33.000000000 +0200
@@ -155,15 +155,10 @@
 /* MP IRQ source entries */
 extern struct mpc_config_intsrc mp_irqs[MAX_IRQ_SOURCES];
 
-extern volatile unsigned int *io_apic_base[MAX_IO_APICS];
-
 /* non-0 if default (table-less) MP configuration */
 extern int mpc_default_type;
 
-extern unsigned int raw_io_apic_read(unsigned int apic, unsigned int reg);
-extern unsigned int io_apic_read(unsigned int apic, unsigned int reg);
-extern void io_apic_write(unsigned int apic, unsigned int reg, unsigned int value);
-extern void io_apic_modify(unsigned int apic, unsigned int reg, unsigned int value);
+extern void setup_IO_APIC_early(int ioapic);
 extern int sis_apic_bug;
 
 /* 1 if "noapic" boot option passed */

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-13 19:45                                                                         ` Ingo Molnar
@ 2005-07-14 13:39                                                                           ` K.R. Foley
  0 siblings, 0 replies; 101+ messages in thread
From: K.R. Foley @ 2005-07-14 13:39 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Chuck Harding, Linux Kernel Discussion List, karsten wiese

Ingo Molnar wrote:
> * Chuck Harding <charding@llnl.gov> wrote:
> 
> 
>>I missed getting -51-29 but just booted up -51-30 and all is well. 
>>Thanks. Just out of curiosity, what was changed between -51-28, 29, 
>>and 30?
> 
> 
> -51-29 had new IO-APIC optimizations - and i reverted them in -51-30.
> 
> 	Ingo

Ingo,

I just noticed that the keyboard repeat problem is back in a bad way in 
-51-30. I was not seeing this before I left this PC about 16     hours 
ago. And the uptime is:
  08:34:10 up 18:46,  7 users,  load average: 3.32, 3.24, 2.53

-- 
    kr

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-14 12:50                                                                       ` Karsten Wiese
@ 2005-07-14 13:56                                                                         ` K.R. Foley
  2005-07-14 14:10                                                                           ` K.R. Foley
  2005-07-14 19:49                                                                         ` Chuck Harding
  2005-07-16 17:15                                                                         ` Ingo Molnar
  2 siblings, 1 reply; 101+ messages in thread
From: K.R. Foley @ 2005-07-14 13:56 UTC (permalink / raw)
  To: Karsten Wiese
  Cc: Ingo Molnar, Chuck Harding, William Weston,
	Linux Kernel Discussion List, Gene Heskett

Karsten Wiese wrote:
> Am Mittwoch, 13. Juli 2005 16:01 schrieb K.R. Foley:
> 
>>Ingo Molnar wrote:
>>
>>>* Chuck Harding <charding@llnl.gov> wrote:
>>>
>>>
>>>
>>>>>CC [M]  sound/oss/emu10k1/midi.o
>>>>>sound/oss/emu10k1/midi.c:48: error: syntax error before '__attribute__'
>>>>>sound/oss/emu10k1/midi.c:48: error: syntax error before ')' token
>>>>>
>>>>>Here's the offending line:
>>>>>
>>>>> 48 static DEFINE_SPINLOCK(midi_spinlock __attribute((unused)));
>>>>>
>>>>>Lee
>>>>>
>>>>
>>>>I got it to compile but it won't boot - it hangs right after the
>>>>'Uncompressing Linux... OK, booting the kernel' - I'm using .config
>>>
>>>>from 51-27 (attached)
>>>
>>>
>>>and -51-27 worked just fine? I've uploaded -29 with the -28 io-apic 
>>>changes undone (will re-apply them once Karsten has figured out what's 
>>>wrong).
>>>
>>>	Ingo
>>
>>I too had the same problem booting -51-28 on my older SMP system at 
>>home. -51-29 just booted fine.
>>
> 
> Have I corrected the other path of ioapic early initialization, which had lacked
> virtual-address setup before ioapic_data[ioapic] was to be filled in -51-28?
> Please test attached patch on top of -51-29 or later.
> Also on Systems that liked -51-28.
> 
>     thanks, Karsten
> 
> 
Karsten,

Just booted on my 2.6 dual Xeon w/HT and thus far all is well. I am 
still building on the older SMP system that didn't like -51-28. Will 
report after I try booting that one.

<snip>

-- 
    kr

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-14 13:56                                                                         ` K.R. Foley
@ 2005-07-14 14:10                                                                           ` K.R. Foley
  2005-07-14 14:11                                                                             ` K.R. Foley
  0 siblings, 1 reply; 101+ messages in thread
From: K.R. Foley @ 2005-07-14 14:10 UTC (permalink / raw)
  To: K.R. Foley
  Cc: Karsten Wiese, Ingo Molnar, Chuck Harding, William Weston,
	Linux Kernel Discussion List, Gene Heskett

K.R. Foley wrote:
> Karsten Wiese wrote:
> 
>> Am Mittwoch, 13. Juli 2005 16:01 schrieb K.R. Foley:
>>
>>> Ingo Molnar wrote:
>>>
>>>> * Chuck Harding <charding@llnl.gov> wrote:
>>>>
>>>>
>>>>
>>>>>> CC [M]  sound/oss/emu10k1/midi.o
>>>>>> sound/oss/emu10k1/midi.c:48: error: syntax error before 
>>>>>> '__attribute__'
>>>>>> sound/oss/emu10k1/midi.c:48: error: syntax error before ')' token
>>>>>>
>>>>>> Here's the offending line:
>>>>>>
>>>>>> 48 static DEFINE_SPINLOCK(midi_spinlock __attribute((unused)));
>>>>>>
>>>>>> Lee
>>>>>>
>>>>>
>>>>> I got it to compile but it won't boot - it hangs right after the
>>>>> 'Uncompressing Linux... OK, booting the kernel' - I'm using .config
>>>>
>>>>
>>>>> from 51-27 (attached)
>>>>
>>>>
>>>>
>>>> and -51-27 worked just fine? I've uploaded -29 with the -28 io-apic 
>>>> changes undone (will re-apply them once Karsten has figured out 
>>>> what's wrong).
>>>>
>>>>     Ingo
>>>
>>>
>>> I too had the same problem booting -51-28 on my older SMP system at 
>>> home. -51-29 just booted fine.
>>>
>>
>> Have I corrected the other path of ioapic early initialization, which 
>> had lacked
>> virtual-address setup before ioapic_data[ioapic] was to be filled in 
>> -51-28?
>> Please test attached patch on top of -51-29 or later.
>> Also on Systems that liked -51-28.
>>
>>     thanks, Karsten
>>
>>
> Karsten,
> 
> Just booted on my 2.6 dual Xeon w/HT and thus far all is well. I am 
> still building on the older SMP system that didn't like -51-28. Will 
> report after I try booting that one.
> 
> <snip>
> 

Just booted on my older SMP box that barfed on -51-28. It would appear 
that the init problem is resolved.

-- 
    kr

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-14 14:10                                                                           ` K.R. Foley
@ 2005-07-14 14:11                                                                             ` K.R. Foley
  0 siblings, 0 replies; 101+ messages in thread
From: K.R. Foley @ 2005-07-14 14:11 UTC (permalink / raw)
  To: K.R. Foley
  Cc: Karsten Wiese, Ingo Molnar, Chuck Harding, William Weston,
	Linux Kernel Discussion List, Gene Heskett

K.R. Foley wrote:
> K.R. Foley wrote:
> 
>> Karsten Wiese wrote:
>>
>>> Am Mittwoch, 13. Juli 2005 16:01 schrieb K.R. Foley:
>>>
>>>> Ingo Molnar wrote:
>>>>
>>>>> * Chuck Harding <charding@llnl.gov> wrote:
>>>>>
>>>>>
>>>>>
>>>>>>> CC [M]  sound/oss/emu10k1/midi.o
>>>>>>> sound/oss/emu10k1/midi.c:48: error: syntax error before 
>>>>>>> '__attribute__'
>>>>>>> sound/oss/emu10k1/midi.c:48: error: syntax error before ')' token
>>>>>>>
>>>>>>> Here's the offending line:
>>>>>>>
>>>>>>> 48 static DEFINE_SPINLOCK(midi_spinlock __attribute((unused)));
>>>>>>>
>>>>>>> Lee
>>>>>>>
>>>>>>
>>>>>> I got it to compile but it won't boot - it hangs right after the
>>>>>> 'Uncompressing Linux... OK, booting the kernel' - I'm using .config
>>>>>
>>>>>
>>>>>
>>>>>> from 51-27 (attached)
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> and -51-27 worked just fine? I've uploaded -29 with the -28 io-apic 
>>>>> changes undone (will re-apply them once Karsten has figured out 
>>>>> what's wrong).
>>>>>
>>>>>     Ingo
>>>>
>>>>
>>>>
>>>> I too had the same problem booting -51-28 on my older SMP system at 
>>>> home. -51-29 just booted fine.
>>>>
>>>
>>> Have I corrected the other path of ioapic early initialization, which 
>>> had lacked
>>> virtual-address setup before ioapic_data[ioapic] was to be filled in 
>>> -51-28?
>>> Please test attached patch on top of -51-29 or later.
>>> Also on Systems that liked -51-28.
>>>
>>>     thanks, Karsten
>>>
>>>
>> Karsten,
>>
>> Just booted on my 2.6 dual Xeon w/HT and thus far all is well. I am 
>> still building on the older SMP system that didn't like -51-28. Will 
>> report after I try booting that one.
>>
>> <snip>
>>
> 
> Just booted on my older SMP box that barfed on -51-28. It would appear 
> that the init problem is resolved.
> 

DOH! All of the above is on -51-30 with Karsten's patch applied.

-- 
    kr

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-14 12:50                                                                       ` Karsten Wiese
  2005-07-14 13:56                                                                         ` K.R. Foley
@ 2005-07-14 19:49                                                                         ` Chuck Harding
  2005-07-16 17:15                                                                         ` Ingo Molnar
  2 siblings, 0 replies; 101+ messages in thread
From: Chuck Harding @ 2005-07-14 19:49 UTC (permalink / raw)
  To: Linux Kernel Discussion List

On Thu, 14 Jul 2005, Karsten Wiese wrote:

> Have I corrected the other path of ioapic early initialization, which had lacked
> virtual-address setup before ioapic_data[ioapic] was to be filled in -51-28?
> Please test attached patch on top of -51-29 or later.
> Also on Systems that liked -51-28.
>
>    thanks, Karsten
>

I applied your patch on top of -51-30 and all is well. I am applied it on top 
of -51-29 just for the heck of it and it's working well too, FWIW.

-- 
Charles D. (Chuck) Harding <charding@llnl.gov>  Voice: 925-423-8879
Senior Computer Associate         ICCD            Fax: 925-423-6961
Lawrence Livermore National Laboratory      Computation Directorate
Livermore, CA USA  http://www.llnl.gov  GPG Public Key ID: B9EB6601
------------------ http://tinyurl.com/5w5ey -----------------------
-- Too bad stupidity isn't painful. --

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-13 15:30                                                                     ` Ingo Molnar
@ 2005-07-14 19:58                                                                       ` Alistair John Strachan
  2005-07-14 20:16                                                                         ` Lee Revell
  0 siblings, 1 reply; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-14 19:58 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

On Wednesday 13 Jul 2005 16:30, Ingo Molnar wrote:
> * Ingo Molnar <mingo@elte.hu> wrote:
> > it worked upon the first try, and indeed my testbox crashed within 10
> > seconds:
> >
> >  BUG: Unable to handle kernel NULL pointer dereference
> >  BUG: Unable to handle kernel NULL pointer dereference at virtual address
> > 00000006
>
> a couple of crashes later i got an important clue:
>
>  BUG: bad soft irq-flag value 00000f64, openvpn/3386!
>   [<c0104052>] dump_stack+0x1f/0x21 (20)
>   [<c013b883>] check_soft_flags+0x73/0xc9 (24)
>   [<00000f78>] 0xf78 (1066836133)
>
> it turns out that a small portion of the softirq processing path was
> still using the soft IRQ-flag, instead of the raw IRQ-flag! Given enough
> irq and softirq workload, we were interrupted in a piece of code where
> the data structure was inconsistent. (tinfo.task was already changed,
> but %esp not yet) Since interrupts were enabled during the crash
> printout, it would crash again and again as it got more interrupts. The
> backtrace printout crashed too due to the inconsistency. That's why you
> got those repeat ============= lines.
>
> the patch below should fix this bug and i've uploaded the -51-30 patch
> with this fix included. Could you check whether 4K stacks are now stable
> for you under PREEMPT_RT?
>
> so your intuitition about this being related to 4K stacks was completely
> right.
>

Ingo,

This fixes the issue. It's one more 'crossed t' on the rt-preempt patches.

I'll let you know if I discover anything else; your work has already allowed 
us to bring the responsiveness of our instrument to 300us which is low enough 
for the real-time PCR industry. Thanks a lot!

This debugging process has been extremely eye opening, thanks for the detailed 
descriptions of what's gone wrong at every stage. I just wish I was competent 
enough to fix these things myself.

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-14 19:58                                                                       ` Alistair John Strachan
@ 2005-07-14 20:16                                                                         ` Lee Revell
  2005-07-15 22:12                                                                           ` Alistair John Strachan
  0 siblings, 1 reply; 101+ messages in thread
From: Lee Revell @ 2005-07-14 20:16 UTC (permalink / raw)
  To: Alistair John Strachan; +Cc: Ingo Molnar, linux-kernel

On Thu, 2005-07-14 at 20:58 +0100, Alistair John Strachan wrote:
> the responsiveness of our instrument to 300us which is low enough 
> for the real-time PCR industry

PCR, as in polymerase chain reaction?  They can do that in realtime?
Impressive.

Lee


^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-14 20:16                                                                         ` Lee Revell
@ 2005-07-15 22:12                                                                           ` Alistair John Strachan
  0 siblings, 0 replies; 101+ messages in thread
From: Alistair John Strachan @ 2005-07-15 22:12 UTC (permalink / raw)
  To: Lee Revell; +Cc: Ingo Molnar, linux-kernel

On Thursday 14 Jul 2005 21:16, Lee Revell wrote:
> On Thu, 2005-07-14 at 20:58 +0100, Alistair John Strachan wrote:
> > the responsiveness of our instrument to 300us which is low enough
> > for the real-time PCR industry
>
> PCR, as in polymerase chain reaction?  They can do that in realtime?
> Impressive.
>
> Lee

Yes, and yes. And it is impressive.

And Linux will power a major instrument in the future.

-- 
Cheers,
Alistair.

personal:   alistair()devzero!co!uk
university: s0348365()sms!ed!ac!uk
student:    CS/CSim Undergraduate
contact:    1F2 55 South Clerk Street,
            Edinburgh. EH8 9PP.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-14 12:50                                                                       ` Karsten Wiese
  2005-07-14 13:56                                                                         ` K.R. Foley
  2005-07-14 19:49                                                                         ` Chuck Harding
@ 2005-07-16 17:15                                                                         ` Ingo Molnar
  2005-07-16 19:01                                                                           ` K.R. Foley
  2005-07-17 12:07                                                                           ` Karsten Wiese
  2 siblings, 2 replies; 101+ messages in thread
From: Ingo Molnar @ 2005-07-16 17:15 UTC (permalink / raw)
  To: Karsten Wiese
  Cc: K.R. Foley, Chuck Harding, William Weston,
	Linux Kernel Discussion List, Gene Heskett


* Karsten Wiese <annabellesgarden@yahoo.de> wrote:

> Have I corrected the other path of ioapic early initialization, which 
> had lacked virtual-address setup before ioapic_data[ioapic] was to be 
> filled in -51-28? Please test attached patch on top of -51-29 or 
> later. Also on Systems that liked -51-28.

thanks - i've applied it to my tree and have released the -51-31 patch.  
It looks good on my testboxes.

	Ingo

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-16 17:15                                                                         ` Ingo Molnar
@ 2005-07-16 19:01                                                                           ` K.R. Foley
  2005-07-17 12:07                                                                           ` Karsten Wiese
  1 sibling, 0 replies; 101+ messages in thread
From: K.R. Foley @ 2005-07-16 19:01 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Karsten Wiese, Chuck Harding, William Weston,
	Linux Kernel Discussion List, Gene Heskett

Ingo Molnar wrote:
> * Karsten Wiese <annabellesgarden@yahoo.de> wrote:
> 
> 
>>Have I corrected the other path of ioapic early initialization, which 
>>had lacked virtual-address setup before ioapic_data[ioapic] was to be 
>>filled in -51-28? Please test attached patch on top of -51-29 or 
>>later. Also on Systems that liked -51-28.
> 
> 
> thanks - i've applied it to my tree and have released the -51-31 patch.  
> It looks good on my testboxes.
> 
> 	Ingo
> 

I have booted this on my older SMP system (the one that wouldn't boot
-51-28) as well as an older duron box and thus far all is well.

-- 
   kr

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-16 17:15                                                                         ` Ingo Molnar
  2005-07-16 19:01                                                                           ` K.R. Foley
@ 2005-07-17 12:07                                                                           ` Karsten Wiese
  2005-07-18 15:46                                                                             ` K.R. Foley
  2005-07-19 11:14                                                                             ` Karsten Wiese
  1 sibling, 2 replies; 101+ messages in thread
From: Karsten Wiese @ 2005-07-17 12:07 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: K.R. Foley, Chuck Harding, William Weston,
	Linux Kernel Discussion List, Gene Heskett

[-- Attachment #1: Type: text/plain, Size: 647 bytes --]

Am Samstag, 16. Juli 2005 19:15 schrieb Ingo Molnar:
> 
> * Karsten Wiese <annabellesgarden@yahoo.de> wrote:
> 
> > Have I corrected the other path of ioapic early initialization, which 
> > had lacked virtual-address setup before ioapic_data[ioapic] was to be 
> > filled in -51-28? Please test attached patch on top of -51-29 or 
> > later. Also on Systems that liked -51-28.
> 
> thanks - i've applied it to my tree and have released the -51-31 patch.  
> It looks good on my testboxes.
> 
Found another error:
the ioapic cache isn't fully initialized in -51-31's ioapic_cache_init().
Please apply attached patch on top of -51-31.

    Karsten

[-- Attachment #2: io_apic-RT-51-31 --]
[-- Type: text/x-diff, Size: 475 bytes --]

--- linux-2.6.12-RT-51-31/arch/i386/kernel/io_apic.c	2005-07-17 12:40:35.000000000 +0200
+++ linux-2.6.12-RT/arch/i386/kernel/io_apic.c	2005-07-17 13:33:06.000000000 +0200
@@ -158,7 +158,7 @@
 static void __init ioapic_cache_init(struct ioapic_data_struct *ioapic)
 {
 	int reg;
-	for (reg = 0; reg < (ioapic->nr_registers + 10); reg++)
+	for (reg = 0; reg < (0x10 + 2 * ioapic->nr_registers); reg++)
 		ioapic->cached_val[reg] = __raw_io_apic_read(ioapic, reg);
 }
 # endif

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-17 12:07                                                                           ` Karsten Wiese
@ 2005-07-18 15:46                                                                             ` K.R. Foley
  2005-07-19 11:14                                                                             ` Karsten Wiese
  1 sibling, 0 replies; 101+ messages in thread
From: K.R. Foley @ 2005-07-18 15:46 UTC (permalink / raw)
  To: Karsten Wiese
  Cc: Ingo Molnar, Chuck Harding, William Weston,
	Linux Kernel Discussion List, Gene Heskett

Karsten Wiese wrote:
> Am Samstag, 16. Juli 2005 19:15 schrieb Ingo Molnar:
> 
>>* Karsten Wiese <annabellesgarden@yahoo.de> wrote:
>>
>>
>>>Have I corrected the other path of ioapic early initialization, which 
>>>had lacked virtual-address setup before ioapic_data[ioapic] was to be 
>>>filled in -51-28? Please test attached patch on top of -51-29 or 
>>>later. Also on Systems that liked -51-28.
>>
>>thanks - i've applied it to my tree and have released the -51-31 patch.  
>>It looks good on my testboxes.
>>
> 
> Found another error:
> the ioapic cache isn't fully initialized in -51-31's ioapic_cache_init().
> Please apply attached patch on top of -51-31.
> 
>     Karsten
> 

I have this successfully booted on both of my SMP boxes now.

-- 
    kr

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-17 12:07                                                                           ` Karsten Wiese
  2005-07-18 15:46                                                                             ` K.R. Foley
@ 2005-07-19 11:14                                                                             ` Karsten Wiese
  2005-07-19 13:35                                                                               ` Gene Heskett
  2005-07-19 13:57                                                                               ` Ingo Molnar
  1 sibling, 2 replies; 101+ messages in thread
From: Karsten Wiese @ 2005-07-19 11:14 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: K.R. Foley, Chuck Harding, William Weston,
	Linux Kernel Discussion List, Gene Heskett

[-- Attachment #1: Type: text/plain, Size: 849 bytes --]

Am Sonntag, 17. Juli 2005 14:07 schrieb Karsten Wiese:
> Am Samstag, 16. Juli 2005 19:15 schrieb Ingo Molnar:
> > 
> > * Karsten Wiese <annabellesgarden@yahoo.de> wrote:
> > 
> > > Have I corrected the other path of ioapic early initialization, which 
> > > had lacked virtual-address setup before ioapic_data[ioapic] was to be 
> > > filled in -51-28? Please test attached patch on top of -51-29 or 
> > > later. Also on Systems that liked -51-28.
> > 
> > thanks - i've applied it to my tree and have released the -51-31 patch.  
> > It looks good on my testboxes.
> > 
> Found another error:
> the ioapic cache isn't fully initialized in -51-31's ioapic_cache_init().
> <snip>
> 
and another: some NULL-pointers are used in -51-31 instead of ioapic_data[0].
Please apply attached patch on top of -51-31. It includes yesterday's fix.

    Karsten

[-- Attachment #2: io_apic-RT-51-31.2 --]
[-- Type: text/x-diff, Size: 4698 bytes --]

--- linux-2.6.12-RT-51-31/arch/i386/kernel/io_apic.c	2005-07-17 12:40:35.000000000 +0200
+++ linux-2.6.12-RT/arch/i386/kernel/io_apic.c	2005-07-19 12:53:00.000000000 +0200
@@ -158,7 +158,7 @@
 static void __init ioapic_cache_init(struct ioapic_data_struct *ioapic)
 {
 	int reg;
-	for (reg = 0; reg < (ioapic->nr_registers + 10); reg++)
+	for (reg = 0; reg < (0x10 + 2 * ioapic->nr_registers); reg++)
 		ioapic->cached_val[reg] = __raw_io_apic_read(ioapic, reg);
 }
 # endif
@@ -1396,8 +1396,8 @@
 	 * Add it to the IO-APIC irq-routing table:
 	 */
 	spin_lock_irqsave(&ioapic_lock, flags);
-	io_apic_write(0, 0x11+2*pin, *(((int *)&entry)+1));
-	io_apic_write(0, 0x10+2*pin, *(((int *)&entry)+0));
+	io_apic_write(ioapic_data[0], 0x11+2*pin, *(((int *)&entry)+1));
+	io_apic_write(ioapic_data[0], 0x10+2*pin, *(((int *)&entry)+0));
 	spin_unlock_irqrestore(&ioapic_lock, flags);
 
 	enable_8259A_irq(0);
@@ -2087,25 +2087,25 @@
  * races.
  */
 static struct hw_interrupt_type ioapic_edge_type = {
-	.typename 	= "IO-APIC-edge",
+	.typename	= "IO-APIC-edge",
 	.startup 	= startup_edge_ioapic,
 	.shutdown 	= shutdown_edge_ioapic,
 	.enable 	= enable_edge_ioapic,
 	.disable 	= disable_edge_ioapic,
 	.ack 		= ack_edge_ioapic,
 	.end 		= end_edge_ioapic,
-	.set_affinity 	= set_ioapic_affinity,
+	.set_affinity	= set_ioapic_affinity,
 };
 
 static struct hw_interrupt_type ioapic_level_type = {
-	.typename 	= "IO-APIC-level",
+	.typename	= "IO-APIC-level",
 	.startup 	= startup_level_ioapic,
 	.shutdown 	= shutdown_level_ioapic,
 	.enable 	= enable_level_ioapic,
 	.disable 	= disable_level_ioapic,
 	.ack 		= mask_and_ack_level_ioapic,
 	.end 		= end_level_ioapic,
-	.set_affinity 	= set_ioapic_affinity,
+	.set_affinity	= set_ioapic_affinity,
 };
 
 static inline void init_IO_APIC_traps(void)
@@ -2169,13 +2169,13 @@
 static void end_lapic_irq (unsigned int i) { /* nothing */ }
 
 static struct hw_interrupt_type lapic_irq_type = {
-	.typename 	= "local-APIC-edge",
-	.startup 	= NULL, /* startup_irq() not used for IRQ0 */
-	.shutdown 	= NULL, /* shutdown_irq() not used for IRQ0 */
-	.enable 	= enable_lapic_irq,
-	.disable 	= disable_lapic_irq,
-	.ack 		= ack_lapic_irq,
-	.end 		= end_lapic_irq
+	.typename	= "local-APIC-edge",
+	.startup	= NULL, /* startup_irq() not used for IRQ0 */
+	.shutdown	= NULL, /* shutdown_irq() not used for IRQ0 */
+	.enable		= enable_lapic_irq,
+	.disable	= disable_lapic_irq,
+	.ack		= ack_lapic_irq,
+	.end		= end_lapic_irq
 };
 
 static void setup_nmi (void)
@@ -2209,16 +2209,17 @@
 	struct IO_APIC_route_entry entry0, entry1;
 	unsigned char save_control, save_freq_select;
 	unsigned long flags;
+	struct ioapic_data_struct *ioapic0 = ioapic_data[0];
 
 	pin = find_isa_irq_pin(8, mp_INT);
 	if (pin == -1)
 		return;
 
 	spin_lock_irqsave(&ioapic_lock, flags);
-	*(((int *)&entry0) + 1) = io_apic_read(0, 0x11 + 2 * pin);
-	*(((int *)&entry0) + 0) = io_apic_read(0, 0x10 + 2 * pin);
+	*(((int *)&entry0) + 1) = io_apic_read(ioapic0, 0x11 + 2 * pin);
+	*(((int *)&entry0) + 0) = io_apic_read(ioapic0, 0x10 + 2 * pin);
 	spin_unlock_irqrestore(&ioapic_lock, flags);
-	clear_IO_APIC_pin(0, pin);
+	clear_IO_APIC_pin(ioapic0, pin);
 
 	memset(&entry1, 0, sizeof(entry1));
 
@@ -2231,8 +2232,8 @@
 	entry1.vector = 0;
 
 	spin_lock_irqsave(&ioapic_lock, flags);
-	io_apic_write(0, 0x11 + 2 * pin, *(((int *)&entry1) + 1));
-	io_apic_write(0, 0x10 + 2 * pin, *(((int *)&entry1) + 0));
+	io_apic_write(ioapic0, 0x11 + 2 * pin, *(((int *)&entry1) + 1));
+	io_apic_write(ioapic0, 0x10 + 2 * pin, *(((int *)&entry1) + 0));
 	spin_unlock_irqrestore(&ioapic_lock, flags);
 
 	save_control = CMOS_READ(RTC_CONTROL);
@@ -2250,11 +2251,11 @@
 
 	CMOS_WRITE(save_control, RTC_CONTROL);
 	CMOS_WRITE(save_freq_select, RTC_FREQ_SELECT);
-	clear_IO_APIC_pin(0, pin);
+	clear_IO_APIC_pin(ioapic0, pin);
 
 	spin_lock_irqsave(&ioapic_lock, flags);
-	io_apic_write(0, 0x11 + 2 * pin, *(((int *)&entry0) + 1));
-	io_apic_write(0, 0x10 + 2 * pin, *(((int *)&entry0) + 0));
+	io_apic_write(ioapic0, 0x11 + 2 * pin, *(((int *)&entry0) + 1));
+	io_apic_write(ioapic0, 0x10 + 2 * pin, *(((int *)&entry0) + 0));
 	spin_unlock_irqrestore(&ioapic_lock, flags);
 }
 
@@ -2268,6 +2269,7 @@
 {
 	int pin1, pin2;
 	int vector;
+	struct ioapic_data_struct *ioapic0 = ioapic_data[0];
 
 	/*
 	 * get/set the timer IRQ vector:
@@ -2309,7 +2311,7 @@
 			}
 			return;
 		}
-		clear_IO_APIC_pin(0, pin1);
+		clear_IO_APIC_pin(ioapic0, pin1);
 		printk(KERN_ERR "..MP-BIOS bug: 8254 timer not connected to IO-APIC\n");
 	}
 
@@ -2334,7 +2336,7 @@
 		/*
 		 * Cleanup, just in case ...
 		 */
-		clear_IO_APIC_pin(0, pin2);
+		clear_IO_APIC_pin(ioapic0, pin2);
 	}
 	printk(" failed.\n");
 

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-19 11:14                                                                             ` Karsten Wiese
@ 2005-07-19 13:35                                                                               ` Gene Heskett
  2005-07-19 13:57                                                                               ` Ingo Molnar
  1 sibling, 0 replies; 101+ messages in thread
From: Gene Heskett @ 2005-07-19 13:35 UTC (permalink / raw)
  To: linux-kernel
  Cc: Karsten Wiese, Ingo Molnar, K.R. Foley, Chuck Harding, William Weston

On Tuesday 19 July 2005 07:14, Karsten Wiese wrote:
>Am Sonntag, 17. Juli 2005 14:07 schrieb Karsten Wiese:
>> Am Samstag, 16. Juli 2005 19:15 schrieb Ingo Molnar:
>> > * Karsten Wiese <annabellesgarden@yahoo.de> wrote:
>> > > Have I corrected the other path of ioapic early
>> > > initialization, which had lacked virtual-address setup before
>> > > ioapic_data[ioapic] was to be filled in -51-28? Please test
>> > > attached patch on top of -51-29 or later. Also on Systems that
>> > > liked -51-28.
>> >
>> > thanks - i've applied it to my tree and have released the -51-31
>> > patch. It looks good on my testboxes.
>>
>> Found another error:
>> the ioapic cache isn't fully initialized in -51-31's
>> ioapic_cache_init(). <snip>
>
>and another: some NULL-pointers are used in -51-31 instead of
> ioapic_data[0]. Please apply attached patch on top of -51-31. It
> includes yesterday's fix.
>
>    Karsten

I found yesterday, that a -31 build in mode 4 seems to do something to 
ntpd, it fails startup, and floods the log with bad file descriptor 
messages.  I put some debugging echo's in the ntpd script but wasn't 
able to see any problems there.

So I'm back to -30, in mode 3 ATM, so tvtime works.  But everything 
else works far better in mode 4.


-- 
Cheers, Gene
"There are four boxes to be used in defense of liberty:
 soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)
99.35% setiathome rank, not too shabby for a WV hillbilly
Yahoo.com and AOL/TW attorneys please note, additions to the above
message by Gene Heskett are:
Copyright 2005 by Maurice Eugene Heskett, all rights reserved.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-19 11:14                                                                             ` Karsten Wiese
  2005-07-19 13:35                                                                               ` Gene Heskett
@ 2005-07-19 13:57                                                                               ` Ingo Molnar
  2005-07-19 15:19                                                                                 ` Gene Heskett
  1 sibling, 1 reply; 101+ messages in thread
From: Ingo Molnar @ 2005-07-19 13:57 UTC (permalink / raw)
  To: Karsten Wiese
  Cc: K.R. Foley, Chuck Harding, William Weston,
	Linux Kernel Discussion List, Gene Heskett


* Karsten Wiese <annabellesgarden@yahoo.de> wrote:

> > Found another error:
> > the ioapic cache isn't fully initialized in -51-31's ioapic_cache_init().
> > <snip>
> > 
>
> and another: some NULL-pointers are used in -51-31 instead of 
> ioapic_data[0]. Please apply attached patch on top of -51-31. It 
> includes yesterday's fix.

thanks, i've applied it and released -32.

	Ingo

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-19 13:57                                                                               ` Ingo Molnar
@ 2005-07-19 15:19                                                                                 ` Gene Heskett
  2005-07-19 23:00                                                                                   ` Karsten Wiese
  0 siblings, 1 reply; 101+ messages in thread
From: Gene Heskett @ 2005-07-19 15:19 UTC (permalink / raw)
  To: linux-kernel
  Cc: Ingo Molnar, Karsten Wiese, K.R. Foley, Chuck Harding, William Weston

On Tuesday 19 July 2005 09:57, Ingo Molnar wrote:
>* Karsten Wiese <annabellesgarden@yahoo.de> wrote:
>> > Found another error:
>> > the ioapic cache isn't fully initialized in -51-31's
>> > ioapic_cache_init(). <snip>
>>
>> and another: some NULL-pointers are used in -51-31 instead of
>> ioapic_data[0]. Please apply attached patch on top of -51-31. It
>> includes yesterday's fix.
>
>thanks, i've applied it and released -32.

And this fixed ntpd (in mode 4) right up.  But now Im seeing some 
fussing from Xprint when its started, from my logs:

Jul 19 10:59:58 coyote rc: Starting xprint:  succeeded
Jul 19 10:59:58 coyote kernel: set_rtc_mmss: can't update from 7 to 59
Jul 19 10:59:58 coyote kernel: set_rtc_mmss: can't update from 7 to 59
Jul 19 10:59:59 coyote Xprt_33: lpstat: Unable to connect to server: Connection refused
Jul 19 10:59:59 coyote Xprt_33: No matching visual for __GLcontextMode with visual class = 0 (32775), nplanes =
8
Jul 19 11:00:00 coyote kernel: set_rtc_mmss: can't update from 7 to 59

The font path stuff I snipped has been there since forever.
And, I didn't get the set_rtc_mmss messages when I did a service xprint restart.

Is this even connected to Xprint, that looks like something from maybe ntp?

And of course in mode 4, tvtime has a blue screen.  But you knew that. :)

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

-- 
Cheers, Gene
"There are four boxes to be used in defense of liberty:
 soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)
99.35% setiathome rank, not too shabby for a WV hillbilly
Yahoo.com and AOL/TW attorneys please note, additions to the above
message by Gene Heskett are:
Copyright 2005 by Maurice Eugene Heskett, all rights reserved.

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-19 15:19                                                                                 ` Gene Heskett
@ 2005-07-19 23:00                                                                                   ` Karsten Wiese
  0 siblings, 0 replies; 101+ messages in thread
From: Karsten Wiese @ 2005-07-19 23:00 UTC (permalink / raw)
  To: Gene Heskett
  Cc: linux-kernel, Ingo Molnar, K.R. Foley, Chuck Harding, William Weston

Am Dienstag, 19. Juli 2005 17:19 schrieb Gene Heskett:
> On Tuesday 19 July 2005 09:57, Ingo Molnar wrote:
> >* Karsten Wiese <annabellesgarden@yahoo.de> wrote:
> >> > Found another error:
> >> > the ioapic cache isn't fully initialized in -51-31's
> >> > ioapic_cache_init(). <snip>
> >>
> >> and another: some NULL-pointers are used in -51-31 instead of
> >> ioapic_data[0]. Please apply attached patch on top of -51-31. It
> >> includes yesterday's fix.
> >
> >thanks, i've applied it and released -32.
> 
> And this fixed ntpd (in mode 4) right up.  But now Im seeing some 
> fussing from Xprint when its started, from my logs:
> 
> Jul 19 10:59:58 coyote rc: Starting xprint:  succeeded
> Jul 19 10:59:58 coyote kernel: set_rtc_mmss: can't update from 7 to 59
> Jul 19 10:59:58 coyote kernel: set_rtc_mmss: can't update from 7 to 59
> Jul 19 10:59:59 coyote Xprt_33: lpstat: Unable to connect to server: Connection refused
> Jul 19 10:59:59 coyote Xprt_33: No matching visual for __GLcontextMode with visual class = 0 (32775), nplanes =
> 8
> Jul 19 11:00:00 coyote kernel: set_rtc_mmss: can't update from 7 to 59
> 
> The font path stuff I snipped has been there since forever.
> And, I didn't get the set_rtc_mmss messages when I did a service xprint restart.
> 
And then it "xprinted" right away just fine?

> Is this even connected to Xprint, that looks like something from maybe ntp?
> 
"set_rtc_mmss: can't update from 7 to 59"
is printk()ed from here:
linux-2.6.12-RT/include/asm-i386/mach-default/mach_time.h
<snip>
/*
 * In order to set the CMOS clock precisely, set_rtc_mmss has to be
 * called 500 ms after the second nowtime has started, because when
 * nowtime is written into the registers of the CMOS clock, it will
 * jump to the next second precisely 500 ms later. Check the Motorola
 * MC146818A or Dallas DS12887 data sheet for details.
 *
 * BUG: This routine does not handle hour overflow properly; it just
 *      sets the minutes. Usually you'll only notice that after reboot!
 */
static inline int mach_set_rtc_mmss(unsigned long nowtime)
</snip>
so its a rtc timingrelated.

which PREEMPT_RT / mode 4 was the last one to do it on the fly ?

> And of course in mode 4, tvtime has a blue screen.  But you knew that. :)
> 
what is tvtime supposed to do, is it  a wine thing as in "bleu screen"?

    Karsten

	

	
		
___________________________________________________________ 
Gesendet von Yahoo! Mail - Jetzt mit 1GB Speicher kostenlos - Hier anmelden: http://mail.yahoo.de

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
  2005-07-13 10:30 ` karsten wiese
@ 2005-07-13 18:38   ` Chuck Harding
  0 siblings, 0 replies; 101+ messages in thread
From: Chuck Harding @ 2005-07-13 18:38 UTC (permalink / raw)
  To: karsten wiese; +Cc: Ingo Molnar, Linux Kernel Discussion List

[-- Attachment #1: Type: TEXT/PLAIN, Size: 740 bytes --]

51-28 still hangs. Attached is dmesg from 51-27 with apic=debug
and .config

On Wed, 13 Jul 2005, karsten wiese wrote:

> Please unselect CONFIG_X86_IOAPIC_FAST and try 51-28 again.
> Also please boot the newest "working for you" RT kernel
> with the kernel parameter 'apic=debug' added. Post the
> dmesg that you get right after boot.
>
>    Karsten

-- 
Charles D. (Chuck) Harding <charding@llnl.gov>  Voice: 925-423-8879
Senior Computer Associate         ICCD            Fax: 925-423-6961
Lawrence Livermore National Laboratory      Computation Directorate
Livermore, CA USA  http://www.llnl.gov  GPG Public Key ID: B9EB6601
------------------ http://tinyurl.com/5w5ey -----------------------
-- Never enter a battle of wits unarmed. --

[-- Attachment #2: dmesg from 2.6.12-RT-V0.7-51-27 with apic=debug --]
[-- Type: TEXT/PLAIN, Size: 12811 bytes --]

Linux version 2.6.12-RT-V0.7.51-27 (charding@ghostwheel.llnl.gov) (gcc version 3.4.3 20050227 (Red Hat 3.4.3-22.1)) #2 Mon Jul 11 15:41:51 PDT 2005
BIOS-provided physical RAM map:
 BIOS-e820: 0000000000000000 - 00000000000a0000 (usable)
 BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
 BIOS-e820: 0000000000100000 - 000000003ff77000 (usable)
 BIOS-e820: 000000003ff77000 - 000000003ff79000 (ACPI NVS)
 BIOS-e820: 000000003ff79000 - 0000000040000000 (reserved)
 BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved)
 BIOS-e820: 00000000fee00000 - 00000000fee10000 (reserved)
 BIOS-e820: 00000000ffb00000 - 0000000100000000 (reserved)
127MB HIGHMEM available.
896MB LOWMEM available.
found SMP MP-table at 000fe710
On node 0 totalpages: 262007
  DMA zone: 4096 pages, LIFO batch:1
  Normal zone: 225280 pages, LIFO batch:31
  HighMem zone: 32631 pages, LIFO batch:15
DMI 2.3 present.
DELL GX240 detected: force use of acpi=ht
ACPI: RSDP (v000 DELL                                  ) @ 0x000fd570
ACPI: RSDT (v001 DELL    GX240   0x00000006 ASL  0x00000061) @ 0x000fd584
ACPI: FADT (v001 DELL    GX240   0x00000006 ASL  0x00000061) @ 0x000fd5b8
ACPI: SSDT (v001   DELL    st_ex 0x00001000 MSFT 0x0100000d) @ 0xfffe6189
ACPI: MADT (v001 DELL    GX240   0x00000006 ASL  0x00000061) @ 0x000fd62c
ACPI: BOOT (v001 DELL    GX240   0x00000006 ASL  0x00000061) @ 0x000fd688
ACPI: DSDT (v001   DELL    dt_ex 0x00001000 MSFT 0x0100000d) @ 0x00000000
ACPI: PM-Timer IO Port: 0x808
ACPI: Local APIC address 0xfee00000
ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
Processor #0 15:1 APIC version 20
ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] disabled)
Using ACPI for processor (LAPIC) configuration information
Intel MultiProcessor Specification v1.4
    Virtual Wire compatibility mode.
OEM ID: DELL     Product ID: Opti GX240   APIC at: 0xFEE00000
I/O APIC #1 Version 32 at 0xFEC00000.
Enabling APIC mode:  Flat.  Using 1 I/O APICs
Processors: 1
Allocating PCI resources starting at 40000000 (gap: 40000000:bec00000)
Real-Time Preemption Support (C) 2004-2005 Ingo Molnar
Built 1 zonelists
Kernel command line: ro root=LABEL=/ selinux=0 profile=1 nmi_watchdog=2 apic=debug
kernel profiling enabled (shift: 1)
mapped APIC to ffffd000 (fee00000)
mapped IOAPIC to ffffc000 (fec00000)
Initializing CPU#0
PID hash table entries: 4096 (order: 12, 65536 bytes)
Detected 1993.768 MHz processor.
Using pmtmr for high-res timesource
Console: colour VGA+ 80x25
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 1030848k/1048028k available (2021k kernel code, 16796k reserved, 721k data, 156k init, 130524k highmem)
Checking if this processor honours the WP bit even in supervisor mode... Ok.
Calibrating delay loop... 3948.54 BogoMIPS (lpj=1974272)
Security Framework v1.0.0 initialized
SELinux:  Disabled at boot.
Capability LSM initialized
Mount-cache hash table entries: 512
CPU: After generic identify, caps: 3febfbff 00000000 00000000 00000000 00000000 00000000 00000000
CPU: After vendor identify, caps: 3febfbff 00000000 00000000 00000000 00000000 00000000 00000000
CPU: Trace cache: 12K uops, L1 D cache: 8K
CPU: L2 cache: 256K
CPU: After all inits, caps: 3febfbff 00000000 00000000 00000080 00000000 00000000 00000000
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
CPU0: Intel P4/Xeon Extended MCE MSRs (12) available
CPU0: Thermal monitoring enabled
CPU: Intel(R) Pentium(R) 4 CPU 2.00GHz stepping 02
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Checking 'hlt' instruction... OK.
Getting VERSION: 50014
Getting VERSION: 50014
Getting ID: 0
Getting LVT0: 700
Getting LVT1: 400
enabled ExtINT on CPU#0
ENABLING IO-APIC IRQs
Setting 1 in the phys_id_present_map
softlockup thread 0 started up.
...changing IO-APIC physical APIC ID to 1 ... ok.
init IO_APIC IRQs
 IO-APIC (apicid-pin) 1-0, 1-13, 1-20, 1-21, 1-22 not connected.
..TIMER: vector=0x31 pin1=2 pin2=0
number of MP IRQ sources: 39.
number of IO-APIC #1 registers: 24.
testing the IO APIC.......................
IO APIC #1......
.... register #00: 01000000
.......    : physical APIC id: 01
.......    : Delivery Type: 0
.......    : LTS          : 0
.... register #01: 00178020
.......     : max redirection entries: 0017
.......     : PRQ implemented: 1
.......     : IO APIC version: 0020
.... register #02: 00000000
.......     : arbitration: 00
.... register #03: 00000001
.......     : Boot DT    : 1
.... IRQ redirection table:
 NR Log Phy Mask Trig IRR Pol Stat Dest Deli Vect:   
 00 000 00  1    0    0   0   0    0    0    00
 01 001 01  0    0    0   0   0    1    1    39
 02 001 01  0    0    0   0   0    1    1    31
 03 001 01  0    0    0   0   0    1    1    41
 04 001 01  0    0    0   0   0    1    1    49
 05 001 01  0    0    0   0   0    1    1    51
 06 001 01  0    0    0   0   0    1    1    59
 07 001 01  0    0    0   0   0    1    1    61
 08 001 01  0    0    0   0   0    1    1    69
 09 001 01  0    0    0   0   0    1    1    71
 0a 001 01  0    0    0   0   0    1    1    79
 0b 001 01  0    0    0   0   0    1    1    81
 0c 001 01  0    0    0   0   0    1    1    89
 0d 000 00  1    0    0   0   0    0    0    00
 0e 001 01  0    0    0   0   0    1    1    91
 0f 001 01  0    0    0   0   0    1    1    99
 10 001 01  1    1    0   1   0    1    1    A1
 11 001 01  1    1    0   1   0    1    1    A9
 12 001 01  1    1    0   1   0    1    1    B1
 13 001 01  1    1    0   1   0    1    1    B9
 14 000 00  1    0    0   0   0    0    0    00
 15 000 00  1    0    0   0   0    0    0    00
 16 000 00  1    0    0   0   0    0    0    00
 17 001 01  1    1    0   1   0    1    1    C1
IRQ to pin mappings:
IRQ0 -> 0:2
IRQ1 -> 0:1
IRQ3 -> 0:3
IRQ4 -> 0:4
IRQ5 -> 0:5
IRQ6 -> 0:6
IRQ7 -> 0:7
IRQ8 -> 0:8
IRQ9 -> 0:9
IRQ10 -> 0:10
IRQ11 -> 0:11
IRQ12 -> 0:12
IRQ14 -> 0:14
IRQ15 -> 0:15
IRQ16 -> 0:16
IRQ17 -> 0:17
IRQ18 -> 0:18
IRQ19 -> 0:19
IRQ23 -> 0:23
.................................... done.
Using local APIC timer interrupts.
calibrating APIC timer ...
..... CPU clock speed is 1993.0183 MHz.
..... host bus clock speed is 99.0659 MHz.
checking if image is initramfs... it is
Freeing initrd memory: 299k freed
NET: Registered protocol family 16
PCI: PCI BIOS revision 2.10 entry at 0xfbe5e, last bus=2
PCI: Using configuration type 1
mtrr: v2.0 (20020519)
ACPI: Subsystem revision 20050309
ACPI: Interpreter disabled.
usbcore: registered new driver usbfs
usbcore: registered new driver hub
PCI: Probing PCI hardware
PCI: Probing PCI hardware (bus 00)
Boot video device is 0000:01:00.0
PCI: Transparent bridge - 0000:00:1e.0
PCI: Using IRQ router PIIX/ICH [8086/2440] at 0000:00:1f.0
querying PCI -> IRQ mapping bus:0, slot:31, pin:3.
PCI->APIC IRQ transform: 0000:00:1f.2[D] -> IRQ 19
querying PCI -> IRQ mapping bus:0, slot:31, pin:1.
PCI->APIC IRQ transform: 0000:00:1f.3[B] -> IRQ 17
querying PCI -> IRQ mapping bus:0, slot:31, pin:2.
PCI->APIC IRQ transform: 0000:00:1f.4[C] -> IRQ 18
querying PCI -> IRQ mapping bus:1, slot:0, pin:0.
PCI->APIC IRQ transform: 0000:01:00.0[A] -> IRQ 16
querying PCI -> IRQ mapping bus:2, slot:7, pin:0.
PCI->APIC IRQ transform: 0000:02:07.0[A] -> IRQ 16
querying PCI -> IRQ mapping bus:2, slot:12, pin:0.
PCI->APIC IRQ transform: 0000:02:0c.0[A] -> IRQ 18
Simple Boot Flag at 0x7a set to 0x80
audit: initializing netlink socket (disabled)
audit(1121254114.865:0): initialized
highmem bounce pool size: 64 pages
Total HugeTLB memory allocated, 0
VFS: Disk quotas dquot_6.5.1
Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
Initializing Cryptographic API
Real Time Clock Driver v1.12
Linux agpgart interface v0.101 (c) Dave Jones
[drm] Initialized drm 1.0.0 20040925
Hangcheck: starting hangcheck timer 0.9.0 (tick is 180 seconds, margin is 60 seconds).
Hangcheck: Using monotonic_clock().
serio: i8042 KBD port at 0x60,0x64 irq 1
Serial: 8250/16550 driver $Revision: 1.90 $ 8 ports, IRQ sharing enabled
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered
RAMDISK driver initialized: 16 RAM disks of 16384K size 1024 blocksize
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
ICH2: IDE controller at PCI slot 0000:00:1f.1
ICH2: chipset revision 18
ICH2: not 100% native mode: will probe irqs later
    ide0: BM-DMA at 0xffa0-0xffa7, BIOS settings: hda:DMA, hdb:pio
    ide1: BM-DMA at 0xffa8-0xffaf, BIOS settings: hdc:DMA, hdd:DMA
Probing IDE interface ide0...
hda: ST340016A, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
Probing IDE interface ide1...
hdc: SAMSUNG CDRW/DVD SM-308B, ATAPI CD/DVD-ROM drive
hdd: ST340016A, ATA DISK drive
ide1 at 0x170-0x177,0x376 on irq 15
Probing IDE interface ide2...
Probing IDE interface ide3...
Probing IDE interface ide4...
Probing IDE interface ide5...
hda: max request size: 128KiB
hda: 78165360 sectors (40020 MB) w/2048KiB Cache, CHS=65535/16/63, UDMA(100)
hda: cache flushes not supported
 hda: hda1 hda2 hda3
hdd: max request size: 128KiB
hdd: 78165360 sectors (40020 MB) w/2048KiB Cache, CHS=65535/16/63, UDMA(33)
hdd: cache flushes not supported
 hdd: hdd1 hdd2 hdd3
hdc: ATAPI 32X DVD-ROM CD-R/RW drive, 2048kB Cache, DMA
Uniform CD-ROM driver Revision: 3.20
ide-floppy driver 0.99.newide
usbcore: registered new driver hiddev
usbcore: registered new driver usbhid
drivers/usb/input/hid-core.c: v2.01:USB HID core driver
mice: PS/2 mouse device common for all mice
NET: Registered protocol family 2
IP: routing cache hash table of 2048 buckets, 64Kbytes
TCP established hash table entries: 65536 (order: 9, 2621440 bytes)
TCP bind hash table entries: 65536 (order: 9, 2097152 bytes)
TCP: Hash tables configured (established 65536 bind 65536)
Initializing IPsec netlink socket
NET: Registered protocol family 1
NET: Registered protocol family 17
p4-clockmod: P4/Xeon(TM) CPU On-Demand Clock Modulation available
Testing NMI watchdog ... OK.
*****************************************************************************
*                                                                           *
*  WARNING, the following debugging option is turned on in your .config:    *
*                                                                           *
*        CONFIG_DEBUG_PREEMPT                                               *
*                                                                           *
*  it may increase runtime overhead and latencies.                          *
*                                                                           *
*****************************************************************************
Freeing unused kernel memory: 156k freed
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
3c59x: Donald Becker and others. www.scyld.com/network/vortex.html
0000:02:0c.0: 3Com PCI 3c905C Tornado at 0xdc00. Vers LK1.1.19
USB Universal Host Controller Interface driver v2.2
PCI: Setting latency timer of device 0000:00:1f.2 to 64
uhci_hcd 0000:00:1f.2: UHCI Host Controller
uhci_hcd 0000:00:1f.2: new USB bus registered, assigned bus number 1
uhci_hcd 0000:00:1f.2: irq 19, io base 0x0000ff80
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
PCI: Setting latency timer of device 0000:00:1f.4 to 64
uhci_hcd 0000:00:1f.4: UHCI Host Controller
uhci_hcd 0000:00:1f.4: new USB bus registered, assigned bus number 2
uhci_hcd 0000:00:1f.4: irq 18, io base 0x0000ff60
usb 1-1: new full speed USB device using uhci_hcd and address 2
hub 1-1:1.0: USB hub found
hub 1-1:1.0: 3 ports detected
usb 1-2: new low speed USB device using uhci_hcd and address 3
input: USB HID v1.00 Mouse [Kensington USB/PS2 Wheel Mouse ] on usb-0000:00:1f.2-2
usb 1-1.1: new full speed USB device using uhci_hcd and address 4
input: USB HID v1.00 Keyboard [NMB Dell USB 7HK Keyboard] on usb-0000:00:1f.2-1.1
input,hiddev96: USB HID v1.00 Device [NMB Dell USB 7HK Keyboard] on usb-0000:00:1f.2-1.1
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 2 ports detected
EXT3 FS on hda3, internal journal
kjournald starting.  Commit interval 5 seconds
EXT3 FS on hda1, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on hdd1, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on hdd3, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on hdd2, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
Adding 2008116k swap on /dev/hda2.  Priority:-1 extents:1

[-- Attachment #3: .config for 2.6.12-RT-V0.7-51-27 --]
[-- Type: TEXT/PLAIN, Size: 32821 bytes --]

#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.12-RT-V0.7.51-27
# Mon Jul 11 15:40:33 2005
#
CONFIG_X86=y
CONFIG_MMU=y
CONFIG_UID16=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=y

#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
CONFIG_CLEAN_COMPILE=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32

#
# General setup
#
CONFIG_LOCALVERSION=""
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_POSIX_MQUEUE=y
CONFIG_BSD_PROCESS_ACCT=y
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
CONFIG_SYSCTL=y
CONFIG_AUDIT=y
CONFIG_AUDITSYSCALL=y
CONFIG_HOTPLUG=y
CONFIG_KOBJECT_UEVENT=y
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
# CONFIG_EMBEDDED is not set
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
CONFIG_KALLSYMS_EXTRA_PASS=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_SHMEM=y
CONFIG_CC_ALIGN_FUNCTIONS=0
CONFIG_CC_ALIGN_LABELS=0
CONFIG_CC_ALIGN_LOOPS=0
CONFIG_CC_ALIGN_JUMPS=0
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0

#
# Loadable module support
#
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
# CONFIG_MODULE_FORCE_UNLOAD is not set
CONFIG_OBSOLETE_MODPARM=y
CONFIG_MODVERSIONS=y
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_KMOD=y

#
# Processor type and features
#
CONFIG_X86_PC=y
# CONFIG_X86_ELAN is not set
# CONFIG_X86_VOYAGER is not set
# CONFIG_X86_NUMAQ is not set
# CONFIG_X86_SUMMIT is not set
# CONFIG_X86_BIGSMP is not set
# CONFIG_X86_VISWS is not set
# CONFIG_X86_GENERICARCH is not set
# CONFIG_X86_ES7000 is not set
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
# CONFIG_M686 is not set
# CONFIG_MPENTIUMII is not set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUMM is not set
CONFIG_MPENTIUM4=y
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
# CONFIG_MK8 is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MEFFICEON is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP2 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MGEODEGX1 is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
CONFIG_X86_GENERIC=y
CONFIG_X86_CMPXCHG=y
CONFIG_X86_XADD=y
CONFIG_X86_L1_CACHE_SHIFT=7
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_BSWAP=y
CONFIG_X86_POPAD_OK=y
CONFIG_X86_GOOD_APIC=y
CONFIG_X86_INTEL_USERCOPY=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_HPET_TIMER=y
CONFIG_HPET_EMULATE_RTC=y
# CONFIG_SMP is not set
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT_DESKTOP is not set
CONFIG_PREEMPT_RT=y
CONFIG_PREEMPT=y
CONFIG_PREEMPT_SOFTIRQS=y
CONFIG_PREEMPT_HARDIRQS=y
CONFIG_PREEMPT_RCU=y
CONFIG_PREEMPT_BKL=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
CONFIG_ASM_SEMAPHORES=y
CONFIG_X86_UP_APIC=y
CONFIG_X86_UP_IOAPIC=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_IOAPIC_FAST=y
CONFIG_X86_TSC=y
CONFIG_X86_MCE=y
# CONFIG_X86_MCE_NONFATAL is not set
CONFIG_X86_MCE_P4THERMAL=y
# CONFIG_TOSHIBA is not set
# CONFIG_I8K is not set
# CONFIG_X86_REBOOTFIXUPS is not set
CONFIG_MICROCODE=m
CONFIG_X86_MSR=m
CONFIG_X86_CPUID=m

#
# Firmware Drivers
#
CONFIG_EDD=m
# CONFIG_NOHIGHMEM is not set
CONFIG_HIGHMEM4G=y
# CONFIG_HIGHMEM64G is not set
CONFIG_HIGHMEM=y
CONFIG_HIGHPTE=y
# CONFIG_MATH_EMULATION is not set
CONFIG_MTRR=y
# CONFIG_EFI is not set
CONFIG_HAVE_DEC_LOCK=y
CONFIG_REGPARM=y
CONFIG_SECCOMP=y

#
# Power management options (ACPI, APM)
#
CONFIG_PM=y
# CONFIG_PM_DEBUG is not set
# CONFIG_SOFTWARE_SUSPEND is not set

#
# ACPI (Advanced Configuration and Power Interface) Support
#
CONFIG_ACPI=y
CONFIG_ACPI_BOOT=y
CONFIG_ACPI_INTERPRETER=y
CONFIG_ACPI_SLEEP=y
CONFIG_ACPI_SLEEP_PROC_FS=y
# CONFIG_ACPI_AC is not set
# CONFIG_ACPI_BATTERY is not set
CONFIG_ACPI_BUTTON=y
CONFIG_ACPI_VIDEO=y
CONFIG_ACPI_FAN=y
CONFIG_ACPI_PROCESSOR=y
CONFIG_ACPI_THERMAL=y
# CONFIG_ACPI_ASUS is not set
# CONFIG_ACPI_IBM is not set
# CONFIG_ACPI_TOSHIBA is not set
CONFIG_ACPI_BLACKLIST_YEAR=2001
# CONFIG_ACPI_DEBUG is not set
CONFIG_ACPI_BUS=y
CONFIG_ACPI_EC=y
CONFIG_ACPI_POWER=y
CONFIG_ACPI_PCI=y
CONFIG_ACPI_SYSTEM=y
CONFIG_X86_PM_TIMER=y
# CONFIG_ACPI_CONTAINER is not set

#
# APM (Advanced Power Management) BIOS Support
#
# CONFIG_APM is not set

#
# CPU Frequency scaling
#
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=y
# CONFIG_CPU_FREQ_DEBUG is not set
CONFIG_CPU_FREQ_STAT=y
# CONFIG_CPU_FREQ_STAT_DETAILS is not set
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m

#
# CPUFreq processor drivers
#
CONFIG_X86_ACPI_CPUFREQ=y
# CONFIG_X86_POWERNOW_K6 is not set
# CONFIG_X86_POWERNOW_K7 is not set
# CONFIG_X86_POWERNOW_K8 is not set
# CONFIG_X86_GX_SUSPMOD is not set
CONFIG_X86_SPEEDSTEP_CENTRINO=y
CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI=y
CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y
CONFIG_X86_SPEEDSTEP_ICH=y
CONFIG_X86_SPEEDSTEP_SMI=y
CONFIG_X86_P4_CLOCKMOD=y
# CONFIG_X86_CPUFREQ_NFORCE2 is not set
# CONFIG_X86_LONGRUN is not set
# CONFIG_X86_LONGHAUL is not set

#
# shared options
#
# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set
CONFIG_X86_SPEEDSTEP_LIB=y
# CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK is not set

#
# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
#
CONFIG_PCI=y
# CONFIG_PCI_GOBIOS is not set
# CONFIG_PCI_GOMMCONFIG is not set
# CONFIG_PCI_GODIRECT is not set
CONFIG_PCI_GOANY=y
CONFIG_PCI_BIOS=y
CONFIG_PCI_DIRECT=y
CONFIG_PCI_MMCONFIG=y
# CONFIG_PCIEPORTBUS is not set
# CONFIG_PCI_MSI is not set
CONFIG_PCI_LEGACY_PROC=y
# CONFIG_PCI_NAMES is not set
# CONFIG_PCI_DEBUG is not set
CONFIG_ISA_DMA_API=y
# CONFIG_ISA is not set
# CONFIG_MCA is not set
# CONFIG_SCx200 is not set

#
# PCCARD (PCMCIA/CardBus) support
#
# CONFIG_PCCARD is not set

#
# PCI Hotplug Support
#
# CONFIG_HOTPLUG_PCI is not set

#
# Executable file formats
#
CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_AOUT=m
CONFIG_BINFMT_MISC=y

#
# Device Drivers
#

#
# Generic Driver Options
#
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=m
# CONFIG_DEBUG_DRIVER is not set

#
# Memory Technology Devices (MTD)
#
CONFIG_MTD=m
# CONFIG_MTD_DEBUG is not set
# CONFIG_MTD_CONCAT is not set
# CONFIG_MTD_PARTITIONS is not set

#
# User Modules And Translation Layers
#
# CONFIG_MTD_CHAR is not set
# CONFIG_MTD_BLOCK is not set
# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
# CONFIG_INFTL is not set

#
# RAM/ROM/Flash chip drivers
#
# CONFIG_MTD_CFI is not set
# CONFIG_MTD_JEDECPROBE is not set
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
CONFIG_MTD_MAP_BANK_WIDTH_4=y
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_CFI_I4 is not set
# CONFIG_MTD_CFI_I8 is not set
# CONFIG_MTD_RAM is not set
# CONFIG_MTD_ROM is not set
# CONFIG_MTD_ABSENT is not set

#
# Mapping drivers for chip access
#
# CONFIG_MTD_COMPLEX_MAPPINGS is not set

#
# Self-contained MTD device drivers
#
# CONFIG_MTD_PMC551 is not set
# CONFIG_MTD_SLRAM is not set
# CONFIG_MTD_PHRAM is not set
# CONFIG_MTD_MTDRAM is not set
# CONFIG_MTD_BLKMTD is not set
# CONFIG_MTD_BLOCK2MTD is not set

#
# Disk-On-Chip Device Drivers
#
# CONFIG_MTD_DOC2000 is not set
# CONFIG_MTD_DOC2001 is not set
# CONFIG_MTD_DOC2001PLUS is not set

#
# NAND Flash Device Drivers
#
# CONFIG_MTD_NAND is not set

#
# Parallel port support
#
CONFIG_PARPORT=m
CONFIG_PARPORT_PC=m
CONFIG_PARPORT_SERIAL=m
# CONFIG_PARPORT_PC_FIFO is not set
# CONFIG_PARPORT_PC_SUPERIO is not set
# CONFIG_PARPORT_GSC is not set
CONFIG_PARPORT_1284=y

#
# Plug and Play support
#
# CONFIG_PNP is not set

#
# Block devices
#
# CONFIG_BLK_DEV_FD is not set
# CONFIG_PARIDE is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
CONFIG_BLK_DEV_CRYPTOLOOP=m
CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_SX8 is not set
# CONFIG_BLK_DEV_UB is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=16384
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_LBD=y
# CONFIG_CDROM_PKTCDVD is not set

#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
# CONFIG_ATA_OVER_ETH is not set

#
# ATA/ATAPI/MFM/RLL support
#
CONFIG_IDE=y
CONFIG_BLK_DEV_IDE=y

#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_IDE_SATA is not set
# CONFIG_BLK_DEV_HD_IDE is not set
CONFIG_BLK_DEV_IDEDISK=y
CONFIG_IDEDISK_MULTI_MODE=y
CONFIG_BLK_DEV_IDECD=y
# CONFIG_BLK_DEV_IDETAPE is not set
CONFIG_BLK_DEV_IDEFLOPPY=y
# CONFIG_IDE_TASK_IOCTL is not set

#
# IDE chipset support/bugfixes
#
CONFIG_IDE_GENERIC=y
# CONFIG_BLK_DEV_CMD640 is not set
CONFIG_BLK_DEV_IDEPCI=y
CONFIG_IDEPCI_SHARE_IRQ=y
# CONFIG_BLK_DEV_OFFBOARD is not set
CONFIG_BLK_DEV_GENERIC=y
# CONFIG_BLK_DEV_OPTI621 is not set
# CONFIG_BLK_DEV_RZ1000 is not set
CONFIG_BLK_DEV_IDEDMA_PCI=y
# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
CONFIG_IDEDMA_PCI_AUTO=y
# CONFIG_IDEDMA_ONLYDISK is not set
# CONFIG_BLK_DEV_AEC62XX is not set
# CONFIG_BLK_DEV_ALI15X3 is not set
# CONFIG_BLK_DEV_AMD74XX is not set
# CONFIG_BLK_DEV_ATIIXP is not set
# CONFIG_BLK_DEV_CMD64X is not set
# CONFIG_BLK_DEV_TRIFLEX is not set
# CONFIG_BLK_DEV_CY82C693 is not set
# CONFIG_BLK_DEV_CS5520 is not set
# CONFIG_BLK_DEV_CS5530 is not set
# CONFIG_BLK_DEV_HPT34X is not set
# CONFIG_BLK_DEV_HPT366 is not set
# CONFIG_BLK_DEV_SC1200 is not set
CONFIG_BLK_DEV_PIIX=y
# CONFIG_BLK_DEV_NS87415 is not set
# CONFIG_BLK_DEV_PDC202XX_OLD is not set
# CONFIG_BLK_DEV_PDC202XX_NEW is not set
# CONFIG_BLK_DEV_SVWKS is not set
# CONFIG_BLK_DEV_SIIMAGE is not set
# CONFIG_BLK_DEV_SIS5513 is not set
# CONFIG_BLK_DEV_SLC90E66 is not set
# CONFIG_BLK_DEV_TRM290 is not set
# CONFIG_BLK_DEV_VIA82CXXX is not set
# CONFIG_IDE_ARM is not set
CONFIG_BLK_DEV_IDEDMA=y
# CONFIG_IDEDMA_IVB is not set
CONFIG_IDEDMA_AUTO=y
# CONFIG_BLK_DEV_HD is not set

#
# SCSI device support
#
# CONFIG_SCSI is not set

#
# Multi-device support (RAID and LVM)
#
# CONFIG_MD is not set

#
# Fusion MPT device support
#

#
# IEEE 1394 (FireWire) support
#
# CONFIG_IEEE1394 is not set

#
# I2O device support
#
# CONFIG_I2O is not set

#
# Networking support
#
CONFIG_NET=y

#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
CONFIG_NET_KEY=m
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_ROUTE_FWMARK=y
CONFIG_IP_ROUTE_MULTIPATH=y
# CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set
CONFIG_IP_ROUTE_VERBOSE=y
# CONFIG_IP_PNP is not set
CONFIG_NET_IPIP=m
CONFIG_NET_IPGRE=m
CONFIG_NET_IPGRE_BROADCAST=y
CONFIG_IP_MROUTE=y
CONFIG_IP_PIMSM_V1=y
CONFIG_IP_PIMSM_V2=y
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
CONFIG_INET_AH=m
CONFIG_INET_ESP=m
CONFIG_INET_IPCOMP=m
CONFIG_INET_TUNNEL=m
CONFIG_IP_TCPDIAG=y
# CONFIG_IP_TCPDIAG_IPV6 is not set

#
# IP: Virtual Server Configuration
#
CONFIG_IP_VS=m
# CONFIG_IP_VS_DEBUG is not set
CONFIG_IP_VS_TAB_BITS=12

#
# IPVS transport protocol load balancing support
#
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_VS_PROTO_ESP=y
CONFIG_IP_VS_PROTO_AH=y

#
# IPVS scheduler
#
CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
CONFIG_IP_VS_SH=m
CONFIG_IP_VS_SED=m
CONFIG_IP_VS_NQ=m

#
# IPVS application helper
#
CONFIG_IP_VS_FTP=m
CONFIG_IPV6=m
CONFIG_IPV6_PRIVACY=y
CONFIG_INET6_AH=m
CONFIG_INET6_ESP=m
CONFIG_INET6_IPCOMP=m
CONFIG_INET6_TUNNEL=m
CONFIG_IPV6_TUNNEL=m
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
CONFIG_BRIDGE_NETFILTER=y

#
# IP: Netfilter Configuration
#
CONFIG_IP_NF_CONNTRACK=m
CONFIG_IP_NF_CT_ACCT=y
# CONFIG_IP_NF_CONNTRACK_MARK is not set
CONFIG_IP_NF_CT_PROTO_SCTP=m
CONFIG_IP_NF_FTP=m
CONFIG_IP_NF_IRC=m
CONFIG_IP_NF_TFTP=m
CONFIG_IP_NF_AMANDA=m
CONFIG_IP_NF_QUEUE=m
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_MATCH_LIMIT=m
CONFIG_IP_NF_MATCH_IPRANGE=m
CONFIG_IP_NF_MATCH_MAC=m
CONFIG_IP_NF_MATCH_PKTTYPE=m
CONFIG_IP_NF_MATCH_MARK=m
CONFIG_IP_NF_MATCH_MULTIPORT=m
CONFIG_IP_NF_MATCH_TOS=m
CONFIG_IP_NF_MATCH_RECENT=m
CONFIG_IP_NF_MATCH_ECN=m
CONFIG_IP_NF_MATCH_DSCP=m
CONFIG_IP_NF_MATCH_AH_ESP=m
CONFIG_IP_NF_MATCH_LENGTH=m
CONFIG_IP_NF_MATCH_TTL=m
CONFIG_IP_NF_MATCH_TCPMSS=m
CONFIG_IP_NF_MATCH_HELPER=m
CONFIG_IP_NF_MATCH_STATE=m
CONFIG_IP_NF_MATCH_CONNTRACK=m
CONFIG_IP_NF_MATCH_OWNER=m
CONFIG_IP_NF_MATCH_PHYSDEV=m
CONFIG_IP_NF_MATCH_ADDRTYPE=m
CONFIG_IP_NF_MATCH_REALM=m
CONFIG_IP_NF_MATCH_SCTP=m
CONFIG_IP_NF_MATCH_COMMENT=m
# CONFIG_IP_NF_MATCH_HASHLIMIT is not set
CONFIG_IP_NF_FILTER=m
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IP_NF_TARGET_LOG=m
CONFIG_IP_NF_TARGET_ULOG=m
CONFIG_IP_NF_TARGET_TCPMSS=m
CONFIG_IP_NF_NAT=m
CONFIG_IP_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=m
CONFIG_IP_NF_TARGET_REDIRECT=m
CONFIG_IP_NF_TARGET_NETMAP=m
CONFIG_IP_NF_TARGET_SAME=m
CONFIG_IP_NF_NAT_SNMP_BASIC=m
CONFIG_IP_NF_NAT_IRC=m
CONFIG_IP_NF_NAT_FTP=m
CONFIG_IP_NF_NAT_TFTP=m
CONFIG_IP_NF_NAT_AMANDA=m
CONFIG_IP_NF_MANGLE=m
CONFIG_IP_NF_TARGET_TOS=m
CONFIG_IP_NF_TARGET_ECN=m
CONFIG_IP_NF_TARGET_DSCP=m
CONFIG_IP_NF_TARGET_MARK=m
CONFIG_IP_NF_TARGET_CLASSIFY=m
CONFIG_IP_NF_RAW=m
CONFIG_IP_NF_TARGET_NOTRACK=m
CONFIG_IP_NF_ARPTABLES=m
CONFIG_IP_NF_ARPFILTER=m
CONFIG_IP_NF_ARP_MANGLE=m

#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
CONFIG_IP6_NF_IPTABLES=m
CONFIG_IP6_NF_MATCH_LIMIT=m
CONFIG_IP6_NF_MATCH_MAC=m
CONFIG_IP6_NF_MATCH_RT=m
CONFIG_IP6_NF_MATCH_OPTS=m
CONFIG_IP6_NF_MATCH_FRAG=m
CONFIG_IP6_NF_MATCH_HL=m
CONFIG_IP6_NF_MATCH_MULTIPORT=m
CONFIG_IP6_NF_MATCH_OWNER=m
CONFIG_IP6_NF_MATCH_MARK=m
CONFIG_IP6_NF_MATCH_IPV6HEADER=m
CONFIG_IP6_NF_MATCH_AHESP=m
CONFIG_IP6_NF_MATCH_LENGTH=m
CONFIG_IP6_NF_MATCH_EUI64=m
CONFIG_IP6_NF_MATCH_PHYSDEV=m
CONFIG_IP6_NF_FILTER=m
CONFIG_IP6_NF_TARGET_LOG=m
CONFIG_IP6_NF_MANGLE=m
CONFIG_IP6_NF_TARGET_MARK=m
CONFIG_IP6_NF_RAW=m

#
# Bridge: Netfilter Configuration
#
CONFIG_BRIDGE_NF_EBTABLES=m
CONFIG_BRIDGE_EBT_BROUTE=m
CONFIG_BRIDGE_EBT_T_FILTER=m
CONFIG_BRIDGE_EBT_T_NAT=m
CONFIG_BRIDGE_EBT_802_3=m
CONFIG_BRIDGE_EBT_AMONG=m
CONFIG_BRIDGE_EBT_ARP=m
CONFIG_BRIDGE_EBT_IP=m
CONFIG_BRIDGE_EBT_LIMIT=m
CONFIG_BRIDGE_EBT_MARK=m
CONFIG_BRIDGE_EBT_PKTTYPE=m
CONFIG_BRIDGE_EBT_STP=m
CONFIG_BRIDGE_EBT_VLAN=m
CONFIG_BRIDGE_EBT_ARPREPLY=m
CONFIG_BRIDGE_EBT_DNAT=m
CONFIG_BRIDGE_EBT_MARK_T=m
CONFIG_BRIDGE_EBT_REDIRECT=m
CONFIG_BRIDGE_EBT_SNAT=m
CONFIG_BRIDGE_EBT_LOG=m
# CONFIG_BRIDGE_EBT_ULOG is not set
CONFIG_XFRM=y
CONFIG_XFRM_USER=y

#
# SCTP Configuration (EXPERIMENTAL)
#
CONFIG_IP_SCTP=m
# CONFIG_SCTP_DBG_MSG is not set
# CONFIG_SCTP_DBG_OBJCNT is not set
# CONFIG_SCTP_HMAC_NONE is not set
# CONFIG_SCTP_HMAC_SHA1 is not set
CONFIG_SCTP_HMAC_MD5=y
CONFIG_ATM=m
CONFIG_ATM_CLIP=m
# CONFIG_ATM_CLIP_NO_ICMP is not set
CONFIG_ATM_LANE=m
# CONFIG_ATM_MPOA is not set
CONFIG_ATM_BR2684=m
# CONFIG_ATM_BR2684_IPFILTER is not set
CONFIG_BRIDGE=m
CONFIG_VLAN_8021Q=m
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
CONFIG_NET_DIVERT=y
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set

#
# QoS and/or fair queueing
#
CONFIG_NET_SCHED=y
CONFIG_NET_SCH_CLK_JIFFIES=y
# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
# CONFIG_NET_SCH_CLK_CPU is not set
CONFIG_NET_SCH_CBQ=m
CONFIG_NET_SCH_HTB=m
CONFIG_NET_SCH_HFSC=m
CONFIG_NET_SCH_ATM=m
CONFIG_NET_SCH_PRIO=m
CONFIG_NET_SCH_RED=m
CONFIG_NET_SCH_SFQ=m
CONFIG_NET_SCH_TEQL=m
CONFIG_NET_SCH_TBF=m
CONFIG_NET_SCH_GRED=m
CONFIG_NET_SCH_DSMARK=m
CONFIG_NET_SCH_NETEM=m
CONFIG_NET_SCH_INGRESS=m
CONFIG_NET_QOS=y
CONFIG_NET_ESTIMATOR=y
CONFIG_NET_CLS=y
# CONFIG_NET_CLS_BASIC is not set
CONFIG_NET_CLS_TCINDEX=m
CONFIG_NET_CLS_ROUTE4=m
CONFIG_NET_CLS_ROUTE=y
CONFIG_NET_CLS_FW=m
CONFIG_NET_CLS_U32=m
CONFIG_CLS_U32_PERF=y
CONFIG_NET_CLS_IND=y
# CONFIG_CLS_U32_MARK is not set
CONFIG_NET_CLS_RSVP=m
CONFIG_NET_CLS_RSVP6=m
# CONFIG_NET_EMATCH is not set
# CONFIG_NET_CLS_ACT is not set
CONFIG_NET_CLS_POLICE=y

#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
CONFIG_NETDEVICES=y
CONFIG_DUMMY=m
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set

#
# ARCnet devices
#
# CONFIG_ARCNET is not set

#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
CONFIG_MII=m
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
CONFIG_NET_VENDOR_3COM=y
CONFIG_VORTEX=m
CONFIG_TYPHOON=m

#
# Tulip family network device support
#
# CONFIG_NET_TULIP is not set
# CONFIG_HP100 is not set
# CONFIG_NET_PCI is not set

#
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
# CONFIG_DL2K is not set
# CONFIG_E1000 is not set
# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_R8169 is not set
# CONFIG_SK98LIN is not set
# CONFIG_TIGON3 is not set
# CONFIG_BNX2 is not set

#
# Ethernet (10000 Mbit)
#
# CONFIG_IXGB is not set
# CONFIG_S2IO is not set

#
# Token Ring devices
#
# CONFIG_TR is not set

#
# Wireless LAN (non-hamradio)
#
# CONFIG_NET_RADIO is not set

#
# Wan interfaces
#
# CONFIG_WAN is not set

#
# ATM drivers
#
# CONFIG_ATM_TCP is not set
# CONFIG_ATM_LANAI is not set
# CONFIG_ATM_ENI is not set
# CONFIG_ATM_FIRESTREAM is not set
# CONFIG_ATM_ZATM is not set
# CONFIG_ATM_NICSTAR is not set
# CONFIG_ATM_IDT77252 is not set
# CONFIG_ATM_AMBASSADOR is not set
# CONFIG_ATM_HORIZON is not set
# CONFIG_ATM_IA is not set
# CONFIG_ATM_FORE200E_MAYBE is not set
# CONFIG_ATM_HE is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PLIP is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set

#
# ISDN subsystem
#
# CONFIG_ISDN is not set

#
# Telephony Support
#
# CONFIG_PHONE is not set

#
# Input device support
#
CONFIG_INPUT=y

#
# Userland interfaces
#
CONFIG_INPUT_MOUSEDEV=y
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_TSDEV is not set
CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
CONFIG_INPUT_MOUSE=y
# CONFIG_MOUSE_PS2 is not set
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_VSXXXAA is not set
CONFIG_INPUT_JOYSTICK=y
# CONFIG_JOYSTICK_ANALOG is not set
# CONFIG_JOYSTICK_A3D is not set
# CONFIG_JOYSTICK_ADI is not set
# CONFIG_JOYSTICK_COBRA is not set
# CONFIG_JOYSTICK_GF2K is not set
# CONFIG_JOYSTICK_GRIP is not set
# CONFIG_JOYSTICK_GRIP_MP is not set
# CONFIG_JOYSTICK_GUILLEMOT is not set
# CONFIG_JOYSTICK_INTERACT is not set
# CONFIG_JOYSTICK_SIDEWINDER is not set
# CONFIG_JOYSTICK_TMDC is not set
# CONFIG_JOYSTICK_IFORCE is not set
# CONFIG_JOYSTICK_WARRIOR is not set
# CONFIG_JOYSTICK_MAGELLAN is not set
# CONFIG_JOYSTICK_SPACEORB is not set
# CONFIG_JOYSTICK_SPACEBALL is not set
# CONFIG_JOYSTICK_STINGER is not set
# CONFIG_JOYSTICK_TWIDJOY is not set
# CONFIG_JOYSTICK_DB9 is not set
# CONFIG_JOYSTICK_GAMECON is not set
# CONFIG_JOYSTICK_TURBOGRAFX is not set
# CONFIG_JOYSTICK_JOYDUMP is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
CONFIG_INPUT_MISC=y
CONFIG_INPUT_PCSPKR=m
CONFIG_INPUT_UINPUT=m

#
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
CONFIG_SERIO_SERPORT=y
# CONFIG_SERIO_CT82C710 is not set
# CONFIG_SERIO_PARKBD is not set
# CONFIG_SERIO_PCIPS2 is not set
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_RAW is not set
# CONFIG_GAMEPORT is not set

#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_SERIAL_NONSTANDARD is not set

#
# Serial drivers
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
# CONFIG_SERIAL_8250_ACPI is not set
CONFIG_SERIAL_8250_NR_UARTS=4
CONFIG_SERIAL_8250_EXTENDED=y
# CONFIG_SERIAL_8250_MANY_PORTS is not set
CONFIG_SERIAL_8250_SHARE_IRQ=y
CONFIG_SERIAL_8250_DETECT_IRQ=y
CONFIG_SERIAL_8250_MULTIPORT=y
CONFIG_SERIAL_8250_RSA=y

#
# Non-8250 serial port support
#
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_JSM is not set
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
# CONFIG_PRINTER is not set
# CONFIG_PPDEV is not set
# CONFIG_TIPAR is not set

#
# IPMI
#
# CONFIG_IPMI_HANDLER is not set

#
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set
# CONFIG_HW_RANDOM is not set
CONFIG_NVRAM=m
CONFIG_RTC=y
CONFIG_RTC_HISTOGRAM=y
CONFIG_BLOCKER=y
CONFIG_LPPTEST=m
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_SONYPI is not set

#
# Ftape, the floppy tape device driver
#
# CONFIG_FTAPE is not set
CONFIG_AGP=y
# CONFIG_AGP_ALI is not set
CONFIG_AGP_ATI=y
# CONFIG_AGP_AMD is not set
# CONFIG_AGP_AMD64 is not set
CONFIG_AGP_INTEL=m
# CONFIG_AGP_NVIDIA is not set
# CONFIG_AGP_SIS is not set
# CONFIG_AGP_SWORKS is not set
# CONFIG_AGP_VIA is not set
# CONFIG_AGP_EFFICEON is not set
CONFIG_DRM=y
# CONFIG_DRM_TDFX is not set
CONFIG_DRM_R128=m
CONFIG_DRM_RADEON=m
CONFIG_DRM_I810=m
CONFIG_DRM_I830=m
CONFIG_DRM_I915=m
# CONFIG_DRM_MGA is not set
# CONFIG_DRM_SIS is not set
# CONFIG_MWAVE is not set
CONFIG_RAW_DRIVER=y
CONFIG_HPET=y
# CONFIG_HPET_RTC_IRQ is not set
CONFIG_HPET_MMAP=y
CONFIG_MAX_RAW_DEVS=8192
CONFIG_HANGCHECK_TIMER=y

#
# TPM devices
#
# CONFIG_TCG_TPM is not set

#
# I2C support
#
# CONFIG_I2C is not set

#
# Dallas's 1-wire bus
#
# CONFIG_W1 is not set

#
# Misc devices
#
# CONFIG_IBM_ASM is not set

#
# Multimedia devices
#
CONFIG_VIDEO_DEV=m

#
# Video For Linux
#

#
# Video Adapters
#
# CONFIG_VIDEO_BWQCAM is not set
# CONFIG_VIDEO_CQCAM is not set
# CONFIG_VIDEO_W9966 is not set
# CONFIG_VIDEO_CPIA is not set
# CONFIG_VIDEO_STRADIS is not set
# CONFIG_VIDEO_MXB is not set
# CONFIG_VIDEO_DPC is not set
# CONFIG_VIDEO_HEXIUM_ORION is not set
# CONFIG_VIDEO_HEXIUM_GEMINI is not set

#
# Radio Adapters
#
# CONFIG_RADIO_GEMTEK_PCI is not set
# CONFIG_RADIO_MAXIRADIO is not set
# CONFIG_RADIO_MAESTRO is not set

#
# Digital Video Broadcasting Devices
#
# CONFIG_DVB is not set

#
# Graphics support
#
# CONFIG_FB is not set
CONFIG_VIDEO_SELECT=y

#
# Console display driver support
#
CONFIG_VGA_CONSOLE=y
CONFIG_DUMMY_CONSOLE=y

#
# Sound
#
CONFIG_SOUND=m

#
# Advanced Linux Sound Architecture
#
CONFIG_SND=m
CONFIG_SND_TIMER=m
CONFIG_SND_PCM=m
CONFIG_SND_HWDEP=m
CONFIG_SND_RAWMIDI=m
CONFIG_SND_SEQUENCER=m
CONFIG_SND_SEQ_DUMMY=m
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
CONFIG_SND_SEQUENCER_OSS=y
CONFIG_SND_RTCTIMER=m
# CONFIG_SND_VERBOSE_PRINTK is not set
# CONFIG_SND_DEBUG is not set

#
# Generic devices
#
CONFIG_SND_MPU401_UART=m
CONFIG_SND_OPL3_LIB=m
CONFIG_SND_VX_LIB=m
CONFIG_SND_DUMMY=m
CONFIG_SND_VIRMIDI=m
CONFIG_SND_MTPAV=m
# CONFIG_SND_SERIAL_U16550 is not set
CONFIG_SND_MPU401=m

#
# PCI devices
#
CONFIG_SND_AC97_CODEC=m
CONFIG_SND_ALI5451=m
CONFIG_SND_ATIIXP=m
CONFIG_SND_ATIIXP_MODEM=m
CONFIG_SND_AU8810=m
CONFIG_SND_AU8820=m
CONFIG_SND_AU8830=m
CONFIG_SND_AZT3328=m
CONFIG_SND_BT87X=m
# CONFIG_SND_BT87X_OVERCLOCK is not set
CONFIG_SND_CS46XX=m
CONFIG_SND_CS46XX_NEW_DSP=y
CONFIG_SND_CS4281=m
CONFIG_SND_EMU10K1=m
CONFIG_SND_EMU10K1X=m
CONFIG_SND_CA0106=m
CONFIG_SND_KORG1212=m
CONFIG_SND_MIXART=m
CONFIG_SND_NM256=m
CONFIG_SND_RME32=m
CONFIG_SND_RME96=m
CONFIG_SND_RME9652=m
CONFIG_SND_HDSP=m
CONFIG_SND_TRIDENT=m
CONFIG_SND_YMFPCI=m
CONFIG_SND_ALS4000=m
CONFIG_SND_CMIPCI=m
CONFIG_SND_ENS1370=m
CONFIG_SND_ENS1371=m
CONFIG_SND_ES1938=m
CONFIG_SND_ES1968=m
CONFIG_SND_MAESTRO3=m
CONFIG_SND_FM801=m
CONFIG_SND_FM801_TEA575X=m
CONFIG_SND_ICE1712=m
CONFIG_SND_ICE1724=m
CONFIG_SND_INTEL8X0=m
CONFIG_SND_INTEL8X0M=m
CONFIG_SND_SONICVIBES=m
CONFIG_SND_VIA82XX=m
CONFIG_SND_VIA82XX_MODEM=m
CONFIG_SND_VX222=m
CONFIG_SND_HDA_INTEL=m

#
# USB devices
#
# CONFIG_SND_USB_AUDIO is not set
# CONFIG_SND_USB_USX2Y is not set

#
# Open Sound System
#
# CONFIG_SOUND_PRIME is not set

#
# USB support
#
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
CONFIG_USB=y
# CONFIG_USB_DEBUG is not set

#
# Miscellaneous USB options
#
CONFIG_USB_DEVICEFS=y
# CONFIG_USB_BANDWIDTH is not set
# CONFIG_USB_DYNAMIC_MINORS is not set
CONFIG_USB_SUSPEND=y
# CONFIG_USB_OTG is not set

#
# USB Host Controller Drivers
#
CONFIG_USB_EHCI_HCD=m
CONFIG_USB_EHCI_SPLIT_ISO=y
CONFIG_USB_EHCI_ROOT_HUB_TT=y
CONFIG_USB_OHCI_HCD=m
# CONFIG_USB_OHCI_BIG_ENDIAN is not set
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_USB_UHCI_HCD=m
# CONFIG_USB_SL811_HCD is not set

#
# USB Device Class drivers
#
# CONFIG_USB_AUDIO is not set
# CONFIG_USB_BLUETOOTH_TTY is not set
CONFIG_USB_MIDI=m
CONFIG_USB_ACM=m
CONFIG_USB_PRINTER=m

#
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
#
# CONFIG_USB_STORAGE is not set

#
# USB Input Devices
#
CONFIG_USB_HID=y
CONFIG_USB_HIDINPUT=y
CONFIG_HID_FF=y
CONFIG_HID_PID=y
CONFIG_LOGITECH_FF=y
CONFIG_THRUSTMASTER_FF=y
CONFIG_USB_HIDDEV=y
# CONFIG_USB_AIPTEK is not set
# CONFIG_USB_WACOM is not set
# CONFIG_USB_KBTAB is not set
# CONFIG_USB_POWERMATE is not set
# CONFIG_USB_MTOUCH is not set
# CONFIG_USB_EGALAX is not set
# CONFIG_USB_XPAD is not set
# CONFIG_USB_ATI_REMOTE is not set

#
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set

#
# USB Multimedia devices
#
# CONFIG_USB_DABUSB is not set
# CONFIG_USB_VICAM is not set
# CONFIG_USB_DSBR is not set
# CONFIG_USB_IBMCAM is not set
# CONFIG_USB_KONICAWC is not set
# CONFIG_USB_OV511 is not set
# CONFIG_USB_SE401 is not set
# CONFIG_USB_SN9C102 is not set
# CONFIG_USB_STV680 is not set
# CONFIG_USB_PWC is not set

#
# USB Network Adapters
#
# CONFIG_USB_CATC is not set
# CONFIG_USB_KAWETH is not set
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_RTL8150 is not set
# CONFIG_USB_USBNET is not set
# CONFIG_USB_MON is not set

#
# USB port drivers
#
# CONFIG_USB_USS720 is not set

#
# USB Serial Converter support
#
# CONFIG_USB_SERIAL is not set

#
# USB Miscellaneous drivers
#
# CONFIG_USB_EMI62 is not set
# CONFIG_USB_EMI26 is not set
# CONFIG_USB_AUERSWALD is not set
# CONFIG_USB_RIO500 is not set
# CONFIG_USB_LEGOTOWER is not set
# CONFIG_USB_LCD is not set
# CONFIG_USB_LED is not set
# CONFIG_USB_CYTHERM is not set
# CONFIG_USB_PHIDGETKIT is not set
# CONFIG_USB_PHIDGETSERVO is not set
# CONFIG_USB_IDMOUSE is not set
# CONFIG_USB_SISUSBVGA is not set
# CONFIG_USB_TEST is not set

#
# USB ATM/DSL drivers
#
# CONFIG_USB_ATM is not set
# CONFIG_USB_SPEEDTOUCH is not set

#
# USB Gadget Support
#
# CONFIG_USB_GADGET is not set

#
# MMC/SD Card support
#
# CONFIG_MMC is not set

#
# InfiniBand support
#
# CONFIG_INFINIBAND is not set

#
# File systems
#
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT2_FS_SECURITY=y
CONFIG_EXT3_FS=y
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
CONFIG_FS_MBCACHE=y
CONFIG_REISERFS_FS=m
# CONFIG_REISERFS_CHECK is not set
# CONFIG_REISERFS_PROC_INFO is not set
CONFIG_REISERFS_FS_XATTR=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_SECURITY=y
# CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y

#
# XFS support
#
# CONFIG_XFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_QUOTA=y
# CONFIG_QFMT_V1 is not set
CONFIG_QFMT_V2=y
CONFIG_QUOTACTL=y
CONFIG_DNOTIFY=y
CONFIG_AUTOFS_FS=m
CONFIG_AUTOFS4_FS=m

#
# CD-ROM/DVD Filesystems
#
CONFIG_ISO9660_FS=y
CONFIG_JOLIET=y
CONFIG_ZISOFS=y
CONFIG_ZISOFS_FS=y
CONFIG_UDF_FS=m
CONFIG_UDF_NLS=y

#
# DOS/FAT/NT Filesystems
#
# CONFIG_MSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_NTFS_FS is not set

#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
CONFIG_SYSFS=y
# CONFIG_DEVFS_FS is not set
CONFIG_DEVPTS_FS_XATTR=y
CONFIG_DEVPTS_FS_SECURITY=y
CONFIG_TMPFS=y
CONFIG_TMPFS_XATTR=y
CONFIG_TMPFS_SECURITY=y
CONFIG_HUGETLBFS=y
CONFIG_HUGETLB_PAGE=y
CONFIG_RAMFS=y

#
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
# CONFIG_JFFS2_FS is not set
CONFIG_CRAMFS=m
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set

#
# Network File Systems
#
CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
CONFIG_NFS_V4=y
CONFIG_NFS_DIRECTIO=y
CONFIG_NFSD=m
CONFIG_NFSD_V3=y
CONFIG_NFSD_V4=y
CONFIG_NFSD_TCP=y
CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
CONFIG_SUNRPC=m
CONFIG_SUNRPC_GSS=m
CONFIG_RPCSEC_GSS_KRB5=m
CONFIG_RPCSEC_GSS_SPKM3=m
CONFIG_SMB_FS=y
CONFIG_SMB_NLS_DEFAULT=y
CONFIG_SMB_NLS_REMOTE="cp437"
CONFIG_CIFS=y
CONFIG_CIFS_STATS=y
CONFIG_CIFS_XATTR=y
CONFIG_CIFS_POSIX=y
# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set

#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y

#
# Native Language Support
#
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="utf8"
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_CODEPAGE_737=m
CONFIG_NLS_CODEPAGE_775=m
CONFIG_NLS_CODEPAGE_850=m
CONFIG_NLS_CODEPAGE_852=m
CONFIG_NLS_CODEPAGE_855=m
CONFIG_NLS_CODEPAGE_857=m
CONFIG_NLS_CODEPAGE_860=m
CONFIG_NLS_CODEPAGE_861=m
CONFIG_NLS_CODEPAGE_862=m
CONFIG_NLS_CODEPAGE_863=m
CONFIG_NLS_CODEPAGE_864=m
CONFIG_NLS_CODEPAGE_865=m
CONFIG_NLS_CODEPAGE_866=m
CONFIG_NLS_CODEPAGE_869=m
CONFIG_NLS_CODEPAGE_936=m
CONFIG_NLS_CODEPAGE_950=m
CONFIG_NLS_CODEPAGE_932=m
CONFIG_NLS_CODEPAGE_949=m
CONFIG_NLS_CODEPAGE_874=m
CONFIG_NLS_ISO8859_8=m
CONFIG_NLS_CODEPAGE_1250=m
CONFIG_NLS_CODEPAGE_1251=m
CONFIG_NLS_ASCII=y
CONFIG_NLS_ISO8859_1=m
CONFIG_NLS_ISO8859_2=m
CONFIG_NLS_ISO8859_3=m
CONFIG_NLS_ISO8859_4=m
CONFIG_NLS_ISO8859_5=m
CONFIG_NLS_ISO8859_6=m
CONFIG_NLS_ISO8859_7=m
CONFIG_NLS_ISO8859_9=m
CONFIG_NLS_ISO8859_13=m
CONFIG_NLS_ISO8859_14=m
CONFIG_NLS_ISO8859_15=m
CONFIG_NLS_KOI8_R=m
CONFIG_NLS_KOI8_U=m
CONFIG_NLS_UTF8=m

#
# Profiling support
#
CONFIG_PROFILING=y
CONFIG_OPROFILE=m

#
# Kernel hacking
#
# CONFIG_PRINTK_TIME is not set
# CONFIG_PRINTK_IGNORE_LOGLEVEL is not set
CONFIG_DEBUG_KERNEL=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_LOG_BUF_SHIFT=17
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
CONFIG_DEBUG_IRQ_FLAGS=y
# CONFIG_WAKEUP_TIMING is not set
CONFIG_PREEMPT_TRACE=y
# CONFIG_CRITICAL_PREEMPT_TIMING is not set
# CONFIG_CRITICAL_IRQSOFF_TIMING is not set
# CONFIG_RT_DEADLOCK_DETECT is not set
# CONFIG_DEBUG_RT_LOCKING_MODE is not set
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_HIGHMEM is not set
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_FS is not set
# CONFIG_USE_FRAME_POINTER is not set
CONFIG_EARLY_PRINTK=y
# CONFIG_DEBUG_STACKOVERFLOW is not set
# CONFIG_KPROBES is not set
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_PAGEALLOC is not set
# CONFIG_4KSTACKS is not set
CONFIG_X86_FIND_SMP_CONFIG=y
CONFIG_X86_MPPARSE=y

#
# Security options
#
# CONFIG_KEYS is not set
CONFIG_SECURITY=y
CONFIG_SECURITY_NETWORK=y
CONFIG_SECURITY_CAPABILITIES=y
# CONFIG_SECURITY_ROOTPLUG is not set
# CONFIG_SECURITY_SECLVL is not set
CONFIG_SECURITY_SELINUX=y
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1
CONFIG_SECURITY_SELINUX_DISABLE=y
CONFIG_SECURITY_SELINUX_DEVELOP=y
CONFIG_SECURITY_SELINUX_AVC_STATS=y
CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1

#
# Cryptographic options
#
CONFIG_CRYPTO=y
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=m
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_SHA512=m
CONFIG_CRYPTO_WP512=m
CONFIG_CRYPTO_TGR192=m
CONFIG_CRYPTO_DES=m
CONFIG_CRYPTO_BLOWFISH=m
CONFIG_CRYPTO_TWOFISH=m
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_AES_586=m
CONFIG_CRYPTO_CAST5=m
CONFIG_CRYPTO_CAST6=m
CONFIG_CRYPTO_TEA=m
CONFIG_CRYPTO_ARC4=m
CONFIG_CRYPTO_KHAZAD=m
# CONFIG_CRYPTO_ANUBIS is not set
CONFIG_CRYPTO_DEFLATE=m
CONFIG_CRYPTO_MICHAEL_MIC=m
CONFIG_CRYPTO_CRC32C=m
# CONFIG_CRYPTO_TEST is not set

#
# Hardware crypto devices
#
# CONFIG_CRYPTO_DEV_PADLOCK is not set

#
# Library routines
#
CONFIG_CRC_CCITT=m
CONFIG_CRC32=y
CONFIG_LIBCRC32C=m
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=m
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_X86_BIOS_REBOOT=y
CONFIG_PC=y

^ permalink raw reply	[flat|nested] 101+ messages in thread

* Re: Realtime Preemption, 2.6.12, Beginners Guide?
       [not found] <20050713063310.GA12661@elte.hu>
@ 2005-07-13 10:30 ` karsten wiese
  2005-07-13 18:38   ` Chuck Harding
  0 siblings, 1 reply; 101+ messages in thread
From: karsten wiese @ 2005-07-13 10:30 UTC (permalink / raw)
  To: charding; +Cc: Ingo Molnar, linux-kernel


--- Ingo Molnar <mingo@elte.hu> schrieb:

> 
> hm, -28 is broken, and your patch is the only significant
> change:
> 
> ----- Forwarded message from Chuck Harding
> <charding@llnl.gov> -----
> 
> Date: Tue, 12 Jul 2005 14:01:04 -0700 (PDT)
> From: Chuck Harding <charding@llnl.gov>
> To: Linux Kernel Discussion List
> <linux-kernel@vger.kernel.org>
> Subject: Re: Realtime Preemption, 2.6.12, Beginners
> Guide?
> Cc: Ingo Molnar <mingo@elte.hu>
> 
> On Tue, 12 Jul 2005, Lee Revell wrote:
> 
> >On Mon, 2005-07-11 at 17:07 +0200, Ingo Molnar wrote:
> >>I've uploaded -27 with the fix - but it should
> >>only confirm that it's not a stack overflow.
> >
> >V0.7.51-28 does not compile:
> >
> > CC [M]  sound/oss/emu10k1/midi.o
> >sound/oss/emu10k1/midi.c:48: error: syntax error before
> '__attribute__'
> >sound/oss/emu10k1/midi.c:48: error: syntax error before
> ')' token
> >
> >Here's the offending line:
> >
> >   48 static DEFINE_SPINLOCK(midi_spinlock
> __attribute((unused)));
> >
> >Lee
> >
> 
> I got it to compile but it won't boot - it hangs right
> after the
> 'Uncompressing Linux... OK, booting the kernel' - I'm
> using .config
> from 51-27 (attached)
> 
Please unselect CONFIG_X86_IOAPIC_FAST and try 51-28 again.
Also please boot the newest "working for you" RT kernel
with the kernel parameter 'apic=debug' added. Post the
dmesg that you get right after boot.

    Karsten




	

	
		
___________________________________________________________ 
Gesendet von Yahoo! Mail - Jetzt mit 1GB Speicher kostenlos - Hier anmelden: http://mail.yahoo.de

^ permalink raw reply	[flat|nested] 101+ messages in thread

end of thread, other threads:[~2005-07-19 22:57 UTC | newest]

Thread overview: 101+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-07-06 11:57 Realtime Preemption, 2.6.12, Beginners Guide? Alistair John Strachan
2005-07-06 12:51 ` Alistair John Strachan
2005-07-06 13:39   ` Ingo Molnar
2005-07-06 15:58     ` Alistair John Strachan
2005-07-06 16:28       ` Ingo Molnar
2005-07-06 16:31         ` Alistair John Strachan
2005-07-06 13:31 ` Ingo Molnar
2005-07-06 15:55   ` Alistair John Strachan
2005-07-06 16:24     ` Ingo Molnar
2005-07-06 16:37       ` Alistair John Strachan
2005-07-06 16:56         ` Alistair John Strachan
2005-07-06 17:01           ` Ingo Molnar
2005-07-06 17:14             ` Alistair John Strachan
2005-07-06 17:27               ` Ingo Molnar
2005-07-06 18:23                 ` Alistair John Strachan
2005-07-06 18:38                   ` Ingo Molnar
2005-07-06 18:41                     ` Ingo Molnar
2005-07-06 19:47                       ` Alistair John Strachan
2005-07-06 20:44                         ` Ingo Molnar
2005-07-06 21:00                           ` Alistair John Strachan
2005-07-06 21:02                             ` Ingo Molnar
2005-07-06 22:15                               ` Alistair John Strachan
2005-07-06 23:08                                 ` Fernando Lopez-Lezcano
2005-07-07  6:04                                   ` Michal Schmidt
2005-07-07 10:25                                     ` Ingo Molnar
2005-07-07  9:46                           ` Alistair John Strachan
2005-07-07 11:21                             ` Alistair John Strachan
2005-07-07 11:29                               ` Ingo Molnar
2005-07-07 11:37                                 ` Alistair John Strachan
2005-07-07 11:42                                   ` Ingo Molnar
2005-07-07 12:15                                     ` Alistair John Strachan
2005-07-07 12:29                                       ` Ingo Molnar
2005-07-07 13:38                                         ` Alistair John Strachan
2005-07-07 12:33                                       ` Alistair John Strachan
2005-07-08  9:47                                     ` Alistair John Strachan
2005-07-08 11:46                                       ` Ingo Molnar
2005-07-08 18:38                                         ` Alistair John Strachan
2005-07-08 19:12                                           ` USB storage does not work with 3GB of RAM, but does with 2G of RAM Jon Schindler
2005-07-08 19:25                                           ` Realtime Preemption, 2.6.12, Beginners Guide? Ingo Molnar
2005-07-08 19:31                                           ` Ingo Molnar
2005-07-08 19:34                                             ` Ingo Molnar
2005-07-08 19:48                                           ` Ingo Molnar
2005-07-08 19:55                                             ` Alistair John Strachan
2005-07-08 20:45                                             ` Alistair John Strachan
2005-07-09 11:58                                               ` Ingo Molnar
2005-07-09 14:07                                                 ` Alistair John Strachan
2005-07-09 14:55                                                   ` Ingo Molnar
2005-07-09 15:57                                                   ` Ingo Molnar
2005-07-09 16:02                                                     ` Ingo Molnar
2005-07-09 16:04                                                     ` Alistair John Strachan
2005-07-11 13:55                                                       ` Alistair John Strachan
2005-07-11 14:12                                                         ` Ingo Molnar
2005-07-11 14:16                                                           ` Ingo Molnar
2005-07-11 14:38                                                             ` Alistair John Strachan
2005-07-11 14:43                                                               ` Ingo Molnar
2005-07-11 15:50                                                                 ` Alistair John Strachan
2005-07-13 14:45                                                                   ` Ingo Molnar
2005-07-13 15:30                                                                     ` Ingo Molnar
2005-07-14 19:58                                                                       ` Alistair John Strachan
2005-07-14 20:16                                                                         ` Lee Revell
2005-07-15 22:12                                                                           ` Alistair John Strachan
2005-07-12  2:56                                                               ` Lee Revell
2005-07-11 15:07                                                             ` Ingo Molnar
2005-07-12 20:09                                                               ` Lee Revell
2005-07-12 21:01                                                                 ` Chuck Harding
2005-07-13 10:39                                                                   ` Ingo Molnar
2005-07-13 12:29                                                                     ` Gene Heskett
2005-07-13 14:01                                                                     ` K.R. Foley
2005-07-13 19:41                                                                       ` Chuck Harding
2005-07-13 19:45                                                                         ` Ingo Molnar
2005-07-14 13:39                                                                           ` K.R. Foley
2005-07-14 12:50                                                                       ` Karsten Wiese
2005-07-14 13:56                                                                         ` K.R. Foley
2005-07-14 14:10                                                                           ` K.R. Foley
2005-07-14 14:11                                                                             ` K.R. Foley
2005-07-14 19:49                                                                         ` Chuck Harding
2005-07-16 17:15                                                                         ` Ingo Molnar
2005-07-16 19:01                                                                           ` K.R. Foley
2005-07-17 12:07                                                                           ` Karsten Wiese
2005-07-18 15:46                                                                             ` K.R. Foley
2005-07-19 11:14                                                                             ` Karsten Wiese
2005-07-19 13:35                                                                               ` Gene Heskett
2005-07-19 13:57                                                                               ` Ingo Molnar
2005-07-19 15:19                                                                                 ` Gene Heskett
2005-07-19 23:00                                                                                   ` Karsten Wiese
2005-07-09 12:41                                               ` Ingo Molnar
2005-07-09 12:46                                                 ` Ingo Molnar
2005-07-09 13:05                                                 ` Ingo Molnar
2005-07-11 22:48                                                   ` William Weston
2005-07-12 13:53                                                     ` Ingo Molnar
2005-07-09 13:13                                                 ` Ingo Molnar
2005-07-09 13:26                                                 ` Ingo Molnar
2005-07-10 19:01                                                   ` PCMCIA stack reduction patch [Was: Re: Realtime Preemption, 2.6.12, Beginners Guide?] Dominik Brodowski
2005-07-09 13:36                                                 ` Realtime Preemption, 2.6.12, Beginners Guide? Ingo Molnar
2005-07-11 13:28                                                 ` Paulo Marques
2005-07-08 11:48                                       ` Ingo Molnar
2005-07-08 17:42                                         ` Alistair John Strachan
2005-07-08 17:48                                           ` Jakub Jelinek
2005-07-08 18:12                                             ` Alistair John Strachan
     [not found] <20050713063310.GA12661@elte.hu>
2005-07-13 10:30 ` karsten wiese
2005-07-13 18:38   ` Chuck Harding

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).