Skip to content
Navigation Menu
Toggle navigation
Sign in
In this repository
All GitHub Enterprise
↵
Jump to
↵
No suggested jump to results
In this repository
All GitHub Enterprise
↵
Jump to
↵
In this organization
All GitHub Enterprise
↵
Jump to
↵
In this repository
All GitHub Enterprise
↵
Jump to
↵
Sign in
Reseting focus
You signed in with another tab or window.
Reload
to refresh your session.
You signed out in another tab or window.
Reload
to refresh your session.
You switched accounts on another tab or window.
Reload
to refresh your session.
Dismiss alert
{{ message }}
mariux64
/
linux
Public
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Issues
1
Pull requests
0
Actions
Projects
0
Wiki
Security
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Wiki
Security
Insights
Files
91a4e83
Breadcrumbs
linux
/
drivers
/
gpu
/
drm
/
nouveau
/
nvkm
/
falcon
/
qmgr.h
Blame
Blame
Latest commit
History
History
90 lines (77 loc) · 2.14 KB
Breadcrumbs
linux
/
drivers
/
gpu
/
drm
/
nouveau
/
nvkm
/
falcon
/
qmgr.h
Top
File metadata and controls
Code
Blame
90 lines (77 loc) · 2.14 KB
Raw
/* SPDX-License-Identifier: MIT */ #ifndef __NVKM_FALCON_QMGR_H__ #define __NVKM_FALCON_QMGR_H__ #include <core/falcon.h> #include "msgqueue.h" #define HDR_SIZE sizeof(struct nv_falcon_msg) #define QUEUE_ALIGNMENT 4 /* max size of the messages we can receive */ #define MSG_BUF_SIZE 128 /** * struct nvkm_falcon_qmgr_seq - keep track of ongoing commands * * Every time a command is sent, a sequence is assigned to it so the * corresponding message can be matched. Upon receiving the message, a callback * can be called and/or a completion signaled. * * @id: sequence ID * @state: current state * @callback: callback to call upon receiving matching message * @completion: completion to signal after callback is called */ struct nvkm_falcon_qmgr_seq { u16 id; enum { SEQ_STATE_FREE = 0, SEQ_STATE_PENDING, SEQ_STATE_USED, SEQ_STATE_CANCELLED } state; bool async; nvkm_falcon_qmgr_callback callback; void *priv; struct completion done; int result; }; /* * We can have an arbitrary number of sequences, but realistically we will * probably not use that much simultaneously. */ #define NVKM_FALCON_QMGR_SEQ_NUM 16 struct nvkm_falcon_qmgr { struct nvkm_falcon *falcon; struct { struct mutex mutex; struct nvkm_falcon_qmgr_seq id[NVKM_FALCON_QMGR_SEQ_NUM]; unsigned long tbl[BITS_TO_LONGS(NVKM_FALCON_QMGR_SEQ_NUM)]; } seq; }; struct nvkm_falcon_qmgr_seq * nvkm_falcon_qmgr_seq_acquire(struct nvkm_falcon_qmgr *); void nvkm_falcon_qmgr_seq_release(struct nvkm_falcon_qmgr *, struct nvkm_falcon_qmgr_seq *); struct nvkm_falcon_cmdq { struct nvkm_falcon_qmgr *qmgr; const char *name; struct mutex mutex; struct completion ready; u32 head_reg; u32 tail_reg; u32 offset; u32 size; u32 position; }; struct nvkm_falcon_msgq { struct nvkm_falcon_qmgr *qmgr; const char *name; struct mutex mutex; u32 head_reg; u32 tail_reg; u32 offset; u32 position; }; #define FLCNQ_PRINTK(t,q,f,a...) \ FLCN_PRINTK(t, (q)->qmgr->falcon, "%s: "f, (q)->name, ##a) #define FLCNQ_DBG(q,f,a...) FLCNQ_PRINTK(debug, (q), f, ##a) #define FLCNQ_ERR(q,f,a...) FLCNQ_PRINTK(error, (q), f, ##a) #endif
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
You can’t perform that action at this time.