History

irqchip/gic-v4.1: Implement the v4.1 flavour of VMAPP

The ITS VMAPP command gains some new fields with GICv4.1: - a default doorbell, which allows a single doorbell to be used for all the VLPIs routed to a given VPE - a pointer to the configuration table (instead of having it in a register that gets context switched) - a flag indicating whether this is the first map or the last unmap for this particular VPE - a flag indicating whether the pending table is known to be zeroed, or not Plumb in the new fields in the VMAPP builder, and add the map/unmap refcounting so that the ITS can do the right thing.

Marc Zyngier committed 6 years ago

Commit 64edfaa1 parent 5e516842 files · +69 −9Browse files

Showing the changes to include/linux (1 of 2 files). Show all

Unified · Split

include/linux/irqchip/arm-gic-v4.h+14−4
@@ -39,8 +39,20 @@ struct its_vpe { · 38 unmodified lines
39 irq_hw_number_t vpe_db_lpi;39 irq_hw_number_t vpe_db_lpi;
40 /* VPE resident */40 /* VPE resident */
41 bool resident;41 bool resident;
42 /* VPE proxy mapping */42 union {
43 int vpe_proxy_event;43 /* GICv4.0 implementations */
44 struct {
45 /* VPE proxy mapping */
46 int vpe_proxy_event;
47 /* Implementation Defined Area Invalid */
48 bool idai;
49 };
50 /* GICv4.1 implementations */
51 struct {
52 atomic_t vmapp_count;
53 };
54 };
55
44 /*56 /*
45 * This collection ID is used to indirect the target57 * This collection ID is used to indirect the target
46 * redistributor for this VPE. The ID itself isn't involved in58 * redistributor for this VPE. The ID itself isn't involved in
@@ -49,8 +61,6 @@ struct its_vpe { · 2 unmodified lines
49 u16 col_idx;61 u16 col_idx;
50 /* Unique (system-wide) VPE identifier */62 /* Unique (system-wide) VPE identifier */
51 u16 vpe_id;63 u16 vpe_id;
52 /* Implementation Defined Area Invalid */
53 bool idai;
54 /* Pending VLPIs on schedule out? */64 /* Pending VLPIs on schedule out? */
55 bool pending_last;65 bool pending_last;
56};66};