@@ -168,10 +168,10 @@ int intel_guc_ct_init(struct intel_guc_ct *ct)
168
168
struct intel_guc * guc = ct_to_guc (ct );
169
169
struct guc_ct_buffer_desc * desc ;
170
170
u32 blob_size ;
171
+ u32 cmds_size ;
171
172
void * blob ;
172
173
u32 * cmds ;
173
174
int err ;
174
- int i ;
175
175
176
176
GEM_BUG_ON (ct -> vma );
177
177
@@ -207,15 +207,23 @@ int intel_guc_ct_init(struct intel_guc_ct *ct)
207
207
208
208
CT_DEBUG (ct , "base=%#x size=%u\n" , intel_guc_ggtt_offset (guc , ct -> vma ), blob_size );
209
209
210
- /* store pointers to desc and cmds */
211
- for (i = 0 ; i < ARRAY_SIZE (ct -> ctbs ); i ++ ) {
212
- GEM_BUG_ON ((i != CTB_SEND ) && (i != CTB_RECV ));
210
+ /* store pointers to desc and cmds for send ctb */
211
+ desc = blob ;
212
+ cmds = blob + PAGE_SIZE / 2 ;
213
+ cmds_size = PAGE_SIZE / 4 ;
214
+ CT_DEBUG (ct , "%s desc %#tx cmds %#tx size %u\n" , "send" ,
215
+ ptrdiff (desc , blob ), ptrdiff (cmds , blob ), cmds_size );
213
216
214
- desc = blob + PAGE_SIZE / 4 * i ;
215
- cmds = blob + PAGE_SIZE / 4 * i + PAGE_SIZE / 2 ;
217
+ guc_ct_buffer_init (& ct -> ctbs .send , desc , cmds , cmds_size );
216
218
217
- guc_ct_buffer_init (& ct -> ctbs [i ], desc , cmds , PAGE_SIZE / 4 );
218
- }
219
+ /* store pointers to desc and cmds for recv ctb */
220
+ desc = blob + PAGE_SIZE / 4 ;
221
+ cmds = blob + PAGE_SIZE / 4 + PAGE_SIZE / 2 ;
222
+ cmds_size = PAGE_SIZE / 4 ;
223
+ CT_DEBUG (ct , "%s desc %#tx cmds %#tx size %u\n" , "recv" ,
224
+ ptrdiff (desc , blob ), ptrdiff (cmds , blob ), cmds_size );
225
+
226
+ guc_ct_buffer_init (& ct -> ctbs .recv , desc , cmds , cmds_size );
219
227
220
228
return 0 ;
221
229
}
@@ -246,7 +254,6 @@ int intel_guc_ct_enable(struct intel_guc_ct *ct)
246
254
u32 base , cmds ;
247
255
void * blob ;
248
256
int err ;
249
- int i ;
250
257
251
258
GEM_BUG_ON (ct -> enabled );
252
259
@@ -257,28 +264,25 @@ int intel_guc_ct_enable(struct intel_guc_ct *ct)
257
264
258
265
/* blob should start with send descriptor */
259
266
blob = __px_vaddr (ct -> vma -> obj );
260
- GEM_BUG_ON (blob != ct -> ctbs [ CTB_SEND ] .desc );
267
+ GEM_BUG_ON (blob != ct -> ctbs . send .desc );
261
268
262
269
/* (re)initialize descriptors */
263
- for ( i = 0 ; i < ARRAY_SIZE (ct -> ctbs ); i ++ ) {
264
- GEM_BUG_ON (( i != CTB_SEND ) && ( i != CTB_RECV ) );
270
+ cmds = base + ptrdiff (ct -> ctbs . send . cmds , blob );
271
+ guc_ct_buffer_reset ( & ct -> ctbs . send , cmds );
265
272
266
- cmds = base + ptrdiff (ct -> ctbs [i ].cmds , blob );
267
- CT_DEBUG (ct , "%d: cmds addr=%#x\n" , i , cmds );
268
-
269
- guc_ct_buffer_reset (& ct -> ctbs [i ], cmds );
270
- }
273
+ cmds = base + ptrdiff (ct -> ctbs .recv .cmds , blob );
274
+ guc_ct_buffer_reset (& ct -> ctbs .recv , cmds );
271
275
272
276
/*
273
277
* Register both CT buffers starting with RECV buffer.
274
278
* Descriptors are in first half of the blob.
275
279
*/
276
- err = ct_register_buffer (ct , base + ptrdiff (ct -> ctbs [ CTB_RECV ] .desc , blob ),
280
+ err = ct_register_buffer (ct , base + ptrdiff (ct -> ctbs . recv .desc , blob ),
277
281
INTEL_GUC_CT_BUFFER_TYPE_RECV );
278
282
if (unlikely (err ))
279
283
goto err_out ;
280
284
281
- err = ct_register_buffer (ct , base + ptrdiff (ct -> ctbs [ CTB_SEND ] .desc , blob ),
285
+ err = ct_register_buffer (ct , base + ptrdiff (ct -> ctbs . send .desc , blob ),
282
286
INTEL_GUC_CT_BUFFER_TYPE_SEND );
283
287
if (unlikely (err ))
284
288
goto err_deregister ;
@@ -341,7 +345,7 @@ static int ct_write(struct intel_guc_ct *ct,
341
345
u32 len /* in dwords */ ,
342
346
u32 fence )
343
347
{
344
- struct intel_guc_ct_buffer * ctb = & ct -> ctbs [ CTB_SEND ] ;
348
+ struct intel_guc_ct_buffer * ctb = & ct -> ctbs . send ;
345
349
struct guc_ct_buffer_desc * desc = ctb -> desc ;
346
350
u32 head = desc -> head ;
347
351
u32 tail = desc -> tail ;
@@ -557,7 +561,7 @@ static inline bool ct_header_is_response(u32 header)
557
561
558
562
static int ct_read (struct intel_guc_ct * ct , u32 * data )
559
563
{
560
- struct intel_guc_ct_buffer * ctb = & ct -> ctbs [ CTB_RECV ] ;
564
+ struct intel_guc_ct_buffer * ctb = & ct -> ctbs . recv ;
561
565
struct guc_ct_buffer_desc * desc = ctb -> desc ;
562
566
u32 head = desc -> head ;
563
567
u32 tail = desc -> tail ;
0 commit comments