mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-22 13:02:38 +02:00
Add nvGpuChannelGetErrorInfo, see details:
- Rename NvError(Type) to NvNotification(Type) - Introduce NvError struct (output of GetErrorInfo) - Add nvioctlChannel_GetErrorInfo
This commit is contained in:
parent
f5e4615a40
commit
a1af4494bf
@ -24,7 +24,8 @@ void nvGpuChannelClose(NvGpuChannel* c);
|
|||||||
Result nvGpuChannelZcullBind(NvGpuChannel* c, iova_t iova);
|
Result nvGpuChannelZcullBind(NvGpuChannel* c, iova_t iova);
|
||||||
Result nvGpuChannelAppendEntry(NvGpuChannel* c, iova_t start, size_t num_cmds, u32 flags, u32 flush_threshold);
|
Result nvGpuChannelAppendEntry(NvGpuChannel* c, iova_t start, size_t num_cmds, u32 flags, u32 flush_threshold);
|
||||||
Result nvGpuChannelKickoff(NvGpuChannel* c);
|
Result nvGpuChannelKickoff(NvGpuChannel* c);
|
||||||
Result nvGpuChannelGetErrorNotification(NvGpuChannel* c, NvError* error);
|
Result nvGpuChannelGetErrorNotification(NvGpuChannel* c, NvNotification* notif);
|
||||||
|
Result nvGpuChannelGetErrorInfo(NvGpuChannel* c, NvError* error);
|
||||||
|
|
||||||
static inline u32 nvGpuChannelGetSyncpointId(NvGpuChannel* c)
|
static inline u32 nvGpuChannelGetSyncpointId(NvGpuChannel* c)
|
||||||
{
|
{
|
||||||
|
@ -181,21 +181,26 @@ typedef enum {
|
|||||||
} NvMapBufferFlags;
|
} NvMapBufferFlags;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
NvErrorType_FifoErrorIdleTimeout=8,
|
NvNotificationType_FifoErrorIdleTimeout=8,
|
||||||
NvErrorType_GrErrorSwNotify=13,
|
NvNotificationType_GrErrorSwNotify=13,
|
||||||
NvErrorType_GrSemaphoreTimeout=24,
|
NvNotificationType_GrSemaphoreTimeout=24,
|
||||||
NvErrorType_GrIllegalNotify=25,
|
NvNotificationType_GrIllegalNotify=25,
|
||||||
NvErrorType_FifoErrorMmuErrFlt=31,
|
NvNotificationType_FifoErrorMmuErrFlt=31,
|
||||||
NvErrorType_PbdmaError=32,
|
NvNotificationType_PbdmaError=32,
|
||||||
NvErrorType_ResetChannelVerifError=43,
|
NvNotificationType_ResetChannelVerifError=43,
|
||||||
NvErrorType_PbdmaPushbufferCrcMismatch=80
|
NvNotificationType_PbdmaPushbufferCrcMismatch=80
|
||||||
} NvErrorType;
|
} NvNotificationType;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
u64 tickstamp;
|
u64 timestamp;
|
||||||
u32 error_type;
|
u32 info32; // see NvNotificationType
|
||||||
u16 unk16;
|
u16 info16;
|
||||||
u16 status; // always -1
|
u16 status; // always -1
|
||||||
|
} NvNotification;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
u32 type;
|
||||||
|
u32 info[31];
|
||||||
} NvError;
|
} NvError;
|
||||||
|
|
||||||
Result nvioctlNvhostCtrl_SyncptRead(u32 fd, u32 id, u32* out);
|
Result nvioctlNvhostCtrl_SyncptRead(u32 fd, u32 id, u32* out);
|
||||||
@ -236,7 +241,8 @@ Result nvioctlChannel_KickoffPb(u32 fd, nvioctl_gpfifo_entry *entries, u32 num_e
|
|||||||
Result nvioctlChannel_AllocObjCtx(u32 fd, u32 class_num, u32 flags, u64* id_out);
|
Result nvioctlChannel_AllocObjCtx(u32 fd, u32 class_num, u32 flags, u64* id_out);
|
||||||
Result nvioctlChannel_ZCullBind(u32 fd, u64 gpu_va, u32 mode);
|
Result nvioctlChannel_ZCullBind(u32 fd, u64 gpu_va, u32 mode);
|
||||||
Result nvioctlChannel_SetErrorNotifier(u32 fd, u32 enable);
|
Result nvioctlChannel_SetErrorNotifier(u32 fd, u32 enable);
|
||||||
Result nvioctlChannel_GetErrorNotification(u32 fd, NvError* out);
|
Result nvioctlChannel_GetErrorInfo(u32 fd, NvError* out);
|
||||||
|
Result nvioctlChannel_GetErrorNotification(u32 fd, NvNotification* out);
|
||||||
Result nvioctlChannel_SetPriority(u32 fd, u32 priority);
|
Result nvioctlChannel_SetPriority(u32 fd, u32 priority);
|
||||||
Result nvioctlChannel_SetTimeout(u32 fd, u32 timeout);
|
Result nvioctlChannel_SetTimeout(u32 fd, u32 timeout);
|
||||||
Result nvioctlChannel_AllocGpfifoEx2(u32 fd, u32 num_entries, u32 flags, u32 unk0, u32 unk1, u32 unk2, u32 unk3, nvioctl_fence *fence_out);
|
Result nvioctlChannel_AllocGpfifoEx2(u32 fd, u32 num_entries, u32 flags, u32 unk0, u32 unk1, u32 unk2, u32 unk3, nvioctl_fence *fence_out);
|
||||||
|
@ -120,10 +120,15 @@ Result nvGpuChannelKickoff(NvGpuChannel* c)
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
Result nvGpuChannelGetErrorNotification(NvGpuChannel* c, NvError* error)
|
Result nvGpuChannelGetErrorNotification(NvGpuChannel* c, NvNotification* notif)
|
||||||
{
|
{
|
||||||
Result res = eventWait(&c->error_event, 0);
|
Result res = eventWait(&c->error_event, 0);
|
||||||
if (R_SUCCEEDED(res))
|
if (R_SUCCEEDED(res))
|
||||||
res = nvioctlChannel_GetErrorNotification(c->base.fd, error);
|
res = nvioctlChannel_GetErrorNotification(c->base.fd, notif);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Result nvGpuChannelGetErrorInfo(NvGpuChannel* c, NvError* error)
|
||||||
|
{
|
||||||
|
return nvioctlChannel_GetErrorInfo(c->base.fd, error);
|
||||||
|
}
|
||||||
|
@ -125,7 +125,11 @@ Result nvioctlChannel_SetErrorNotifier(u32 fd, u32 enable) {
|
|||||||
return nvIoctl(fd, _NV_IOWR(0x48, 0x0C, data), &data);
|
return nvIoctl(fd, _NV_IOWR(0x48, 0x0C, data), &data);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result nvioctlChannel_GetErrorNotification(u32 fd, NvError* out) {
|
Result nvioctlChannel_GetErrorInfo(u32 fd, NvError* out) {
|
||||||
|
return nvIoctl(fd, _NV_IOR(0x48, 0x16, *out), out);
|
||||||
|
}
|
||||||
|
|
||||||
|
Result nvioctlChannel_GetErrorNotification(u32 fd, NvNotification* out) {
|
||||||
return nvIoctl(fd, _NV_IOWR(0x48, 0x17, *out), out);
|
return nvIoctl(fd, _NV_IOWR(0x48, 0x17, *out), out);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user