diff options
author | Dave Airlie <airlied@redhat.com> | 2024-04-19 10:22:22 +1000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2024-04-19 10:22:28 +1000 |
commit | 5493bf2d0f4a1e6dcad9267bc989229d60c93e76 (patch) | |
tree | 57ad98f85a6250010bd50593f6a07fd199da1585 /drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c | |
parent | 58292f516b1d700d4310ec51ea33fb501170da1c (diff) | |
parent | 941c0bdbc176df825adf77052263b2d63db6fef7 (diff) | |
download | linux-stable-5493bf2d0f4a1e6dcad9267bc989229d60c93e76.tar.gz linux-stable-5493bf2d0f4a1e6dcad9267bc989229d60c93e76.tar.bz2 linux-stable-5493bf2d0f4a1e6dcad9267bc989229d60c93e76.zip |
Merge tag 'drm-misc-fixes-2024-04-18' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-fixes
Short summary of fixes pull:
nouveau:
- dp: Don't probe DP ports twice
- nv04: Fix OOB access
- nv50: Disable AUX bus for disconnected DP ports
- nvkm: Fix race condition
panel:
- Don't unregister DSI devices in several drivers
ttm:
- Stop pooling cached NUMA pages
v3d:
- Fix enabled_ns increment
vmwgfx:
- Fix PRIME import/export
- Fix CRTC's atomic check for primary planes
- Sort plane formats by preference
Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/20240418072229.GA8983@localhost.localdomain
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c b/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c index a7f3fc342d87..dd5b5a17ece0 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c @@ -222,8 +222,11 @@ nv50_instobj_acquire(struct nvkm_memory *memory) void __iomem *map = NULL; /* Already mapped? */ - if (refcount_inc_not_zero(&iobj->maps)) + if (refcount_inc_not_zero(&iobj->maps)) { + /* read barrier match the wmb on refcount set */ + smp_rmb(); return iobj->map; + } /* Take the lock, and re-check that another thread hasn't * already mapped the object in the meantime. @@ -250,6 +253,8 @@ nv50_instobj_acquire(struct nvkm_memory *memory) iobj->base.memory.ptrs = &nv50_instobj_fast; else iobj->base.memory.ptrs = &nv50_instobj_slow; + /* barrier to ensure the ptrs are written before refcount is set */ + smp_wmb(); refcount_set(&iobj->maps, 1); } |