Re: [coreboot] H8DME-2 woes, hints?

2010-05-07 Thread Arne Georg Gleditsch
Joe Korty joe.ko...@ccur.com writes:
 As a first time coreboot user, I thought that I should first try it out
 on a supported board.  That way I would learn the ropes a bit before even
 thinking about doing something more challenging.

 Naturally I am having troubles.  I suspect that as a newbie I am probably
 doing something stupid.  But then I've heard that mb manufacturers like
 to change things around without notice, so maybe I'm doing things right
 and what was once a supported mb, no longer is.

 The hardware:
SuperMicro H8DME-2.
Four 1Gbyte DDR2-667/533/400 Registered ECC SDRAM sticks from Crucial.
Two Quad-Core AMD 2378 2.4 GHz Processors.
Onboard video.
One SATA disk.
One PATA DVD-ROM reader.
NULL modem serial cable from COM1 to COM1 on another PC.

 The details:
When booting coreboot, nothing happens for about 45 seconds.
Then the fans speed up to high and some messages start appearing
on the serial line.  These messages print rather slowly (maybe
1 second/message).  They are:

 coreboot-4.0-r5521M Wed May  5 10:53:42 EDT 2010 starting...
 *sysinfo range: [000cf000,000cf730]
 bsp_apicid=00
 Enabling routing table for node 00 done.
 Enabling SMP settings
 (0,1) link=00

This looks like the bootup code for gen f Opterons.  It doesn't look
like the h8dme has a fam10 variant yet, which is what you need for the
2378 CPUs.

-- 
Arne.

-- 
coreboot mailing list: coreboot@coreboot.org
http://www.coreboot.org/mailman/listinfo/coreboot


Re: [coreboot] H8DME-2 woes, hints?

2010-05-07 Thread Joe Korty
On Fri, May 07, 2010 at 05:57:35AM -0400, Arne Georg Gleditsch wrote:
 Joe Korty joe.ko...@ccur.com writes:
  As a first time coreboot user, I thought that I should first try it out
  on a supported board.  That way I would learn the ropes a bit before even
  thinking about doing something more challenging.
 
  Naturally I am having troubles.  I suspect that as a newbie I am probably
  doing something stupid.  But then I've heard that mb manufacturers like
  to change things around without notice, so maybe I'm doing things right
  and what was once a supported mb, no longer is.
 
  The hardware:
 SuperMicro H8DME-2.
 Four 1Gbyte DDR2-667/533/400 Registered ECC SDRAM sticks from Crucial.
 Two Quad-Core AMD 2378 2.4 GHz Processors.
 Onboard video.
 One SATA disk.
 One PATA DVD-ROM reader.
 NULL modem serial cable from COM1 to COM1 on another PC.
 
  The details:
 When booting coreboot, nothing happens for about 45 seconds.
 Then the fans speed up to high and some messages start appearing
 on the serial line.  These messages print rather slowly (maybe
 1 second/message).  They are:
 
  coreboot-4.0-r5521M Wed May  5 10:53:42 EDT 2010 starting...
  *sysinfo range: [000cf000,000cf730]
  bsp_apicid=00
  Enabling routing table for node 00 done.
  Enabling SMP settings
  (0,1) link=00
 
 This looks like the bootup code for gen f Opterons.  It doesn't look
 like the h8dme has a fam10 variant yet, which is what you need for the
 2378 CPUs.

Thanks Arne!
I'll have to figure out how to proceed from here.

On a side note, it _looks_ like the slowdown might be due to the udelay
unification.  Still bisecting.

Joe

-- 
coreboot mailing list: coreboot@coreboot.org
http://www.coreboot.org/mailman/listinfo/coreboot


Re: [coreboot] H8DME-2 woes, hints?

2010-05-07 Thread Myles Watson
   The hardware:
  SuperMicro H8DME-2.
  Four 1Gbyte DDR2-667/533/400 Registered ECC SDRAM sticks from
 Crucial.
  Two Quad-Core AMD 2378 2.4 GHz Processors.
  Onboard video.
  One SATA disk.
  One PATA DVD-ROM reader.
  NULL modem serial cable from COM1 to COM1 on another PC.
  
   The details:
  When booting coreboot, nothing happens for about 45 seconds.
  Then the fans speed up to high and some messages start appearing
  on the serial line.  These messages print rather slowly (maybe
  1 second/message).  They are:
  
   coreboot-4.0-r5521M Wed May  5 10:53:42 EDT 2010 starting...
   *sysinfo range: [000cf000,000cf730]
   bsp_apicid=00
   Enabling routing table for node 00 done.
   Enabling SMP settings
   (0,1) link=00
 
  This looks like the bootup code for gen f Opterons.  It doesn't look
  like the h8dme has a fam10 variant yet, which is what you need for the
  2378 CPUs.
 
 Thanks Arne!
 I'll have to figure out how to proceed from here.
 
 On a side note, it _looks_ like the slowdown might be due to the udelay
 unification.  Still bisecting.

I'm surprised you found a revision that works, since it has never supported
fam10.  I think it would be more fruitful for you to look at one of the
boards that has both fam10 and k8 support, and try to put together an
h8dme_fam10 port.

Thanks,
Myles


-- 
coreboot mailing list: coreboot@coreboot.org
http://www.coreboot.org/mailman/listinfo/coreboot


Re: [coreboot] H8DME-2 woes, hints?

2010-05-07 Thread Ward Vandewege
On Fri, May 07, 2010 at 07:30:08AM -0600, Myles Watson wrote:
   This looks like the bootup code for gen f Opterons.  It doesn't look
   like the h8dme has a fam10 variant yet, which is what you need for the
   2378 CPUs.
  
  Thanks Arne!
  I'll have to figure out how to proceed from here.
  
  On a side note, it _looks_ like the slowdown might be due to the udelay
  unification.  Still bisecting.
 
 I'm surprised you found a revision that works, since it has never supported
 fam10.  I think it would be more fruitful for you to look at one of the
 boards that has both fam10 and k8 support, and try to put together an
 h8dme_fam10 port.

For the record, I've been trying to get that going for a while, but have not
had much success - very early hangs in the fam10 code on this board. Cf. the
problems Knut is having, I think...

Thanks,
Ward.

-- 
Ward Vandewege w...@fsf.org
Free Software Foundation - Senior Systems Administrator

-- 
coreboot mailing list: coreboot@coreboot.org
http://www.coreboot.org/mailman/listinfo/coreboot


Re: [coreboot] PATCH: model_6bx CPUs can go in a lot of places

2010-05-07 Thread Joseph Smith



On Thu, 6 May 2010 23:31:49 -0400, Keith Hui buu...@gmail.com wrote:
 Hi all,
 
 Intel model 6bx CPUs (specifically 6B1 and 6B4) can end up in a lot of
 places, specifically Slot 1 and Socket 370. Ever since references to
 them were removed from cpu/intel/model_6xx my coreboot would die when
 initializing CPU with a Unknown cpu error. This patch fixes it by
 adding references to model_6bx to cpu/intel/slot_1 and
 cpu/intel/socket_PGA370. Also included are before and after boot logs
 with relevant sections highlighted.
 
 Before boot log: http://coreboot.pastebin.com/CGWgihaG
 After boot log: http://coreboot.pastebin.com/GLgnpZT6
 
 Signed-off-by: Keith Hui buu...@gmail.com
 
 - Begin patch -
 Index: src/cpu/intel/slot_1/Makefile.inc
 ===
 --- src/cpu/intel/slot_1/Makefile.inc (revision 5527)
 +++ src/cpu/intel/slot_1/Makefile.inc (working copy)
 @@ -20,6 +20,7 @@
 
  obj-y += slot_1.o
  subdirs-y += ../model_6xx
 +subdirs-y += ../model_6bx
  subdirs-y += ../../x86/tsc
  subdirs-y += ../../x86/mtrr
  subdirs-y += ../../x86/lapic
 Index: src/cpu/intel/socket_PGA370/Makefile.inc
 ===
 --- src/cpu/intel/socket_PGA370/Makefile.inc  (revision 5527)
 +++ src/cpu/intel/socket_PGA370/Makefile.inc  (working copy)
 @@ -20,6 +20,7 @@
 
  obj-y += socket_PGA370.o
  subdirs-y += ../model_6xx
 +subdirs-y += ../model_6bx
  subdirs-y += ../../x86/tsc
  subdirs-y += ../../x86/mtrr
  subdirs-y += ../../x86/lapic
 
 - End patch -
 
Hello Keith,
I kind of saw this coming. That is why I left the 6bx's in model_6xx. The
new model_6bx is intended for CAR, so I don't know how well it will work
with romcc. My advice is to either get CAR running on your board, or we put
back the 6bx's in model_6xx for the interim.

-- 
Thanks,
Joseph Smith
Set-Top-Linux
www.settoplinux.org


-- 
coreboot mailing list: coreboot@coreboot.org
http://www.coreboot.org/mailman/listinfo/coreboot


[coreboot] [PATCH]Support tinybootblock on broadcom/bcm5785

2010-05-07 Thread Patrick Georgi
Hi,

attached patch adds the rom-enable function on bcm5785 to a
tinybootblock build, allowing for 4MB ROMs (instead of the default
configuration which seems to be 1MB).

Signed-off-by: Patrick Georgi patrick.geo...@coresystems.de
Index: src/southbridge/broadcom/bcm5785/Kconfig
===
--- src/southbridge/broadcom/bcm5785/Kconfig(Revision 5526)
+++ src/southbridge/broadcom/bcm5785/Kconfig(Arbeitskopie)
@@ -1,2 +1,8 @@
 config SOUTHBRIDGE_BROADCOM_BCM5785
bool
+   select HAVE_HARD_RESET
+
+config BOOTBLOCK_SOUTHBRIDGE_INIT
+   string
+   default southbridge/broadcom/bcm5785/bootblock.c
+   depends on SOUTHBRIDGE_BROADCOM_BCM5785
Index: src/southbridge/broadcom/bcm5785/bcm5785_early_setup.c
===
--- src/southbridge/broadcom/bcm5785/bcm5785_early_setup.c  (Revision 5526)
+++ src/southbridge/broadcom/bcm5785/bcm5785_early_setup.c  (Arbeitskopie)
@@ -4,21 +4,8 @@
  */
 
 #include reset.h
-static void bcm5785_enable_rom(void)
-{
-unsigned char byte;
-device_t addr;
+#include bcm5785_enable_rom.c
 
-/* Enable 4MB rom access at 0xFFC0 - 0x */
-/* Locate the BCM 5785 SB PCI Main */
-addr = pci_locate_device(PCI_ID(0x1166, 0x0205), 0); // 0x0201?
-
-/* Set the 4MB enable bit bit */
-byte = pci_read_config8(addr, 0x41);
-byte |= 0x0e;
-pci_write_config8(addr, 0x41, byte);
-}
-
 static void bcm5785_enable_lpc(void)
 {
 
Index: src/southbridge/broadcom/bcm5785/bcm5785_enable_rom.c
===
--- src/southbridge/broadcom/bcm5785/bcm5785_enable_rom.c   (Revision 0)
+++ src/southbridge/broadcom/bcm5785/bcm5785_enable_rom.c   (Revision 0)
@@ -0,0 +1,14 @@
+static void bcm5785_enable_rom(void)
+{
+   unsigned char byte;
+   device_t addr;
+
+   /* Enable 4MB rom access at 0xFFC0 - 0x */
+   /* Locate the BCM 5785 SB PCI Main */
+   addr = pci_locate_device(PCI_ID(0x1166, 0x0205), 0); // 0x0201?
+
+   /* Set the 4MB enable bit bit */
+   byte = pci_read_config8(addr, 0x41);
+   byte |= 0x0e;
+   pci_write_config8(addr, 0x41, byte);
+}
Index: src/southbridge/broadcom/bcm5785/bootblock.c
===
--- src/southbridge/broadcom/bcm5785/bootblock.c(Revision 0)
+++ src/southbridge/broadcom/bcm5785/bootblock.c(Revision 0)
@@ -0,0 +1,5 @@
+#include bcm5785_enable_rom.c
+
+static void bootblock_southbridge_init(void) {
+bcm5785_enable_rom();
+}
-- 
coreboot mailing list: coreboot@coreboot.org
http://www.coreboot.org/mailman/listinfo/coreboot

[coreboot] inteltool patch: Added support to ICH9 chipset family

2010-05-07 Thread Антон Кочков
Added support to ICH9 chipset family
Signed-off-by: Anton Kochkov anton.koch...@gmail.com
---
diff -c inteltool//gpio.c inteltool2//gpio.c
*** inteltool//gpio.c	2010-05-07 15:16:54.878775130 +0400
--- inteltool2//gpio.c	2010-05-07 14:49:35.0 +0400
***
*** 114,119 
--- 114,138 
  	{ 0x3C, 4, GPIO_USE_SEL Override (HIGH) }
  };
  
+ static const io_register_t ich9_gpio_registers[] = {
+ 	{ 0x00, 4, GPIO_USE_SEL },
+ 	{ 0x04, 4, GP_IO_SEL },
+ 	{ 0x08, 4, RESERVED },
+ 	{ 0x0c, 4, GP_LVL },
+ 	{ 0x10, 4, RESERVED },
+ 	{ 0x14, 4, RESERVED },
+ 	{ 0x18, 4, GPO_BLINK },
+ 	{ 0x1c, 4, GP_SER_BLINK },
+ 	{ 0x20, 4, GP_SB_CMDSTS },
+ 	{ 0x24, 4, GP_SB_DATA },
+ 	{ 0x28, 4, RESERVED },
+ 	{ 0x2c, 4, GPI_INV },
+ 	{ 0x30, 4, GPIO_USE_SEL2 },
+ 	{ 0x34, 4, GP_IO_SEL2 },
+ 	{ 0x38, 4, GP_LVL2 },
+ 	{ 0x3C, 4, RESERVED }
+ };
+ 
  
  int print_gpios(struct pci_dev *sb)
  {
***
*** 124,129 
--- 143,158 
  	printf(\n= GPIOS =\n\n);
  
  	switch (sb-device_id) {
+ case PCI_DEVICE_ID_INTEL_ICH9DH:
+ case PCI_DEVICE_ID_INTEL_ICH9DO:
+ case PCI_DEVICE_ID_INTEL_ICH9R:
+ case PCI_DEVICE_ID_INTEL_ICH9:
+ case PCI_DEVICE_ID_INTEL_ICH9M:
+ case PCI_DEVICE_ID_INTEL_ICH9ME:
+ gpiobase = pci_read_word(sb, 0x48)  0xfffc;
+ 		gpio_registers = ich9_gpio_registers;
+ 		size = ARRAY_SIZE(ich9_gpio_registers);
+ 		break;
  	case PCI_DEVICE_ID_INTEL_ICH8M:
  		gpiobase = pci_read_word(sb, 0x48)  0xfffc;
  		gpio_registers = ich8_gpio_registers;
diff -c inteltool//inteltool.c inteltool2//inteltool.c
*** inteltool//inteltool.c	2010-05-07 15:16:54.878775130 +0400
--- inteltool2//inteltool.c	2010-05-07 14:39:17.0 +0400
***
*** 45,52 
  	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82G33, P35/G33/G31/P31 },
  	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82Q33, Q33 },
  	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_X58, X58 },
  	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH10R, ICH10R },
! 	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH8M, ICH8-M },
  	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH7MDH, ICH7-M DH },
  	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH7M, ICH7-M },
  	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH7, ICH7 },
--- 45,59 
  	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82G33, P35/G33/G31/P31 },
  	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82Q33, Q33 },
  	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_X58, X58 },
+ { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_GS45MEGMCH, GS45ME-GMCH }, // Northbridge in GS45
  	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH10R, ICH10R },
! { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH9DH, ICH9DH },
! { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH9DO, ICH9DO },
! { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH9R, ICH9R },
! { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH9, ICH9 },
! { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH9M, ICH9M },
! { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH9ME, ICH9M-E },
! { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH8M, ICH8-M },
  	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH7MDH, ICH7-M DH },
  	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH7M, ICH7-M },
  	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH7, ICH7 },
diff -c inteltool//inteltool.h inteltool2//inteltool.h
*** inteltool//inteltool.h	2010-05-07 15:16:54.878775130 +0400
--- inteltool2//inteltool.h	2010-05-07 14:05:50.0 +0400
***
*** 44,51 
--- 44,59 
  #define PCI_DEVICE_ID_INTEL_ICH7M		0x27b9
  #define PCI_DEVICE_ID_INTEL_ICH7MDH		0x27bd
  #define PCI_DEVICE_ID_INTEL_ICH8M		0x2815
+ #define PCI_DEVICE_ID_INTEL_ICH9DH  0x2912
+ #define PCI_DEVICE_ID_INTEL_ICH9DO  0x2914
+ #define PCI_DEVICE_ID_INTEL_ICH9R   0x2916
+ #define PCI_DEVICE_ID_INTEL_ICH90x2918
+ #define PCI_DEVICE_ID_INTEL_ICH9M   0x2919
+ #define PCI_DEVICE_ID_INTEL_ICH9ME  0x2917
  #define PCI_DEVICE_ID_INTEL_ICH10R		0x3a16
  
+ #define PCI_DEVICE_ID_INTEL_GS45MEGMCH  0x2a40 // northbridge  GS45
+ 
  #define PCI_DEVICE_ID_INTEL_82810		0x7120
  #define PCI_DEVICE_ID_INTEL_82810DC		0x7122
  #define PCI_DEVICE_ID_INTEL_82830M		0x3575
diff -c inteltool//memory.c inteltool2//memory.c
*** inteltool//memory.c	2010-05-07 15:16:54.878775130 +0400
--- inteltool2//memory.c	2010-05-07 14:25:25.0 +0400
***
*** 54,59 
--- 54,63 
  	case PCI_DEVICE_ID_INTEL_82830M:
  		printf(This northbrigde does not have MCHBAR.\n);
  		return 1;
+ case PCI_DEVICE_ID_INTEL_GS45MEGMCH:
+ mchbar_phys = pci_read_long(nb, 0x48)  0xfffe;
+ mchbar_phys |= ((uint64_t)pci_read_long(nb, 0x4c))  32;
+  		break;
  	default:
  		printf(Error: Dumping MCHBAR on this northbridge is not (yet) supported.\n);
  		return 1;
diff -c inteltool//pcie.c inteltool2//pcie.c
*** 

Re: [coreboot] Linux booting hangs when booted by FILO

2010-05-07 Thread limp
Hi, 

Yes, SeaBIOS works (well, with some minor issues).

After putting a VGA bios into coreboot, the following are also displayed
after the Jumping to entry point... message, but the system still freezes:

Jumping to entry point...
out of memory while allocating output buffer

-- System halted

Does anyone have any idea regarding the cause of the out of memory while
allocating output buffer error? 

Thank you in advance.

-John

-Original Message-
From: Kevin O'Connor [mailto:ke...@koconnor.net] 
Sent: Saturday, May 01, 2010 6:23 PM
To: limp
Cc: coreboot@coreboot.org
Subject: Re: [coreboot] Linux booting hangs when booted by FILO

On Fri, Apr 30, 2010 at 03:34:43AM +0100, limp wrote:
 I have loaded coreboot with FILO on a Kontron 986LCD-M board and when I am
 trying to boot Linux from FILO, it freezes at the Jumping to entry
 point... bit.

Out of curiosity, does SeaBIOS work?

-Kevin


-- 
coreboot mailing list: coreboot@coreboot.org
http://www.coreboot.org/mailman/listinfo/coreboot


Re: [coreboot] H8DME-2 woes, hints?

2010-05-07 Thread Myles Watson

 On Fri, May 07, 2010 at 07:30:08AM -0600, Myles Watson wrote:
This looks like the bootup code for gen f Opterons.  It doesn't look
like the h8dme has a fam10 variant yet, which is what you need for
 the
2378 CPUs.
  
   Thanks Arne!
   I'll have to figure out how to proceed from here.
  
   On a side note, it _looks_ like the slowdown might be due to the
 udelay
   unification.  Still bisecting.
 
  I'm surprised you found a revision that works, since it has never
 supported
  fam10.  I think it would be more fruitful for you to look at one of the
  boards that has both fam10 and k8 support, and try to put together an
  h8dme_fam10 port.
 
 For the record, I've been trying to get that going for a while, but have
 not
 had much success - very early hangs in the fam10 code on this board. Cf.
 the
 problems Knut is having, I think...
Sorry I forgot that.  The Supermicro names all blend together for me.  Have
you tried adding the extra bits to the masks in resourcemap.c?

Thanks,
Myles


-- 
coreboot mailing list: coreboot@coreboot.org
http://www.coreboot.org/mailman/listinfo/coreboot


[coreboot] inteltool patch: Added support to ICH9 chipset family

2010-05-07 Thread Антон Кочков
Added support to ICH9 chipset family
Signed-off-by: Anton Kochkov anton.koch...@gmail.com
---
Index: gpio.c
===
--- gpio.c	(revision 5527)
+++ gpio.c	(working copy)
@@ -114,7 +114,26 @@
 	{ 0x3C, 4, GPIO_USE_SEL Override (HIGH) }
 };
 
+static const io_register_t ich9_gpio_registers[] = {
+	{ 0x00, 4, GPIO_USE_SEL },
+	{ 0x04, 4, GP_IO_SEL },
+	{ 0x08, 4, RESERVED },
+	{ 0x0c, 4, GP_LVL },
+	{ 0x10, 4, RESERVED },
+	{ 0x14, 4, RESERVED },
+	{ 0x18, 4, GPO_BLINK },
+	{ 0x1c, 4, GP_SER_BLINK },
+	{ 0x20, 4, GP_SB_CMDSTS },
+	{ 0x24, 4, GP_SB_DATA },
+	{ 0x28, 4, RESERVED },
+	{ 0x2c, 4, GPI_INV },
+	{ 0x30, 4, GPIO_USE_SEL2 },
+	{ 0x34, 4, GP_IO_SEL2 },
+	{ 0x38, 4, GP_LVL2 },
+	{ 0x3C, 4, RESERVED }
+};
 
+
 int print_gpios(struct pci_dev *sb)
 {
 	int i, size;
@@ -124,6 +143,16 @@
 	printf(\n= GPIOS =\n\n);
 
 	switch (sb-device_id) {
+case PCI_DEVICE_ID_INTEL_ICH9DH:
+case PCI_DEVICE_ID_INTEL_ICH9DO:
+case PCI_DEVICE_ID_INTEL_ICH9R:
+case PCI_DEVICE_ID_INTEL_ICH9:
+case PCI_DEVICE_ID_INTEL_ICH9M:
+case PCI_DEVICE_ID_INTEL_ICH9ME:
+gpiobase = pci_read_word(sb, 0x48)  0xfffc;
+		gpio_registers = ich9_gpio_registers;
+		size = ARRAY_SIZE(ich9_gpio_registers);
+		break;
 	case PCI_DEVICE_ID_INTEL_ICH8M:
 		gpiobase = pci_read_word(sb, 0x48)  0xfffc;
 		gpio_registers = ich8_gpio_registers;
Index: inteltool.h
===
--- inteltool.h	(revision 5527)
+++ inteltool.h	(working copy)
@@ -44,8 +44,16 @@
 #define PCI_DEVICE_ID_INTEL_ICH7M		0x27b9
 #define PCI_DEVICE_ID_INTEL_ICH7MDH		0x27bd
 #define PCI_DEVICE_ID_INTEL_ICH8M		0x2815
+#define PCI_DEVICE_ID_INTEL_ICH9DH  0x2912
+#define PCI_DEVICE_ID_INTEL_ICH9DO  0x2914
+#define PCI_DEVICE_ID_INTEL_ICH9R   0x2916
+#define PCI_DEVICE_ID_INTEL_ICH90x2918
+#define PCI_DEVICE_ID_INTEL_ICH9M   0x2919
+#define PCI_DEVICE_ID_INTEL_ICH9ME  0x2917
 #define PCI_DEVICE_ID_INTEL_ICH10R		0x3a16
 
+#define PCI_DEVICE_ID_INTEL_GS45MEGMCH  0x2a40 // northbridge  GS45
+
 #define PCI_DEVICE_ID_INTEL_82810		0x7120
 #define PCI_DEVICE_ID_INTEL_82810DC		0x7122
 #define PCI_DEVICE_ID_INTEL_82830M		0x3575
Index: pcie.c
===
--- pcie.c	(revision 5527)
+++ pcie.c	(working copy)
@@ -43,6 +43,7 @@
  	case PCI_DEVICE_ID_INTEL_82Q35:
  	case PCI_DEVICE_ID_INTEL_82G33:
  	case PCI_DEVICE_ID_INTEL_82Q33:
+case PCI_DEVICE_ID_INTEL_GS45MEGMCH:
  		epbar_phys = pci_read_long(nb, 0x40)  0xfffe;
  		epbar_phys |= ((uint64_t)pci_read_long(nb, 0x44))  32;
  		break;
@@ -51,7 +52,7 @@
 	case PCI_DEVICE_ID_INTEL_82830M:
 		printf(This northbrigde does not have EPBAR.\n);
 		return 1;
-	default:
+default:
 		printf(Error: Dumping EPBAR on this northbridge is not (yet) supported.\n);
 		return 1;
 	}
@@ -95,15 +96,15 @@
  	case PCI_DEVICE_ID_INTEL_82Q35:
  	case PCI_DEVICE_ID_INTEL_82G33:
  	case PCI_DEVICE_ID_INTEL_82Q33:
+case PCI_DEVICE_ID_INTEL_GS45MEGMCH:
  		dmibar_phys = pci_read_long(nb, 0x68)  0xfffe;
  		dmibar_phys |= ((uint64_t)pci_read_long(nb, 0x6c))  32;
  		break;
 	case PCI_DEVICE_ID_INTEL_82810:
 	case PCI_DEVICE_ID_INTEL_82810DC:
-	case PCI_DEVICE_ID_INTEL_82830M:
 		printf(This northbrigde does not have DMIBAR.\n);
 		return 1;
-	default:
+default:
 		printf(Error: Dumping DMIBAR on this northbridge is not (yet) supported.\n);
 		return 1;
 	}
@@ -149,6 +150,7 @@
  	case PCI_DEVICE_ID_INTEL_82Q35:
  	case PCI_DEVICE_ID_INTEL_82G33:
  	case PCI_DEVICE_ID_INTEL_82Q33:
+case PCI_DEVICE_ID_INTEL_GS45MEGMCH:
  		pciexbar_reg = pci_read_long(nb, 0x60);
  		pciexbar_reg |= ((uint64_t)pci_read_long(nb, 0x64))  32;
  		break;
Index: powermgt.c
===
--- powermgt.c	(revision 5527)
+++ powermgt.c	(working copy)
@@ -21,47 +21,47 @@
 #include stdio.h
 #include inteltool.h
 
-static const io_register_t ich7_pm_registers[] = {
-	{ 0x00, 2, PM1_STS },
-	{ 0x02, 2, PM1_EN },
-	{ 0x04, 4, PM1_CNT },
-	{ 0x08, 4, PM1_TMR },
+static const io_register_t ich9_pm_registers[] = {
+	{ 0x00, 2, PM1_STS }, // PM1 Status; ACPI pointer: PM1a_EVT_BLK
+	{ 0x02, 2, PM1_EN },  // PM1 Enables; ACPI pointer: PM1a_EVT_BLK+2
+	{ 0x04, 4, PM1_CNT }, // PM1 Control; ACPI pointer: PM1a_CNT_BLK
+	{ 0x08, 4, PM1_TMR }, // PM1 Timer; ACPI pointer: PMTMR_BLK
 	{ 0x0c, 4, RESERVED },
-	{ 0x10, 4, PROC_CNT },
+	{ 0x10, 4, PROC_CNT }, // Processor Control; ACPI pointer: P_BLK
 #if DANGEROUS_REGISTERS
 	/* These registers return 0 on read, but reading them may cause
-	 * the system to enter C2/C3/C4 state, which might hang the system.
+	 * the system to enter Cx states, which might hang the system.
 	 */
-	{ 0x14, 1, LV2 (Mobile/Ultra Mobile) },
-	{ 0x15, 1, LV3 (Mobile/Ultra 

[coreboot] #161: Improve USB debug port configuration

2010-05-07 Thread coreboot
#161: Improve USB debug port configuration
+---
Reporter:  oxygene  | Owner:  ste...@… 
Type:  enhancement  |Status:  new  
Priority:  trivial  | Milestone:   
   Component:  coreboot |  Keywords:   
Dependencies:   |   Patchstatus:  there is no patch
+---
 Right now, the right port number is configured in DBGP_DEFAULT without
 much documentation anywhere. It's even defined in boards that don't use
 the value at all.

 Maybe move it to Kconfig? Document it? Just clean up the copypasted
 useless values?

-- 
Ticket URL: https://tracker.coreboot.org/trac/coreboot/ticket/161
coreboot http://www.coreboot.org/

-- 
coreboot mailing list: coreboot@coreboot.org
http://www.coreboot.org/mailman/listinfo/coreboot

Re: [coreboot] #161: Improve USB debug port configuration

2010-05-07 Thread coreboot
#161: Improve USB debug port configuration
+---
Reporter:  oxygene  | Owner:  ste...@… 
Type:  enhancement  |Status:  new  
Priority:  trivial  | Milestone:   
   Component:  coreboot |  Keywords:   
Dependencies:   |   Patchstatus:  there is no patch
+---

Comment(by stuge):

 Definately mainboard Kconfig!

-- 
Ticket URL: https://tracker.coreboot.org/trac/coreboot/ticket/161#comment:1
coreboot http://www.coreboot.org/

-- 
coreboot mailing list: coreboot@coreboot.org
http://www.coreboot.org/mailman/listinfo/coreboot

Re: [coreboot] PATCH: model_6bx CPUs can go in a lot of places

2010-05-07 Thread Keith Hui
I think I should get CAR running. But CAR is not quite developed for
the rest of the 6xx family.

If you look at the boot log you'll see that it got through to SeaBIOS
just fine. My coreboot is still on romcc.

What are the steps needed to enable CAR on a board?

Thanks
Keith

On 5/7/10, Joseph Smith j...@settoplinux.org wrote:



 On Thu, 6 May 2010 23:31:49 -0400, Keith Hui buu...@gmail.com wrote:
 Hi all,

 Intel model 6bx CPUs (specifically 6B1 and 6B4) can end up in a lot of
 places, specifically Slot 1 and Socket 370. Ever since references to
 them were removed from cpu/intel/model_6xx my coreboot would die when
 initializing CPU with a Unknown cpu error. This patch fixes it by
 adding references to model_6bx to cpu/intel/slot_1 and
 cpu/intel/socket_PGA370. Also included are before and after boot logs
 with relevant sections highlighted.

 Before boot log: http://coreboot.pastebin.com/CGWgihaG
 After boot log: http://coreboot.pastebin.com/GLgnpZT6

 Signed-off-by: Keith Hui buu...@gmail.com

 - Begin patch -
 Index: src/cpu/intel/slot_1/Makefile.inc
 ===
 --- src/cpu/intel/slot_1/Makefile.inc(revision 5527)
 +++ src/cpu/intel/slot_1/Makefile.inc(working copy)
 @@ -20,6 +20,7 @@

  obj-y += slot_1.o
  subdirs-y += ../model_6xx
 +subdirs-y += ../model_6bx
  subdirs-y += ../../x86/tsc
  subdirs-y += ../../x86/mtrr
  subdirs-y += ../../x86/lapic
 Index: src/cpu/intel/socket_PGA370/Makefile.inc
 ===
 --- src/cpu/intel/socket_PGA370/Makefile.inc (revision 5527)
 +++ src/cpu/intel/socket_PGA370/Makefile.inc (working copy)
 @@ -20,6 +20,7 @@

  obj-y += socket_PGA370.o
  subdirs-y += ../model_6xx
 +subdirs-y += ../model_6bx
  subdirs-y += ../../x86/tsc
  subdirs-y += ../../x86/mtrr
  subdirs-y += ../../x86/lapic

 - End patch -

 Hello Keith,
 I kind of saw this coming. That is why I left the 6bx's in model_6xx. The
 new model_6bx is intended for CAR, so I don't know how well it will work
 with romcc. My advice is to either get CAR running on your board, or we put
 back the 6bx's in model_6xx for the interim.

 --
 Thanks,
 Joseph Smith
 Set-Top-Linux
 www.settoplinux.org



-- 
coreboot mailing list: coreboot@coreboot.org
http://www.coreboot.org/mailman/listinfo/coreboot


Re: [coreboot] PATCH: model_6bx CPUs can go in a lot of places

2010-05-07 Thread Joseph Smith



On Fri, 7 May 2010 13:00:37 -0400, Keith Hui buu...@gmail.com wrote:
 I think I should get CAR running. But CAR is not quite developed for
 the rest of the 6xx family.
 
Correct, and it will never get done if we don't step forward.

 If you look at the boot log you'll see that it got through to SeaBIOS
 just fine. My coreboot is still on romcc.
 
 What are the steps needed to enable CAR on a board?
 
Take a look at Thomson IP1000. Hope that helps.

-- 
Thanks,
Joseph Smith
Set-Top-Linux
www.settoplinux.org


-- 
coreboot mailing list: coreboot@coreboot.org
http://www.coreboot.org/mailman/listinfo/coreboot


[coreboot] Query, known-good CPUs to use in a H8DME-2 mb?

2010-05-07 Thread Joe Korty
On Fri, May 07, 2010 at 09:37:54AM -0400, Ward Vandewege wrote:
 On Fri, May 07, 2010 at 07:30:08AM -0600, Myles Watson wrote:
 This looks like the bootup code for gen f Opterons.
 It doesn't look like the h8dme has a fam10 variant yet,
 which is what you need for the 2378 CPUs.

 I'm surprised you found a revision that works, since
 it has never supported fam10.  I think it would be more
 fruitful for you to look at one of the boards that has
 both fam10 and k8 support, and try to put together an
 h8dme_fam10 port.

 For the record, I've been trying to get that going for a
 while, but have not had much success - very early hangs
 in the fam10 code on this board. Cf. the problems Knut
 is having, I think...


What AMD Processor model numbers have you folks been using
on the SuperMicro H8DME-2 mainboards?  I'd like to buy a
pair of known-working CPUs.

I currently have a pair of AMD model #2378 Processors,
which are of the fam10 line, with a pair of model #
CPUs, which are of the K8 line.

Thoughts?
Regards,
Joe

-- 
coreboot mailing list: coreboot@coreboot.org
http://www.coreboot.org/mailman/listinfo/coreboot


Re: [coreboot] Query, known-good CPUs to use in a H8DME-2 mb?

2010-05-07 Thread Ward Vandewege
On Fri, May 07, 2010 at 01:59:12PM -0400, Joe Korty wrote:
 What AMD Processor model numbers have you folks been using
 on the SuperMicro H8DME-2 mainboards?  I'd like to buy a
 pair of known-working CPUs.
 
 I currently have a pair of AMD model #2378 Processors,
 which are of the fam10 line, with a pair of model #
 CPUs, which are of the K8 line.

The port for that board was done on a pair of 2216 HE CPUs.

You may be hard pressed to find those for sale these days...

Thanks,
Ward.

-- 
Ward Vandewege w...@fsf.org
Free Software Foundation - Senior Systems Administrator

-- 
coreboot mailing list: coreboot@coreboot.org
http://www.coreboot.org/mailman/listinfo/coreboot


[coreboot] AMD CAR II

2010-05-07 Thread Rudolf Marek
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi all,

I examined a bit how does it works. Maybe if one can read this
http://en.wikipedia.org/wiki/CPU_cache and then continue here :)


I was particularly curious because we do writeback - writeback copy of data from
CAR to ram (to copy stack and sysinfo, which must cause L1 evictions), and also
we do DQS memory training (which writes to RAM during CAR) and we use cache to
cache ROM too.

This means not only L1 is used but we must be using L2 too. Here are some notes
why I think it works :)

Here is what I found:

AMD L2 cache is exclusive, it means it only contains data evicted from L1
caches. In other words there is never same data in both caches. I could not find
any info if it is valid for the Icache too. If the icache gets moved to L2 or
not. It should but it does not seem to happen during CAR.

L1 Data cache:
Size: 64Kb  2-way associative.
lines per tag=1 line size=64 bytes.
L1 Instruction cache:
Size: 64Kb  2-way associative.
lines per tag=1 line size=64 bytes.

512KB/core

L2 cache:
Size: 1024Kb16-way associative.
lines per tag=1 line size=64 bytes.

Here is basic math how to calculate cache organization:

line size = tells how many bytes are stored in one cache line (exploits the
spatial locality of data). Here it is 64 bytes so bits of address 5:0 are used.

Index: it tells how many cache lines do we have.

The level of associativity tells how many addresses which compete for same index
can be stored in cache simultaneously.

For L1 we have: 64*1024 / 64 / 2 = 512 is the number of cache lines. We have 2
(assoc is 2) arrays each has 64 bytes/per line and total size is 64KB. The
index is therefore on addresses 14:6. The rest of address is used as tag (tag
identifies the actual location of data in memory together with the cache line
index) One can say each 14:0 bit of address compete for same index. We have asoc
level of 2 so each 16 bits of addr will fill whole cache.

For L2 here it is 512KB assoc is 16. We have 32KB / 64 indexes = 512 (lines)
so addresses 14:6 build up the index. Rest is tag.

The CAR idea on AMD is just to use it and never cause an eviction from L2 cache
to main memory (which is not functioning).

Step 0) enable cache and WB mtrrs for any ranges
1) all lines are invalid, validate them by dummy read exactly as big as max L1
cache. For instruction cache enough is a instr fetch.
2) The dummy read region can be now used to store data - it is simply an
arbitrary address range 0-64KB max.

3) caching of ROM works too because:

a) MTRR for rom is set (currently only for part of it) it could be WP type but
we use WB, no harm here because we do not modify any code ;)
b) L1 instruction cache is filled from flash chip directly (remember L2 is
exclusive cache on AMD)
c) if L1 instr cache is not evicted into L2 then on cache miss it L1 line is
simply invalidated and refilled from flash rom. I tried to check this using
performance counters but there is not a counter for this. This is uninteresting
case because it does not complicate anything.

c) if L1 instr cache gets evicted into L2, (which I dont know if is true),

then we can run into following

I) no L1 data cache lines was evicted into L2 - again not interesting case
because nothing gets wrong.

II) we have some L1 data cache evicted into L2. This really happens in our CAR!
print_debug(Copying data from cache to RAM -- switching to use RAM as 
stack...);
memcopy((void *)((CONFIG_RAMTOP)-CONFIG_DCACHE_RAM_SIZE), (void
*)CONFIG_DCACHE_RAM_BASE, CONFIG_DCACHE_RAM_SIZE);

It happens here because we do copy from CAR region to RAM while CAR is still
running. Both regions are WB so we must evict some L1 cache lines for sure, and
performance counters confirm this. You may say this is not an issue because RAM
is running normally, but for example while we resume from S3 we cannot overwrite
random memory with out CAR... I think this evictions so far happens only here
and still things works nice here is why:

We have at most 64KB or dirty data, we can spread it into L2 nicely and still
have a lot of free space even on systems where we have 128KB L2. In this case no
evictions into system  because we can have the data still in L2.

Now lets go back, what if CPU instruction cache gets evicted into L2? Here it
would cause problems because in L2 would be L1 data cache data and random L1
instr cache code competing for the space.

I think here it works because dirty data is evicted with lowest priority. I
think if all lanes of cache are full, the lane with clean data is invalidated
  first. This saves the day for us because it guarantees that our L1 data will
not fall off the cache never ever - only if we exceed the L2 cache size with
dirty data.

We examined so far the ROM caching and oversized L1 handling. But the memory
training uses writes to not yet initialized RAM. How it works here?

I checked and the memory write uses the instruction 

Re: [coreboot] AMD CAR II

2010-05-07 Thread Myles Watson
 II) we have some L1 data cache evicted into L2. This really happens in our 
 CAR!
 print_debug(Copying data from cache to RAM -- switching to use RAM as 
 stack...);
 memcopy((void *)((CONFIG_RAMTOP)-CONFIG_DCACHE_RAM_SIZE), (void
 *)CONFIG_DCACHE_RAM_BASE, CONFIG_DCACHE_RAM_SIZE);

 It happens here because we do copy from CAR region to RAM while CAR is still
 running. Both regions are WB so we must evict some L1 cache lines for sure, 
 and
 performance counters confirm this. You may say this is not an issue because 
 RAM
 is running normally, but for example while we resume from S3 we cannot 
 overwrite
 random memory with out CAR... I think this evictions so far happens only here
 and still things works nice here is why:
Are you sure they're both WB?  Since CAR is running, we don't disable
the cache and enable it again, which is recommended when setting an
MTRR.  I commented out the line that sets that MTRR and can't tell a
difference.

I like the rest of analysis.

Thanks,
Myles

-- 
coreboot mailing list: coreboot@coreboot.org
http://www.coreboot.org/mailman/listinfo/coreboot


Re: [coreboot] AMD CAR II

2010-05-07 Thread Marc Jones
Hi Rudolf,

Good detailed email. Yes, this is how I think it works, and as far as
I know, the L1 instruction cache also writes to the L2. The L2 is the
main reason that CAR works. I have never been happy with the post_car
code. Something about it doesn't seem right, but I have never found
it. I do think that more care needs to happen with cache en/disable
and the MTRR settings.

Marc

On Fri, May 7, 2010 at 12:10 PM, Rudolf Marek r.ma...@assembler.cz wrote:
 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1

 Hi all,

 I examined a bit how does it works. Maybe if one can read this
 http://en.wikipedia.org/wiki/CPU_cache and then continue here :)


 I was particularly curious because we do writeback - writeback copy of data 
 from
 CAR to ram (to copy stack and sysinfo, which must cause L1 evictions), and 
 also
 we do DQS memory training (which writes to RAM during CAR) and we use cache to
 cache ROM too.

 This means not only L1 is used but we must be using L2 too. Here are some 
 notes
 why I think it works :)

 Here is what I found:

 AMD L2 cache is exclusive, it means it only contains data evicted from L1
 caches. In other words there is never same data in both caches. I could not 
 find
 any info if it is valid for the Icache too. If the icache gets moved to L2 or
 not. It should but it does not seem to happen during CAR.

 L1 Data cache:
        Size: 64Kb      2-way associative.
        lines per tag=1 line size=64 bytes.
 L1 Instruction cache:
        Size: 64Kb      2-way associative.
        lines per tag=1 line size=64 bytes.

 512KB/core

 L2 cache:
        Size: 1024Kb    16-way associative.
        lines per tag=1 line size=64 bytes.

 Here is basic math how to calculate cache organization:

 line size = tells how many bytes are stored in one cache line (exploits the
 spatial locality of data). Here it is 64 bytes so bits of address 5:0 are 
 used.

 Index: it tells how many cache lines do we have.

 The level of associativity tells how many addresses which compete for same 
 index
 can be stored in cache simultaneously.

 For L1 we have: 64*1024 / 64 / 2 = 512 is the number of cache lines. We have 2
 (assoc is 2) arrays each has 64 bytes/per line and total size is 64KB. The
 index is therefore on addresses 14:6. The rest of address is used as tag (tag
 identifies the actual location of data in memory together with the cache line
 index) One can say each 14:0 bit of address compete for same index. We have 
 asoc
 level of 2 so each 16 bits of addr will fill whole cache.

 For L2 here it is 512KB assoc is 16. We have 32KB / 64 indexes = 512 (lines)
 so addresses 14:6 build up the index. Rest is tag.

 The CAR idea on AMD is just to use it and never cause an eviction from L2 
 cache
 to main memory (which is not functioning).

 Step 0) enable cache and WB mtrrs for any ranges
 1) all lines are invalid, validate them by dummy read exactly as big as max L1
 cache. For instruction cache enough is a instr fetch.
 2) The dummy read region can be now used to store data - it is simply an
 arbitrary address range 0-64KB max.

 3) caching of ROM works too because:

 a) MTRR for rom is set (currently only for part of it) it could be WP type but
 we use WB, no harm here because we do not modify any code ;)
 b) L1 instruction cache is filled from flash chip directly (remember L2 is
 exclusive cache on AMD)
 c) if L1 instr cache is not evicted into L2 then on cache miss it L1 line is
 simply invalidated and refilled from flash rom. I tried to check this using
 performance counters but there is not a counter for this. This is 
 uninteresting
 case because it does not complicate anything.

 c) if L1 instr cache gets evicted into L2, (which I dont know if is true),

 then we can run into following

 I) no L1 data cache lines was evicted into L2 - again not interesting case
 because nothing gets wrong.

 II) we have some L1 data cache evicted into L2. This really happens in our 
 CAR!
 print_debug(Copying data from cache to RAM -- switching to use RAM as 
 stack...);
 memcopy((void *)((CONFIG_RAMTOP)-CONFIG_DCACHE_RAM_SIZE), (void
 *)CONFIG_DCACHE_RAM_BASE, CONFIG_DCACHE_RAM_SIZE);

 It happens here because we do copy from CAR region to RAM while CAR is still
 running. Both regions are WB so we must evict some L1 cache lines for sure, 
 and
 performance counters confirm this. You may say this is not an issue because 
 RAM
 is running normally, but for example while we resume from S3 we cannot 
 overwrite
 random memory with out CAR... I think this evictions so far happens only here
 and still things works nice here is why:

 We have at most 64KB or dirty data, we can spread it into L2 nicely and still
 have a lot of free space even on systems where we have 128KB L2. In this case 
 no
 evictions into system  because we can have the data still in L2.

 Now lets go back, what if CPU instruction cache gets evicted into L2? Here it
 would cause problems because in L2 would be L1 data cache data and random L1
 instr 

Re: [coreboot] FILO bug disk not seen at ata-0 (Doesn't try to detect on ATA only SIL3114)

2010-05-07 Thread Peter Stuge
Joop Boonen wrote:
  I have an issue with FILO the disk at ata-0 isn't seen.
 
 I've been trying some more. I've used the old IDE in FILO. It now
 recognises the drive connected to the SIL3114. But still not the
 ATA drive.

Curious. Maybe I can ask you to try even older code? I did a bunch of
work on the IDE driver in FILO 0.5 but haven't kept up with current
code. If you'd like to try the latest 0.5:

svn co svn://coreboot.org/filo/branches/filo-0.5

Please disable the GRUB junk (comment out USE_GRUB), enable
filesystems you need, and enable DEBUG_BLOCKDEV, DEBUG_PCI, and
DEBUG_IDE.


Thanks.


//Peter

-- 
coreboot mailing list: coreboot@coreboot.org
http://www.coreboot.org/mailman/listinfo/coreboot


Re: [coreboot] PATCH: model_6bx CPUs can go in a lot of places

2010-05-07 Thread Keith Hui
On Fri, May 7, 2010 at 7:01 PM, Idwer Vollering vid...@gmail.com wrote:


 2010/5/7 Keith Hui buu...@gmail.com

 I think I should get CAR running. But CAR is not quite developed for
 the rest of the 6xx family.

 If you look at the boot log you'll see that it got through to SeaBIOS
 just fine. My coreboot is still on romcc.

 What are the steps needed to enable CAR on a board?

 Example: see attached patch (as an example/reference only because
 USE_PRINTK_IN_CAR, in src/mainboard/asus/p2b/Kconfig, somehow breaks
 booting/serial output.. waiting for my pci post card to arrive).


All that I can find with importance is two Kconfig options...

Booting failed with POST code 0x10.

Digging into code now.

-- 
coreboot mailing list: coreboot@coreboot.org
http://www.coreboot.org/mailman/listinfo/coreboot