@@ -1145,48 +1145,6 @@ r535_gsp_msg_run_cpu_sequencer(void *priv, u32 fn, void *repv, u32 repc)
11451145 return 0 ;
11461146}
11471147
1148- static int
1149- r535_gsp_booter_unload (struct nvkm_gsp * gsp , u32 mbox0 , u32 mbox1 )
1150- {
1151- struct nvkm_subdev * subdev = & gsp -> subdev ;
1152- struct nvkm_device * device = subdev -> device ;
1153- u32 wpr2_hi ;
1154- int ret ;
1155-
1156- wpr2_hi = nvkm_rd32 (device , 0x1fa828 );
1157- if (!wpr2_hi ) {
1158- nvkm_debug (subdev , "WPR2 not set - skipping booter unload\n" );
1159- return 0 ;
1160- }
1161-
1162- ret = nvkm_falcon_fw_boot (& gsp -> booter .unload , & gsp -> subdev , true, & mbox0 , & mbox1 , 0 , 0 );
1163- if (WARN_ON (ret ))
1164- return ret ;
1165-
1166- wpr2_hi = nvkm_rd32 (device , 0x1fa828 );
1167- if (WARN_ON (wpr2_hi ))
1168- return - EIO ;
1169-
1170- return 0 ;
1171- }
1172-
1173- static int
1174- r535_gsp_booter_load (struct nvkm_gsp * gsp , u32 mbox0 , u32 mbox1 )
1175- {
1176- int ret ;
1177-
1178- ret = nvkm_falcon_fw_boot (& gsp -> booter .load , & gsp -> subdev , true, & mbox0 , & mbox1 , 0 , 0 );
1179- if (ret )
1180- return ret ;
1181-
1182- nvkm_falcon_wr32 (& gsp -> falcon , 0x080 , gsp -> boot .app_version );
1183-
1184- if (WARN_ON (!nvkm_falcon_riscv_active (& gsp -> falcon )))
1185- return - EIO ;
1186-
1187- return 0 ;
1188- }
1189-
11901148static int
11911149r535_gsp_wpr_meta_init (struct nvkm_gsp * gsp )
11921150{
@@ -1287,7 +1245,7 @@ r535_gsp_shared_init(struct nvkm_gsp *gsp)
12871245 return 0 ;
12881246}
12891247
1290- static int
1248+ int
12911249r535_gsp_rmargs_init (struct nvkm_gsp * gsp , bool resume )
12921250{
12931251 GSP_ARGUMENTS_CACHED * args ;
@@ -1816,12 +1774,8 @@ nvkm_gsp_radix3_sg(struct nvkm_gsp *gsp, struct sg_table *sgt, u64 size,
18161774int
18171775r535_gsp_fini (struct nvkm_gsp * gsp , bool suspend )
18181776{
1819- u32 mbox0 = 0xff , mbox1 = 0xff ;
18201777 int ret ;
18211778
1822- if (!gsp -> running )
1823- return 0 ;
1824-
18251779 if (suspend ) {
18261780 GspFwWprMeta * meta = gsp -> wpr_meta .data ;
18271781 u64 len = meta -> gspFwWprEnd - meta -> gspFwWprStart ;
@@ -1844,9 +1798,6 @@ r535_gsp_fini(struct nvkm_gsp *gsp, bool suspend)
18441798 sr -> revision = GSP_FW_SR_META_REVISION ;
18451799 sr -> sysmemAddrOfSuspendResumeData = gsp -> sr .radix3 .lvl0 .addr ;
18461800 sr -> sizeOfSuspendResumeData = len ;
1847-
1848- mbox0 = lower_32_bits (gsp -> sr .meta .addr );
1849- mbox1 = upper_32_bits (gsp -> sr .meta .addr );
18501801 }
18511802
18521803 ret = r535_gsp_rpc_unloading_guest_driver (gsp , suspend );
@@ -1858,38 +1809,19 @@ r535_gsp_fini(struct nvkm_gsp *gsp, bool suspend)
18581809 break ;
18591810 );
18601811
1861- nvkm_falcon_reset (& gsp -> falcon );
1862-
1863- ret = nvkm_gsp_fwsec_sb (gsp );
1864- WARN_ON (ret );
1865-
1866- ret = r535_gsp_booter_unload (gsp , mbox0 , mbox1 );
1867- WARN_ON (ret );
1868-
18691812 gsp -> running = false;
18701813 return 0 ;
18711814}
18721815
18731816int
18741817r535_gsp_init (struct nvkm_gsp * gsp )
18751818{
1876- u32 mbox0 , mbox1 ;
18771819 int ret ;
18781820
1879- if (!gsp -> sr .meta .data ) {
1880- mbox0 = lower_32_bits (gsp -> wpr_meta .addr );
1881- mbox1 = upper_32_bits (gsp -> wpr_meta .addr );
1882- } else {
1883- r535_gsp_rmargs_init (gsp , true);
1884-
1885- mbox0 = lower_32_bits (gsp -> sr .meta .addr );
1886- mbox1 = upper_32_bits (gsp -> sr .meta .addr );
1887- }
1821+ nvkm_falcon_wr32 (& gsp -> falcon , 0x080 , gsp -> boot .app_version );
18881822
1889- /* Execute booter to handle (eventually...) booting GSP-RM. */
1890- ret = r535_gsp_booter_load (gsp , mbox0 , mbox1 );
1891- if (WARN_ON (ret ))
1892- goto done ;
1823+ if (WARN_ON (!nvkm_falcon_riscv_active (& gsp -> falcon )))
1824+ return - EIO ;
18931825
18941826 ret = r535_gsp_rpc_poll (gsp , NV_VGPU_MSG_EVENT_GSP_INIT_DONE );
18951827 if (ret )
@@ -2220,16 +2152,6 @@ r535_gsp_oneinit(struct nvkm_gsp *gsp)
22202152 mutex_init (& gsp -> cmdq .mutex );
22212153 mutex_init (& gsp -> msgq .mutex );
22222154
2223- ret = gsp -> func -> booter .ctor (gsp , "booter-load" , gsp -> fws .booter .load ,
2224- & device -> sec2 -> falcon , & gsp -> booter .load );
2225- if (ret )
2226- return ret ;
2227-
2228- ret = gsp -> func -> booter .ctor (gsp , "booter-unload" , gsp -> fws .booter .unload ,
2229- & device -> sec2 -> falcon , & gsp -> booter .unload );
2230- if (ret )
2231- return ret ;
2232-
22332155 /* Load GSP firmware from ELF image into DMA-accessible memory. */
22342156 ret = r535_gsp_elf_section (gsp , ".fwimage" , & data , & size );
22352157 if (ret )
@@ -2324,14 +2246,6 @@ r535_gsp_oneinit(struct nvkm_gsp *gsp)
23242246 if (WARN_ON (ret ))
23252247 return ret ;
23262248
2327- /* Reset GSP into RISC-V mode. */
2328- ret = gsp -> func -> reset (gsp );
2329- if (WARN_ON (ret ))
2330- return ret ;
2331-
2332- nvkm_falcon_wr32 (& gsp -> falcon , 0x040 , lower_32_bits (gsp -> libos .addr ));
2333- nvkm_falcon_wr32 (& gsp -> falcon , 0x044 , upper_32_bits (gsp -> libos .addr ));
2334-
23352249 mutex_init (& gsp -> client_id .mutex );
23362250 idr_init (& gsp -> client_id .idr );
23372251 return 0 ;
0 commit comments