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. Signed-off-by: Marc Zyngier <maz@kernel.org> Reviewed-by: Zenghui Yu <yuzenghui@huawei.com> Link: https://lore.kernel.org/r/20191224111055.11836-7-maz@kernel.org
This commit is contained in:
@@ -39,8 +39,20 @@ struct its_vpe {
|
||||
irq_hw_number_t vpe_db_lpi;
|
||||
/* VPE resident */
|
||||
bool resident;
|
||||
/* VPE proxy mapping */
|
||||
int vpe_proxy_event;
|
||||
union {
|
||||
/* GICv4.0 implementations */
|
||||
struct {
|
||||
/* VPE proxy mapping */
|
||||
int vpe_proxy_event;
|
||||
/* Implementation Defined Area Invalid */
|
||||
bool idai;
|
||||
};
|
||||
/* GICv4.1 implementations */
|
||||
struct {
|
||||
atomic_t vmapp_count;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* This collection ID is used to indirect the target
|
||||
* redistributor for this VPE. The ID itself isn't involved in
|
||||
@@ -49,8 +61,6 @@ struct its_vpe {
|
||||
u16 col_idx;
|
||||
/* Unique (system-wide) VPE identifier */
|
||||
u16 vpe_id;
|
||||
/* Implementation Defined Area Invalid */
|
||||
bool idai;
|
||||
/* Pending VLPIs on schedule out? */
|
||||
bool pending_last;
|
||||
};
|
||||
|
Reference in New Issue
Block a user