mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
drm/nouveau/bar/nv50: ensure BAR is mapped
If the BAR is zero size, it indicates it was never successfully mapped. Ensure that the BAR is valid during initialization before attempting to use it. Signed-off-by: Jon Derrick <jonathan.derrick@intel.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
307a312df9
commit
f10b83de1f
1 changed files with 9 additions and 3 deletions
|
@ -109,7 +109,7 @@ nv50_bar_oneinit(struct nvkm_bar *base)
|
|||
struct nvkm_device *device = bar->base.subdev.device;
|
||||
static struct lock_class_key bar1_lock;
|
||||
static struct lock_class_key bar2_lock;
|
||||
u64 start, limit;
|
||||
u64 start, limit, size;
|
||||
int ret;
|
||||
|
||||
ret = nvkm_gpuobj_new(device, 0x20000, 0, false, NULL, &bar->mem);
|
||||
|
@ -127,7 +127,10 @@ nv50_bar_oneinit(struct nvkm_bar *base)
|
|||
|
||||
/* BAR2 */
|
||||
start = 0x0100000000ULL;
|
||||
limit = start + device->func->resource_size(device, 3);
|
||||
size = device->func->resource_size(device, 3);
|
||||
if (!size)
|
||||
return -ENOMEM;
|
||||
limit = start + size;
|
||||
|
||||
ret = nvkm_vmm_new(device, start, limit-- - start, NULL, 0,
|
||||
&bar2_lock, "bar2", &bar->bar2_vmm);
|
||||
|
@ -164,7 +167,10 @@ nv50_bar_oneinit(struct nvkm_bar *base)
|
|||
|
||||
/* BAR1 */
|
||||
start = 0x0000000000ULL;
|
||||
limit = start + device->func->resource_size(device, 1);
|
||||
size = device->func->resource_size(device, 1);
|
||||
if (!size)
|
||||
return -ENOMEM;
|
||||
limit = start + size;
|
||||
|
||||
ret = nvkm_vmm_new(device, start, limit-- - start, NULL, 0,
|
||||
&bar1_lock, "bar1", &bar->bar1_vmm);
|
||||
|
|
Loading…
Add table
Reference in a new issue