mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-10 02:54:58 -06:00
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
3 changed files with 13 additions and 0 deletions
|
@ -1165,6 +1165,17 @@ static void process_cmdq(GICv3ITSState *s)
|
||||||
*/
|
*/
|
||||||
trace_gicv3_its_cmd_sync();
|
trace_gicv3_its_cmd_sync();
|
||||||
break;
|
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:
|
case GITS_CMD_MAPD:
|
||||||
result = process_mapd(s, cmdpkt);
|
result = process_mapd(s, cmdpkt);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -330,6 +330,7 @@ FIELD(GITS_TYPER, CIL, 36, 1)
|
||||||
#define GITS_CMD_MOVALL 0x0E
|
#define GITS_CMD_MOVALL 0x0E
|
||||||
#define GITS_CMD_DISCARD 0x0F
|
#define GITS_CMD_DISCARD 0x0F
|
||||||
#define GITS_CMD_VMOVP 0x22
|
#define GITS_CMD_VMOVP 0x22
|
||||||
|
#define GITS_CMD_VSYNC 0x25
|
||||||
#define GITS_CMD_VMAPP 0x29
|
#define GITS_CMD_VMAPP 0x29
|
||||||
#define GITS_CMD_VMAPTI 0x2A
|
#define GITS_CMD_VMAPTI 0x2A
|
||||||
#define GITS_CMD_VMAPI 0x2B
|
#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_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_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_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_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_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"
|
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…
Add table
Add a link
Reference in a new issue