hw/intc/arm_gicv3_its: Implement VSYNC
The VSYNC command forces the ITS to synchronize all outstanding ITS operations for the specified vPEID, so that subsequent writes to GITS_TRANSLATER honour them. The QEMU implementation is always in sync, so for us this is a nop, like the existing SYNC command. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20220408141550.1271295-18-peter.maydell@linaro.org
This commit is contained in:
parent
3851af4585
commit
f76ba95a03
@ -1165,6 +1165,17 @@ static void process_cmdq(GICv3ITSState *s)
|
||||
*/
|
||||
trace_gicv3_its_cmd_sync();
|
||||
break;
|
||||
case GITS_CMD_VSYNC:
|
||||
/*
|
||||
* VSYNC also is a nop, because our implementation is always
|
||||
* in sync.
|
||||
*/
|
||||
if (!its_feature_virtual(s)) {
|
||||
result = CMD_CONTINUE;
|
||||
break;
|
||||
}
|
||||
trace_gicv3_its_cmd_vsync();
|
||||
break;
|
||||
case GITS_CMD_MAPD:
|
||||
result = process_mapd(s, cmdpkt);
|
||||
break;
|
||||
|
@ -330,6 +330,7 @@ FIELD(GITS_TYPER, CIL, 36, 1)
|
||||
#define GITS_CMD_MOVALL 0x0E
|
||||
#define GITS_CMD_DISCARD 0x0F
|
||||
#define GITS_CMD_VMOVP 0x22
|
||||
#define GITS_CMD_VSYNC 0x25
|
||||
#define GITS_CMD_VMAPP 0x29
|
||||
#define GITS_CMD_VMAPTI 0x2A
|
||||
#define GITS_CMD_VMAPI 0x2B
|
||||
|
@ -191,6 +191,7 @@ gicv3_its_cmd_vmapi(uint32_t devid, uint32_t eventid, uint32_t vpeid, uint32_t d
|
||||
gicv3_its_cmd_vmapti(uint32_t devid, uint32_t eventid, uint32_t vpeid, uint32_t vintid, uint32_t doorbell) "GICv3 ITS: command VMAPI DeviceID 0x%x EventID 0x%x vPEID 0x%x vINTID 0x%x Dbell_pINTID 0x%x"
|
||||
gicv3_its_cmd_vmapp(uint32_t vpeid, uint64_t rdbase, int valid, uint64_t vptaddr, uint32_t vptsize) "GICv3 ITS: command VMAPP vPEID 0x%x RDbase 0x%" PRIx64 " V %d VPT_addr 0x%" PRIx64 " VPT_size 0x%x"
|
||||
gicv3_its_cmd_vmovp(uint32_t vpeid, uint64_t rdbase) "GICv3 ITS: command VMOVP vPEID 0x%x RDbase 0x%" PRIx64
|
||||
gicv3_its_cmd_vsync(void) "GICv3 ITS: command VSYNC"
|
||||
gicv3_its_cmd_unknown(unsigned cmd) "GICv3 ITS: unknown command 0x%x"
|
||||
gicv3_its_cte_read(uint32_t icid, int valid, uint32_t rdbase) "GICv3 ITS: Collection Table read for ICID 0x%x: valid %d RDBase 0x%x"
|
||||
gicv3_its_cte_write(uint32_t icid, int valid, uint32_t rdbase) "GICv3 ITS: Collection Table write for ICID 0x%x: valid %d RDBase 0x%x"
|
||||
|
Loading…
Reference in New Issue
Block a user