tree:   git://anongit.freedesktop.org/drm/drm-misc for-linux-next-fixes
head:   64111a0e22a9d4e0de7a5d04e7d5c21d0af4b900
commit: 88a2b4d34a64bba914c4e245c6de3ca42bea93cf [1/2] nouveau/gsp: document 
some aspects of GSP-RM
config: arm64-randconfig-001-20231130 
(https://download.01.org/0day-ci/archive/20231130/202311302252.rj0uf9t0-...@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): 
(https://download.01.org/0day-ci/archive/20231130/202311302252.rj0uf9t0-...@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <l...@intel.com>
| Closes: 
https://lore.kernel.org/oe-kbuild-all/202311302252.rj0uf9t0-...@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:1389: warning: Function 
>> parameter or member 'priv' not described in 'r535_gsp_msg_run_cpu_sequencer'
>> drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:1389: warning: Function 
>> parameter or member 'fn' not described in 'r535_gsp_msg_run_cpu_sequencer'
>> drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:1389: warning: Function 
>> parameter or member 'repv' not described in 'r535_gsp_msg_run_cpu_sequencer'
>> drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:1389: warning: Function 
>> parameter or member 'repc' not described in 'r535_gsp_msg_run_cpu_sequencer'
>> drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:1783: warning: Function 
>> parameter or member 'gsp' not described in 'r535_gsp_libos_init'
>> drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:1923: warning: Function 
>> parameter or member 'device' not described in 'nvkm_gsp_radix3_sg'
>> drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:1923: warning: Function 
>> parameter or member 'sgt' not described in 'nvkm_gsp_radix3_sg'
>> drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:1923: warning: Function 
>> parameter or member 'size' not described in 'nvkm_gsp_radix3_sg'
>> drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:1923: warning: Function 
>> parameter or member 'rx3' not described in 'nvkm_gsp_radix3_sg'


vim +1389 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c

9e99444490238d2 Ben Skeggs 2023-09-19  1379  
88a2b4d34a64bba Timur Tabi 2023-11-22  1380  /**
88a2b4d34a64bba Timur Tabi 2023-11-22  1381   * 
r535_gsp_msg_run_cpu_sequencer() -- process I/O commands from the GSP
88a2b4d34a64bba Timur Tabi 2023-11-22  1382   *
88a2b4d34a64bba Timur Tabi 2023-11-22  1383   * The GSP sequencer is a list of 
I/O commands that the GSP can send to
88a2b4d34a64bba Timur Tabi 2023-11-22  1384   * the driver to perform for 
various purposes.  The most common usage is to
88a2b4d34a64bba Timur Tabi 2023-11-22  1385   * perform a special 
mid-initialization reset.
88a2b4d34a64bba Timur Tabi 2023-11-22  1386   */
176fdcbddfd2884 Ben Skeggs 2023-09-19  1387  static int
176fdcbddfd2884 Ben Skeggs 2023-09-19  1388  
r535_gsp_msg_run_cpu_sequencer(void *priv, u32 fn, void *repv, u32 repc)
176fdcbddfd2884 Ben Skeggs 2023-09-19 @1389  {
176fdcbddfd2884 Ben Skeggs 2023-09-19  1390     struct nvkm_gsp *gsp = priv;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1391     struct nvkm_subdev *subdev = 
&gsp->subdev;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1392     struct nvkm_device *device = 
subdev->device;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1393     rpc_run_cpu_sequencer_v17_00 
*seq = repv;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1394     int ptr = 0, ret;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1395  
176fdcbddfd2884 Ben Skeggs 2023-09-19  1396     nvkm_debug(subdev, "seq: %08x 
%08x\n", seq->bufferSizeDWord, seq->cmdIndex);
176fdcbddfd2884 Ben Skeggs 2023-09-19  1397  
176fdcbddfd2884 Ben Skeggs 2023-09-19  1398     while (ptr < seq->cmdIndex) {
176fdcbddfd2884 Ben Skeggs 2023-09-19  1399             
GSP_SEQUENCER_BUFFER_CMD *cmd = (void *)&seq->commandBuffer[ptr];
176fdcbddfd2884 Ben Skeggs 2023-09-19  1400  
176fdcbddfd2884 Ben Skeggs 2023-09-19  1401             ptr += 1;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1402             ptr += 
GSP_SEQUENCER_PAYLOAD_SIZE_DWORDS(cmd->opCode);
176fdcbddfd2884 Ben Skeggs 2023-09-19  1403  
176fdcbddfd2884 Ben Skeggs 2023-09-19  1404             switch (cmd->opCode) {
176fdcbddfd2884 Ben Skeggs 2023-09-19  1405             case 
GSP_SEQ_BUF_OPCODE_REG_WRITE: {
176fdcbddfd2884 Ben Skeggs 2023-09-19  1406                     u32 addr = 
cmd->payload.regWrite.addr;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1407                     u32 data = 
cmd->payload.regWrite.val;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1408  
176fdcbddfd2884 Ben Skeggs 2023-09-19  1409                     
nvkm_trace(subdev, "seq wr32 %06x %08x\n", addr, data);
176fdcbddfd2884 Ben Skeggs 2023-09-19  1410                     
nvkm_wr32(device, addr, data);
176fdcbddfd2884 Ben Skeggs 2023-09-19  1411             }
176fdcbddfd2884 Ben Skeggs 2023-09-19  1412                     break;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1413             case 
GSP_SEQ_BUF_OPCODE_REG_MODIFY: {
176fdcbddfd2884 Ben Skeggs 2023-09-19  1414                     u32 addr = 
cmd->payload.regModify.addr;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1415                     u32 mask = 
cmd->payload.regModify.mask;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1416                     u32 data = 
cmd->payload.regModify.val;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1417  
176fdcbddfd2884 Ben Skeggs 2023-09-19  1418                     
nvkm_trace(subdev, "seq mask %06x %08x %08x\n", addr, mask, data);
176fdcbddfd2884 Ben Skeggs 2023-09-19  1419                     
nvkm_mask(device, addr, mask, data);
176fdcbddfd2884 Ben Skeggs 2023-09-19  1420             }
176fdcbddfd2884 Ben Skeggs 2023-09-19  1421                     break;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1422             case 
GSP_SEQ_BUF_OPCODE_REG_POLL: {
176fdcbddfd2884 Ben Skeggs 2023-09-19  1423                     u32 addr = 
cmd->payload.regPoll.addr;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1424                     u32 mask = 
cmd->payload.regPoll.mask;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1425                     u32 data = 
cmd->payload.regPoll.val;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1426                     u32 usec = 
cmd->payload.regPoll.timeout ?: 4000000;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1427                     //u32 error = 
cmd->payload.regPoll.error;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1428  
176fdcbddfd2884 Ben Skeggs 2023-09-19  1429                     
nvkm_trace(subdev, "seq poll %06x %08x %08x %d\n", addr, mask, data, usec);
176fdcbddfd2884 Ben Skeggs 2023-09-19  1430                     
nvkm_rd32(device, addr);
176fdcbddfd2884 Ben Skeggs 2023-09-19  1431                     
nvkm_usec(device, usec,
176fdcbddfd2884 Ben Skeggs 2023-09-19  1432                             if 
((nvkm_rd32(device, addr) & mask) == data)
176fdcbddfd2884 Ben Skeggs 2023-09-19  1433                                     
break;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1434                     );
176fdcbddfd2884 Ben Skeggs 2023-09-19  1435             }
176fdcbddfd2884 Ben Skeggs 2023-09-19  1436                     break;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1437             case 
GSP_SEQ_BUF_OPCODE_DELAY_US: {
176fdcbddfd2884 Ben Skeggs 2023-09-19  1438                     u32 usec = 
cmd->payload.delayUs.val;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1439  
176fdcbddfd2884 Ben Skeggs 2023-09-19  1440                     
nvkm_trace(subdev, "seq usec %d\n", usec);
176fdcbddfd2884 Ben Skeggs 2023-09-19  1441                     udelay(usec);
176fdcbddfd2884 Ben Skeggs 2023-09-19  1442             }
176fdcbddfd2884 Ben Skeggs 2023-09-19  1443                     break;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1444             case 
GSP_SEQ_BUF_OPCODE_REG_STORE: {
176fdcbddfd2884 Ben Skeggs 2023-09-19  1445                     u32 addr = 
cmd->payload.regStore.addr;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1446                     u32 slot = 
cmd->payload.regStore.index;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1447  
176fdcbddfd2884 Ben Skeggs 2023-09-19  1448                     
seq->regSaveArea[slot] = nvkm_rd32(device, addr);
176fdcbddfd2884 Ben Skeggs 2023-09-19  1449                     
nvkm_trace(subdev, "seq save %08x -> %d: %08x\n", addr, slot,
176fdcbddfd2884 Ben Skeggs 2023-09-19  1450                                
seq->regSaveArea[slot]);
176fdcbddfd2884 Ben Skeggs 2023-09-19  1451             }
176fdcbddfd2884 Ben Skeggs 2023-09-19  1452                     break;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1453             case 
GSP_SEQ_BUF_OPCODE_CORE_RESET:
176fdcbddfd2884 Ben Skeggs 2023-09-19  1454                     
nvkm_trace(subdev, "seq core reset\n");
176fdcbddfd2884 Ben Skeggs 2023-09-19  1455                     
nvkm_falcon_reset(&gsp->falcon);
176fdcbddfd2884 Ben Skeggs 2023-09-19  1456                     
nvkm_falcon_mask(&gsp->falcon, 0x624, 0x00000080, 0x00000080);
176fdcbddfd2884 Ben Skeggs 2023-09-19  1457                     
nvkm_falcon_wr32(&gsp->falcon, 0x10c, 0x00000000);
176fdcbddfd2884 Ben Skeggs 2023-09-19  1458                     break;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1459             case 
GSP_SEQ_BUF_OPCODE_CORE_START:
176fdcbddfd2884 Ben Skeggs 2023-09-19  1460                     
nvkm_trace(subdev, "seq core start\n");
176fdcbddfd2884 Ben Skeggs 2023-09-19  1461                     if 
(nvkm_falcon_rd32(&gsp->falcon, 0x100) & 0x00000040)
176fdcbddfd2884 Ben Skeggs 2023-09-19  1462                             
nvkm_falcon_wr32(&gsp->falcon, 0x130, 0x00000002);
176fdcbddfd2884 Ben Skeggs 2023-09-19  1463                     else
176fdcbddfd2884 Ben Skeggs 2023-09-19  1464                             
nvkm_falcon_wr32(&gsp->falcon, 0x100, 0x00000002);
176fdcbddfd2884 Ben Skeggs 2023-09-19  1465                     break;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1466             case 
GSP_SEQ_BUF_OPCODE_CORE_WAIT_FOR_HALT:
176fdcbddfd2884 Ben Skeggs 2023-09-19  1467                     
nvkm_trace(subdev, "seq core wait halt\n");
176fdcbddfd2884 Ben Skeggs 2023-09-19  1468                     
nvkm_msec(device, 2000,
176fdcbddfd2884 Ben Skeggs 2023-09-19  1469                             if 
(nvkm_falcon_rd32(&gsp->falcon, 0x100) & 0x00000010)
176fdcbddfd2884 Ben Skeggs 2023-09-19  1470                                     
break;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1471                     );
176fdcbddfd2884 Ben Skeggs 2023-09-19  1472                     break;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1473             case 
GSP_SEQ_BUF_OPCODE_CORE_RESUME: {
176fdcbddfd2884 Ben Skeggs 2023-09-19  1474                     struct 
nvkm_sec2 *sec2 = device->sec2;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1475                     u32 mbox0;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1476  
176fdcbddfd2884 Ben Skeggs 2023-09-19  1477                     
nvkm_trace(subdev, "seq core resume\n");
176fdcbddfd2884 Ben Skeggs 2023-09-19  1478  
176fdcbddfd2884 Ben Skeggs 2023-09-19  1479                     ret = 
gsp->func->reset(gsp);
176fdcbddfd2884 Ben Skeggs 2023-09-19  1480                     if 
(WARN_ON(ret))
176fdcbddfd2884 Ben Skeggs 2023-09-19  1481                             return 
ret;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1482  
176fdcbddfd2884 Ben Skeggs 2023-09-19  1483                     
nvkm_falcon_wr32(&gsp->falcon, 0x040, lower_32_bits(gsp->libos.addr));
176fdcbddfd2884 Ben Skeggs 2023-09-19  1484                     
nvkm_falcon_wr32(&gsp->falcon, 0x044, upper_32_bits(gsp->libos.addr));
176fdcbddfd2884 Ben Skeggs 2023-09-19  1485  
176fdcbddfd2884 Ben Skeggs 2023-09-19  1486                     
nvkm_falcon_start(&sec2->falcon);
176fdcbddfd2884 Ben Skeggs 2023-09-19  1487  
176fdcbddfd2884 Ben Skeggs 2023-09-19  1488                     if 
(nvkm_msec(device, 2000,
176fdcbddfd2884 Ben Skeggs 2023-09-19  1489                             if 
(nvkm_rd32(device, 0x1180f8) & 0x04000000)
176fdcbddfd2884 Ben Skeggs 2023-09-19  1490                                     
break;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1491                     ) < 0)
176fdcbddfd2884 Ben Skeggs 2023-09-19  1492                             return 
-ETIMEDOUT;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1493  
176fdcbddfd2884 Ben Skeggs 2023-09-19  1494                     mbox0 = 
nvkm_falcon_rd32(&sec2->falcon, 0x040);
176fdcbddfd2884 Ben Skeggs 2023-09-19  1495                     if 
(WARN_ON(mbox0)) {
176fdcbddfd2884 Ben Skeggs 2023-09-19  1496                             
nvkm_error(&gsp->subdev, "seq core resume sec2: 0x%x\n", mbox0);
176fdcbddfd2884 Ben Skeggs 2023-09-19  1497                             return 
-EIO;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1498                     }
176fdcbddfd2884 Ben Skeggs 2023-09-19  1499  
176fdcbddfd2884 Ben Skeggs 2023-09-19  1500                     
nvkm_falcon_wr32(&gsp->falcon, 0x080, gsp->boot.app_version);
176fdcbddfd2884 Ben Skeggs 2023-09-19  1501  
176fdcbddfd2884 Ben Skeggs 2023-09-19  1502                     if 
(WARN_ON(!nvkm_falcon_riscv_active(&gsp->falcon)))
176fdcbddfd2884 Ben Skeggs 2023-09-19  1503                             return 
-EIO;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1504             }
176fdcbddfd2884 Ben Skeggs 2023-09-19  1505                     break;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1506             default:
176fdcbddfd2884 Ben Skeggs 2023-09-19  1507                     
nvkm_error(subdev, "unknown sequencer opcode %08x\n", cmd->opCode);
176fdcbddfd2884 Ben Skeggs 2023-09-19  1508                     return -EINVAL;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1509             }
176fdcbddfd2884 Ben Skeggs 2023-09-19  1510     }
176fdcbddfd2884 Ben Skeggs 2023-09-19  1511  
176fdcbddfd2884 Ben Skeggs 2023-09-19  1512     return 0;
176fdcbddfd2884 Ben Skeggs 2023-09-19  1513  }
176fdcbddfd2884 Ben Skeggs 2023-09-19  1514  

:::::: The code at line 1389 was first introduced by commit
:::::: 176fdcbddfd288408ce8571c1760ad618d962096 drm/nouveau/gsp/r535: add 
support for booting GSP-RM

:::::: TO: Ben Skeggs <bske...@redhat.com>
:::::: CC: Dave Airlie <airl...@redhat.com>

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

Reply via email to