Commit a629feab authored by Ryosuke Yasuoka's avatar Ryosuke Yasuoka Committed by Jocelyn Falempe
Browse files

drm/bochs: Add support for drm_panic



Add drm_panic module for bochs drm so that panic screen can be displayed
on panic.

Signed-off-by: default avatarRyosuke Yasuoka <ryasuoka@redhat.com>
Reviewed-by: default avatarJocelyn Falempe <jfalempe@redhat.com>
Link: https://lore.kernel.org/r/20250613132023.106946-1-ryasuoka@redhat.com


Signed-off-by: default avatarJocelyn Falempe <jfalempe@redhat.com>
parent 3828a643
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
#include <drm/drm_gem_shmem_helper.h>
#include <drm/drm_managed.h>
#include <drm/drm_module.h>
#include <drm/drm_panic.h>
#include <drm/drm_plane_helper.h>
#include <drm/drm_probe_helper.h>

@@ -469,10 +470,28 @@ static void bochs_primary_plane_helper_atomic_update(struct drm_plane *plane,
	bochs_hw_setformat(bochs, fb->format);
}

static int bochs_primary_plane_helper_get_scanout_buffer(struct drm_plane *plane,
							 struct drm_scanout_buffer *sb)
{
	struct bochs_device *bochs = to_bochs_device(plane->dev);
	struct iosys_map map = IOSYS_MAP_INIT_VADDR_IOMEM(bochs->fb_map);

	if (plane->state && plane->state->fb) {
		sb->format = plane->state->fb->format;
		sb->width = plane->state->fb->width;
		sb->height = plane->state->fb->height;
		sb->pitch[0] = plane->state->fb->pitches[0];
		sb->map[0] = map;
		return 0;
	}
	return -ENODEV;
}

static const struct drm_plane_helper_funcs bochs_primary_plane_helper_funcs = {
	DRM_GEM_SHADOW_PLANE_HELPER_FUNCS,
	.atomic_check = bochs_primary_plane_helper_atomic_check,
	.atomic_update = bochs_primary_plane_helper_atomic_update,
	.get_scanout_buffer = bochs_primary_plane_helper_get_scanout_buffer,
};

static const struct drm_plane_funcs bochs_primary_plane_funcs = {