Patchwork Factor out a few commonly duplicated functions from northbridge.c

login
register
about
Submitter Uwe Hermann
Date 2010-10-11 18:43:06
Message ID <20101011184305.GU3256@greenwood>
Download mbox | patch
Permalink /patch/2094/
State Accepted
Headers show

Comments

Uwe Hermann - 2010-10-11 18:43:06
See patch.


Uwe.
Peter Stuge - 2010-10-11 19:24:07
Uwe Hermann wrote:
> Factor out a few commonly duplicated functions from northbridge.c.
> 
> The following functions are moved to devices/device_util.c:
> 
>  - ram_resource()
> 
>  - tolm_test()
> 
>  - find_pci_tolm()
> 
> There are only two tolm_test() / find_pci_tolm() which differ from the
> defaults,

How do they differ?


> Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>

Acked-by: Peter Stuge <peter@stuge.se>
Uwe Hermann - 2010-10-24 13:27:33
On Mon, Oct 11, 2010 at 09:24:07PM +0200, Peter Stuge wrote:
> Uwe Hermann wrote:
> > Factor out a few commonly duplicated functions from northbridge.c.
> > 
> > The following functions are moved to devices/device_util.c:
> > 
> >  - ram_resource()
> > 
> >  - tolm_test()
> > 
> >  - find_pci_tolm()
> > 
> > There are only two tolm_test() / find_pci_tolm() which differ from the
> > defaults,
> 
> How do they differ?

This is the common implementation now factored out:

void tolm_test(void *gp, struct device *dev, struct resource *new)
{
        struct resource **best_p = gp;
        struct resource *best;
        best = *best_p;
        if (!best || (best->base > new->base))
                best = new;
        *best_p = best;
}

u32 find_pci_tolm(struct bus *bus)
{
        struct resource *min = NULL;
        u32 tolm;
        search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM, tolm_test, &min);
        tolm = 0xffffffffUL;
        if (min && tolm > min->base)
                tolm = min->base;
        return tolm;
}


The diff to that in the K8 version is this (in tolm_test()):

-        if (!best || (best->base > new->base))
+        /* Skip VGA. */
+        if (!best || (best->base > new->base && new->base > 0xa0000)) {

Small fix which could also be moved into the global tolm_test(). Depending on
whether or not we want _all_ northbridges to skip that VGA range, we
could add a parameter to the funtion, or just always skip it.


The version on Fam10h is this, not sure if this is worth the hassle:

static u32 my_find_pci_tolm(struct bus *bus, u32 tolm)
{
        struct resource *min;
        min = 0;
        search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM, tolm_test, &min);
        if (min && tolm > min->base) {
                tolm = min->base;
        }
        return tolm;
}

And then later:

        pci_tolm = 0xffffffffUL;
        for(link = dev->link_list; link; link = link->next) {
                pci_tolm = my_find_pci_tolm(link, pci_tolm);
        }


Uwe.
Uwe Hermann - 2010-11-22 17:51:56
On Sun, Oct 24, 2010 at 03:27:33PM +0200, Uwe Hermann wrote:
> On Mon, Oct 11, 2010 at 09:24:07PM +0200, Peter Stuge wrote:
> > Uwe Hermann wrote:
> > > Factor out a few commonly duplicated functions from northbridge.c.
> > > 
> > > The following functions are moved to devices/device_util.c:
> > > 
> > >  - ram_resource()
> > > 
> > >  - tolm_test()
> > > 
> > >  - find_pci_tolm()
> > > 
> > > There are only two tolm_test() / find_pci_tolm() which differ from the
> > > defaults,
> > 
> > How do they differ?
> 
> This is the common implementation now factored out:
> 
> void tolm_test(void *gp, struct device *dev, struct resource *new)
> {
>         struct resource **best_p = gp;
>         struct resource *best;
>         best = *best_p;
>         if (!best || (best->base > new->base))
>                 best = new;
>         *best_p = best;
> }
> 
> u32 find_pci_tolm(struct bus *bus)
> {
>         struct resource *min = NULL;
>         u32 tolm;
>         search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM, tolm_test, &min);
>         tolm = 0xffffffffUL;
>         if (min && tolm > min->base)
>                 tolm = min->base;
>         return tolm;
> }
> 
> 
> The diff to that in the K8 version is this (in tolm_test()):
> 
> -        if (!best || (best->base > new->base))
> +        /* Skip VGA. */
> +        if (!best || (best->base > new->base && new->base > 0xa0000)) {
> 
> Small fix which could also be moved into the global tolm_test(). Depending on
> whether or not we want _all_ northbridges to skip that VGA range, we
> could add a parameter to the funtion, or just always skip it.

Any comments on this? Why does K8 have an exception for 0xa0000, but the
other implementations don't? This doesn't sound like it's K8 specific to
me. Should all northbridges do this?
Myles Watson - 2010-11-22 17:56:57
>> The diff to that in the K8 version is this (in tolm_test()):
>>
>> -        if (!best || (best->base > new->base))
>> +        /* Skip VGA. */
>> +        if (!best || (best->base > new->base && new->base > 0xa0000)) {
>>
>> Small fix which could also be moved into the global tolm_test(). Depending on
>> whether or not we want _all_ northbridges to skip that VGA range, we
>> could add a parameter to the funtion, or just always skip it.
>
> Any comments on this? Why does K8 have an exception for 0xa0000, but the
> other implementations don't? This doesn't sound like it's K8 specific to
> me. Should all northbridges do this?

My guess is that most northbridges don't need to specify the "VGA
compatibility" range.  K8 requires that range to be set up explicitly,
so we've got a resource for it.  If you just look for the "lowest"
resource to find the top of RAM, it won't allow you to have any RAM
above 0xa0000.  I don't think it would hurt any other northbridges to
add this, but it will break K8 if you remove it.

Thanks,
Myles

Patch

Factor out a few commonly duplicated functions from northbridge.c.

The following functions are moved to devices/device_util.c:

 - ram_resource()

 - tolm_test()

 - find_pci_tolm()

There are only two tolm_test() / find_pci_tolm() which differ from the
defaults, one of them can easily be eliminated in a follow-up patch,
maybe even both, but for now keep it simple and only eliminate the majority.

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>

Index: src/devices/device_util.c
===================================================================
--- src/devices/device_util.c	(Revision 5936)
+++ src/devices/device_util.c	(Arbeitskopie)
@@ -730,3 +730,47 @@ 
 			show_one_resource(debug_level, dev, res, "");
 	}
 }
+
+void ram_resource(device_t dev, unsigned long index,
+		  unsigned long basek, unsigned long sizek)
+{
+	struct resource *resource;
+
+	if (!sizek)
+		return;
+
+	resource = new_resource(dev, index);
+	resource->base = ((resource_t)basek) << 10;
+	resource->size = ((resource_t)sizek) << 10;
+	resource->flags = IORESOURCE_MEM | IORESOURCE_CACHEABLE | \
+		IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
+}
+
+void tolm_test(void *gp, struct device *dev, struct resource *new)
+{
+	struct resource **best_p = gp;
+	struct resource *best;
+
+	best = *best_p;
+
+	if (!best || (best->base > new->base))
+		best = new;
+
+	*best_p = best;
+}
+
+u32 find_pci_tolm(struct bus *bus)
+{
+	struct resource *min = NULL;
+	u32 tolm;
+
+	search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM,
+			     tolm_test, &min);
+
+	tolm = 0xffffffffUL;
+
+	if (min && tolm > min->base)
+		tolm = min->base;
+
+	return tolm;
+}
Index: src/include/device/device.h
===================================================================
--- src/include/device/device.h	(Revision 5936)
+++ src/include/device/device.h	(Arbeitskopie)
@@ -146,4 +146,10 @@ 
 void pci_domain_read_resources(struct device *dev);
 unsigned int pci_domain_scan_bus(struct device *dev, unsigned int max);
 unsigned int scan_static_bus(device_t bus, unsigned int max);
+
+void ram_resource(device_t dev, unsigned long index,
+		  unsigned long basek, unsigned long sizek);
+void tolm_test(void *gp, struct device *dev, struct resource *new);
+u32 find_pci_tolm(struct bus *bus);
+
 #endif /* DEVICE_H */
Index: src/cpu/amd/sc520/sc520.c
===================================================================
--- src/cpu/amd/sc520/sc520.c	(Revision 5936)
+++ src/cpu/amd/sc520/sc520.c	(Arbeitskopie)
@@ -84,47 +84,6 @@ 
 	.device = 0x3000
 };
 
-static void ram_resource(device_t dev, unsigned long index,
-        unsigned long basek, unsigned long sizek)
-{
-        struct resource *resource;
-	printk(BIOS_SPEW, "%s sizek 0x%lx\n", __func__, sizek);
-        if (!sizek) {
-                return;
-        }
-        resource = new_resource(dev, index);
-        resource->base  = ((resource_t)basek) << 10;
-        resource->size  = ((resource_t)sizek) << 10;
-        resource->flags =  IORESOURCE_MEM | IORESOURCE_CACHEABLE | \
-                IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
-}
-
-static void tolm_test(void *gp, struct device *dev, struct resource *new)
-{
-	struct resource **best_p = gp;
-	struct resource *best;
-	best = *best_p;
-	if (!best || (best->base > new->base)) {
-		best = new;
-	}
-	*best_p = best;
-}
-
-static uint32_t find_pci_tolm(struct bus *bus)
-{
-	struct resource *min;
-	uint32_t tolm;
-  printk(BIOS_SPEW, "%s\n", __func__);
-	min = 0;
-	search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM, tolm_test, &min);
-	tolm = 0xffffffffUL;
-	if (min && tolm > min->base) {
-		tolm = min->base;
-	}
-  printk(BIOS_SPEW, "%s returns 0x%x\n", __func__, tolm);
-	return tolm;
-}
-
 static void pci_domain_set_resources(device_t dev)
 {
 	device_t mc_dev;
Index: src/mainboard/emulation/qemu-x86/northbridge.c
===================================================================
--- src/mainboard/emulation/qemu-x86/northbridge.c	(Revision 5936)
+++ src/mainboard/emulation/qemu-x86/northbridge.c	(Arbeitskopie)
@@ -9,45 +9,6 @@ 
 #include "chip.h"
 #include <delay.h>
 
-static void ram_resource(device_t dev, unsigned long index,
-	unsigned long basek, unsigned long sizek)
-{
-	struct resource *resource;
-
-	if (!sizek) {
-		return;
-	}
-	resource = new_resource(dev, index);
-	resource->base	= ((resource_t)basek) << 10;
-	resource->size	= ((resource_t)sizek) << 10;
-	resource->flags =  IORESOURCE_MEM | IORESOURCE_CACHEABLE | \
-		IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
-}
-
-static void tolm_test(void *gp, struct device *dev, struct resource *new)
-{
-	struct resource **best_p = gp;
-	struct resource *best;
-	best = *best_p;
-	if (!best || (best->base > new->base)) {
-		best = new;
-	}
-	*best_p = best;
-}
-
-static uint32_t find_pci_tolm(struct bus *bus)
-{
-	struct resource *min;
-	uint32_t tolm;
-	min = 0;
-	search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM, tolm_test, &min);
-	tolm = 0xffffffffUL;
-	if (min && tolm > min->base) {
-		tolm = min->base;
-	}
-	return tolm;
-}
-
 #if CONFIG_WRITE_HIGH_TABLES==1
 #define HIGH_TABLES_SIZE 64	// maximum size of high tables in KB
 extern uint64_t high_tables_base, high_tables_size;
Index: src/northbridge/via/cx700/northbridge.c
===================================================================
--- src/northbridge/via/cx700/northbridge.c	(Revision 5936)
+++ src/northbridge/via/cx700/northbridge.c	(Arbeitskopie)
@@ -32,46 +32,6 @@ 
 #include "chip.h"
 #include "northbridge.h"
 
-static void ram_resource(device_t dev, unsigned long index,
-			 unsigned long basek, unsigned long sizek)
-{
-	struct resource *resource;
-
-	if (!sizek) {
-		return;
-	}
-	resource = new_resource(dev, index);
-	resource->base = ((resource_t) basek) << 10;
-	resource->size = ((resource_t) sizek) << 10;
-	resource->flags = IORESOURCE_MEM | IORESOURCE_CACHEABLE |
-	    IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
-}
-
-static void tolm_test(void *gp, struct device *dev, struct resource *new)
-{
-	struct resource **best_p = gp;
-	struct resource *best;
-	best = *best_p;
-	if (!best || (best->base > new->base)) {
-		best = new;
-	}
-	*best_p = best;
-}
-
-static u32 find_pci_tolm(struct bus *bus)
-{
-	struct resource *min = NULL;
-	u32 tolm;
-
-	search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM, tolm_test, &min);
-	tolm = 0xffffffffUL;
-	if (min && tolm > min->base) {
-		tolm = min->base;
-	}
-
-	return tolm;
-}
-
 #if CONFIG_WRITE_HIGH_TABLES==1
 /* maximum size of high tables in KB */
 #define HIGH_TABLES_SIZE 64
Index: src/northbridge/via/cn400/northbridge.c
===================================================================
--- src/northbridge/via/cn400/northbridge.c	(Revision 5936)
+++ src/northbridge/via/cn400/northbridge.c	(Arbeitskopie)
@@ -161,20 +161,6 @@ 
 	printk(BIOS_SPEW, "Leaving %s.\n", __func__);
 }
 
-static void ram_resource(device_t dev, unsigned long index,
-			 unsigned long basek, unsigned long sizek)
-{
-	struct resource *resource;
-
-	if (!sizek)
-		return;
-	resource = new_resource(dev, index);
-	resource->base = (resource_t) (basek << 10);
-	resource->size = (resource_t) (sizek << 10);
-	resource->flags = IORESOURCE_MEM | IORESOURCE_CACHEABLE |
-	    IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
-}
-
 #ifdef UNUSED_CODE
 static void ram_reservation(device_t dev, unsigned long index,
 			 unsigned long base, unsigned long size)
@@ -191,35 +177,6 @@ 
 }
 #endif
 
-static void tolm_test(void *gp, struct device *dev, struct resource *new)
-{
-	struct resource **best_p = gp;
-	struct resource *best;
-
-	best = *best_p;
-	if (!best || (best->base > new->base))
-		best = new;
-	*best_p = best;
-}
-
-static u32 find_pci_tolm(struct bus *bus)
-{
-	struct resource *min = NULL;
-	u32 tolm;
-
-	printk(BIOS_SPEW, "Entering CN400 find_pci_tolm\n");
-
-	search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM,
-			     tolm_test, &min);
-	tolm = 0xffffffffUL;
-	if (min && tolm > min->base)
-		tolm = min->base;
-
-	printk(BIOS_SPEW, "Leaving CN400 find_pci_tolm\n");
-
-	return tolm;
-}
-
 #if CONFIG_WRITE_HIGH_TABLES==1
 /* maximum size of high tables in KB */
 #define HIGH_TABLES_SIZE 64
Index: src/northbridge/via/vx800/northbridge.c
===================================================================
--- src/northbridge/via/vx800/northbridge.c	(Revision 5936)
+++ src/northbridge/via/vx800/northbridge.c	(Arbeitskopie)
@@ -74,48 +74,6 @@ 
 	.device = PCI_DEVICE_ID_VIA_VX855_MEMCTRL,
 };
 
-static void ram_resource(device_t dev, unsigned long index,
-			 unsigned long basek, unsigned long sizek)
-{
-	struct resource *resource;
-
-	if (!sizek) {
-		return;
-	}
-	resource = new_resource(dev, index);
-	resource->base = ((resource_t) basek) << 10;
-	resource->size = ((resource_t) sizek) << 10;
-	resource->flags = IORESOURCE_MEM | IORESOURCE_CACHEABLE |
-	    IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
-}
-
-static void tolm_test(void *gp, struct device *dev, struct resource *new)
-{
-	struct resource **best_p = gp;
-	struct resource *best;
-	best = *best_p;
-	if (!best || (best->base > new->base)) {
-		best = new;
-	}
-	*best_p = best;
-}
-
-static u32 find_pci_tolm(struct bus *bus)
-{
-	print_debug("Entering find_pci_tolm\n");
-	struct resource *min;
-	u32 tolm;
-	min = 0;
-	search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM,
-			     tolm_test, &min);
-	tolm = 0xffffffffUL;
-	if (min && tolm > min->base) {
-		tolm = min->base;
-	}
-	print_debug("Leaving find_pci_tolm\n");
-	return tolm;
-}
-
 static void pci_domain_set_resources(device_t dev)
 {
 	/*
Index: src/northbridge/via/cn700/northbridge.c
===================================================================
--- src/northbridge/via/cn700/northbridge.c	(Revision 5936)
+++ src/northbridge/via/cn700/northbridge.c	(Arbeitskopie)
@@ -97,51 +97,6 @@ 
 	.device = PCI_DEVICE_ID_VIA_CN700_MEMCTRL,
 };
 
-static void ram_resource(device_t dev, unsigned long index,
-			 unsigned long basek, unsigned long sizek)
-{
-	struct resource *resource;
-
-	if (!sizek)
-		return;
-
-	resource = new_resource(dev, index);
-	resource->base = ((resource_t) basek) << 10;
-	resource->size = ((resource_t) sizek) << 10;
-	resource->flags = IORESOURCE_MEM | IORESOURCE_CACHEABLE |
-	    IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
-}
-
-static void tolm_test(void *gp, struct device *dev, struct resource *new)
-{
-	struct resource **best_p = gp;
-	struct resource *best;
-
-	best = *best_p;
-	if (!best || (best->base > new->base))
-		best = new;
-	*best_p = best;
-}
-
-static u32 find_pci_tolm(struct bus *bus)
-{
-	struct resource *min;
-	u32 tolm;
-
-	print_debug("Entering find_pci_tolm\n");
-
-	min = 0;
-	search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM,
-			     tolm_test, &min);
-	tolm = 0xffffffffUL;
-	if (min && tolm > min->base)
-		tolm = min->base;
-
-	print_debug("Leaving find_pci_tolm\n");
-
-	return tolm;
-}
-
 #if CONFIG_WRITE_HIGH_TABLES==1
 /* maximum size of high tables in KB */
 #define HIGH_TABLES_SIZE 64
Index: src/northbridge/via/vt8601/northbridge.c
===================================================================
--- src/northbridge/via/vt8601/northbridge.c	(Revision 5936)
+++ src/northbridge/via/vt8601/northbridge.c	(Arbeitskopie)
@@ -45,45 +45,6 @@ 
 	.device = 0x0601, /* 0x8601 is the AGP bridge? */
 };
 
-static void ram_resource(device_t dev, unsigned long index,
-        unsigned long basek, unsigned long sizek)
-{
-        struct resource *resource;
-
-        if (!sizek) {
-                return;
-        }
-        resource = new_resource(dev, index);
-        resource->base  = ((resource_t)basek) << 10;
-        resource->size  = ((resource_t)sizek) << 10;
-        resource->flags =  IORESOURCE_MEM | IORESOURCE_CACHEABLE | \
-                IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
-}
-
-static void tolm_test(void *gp, struct device *dev, struct resource *new)
-{
-	struct resource **best_p = gp;
-	struct resource *best;
-	best = *best_p;
-	if (!best || (best->base > new->base)) {
-		best = new;
-	}
-	*best_p = best;
-}
-
-static uint32_t find_pci_tolm(struct bus *bus)
-{
-	struct resource *min;
-	uint32_t tolm;
-	min = 0;
-	search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM, tolm_test, &min);
-	tolm = 0xffffffffUL;
-	if (min && tolm > min->base) {
-		tolm = min->base;
-	}
-	return tolm;
-}
-
 #if CONFIG_WRITE_HIGH_TABLES==1
 /* maximum size of high tables in KB */
 #define HIGH_TABLES_SIZE 64
Index: src/northbridge/via/vt8623/northbridge.c
===================================================================
--- src/northbridge/via/vt8623/northbridge.c	(Revision 5936)
+++ src/northbridge/via/vt8623/northbridge.c	(Arbeitskopie)
@@ -105,45 +105,6 @@ 
 	.device = PCI_DEVICE_ID_VIA_8633_1,
 };
 
-static void ram_resource(device_t dev, unsigned long index,
-        unsigned long basek, unsigned long sizek)
-{
-        struct resource *resource;
-
-        if (!sizek) {
-                return;
-        }
-        resource = new_resource(dev, index);
-        resource->base  = ((resource_t)basek) << 10;
-        resource->size  = ((resource_t)sizek) << 10;
-        resource->flags =  IORESOURCE_MEM | IORESOURCE_CACHEABLE | \
-                IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
-}
-
-static void tolm_test(void *gp, struct device *dev, struct resource *new)
-{
-	struct resource **best_p = gp;
-	struct resource *best;
-	best = *best_p;
-	if (!best || (best->base > new->base)) {
-		best = new;
-	}
-	*best_p = best;
-}
-
-static uint32_t find_pci_tolm(struct bus *bus)
-{
-	struct resource *min;
-	uint32_t tolm;
-	min = 0;
-	search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM, tolm_test, &min);
-	tolm = 0xffffffffUL;
-	if (min && tolm > min->base) {
-		tolm = min->base;
-	}
-	return tolm;
-}
-
 #if CONFIG_WRITE_HIGH_TABLES==1
 /* maximum size of high tables in KB */
 #define HIGH_TABLES_SIZE 64
Index: src/northbridge/amd/gx1/northbridge.c
===================================================================
--- src/northbridge/amd/gx1/northbridge.c	(Revision 5936)
+++ src/northbridge/amd/gx1/northbridge.c	(Arbeitskopie)
@@ -66,45 +66,6 @@ 
 	.device = PCI_DEVICE_ID_CYRIX_PCI_MASTER,
 };
 
-static void ram_resource(device_t dev, unsigned long index,
-        unsigned long basek, unsigned long sizek)
-{
-        struct resource *resource;
-
-        if (!sizek) {
-                return;
-        }
-        resource = new_resource(dev, index);
-        resource->base  = ((resource_t)basek) << 10;
-        resource->size  = ((resource_t)sizek) << 10;
-        resource->flags =  IORESOURCE_MEM | IORESOURCE_CACHEABLE | \
-                IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
-}
-
-static void tolm_test(void *gp, struct device *dev, struct resource *new)
-{
-	struct resource **best_p = gp;
-	struct resource *best;
-	best = *best_p;
-	if (!best || (best->base > new->base)) {
-		best = new;
-	}
-	*best_p = best;
-}
-
-static uint32_t find_pci_tolm(struct bus *bus)
-{
-	struct resource *min;
-	uint32_t tolm;
-	min = 0;
-	search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM, tolm_test, &min);
-	tolm = 0xffffffffUL;
-	if (min && tolm > min->base) {
-		tolm = min->base;
-	}
-	return tolm;
-}
-
 #if CONFIG_WRITE_HIGH_TABLES==1
 #define HIGH_TABLES_SIZE 64	// maximum size of high tables in KB
 extern uint64_t high_tables_base, high_tables_size;
Index: src/northbridge/amd/gx2/northbridge.c
===================================================================
--- src/northbridge/amd/gx2/northbridge.c	(Revision 5936)
+++ src/northbridge/amd/gx2/northbridge.c	(Arbeitskopie)
@@ -350,47 +350,6 @@ 
 	.device = PCI_DEVICE_ID_NS_GX2,
 };
 
-static void ram_resource(device_t dev, unsigned long index,
-        unsigned long basek, unsigned long sizek)
-{
-        struct resource *resource;
-
-        if (!sizek) {
-                return;
-        }
-        resource = new_resource(dev, index);
-        resource->base  = ((resource_t)basek) << 10;
-        resource->size  = ((resource_t)sizek) << 10;
-        resource->flags =  IORESOURCE_MEM | IORESOURCE_CACHEABLE | \
-                IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
-}
-
-#if 0
-static void tolm_test(void *gp, struct device *dev, struct resource *new)
-{
-	struct resource **best_p = gp;
-	struct resource *best;
-	best = *best_p;
-	if (!best || (best->base > new->base)) {
-		best = new;
-	}
-	*best_p = best;
-}
-
-static u32 find_pci_tolm(struct bus *bus)
-{
-	struct resource *min;
-	u32 tolm;
-	min = 0;
-	search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM, tolm_test, &min);
-	tolm = 0xffffffffUL;
-	if (min && tolm > min->base) {
-		tolm = min->base;
-	}
-	return tolm;
-}
-#endif
-
 // FIXME handle UMA correctly.
 #define FRAMEBUFFERK 4096
 
Index: src/northbridge/amd/lx/northbridge.c
===================================================================
--- src/northbridge/amd/lx/northbridge.c	(Revision 5936)
+++ src/northbridge/amd/lx/northbridge.c	(Arbeitskopie)
@@ -372,21 +372,6 @@ 
 	.device = PCI_DEVICE_ID_AMD_LXBRIDGE,
 };
 
-static void ram_resource(device_t dev, unsigned long index,
-			 unsigned long basek, unsigned long sizek)
-{
-	struct resource *resource;
-
-	if (!sizek)
-		return;
-
-	resource = new_resource(dev, index);
-	resource->base = ((resource_t) basek) << 10;
-	resource->size = ((resource_t) sizek) << 10;
-	resource->flags = IORESOURCE_MEM | IORESOURCE_CACHEABLE |
-	    IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
-}
-
 #if CONFIG_WRITE_HIGH_TABLES==1
 #define HIGH_TABLES_SIZE 64	// maximum size of high tables in KB
 extern uint64_t high_tables_base, high_tables_size;
Index: src/northbridge/amd/amdk8/northbridge.c
===================================================================
--- src/northbridge/amd/amdk8/northbridge.c	(Revision 5936)
+++ src/northbridge/amd/amdk8/northbridge.c	(Arbeitskopie)
@@ -646,23 +646,8 @@ 
 #endif
 }
 
-static void ram_resource(device_t dev, unsigned long index,
-	unsigned long basek, unsigned long sizek)
+static void my_tolm_test(void *gp, struct device *dev, struct resource *new)
 {
-	struct resource *resource;
-
-	if (!sizek) {
-		return;
-	}
-	resource = new_resource(dev, index);
-	resource->base = ((resource_t)basek) << 10;
-	resource->size = ((resource_t)sizek) << 10;
-	resource->flags =  IORESOURCE_MEM | IORESOURCE_CACHEABLE | \
-		IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
-}
-
-static void tolm_test(void *gp, struct device *dev, struct resource *new)
-{
 	struct resource **best_p = gp;
 	struct resource *best;
 	best = *best_p;
@@ -673,12 +658,12 @@ 
 	*best_p = best;
 }
 
-static u32 find_pci_tolm(struct bus *bus)
+static u32 my_find_pci_tolm(struct bus *bus)
 {
 	struct resource *min;
 	u32 tolm;
 	min = 0;
-	search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM, tolm_test, &min);
+	search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM, my_tolm_test, &min);
 	tolm = 0xffffffffUL;
 	if (min && tolm > min->base) {
 		tolm = min->base;
@@ -915,7 +900,7 @@ 
 	}
 #endif
 
-	pci_tolm = find_pci_tolm(dev->link_list);
+	pci_tolm = my_find_pci_tolm(dev->link_list);
 
 	// FIXME handle interleaved nodes. If you fix this here, please fix
 	// amdfam10, too.
Index: src/northbridge/amd/amdfam10/northbridge.c
===================================================================
--- src/northbridge/amd/amdfam10/northbridge.c	(Revision 5936)
+++ src/northbridge/amd/amdfam10/northbridge.c	(Arbeitskopie)
@@ -689,34 +689,8 @@ 
 #endif
 }
 
-static void ram_resource(device_t dev, unsigned long index,
-	resource_t basek, resource_t sizek)
+static u32 my_find_pci_tolm(struct bus *bus, u32 tolm)
 {
-	struct resource *resource;
-
-	if (!sizek) {
-		return;
-	}
-	resource = new_resource(dev, index);
-	resource->base = basek << 10;
-	resource->size = sizek << 10;
-	resource->flags =  IORESOURCE_MEM | IORESOURCE_CACHEABLE | \
-		IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
-}
-
-static void tolm_test(void *gp, struct device *dev, struct resource *new)
-{
-	struct resource **best_p = gp;
-	struct resource *best;
-	best = *best_p;
-	if (!best || (best->base > new->base)) {
-		best = new;
-	}
-	*best_p = best;
-}
-
-static u32 find_pci_tolm(struct bus *bus, u32 tolm)
-{
 	struct resource *min;
 	min = 0;
 	search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM, tolm_test, &min);
@@ -951,7 +925,7 @@ 
 
 	pci_tolm = 0xffffffffUL;
 	for(link = dev->link_list; link; link = link->next) {
-		pci_tolm = find_pci_tolm(link, pci_tolm);
+		pci_tolm = my_find_pci_tolm(link, pci_tolm);
 	}
 
 	// FIXME handle interleaved nodes. If you fix this here, please fix
Index: src/northbridge/intel/e7501/northbridge.c
===================================================================
--- src/northbridge/intel/e7501/northbridge.c	(Revision 5936)
+++ src/northbridge/intel/e7501/northbridge.c	(Arbeitskopie)
@@ -9,45 +9,6 @@ 
 #include <bitops.h>
 #include "chip.h"
 
-static void ram_resource(device_t dev, unsigned long index,
-        unsigned long basek, unsigned long sizek)
-{
-        struct resource *resource;
-
-        if (!sizek) {
-                return;
-        }
-        resource = new_resource(dev, index);
-        resource->base  = ((resource_t)basek) << 10;
-        resource->size  = ((resource_t)sizek) << 10;
-        resource->flags =  IORESOURCE_MEM | IORESOURCE_CACHEABLE | \
-                IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
-}
-
-static void tolm_test(void *gp, struct device *dev, struct resource *new)
-{
-	struct resource **best_p = gp;
-	struct resource *best;
-	best = *best_p;
-	if (!best || (best->base > new->base)) {
-		best = new;
-	}
-	*best_p = best;
-}
-
-static uint32_t find_pci_tolm(struct bus *bus)
-{
-	struct resource *min;
-	uint32_t tolm;
-	min = 0;
-	search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM, tolm_test, &min);
-	tolm = 0xffffffffUL;
-	if (min && tolm > min->base) {
-		tolm = min->base;
-	}
-	return tolm;
-}
-
 #if CONFIG_WRITE_HIGH_TABLES==1
 #define HIGH_TABLES_SIZE 64	// maximum size of high tables in KB
 extern uint64_t high_tables_base, high_tables_size;
Index: src/northbridge/intel/e7520/northbridge.c
===================================================================
--- src/northbridge/intel/e7520/northbridge.c	(Revision 5936)
+++ src/northbridge/intel/e7520/northbridge.c	(Arbeitskopie)
@@ -16,42 +16,6 @@ 
 
 static unsigned int max_bus;
 
-static void ram_resource(device_t dev, unsigned long index,
-	unsigned long basek, unsigned long sizek)
-{
-	struct resource *resource;
-
-	resource = new_resource(dev, index);
-	resource->base  = ((resource_t)basek) << 10;
-	resource->size  = ((resource_t)sizek) << 10;
-	resource->flags =  IORESOURCE_MEM | IORESOURCE_CACHEABLE | \
-		IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
-}
-
-static void tolm_test(void *gp, struct device *dev, struct resource *new)
-{
-	struct resource **best_p = gp;
-	struct resource *best;
-	best = *best_p;
-	if (!best || (best->base > new->base)) {
-		best = new;
-	}
-	*best_p = best;
-}
-
-static uint32_t find_pci_tolm(struct bus *bus)
-{
-	struct resource *min;
-	uint32_t tolm;
-	min = 0;
-	search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM, tolm_test, &min);
-	tolm = 0xffffffffUL;
-	if (min && tolm > min->base) {
-		tolm = min->base;
-	}
-	return tolm;
-}
-
 #if CONFIG_WRITE_HIGH_TABLES==1
 #define HIGH_TABLES_SIZE 64	// maximum size of high tables in KB
 extern uint64_t high_tables_base, high_tables_size;
Index: src/northbridge/intel/i440lx/northbridge.c
===================================================================
--- src/northbridge/intel/i440lx/northbridge.c	(Revision 5936)
+++ src/northbridge/intel/i440lx/northbridge.c	(Arbeitskopie)
@@ -18,6 +18,7 @@ 
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
+
 #include <console/console.h>
 #include <arch/io.h>
 #include <stdint.h>
@@ -61,45 +62,6 @@ 
 	.device = 0x7180,
 };
 
-static void ram_resource(device_t dev, unsigned long index,
-	unsigned long basek, unsigned long sizek)
-{
-	struct resource *resource;
-
-	if (!sizek) {
-		return;
-	}
-	resource = new_resource(dev, index);
-	resource->base	= ((resource_t)basek) << 10;
-	resource->size	= ((resource_t)sizek) << 10;
-	resource->flags =  IORESOURCE_MEM | IORESOURCE_CACHEABLE | \
-		IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
-}
-
-static void tolm_test(void *gp, struct device *dev, struct resource *new)
-{
-	struct resource **best_p = gp;
-	struct resource *best;
-	best = *best_p;
-	if (!best || (best->base > new->base)) {
-		best = new;
-	}
-	*best_p = best;
-}
-
-static uint32_t find_pci_tolm(struct bus *bus)
-{
-	struct resource *min;
-	uint32_t tolm;
-	min = 0;
-	search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM, tolm_test, &min);
-	tolm = 0xffffffffUL;
-	if (min && tolm > min->base) {
-		tolm = min->base;
-	}
-	return tolm;
-}
-
 #if CONFIG_WRITE_HIGH_TABLES==1
 #define HIGH_TABLES_SIZE 64	// maximum size of high tables in KB
 extern uint64_t high_tables_base, high_tables_size;
Index: src/northbridge/intel/e7525/northbridge.c
===================================================================
--- src/northbridge/intel/e7525/northbridge.c	(Revision 5936)
+++ src/northbridge/intel/e7525/northbridge.c	(Arbeitskopie)
@@ -16,42 +16,6 @@ 
 
 static unsigned int max_bus;
 
-static void ram_resource(device_t dev, unsigned long index,
-	unsigned long basek, unsigned long sizek)
-{
-	struct resource *resource;
-
-	resource = new_resource(dev, index);
-	resource->base  = ((resource_t)basek) << 10;
-	resource->size  = ((resource_t)sizek) << 10;
-	resource->flags =  IORESOURCE_MEM | IORESOURCE_CACHEABLE | \
-		IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
-}
-
-static void tolm_test(void *gp, struct device *dev, struct resource *new)
-{
-	struct resource **best_p = gp;
-	struct resource *best;
-	best = *best_p;
-	if (!best || (best->base > new->base)) {
-		best = new;
-	}
-	*best_p = best;
-}
-
-static uint32_t find_pci_tolm(struct bus *bus)
-{
-	struct resource *min;
-	uint32_t tolm;
-	min = 0;
-	search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM, tolm_test, &min);
-	tolm = 0xffffffffUL;
-	if (min && tolm > min->base) {
-		tolm = min->base;
-	}
-	return tolm;
-}
-
 #if CONFIG_WRITE_HIGH_TABLES==1
 #define HIGH_TABLES_SIZE 64	// maximum size of high tables in KB
 extern uint64_t high_tables_base, high_tables_size;
Index: src/northbridge/intel/i440bx/northbridge.c
===================================================================
--- src/northbridge/intel/i440bx/northbridge.c	(Revision 5936)
+++ src/northbridge/intel/i440bx/northbridge.c	(Arbeitskopie)
@@ -33,45 +33,6 @@ 
 	.device = 0x7190,
 };
 
-static void ram_resource(device_t dev, unsigned long index,
-	unsigned long basek, unsigned long sizek)
-{
-	struct resource *resource;
-
-	if (!sizek) {
-		return;
-	}
-	resource = new_resource(dev, index);
-	resource->base	= ((resource_t)basek) << 10;
-	resource->size	= ((resource_t)sizek) << 10;
-	resource->flags =  IORESOURCE_MEM | IORESOURCE_CACHEABLE | \
-		IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
-}
-
-static void tolm_test(void *gp, struct device *dev, struct resource *new)
-{
-	struct resource **best_p = gp;
-	struct resource *best;
-	best = *best_p;
-	if (!best || (best->base > new->base)) {
-		best = new;
-	}
-	*best_p = best;
-}
-
-static uint32_t find_pci_tolm(struct bus *bus)
-{
-	struct resource *min;
-	uint32_t tolm;
-	min = 0;
-	search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM, tolm_test, &min);
-	tolm = 0xffffffffUL;
-	if (min && tolm > min->base) {
-		tolm = min->base;
-	}
-	return tolm;
-}
-
 #if CONFIG_WRITE_HIGH_TABLES==1
 #define HIGH_TABLES_SIZE 64	// maximum size of high tables in KB
 extern uint64_t high_tables_base, high_tables_size;
Index: src/northbridge/intel/i855/northbridge.c
===================================================================
--- src/northbridge/intel/i855/northbridge.c	(Revision 5936)
+++ src/northbridge/intel/i855/northbridge.c	(Arbeitskopie)
@@ -53,45 +53,6 @@ 
         .device = 0x3580,
 };
 
-static void ram_resource(device_t dev, unsigned long index,
-        unsigned long basek, unsigned long sizek)
-{
-        struct resource *resource;
-
-        if (!sizek) {
-                return;
-        }
-        resource = new_resource(dev, index);
-        resource->base  = ((resource_t)basek) << 10;
-        resource->size  = ((resource_t)sizek) << 10;
-        resource->flags =  IORESOURCE_MEM | IORESOURCE_CACHEABLE | \
-                IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
-}
-
-static void tolm_test(void *gp, struct device *dev, struct resource *new)
-{
-	struct resource **best_p = gp;
-	struct resource *best;
-	best = *best_p;
-	if (!best || (best->base > new->base)) {
-		best = new;
-	}
-	*best_p = best;
-}
-
-static uint32_t find_pci_tolm(struct bus *bus)
-{
-	struct resource *min;
-	uint32_t tolm;
-	min = 0;
-	search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM, tolm_test, &min);
-	tolm = 0xffffffffUL;
-	if (min && tolm > min->base) {
-		tolm = min->base;
-	}
-	return tolm;
-}
-
 #if CONFIG_WRITE_HIGH_TABLES==1
 #define HIGH_TABLES_SIZE 64	// maximum size of high tables in KB
 extern uint64_t high_tables_base, high_tables_size;
Index: src/northbridge/intel/i945/northbridge.c
===================================================================
--- src/northbridge/intel/i945/northbridge.c	(Revision 5936)
+++ src/northbridge/intel/i945/northbridge.c	(Arbeitskopie)
@@ -92,43 +92,6 @@ 
 	}
 }
 
-static void ram_resource(device_t dev, unsigned long index, unsigned long basek,
-			 unsigned long sizek)
-{
-	struct resource *resource;
-
-	resource = new_resource(dev, index);
-	resource->base = ((resource_t) basek) << 10;
-	resource->size = ((resource_t) sizek) << 10;
-	resource->flags = IORESOURCE_MEM | IORESOURCE_CACHEABLE |
-	    IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
-}
-
-static void tolm_test(void *gp, struct device *dev, struct resource *new)
-{
-	struct resource **best_p = gp;
-	struct resource *best;
-	best = *best_p;
-	if (!best || (best->base > new->base)) {
-		best = new;
-	}
-	*best_p = best;
-}
-
-static uint32_t find_pci_tolm(struct bus *bus)
-{
-	struct resource *min;
-	uint32_t tolm;
-	min = 0;
-	search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM, tolm_test,
-			     &min);
-	tolm = 0xffffffffUL;
-	if (min && tolm > min->base) {
-		tolm = min->base;
-	}
-	return tolm;
-}
-
 #if CONFIG_WRITE_HIGH_TABLES==1
 #define HIGH_TABLES_SIZE 1024	// maximum size of high tables in KB
 extern uint64_t high_tables_base, high_tables_size;
Index: src/northbridge/intel/i82810/northbridge.c
===================================================================
--- src/northbridge/intel/i82810/northbridge.c	(Revision 5936)
+++ src/northbridge/intel/i82810/northbridge.c	(Arbeitskopie)
@@ -62,46 +62,6 @@ 
 	.device = 0x7124,
 };
 
-static void ram_resource(device_t dev, unsigned long index,
-			 unsigned long basek, unsigned long sizek)
-{
-	struct resource *resource;
-
-	if (!sizek) {
-		return;
-	}
-	resource = new_resource(dev, index);
-	resource->base = ((resource_t) basek) << 10;
-	resource->size = ((resource_t) sizek) << 10;
-	resource->flags = IORESOURCE_MEM | IORESOURCE_CACHEABLE |
-	    IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
-}
-
-static void tolm_test(void *gp, struct device *dev, struct resource *new)
-{
-	struct resource **best_p = gp;
-	struct resource *best;
-	best = *best_p;
-	if (!best || (best->base > new->base)) {
-		best = new;
-	}
-	*best_p = best;
-}
-
-static uint32_t find_pci_tolm(struct bus *bus)
-{
-	struct resource *min;
-	uint32_t tolm;
-	min = 0;
-	search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM, tolm_test,
-			     &min);
-	tolm = 0xffffffffUL;
-	if (min && tolm > min->base) {
-		tolm = min->base;
-	}
-	return tolm;
-}
-
 /* IGD UMA memory */
 uint64_t uma_memory_base=0, uma_memory_size=0;
 
Index: src/northbridge/intel/i3100/northbridge.c
===================================================================
--- src/northbridge/intel/i3100/northbridge.c	(Revision 5936)
+++ src/northbridge/intel/i3100/northbridge.c	(Arbeitskopie)
@@ -37,42 +37,6 @@ 
 
 static u32 max_bus;
 
-static void ram_resource(device_t dev, u32 index,
-	u32 basek, u32 sizek)
-{
-	struct resource *resource;
-
-	resource = new_resource(dev, index);
-	resource->base  = ((resource_t)basek) << 10;
-	resource->size  = ((resource_t)sizek) << 10;
-	resource->flags =  IORESOURCE_MEM | IORESOURCE_CACHEABLE | \
-		IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
-}
-
-static void tolm_test(void *gp, struct device *dev, struct resource *new)
-{
-	struct resource **best_p = gp;
-	struct resource *best;
-	best = *best_p;
-	if (!best || (best->base > new->base)) {
-		best = new;
-	}
-	*best_p = best;
-}
-
-static u32 find_pci_tolm(struct bus *bus)
-{
-	struct resource *min;
-	u32 tolm;
-	min = 0;
-	search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM, tolm_test, &min);
-	tolm = 0xffffffffUL;
-	if (min && tolm > min->base) {
-		tolm = min->base;
-	}
-	return tolm;
-}
-
 #if CONFIG_WRITE_HIGH_TABLES==1
 #define HIGH_TABLES_SIZE 64	// maximum size of high tables in KB
 extern uint64_t high_tables_base, high_tables_size;
Index: src/northbridge/intel/i82830/northbridge.c
===================================================================
--- src/northbridge/intel/i82830/northbridge.c	(Revision 5936)
+++ src/northbridge/intel/i82830/northbridge.c	(Arbeitskopie)
@@ -52,43 +52,6 @@ 
 	.device = 0x3575,
 };
 
-static void ram_resource(device_t dev, unsigned long index,
-			 unsigned long basek, unsigned long sizek)
-{
-	struct resource *resource;
-
-	if (!sizek)
-		return;
-	resource = new_resource(dev, index);
-	resource->base = ((resource_t) basek) << 10;
-	resource->size = ((resource_t) sizek) << 10;
-	resource->flags = IORESOURCE_MEM | IORESOURCE_CACHEABLE |
-	    IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED;
-}
-
-static void tolm_test(void *gp, struct device *dev, struct resource *new)
-{
-	struct resource **best_p = gp;
-	struct resource *best;
-	best = *best_p;
-	if (!best || (best->base > new->base))
-		best = new;
-	*best_p = best;
-}
-
-static uint32_t find_pci_tolm(struct bus *bus)
-{
-	struct resource *min;
-	uint32_t tolm;
-	min = 0;
-	search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM, tolm_test,
-			     &min);
-	tolm = 0xffffffffUL;
-	if (min && tolm > min->base)
-		tolm = min->base;
-	return tolm;
-}
-
 /* IGD memory */
 uint64_t uma_memory_base=0, uma_memory_size=0;