Displaying 20 results from an estimated 26 matches for "nv50_wndw_prepare_fb".
2020 Feb 10
2
[PATCH] drm/nouveau: Fix NULL ptr access in nv50_wndw_prepare_fb()
This fixes a kernel oops when loading the nouveau
module with fb console enabled after the change:
drm/nouveau: Remove field nvbo from struct nouveau_framebuffer
state->fb may be NULL in nv50_wndw_prepare_fb(),
so defer initializing nvbo from its obj[] array
until after the NULL check.
Signed-off-by: James Jones <jajones at nvidia.com>
---
drivers/gpu/drm/nouveau/dispnv50/wndw.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/nouveau/dispnv50/wndw.c b/drive...
2020 Feb 11
0
[PATCH] drm/nouveau: Fix NULL ptr access in nv50_wndw_prepare_fb()
...suse.de>
Thanks for the fix.
Am 11.02.20 um 00:09 schrieb James Jones:
> This fixes a kernel oops when loading the nouveau
> module with fb console enabled after the change:
>
> drm/nouveau: Remove field nvbo from struct nouveau_framebuffer
>
> state->fb may be NULL in nv50_wndw_prepare_fb(),
> so defer initializing nvbo from its obj[] array
> until after the NULL check.
>
> Signed-off-by: James Jones <jajones at nvidia.com>
> ---
> drivers/gpu/drm/nouveau/dispnv50/wndw.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/dr...
2024 Sep 06
3
[PATCH v2 0/3] drm/nouveau: Add drm_panic support for nv50+
This series adds basic drm_panic support for nouveau.
Patches 1-2 Add missing bits in drm_panic (ABGR2101010, private data for set_pixel())
Patch 3 registers nouveau to drm_panic, and handle tiling.
I've tested on a GTX1650, while running Gnome/Wayland desktop.
It should work on other nv50+ cards, but I didn't test them.
To test it, you need to build your kernel with CONFIG_DRM_PANIC=y,
2024 Sep 13
3
[PATCH v3 0/2] drm/nouveau: Add drm_panic support for nv50+
This series adds basic drm_panic support for nouveau.
Patches 1 Add ABGR2101010 support in drm_panic.
Patch 2 registers nouveau to drm_panic, and handle tiling.
I've tested on a GTX1650 (Turing) and GF 8800 GT (Tesla), while
running Gnome/Wayland desktop, and in VT.
It should work on other nv50+ cards, but I didn't test them.
To test it, you need to build your kernel with
2020 Feb 06
5
[PATCH 4/4] drm/nouveau: Remove struct nouveau_framebuffer
...asyw->image.pitch[0] = fb->base.pitches[0];
> + asyw->image.pitch[0] = fb->pitches[0];
> }
>
> if (!asyh->state.async_flip)
> @@ -486,16 +486,16 @@ nv50_wndw_cleanup_fb(struct drm_plane *plane, struct drm_plane_state *old_state)
> static int
> nv50_wndw_prepare_fb(struct drm_plane *plane, struct drm_plane_state *state)
> {
> - struct nouveau_framebuffer *fb = nouveau_framebuffer(state->fb);
> + struct drm_framebuffer *fb = state->fb;
> struct nouveau_drm *drm = nouveau_drm(plane->dev);
> struct nv50_wndw *wndw = nv50_wndw(plan...
2019 Jun 28
0
[PATCH v3 15/18] drm/nouveau: switch driver from bo->resv to bo->base.resv
...-
4 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/nouveau/dispnv50/wndw.c b/drivers/gpu/drm/nouveau/dispnv50/wndw.c
index 283ff690350e..89f8e76a2d7d 100644
--- a/drivers/gpu/drm/nouveau/dispnv50/wndw.c
+++ b/drivers/gpu/drm/nouveau/dispnv50/wndw.c
@@ -457,7 +457,7 @@ nv50_wndw_prepare_fb(struct drm_plane *plane, struct drm_plane_state *state)
asyw->image.handle[0] = ctxdma->object.handle;
}
- asyw->state.fence = reservation_object_get_excl_rcu(fb->nvbo->bo.resv);
+ asyw->state.fence = reservation_object_get_excl_rcu(fb->nvbo->bo.base.resv);
asyw->...
2019 Aug 02
0
[PATCH v4 14/17] drm/nouveau: switch driver from bo->resv to bo->base.resv
...-
4 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/nouveau/dispnv50/wndw.c b/drivers/gpu/drm/nouveau/dispnv50/wndw.c
index 283ff690350e..89f8e76a2d7d 100644
--- a/drivers/gpu/drm/nouveau/dispnv50/wndw.c
+++ b/drivers/gpu/drm/nouveau/dispnv50/wndw.c
@@ -457,7 +457,7 @@ nv50_wndw_prepare_fb(struct drm_plane *plane, struct drm_plane_state *state)
asyw->image.handle[0] = ctxdma->object.handle;
}
- asyw->state.fence = reservation_object_get_excl_rcu(fb->nvbo->bo.resv);
+ asyw->state.fence = reservation_object_get_excl_rcu(fb->nvbo->bo.base.resv);
asyw->...
2019 Aug 05
0
[PATCH v5 15/18] drm/nouveau: switch driver from bo->resv to bo->base.resv
...-
4 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/nouveau/dispnv50/wndw.c b/drivers/gpu/drm/nouveau/dispnv50/wndw.c
index 283ff690350e..89f8e76a2d7d 100644
--- a/drivers/gpu/drm/nouveau/dispnv50/wndw.c
+++ b/drivers/gpu/drm/nouveau/dispnv50/wndw.c
@@ -457,7 +457,7 @@ nv50_wndw_prepare_fb(struct drm_plane *plane, struct drm_plane_state *state)
asyw->image.handle[0] = ctxdma->object.handle;
}
- asyw->state.fence = reservation_object_get_excl_rcu(fb->nvbo->bo.resv);
+ asyw->state.fence = reservation_object_get_excl_rcu(fb->nvbo->bo.base.resv);
asyw->...
2019 Aug 05
0
[PATCH v6 14/17] drm/nouveau: switch driver from bo->resv to bo->base.resv
...-
4 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/nouveau/dispnv50/wndw.c b/drivers/gpu/drm/nouveau/dispnv50/wndw.c
index 283ff690350e..89f8e76a2d7d 100644
--- a/drivers/gpu/drm/nouveau/dispnv50/wndw.c
+++ b/drivers/gpu/drm/nouveau/dispnv50/wndw.c
@@ -457,7 +457,7 @@ nv50_wndw_prepare_fb(struct drm_plane *plane, struct drm_plane_state *state)
asyw->image.handle[0] = ctxdma->object.handle;
}
- asyw->state.fence = reservation_object_get_excl_rcu(fb->nvbo->bo.resv);
+ asyw->state.fence = reservation_object_get_excl_rcu(fb->nvbo->bo.base.resv);
asyw->...
2019 Jun 21
0
[PATCH v2 15/18] drm/nouveau: switch driver from bo->resv to bo->base.resv
...-
5 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/nouveau/dispnv50/wndw.c b/drivers/gpu/drm/nouveau/dispnv50/wndw.c
index 283ff690350e..89f8e76a2d7d 100644
--- a/drivers/gpu/drm/nouveau/dispnv50/wndw.c
+++ b/drivers/gpu/drm/nouveau/dispnv50/wndw.c
@@ -457,7 +457,7 @@ nv50_wndw_prepare_fb(struct drm_plane *plane, struct drm_plane_state *state)
asyw->image.handle[0] = ctxdma->object.handle;
}
- asyw->state.fence = reservation_object_get_excl_rcu(fb->nvbo->bo.resv);
+ asyw->state.fence = reservation_object_get_excl_rcu(fb->nvbo->bo.base.resv);
asyw->...
2020 Feb 06
2
[PATCH 4/4] drm/nouveau: Remove struct nouveau_framebuffer
...syw->image.pitch[0] = fb->pitches[0];
>>> ????????? }
>>> ? ????????? if (!asyh->state.async_flip)
>>> @@ -486,16 +486,16 @@ nv50_wndw_cleanup_fb(struct drm_plane *plane,
>>> struct drm_plane_state *old_state)
>>> ? static int
>>> ? nv50_wndw_prepare_fb(struct drm_plane *plane, struct drm_plane_state
>>> *state)
>>> ? {
>>> -??? struct nouveau_framebuffer *fb = nouveau_framebuffer(state->fb);
>>> +??? struct drm_framebuffer *fb = state->fb;
>>> ????? struct nouveau_drm *drm = nouveau_drm(plane-&...
2020 Feb 06
5
[PATCH 0/4] drm/nouveau: Remove struct nouveau_framebuffer
All fields in struct nouveau_framebuffer appear to be obsolete. The
data structure can be replaced by struct drm_framebuffer entirely.
Patch 1 removes several unused fields from struct nouveau_framebuffer.
Patch 2 moves the field vma to struct nouveau_fbdev. The information
in vma is only relevant for fbdev emulation, and as such he field is
only used there.
Patch 3 removes nvbo from struct
2020 Feb 06
0
[PATCH 3/4] drm/nouveau: Remove field nvbo from struct nouveau_framebuffer
...truct nouveau_bo *nvbo;
NV_ATOMIC(drm, "%s cleanup: %p\n", plane->name, old_state->fb);
if (!old_state->fb)
return;
- nouveau_bo_unpin(fb->nvbo);
+ nvbo = nouveau_gem_object(old_state->fb->obj[0]);
+ nouveau_bo_unpin(nvbo);
}
static int
@@ -486,6 +490,7 @@ nv50_wndw_prepare_fb(struct drm_plane *plane, struct drm_plane_state *state)
struct nouveau_drm *drm = nouveau_drm(plane->dev);
struct nv50_wndw *wndw = nv50_wndw(plane);
struct nv50_wndw_atom *asyw = nv50_wndw_atom(state);
+ struct nouveau_bo *nvbo = nouveau_gem_object(state->fb->obj[0]);
struct nv50_...
2020 Feb 06
2
[PATCH 4/4] drm/nouveau: Remove struct nouveau_framebuffer
...??? asyw->image.pitch[0] = fb->pitches[0];
>>> ????????? }
>>> ????????? if (!asyh->state.async_flip)
>>> @@ -486,16 +486,16 @@ nv50_wndw_cleanup_fb(struct drm_plane *plane,
>>> struct drm_plane_state *old_state)
>>> ? static int
>>> ? nv50_wndw_prepare_fb(struct drm_plane *plane, struct
>>> drm_plane_state *state)
>>> ? {
>>> -??? struct nouveau_framebuffer *fb = nouveau_framebuffer(state->fb);
>>> +??? struct drm_framebuffer *fb = state->fb;
>>> ????? struct nouveau_drm *drm = nouveau_drm(plane-&g...
2020 Feb 10
2
[PATCH 4/4] drm/nouveau: Remove struct nouveau_framebuffer
...gt;>> }
> >>>> if (!asyh->state.async_flip)
> >>>> @@ -486,16 +486,16 @@ nv50_wndw_cleanup_fb(struct drm_plane *plane,
> >>>> struct drm_plane_state *old_state)
> >>>> static int
> >>>> nv50_wndw_prepare_fb(struct drm_plane *plane, struct drm_plane_state
> >>>> *state)
> >>>> {
> >>>> - struct nouveau_framebuffer *fb = nouveau_framebuffer(state->fb);
> >>>> + struct drm_framebuffer *fb = state->fb;
> >>>>...
2020 Feb 10
2
[PATCH 4/4] drm/nouveau: Remove struct nouveau_framebuffer
...gt;>>> if (!asyh->state.async_flip)
>>>>>>> @@ -486,16 +486,16 @@ nv50_wndw_cleanup_fb(struct drm_plane *plane,
>>>>>>> struct drm_plane_state *old_state)
>>>>>>> static int
>>>>>>> nv50_wndw_prepare_fb(struct drm_plane *plane, struct drm_plane_state
>>>>>>> *state)
>>>>>>> {
>>>>>>> - struct nouveau_framebuffer *fb = nouveau_framebuffer(state->fb);
>>>>>>> + struct drm_framebuffer *fb = state->fb;...
2020 Feb 06
0
[PATCH 4/4] drm/nouveau: Remove struct nouveau_framebuffer
...= 0;
asyw->image.blocks[0] = 0;
- asyw->image.pitch[0] = fb->base.pitches[0];
+ asyw->image.pitch[0] = fb->pitches[0];
}
if (!asyh->state.async_flip)
@@ -486,16 +486,16 @@ nv50_wndw_cleanup_fb(struct drm_plane *plane, struct drm_plane_state *old_state)
static int
nv50_wndw_prepare_fb(struct drm_plane *plane, struct drm_plane_state *state)
{
- struct nouveau_framebuffer *fb = nouveau_framebuffer(state->fb);
+ struct drm_framebuffer *fb = state->fb;
struct nouveau_drm *drm = nouveau_drm(plane->dev);
struct nv50_wndw *wndw = nv50_wndw(plane);
struct nv50_wndw_atom...
2020 Feb 06
0
[PATCH 4/4] drm/nouveau: Remove struct nouveau_framebuffer
...s[0];
>> +??????????? asyw->image.pitch[0] = fb->pitches[0];
>> ????????? }
>> ????????? if (!asyh->state.async_flip)
>> @@ -486,16 +486,16 @@ nv50_wndw_cleanup_fb(struct drm_plane *plane,
>> struct drm_plane_state *old_state)
>> ? static int
>> ? nv50_wndw_prepare_fb(struct drm_plane *plane, struct drm_plane_state
>> *state)
>> ? {
>> -??? struct nouveau_framebuffer *fb = nouveau_framebuffer(state->fb);
>> +??? struct drm_framebuffer *fb = state->fb;
>> ????? struct nouveau_drm *drm = nouveau_drm(plane->dev);
>> ???...
2020 Feb 06
0
[PATCH 4/4] drm/nouveau: Remove struct nouveau_framebuffer
...[0];
>> +??????????? asyw->image.pitch[0] = fb->pitches[0];
>> ????????? }
>> ? ????????? if (!asyh->state.async_flip)
>> @@ -486,16 +486,16 @@ nv50_wndw_cleanup_fb(struct drm_plane *plane,
>> struct drm_plane_state *old_state)
>> ? static int
>> ? nv50_wndw_prepare_fb(struct drm_plane *plane, struct drm_plane_state
>> *state)
>> ? {
>> -??? struct nouveau_framebuffer *fb = nouveau_framebuffer(state->fb);
>> +??? struct drm_framebuffer *fb = state->fb;
>> ????? struct nouveau_drm *drm = nouveau_drm(plane->dev);
>> ????...
2020 Feb 07
0
[PATCH 4/4] drm/nouveau: Remove struct nouveau_framebuffer
...fb->pitches[0];
>>>> ?????????? }
>>>> ?? ????????? if (!asyh->state.async_flip)
>>>> @@ -486,16 +486,16 @@ nv50_wndw_cleanup_fb(struct drm_plane *plane,
>>>> struct drm_plane_state *old_state)
>>>> ?? static int
>>>> ?? nv50_wndw_prepare_fb(struct drm_plane *plane, struct drm_plane_state
>>>> *state)
>>>> ?? {
>>>> -??? struct nouveau_framebuffer *fb = nouveau_framebuffer(state->fb);
>>>> +??? struct drm_framebuffer *fb = state->fb;
>>>> ?????? struct nouveau_drm *drm =...