Commit 8f8a4dce authored by Dave Airlie's avatar Dave Airlie
Browse files

nouveau: add a third state to the fini handler.



This is just refactoring to allow the lower layers to distinguish
between suspend and runtime suspend.

GSP 570 needs to set a flag with the GPU is going into GCOFF,
this flag taken from the opengpu driver is set whenever runtime
suspend is enterning GCOFF but not for normal suspend paths.

This just refactors the code, a subsequent patch use the information.

Fixes: 53dac062 ("drm/nouveau/gsp: add support for 570.144")
Cc: <stable@vger.kernel.org>
Reviewed-by: default avatarLyude Paul <lyude@redhat.com>
Tested-by: default avatarLyude Paul <lyude@redhat.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
Link: https://patch.msgid.link/20260203052431.2219998-3-airlied@gmail.com
parent 90caca3b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -11,7 +11,7 @@ struct nvif_client {

int  nvif_client_ctor(struct nvif_client *parent, const char *name, struct nvif_client *);
void nvif_client_dtor(struct nvif_client *);
int  nvif_client_suspend(struct nvif_client *);
int  nvif_client_suspend(struct nvif_client *, bool);
int  nvif_client_resume(struct nvif_client *);

/*XXX*/
+1 −1
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@ struct nvif_driver {
	const char *name;
	int (*init)(const char *name, u64 device, const char *cfg,
		    const char *dbg, void **priv);
	int (*suspend)(void *priv);
	int (*suspend)(void *priv, bool runtime);
	int (*resume)(void *priv);
	int (*ioctl)(void *priv, void *data, u32 size, void **hack);
	void __iomem *(*map)(void *priv, u64 handle, u32 size);
+2 −1
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@
#ifndef __NVKM_DEVICE_H__
#define __NVKM_DEVICE_H__
#include <core/oclass.h>
#include <core/suspend_state.h>
#include <core/intr.h>
enum nvkm_subdev_type;

@@ -93,7 +94,7 @@ struct nvkm_device_func {
	void *(*dtor)(struct nvkm_device *);
	int (*preinit)(struct nvkm_device *);
	int (*init)(struct nvkm_device *);
	void (*fini)(struct nvkm_device *, bool suspend);
	void (*fini)(struct nvkm_device *, enum nvkm_suspend_state suspend);
	int (*irq)(struct nvkm_device *);
	resource_size_t (*resource_addr)(struct nvkm_device *, enum nvkm_bar_id);
	resource_size_t (*resource_size)(struct nvkm_device *, enum nvkm_bar_id);
+1 −1
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@ struct nvkm_engine_func {
	int (*oneinit)(struct nvkm_engine *);
	int (*info)(struct nvkm_engine *, u64 mthd, u64 *data);
	int (*init)(struct nvkm_engine *);
	int (*fini)(struct nvkm_engine *, bool suspend);
	int (*fini)(struct nvkm_engine *, enum nvkm_suspend_state suspend);
	int (*reset)(struct nvkm_engine *);
	int (*nonstall)(struct nvkm_engine *);
	void (*intr)(struct nvkm_engine *);
+3 −2
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@
#ifndef __NVKM_OBJECT_H__
#define __NVKM_OBJECT_H__
#include <core/oclass.h>
#include <core/suspend_state.h>
struct nvkm_event;
struct nvkm_gpuobj;
struct nvkm_uevent;
@@ -27,7 +28,7 @@ enum nvkm_object_map {
struct nvkm_object_func {
	void *(*dtor)(struct nvkm_object *);
	int (*init)(struct nvkm_object *);
	int (*fini)(struct nvkm_object *, bool suspend);
	int (*fini)(struct nvkm_object *, enum nvkm_suspend_state suspend);
	int (*mthd)(struct nvkm_object *, u32 mthd, void *data, u32 size);
	int (*ntfy)(struct nvkm_object *, u32 mthd, struct nvkm_event **);
	int (*map)(struct nvkm_object *, void *argv, u32 argc,
@@ -49,7 +50,7 @@ int nvkm_object_new(const struct nvkm_oclass *, void *data, u32 size,
void nvkm_object_del(struct nvkm_object **);
void *nvkm_object_dtor(struct nvkm_object *);
int nvkm_object_init(struct nvkm_object *);
int nvkm_object_fini(struct nvkm_object *, bool suspend);
int nvkm_object_fini(struct nvkm_object *, enum nvkm_suspend_state);
int nvkm_object_mthd(struct nvkm_object *, u32 mthd, void *data, u32 size);
int nvkm_object_ntfy(struct nvkm_object *, u32 mthd, struct nvkm_event **);
int nvkm_object_map(struct nvkm_object *, void *argv, u32 argc,
Loading