From 7a02aa4cbfe4c63bb9435cf9cab487bd1df10185 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Sun, 26 Aug 2012 21:22:15 +0100 Subject: 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 Signed-off-by: Daniel Vetter --- lib/intel_mmio.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'lib/intel_mmio.c') diff --git a/lib/intel_mmio.c b/lib/intel_mmio.c index b266847e..ecb049b7 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", -- cgit v1.2.3