[coreboot] PATCH: lx loads payload again, with new vsa, proper PCI bus scan etc.

Carl-Daniel Hailfinger c-d.hailfinger.devel.2006 at gmx.net
Fri Feb 1 21:11:21 CET 2008


On 01.02.2008 20:28, ron minnich wrote:
> With this set of changes, the lx target loads VSA and configures the PCI bus,
> with VSA operating correctly. This is tested with AMD's recently released
> new-model VSA code. Note that v3 build is correctly compressing the uncompressed
> vsa payload. I am really happy with v3 so far.
>
> Signed-off-by: Ronald G. Minnich <rminnich at gmail.com>
>   

That's great!

Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>

This passed my compile tests for all targets except the artec dbe61,
which has been broken for a long time anyway.
A few minor comments. It would be great if you could address them before
committing.

northbridge/amd/geodelx/domain is a copy of northbridge/amd/geodelx/dts.
You probably want to use "svn mv" for that because it preserves history
and the old file was probably intended to have been moved, not copied.

northbridge/amd/geodelx/vsmsetup.c:247: warning: ‘biosint’ defined but
not used
Since the new VSA does not use BIOSINT services anymore, deleting
biosint and related functions from vsmsetup.c would shrink vsmsetup.c by
one fourth. Patch follows (could you merge it into your patch?):

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>

Index: northbridge/amd/geodelx/vsmsetup.c
===================================================================
--- northbridge/amd/geodelx/vsmsetup.c	(Revision 570)
+++ northbridge/amd/geodelx/vsmsetup.c	(Arbeitskopie)
@@ -227,83 +227,3 @@
 	MEMSIZE = 0x12
 };
 
-int pcibios(unsigned long *pedi, unsigned long *pesi, unsigned long *pebp,
-	    unsigned long *pesp, unsigned long *pebx, unsigned long *pedx,
-	    unsigned long *pecx, unsigned long *peax, unsigned long *pflags);
-
-int handleint21(unsigned long *pedi, unsigned long *pesi, unsigned long *pebp,
-		unsigned long *pesp, unsigned long *pebx, unsigned long *pedx,
-		unsigned long *pecx, unsigned long *peax,
-		unsigned long *pflags);
-
-/* see the vga_exit() call. until we clean this up this function will remain here */
-static int biosint(unsigned long intnumber,
-	    unsigned long gsfs, unsigned long dses,
-	    unsigned long edi, unsigned long esi,
-	    unsigned long ebp, unsigned long esp,
-	    unsigned long ebx, unsigned long edx,
-	    unsigned long ecx, unsigned long eax,
-	    unsigned long cs_ip, unsigned short stackflags)
-{
-	unsigned long ip;
-	unsigned long cs;
-	unsigned long flags;
-	int ret = -1;
-
-	ip = cs_ip & 0xffff;
-	cs = cs_ip >> 16;
-	flags = stackflags;
-
-	printk(BIOS_DEBUG, "biosint: INT# 0x%lx\n", intnumber);
-	printk(BIOS_DEBUG, "biosint: eax 0x%lx ebx 0x%lx ecx 0x%lx edx 0x%lx\n",
-		     eax, ebx, ecx, edx);
-	printk(BIOS_DEBUG, "biosint: ebp 0x%lx esp 0x%lx edi 0x%lx esi 0x%lx\n",
-		     ebp, esp, edi, esi);
-	printk(BIOS_DEBUG, "biosint:  ip 0x%lx   cs 0x%lx  flags 0x%lx\n",
-		     ip, cs, flags);
-	printk(BIOS_DEBUG, "biosint: gs 0x%lx fs 0x%lx ds 0x%lx es 0x%lx\n",
-		     gsfs >> 16, gsfs & 0xffff, dses >> 16, dses & 0xffff);
-
-	// cases in a good compiler are just as good as your own tables.
-	switch (intnumber) {
-	case 0 ... 15:
-		// These are not BIOS service, but the CPU-generated exceptions
-		printk(BIOS_INFO, "biosint: Oops, exception %lu\n", intnumber);
-		if (esp < 0x1000) {
-			printk(BIOS_DEBUG, "Stack contents: ");
-			while (esp < 0x1000) {
-				printk(BIOS_DEBUG, "0x%04x ", *(unsigned short *)esp);
-				esp += 2;
-			}
-			printk(BIOS_DEBUG, "\n");
-		}
-		printk(BIOS_DEBUG, "biosint: Bailing out ... not now\n");
-		// "longjmp"
-		//vga_exit();
-		break;
-
-	case PCIBIOS:
-		ret = pcibios(&edi, &esi, &ebp, &esp,
-			      &ebx, &edx, &ecx, &eax, &flags);
-		break;
-	case MEMSIZE:
-		// who cares.
-		eax = 128 * 1024;
-		ret = 0;
-		break;
-	case 0x15:
-		ret = handleint21(&edi, &esi, &ebp, &esp,
-				  &ebx, &edx, &ecx, &eax, &flags);
-		break;
-	default:
-	  printk(BIOS_INFO, "BIOSINT: Unsupport int #0x%lx\n", intnumber);
-		break;
-	}
-	if (ret)
-		flags |= 1;	// carry flags
-	else
-		flags &= ~1;
-	stackflags = flags;
-	return ret;
-}
-






More information about the coreboot mailing list