summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2012-08-26 21:22:15 +0100
committerDaniel Vetter <daniel.vetter@ffwll.ch>2012-08-27 09:34:33 +0200
commit7a02aa4cbfe4c63bb9435cf9cab487bd1df10185 (patch)
treef2cfe84de5539d36cfc06acd25eab18921327af6
parenta4783f9485f78c80e7cc1eb041634b4b8a3aa4b9 (diff)
mmio: Limit the uc- mapping to only map the registers
In the future, we may like to enable wc mapping of at least the GATT, and so causing a conflict if we attempt to map the entire bar as uc- here. Obviously we need a better fallback plan, but for the moment only attempt to map the portion of the pci space that we use for register access. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r--lib/intel_mmio.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/lib/intel_mmio.c b/lib/intel_mmio.c
index b266847ed..ecb049b79 100644
--- a/lib/intel_mmio.c
+++ b/lib/intel_mmio.c
@@ -80,8 +80,8 @@ intel_map_file(char *file)
void
intel_get_mmio(struct pci_device *pci_dev)
{
- uint32_t devid;
- int mmio_bar;
+ uint32_t devid, gen;
+ int mmio_bar, mmio_size;
int error;
devid = pci_dev->device_id;
@@ -90,11 +90,19 @@ intel_get_mmio(struct pci_device *pci_dev)
else
mmio_bar = 0;
+ gen = intel_gen(devid);
+ if (gen < 3)
+ mmio_size = 64*1024;
+ else if (gen < 5)
+ mmio_size = 512*1024;
+ else
+ mmio_size = 2*1024*1024;
+
error = pci_device_map_range (pci_dev,
- pci_dev->regions[mmio_bar].base_addr,
- pci_dev->regions[mmio_bar].size,
- PCI_DEV_MAP_FLAG_WRITABLE,
- &mmio);
+ pci_dev->regions[mmio_bar].base_addr,
+ mmio_size,
+ PCI_DEV_MAP_FLAG_WRITABLE,
+ &mmio);
if (error != 0) {
fprintf(stderr, "Couldn't map MMIO region: %s\n",