@@ -630,9 +630,14 @@ <h2 id="start_cond_job_preempt-0x1f">START_COND_JOB_PREEMPT (0x1f)</h2>
630630</ table >
631631< p > Indicates the start of a new job and creates a new entry in the job table,
632632if preemption flag has been set. The flag is cleared when preemption is
633- checked, and is set if preemption happens.
633+ checked, and is set if preemption happens, so the job runs only if the flag indicates that a
634+ preemption occurred when the condition is checked.
634635The job size is auto-calculated and inserted by the assembler and not supplied
635- explicitly by the user.</ p >
636+ explicitly by the user.
637+ In multi-uC case, CERT will do barrier sync after this job, so each uC should have the same number
638+ of this type of conditional jobs.
639+ The conditional job can share page with other jobs, and all jobs following this job in the page
640+ don't start before this job is done.</ p >
636641< h2 id ="uc_dma_write_des-0x01 "> UC_DMA_WRITE_DES (0x01)</ h2 >
637642< p > Enqueues a DM2MM uC-DMA transfer and returns a wait handle for it.</ p >
638643< table >
@@ -1369,8 +1374,10 @@ <h2 id="preempt-0x19">PREEMPT (0x19)</h2>
13691374unit of page to the 1st page of control code, and this address is where the < code > RESTORE</ code > control code resides. The opcode
13701375can determine whether preemption is required, and if required, it can also distinguish whether it is to < code > SAVE</ code > or to
13711376< code > RESTORE</ code > , and run the < code > SAVE</ code > or < code > RESTORE</ code > control code accordingly.
1372- In multi-uc case, for each preemption point id, the control code of each uc should have this opcode with same < code > id</ code > .
1373- This opcode should take one whole job which in turn should take one whole page.</ p >
1377+ In multi-uC case, at each preemption point, CERT will do barrier sync regardless of whether the preemption happens or not, so
1378+ for each preemption point id, the control code of each uc should have this opcode with same < code > id</ code > .
1379+ This opcode should take one whole job but the job can share page with other jobs. All following jobs in same page don't start
1380+ before this preemption job is done</ p >
13741381< h2 id ="load_pdi-0x1a "> LOAD_PDI (0x1a)</ h2 >
13751382< p > load pdi</ p >
13761383< table >
@@ -1398,10 +1405,13 @@ <h2 id="load_pdi-0x1a">LOAD_PDI (0x1a)</h2>
13981405</ tbody >
13991406</ table >
14001407< p > pdi itself is also a piece of control code. It can be loaded by other control code at anywhere anytime.
1401- < code > pdi_id</ code > is an elf wide unique id and specifies an unique pdi. consecutive loading of same pdi results in following
1408+ < code > pdi_id</ code > is an elf wide unique id and specifies a unique pdi. If multiple control code elfs run in one hwctx,
1409+ the pdi_id should be hwctx wide unique. When this opcode runs, consecutive loading of same pdi results in following
14021410loading skipped by the uC. < code > pdi_host_addr_offset</ code > specifies a relative address in unit of page to the 1st page of
14031411the control code and is where the pdi control code resides
1404- This opcode should take one whole job which in turn should take one whole page.</ p >
1412+ This opcode should take one whole job but the job can share page with other jobs. All jobs following the load pdi job
1413+ don't start before the load pdi job is done.
1414+ In multi-uc case, cert will do barrier sync after the load_pdi job, so each uc needs to have same number of load pdi jobs</ p >
14051415< h2 id ="load_cores-0x04 "> LOAD_CORES (0x04)</ h2 >
14061416< p > load cores</ p >
14071417< table >
0 commit comments