From ecf1ed49c72168c3d5b613a5d5198b5dd22777b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ky=C3=B6sti=20M=C3=A4lkki?= Date: Fri, 27 Jul 2012 08:37:12 +0300 Subject: [PATCH] Allocators for different memory regions types MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hide some details of the resource allocator from rest of the world. These should come in handy when fixing some aspects of MTRR setup. Change-Id: I8acad98f25e56cd8bae64fb52539d81ce94f9c73 Signed-off-by: Kyösti Mälkki Reviewed-on: http://review.coreboot.org/1367 Reviewed-by: Patrick Georgi Tested-by: build bot (Jenkins) Reviewed-by: Anton Kochkov --- src/devices/device_util.c | 23 +++++------------------ src/include/device/device.h | 19 +++++++++++++++---- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/src/devices/device_util.c b/src/devices/device_util.c index 9362525180..6f088b2e84 100644 --- a/src/devices/device_util.c +++ b/src/devices/device_util.c @@ -795,8 +795,8 @@ void show_all_devs_resources(int debug_level, const char* msg) } } -void ram_resource(device_t dev, unsigned long index, - unsigned long basek, unsigned long sizek) +void fixed_mem_resource(device_t dev, unsigned long index, + unsigned long basek, unsigned long sizek, unsigned long type) { struct resource *resource; @@ -806,23 +806,10 @@ void ram_resource(device_t dev, unsigned long index, 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; -} + resource->flags = IORESOURCE_MEM | IORESOURCE_FIXED | + IORESOURCE_STORED | IORESOURCE_ASSIGNED; -void uma_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_RESERVE | IORESOURCE_UMA_FB | - IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED; + resource->flags |= type; } void tolm_test(void *gp, struct device *dev, struct resource *new) diff --git a/src/include/device/device.h b/src/include/device/device.h index 8cc937f94d..1515b45e02 100644 --- a/src/include/device/device.h +++ b/src/include/device/device.h @@ -170,10 +170,21 @@ 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 uma_resource(device_t dev, unsigned long index, - unsigned long basek, unsigned long sizek); +void fixed_mem_resource(device_t dev, unsigned long index, + unsigned long basek, unsigned long sizek, unsigned long type); + +#define ram_resource(dev, idx, basek, sizek) \ + fixed_mem_resource(dev, idx, basek, sizek, IORESOURCE_CACHEABLE) + +#define bad_ram_resource(dev, idx, basek, sizek) \ + fixed_mem_resource(dev, idx, basek, sizek, IORESOURCE_RESERVE | IORESOURCE_CACHEABLE ) + +#define uma_resource(dev, idx, basek, sizek) \ + fixed_mem_resource(dev, idx, basek, sizek, IORESOURCE_RESERVE | IORESOURCE_UMA_FB) + +#define mmio_resource(dev, idx, basek, sizek) \ + fixed_mem_resource(dev, idx, basek, sizek, IORESOURCE_RESERVE) + void tolm_test(void *gp, struct device *dev, struct resource *new); u32 find_pci_tolm(struct bus *bus);