Commit da091afa authored by Jocelyn Falempe's avatar Jocelyn Falempe Committed by Maarten Lankhorst
Browse files

drm/i915: Add intel_bo_alloc_framebuffer()



Encapsulate the struct intel_framebuffer into an xe_framebuffer
or i915_framebuffer, and allow to add specific fields for each
variant for the panic use-case.
This is particularly needed to have a struct xe_res_cursor available
to support drm panic on discrete GPU.

Signed-off-by: default avatarJocelyn Falempe <jfalempe@redhat.com>
Link: https://lore.kernel.org/r/20250624091501.257661-7-jfalempe@redhat.com


Signed-off-by: default avatarMaarten Lankhorst <dev@lankhorst.se>
parent 718370ff
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
#include "i9xx_plane.h"
#include "i9xx_plane_regs.h"
#include "intel_atomic.h"
#include "intel_bo.h"
#include "intel_de.h"
#include "intel_display_irq.h"
#include "intel_display_regs.h"
@@ -1174,7 +1175,7 @@ i9xx_get_initial_plane_config(struct intel_crtc *crtc,

	drm_WARN_ON(display->drm, pipe != crtc->pipe);

	intel_fb = kzalloc(sizeof(*intel_fb), GFP_KERNEL);
	intel_fb = intel_bo_alloc_framebuffer();
	if (!intel_fb) {
		drm_dbg_kms(display->drm, "failed to alloc fb\n");
		return;
+6 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: MIT
/* Copyright © 2024 Intel Corporation */

#include "display/intel_display_types.h"
#include "gem/i915_gem_mman.h"
#include "gem/i915_gem_object.h"
#include "gem/i915_gem_object_frontbuffer.h"
@@ -57,3 +58,8 @@ void intel_bo_describe(struct seq_file *m, struct drm_gem_object *obj)
{
	i915_debugfs_describe_obj(m, to_intel_bo(obj));
}

struct intel_framebuffer *intel_bo_alloc_framebuffer(void)
{
	return i915_gem_object_alloc_framebuffer();
}
+2 −0
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@
#include <linux/types.h>

struct drm_gem_object;
struct intel_framebuffer;
struct seq_file;
struct vm_area_struct;

@@ -23,5 +24,6 @@ struct intel_frontbuffer *intel_bo_set_frontbuffer(struct drm_gem_object *obj,
						   struct intel_frontbuffer *front);

void intel_bo_describe(struct seq_file *m, struct drm_gem_object *obj);
struct intel_framebuffer *intel_bo_alloc_framebuffer(void);

#endif /* __INTEL_BO__ */
+1 −1
Original line number Diff line number Diff line
@@ -2346,7 +2346,7 @@ intel_framebuffer_create(struct drm_gem_object *obj,
	struct intel_framebuffer *intel_fb;
	int ret;

	intel_fb = kzalloc(sizeof(*intel_fb), GFP_KERNEL);
	intel_fb = intel_bo_alloc_framebuffer();
	if (!intel_fb)
		return ERR_PTR(-ENOMEM);

+1 −1
Original line number Diff line number Diff line
@@ -3029,7 +3029,7 @@ skl_get_initial_plane_config(struct intel_crtc *crtc,
		return;
	}

	intel_fb = kzalloc(sizeof(*intel_fb), GFP_KERNEL);
	intel_fb = intel_bo_alloc_framebuffer();
	if (!intel_fb) {
		drm_dbg_kms(display->drm, "failed to alloc fb\n");
		return;
Loading