diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2012-08-26 21:22:15 +0100 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-08-27 09:34:33 +0200 |
commit | 7a02aa4cbfe4c63bb9435cf9cab487bd1df10185 (patch) | |
tree | f2cfe84de5539d36cfc06acd25eab18921327af6 | |
parent | a4783f9485f78c80e7cc1eb041634b4b8a3aa4b9 (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.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/lib/intel_mmio.c b/lib/intel_mmio.c index b266847..ecb049b 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", |