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
3939 irq_hw_number_t vpe_db_lpi;
4040 /* VPE resident */
4141 bool resident;
42− /* VPE proxy mapping */
43− int vpe_proxy_event;
42+ union {
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+
4456 /*
4557 * This collection ID is used to indirect the target
4658 * redistributor for this VPE. The ID itself isn't involved in
@@ -49,8 +61,6 @@ struct its_vpe { · 2 unmodified lines
4961 u16 col_idx;
5062 /* Unique (system-wide) VPE identifier */
5163 u16 vpe_id;
52− /* Implementation Defined Area Invalid */
53− bool idai;
5464 /* Pending VLPIs on schedule out? */
5565 bool pending_last;
5666 };