[LinuxBIOS] [PATCH] Initial support for the ASI/BCom MB-5BLMP / IGEL Winnet III

Juergen Beisert juergen127 at kreuzholzen.de
Sat May 12 17:23:05 CEST 2007


Hi Uwe,

On Saturday 12 May 2007 13:34, Uwe Hermann wrote:
> On Wed, May 09, 2007 at 08:39:26PM +0200, Juergen Beisert wrote:
> > On Wednesday 09 May 2007 01:54, Uwe Hermann wrote:
> > > Here's a first patch for the IGEL Winnet III thin client. It allows me
> > > to boot a Linux kernel half-way to the login prompt; at some point it
> > > hangs, though, so more work is needed.
> >
> > Did you check the SDRAM timing? In my IGEL 316 terminals (also Geode GX1)
> > this it the most fragile part.
> >
> > > This is a 233 MHz Geode GX1 based thin client with Ethernet, USB, VGA,
> > > a Disk-on-Chip, socketed DIP BIOS chip, a laptop-size RAM slot, a
> > > normal-size (PC) RAM slot (don't remember the correct name right now),
> > > and IDE connector, keyboard, mouse, sound, 2x serial port, parallel
> > > port, 1x ISA slot, 1x PCI slot. Fanless, extremely silent.
> >
> > Maybe it can help me with my terminals. Could you please apply the
> > attached patch series to a 2.6.21 kernel, build it with the attached
> > kernel config and run it on your new shiny terminal? And later send me
> > the kernel startup messages?
>
> The bootlog is attached, gathered on LinuxBIOS (current ASI MB-5BLMP
> code) + Linux 2.6.21.1 + your patches + your config file.
>
> I removed the NFS boot and enabled IDE support in the kernel (.config
> attached) as I have my test system on an IDE disk.

Here are some comments about the log:

> Working around Cyrix MediaGX virtual DMA bugs.

We should remove this. Without SMM it is useless.

> Enable Memory-Write-back mode on Cyrix/NSC processor.
> Enable Memory access reorder on Cyrix/NSC processor.
> Enable Incrementor on Cyrix/NSC processor.

We should find a way to setup the "Incrementor" in a correct way, as it needs 
a setting of 10b for 233...266MHz CPUs and 11b for 300...330MHz CPUs.
My patch forces it to 11b because I'm running 300MHz machines only.

The following is the output of my memory driver:

> Geode GX1: Internal IOBASE at 0x40000000

ok.

> Geode GX1: SMM is disabled

Sure! ;-)

> Geode GX1: Suspend on HLT feature enabled

BTW: This makes the TSC on this CPU useless! Use "clocksource=pit" as a kernel 
command line.

> Geode GX1: Write through between 640kiB/1MiB is enabled

Did you connect some devices in this area? If not you could use it as 
additional RAM.

> Geode GX1: Reordering between 0x00000000/0x3fffffff is disabled
> Geode GX1: Reordering between 0x40000000/0x7fffffff is disabled
> Geode GX1: Reordering between 0x80000000/0xbfffffff is enabled
> Geode GX1: Reordering between 0xc0000000/0xffffffff is enabled

Ups, the is an error in my patch. It should be the other way round.

> Geode GX1: FPU fast mode enabled
> Geode GX1: DTE cache enabled
> Geode GX1: Memory Read Bypass enabled

Ok.

> Geode GX1: IO Recovery Time is 6 clocks

Can anyone interpret this value? Does it mean "Recovery on PCI bus" side? The 
GX1 processor only has a PCI bus, nothing else.

> Geode GX1: MMX instructions are enabled
> Geode GX1 Chipset Support (c) Juergen Beisert 2007 juergen at kreuzholzen.de
> Geode GX1: Forcing round robin policy due to active video

Tweak of my driver. When running higher video resolutions, the CPU should not 
have the highest priortiy on the memory bus.

> Geode GX1: 0x13101530, 0x92162008, 0x00000018, 0x3A733225
> Geode GX1: Memory base clock is one fourth the CPU clock

You are running a 233MHz CPU. Your memory will run at 58.25 MHz. Veeeery slow!

> Geode GX1: Memory refresh rate is 2048 cpu clocks

Most memories need a refresh every 15us. This setting will refresh every ~9us.

> [...]
> Geode GX1: CAS latency: 3 clocks
> Geode GX1: RFSH to RFSH/ACT Period: 11 clocks
> Geode GX1: ACT to PRE Period: 8 clocks
> Geode GX1: PRE to ACT Period: 3 clocks
> Geode GX1: ACT to Read/Write Delay: 3 clocks
> Geode GX1: ACT(0) to ACT(1) Period: 2 clocks
> Geode GX1: Data-in to PRE Period: 2 clocks

Ok, this is the slowest possible memory timing...

> Geode GX1: XBUS round robin: active
> Geode GX1: Scratch Pad Ram and Video Instructions disabled

Ok.

> [...]
> Geode GX1 Framebuffer 0000:00:12.4: Mode 640x400 at 16 possible
> Geode GX1 Framebuffer 0000:00:12.4: Mode 640x480 at 16 possible
> Geode GX1 Framebuffer 0000:00:12.4: Mode 800x600 at 16 possible
> [...]
> Geode GX1 Framebuffer 0000:00:12.4: X or Y resolution to big (1366, 768)
> Geode GX1 Framebuffer 0000:00:12.4: Mode 640x400 at 16 possible

Try to run it with this kernel command line:
  video=gx1fb:monitor:640x480 at 60,crt:1
(or anything other monitor resolution you like)

BTW: Did you get any monitor output?

> 8139too Fast Ethernet driver 0.9.28
> PCI: Assigned IRQ 9 for device 0000:00:0f.0
> eth0: RealTek RTL8139 at 0xca810000, 00:e0:c5:c9:07:7b, IRQ 9

Does your interrupt routing work?

You wrote:
> The machine seems to hang after/while IDE init, but that was happening
> before, too... I assume the LinuxBIOS code still needs some fixing.

Hmmm:

> EXT3-fs: INFO: recovery required on readonly filesystem.
> EXT3-fs: write access will be enabled during recovery.
> kjournald starting.  Commit interval 5 seconds
> EXT3-fs: recovery complete.
> EXT3-fs: mounted filesystem with ordered data mode.
> VFS: Mounted root (ext3 filesystem) readonly.
> Freeing unused kernel memory: 136k freed
> EXT3 FS on hda1, internal journal

But it seems to work???

Juergen




More information about the coreboot mailing list