mirror of
https://github.com/torvalds/linux.git
synced 2026-06-08 14:42:37 +02:00
drm/nouveau/bar/nv50: ensure BAR is mapped
[ Upstream commit f10b83de1f ]
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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
07bb9a71ee
commit
5744fd7fa1
|
|
@ -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…
Reference in New Issue
Block a user