lkml.org 
[lkml]   [2020]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip: irq/core] irqchip/gic-v4.1: Suppress per-VLPI doorbell
    The following commit has been merged into the irq/core branch of tip:

    Commit-ID: 3858d4dfdfb845e51ee8b4045f61ccba2c3111ee
    Gitweb: https://git.kernel.org/tip/3858d4dfdfb845e51ee8b4045f61ccba2c3111ee
    Author: Marc Zyngier <maz@kernel.org>
    AuthorDate: Tue, 24 Dec 2019 11:10:37
    Committer: Marc Zyngier <maz@kernel.org>
    CommitterDate: Wed, 22 Jan 2020 14:22:21

    irqchip/gic-v4.1: Suppress per-VLPI doorbell

    Since GICv4.1 gives us a per-VPE doorbell, avoid programming anything
    else on VMOVI/VMAPI/VMAPTI and on any other action that would have
    otherwise resulted in a per-VLPI doorbell to be programmed.

    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Reviewed-by: Zenghui Yu <yuzenghui@huawei.com>
    Link: https://lore.kernel.org/r/20191224111055.11836-15-maz@kernel.org
    ---
    drivers/irqchip/irq-gic-v3-its.c | 11 +++++++++--
    1 file changed, 9 insertions(+), 2 deletions(-)

    diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
    index 1d8d96a..53e91c9 100644
    --- a/drivers/irqchip/irq-gic-v3-its.c
    +++ b/drivers/irqchip/irq-gic-v3-its.c
    @@ -718,7 +718,7 @@ static struct its_vpe *its_build_vmapti_cmd(struct its_node *its,
    {
    u32 db;

    - if (desc->its_vmapti_cmd.db_enabled)
    + if (!is_v4_1(its) && desc->its_vmapti_cmd.db_enabled)
    db = desc->its_vmapti_cmd.vpe->vpe_db_lpi;
    else
    db = 1023;
    @@ -741,7 +741,7 @@ static struct its_vpe *its_build_vmovi_cmd(struct its_node *its,
    {
    u32 db;

    - if (desc->its_vmovi_cmd.db_enabled)
    + if (!is_v4_1(its) && desc->its_vmovi_cmd.db_enabled)
    db = desc->its_vmovi_cmd.vpe->vpe_db_lpi;
    else
    db = 1023;
    @@ -1353,6 +1353,13 @@ static void its_vlpi_set_doorbell(struct irq_data *d, bool enable)
    u32 event = its_get_event_id(d);
    struct its_vlpi_map *map;

    + /*
    + * GICv4.1 does away with the per-LPI nonsense, nothing to do
    + * here.
    + */
    + if (is_v4_1(its_dev->its))
    + return;
    +
    map = dev_event_to_vlpi_map(its_dev, event);

    if (map->db_enabled == enable)
    \
     
     \ /
      Last update: 2020-01-24 20:13    [W:2.833 / U:0.188 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site