linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Math-emu kills the kernel on Athlon64 X2
@ 2006-09-18 22:18 Jesper Juhl
  2006-09-18 22:52 ` Linus Torvalds
                   ` (2 more replies)
  0 siblings, 3 replies; 39+ messages in thread
From: Jesper Juhl @ 2006-09-18 22:18 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: billm, billm, Linus Torvalds

Hi,

If I enable the math emulator in 2.6.18-rc7-git2 (only version I've
tried this with) and then boot the kernel with "no387" then I only get
as far as lilo's "...Booting the kernel." message and then the system
hangs.

The kernel is a 32bit kernel build for K8 and my CPU is a Athlon64 X2 4400+

If I boot the same kernel without the "no387" option, then it boots
and runs just fine, so it seems the math emulator code is lethal on
newer CPU's :-(

Now, I need some help debugging this. The crash happens very early and
doesn't result in anything printed to the screen (I guess it's too
early to call printk()) - How on earth can I get a lead on what's
going wrong?  Any help would be appreciated.

-- 
Jesper Juhl <jesper.juhl@gmail.com>
Don't top-post  http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please      http://www.expita.com/nomime.html

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

* Re: Math-emu kills the kernel on Athlon64 X2
  2006-09-18 22:18 Math-emu kills the kernel on Athlon64 X2 Jesper Juhl
@ 2006-09-18 22:52 ` Linus Torvalds
  2006-09-18 23:14   ` Jesper Juhl
  2006-09-18 23:49 ` Sergio Monteiro Basto
  2006-09-19  8:01 ` Andi Kleen
  2 siblings, 1 reply; 39+ messages in thread
From: Linus Torvalds @ 2006-09-18 22:52 UTC (permalink / raw)
  To: Jesper Juhl; +Cc: Linux Kernel Mailing List, billm, billm



On Tue, 19 Sep 2006, Jesper Juhl wrote:
> 
> If I enable the math emulator in 2.6.18-rc7-git2 (only version I've
> tried this with) and then boot the kernel with "no387" then I only get
> as far as lilo's "...Booting the kernel." message and then the system
> hangs.

I'm wondering if it tries to use the MMX/XMM stuff for memcpy and friends. 

I'm also wondering why you'd be doing what you seem to try to be doing in 
the first place ;)

Basically, "no387" doesn't seem to disable any of the fancier FPU 
features, even though it obviously should. If you ask for math emulation, 
you'll get emulation faults for _all_ of the modern MMX stuff too (which 
we don't do). 

It's entirely possible that nobody has ever tested this combination.

		Linus

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

* Re: Math-emu kills the kernel on Athlon64 X2
  2006-09-18 22:52 ` Linus Torvalds
@ 2006-09-18 23:14   ` Jesper Juhl
  2006-09-18 23:49     ` Linus Torvalds
  0 siblings, 1 reply; 39+ messages in thread
From: Jesper Juhl @ 2006-09-18 23:14 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Linux Kernel Mailing List, billm, billm

On 19/09/06, Linus Torvalds <torvalds@osdl.org> wrote:
>
>
> On Tue, 19 Sep 2006, Jesper Juhl wrote:
> >
> > If I enable the math emulator in 2.6.18-rc7-git2 (only version I've
> > tried this with) and then boot the kernel with "no387" then I only get
> > as far as lilo's "...Booting the kernel." message and then the system
> > hangs.
>
> I'm wondering if it tries to use the MMX/XMM stuff for memcpy and friends.
>
> I'm also wondering why you'd be doing what you seem to try to be doing in
> the first place ;)
>
Simply to try and find bugs. If we have a math emulator and it's
selectable for my CPU type, then it should damn well work ;-)

> Basically, "no387" doesn't seem to disable any of the fancier FPU
> features, even though it obviously should. If you ask for math emulation,
> you'll get emulation faults for _all_ of the modern MMX stuff too (which
> we don't do).
>
Hmm, I guess that could be the problem. The emulator should disable
any stuff which it's not able to handle. I've not actually looked very
much at the emulator code yet, so I didn't realize it didn't disable
what it couldn't handle, but getting it to do that sounds like a
sensible first step.

> It's entirely possible that nobody has ever tested this combination.
>
That was my thought as well, which is exactely why I chose to try it -
thinking that it might expose some bugs in math-emu or elsewhere.


-- 
Jesper Juhl <jesper.juhl@gmail.com>
Don't top-post  http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please      http://www.expita.com/nomime.html

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

* Re: Math-emu kills the kernel on Athlon64 X2
  2006-09-18 23:14   ` Jesper Juhl
@ 2006-09-18 23:49     ` Linus Torvalds
  2006-09-19  0:47       ` Jesper Juhl
  0 siblings, 1 reply; 39+ messages in thread
From: Linus Torvalds @ 2006-09-18 23:49 UTC (permalink / raw)
  To: Jesper Juhl; +Cc: Linux Kernel Mailing List, billm, billm



On Tue, 19 Sep 2006, Jesper Juhl wrote:
> On 19/09/06, Linus Torvalds <torvalds@osdl.org> wrote:
> > 
> > Basically, "no387" doesn't seem to disable any of the fancier FPU
> > features, even though it obviously should. If you ask for math emulation,
> > you'll get emulation faults for _all_ of the modern MMX stuff too (which
> > we don't do).
> > 
> Hmm, I guess that could be the problem. The emulator should disable
> any stuff which it's not able to handle. I've not actually looked very
> much at the emulator code yet, so I didn't realize it didn't disable
> what it couldn't handle, but getting it to do that sounds like a
> sensible first step.

I would guess that we might notice, for example, that the CPU supports 
FXSR (fxsave/fxrestor) through looking at cpuid, and then we have, for 
example:

    arch/i386/kernel/cpu/common.c: cpu_init() ->
	arch/i386/kernel/i387.c: mxcsr_feature_mask_init() ->


        if (cpu_has_fxsr) {
                memset(&current->thread.i387.fxsave, 0, sizeof(struct i387_fxsave_struct));
                asm volatile("fxsave %0" : : "m" (current->thread.i387.fxsave));
		...

ie we will do one of the fancy new instructions from kernel space (very 
early), because this path at no point even bothers to check whether it is 
supposed to even use hw FP at all.

You can try booting with "no387 nofxsr" to get rid of at least _that_ 
particular issue, but there might be other cases like that in the MMX 
code, for example ("nofxsr" should disable both the FXSR and XMM 
capabilities as far as the kernel is concerned).

If that works (or gets you further), we should just make "no387" disable 
FXSR by itself. 

Worth testing, and you can do it without even recompiling the kernel, 
since we already have that kernel command line flag.

		Linus

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

* Re: Math-emu kills the kernel on Athlon64 X2
  2006-09-18 22:18 Math-emu kills the kernel on Athlon64 X2 Jesper Juhl
  2006-09-18 22:52 ` Linus Torvalds
@ 2006-09-18 23:49 ` Sergio Monteiro Basto
  2006-09-19  0:02   ` Jesper Juhl
  2006-09-19 12:28   ` Krzysztof Halasa
  2006-09-19  8:01 ` Andi Kleen
  2 siblings, 2 replies; 39+ messages in thread
From: Sergio Monteiro Basto @ 2006-09-18 23:49 UTC (permalink / raw)
  To: Jesper Juhl; +Cc: Linux Kernel Mailing List, billm, billm

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

On Tue, 2006-09-19 at 00:18 +0200, Jesper Juhl wrote:
> Hi,
> 
> If I enable the math emulator in 2.6.18-rc7-git2 (only version I've
> tried this with) and then boot the kernel with "no387" then I only get
> as far as lilo's "...Booting the kernel." message and then the system
> hangs.
> 

I think, math emulation is for 486 and older. 486 DX2 was the first one
who have math co processor, on earlier processor it should be disable .


-- 
Sérgio M. B.

[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 2166 bytes --]

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

* Re: Math-emu kills the kernel on Athlon64 X2
  2006-09-18 23:49 ` Sergio Monteiro Basto
@ 2006-09-19  0:02   ` Jesper Juhl
  2006-09-19 12:28   ` Krzysztof Halasa
  1 sibling, 0 replies; 39+ messages in thread
From: Jesper Juhl @ 2006-09-19  0:02 UTC (permalink / raw)
  To: sergio; +Cc: Linux Kernel Mailing List, billm, billm

On 19/09/06, Sergio Monteiro Basto <sergio@sergiomb.no-ip.org> wrote:
> On Tue, 2006-09-19 at 00:18 +0200, Jesper Juhl wrote:
> > Hi,
> >
> > If I enable the math emulator in 2.6.18-rc7-git2 (only version I've
> > tried this with) and then boot the kernel with "no387" then I only get
> > as far as lilo's "...Booting the kernel." message and then the system
> > hangs.
> >
>
> I think, math emulation is for 486 and older. 486 DX2 was the first one
> who have math co processor, on earlier processor it should be disable .
>
Yes, it's mainly there for CPU's that don't have a math co-processor,
but it's also there for the cases where the math co-processor is
broken or where for some other reason you may not want to use it - so
it really should work...  Sure, it may be slow as hell compared to
hardware, but if it's there and I can select it then it should at
least be functional.


-- 
Jesper Juhl <jesper.juhl@gmail.com>
Don't top-post  http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please      http://www.expita.com/nomime.html

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

* Re: Math-emu kills the kernel on Athlon64 X2
  2006-09-18 23:49     ` Linus Torvalds
@ 2006-09-19  0:47       ` Jesper Juhl
  2006-09-19  2:18         ` Linus Torvalds
  0 siblings, 1 reply; 39+ messages in thread
From: Jesper Juhl @ 2006-09-19  0:47 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Linux Kernel Mailing List, billm, billm

On 19/09/06, Linus Torvalds <torvalds@osdl.org> wrote:
[...]
>
> You can try booting with "no387 nofxsr" to get rid of at least _that_
> particular issue, but there might be other cases like that in the MMX
> code, for example ("nofxsr" should disable both the FXSR and XMM
> capabilities as far as the kernel is concerned).
>
> If that works (or gets you further), we should just make "no387" disable
> FXSR by itself.
>
> Worth testing, and you can do it without even recompiling the kernel,
> since we already have that kernel command line flag.
>

Booting with: vga=normal no387 nofxsr
gets me no forther.   These are all the messages I get:

 boot: 2.6.18rc7git2 vga=normal no387 nofxsr
 Loading 2.6.18rc7git2...................................
 BIOS data check successful
 Uncompressing Linux... Ok, booting the kernel.

And then the system hangs and requires a power cycle.

So unfortunately that does't help much :-(


-- 
Jesper Juhl <jesper.juhl@gmail.com>
Don't top-post  http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please      http://www.expita.com/nomime.html

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

* Re: Math-emu kills the kernel on Athlon64 X2
  2006-09-19  0:47       ` Jesper Juhl
@ 2006-09-19  2:18         ` Linus Torvalds
  0 siblings, 0 replies; 39+ messages in thread
From: Linus Torvalds @ 2006-09-19  2:18 UTC (permalink / raw)
  To: Jesper Juhl; +Cc: Linux Kernel Mailing List, billm



On Tue, 19 Sep 2006, Jesper Juhl wrote:
> 
> Booting with: vga=normal no387 nofxsr
> gets me no forther.   These are all the messages I get:
> 
> boot: 2.6.18rc7git2 vga=normal no387 nofxsr
> Loading 2.6.18rc7git2...................................
> BIOS data check successful
> Uncompressing Linux... Ok, booting the kernel.
> 
> And then the system hangs and requires a power cycle.
> 
> So unfortunately that does't help much :-(

Ok. The next phase is to try to figure out where it hangs, and since it 
happens very early, that's most often most easily done the hard way: add 
some code that reboots the machine, and if the machine hangs, you didn't 
reach it.

These days there's a slightly easier approach: if you enable PM_TRACE 
support (you need to enable PM and PM_DEBUG and EXPERIMENTAL to get it), 
you can do

	#include <resume-trace.h>

at the top of a file, and add a sprinkling of "TRACE_RESUME(x)" calls 
(where "x" is some integer in the range 0-15 that you can use to save off 
the iteration count in a loop, for example - leave at 0 if you're not 
interested).

And then, when it hangs, once you reboot into the same kernel (without the 
"no387", so that it works ;), it should tell you where the last 
trace-point was fairly early in the bootup dmesg's.

(It _will_ screw up your time-of-day clock in the process, though, which 
is why tracing is so hard to enable on purpose ;)

		Linus

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

* Re: Math-emu kills the kernel on Athlon64 X2
  2006-09-18 22:18 Math-emu kills the kernel on Athlon64 X2 Jesper Juhl
  2006-09-18 22:52 ` Linus Torvalds
  2006-09-18 23:49 ` Sergio Monteiro Basto
@ 2006-09-19  8:01 ` Andi Kleen
  2006-09-19  8:31   ` Jesper Juhl
  2006-09-19 21:14   ` Jesper Juhl
  2 siblings, 2 replies; 39+ messages in thread
From: Andi Kleen @ 2006-09-19  8:01 UTC (permalink / raw)
  To: Jesper Juhl; +Cc: billm, billm, Linus Torvalds, linux-kernel

"Jesper Juhl" <jesper.juhl@gmail.com> writes:

> Hi,
> 
> If I enable the math emulator in 2.6.18-rc7-git2 (only version I've
> tried this with) and then boot the kernel with "no387" then I only get
> as far as lilo's "...Booting the kernel." message and then the system
> hangs.
> 
> The kernel is a 32bit kernel build for K8 and my CPU is a Athlon64 X2 4400+

Do you have a .config? I tried it and it booted until mounting root.

-Andi

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

* Re: Math-emu kills the kernel on Athlon64 X2
  2006-09-19  8:01 ` Andi Kleen
@ 2006-09-19  8:31   ` Jesper Juhl
  2006-09-19 21:14   ` Jesper Juhl
  1 sibling, 0 replies; 39+ messages in thread
From: Jesper Juhl @ 2006-09-19  8:31 UTC (permalink / raw)
  To: Andi Kleen; +Cc: billm, billm, Linus Torvalds, linux-kernel

On 19 Sep 2006 10:01:55 +0200, Andi Kleen <ak@suse.de> wrote:
> "Jesper Juhl" <jesper.juhl@gmail.com> writes:
>
> > Hi,
> >
> > If I enable the math emulator in 2.6.18-rc7-git2 (only version I've
> > tried this with) and then boot the kernel with "no387" then I only get
> > as far as lilo's "...Booting the kernel." message and then the system
> > hangs.
> >
> > The kernel is a 32bit kernel build for K8 and my CPU is a Athlon64 X2 4400+
>
> Do you have a .config? I tried it and it booted until mounting root.
>
Yes, I do. I'll mail it tonight when I get home from work.

-- 
Jesper Juhl <jesper.juhl@gmail.com>
Don't top-post  http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please      http://www.expita.com/nomime.html

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

* Re: Math-emu kills the kernel on Athlon64 X2
  2006-09-18 23:49 ` Sergio Monteiro Basto
  2006-09-19  0:02   ` Jesper Juhl
@ 2006-09-19 12:28   ` Krzysztof Halasa
  2006-09-20  0:48     ` Sergio Monteiro Basto
  1 sibling, 1 reply; 39+ messages in thread
From: Krzysztof Halasa @ 2006-09-19 12:28 UTC (permalink / raw)
  To: sergio; +Cc: Jesper Juhl, Linux Kernel Mailing List, billm, billm

Sergio Monteiro Basto <sergio@sergiomb.no-ip.org> writes:
> I think, math emulation is for 486 and older. 486 DX2 was the first one
> who have math co processor, on earlier processor it should be disable .

Actually, 486 DX had built-in FPU as well. It was missing from 486SX
(486SX + optional 487 FPU = 486DX).

For 386(DX|SX) there were 387(DX|SX) (386SX used 16-bit bus).

Many 32-bit motherboards had a socket for Weitek (3167 for 386DX or 4167
for 486). I think I remember a board with 386DX and 287 socket as well.

486DX2 meant the external clock was half the internal.
-- 
Krzysztof Halasa

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

* Re: Math-emu kills the kernel on Athlon64 X2
  2006-09-19  8:01 ` Andi Kleen
  2006-09-19  8:31   ` Jesper Juhl
@ 2006-09-19 21:14   ` Jesper Juhl
  2006-09-19 22:01     ` Linus Torvalds
  2006-09-20  8:16     ` Andi Kleen
  1 sibling, 2 replies; 39+ messages in thread
From: Jesper Juhl @ 2006-09-19 21:14 UTC (permalink / raw)
  To: Andi Kleen; +Cc: billm, billm, Linus Torvalds, linux-kernel

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

On 19 Sep 2006 10:01:55 +0200, Andi Kleen <ak@suse.de> wrote:
> "Jesper Juhl" <jesper.juhl@gmail.com> writes:
>
> > Hi,
> >
> > If I enable the math emulator in 2.6.18-rc7-git2 (only version I've
> > tried this with) and then boot the kernel with "no387" then I only get
> > as far as lilo's "...Booting the kernel." message and then the system
> > hangs.
> >
> > The kernel is a 32bit kernel build for K8 and my CPU is a Athlon64 X2 4400+
>
> Do you have a .config? I tried it and it booted until mounting root.
>

The config is attached.

I've also attached the complete dmesg output from a working boot of this kernel.

Below is the output of  scripts/ver_linux to give you an idea of the
build environment and some lspci and various other details so you can
also get a good idea about the hardware.
Hope that's enough, otherwise just ask for whatever you may need.

juhl@dragon:~/download/kernel/linux-2.6.18-rc7-git2$ scripts/ver_linux
If some fields are empty or look unusual you may have an old version.
Compare to the current minimal requirements in Documentation/Changes.

Linux dragon 2.6.18-rc7-git2 #1 SMP PREEMPT Mon Sep 18 23:58:12 CEST
2006 i686 athlon-4 i386 GNU/Linux

Gnu C                  3.4.6
Gnu make               3.81
binutils               2.15.92.0.2
util-linux             2.12r
mount                  2.12r
module-init-tools      3.2.2
e2fsprogs              1.39
reiserfsprogs          3.6.19
quota-tools            3.13.
PPP                    2.4.4b1
Linux C Library        2.3.6
Dynamic linker (ldd)   2.3.6
Linux C++ Library      6.0.3
Procps                 3.2.7
Net-tools              1.60
Kbd                    1.12
Sh-utils               5.97
udev                   097
Modules Loaded         snd_seq_oss snd_seq_midi_event snd_seq
snd_pcm_oss snd_mixer_oss agpgart snd_emu10k1 snd_rawmidi
snd_ac97_codec snd_ac97_bus snd_pcm snd_seq_device snd_timer
snd_page_alloc snd_util_mem snd_hwdep evdev snd


juhl@dragon:~/download/kernel/linux-2.6.18-rc7-git2$ uname -a
Linux dragon 2.6.18-rc7-git2 #1 SMP PREEMPT Mon Sep 18 23:58:12 CEST
2006 i686 athlon-4 i386 GNU/Linux


juhl@dragon:~/download/kernel/linux-2.6.18-rc7-git2$ cat /proc/cpuinfo
processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 15
model           : 35
model name      : AMD Athlon(tm) 64 X2 Dual Core Processor 4400+
stepping        : 2
cpu MHz         : 2200.196
cache size      : 1024 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 2
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext
fxsr_opt lm 3dnowext 3dnow pni lahf_lm cmp_legacy ts fid vid ttp
bogomips        : 4402.85

processor       : 1
vendor_id       : AuthenticAMD
cpu family      : 15
model           : 35
model name      : AMD Athlon(tm) 64 X2 Dual Core Processor 4400+
stepping        : 2
cpu MHz         : 2200.196
cache size      : 1024 KB
physical id     : 0
siblings        : 2
core id         : 1
cpu cores       : 2
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext
fxsr_opt lm 3dnowext 3dnow pni lahf_lm cmp_legacy ts fid vid ttp
bogomips        : 4399.52


root@dragon:/home/juhl/download/kernel/linux-2.6.18-rc7-git2# lspci -vvx
00:00.0 Host bridge: ALi Corporation M1695 K8 Northbridge [PCI Express
and HyperTransport]
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 0
        Capabilities: [40] HyperTransport: Slave or Primary Interface
                Command: BaseUnitID=0 UnitCnt=3 MastHost- DefDir- DUL-
                Link Control 0: CFlE- CST- CFE- <LkFail- Init+ EOC-
TXO- <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
                Link Config 0: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut-
LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
                Link Control 1: CFlE- CST- CFE- <LkFail- Init+ EOC-
TXO- <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
                Link Config 1: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut-
LWI=8bit DwFcInEn- LWO=16bit DwFcOutEn-
                Revision ID: 1.05
                Link Frequency 0: 800MHz
                Link Error 0: <Prot- <Ovfl- <EOC- CTLTm-
                Link Frequency Capability 0: 200MHz+ 300MHz- 400MHz+
500MHz- 600MHz+ 800MHz+ 1.0GHz+ 1.2GHz+ 1.4GHz- 1.6GHz- Vend-
                Feature Capability: IsocFC- LDTSTOP+ CRCTM- ECTLT- 64bA- UIDRD-
                Link Frequency 1: 800MHz
                Link Error 1: <Prot- <Ovfl- <EOC- CTLTm-
                Link Frequency Capability 1: 200MHz+ 300MHz- 400MHz+
500MHz- 600MHz+ 800MHz+ 1.0GHz+ 1.2GHz+ 1.4GHz- 1.6GHz- Vend-
                Error Handling: PFlE- OFlE- PFE- OFE- EOCFE- RFE-
CRCFE- SERRFE- CF- RE- PNFE- ONFE- EOCNFE- RNFE- CRCNFE- SERRNFE-
                Prefetchable memory behind bridge Upper: 00-00
                Bus Number: 00
        Capabilities: [5c] HyperTransport: MSI Mapping
        Capabilities: [68] HyperTransport: UnitID Clumping
        Capabilities: [74] HyperTransport: Interrupt Discovery and Configuration
        Capabilities: [7c] Message Signalled Interrupts: 64bit+
Queue=0/1 Enable-
                Address: 00000000fee00000  Data: 0000
00: b9 10 95 16 07 00 10 00 00 00 00 06 00 00 00 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 40 00 00 00 00 00 00 00 00 00 00 00

00:01.0 PCI bridge: ALi Corporation PCI Express Root Port (prog-if 00
[Normal decode])
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR+ FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 0, Cache Line Size: 64 bytes
        Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
        Memory behind bridge: ff200000-ff2fffff
        Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- <SERR- <PERR-
        BridgeCtl: Parity+ SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
        Capabilities: [40] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [48] Message Signalled Interrupts: 64bit+
Queue=0/1 Enable-
                Address: 00000000fee00000  Data: 0000
        Capabilities: [58] Express Root Port (Slot+) IRQ 0
                Device: Supported: MaxPayload 128 bytes, PhantFunc 0, ExtTag+
                Device: Latency L0s <64ns, L1 <1us
                Device: Errors: Correctable- Non-Fatal- Fatal- Unsupported-
                Device: RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
                Device: MaxPayload 128 bytes, MaxReadReq 512 bytes
                Link: Supported Speed 2.5Gb/s, Width x16, ASPM L0s L1, Port 0
                Link: Latency L0s <2us, L1 <32us
                Link: ASPM Disabled RCB 64 bytes CommClk- ExtSynch-
                Link: Speed unknown, Width x1
                Slot: AtnBtn- PwrCtrl- MRL- AtnInd- PwrInd- HotPlug- Surpise-
                Slot: Number 0, PowerLimit 0.000000
                Slot: Enabled AtnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq-
                Slot: AttnInd Off, PwrInd Off, Power-
                Root: Correctable- Non-Fatal- Fatal- PME-
        Capabilities: [7c] HyperTransport: MSI Mapping
        Capabilities: [88] HyperTransport: Revision ID: 1.05
00: b9 10 4b 52 06 01 10 00 00 00 04 06 10 00 01 00
10: 00 00 00 00 00 00 00 00 00 01 01 00 f0 00 00 00
20: 20 ff 20 ff f0 ff 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 40 00 00 00 00 00 00 00 0a 01 03 00

00:02.0 PCI bridge: ALi Corporation PCI Express Root Port (prog-if 00
[Normal decode])
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR+ FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 0, Cache Line Size: 64 bytes
        Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
        Memory behind bridge: ff300000-ff3fffff
        Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- <SERR- <PERR-
        BridgeCtl: Parity+ SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
        Capabilities: [40] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [48] Message Signalled Interrupts: 64bit+
Queue=0/1 Enable-
                Address: 00000000fee00000  Data: 0000
        Capabilities: [58] Express Root Port (Slot+) IRQ 0
                Device: Supported: MaxPayload 128 bytes, PhantFunc 0, ExtTag+
                Device: Latency L0s <64ns, L1 <1us
                Device: Errors: Correctable- Non-Fatal- Fatal- Unsupported-
                Device: RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
                Device: MaxPayload 128 bytes, MaxReadReq 512 bytes
                Link: Supported Speed 2.5Gb/s, Width x2, ASPM L0s L1, Port 0
                Link: Latency L0s <2us, L1 <32us
                Link: ASPM Disabled RCB 64 bytes CommClk- ExtSynch-
                Link: Speed unknown, Width x1
                Slot: AtnBtn- PwrCtrl- MRL- AtnInd- PwrInd- HotPlug- Surpise-
                Slot: Number 0, PowerLimit 0.000000
                Slot: Enabled AtnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq-
                Slot: AttnInd Off, PwrInd Off, Power-
                Root: Correctable- Non-Fatal- Fatal- PME-
        Capabilities: [7c] HyperTransport: MSI Mapping
        Capabilities: [88] HyperTransport: Revision ID: 1.05
00: b9 10 4c 52 06 01 10 00 00 00 04 06 10 00 01 00
10: 00 00 00 00 00 00 00 00 00 02 02 00 f0 00 00 00
20: 30 ff 30 ff f0 ff 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 40 00 00 00 00 00 00 00 0b 01 03 00

00:04.0 Host bridge: ALi Corporation M1689 K8 Northbridge [Super K8 Single Chip]
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR+ FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 0
        Region 0: Memory at dc000000 (32-bit, prefetchable) [size=64M]
        Capabilities: [40] HyperTransport: Slave or Primary Interface
                Command: BaseUnitID=4 UnitCnt=1 MastHost- DefDir- DUL-
                Link Control 0: CFlE- CST- CFE- <LkFail- Init+ EOC-
TXO- <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
                Link Config 0: MLWI=16bit DwFcIn- MLWO=8bit DwFcOut-
LWI=16bit DwFcInEn- LWO=8bit DwFcOutEn-
                Link Control 1: CFlE- CST- CFE- <LkFail+ Init- EOC+
TXO+ <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
                Link Config 1: MLWI=8bit DwFcIn- MLWO=8bit DwFcOut-
LWI=8bit DwFcInEn- LWO=8bit DwFcOutEn-
                Revision ID: 1.04
                Link Frequency 0: 800MHz
                Link Error 0: <Prot- <Ovfl- <EOC- CTLTm-
                Link Frequency Capability 0: 200MHz+ 300MHz- 400MHz+
500MHz- 600MHz+ 800MHz+ 1.0GHz- 1.2GHz- 1.4GHz- 1.6GHz- Vend-
                Feature Capability: IsocFC- LDTSTOP+ CRCTM- ECTLT- 64bA- UIDRD-
                Link Frequency 1: 200MHz
                Link Error 1: <Prot- <Ovfl- <EOC- CTLTm-
                Link Frequency Capability 1: 200MHz- 300MHz- 400MHz-
500MHz- 600MHz- 800MHz- 1.0GHz- 1.2GHz- 1.4GHz- 1.6GHz- Vend-
                Error Handling: PFlE- OFlE- PFE- OFE- EOCFE- RFE-
CRCFE- SERRFE- CF- RE- PNFE- ONFE- EOCNFE- RNFE- CRCNFE- SERRNFE-
                Prefetchable memory behind bridge Upper: 00-00
                Bus Number: 00
        Capabilities: [60] HyperTransport: Interrupt Discovery and Configuration
        Capabilities: [80] AGP version 3.0
                Status: RQ=28 Iso- ArqSz=0 Cal=0 SBA+ ITACoh- GART64-
HTrans- 64bit- FW- AGP3- Rate=x1,x2,x4
                Command: RQ=1 ArqSz=0 Cal=0 SBA- AGP- GART64- 64bit-
FW- Rate=<none>
00: b9 10 89 16 06 01 10 00 00 00 00 06 00 00 00 00
10: 08 00 00 dc 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 40 00 00 00 00 00 00 00 00 00 00 00

00:05.0 PCI bridge: ALi Corporation AGP8X Controller (prog-if 00
[Normal decode])
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR+ FastB2B-
        Status: Cap- 66MHz+ UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 0
        Bus: primary=00, secondary=03, subordinate=03, sec-latency=64
        Memory behind bridge: ff400000-ff4fffff
        Prefetchable memory behind bridge: c7f00000-d7efffff
        Secondary status: 66MHz+ FastB2B- ParErr- DEVSEL=medium
>TAbort- <TAbort- <MAbort+ <SERR- <PERR-
        BridgeCtl: Parity+ SERR+ NoISA- VGA+ MAbort- >Reset- FastB2B-
00: b9 10 46 52 07 01 20 00 00 00 04 06 00 00 01 00
10: 00 00 00 00 00 00 00 00 00 03 03 40 f0 00 20 22
20: 40 ff 40 ff f0 c7 e0 d7 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0b 00

00:06.0 PCI bridge: ALi Corporation M5249 HTT to PCI Bridge (prog-if
01 [Subtractive decode])
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR+ FastB2B-
        Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 0
        Bus: primary=00, secondary=04, subordinate=04, sec-latency=32
        I/O behind bridge: 0000d000-0000dfff
        Memory behind bridge: ff500000-ff5fffff
        Prefetchable memory behind bridge: 88000000-880fffff
        Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=medium
>TAbort- <TAbort- <MAbort+ <SERR- <PERR-
        BridgeCtl: Parity+ SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
00: b9 10 49 52 07 01 00 00 00 01 04 06 00 00 01 00
10: 00 00 00 00 00 00 00 00 00 04 04 20 d0 d0 00 22
20: 50 ff 50 ff 00 88 00 88 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00

00:07.0 ISA bridge: ALi Corporation M1563 HyperTransport South Bridge (rev 70)
        Subsystem: ASRock Incorporation Unknown device 1563
        Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
        Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium
>TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 0 (250ns min, 6000ns max)
00: b9 10 63 15 0f 00 00 02 70 00 01 06 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 49 18 63 15
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 18

00:07.1 Bridge: ALi Corporation M7101 Power Management Controller [PMU]
        Subsystem: ASRock Incorporation Unknown device 7101
        Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
        Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium
>TAbort- <TAbort- <MAbort- >SERR- <PERR-
00: b9 10 01 71 00 00 00 02 00 00 80 06 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 49 18 01 71
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00:11.0 Ethernet controller: ALi Corporation ULi 1689,1573 integrated
ethernet. (rev 40)
        Subsystem: ASRock Incorporation Unknown device 5263
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR+ FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium
>TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 32 (5000ns min, 10000ns max), Cache Line Size: 32 bytes
        Interrupt: pin A routed to IRQ 10
        Region 0: I/O ports at e800 [size=256]
        Region 1: Memory at ff6ffc00 (32-bit, non-prefetchable) [size=256]
        Capabilities: [50] Power Management version 2
                Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00: b9 10 63 52 07 01 10 02 40 00 00 02 08 20 00 00
10: 01 e8 00 00 00 fc 6f ff 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 49 18 63 52
30: 00 00 00 00 50 00 00 00 00 00 00 00 0a 01 14 28

00:12.0 IDE interface: ALi Corporation M5229 IDE (rev c7) (prog-if 8a
[Master SecP PriP])
        Subsystem: ASRock Incorporation Unknown device 5229
        Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
        Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium
>TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 32
        Interrupt: pin A routed to IRQ 0
        Region 0: I/O ports at <ignored>
        Region 1: I/O ports at <ignored>
        Region 2: I/O ports at <ignored>
        Region 3: I/O ports at <ignored>
        Region 4: I/O ports at ff00 [size=16]
00: b9 10 29 52 05 00 a0 02 c7 8a 01 01 00 20 00 00
10: f1 01 00 00 f5 03 00 00 71 01 00 00 75 03 00 00
20: 01 ff 00 00 00 00 00 00 00 00 00 00 49 18 29 52
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00

00:13.0 USB Controller: ALi Corporation USB 1.1 Controller (rev 03)
(prog-if 10 [OHCI])
        Subsystem: ASRock Incorporation Unknown device 5237
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop-
ParErr- Stepping- SERR+ FastB2B-
        Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium
>TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 32 (20000ns max), Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 11
        Region 0: Memory at ff6fe000 (32-bit, non-prefetchable) [size=4K]
00: b9 10 37 52 17 01 a8 02 03 10 03 0c 10 20 80 00
10: 00 e0 6f ff 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 49 18 37 52
30: 00 00 00 00 00 00 00 00 00 00 00 00 0b 01 00 50

00:13.1 USB Controller: ALi Corporation USB 1.1 Controller (rev 03)
(prog-if 10 [OHCI])
        Subsystem: ASRock Incorporation Unknown device 5237
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop-
ParErr- Stepping- SERR+ FastB2B-
        Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium
>TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 32 (20000ns max), Cache Line Size: 64 bytes
        Interrupt: pin B routed to IRQ 3
        Region 0: Memory at ff6fd000 (32-bit, non-prefetchable) [size=4K]
00: b9 10 37 52 17 01 a8 02 03 10 03 0c 10 20 80 00
10: 00 d0 6f ff 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 49 18 37 52
30: 00 00 00 00 00 00 00 00 00 00 00 00 03 02 00 50

00:13.2 USB Controller: ALi Corporation USB 1.1 Controller (rev 03)
(prog-if 10 [OHCI])
        Subsystem: ASRock Incorporation Unknown device 5237
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop-
ParErr- Stepping- SERR+ FastB2B-
        Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium
>TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 32 (20000ns max), Cache Line Size: 64 bytes
        Interrupt: pin C routed to IRQ 11
        Region 0: Memory at ff6fc000 (32-bit, non-prefetchable) [size=4K]
00: b9 10 37 52 17 01 a8 02 03 10 03 0c 10 20 80 00
10: 00 c0 6f ff 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 49 18 37 52
30: 00 00 00 00 00 00 00 00 00 00 00 00 0b 03 00 50

00:13.3 USB Controller: ALi Corporation USB 2.0 Controller (rev 01)
(prog-if 20 [EHCI])
        Subsystem: ASRock Incorporation Unknown device 5239
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop-
ParErr- Stepping- SERR+ FastB2B-
        Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium
>TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 32 (4000ns min, 8000ns max), Cache Line Size: 64 bytes
        Interrupt: pin D routed to IRQ 5
        Region 0: Memory at ff6ff800 (32-bit, non-prefetchable) [size=256]
        Capabilities: [50] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [58] Debug port
00: b9 10 39 52 16 01 b0 02 01 20 03 0c 10 20 80 00
10: 00 f8 6f ff 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 49 18 39 52
30: 00 00 00 00 50 00 00 00 00 00 00 00 05 04 10 20

00:18.0 Host bridge: Advanced Micro Devices [AMD] K8
[Athlon64/Opteron] HyperTransport Technology Configuration
        Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Capabilities: [80] HyperTransport: Host or Secondary Interface
                !!! Possibly incomplete decoding
                Command: WarmRst+ DblEnd-
                Link Control: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO- <CRCErr=0
                Link Config: MLWI=16bit MLWO=16bit LWI=16bit LWO=16bit
                Revision ID: 1.02
00: 22 10 00 11 00 00 10 00 00 00 00 06 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00

00:18.1 Host bridge: Advanced Micro Devices [AMD] K8
[Athlon64/Opteron] Address Map
        Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
        Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
00: 22 10 01 11 00 00 00 00 00 00 00 06 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00:18.2 Host bridge: Advanced Micro Devices [AMD] K8
[Athlon64/Opteron] DRAM Controller
        Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
        Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
00: 22 10 02 11 00 00 00 00 00 00 00 06 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00:18.3 Host bridge: Advanced Micro Devices [AMD] K8
[Athlon64/Opteron] Miscellaneous Control
        Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
        Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
00: 22 10 03 11 00 00 00 00 00 00 00 06 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

03:00.0 VGA compatible controller: Matrox Graphics, Inc. MGA Parhelia
AGP (rev 03) (prog-if 00 [VGA])
        Subsystem: Matrox Graphics, Inc. Parhelia 128Mb
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium
>TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 32 (4000ns min, 8000ns max), Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 5
        Region 0: Memory at c8000000 (32-bit, prefetchable) [size=128M]
        Region 1: Memory at ff4fe000 (32-bit, non-prefetchable) [size=8K]
        Expansion ROM at ff4c0000 [disabled] [size=128K]
        Capabilities: [dc] Power Management version 2
                Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [f0] AGP version 2.0
                Status: RQ=32 Iso- ArqSz=0 Cal=0 SBA+ ITACoh- GART64-
HTrans- 64bit- FW+ AGP3- Rate=x1,x2,x4
                Command: RQ=1 ArqSz=0 Cal=0 SBA- AGP- GART64- 64bit-
FW- Rate=<none>
00: 2b 10 27 05 07 00 b0 02 03 00 00 03 10 20 00 00
10: 08 00 00 c8 00 e0 4f ff 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 2b 10 40 08
30: 00 00 4c ff dc 00 00 00 00 00 00 00 05 01 10 20

04:05.0 Multimedia audio controller: Creative Labs SB Live! EMU10k1 (rev 0a)
        Subsystem: Creative Labs SBLive! 5.1 eMicro 28028
        Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR+ FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium
>TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 32 (500ns min, 5000ns max)
        Interrupt: pin A routed to IRQ 20
        Region 0: I/O ports at d880 [size=32]
        Capabilities: [dc] Power Management version 1
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00: 02 11 02 00 05 01 90 02 0a 00 01 04 00 20 80 00
10: 81 d8 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 02 11 67 80
30: 00 00 00 00 dc 00 00 00 00 00 00 00 0b 01 02 14

04:05.1 Input device controller: Creative Labs SB Live! Game Port (rev 0a)
        Subsystem: Creative Labs Gameport Joystick
        Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR+ FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium
>TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 32
        Region 0: I/O ports at dc00 [size=8]
        Capabilities: [dc] Power Management version 1
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00: 02 11 02 70 05 01 90 02 0a 00 80 09 00 20 80 00
10: 01 dc 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 02 11 20 00
30: 00 00 00 00 dc 00 00 00 00 00 00 00 00 00 00 00

04:06.0 SCSI storage controller: Adaptec AIC-7892A U160/m (rev 02)
        Subsystem: Adaptec 29160N Ultra160 SCSI Controller
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop-
ParErr- Stepping- SERR+ FastB2B-
        Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium
>TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 32 (10000ns min, 6250ns max), Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 19
        BIST result: 00
        Region 0: I/O ports at d400 [disabled] [size=256]
        Region 1: Memory at ff5ff000 (64-bit, non-prefetchable) [size=4K]
        Expansion ROM at 88000000 [disabled] [size=128K]
        Capabilities: [dc] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00: 05 90 80 00 16 01 b0 02 02 00 00 01 10 20 00 80
10: 01 d4 00 00 04 f0 5f ff 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 05 90 a0 62
30: 00 00 5c ff dc 00 00 00 00 00 00 00 03 01 28 19

04:07.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 42)
        Subsystem: D-Link System Inc DFE-530TX rev B
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop-
ParErr- Stepping- SERR+ FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium
>TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 32 (750ns min, 2000ns max), Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 18
        Region 0: I/O ports at d000 [size=256]
        Region 1: Memory at ff5fec00 (32-bit, non-prefetchable) [size=256]
        Expansion ROM at 88020000 [disabled] [size=64K]
        Capabilities: [40] Power Management version 2
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA
PME(D0+,D1+,D2+,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00: 06 11 65 30 17 01 10 02 42 00 00 02 10 20 00 00
10: 01 d0 00 00 00 ec 5f ff 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 11 01 14
30: 00 00 ff ff 40 00 00 00 00 00 00 00 0b 01 03 08


root@dragon:/home/juhl/download/kernel/linux-2.6.18-rc7-git2# cat /proc/modules
snd_seq_oss 34896 0 - Live 0xf8eef000
snd_seq_midi_event 7048 1 snd_seq_oss, Live 0xf8cef000
snd_seq 54456 4 snd_seq_oss,snd_seq_midi_event, Live 0xf8ce0000
snd_pcm_oss 46560 0 - Live 0xf8cd3000
snd_mixer_oss 16776 2 snd_pcm_oss, Live 0xf8cf8000
agpgart 31324 0 - Live 0xf8d01000
snd_emu10k1 120784 2 - Live 0xf8bd2000
snd_rawmidi 21632 1 snd_emu10k1, Live 0xf8b91000
snd_ac97_codec 95544 1 snd_emu10k1, Live 0xf8bb9000
snd_ac97_bus 2624 1 snd_ac97_codec, Live 0xf8b8f000
snd_pcm 80236 3 snd_pcm_oss,snd_emu10k1,snd_ac97_codec, Live 0xf8ba4000
snd_seq_device 7572 4 snd_seq_oss,snd_seq,snd_emu10k1,snd_rawmidi,
Live 0xf8b8c000
snd_timer 23132 3 snd_seq,snd_emu10k1,snd_pcm, Live 0xf8b85000
snd_page_alloc 8712 2 snd_emu10k1,snd_pcm, Live 0xf8b81000
snd_util_mem 4104 1 snd_emu10k1, Live 0xf887d000
snd_hwdep 8332 1 snd_emu10k1, Live 0xf8ba0000
evdev 8960 0 - Live 0xf8879000
snd 50980 13 snd_seq_oss,snd_seq,snd_pcm_oss,snd_mixer_oss,snd_emu10k1,snd_rawmidi,snd_ac97_codec,snd_pcm,snd_seq_device,snd_timer,snd_hwdep,
Live 0xf8c2a000


root@dragon:/home/juhl/download/kernel/linux-2.6.18-rc7-git2# cat /proc/ioports
0000-001f : dma1
0020-0021 : pic1
0040-0043 : timer0
0050-0053 : timer1
0060-006f : keyboard
0070-0077 : rtc
0080-008f : dma page reg
00a0-00a1 : pic2
00c0-00df : dma2
00f0-00ff : fpu
03c0-03df : vesafb
03f2-03f5 : floppy
03f7-03f7 : floppy DIR
03f8-03ff : serial
0800-083f : 0000:00:07.1
  0800-0803 : ACPI PM1a_EVT_BLK
  0804-0805 : ACPI PM1a_CNT_BLK
  0808-080b : ACPI PM_TMR
  0810-0815 : ACPI CPU throttle
  0818-0827 : ACPI GPE0_BLK
  0830-0830 : ACPI PM2_CNT_BLK
0cf8-0cff : PCI conf1
d000-dfff : PCI Bus #04
  d000-d0ff : 0000:04:07.0
    d000-d0ff : via-rhine
  d400-d4ff : 0000:04:06.0
  d880-d89f : 0000:04:05.0
    d880-d89f : EMU10K1
  dc00-dc07 : 0000:04:05.1
e800-e8ff : 0000:00:11.0
ff00-ff0f : 0000:00:12.0


root@dragon:/home/juhl/download/kernel/linux-2.6.18-rc7-git2# cat /proc/iomem
00000000-0009f7ff : System RAM
0009f800-0009ffff : reserved
000a0000-000bffff : Video RAM area
000c0000-000c8fff : Video ROM
000c9000-000ce3ff : Adapter ROM
000f0000-000fffff : System ROM
00100000-7ffaffff : System RAM
  00100000-0032d81c : Kernel code
  0032d81d-00413b2f : Kernel data
7ffb0000-7ffbffff : ACPI Tables
7ffc0000-7ffeffff : ACPI Non-volatile Storage
7fff0000-7fffffff : reserved
88000000-880fffff : PCI Bus #04
  88000000-8801ffff : 0000:04:06.0
  88020000-8802ffff : 0000:04:07.0
c7f00000-d7efffff : PCI Bus #03
  c8000000-cfffffff : 0000:03:00.0
    c8000000-c8ffffff : vesafb
dc000000-dfffffff : 0000:00:04.0
ff200000-ff2fffff : PCI Bus #01
ff300000-ff3fffff : PCI Bus #02
ff400000-ff4fffff : PCI Bus #03
  ff4c0000-ff4dffff : 0000:03:00.0
  ff4fe000-ff4fffff : 0000:03:00.0
ff500000-ff5fffff : PCI Bus #04
  ff5fec00-ff5fecff : 0000:04:07.0
    ff5fec00-ff5fecff : via-rhine
  ff5ff000-ff5fffff : 0000:04:06.0
    ff5ff000-ff5fffff : aic7xxx
ff6fc000-ff6fcfff : 0000:00:13.2
ff6fd000-ff6fdfff : 0000:00:13.1
ff6fe000-ff6fefff : 0000:00:13.0
ff6ff800-ff6ff8ff : 0000:00:13.3
ff6ffc00-ff6ffcff : 0000:00:11.0
ff7c0000-ffffffff : reserved


-- 
Jesper Juhl <jesper.juhl@gmail.com>
Don't top-post  http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please      http://www.expita.com/nomime.html

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

[-- Attachment #3: dmesg-2.6.18-rc7-git2 --]
[-- Type: application/octet-stream, Size: 17262 bytes --]

Linux version 2.6.18-rc7-git2 (juhl@dragon) (gcc version 3.4.6) #1 SMP PREEMPT Mon Sep 18 23:58:12 CEST 2006
BIOS-provided physical RAM map:
 BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
 BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
 BIOS-e820: 00000000000e8000 - 0000000000100000 (reserved)
 BIOS-e820: 0000000000100000 - 000000007ffb0000 (usable)
 BIOS-e820: 000000007ffb0000 - 000000007ffc0000 (ACPI data)
 BIOS-e820: 000000007ffc0000 - 000000007fff0000 (ACPI NVS)
 BIOS-e820: 000000007fff0000 - 0000000080000000 (reserved)
 BIOS-e820: 00000000ff7c0000 - 0000000100000000 (reserved)
1151MB HIGHMEM available.
896MB LOWMEM available.
found SMP MP-table at 000ff780
On node 0 totalpages: 524208
  DMA zone: 4096 pages, LIFO batch:0
  Normal zone: 225280 pages, LIFO batch:31
  HighMem zone: 294832 pages, LIFO batch:31
DMI 2.3 present.
ACPI: RSDP (v000 ACPIAM                                ) @ 0x000f9bb0
ACPI: RSDT (v001 A M I  OEMRSDT  0x12000506 MSFT 0x00000097) @ 0x7ffb0000
ACPI: FADT (v002 A M I  OEMFACP  0x12000506 MSFT 0x00000097) @ 0x7ffb0200
ACPI: MADT (v001 A M I  OEMAPIC  0x12000506 MSFT 0x00000097) @ 0x7ffb0390
ACPI: OEMB (v001 A M I  AMI_OEM  0x12000506 MSFT 0x00000097) @ 0x7ffc0040
ACPI: DSDT (v001  939M2 939M2150 0x00000150 INTL 0x02002026) @ 0x00000000
ACPI: PM-Timer IO Port: 0x808
ACPI: Local APIC address 0xfee00000
ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
Processor #0 15:3 APIC version 16
ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] enabled)
Processor #1 15:3 APIC version 16
ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
IOAPIC[0]: apic_id 2, version 17, address 0xfec00000, GSI 0-23
ACPI: IOAPIC (id[0x03] address[0xfec10000] gsi_base[24])
IOAPIC[1]: apic_id 3, version 17, address 0xfec10000, GSI 24-39
ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 low level)
ACPI: IRQ0 used by override.
ACPI: IRQ2 used by override.
ACPI: IRQ9 used by override.
Enabling APIC mode:  Flat.  Using 2 I/O APICs
Using ACPI (MADT) for SMP configuration information
Allocating PCI resources starting at 88000000 (gap: 80000000:7f7c0000)
Detected 2200.196 MHz processor.
Built 1 zonelists.  Total pages: 524208
Kernel command line: auto BOOT_IMAGE=2.6.18rc7git2 ro root=801
mapped APIC to ffffd000 (fee00000)
mapped IOAPIC to ffffc000 (fec00000)
mapped IOAPIC to ffffb000 (fec10000)
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Initializing CPU#0
CPU 0 irqstacks, hard=c04ad000 soft=c04ab000
PID hash table entries: 4096 (order: 12, 16384 bytes)
Console: colour dummy device 80x25
Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
... MAX_LOCKDEP_SUBCLASSES:    8
... MAX_LOCK_DEPTH:          30
... MAX_LOCKDEP_KEYS:        2048
... CLASSHASH_SIZE:           1024
... MAX_LOCKDEP_ENTRIES:     8192
... MAX_LOCKDEP_CHAINS:      8192
... CHAINHASH_SIZE:          4096
 memory used by lock dependency info: 696 kB
 per task-struct memory footprint: 1200 bytes
------------------------
| Locking API testsuite:
----------------------------------------------------------------------------
                                 | spin |wlock |rlock |mutex | wsem | rsem |
  --------------------------------------------------------------------------
                     A-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
                 A-B-B-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
             A-B-B-C-C-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
             A-B-C-A-B-C deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
         A-B-B-C-C-D-D-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
         A-B-C-D-B-D-D-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
         A-B-C-D-B-C-D-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
                    double unlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
                  initialize held:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
                 bad unlock order:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
  --------------------------------------------------------------------------
              recursive read-lock:             |  ok  |             |  ok  |
           recursive read-lock #2:             |  ok  |             |  ok  |
            mixed read-write-lock:             |  ok  |             |  ok  |
            mixed write-read-lock:             |  ok  |             |  ok  |
  --------------------------------------------------------------------------
     hard-irqs-on + irq-safe-A/12:  ok  |  ok  |  ok  |
     soft-irqs-on + irq-safe-A/12:  ok  |  ok  |  ok  |
     hard-irqs-on + irq-safe-A/21:  ok  |  ok  |  ok  |
     soft-irqs-on + irq-safe-A/21:  ok  |  ok  |  ok  |
       sirq-safe-A => hirqs-on/12:  ok  |  ok  |  ok  |
       sirq-safe-A => hirqs-on/21:  ok  |  ok  |  ok  |
         hard-safe-A + irqs-on/12:  ok  |  ok  |  ok  |
         soft-safe-A + irqs-on/12:  ok  |  ok  |  ok  |
         hard-safe-A + irqs-on/21:  ok  |  ok  |  ok  |
         soft-safe-A + irqs-on/21:  ok  |  ok  |  ok  |
    hard-safe-A + unsafe-B #1/123:  ok  |  ok  |  ok  |
    soft-safe-A + unsafe-B #1/123:  ok  |  ok  |  ok  |
    hard-safe-A + unsafe-B #1/132:  ok  |  ok  |  ok  |
    soft-safe-A + unsafe-B #1/132:  ok  |  ok  |  ok  |
    hard-safe-A + unsafe-B #1/213:  ok  |  ok  |  ok  |
    soft-safe-A + unsafe-B #1/213:  ok  |  ok  |  ok  |
    hard-safe-A + unsafe-B #1/231:  ok  |  ok  |  ok  |
    soft-safe-A + unsafe-B #1/231:  ok  |  ok  |  ok  |
    hard-safe-A + unsafe-B #1/312:  ok  |  ok  |  ok  |
    soft-safe-A + unsafe-B #1/312:  ok  |  ok  |  ok  |
    hard-safe-A + unsafe-B #1/321:  ok  |  ok  |  ok  |
    soft-safe-A + unsafe-B #1/321:  ok  |  ok  |  ok  |
    hard-safe-A + unsafe-B #2/123:  ok  |  ok  |  ok  |
    soft-safe-A + unsafe-B #2/123:  ok  |  ok  |  ok  |
    hard-safe-A + unsafe-B #2/132:  ok  |  ok  |  ok  |
    soft-safe-A + unsafe-B #2/132:  ok  |  ok  |  ok  |
    hard-safe-A + unsafe-B #2/213:  ok  |  ok  |  ok  |
    soft-safe-A + unsafe-B #2/213:  ok  |  ok  |  ok  |
    hard-safe-A + unsafe-B #2/231:  ok  |  ok  |  ok  |
    soft-safe-A + unsafe-B #2/231:  ok  |  ok  |  ok  |
    hard-safe-A + unsafe-B #2/312:  ok  |  ok  |  ok  |
    soft-safe-A + unsafe-B #2/312:  ok  |  ok  |  ok  |
    hard-safe-A + unsafe-B #2/321:  ok  |  ok  |  ok  |
    soft-safe-A + unsafe-B #2/321:  ok  |  ok  |  ok  |
      hard-irq lock-inversion/123:  ok  |  ok  |  ok  |
      soft-irq lock-inversion/123:  ok  |  ok  |  ok  |
      hard-irq lock-inversion/132:  ok  |  ok  |  ok  |
      soft-irq lock-inversion/132:  ok  |  ok  |  ok  |
      hard-irq lock-inversion/213:  ok  |  ok  |  ok  |
      soft-irq lock-inversion/213:  ok  |  ok  |  ok  |
      hard-irq lock-inversion/231:  ok  |  ok  |  ok  |
      soft-irq lock-inversion/231:  ok  |  ok  |  ok  |
      hard-irq lock-inversion/312:  ok  |  ok  |  ok  |
      soft-irq lock-inversion/312:  ok  |  ok  |  ok  |
      hard-irq lock-inversion/321:  ok  |  ok  |  ok  |
      soft-irq lock-inversion/321:  ok  |  ok  |  ok  |
      hard-irq read-recursion/123:  ok  |
      soft-irq read-recursion/123:  ok  |
      hard-irq read-recursion/132:  ok  |
      soft-irq read-recursion/132:  ok  |
      hard-irq read-recursion/213:  ok  |
      soft-irq read-recursion/213:  ok  |
      hard-irq read-recursion/231:  ok  |
      soft-irq read-recursion/231:  ok  |
      hard-irq read-recursion/312:  ok  |
      soft-irq read-recursion/312:  ok  |
      hard-irq read-recursion/321:  ok  |
      soft-irq read-recursion/321:  ok  |
-------------------------------------------------------
Good, all 218 testcases passed! |
---------------------------------
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 2071624k/2096832k available (2230k kernel code, 24072k reserved, 920k data, 212k init, 1179328k highmem)
Checking if this processor honours the WP bit even in supervisor mode... Ok.
Calibrating delay using timer specific routine.. 4402.85 BogoMIPS (lpj=2201425)
Mount-cache hash table entries: 512
CPU: After generic identify, caps: 178bfbff e3d3fbff 00000000 00000000 00000001 00000000 00000003
CPU: After vendor identify, caps: 178bfbff e3d3fbff 00000000 00000000 00000001 00000000 00000003
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 1024K (64 bytes/line)
CPU 0(2) -> Core 0
CPU: After all inits, caps: 178bfbff e3d3fbff 00000000 00000410 00000001 00000000 00000003
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
Checking 'hlt' instruction... OK.
Freeing SMP alternatives: 12k freed
ACPI: Core revision 20060707
CPU0: AMD Athlon(tm) 64 X2 Dual Core Processor 4400+ stepping 02
lockdep: not fixing up alternatives.
Booting processor 1/1 eip 2000
CPU 1 irqstacks, hard=c04ae000 soft=c04ac000
Initializing CPU#1
Calibrating delay using timer specific routine.. 4399.52 BogoMIPS (lpj=2199763)
CPU: After generic identify, caps: 178bfbff e3d3fbff 00000000 00000000 00000001 00000000 00000003
CPU: After vendor identify, caps: 178bfbff e3d3fbff 00000000 00000000 00000001 00000000 00000003
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 1024K (64 bytes/line)
CPU 1(2) -> Core 1
CPU: After all inits, caps: 178bfbff e3d3fbff 00000000 00000410 00000001 00000000 00000003
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#1.
CPU1: AMD Athlon(tm) 64 X2 Dual Core Processor 4400+ stepping 02
Total of 2 processors activated (8802.37 BogoMIPS).
ENABLING IO-APIC IRQs
..TIMER: vector=0x31 apic1=0 pin1=2 apic2=-1 pin2=-1
checking TSC synchronization across 2 CPUs: 
CPU#0 had -30 usecs TSC skew, fixed it up.
CPU#1 had 30 usecs TSC skew, fixed it up.
Brought up 2 CPUs
migration_cost=393
NET: Registered protocol family 16
ACPI: bus type pci registered
PCI: PCI BIOS revision 3.00 entry at 0xf0031, last bus=4
PCI: Using configuration type 1
Setting up standard PCI resources
ACPI: Interpreter enabled
ACPI: Using IOAPIC for interrupt routing
ACPI: PCI Root Bridge [PCI0] (0000:00)
PCI: Probing PCI hardware (bus 00)
PCI quirk: region 0800-083f claimed by ali7101 ACPI
Boot video device is 0000:03:00.0
PCI: Transparent bridge - 0000:00:06.0
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P4._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.HTT_._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEB1._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEB2._PRT]
ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 *5 6 7 10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 *10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 7 *10 11 12 14 15), disabled.
ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 7 *10 11 12 14 15), disabled.
ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LNKF] (IRQs *3 4 5 6 7 10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 7 10 11 12 14 15) *9
ACPI: PCI Interrupt Link [LNKP] (IRQs 3 4 *5 6 7 10 11 12 14 15)
SCSI subsystem initialized
PCI: Using ACPI for IRQ routing
PCI: If a device doesn't work, try "pci=routeirq".  If it helps, post a report
PCI: Bridge: 0000:00:01.0
  IO window: disabled.
  MEM window: ff200000-ff2fffff
  PREFETCH window: disabled.
PCI: Bridge: 0000:00:02.0
  IO window: disabled.
  MEM window: ff300000-ff3fffff
  PREFETCH window: disabled.
PCI: Bridge: 0000:00:05.0
  IO window: disabled.
  MEM window: ff400000-ff4fffff
  PREFETCH window: c7f00000-d7efffff
PCI: Bridge: 0000:00:06.0
  IO window: d000-dfff
  MEM window: ff500000-ff5fffff
  PREFETCH window: 88000000-880fffff
ACPI: PCI Interrupt 0000:00:01.0[A] -> GSI 29 (level, low) -> IRQ 16
PCI: Setting latency timer of device 0000:00:01.0 to 64
ACPI: PCI Interrupt 0000:00:02.0[A] -> GSI 34 (level, low) -> IRQ 17
PCI: Setting latency timer of device 0000:00:02.0 to 64
PCI: Setting latency timer of device 0000:00:05.0 to 64
PCI: Setting latency timer of device 0000:00:06.0 to 64
NET: Registered protocol family 2
IP route cache hash table entries: 32768 (order: 5, 131072 bytes)
TCP established hash table entries: 65536 (order: 9, 2359296 bytes)
TCP bind hash table entries: 32768 (order: 8, 1179648 bytes)
TCP: Hash tables configured (established 65536 bind 32768)
TCP reno registered
Machine check exception polling timer started.
Initializing RT-Tester: OK
highmem bounce pool size: 64 pages
io scheduler noop registered
io scheduler cfq registered (default)
vesafb: framebuffer at 0xc8000000, mapped to 0xf8880000, using 3072k, total 16384k
vesafb: mode is 1024x768x16, linelength=2048, pages=9
vesafb: protected mode interface info at c000:7880
vesafb: pmi: set display start = c00c79d3, set palette = c00c7ab3
vesafb: pmi: ports = 
vesafb: scrolling: redraw
vesafb: Truecolor: size=0:5:6:5, shift=0:11:5:0
Console: switching to colour frame buffer device 128x48
fb0: VESA VGA frame buffer device
Real Time Clock Driver v1.12ac
Serial: 8250/16550 driver $Revision: 1.90 $ 2 ports, IRQ sharing disabled
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
via-rhine.c:v1.10-LK1.4.1 July-24-2006 Written by Donald Becker
ACPI: PCI Interrupt 0000:04:07.0[A] -> GSI 22 (level, low) -> IRQ 18
eth0: VIA Rhine II at 0xff5fec00, 00:50:ba:f2:a3:1d, IRQ 18.
eth0: MII PHY found at address 8, status 0x782d advertising 01e1 Link 45e1.
ACPI: PCI Interrupt 0000:04:06.0[A] -> GSI 21 (level, low) -> IRQ 19
scsi0 : Adaptec AIC7XXX EISA/VLB/PCI SCSI HBA DRIVER, Rev 7.0
        <Adaptec 29160N Ultra160 SCSI adapter>
        aic7892: Ultra160 Wide Channel A, SCSI Id=7, 32/253 SCBs

  Vendor: PIONEER   Model: DVD-ROM DVD-305   Rev: 1.03
  Type:   CD-ROM                             ANSI SCSI revision: 02
 target0:0:4: Beginning Domain Validation
 target0:0:4: FAST-20 SCSI 20.0 MB/s ST (50 ns, offset 16)
 target0:0:4: Domain Validation skipping write tests
 target0:0:4: Ending Domain Validation
  Vendor: PLEXTOR   Model: CD-R   PX-W1210S  Rev: 1.01
  Type:   CD-ROM                             ANSI SCSI revision: 02
 target0:0:5: Beginning Domain Validation
 target0:0:5: FAST-20 SCSI 20.0 MB/s ST (50 ns, offset 16)
 target0:0:5: Domain Validation skipping write tests
 target0:0:5: Ending Domain Validation
  Vendor: IBM       Model: DDYS-T36950N      Rev: S96H
  Type:   Direct-Access                      ANSI SCSI revision: 03
scsi0:A:6:0: Tagged Queuing enabled.  Depth 200
 target0:0:6: Beginning Domain Validation
 target0:0:6: wide asynchronous
 target0:0:6: FAST-80 WIDE SCSI 160.0 MB/s DT (12.5 ns, offset 63)
 target0:0:6: Ending Domain Validation
SCSI device sda: 71687340 512-byte hdwr sectors (36704 MB)
sda: Write Protect is off
sda: Mode Sense: cb 00 00 08
SCSI device sda: drive cache: write back
SCSI device sda: 71687340 512-byte hdwr sectors (36704 MB)
sda: Write Protect is off
sda: Mode Sense: cb 00 00 08
SCSI device sda: drive cache: write back
 sda: sda1 sda2 sda3 sda4
sd 0:0:6:0: Attached scsi disk sda
sr0: scsi3-mmc drive: 16x/40x cd/rw xa/form2 cdda tray
Uniform CD-ROM driver Revision: 3.20
sr 0:0:4:0: Attached scsi CD-ROM sr0
sr1: scsi3-mmc drive: 32x/32x writer cd/rw xa/form2 cdda tray
sr 0:0:5:0: Attached scsi CD-ROM sr1
sr 0:0:4:0: Attached scsi generic sg0 type 5
sr 0:0:5:0: Attached scsi generic sg1 type 5
sd 0:0:6:0: Attached scsi generic sg2 type 0
serio: i8042 AUX port at 0x60,0x64 irq 12
serio: i8042 KBD port at 0x60,0x64 irq 1
mice: PS/2 mouse device common for all mice
EDAC MC: Ver: 2.0.1 Sep 18 2006
TCP bic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
Starting balanced_irq
Using IPI Shortcut mode
Time: acpi_pm clocksource has been installed.
input: AT Translated Set 2 keyboard as /class/input/input0
kjournald starting.  Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
VFS: Mounted root (ext3 filesystem) readonly.
Freeing unused kernel memory: 212k freed
Write protecting the kernel read-only data: 368k
input: ImExPS/2 Generic Explorer Mouse as /class/input/input1
Adding 763076k swap on /dev/sda3.  Priority:-1 extents:1 across:763076k
EXT3 FS on sda1, internal journal
ACPI: PCI Interrupt 0000:04:05.0[A] -> GSI 20 (level, low) -> IRQ 20
Linux agpgart interface v0.101 (c) Dave Jones
ReiserFS: sda2: found reiserfs format "3.6" with standard journal
ReiserFS: sda2: using ordered data mode
ReiserFS: sda2: journal params: device sda2, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
ReiserFS: sda2: checking transaction log (sda2)
ReiserFS: sda2: Using r5 hash to sort names
ReiserFS: sda4: found reiserfs format "3.6" with standard journal
ReiserFS: sda4: using ordered data mode
ReiserFS: sda4: journal params: device sda4, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
ReiserFS: sda4: checking transaction log (sda4)
ReiserFS: sda4: Using r5 hash to sort names
eth0: link up, 100Mbps, full-duplex, lpa 0x45E1

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

* Re: Math-emu kills the kernel on Athlon64 X2
  2006-09-19 21:14   ` Jesper Juhl
@ 2006-09-19 22:01     ` Linus Torvalds
  2006-09-19 22:16       ` Jesper Juhl
  2006-10-03  2:16       ` [PATCH/RFC] " Randy Dunlap
  2006-09-20  8:16     ` Andi Kleen
  1 sibling, 2 replies; 39+ messages in thread
From: Linus Torvalds @ 2006-09-19 22:01 UTC (permalink / raw)
  To: Jesper Juhl; +Cc: Andi Kleen, Linux Kernel Mailing List



On Tue, 19 Sep 2006, Jesper Juhl wrote:
> 
> The config is attached.

Can you try without SMP, and with CONFIG_X86_GENERIC (the latter to make 
sure that we don't do any static optimizations: right now you've told the 
compile system that you're compiling for an Opteron, and while I _think_ 
all the SSE optimizations are dynamic at run-time, I haven't checked 
extensively.

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

* Re: Math-emu kills the kernel on Athlon64 X2
  2006-09-19 22:01     ` Linus Torvalds
@ 2006-09-19 22:16       ` Jesper Juhl
  2006-09-19 22:44         ` Jesper Juhl
  2006-10-03  2:16       ` [PATCH/RFC] " Randy Dunlap
  1 sibling, 1 reply; 39+ messages in thread
From: Jesper Juhl @ 2006-09-19 22:16 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Andi Kleen, Linux Kernel Mailing List

On 20/09/06, Linus Torvalds <torvalds@osdl.org> wrote:
>
>
> On Tue, 19 Sep 2006, Jesper Juhl wrote:
> >
> > The config is attached.
>
> Can you try without SMP, and with CONFIG_X86_GENERIC

Done. The result is exactely the same as before. The kernel boots and
runs just fine except when I add "no387" to the boot options, then it
hangs.


-- 
Jesper Juhl <jesper.juhl@gmail.com>
Don't top-post  http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please      http://www.expita.com/nomime.html

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

* Re: Math-emu kills the kernel on Athlon64 X2
  2006-09-19 22:16       ` Jesper Juhl
@ 2006-09-19 22:44         ` Jesper Juhl
  0 siblings, 0 replies; 39+ messages in thread
From: Jesper Juhl @ 2006-09-19 22:44 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Andi Kleen, Linux Kernel Mailing List

On 20/09/06, Jesper Juhl <jesper.juhl@gmail.com> wrote:
> On 20/09/06, Linus Torvalds <torvalds@osdl.org> wrote:
> >
> >
> > On Tue, 19 Sep 2006, Jesper Juhl wrote:
> > >
> > > The config is attached.
> >
> > Can you try without SMP, and with CONFIG_X86_GENERIC
>
> Done. The result is exactely the same as before. The kernel boots and
> runs just fine except when I add "no387" to the boot options, then it
> hangs.
>
I just tried building the kernel for 486 as well - no luck with
"no387" with that one either.

-- 
Jesper Juhl <jesper.juhl@gmail.com>
Don't top-post  http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please      http://www.expita.com/nomime.html

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

* Re: Math-emu kills the kernel on Athlon64 X2
  2006-09-19 12:28   ` Krzysztof Halasa
@ 2006-09-20  0:48     ` Sergio Monteiro Basto
  2006-09-20 22:31       ` Krzysztof Halasa
  0 siblings, 1 reply; 39+ messages in thread
From: Sergio Monteiro Basto @ 2006-09-20  0:48 UTC (permalink / raw)
  To: Krzysztof Halasa; +Cc: Jesper Juhl, Linux Kernel Mailing List, billm, billm

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

On Tue, 2006-09-19 at 14:28 +0200, Krzysztof Halasa wrote:
> Sergio Monteiro Basto <sergio@sergiomb.no-ip.org> writes:
> > I think, math emulation is for 486 and older. 486 DX2 was the first one
> > who have math co processor, on earlier processor it should be disable .
> 
> Actually, 486 DX had built-in FPU as well. It was missing from 486SX
> (486SX + optional 487 FPU = 486DX).
> 
> For 386(DX|SX) there were 387(DX|SX) (386SX used 16-bit bus).
> 
> Many 32-bit motherboards had a socket for Weitek (3167 for 386DX or 4167
> for 486). I think I remember a board with 386DX and 287 socket as well.
> 
> 486DX2 meant the external clock was half the internal.

Fine :),  My (12 year old) 486DX2 already don't need Math-emu. I just
don't see how in a computer like that will be installed a kernel 2.6 .
So why code of math-emu isn't dropped ? 

Btw I try install a kernel 2.4 in my DX2 and works but very very slow .
I think in this type of computer should be install a kernel 2.2 . 

Thanks,
-- 
Sérgio M.B.

[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 2166 bytes --]

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

* Re: Math-emu kills the kernel on Athlon64 X2
  2006-09-19 21:14   ` Jesper Juhl
  2006-09-19 22:01     ` Linus Torvalds
@ 2006-09-20  8:16     ` Andi Kleen
  1 sibling, 0 replies; 39+ messages in thread
From: Andi Kleen @ 2006-09-20  8:16 UTC (permalink / raw)
  To: Jesper Juhl; +Cc: billm, billm, Linus Torvalds, linux-kernel

On Tuesday 19 September 2006 23:14, Jesper Juhl wrote:
> On 19 Sep 2006 10:01:55 +0200, Andi Kleen <ak@suse.de> wrote:
> > "Jesper Juhl" <jesper.juhl@gmail.com> writes:
> >
> > > Hi,
> > >
> > > If I enable the math emulator in 2.6.18-rc7-git2 (only version I've
> > > tried this with) and then boot the kernel with "no387" then I only get
> > > as far as lilo's "...Booting the kernel." message and then the system
> > > hangs.
> > >
> > > The kernel is a 32bit kernel build for K8 and my CPU is a Athlon64 X2 4400+
> >
> > Do you have a .config? I tried it and it booted until mounting root.
> >
> 
> The config is attached.

Still can't reproduce it unfortunately. I ran it on a fairly accurate 
Simulator and it seems to get until mounting root. It might depend 
on the compiler version though. I was using gcc 4.1.

-Andi

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

* Re: Math-emu kills the kernel on Athlon64 X2
  2006-09-20  0:48     ` Sergio Monteiro Basto
@ 2006-09-20 22:31       ` Krzysztof Halasa
  0 siblings, 0 replies; 39+ messages in thread
From: Krzysztof Halasa @ 2006-09-20 22:31 UTC (permalink / raw)
  To: sergio; +Cc: Jesper Juhl, Linux Kernel Mailing List, billm, billm

Sergio Monteiro Basto <sergio@sergiomb.no-ip.org> writes:

> Btw I try install a kernel 2.4 in my DX2 and works but very very slow .
> I think in this type of computer should be install a kernel 2.2 . 

I think it's a RAM problem. Most 386DX and early 486 boards allowed
32 MB (using 4 MB modules),  Linux 2.6 should run fine on such
a beast (386SX was limited to 16 MB address space). Later 486 boards
using DIMMs, I think, supported 64 MB (with caching).

Of course a "6 bogomips" 386 CPU isn't a speed daemon but in early
1990s it wasn't any faster and people were using them commonly (and,
I think, comfortably). IMHO for basic "SOHO Internet server" (mail
and such) it could be fast enough running Linux 2.6.
-- 
Krzysztof Halasa

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

* [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2
  2006-09-19 22:01     ` Linus Torvalds
  2006-09-19 22:16       ` Jesper Juhl
@ 2006-10-03  2:16       ` Randy Dunlap
  2006-10-03  2:34         ` Linus Torvalds
  1 sibling, 1 reply; 39+ messages in thread
From: Randy Dunlap @ 2006-10-03  2:16 UTC (permalink / raw)
  To: Linus Torvalds, akpm; +Cc: Jesper Juhl, Andi Kleen, Linux Kernel Mailing List

On Tue, 19 Sep 2006 15:01:08 -0700 (PDT) Linus Torvalds wrote:

> On Tue, 19 Sep 2006, Jesper Juhl wrote:
> > 
> > The config is attached.
> 
> Can you try without SMP, and with CONFIG_X86_GENERIC (the latter to make 
> sure that we don't do any static optimizations: right now you've told the 
> compile system that you're compiling for an Opteron, and while I _think_ 
> all the SSE optimizations are dynamic at run-time, I haven't checked 
> extensively.

I had no trouble reproducing the boot failure (on Pentium-M), then
I tried TRACE_RESUME().  Nifty, but not really needed here since
earlyprintk worked and contained the fault messages:

[   16.776035] Kernel command line: auto BOOT_IMAGE=lin2618-jj ro root=808 resume=/dev/sda6 splash=silent showopts netconsole=6665@192.168.0.104/eth0,6666@192.168.0.101/00:13:20:e3:97:02 console=ttyS0,115200n8 console=tty0 earlyprintk=serial,ttyS0,115200 initcall_debug debug no387 nofxsr
[   16.801176] netconsole: local port 6665
[   16.804916] netconsole: local IP 192.168.0.104
[   16.809321] netconsole: interface eth0
[   16.813037] netconsole: remote port 6666
[   16.816926] netconsole: remote IP 192.168.0.101
[   16.821418] netconsole: remote ethernet address 00:13:20:e3:97:02
[   16.827663] Enabling fast FPU save and restore... done.
[   16.832704] Enabling unmasked SIMD FPU exception support... done.
[   16.838753] Initializing CPU#0
[   16.841784] math_emulate: 0060:c01062dd
[   16.845579] Kernel panic - not syncing: Math emulation needed in kernel

But CONFIG_MATH_EMULATION=y, so what now?

The panic message is for this:

  else if ( FPU_CS == __KERNEL_CS )
    {
      printk("math_emulate: %04x:%08lx\n",FPU_CS,FPU_EIP);
      panic("Math emulation needed in kernel");
    }

but that doesn't look like a real problem.

Linus mentioned CPU feature bits.  The message log above didn't
make me feel good about them.  Sure enough, we are playing with
features before reading the feature bits.

So, I have a patch that now boots with "no387 nofxsr".
It mixes some sauce into the spaghetti code during init.
The system is somewhat usable.  Network device (tg3) works,
but USB complains about everything and the X driver won't load,
so I don't think that the patch is finished.  :)

and I strongly wish that bugs.h didn't contain ("hide") so
much code.

---
From: Randy Dunlap <rdunlap@xenotime.net>

Math (floating point) emulation has been broken for awhile.
The primary reason for this is that CPU feature bits have
not been read/set yet when they are tested/used, due to
ordering changes in init/main.c.

Changes here:
This is a twisted maze of dependencies.
check_bugs() in init/main.c calls identify_cpu() (the
real CPU ident workhorse) much too late.  Now call
identify_cpu(for the boot cpu) from trap_init().
Still call identify_cpu(for other cpus) from smp_store_cpu_info(),
but add a call here to (new) finish_cpu_setup(&cpu_data)
for setup code that can be done later rather than earlier.
Note:  identify_cpu() wants to know loops_per_jiffy,
so if it is 0, call calibrate_delay() to get it.

Signed-off-by: Randy Dunlap <rdunlap@xenotime.net>
---
 arch/i386/kernel/cpu/common.c |   11 +++++++++++
 arch/i386/kernel/smpboot.c    |    4 +++-
 arch/i386/kernel/traps.c      |    2 ++
 include/asm-i386/bugs.h       |    1 -
 include/linux/smp.h           |    6 ++++++
 init/main.c                   |    2 ++
 6 files changed, 24 insertions(+), 2 deletions(-)

--- linux-2618-g18.orig/arch/i386/kernel/cpu/common.c
+++ linux-2618-g18/arch/i386/kernel/cpu/common.c
@@ -355,6 +355,8 @@ void __cpuinit identify_cpu(struct cpuin
 {
 	int i;
 
+	if (!loops_per_jiffy)
+		calibrate_delay();
 	c->loops_per_jiffy = loops_per_jiffy;
 	c->x86_cache_size = -1;
 	c->x86_vendor = X86_VENDOR_UNKNOWN;
@@ -461,7 +463,11 @@ void __cpuinit identify_cpu(struct cpuin
 
 	/* Init Machine Check Exception if available. */
 	mcheck_init(c);
+}
 
+/* after kmem_cache_init => kmalloc works */
+void __cpuinit finish_cpu_setup(struct cpuinfo_x86 *c)
+{
 	if (c == &boot_cpu_data)
 		sysenter_setup();
 	enable_sep_cpu();
@@ -472,6 +478,11 @@ void __cpuinit identify_cpu(struct cpuin
 		mtrr_ap_init();
 }
 
+void __cpuinit finish_boot_cpu_setup(void)
+{
+	finish_cpu_setup(&boot_cpu_data);
+}
+
 #ifdef CONFIG_X86_HT
 void __cpuinit detect_ht(struct cpuinfo_x86 *c)
 {
--- linux-2618-g18.orig/arch/i386/kernel/traps.c
+++ linux-2618-g18/arch/i386/kernel/traps.c
@@ -1249,6 +1249,8 @@ void __init trap_init(void)
 #endif
 	set_trap_gate(19,&simd_coprocessor_error);
 
+	identify_cpu(&boot_cpu_data);
+
 	if (cpu_has_fxsr) {
 		/*
 		 * Verify that the FXSAVE/FXRSTOR data will be 16-byte aligned.
--- linux-2618-g18.orig/include/asm-i386/bugs.h
+++ linux-2618-g18/include/asm-i386/bugs.h
@@ -180,7 +180,6 @@ extern void alternative_instructions(voi
 
 static void __init check_bugs(void)
 {
-	identify_cpu(&boot_cpu_data);
 #ifndef CONFIG_SMP
 	printk("CPU: ");
 	print_cpu_info(&boot_cpu_data);
--- linux-2618-g18.orig/arch/i386/kernel/smpboot.c
+++ linux-2618-g18/arch/i386/kernel/smpboot.c
@@ -159,8 +159,10 @@ static void __devinit smp_store_cpu_info
 	struct cpuinfo_x86 *c = cpu_data + id;
 
 	*c = boot_cpu_data;
-	if (id!=0)
+	if (id != 0) {
 		identify_cpu(c);
+		finish_cpu_setup(c);
+	}
 	/*
 	 * Mask B, Pentium, but not Pentium MMX
 	 */
--- linux-2618-g18.orig/include/linux/smp.h
+++ linux-2618-g18/include/linux/smp.h
@@ -130,4 +130,10 @@ static inline void smp_send_reschedule(i
 
 void smp_setup_processor_id(void);
 
+/*
+ * finish the boot CPU setup:
+ * allows kmalloc etc., which is not possible during identify_cpu().
+ */
+void finish_boot_cpu_setup(void);
+
 #endif /* __LINUX_SMP_H */
--- linux-2618-g18.orig/init/main.c
+++ linux-2618-g18/init/main.c
@@ -49,6 +49,7 @@
 #include <linux/buffer_head.h>
 #include <linux/debug_locks.h>
 #include <linux/lockdep.h>
+#include <linux/smp.h>
 
 #include <asm/io.h>
 #include <asm/bugs.h>
@@ -570,6 +571,7 @@ asmlinkage void __init start_kernel(void
 	cpuset_init_early();
 	mem_init();
 	kmem_cache_init();
+	finish_boot_cpu_setup();
 	setup_per_cpu_pageset();
 	numa_policy_init();
 	if (late_time_init)

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

* Re: [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2
  2006-10-03  2:16       ` [PATCH/RFC] " Randy Dunlap
@ 2006-10-03  2:34         ` Linus Torvalds
  2006-10-03  3:24           ` Randy Dunlap
  2006-10-03  4:38           ` [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2 Randy Dunlap
  0 siblings, 2 replies; 39+ messages in thread
From: Linus Torvalds @ 2006-10-03  2:34 UTC (permalink / raw)
  To: Randy Dunlap; +Cc: akpm, Jesper Juhl, Andi Kleen, Linux Kernel Mailing List



On Mon, 2 Oct 2006, Randy Dunlap wrote:
> 
> I had no trouble reproducing the boot failure (on Pentium-M), then
> I tried TRACE_RESUME().  Nifty, but not really needed here since
> earlyprintk worked and contained the fault messages:
> 
> [   16.841784] math_emulate: 0060:c01062dd
> [   16.845579] Kernel panic - not syncing: Math emulation needed in kernel
> 
> But CONFIG_MATH_EMULATION=y, so what now?

The "Math emulation needed in kernel" message means that it was asked to 
emulate a kernel instruction, and it refuses to do so. The emulation is 
_not_ meant to be a real FPU, it simply looks like one to user space. A 
lot of things aren't really emulated (there's no global x87 context, for 
example: the context is all strictly per-process).

> Linus mentioned CPU feature bits.  The message log above didn't
> make me feel good about them.  Sure enough, we are playing with
> features before reading the feature bits.

Please look up address c01062dd in the system map (or just using gdb), 
that will tell you what code _tried_ to use the math coprocessor in kernel 
space.

			Linus

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

* Re: [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2
  2006-10-03  2:34         ` Linus Torvalds
@ 2006-10-03  3:24           ` Randy Dunlap
  2006-10-03 10:05             ` Andi Kleen
  2006-10-03 10:11             ` [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2 II -- it's terminally broken Andi Kleen
  2006-10-03  4:38           ` [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2 Randy Dunlap
  1 sibling, 2 replies; 39+ messages in thread
From: Randy Dunlap @ 2006-10-03  3:24 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: akpm, Jesper Juhl, Andi Kleen, Linux Kernel Mailing List

On Mon, 2 Oct 2006 19:34:27 -0700 (PDT) Linus Torvalds wrote:

> 
> 
> On Mon, 2 Oct 2006, Randy Dunlap wrote:
> > 
> > I had no trouble reproducing the boot failure (on Pentium-M), then
> > I tried TRACE_RESUME().  Nifty, but not really needed here since
> > earlyprintk worked and contained the fault messages:
> > 
> > [   16.841784] math_emulate: 0060:c01062dd
> > [   16.845579] Kernel panic - not syncing: Math emulation needed in kernel
> > 
> > But CONFIG_MATH_EMULATION=y, so what now?
> 
> The "Math emulation needed in kernel" message means that it was asked to 
> emulate a kernel instruction, and it refuses to do so. The emulation is 
> _not_ meant to be a real FPU, it simply looks like one to user space. A 
> lot of things aren't really emulated (there's no global x87 context, for 
> example: the context is all strictly per-process).
> 
> > Linus mentioned CPU feature bits.  The message log above didn't
> > make me feel good about them.  Sure enough, we are playing with
> > features before reading the feature bits.
> 
> Please look up address c01062dd in the system map (or just using gdb), 
> that will tell you what code _tried_ to use the math coprocessor in kernel 
> space.

Sure, it's in arch/i386/kernel/i387.c::mxcsr_feature_mask_init(),
on the fxsave instruction:

void mxcsr_feature_mask_init(void)
{
	unsigned long mask = 0;
	clts();
	if (cpu_has_fxsr) {
		memset(&current->thread.i387.fxsave, 0, sizeof(struct i387_fxsave_struct));
		asm volatile("fxsave %0" : : "m" (current->thread.i387.fxsave)); 
		mask = current->thread.i387.fxsave.mxcsr_mask;
		if (mask == 0) mask = 0x0000ffbf;
	}

---
~Randy

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

* Re: [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2
  2006-10-03  2:34         ` Linus Torvalds
  2006-10-03  3:24           ` Randy Dunlap
@ 2006-10-03  4:38           ` Randy Dunlap
  2006-10-03 11:30             ` Alan Cox
  2006-10-03 15:10             ` Linus Torvalds
  1 sibling, 2 replies; 39+ messages in thread
From: Randy Dunlap @ 2006-10-03  4:38 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: akpm, Jesper Juhl, Andi Kleen, Linux Kernel Mailing List


OK, how about something more direct and less obtrusive, like this?

---
From: Randy Dunlap <rdunlap@xenotime.net>

Honor "nofxsr" boot option during init.
Eliminates the math fault during boot.

Signed-off-by: Randy Dunlap <rdunlap@xenotime.net>
---
 arch/i386/kernel/cpu/common.c |    2 +-
 arch/i386/kernel/i387.c       |    2 +-
 include/asm-i386/i387.h       |    2 ++
 3 files changed, 4 insertions(+), 2 deletions(-)

--- linux-2618-g18.orig/arch/i386/kernel/cpu/common.c
+++ linux-2618-g18/arch/i386/kernel/cpu/common.c
@@ -28,7 +28,7 @@ DEFINE_PER_CPU(unsigned char, cpu_16bit_
 EXPORT_PER_CPU_SYMBOL(cpu_16bit_stack);
 
 static int cachesize_override __cpuinitdata = -1;
-static int disable_x86_fxsr __cpuinitdata;
+int disable_x86_fxsr __cpuinitdata;
 static int disable_x86_serial_nr __cpuinitdata = 1;
 static int disable_x86_sep __cpuinitdata;
 
--- linux-2618-g18.orig/arch/i386/kernel/i387.c
+++ linux-2618-g18/arch/i386/kernel/i387.c
@@ -30,7 +30,7 @@ void mxcsr_feature_mask_init(void)
 {
 	unsigned long mask = 0;
 	clts();
-	if (cpu_has_fxsr) {
+	if (cpu_has_fxsr && !disable_x86_fxsr) {
 		memset(&current->thread.i387.fxsave, 0, sizeof(struct i387_fxsave_struct));
 		asm volatile("fxsave %0" : : "m" (current->thread.i387.fxsave)); 
 		mask = current->thread.i387.fxsave.mxcsr_mask;
--- linux-2618-g18.orig/include/asm-i386/i387.h
+++ linux-2618-g18/include/asm-i386/i387.h
@@ -18,6 +18,8 @@
 #include <asm/sigcontext.h>
 #include <asm/user.h>
 
+extern int disable_x86_fxsr;
+
 extern void mxcsr_feature_mask_init(void);
 extern void init_fpu(struct task_struct *);
 

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

* Re: [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2
  2006-10-03  3:24           ` Randy Dunlap
@ 2006-10-03 10:05             ` Andi Kleen
  2006-10-03 14:54               ` Linus Torvalds
  2006-10-03 10:11             ` [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2 II -- it's terminally broken Andi Kleen
  1 sibling, 1 reply; 39+ messages in thread
From: Andi Kleen @ 2006-10-03 10:05 UTC (permalink / raw)
  To: Randy Dunlap; +Cc: Linus Torvalds, akpm, Jesper Juhl, Linux Kernel Mailing List

 
> void mxcsr_feature_mask_init(void)
> {
> 	unsigned long mask = 0;
> 	clts();
> 	if (cpu_has_fxsr) {
> 		memset(&current->thread.i387.fxsave, 0, sizeof(struct i387_fxsave_struct));
> 		asm volatile("fxsave %0" : : "m" (current->thread.i387.fxsave)); 
> 		mask = current->thread.i387.fxsave.mxcsr_mask;
> 		if (mask == 0) mask = 0x0000ffbf;
> 	}

This just needs an ifdef. I'll fix that thanks.

-Andi

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

* Re: [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2 II -- it's terminally broken
  2006-10-03  3:24           ` Randy Dunlap
  2006-10-03 10:05             ` Andi Kleen
@ 2006-10-03 10:11             ` Andi Kleen
  2006-10-03 11:53               ` Alan Cox
  2006-10-03 14:48               ` Linus Torvalds
  1 sibling, 2 replies; 39+ messages in thread
From: Andi Kleen @ 2006-10-03 10:11 UTC (permalink / raw)
  To: Randy Dunlap; +Cc: Linus Torvalds, akpm, Jesper Juhl, Linux Kernel Mailing List

On Tuesday 03 October 2006 05:24, Randy Dunlap wrote:

Actually I looked at the code more closely. It looks like kernel math
emulation is much more broken. e.g. kernel_fpu_begin() is missing
code and lots of other paths in i387 that need to check HAVE_HWFP don't.

Fixing it properly would be much more work.

Since it evidently hasn't worked for a long time I'm thinkin about
just marking it CONFIG_BROKEN and deprecating it for 2.6.20

Comments? 

-Andi


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

* Re: [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2
  2006-10-03  4:38           ` [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2 Randy Dunlap
@ 2006-10-03 11:30             ` Alan Cox
  2006-10-03 15:10             ` Linus Torvalds
  1 sibling, 0 replies; 39+ messages in thread
From: Alan Cox @ 2006-10-03 11:30 UTC (permalink / raw)
  To: Randy Dunlap
  Cc: Linus Torvalds, akpm, Jesper Juhl, Andi Kleen, Linux Kernel Mailing List

Ar Llu, 2006-10-02 am 21:38 -0700, ysgrifennodd Randy Dunlap:
> OK, how about something more direct and less obtrusive, like this?
> 
> ---
> From: Randy Dunlap <rdunlap@xenotime.net>
> 
> Honor "nofxsr" boot option during init.
> Eliminates the math fault during boot.

Why not just check the flags we set early on to indicate we have a real
FPU instead of another boot option ?


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

* Re: [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2 II -- it's terminally broken
  2006-10-03 10:11             ` [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2 II -- it's terminally broken Andi Kleen
@ 2006-10-03 11:53               ` Alan Cox
  2006-10-03 14:48               ` Linus Torvalds
  1 sibling, 0 replies; 39+ messages in thread
From: Alan Cox @ 2006-10-03 11:53 UTC (permalink / raw)
  To: Andi Kleen
  Cc: Randy Dunlap, Linus Torvalds, akpm, Jesper Juhl,
	Linux Kernel Mailing List

Ar Maw, 2006-10-03 am 12:11 +0200, ysgrifennodd Andi Kleen:
> On Tuesday 03 October 2006 05:24, Randy Dunlap wrote:
> 
> Actually I looked at the code more closely. It looks like kernel math
> emulation is much more broken. e.g. kernel_fpu_begin() is missing
> code and lots of other paths in i387 that need to check HAVE_HWFP don't.

That check would be wrong anyway. A kernel built with FPU emulation
boots, runs and uses the hardware FPU code correctly. The problem area
is the X86_FEATURE_foo stuff. I think that comes down to a single thing
- if we have FPU disabled clear X86_FEATURE_FXSR|X86_FEATURE_MMX|
X86_FEATURE_SSE* in the boot cpu features during early option
parsing/setup. Basically the emulated FPU is forgetting to tell the
truth about the fact its a very basic FPU.

Alan


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

* Re: [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2 II -- it's terminally broken
  2006-10-03 10:11             ` [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2 II -- it's terminally broken Andi Kleen
  2006-10-03 11:53               ` Alan Cox
@ 2006-10-03 14:48               ` Linus Torvalds
  1 sibling, 0 replies; 39+ messages in thread
From: Linus Torvalds @ 2006-10-03 14:48 UTC (permalink / raw)
  To: Andi Kleen; +Cc: Randy Dunlap, akpm, Jesper Juhl, Linux Kernel Mailing List



On Tue, 3 Oct 2006, Andi Kleen wrote:
> 
> Actually I looked at the code more closely. It looks like kernel math
> emulation is much more broken. e.g. kernel_fpu_begin() is missing
> code and lots of other paths in i387 that need to check HAVE_HWFP don't.

No it's not.

kernel_fpu_begin() has the _one_ test that matters:

	if (thread->status & TS_USEDFPU) {

since if software emulation is on, nobody will ever have the TS_USEDFPU 
flag set.

> Fixing it properly would be much more work.

No. It's all fixed properly already.

The bug is simply on the newer FXSR paths - marking the FPU emulation 
broken is just stupid. 

		Linus

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

* Re: [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2
  2006-10-03 10:05             ` Andi Kleen
@ 2006-10-03 14:54               ` Linus Torvalds
  0 siblings, 0 replies; 39+ messages in thread
From: Linus Torvalds @ 2006-10-03 14:54 UTC (permalink / raw)
  To: Andi Kleen; +Cc: Randy Dunlap, akpm, Jesper Juhl, Linux Kernel Mailing List



On Tue, 3 Oct 2006, Andi Kleen wrote:

>  
> > void mxcsr_feature_mask_init(void)
> > {
> > 	unsigned long mask = 0;
> > 	clts();
> > 	if (cpu_has_fxsr) {
> > 		memset(&current->thread.i387.fxsave, 0, sizeof(struct i387_fxsave_struct));
> > 		asm volatile("fxsave %0" : : "m" (current->thread.i387.fxsave)); 
> > 		mask = current->thread.i387.fxsave.mxcsr_mask;
> > 		if (mask == 0) mask = 0x0000ffbf;
> > 	}
> 
> This just needs an ifdef. I'll fix that thanks.

No, it doesn't need "an ifdef" at all.

There is no #define to even _test_. The fact that FPU math emulation is 
compiled in in _no_ way means that it should statically be used. It just 
means that if the user asks the math coprocessor to not be used, or if no 
such coprocessor exists, we shouldn't do an "fxsave".

The real fix is to clear "fxsr" when the user said "no387". If you don't 
have a math coprocessor, you sure as heck don't have fxsr either.

However, that's apparently not enough, since "nofxsr" was reported to not 
fix it entirely. However, that might well be true due to just handling 
that flag too late, or something.

And THAT is the real bug. Don't try to make it anything else. The bug is 
simply that we use the math coprocessor when we've been told it doesn't 
exist. 

			Linus

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

* Re: [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2
  2006-10-03  4:38           ` [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2 Randy Dunlap
  2006-10-03 11:30             ` Alan Cox
@ 2006-10-03 15:10             ` Linus Torvalds
  2006-10-03 16:23               ` Randy Dunlap
  1 sibling, 1 reply; 39+ messages in thread
From: Linus Torvalds @ 2006-10-03 15:10 UTC (permalink / raw)
  To: Randy Dunlap; +Cc: akpm, Jesper Juhl, Andi Kleen, Linux Kernel Mailing List



On Mon, 2 Oct 2006, Randy Dunlap wrote:
> 
> OK, how about something more direct and less obtrusive, like this?

I think this is fine, but I also think it's a bit hacky.

Wouldn't it make more sense to make the whole "nofxsr" thing just clear 
the capability, ie just a diff like the appended...

Does that work for you? If so, we should _also_ make sure that "no387" 
calls this function too, so that you don't have to do _both_ no387 and 
nofxsr, which is clearly silly. Once you do no387, the kernel should do 
the nofxsr for you, methinks..

		Linus

---
diff --git a/arch/i386/kernel/cpu/common.c b/arch/i386/kernel/cpu/common.c
index 2799baa..7ac3c9e 100644
--- a/arch/i386/kernel/cpu/common.c
+++ b/arch/i386/kernel/cpu/common.c
@@ -185,6 +185,7 @@ static void __cpuinit get_cpu_vendor(str
 static int __init x86_fxsr_setup(char * s)
 {
 	disable_x86_fxsr = 1;
+	clear_bit(X86_FEATURE_FXSR, boot_cpu_data.x86_capability);
 	return 1;
 }
 __setup("nofxsr", x86_fxsr_setup);

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

* Re: [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2
  2006-10-03 15:10             ` Linus Torvalds
@ 2006-10-03 16:23               ` Randy Dunlap
  2006-10-03 16:37                 ` Linus Torvalds
  0 siblings, 1 reply; 39+ messages in thread
From: Randy Dunlap @ 2006-10-03 16:23 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: akpm, Jesper Juhl, Andi Kleen, Linux Kernel Mailing List

On Tue, 3 Oct 2006 08:10:07 -0700 (PDT) Linus Torvalds wrote:

> 
> 
> On Mon, 2 Oct 2006, Randy Dunlap wrote:
> > 
> > OK, how about something more direct and less obtrusive, like this?
> 
> I think this is fine, but I also think it's a bit hacky.
> 
> Wouldn't it make more sense to make the whole "nofxsr" thing just clear 
> the capability, ie just a diff like the appended...
> 
> Does that work for you? If so, we should _also_ make sure that "no387" 
> calls this function too, so that you don't have to do _both_ no387 and 
> nofxsr, which is clearly silly. Once you do no387, the kernel should do 
> the nofxsr for you, methinks..

Yes, that works.

> ---
> diff --git a/arch/i386/kernel/cpu/common.c b/arch/i386/kernel/cpu/common.c
> index 2799baa..7ac3c9e 100644
> --- a/arch/i386/kernel/cpu/common.c
> +++ b/arch/i386/kernel/cpu/common.c
> @@ -185,6 +185,7 @@ static void __cpuinit get_cpu_vendor(str
>  static int __init x86_fxsr_setup(char * s)
>  {
>  	disable_x86_fxsr = 1;
> +	clear_bit(X86_FEATURE_FXSR, boot_cpu_data.x86_capability);
>  	return 1;
>  }
>  __setup("nofxsr", x86_fxsr_setup);

---
~Randy

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

* Re: [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2
  2006-10-03 16:23               ` Randy Dunlap
@ 2006-10-03 16:37                 ` Linus Torvalds
  2006-10-03 16:49                   ` Randy Dunlap
  0 siblings, 1 reply; 39+ messages in thread
From: Linus Torvalds @ 2006-10-03 16:37 UTC (permalink / raw)
  To: Randy Dunlap; +Cc: akpm, Jesper Juhl, Andi Kleen, Linux Kernel Mailing List



On Tue, 3 Oct 2006, Randy Dunlap wrote:
> 
> Yes, that works.

Ok. I'll commit that simple thing, and add a comment on why we're 
apparently doing the same thing twice (you do need _both_ of those things: 
the "disable_x86_fxsr" will make sure all other CPU's also get cleared, 
while the "clear_bit()" will clear it immediately on the boot CPU)

I'll leave the no387/nofxsr linking alone for now. The main reason to use 
no387 would seem to be just testing that emulation works at all, and I 
guess we can just tell people to use the "no387 nofxsr" combination.

So Randy, with this you can boot all the way into user space, and some FP 
apps still work too?

(Of course, user-space may be buggy and use SSE etc without testing for 
whether the CPU actually supports it - if the install process has 
installed some special SSE-version of a library depending on what the CPU 
claimed at that point, or if somebody uses "cpuid" directly rather than 
asking the kernel. So there's no way we're going to _guarantee_ that this 
works in user space, but at least a well-behaved user-space that works on 
a i486 should hopefully be ok).

			Linus

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

* Re: [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2
  2006-10-03 16:37                 ` Linus Torvalds
@ 2006-10-03 16:49                   ` Randy Dunlap
  2006-10-03 16:51                     ` Linus Torvalds
  0 siblings, 1 reply; 39+ messages in thread
From: Randy Dunlap @ 2006-10-03 16:49 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: akpm, Jesper Juhl, Andi Kleen, Linux Kernel Mailing List

On Tue, 3 Oct 2006 09:37:45 -0700 (PDT) Linus Torvalds wrote:

> 
> 
> On Tue, 3 Oct 2006, Randy Dunlap wrote:
> > 
> > Yes, that works.
> 
> Ok. I'll commit that simple thing, and add a comment on why we're 
> apparently doing the same thing twice (you do need _both_ of those things: 
> the "disable_x86_fxsr" will make sure all other CPU's also get cleared, 
> while the "clear_bit()" will clear it immediately on the boot CPU)
> 
> I'll leave the no387/nofxsr linking alone for now. The main reason to use 
> no387 would seem to be just testing that emulation works at all, and I 
> guess we can just tell people to use the "no387 nofxsr" combination.
> 
> So Randy, with this you can boot all the way into user space, and some FP 
> apps still work too?

My few trivial float and double apps work.
Is there any particular test/workload that you want me to run?

> (Of course, user-space may be buggy and use SSE etc without testing for 
> whether the CPU actually supports it - if the install process has 
> installed some special SSE-version of a library depending on what the CPU 
> claimed at that point, or if somebody uses "cpuid" directly rather than 
> asking the kernel. So there's no way we're going to _guarantee_ that this 
> works in user space, but at least a well-behaved user-space that works on 
> a i486 should hopefully be ok).


---
~Randy

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

* Re: [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2
  2006-10-03 16:49                   ` Randy Dunlap
@ 2006-10-03 16:51                     ` Linus Torvalds
  2006-10-04 19:24                       ` Jesper Juhl
  0 siblings, 1 reply; 39+ messages in thread
From: Linus Torvalds @ 2006-10-03 16:51 UTC (permalink / raw)
  To: Randy Dunlap; +Cc: akpm, Jesper Juhl, Andi Kleen, Linux Kernel Mailing List



On Tue, 3 Oct 2006, Randy Dunlap wrote:
> > 
> > So Randy, with this you can boot all the way into user space, and some FP 
> > apps still work too?
> 
> My few trivial float and double apps work.
> Is there any particular test/workload that you want me to run?

Not really, if "most things just seem to work", that's already pretty much 
all we should ask for from the math emulation.

		Linus

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

* Re: [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2
  2006-10-03 16:51                     ` Linus Torvalds
@ 2006-10-04 19:24                       ` Jesper Juhl
  2006-10-04 19:43                         ` Linus Torvalds
  0 siblings, 1 reply; 39+ messages in thread
From: Jesper Juhl @ 2006-10-04 19:24 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Randy Dunlap, akpm, Andi Kleen, Linux Kernel Mailing List

On 03/10/06, Linus Torvalds <torvalds@osdl.org> wrote:
>
>
> On Tue, 3 Oct 2006, Randy Dunlap wrote:
> > >
> > > So Randy, with this you can boot all the way into user space, and some FP
> > > apps still work too?
> >
> > My few trivial float and double apps work.
> > Is there any particular test/workload that you want me to run?
>
> Not really, if "most things just seem to work", that's already pretty much
> all we should ask for from the math emulation.
>

I just tested 2.6.18-git21 and here's a small status report :

The good news is: The kernel boots.
The bad news is: Userspace breaks left and right.

I'm booting with "no387 nofxsr"

On my first boot I just used the options above and the result was that
most of the bootup sequence looked quite normal until I got to the
point of starting sshd, then things started to go wrong. This is what
I got :

...
/etc/rc.d/rc.sshd: line 4: 1491 Illegal instruction    /usr/sbin/sshd
...
/usr/sbin/apachectl: line 81:    1588 Illegal instruction    $HTTPD
/usr/sbin/apachectl: start: httpd could not be started
Starting up X11 Session manager...
   At this point X starts and gets as far as showing me the default X
cursor on a black background very briefly, then I'm back in text mode
and the box is hung - CTRL+ALT+DEL did work, but that was about it.

Then I tried a boot to single user mode ("no387 nofxsr single").
That worked a little better, although sshd and abache were still
broken (didn't really expect otherwise). I managed to get a login
prompt, logged in and successfully switched to runlevel 3 (which on my
distro (Slackware 11) is multi-user without X). Then I tried to
"startx" by hand to see if that would get me any further details, and
it did. I got this :

...
(==) Using config file: "/etc/X11/xorg.conf"
Could not init font path element /usr/X11R6/lib/X11/fonts/CID/, removing
from list!
xset:  bad font path element (#62), possible causes are:
    Directory does not exist or has wrong permissions
    Directory missing fonts.dir
    Incorrect font server address or syntax
xset:  bad font path element (#62), possible causes are:
    Directory does not exist or has wrong permissions
    Directory missing fonts.dir
    Incorrect font server address or syntax

   *** If unresolved symbols were reported above, they might not
   *** be the reason for the server aborting.

Backtrace:
0: X(xf86SigHandler+0x8a) [0x8088b2a]
1: [0xb7fb9420]
2: /usr/X11R6/lib/modules/libfb.so(fbCopyNtoN+0x214) [0xb79658d4]
3: /usr/X11R6/lib/modules/libfb.so(fbCopyRegion+0x1df) [0xb796617f]
4: /usr/X11R6/lib/modules/libfb.so(fbDoCopy+0x46b) [0xb796660b]
5: /usr/X11R6/lib/modules/libfb.so(fbCopyArea+0x78) [0xb79666b8]
6: /usr/X11R6/lib/modules/libshadow.so [0xb7985c34]
7: X [0x8168ec1]
8: X [0x81b2260]
9: X [0x81b06cc]
10: X [0x81b12b8]
11: X(miPointerUpdate+0x126) [0x81afbc6]
12: X [0x81afc7b]
13: X [0x816e262]
14: X [0x8183a4e]
15: X [0x80c9c95]
16: X(ChangeWindowAttributes+0x9ee) [0x80dceee]
17: X(ProcChangeWindowAttributes+0x81) [0x80c0e21]
18: X(Dispatch+0x171) [0x80c7e21]
19: X(main+0x3ed) [0x80d465d]
20: /lib/tls/libc.so.6(__libc_start_main+0xd4) [0xb7e39e14]
21: X [0x806ff61]

Fatal server error:
Caught signal 4.  Server aborting


Please consult the The X.Org Foundation support
         at http://wiki.X.Org
 for help.
Please also check the log file at "/var/log/Xorg.0.log" for additional
information.

X connection to :0.0 broken (explicit kill or server shutdown).
/usr/X11R6/bin/xinit:  connection to X server lost.
root@(none):~# GOT SIGHUP
startkde: Starting up...
ksplash: cannot connect to X server :0
kdeinit: Can't connect to the X Server.
kdeinit: Might not terminate at end of session.
kded: cannot connect to X server :0
DCOP aborting call from 'anonymous-2278' to 'kded'
kded: ERROR: Communication problem with kded, it probably crashed.
kcminit_startup: cannot connect to X server :0
root@(none):~#
ksmserver: cannot connect to X server :0
startkde: Shutting down...
klauncher: Exiting on signal 1
startkde: Running shutdown scripts...
startkde: Done.
root@(none):~#

This time the system didn't hang, it was still somewhat usable (except
for random apps breaking with "Illegal instruction").


So that's great progress, but it could certainly work a lot better.


-- 
Jesper Juhl <jesper.juhl@gmail.com>
Don't top-post  http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please      http://www.expita.com/nomime.html

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

* Re: [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2
  2006-10-04 19:24                       ` Jesper Juhl
@ 2006-10-04 19:43                         ` Linus Torvalds
  2006-10-04 20:02                           ` Jesper Juhl
  0 siblings, 1 reply; 39+ messages in thread
From: Linus Torvalds @ 2006-10-04 19:43 UTC (permalink / raw)
  To: Jesper Juhl; +Cc: Randy Dunlap, akpm, Andi Kleen, Linux Kernel Mailing List



On Wed, 4 Oct 2006, Jesper Juhl wrote:
> 
> I just tested 2.6.18-git21 and here's a small status report :
> 
> The good news is: The kernel boots.
> The bad news is: Userspace breaks left and right.
> 
> I'm booting with "no387 nofxsr"
> 
> On my first boot I just used the options above and the result was that
> most of the bootup sequence looked quite normal until I got to the
> point of starting sshd, then things started to go wrong. This is what
> I got :
> 
> ...
> /etc/rc.d/rc.sshd: line 4: 1491 Illegal instruction    /usr/sbin/sshd

Ok, I bet you have your sshd compiled to use MMX instructions 
unconditionally.

> So that's great progress, but it could certainly work a lot better.

I don't think there is a whole lot we can do about it. There's really two 
choices:

 - make sure all user-space is able to function without MMX. This means, 
   for example, that you must certainly never compile with some code that 
   switches between MMX and non-MMX statically.

   The most common cases you'd expect to use MMX is for encryption, but 
   graphics and 3D certainly sounds very possible too..

   This isn't really somethign _we_ can do a lot about, although 
   distributions that care may of course try to test that their distro 
   works with "no387 nofxsr". You didn't say what distro you used, maybe 
   you can point it out to them.

 - we could try to extend the math emulator to emulate the new 
   instructions too.

   The thing is, it's probably not worth it. The only actual real usage 
   would be if somebody wants to take a disk image and switch to a really 
   old machine that lacked the MMX instruction, or for this particular 
   test-case.

so I suspect that in practice, the answer is "if the distro isn't compiled 
for a generic x86 target, screw it".

			Linus

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

* Re: [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2
  2006-10-04 19:43                         ` Linus Torvalds
@ 2006-10-04 20:02                           ` Jesper Juhl
  2006-10-04 22:00                             ` Alan Cox
  0 siblings, 1 reply; 39+ messages in thread
From: Jesper Juhl @ 2006-10-04 20:02 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Randy Dunlap, akpm, Andi Kleen, Linux Kernel Mailing List

On 04/10/06, Linus Torvalds <torvalds@osdl.org> wrote:
>
> On Wed, 4 Oct 2006, Jesper Juhl wrote:
> >
> > I just tested 2.6.18-git21 and here's a small status report :
> >
> > The good news is: The kernel boots.
> > The bad news is: Userspace breaks left and right.
> >
> > I'm booting with "no387 nofxsr"
> >
> > On my first boot I just used the options above and the result was that
> > most of the bootup sequence looked quite normal until I got to the
> > point of starting sshd, then things started to go wrong. This is what
> > I got :
> >
> > ...
> > /etc/rc.d/rc.sshd: line 4: 1491 Illegal instruction    /usr/sbin/sshd
>
> Ok, I bet you have your sshd compiled to use MMX instructions
> unconditionally.
>

Probably, I haven't checked.


> > So that's great progress, but it could certainly work a lot better.
>
> I don't think there is a whole lot we can do about it. There's really two
> choices:
>
>  - make sure all user-space is able to function without MMX. This means,
>    for example, that you must certainly never compile with some code that
>    switches between MMX and non-MMX statically.
>
If the emulator can't handle it (which it cannot), that makes perfect sense :)

>    The most common cases you'd expect to use MMX is for encryption, but
>    graphics and 3D certainly sounds very possible too..
>
>    This isn't really somethign _we_ can do a lot about, although
>    distributions that care may of course try to test that their distro
>    works with "no387 nofxsr". You didn't say what distro you used, maybe
>    you can point it out to them.
>

Actually, I did (Slackware 11) :

   > broken (didn't really expect otherwise). I managed to get a login
   > prompt, logged in and successfully switched to runlevel 3 (which on my
   > distro (Slackware 11) is multi-user without X). Then I tried to


>  - we could try to extend the math emulator to emulate the new
>    instructions too.
>
That would, in my oppinion, be the right way forward.

I fondly remember the days of old when I had an old 386 with no 387
and I was able to move my kernel between my machine and my friends
486SX/DX & Pentium boxes and with the math emulator in place
*everything* just worked perfectly - it may have been a little slow
with the emulator, but it always worked correctly, even though the
disk I moved around was setup to always use the emulator... I would
love to get that back.


>    The thing is, it's probably not worth it. The only actual real usage
>    would be if somebody wants to take a disk image and switch to a really
>    old machine that lacked the MMX instruction, or for this particular
>    test-case.
>
I think I can think of a few more.

One is obviously, as you say, move a disk image (or live CD) to a
really old machine.
Another is just to test the math emulator (this test case).
Another is platforms that don't have a math co-processor or
MMX/SSE/3DNow etc at all, their life would be simplified if the
emulator "just worked".
Another example (a bit far fetched, I admit) would be a damaged CPU
where the FPU doesn't work.
Yet another case would be where someone wanted to use the emulator for
better precision than the hardware gives and the slowdown is
acceptable - I may be imagining this, but I seem to have this memory
telling me that for some things back in the days the emulator was
actually more precise than the hardware.


> so I suspect that in practice, the answer is "if the distro isn't compiled
> for a generic x86 target, screw it".
>
I guess I'll have to accept that or start hacking on the emulator
myself :)   Let's see...


There is one thing we can easily do though, to improve things.
I noticed when booting my Athlon 64 X2 4400+ with "no387 nofxsr" that
the "flags" line in /proc/cpuinfo still report stuff that's not
supported by the emulator :

...
flags           : fpu vme de tsc msr pae mce cx8 apic sep mtrr pge mca
cmov pat pse36 clflush mmx sse2 ht syscall nx mmxext fxsr_opt lm
3dnowext 3dnow pni lahf_lm cmp_legacy ts fid vid ttp
...

When the emulator is in effect, shouldn't we remove things like "mmx,
sse2, mmxext, fxsr_opt, 3dnowext, 3dnow, pni" from the /proc/cpuinfo
output?
That would prevent silly apps that check the flags line from
/proc/cpuinfo for CPU capabilities from detecting a capability that we
are not able to support.    Yes, I know that an app that relies on
/proc/cpuinfo for detection of this is silly/stupid, but the last
stupid programmer has not been born yet, and such apps may very well
exist in the wild. Not printing stuff we can't emulate will probably
make a few apps out there behave correctly with math-emu in effect,
and I don't see any downside...   I can try to prepare a patch if you
like...?


-- 
Jesper Juhl <jesper.juhl@gmail.com>
Don't top-post  http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please      http://www.expita.com/nomime.html

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

* Re: [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2
  2006-10-04 22:00                             ` Alan Cox
@ 2006-10-04 21:44                               ` Andi Kleen
  0 siblings, 0 replies; 39+ messages in thread
From: Andi Kleen @ 2006-10-04 21:44 UTC (permalink / raw)
  To: Alan Cox
  Cc: Jesper Juhl, Linus Torvalds, Randy Dunlap, akpm,
	Linux Kernel Mailing List

On Thursday 05 October 2006 00:00, Alan Cox wrote:
> Ar Mer, 2006-10-04 am 22:02 +0200, ysgrifennodd Jesper Juhl:
> > > > /etc/rc.d/rc.sshd: line 4: 1491 Illegal instruction    /usr/sbin/sshd
> > >
> > > Ok, I bet you have your sshd compiled to use MMX instructions
> > > unconditionally.
> > >
> > Probably, I haven't checked.
> 
> Or we aren't correctly masking all the other cpuid bits we should in
> this case..

It might be using CPUID directly which can't be masked

-Andi


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

* Re: [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2
  2006-10-04 20:02                           ` Jesper Juhl
@ 2006-10-04 22:00                             ` Alan Cox
  2006-10-04 21:44                               ` Andi Kleen
  0 siblings, 1 reply; 39+ messages in thread
From: Alan Cox @ 2006-10-04 22:00 UTC (permalink / raw)
  To: Jesper Juhl
  Cc: Linus Torvalds, Randy Dunlap, akpm, Andi Kleen,
	Linux Kernel Mailing List

Ar Mer, 2006-10-04 am 22:02 +0200, ysgrifennodd Jesper Juhl:
> > > /etc/rc.d/rc.sshd: line 4: 1491 Illegal instruction    /usr/sbin/sshd
> >
> > Ok, I bet you have your sshd compiled to use MMX instructions
> > unconditionally.
> >
> Probably, I haven't checked.

Or we aren't correctly masking all the other cpuid bits we should in
this case..


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

* Re: Math-emu kills the kernel on Athlon64 X2
@ 2006-09-20  8:15 linux
  0 siblings, 0 replies; 39+ messages in thread
From: linux @ 2006-09-20  8:15 UTC (permalink / raw)
  To: sergio; +Cc: linux, linux-kernel

> Fine :),  My (12 year old) 486DX2 already don't need Math-emu. I just
> don't see how in a computer like that will be installed a kernel 2.6 .
> So why code of math-emu isn't dropped ? 

Google for "386EX".  There are any number of embedded boards
based on an this FPU-less 386 which people like to run Linux on.

There's more to the world than personal computers; the fact that the
Linux kernel runs almost unmodified on most of the largest computers in
the world (http://www.top500.org/stats/27/os/) and some of the dinkiest
(http://www.research.ibm.com/WearableComputing/linuxwatch/linuxwatch.html)
is a source of considerable pride.

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

end of thread, other threads:[~2006-10-04 21:45 UTC | newest]

Thread overview: 39+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-09-18 22:18 Math-emu kills the kernel on Athlon64 X2 Jesper Juhl
2006-09-18 22:52 ` Linus Torvalds
2006-09-18 23:14   ` Jesper Juhl
2006-09-18 23:49     ` Linus Torvalds
2006-09-19  0:47       ` Jesper Juhl
2006-09-19  2:18         ` Linus Torvalds
2006-09-18 23:49 ` Sergio Monteiro Basto
2006-09-19  0:02   ` Jesper Juhl
2006-09-19 12:28   ` Krzysztof Halasa
2006-09-20  0:48     ` Sergio Monteiro Basto
2006-09-20 22:31       ` Krzysztof Halasa
2006-09-19  8:01 ` Andi Kleen
2006-09-19  8:31   ` Jesper Juhl
2006-09-19 21:14   ` Jesper Juhl
2006-09-19 22:01     ` Linus Torvalds
2006-09-19 22:16       ` Jesper Juhl
2006-09-19 22:44         ` Jesper Juhl
2006-10-03  2:16       ` [PATCH/RFC] " Randy Dunlap
2006-10-03  2:34         ` Linus Torvalds
2006-10-03  3:24           ` Randy Dunlap
2006-10-03 10:05             ` Andi Kleen
2006-10-03 14:54               ` Linus Torvalds
2006-10-03 10:11             ` [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2 II -- it's terminally broken Andi Kleen
2006-10-03 11:53               ` Alan Cox
2006-10-03 14:48               ` Linus Torvalds
2006-10-03  4:38           ` [PATCH/RFC] Math-emu kills the kernel on Athlon64 X2 Randy Dunlap
2006-10-03 11:30             ` Alan Cox
2006-10-03 15:10             ` Linus Torvalds
2006-10-03 16:23               ` Randy Dunlap
2006-10-03 16:37                 ` Linus Torvalds
2006-10-03 16:49                   ` Randy Dunlap
2006-10-03 16:51                     ` Linus Torvalds
2006-10-04 19:24                       ` Jesper Juhl
2006-10-04 19:43                         ` Linus Torvalds
2006-10-04 20:02                           ` Jesper Juhl
2006-10-04 22:00                             ` Alan Cox
2006-10-04 21:44                               ` Andi Kleen
2006-09-20  8:16     ` Andi Kleen
2006-09-20  8:15 linux

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