Received: by 2002:a25:824b:0:0:0:0:0 with SMTP id d11csp1302840ybn; Wed, 25 Sep 2019 16:00:39 -0700 (PDT) X-Google-Smtp-Source: APXvYqw0GIKiOKalQYf5uyIcgn5dFV66eqBqbM1v6OByu8o0BVyVGD07ouWo4jk4fgPjrInUU8Lg X-Received: by 2002:a05:6402:1858:: with SMTP id v24mr464394edy.130.1569452439210; Wed, 25 Sep 2019 16:00:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1569452439; cv=none; d=google.com; s=arc-20160816; b=w0ac/nV/ZbtETxDt7Mx/RYhrX00IH+xr7octzJ8VP6SiiAoZn57RAxmEXCPuva4a89 ac//UMK56zNi5jxXFDxu1d1sh3GB4eZfsFsiHQK3X7FPvw4M3QnfRpMeLYDgrlj/VaE5 chQa+9UUtaDPJebl775Rx2mzlyXsrnlIDxQM05p7gZ6njvitm3/RXMum3EfKLgWt06po qAkUxs0VLF+llL4W3nBe6RLl37Dg9InZC+6CC7elIKdTxIkDMy6ccGsdMluKf9n9eL4D sVTePqlqGN5DcXctBXXiL0LlOTtGI3I2QAQoGG6voXzMIxxUHUMrLtWxOA6sgA6TlDfu 7j5w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=nLoZo39ltGge3mh4MppFBUnQGjF7KwO9/LVx2NKzP+0=; b=ZbYjl8Ne3IrV/Qkdb5XFt330IJQte4lwB7sy69031Fmfmof+c0TvsNC0KKEZXmFXv2 ZyP7ajifwAUvLEFOPuNh2+uzuPud8CZcundxPPjTsdv+IKgi9fEYKeffXzEnbc69/cFx zA2ndRPpGvMTqvjjNHfErQGD5E3UlOuhuMgQIY/DOlEaWZk2eFOZpNIjdYO2CI2iv9vV HLe1qBnaSRlP362C6dBkSLuF/luouEeE+YMLmYdTjfe2cciUZRwS4KnmFyi9yu9X+MHf xW99qllzCvQNl2w01Ssx/ZP5dYpeIDQE+DuYi+jT6bGECOCmntXEVcT4QGNrU6hs1ZZH nH9g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g15si280533edm.349.2019.09.25.16.00.15; Wed, 25 Sep 2019 16:00:39 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2502329AbfIWS1T (ORCPT + 99 others); Mon, 23 Sep 2019 14:27:19 -0400 Received: from foss.arm.com ([217.140.110.172]:46886 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2502300AbfIWS1S (ORCPT ); Mon, 23 Sep 2019 14:27:18 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 6D2541AED; Mon, 23 Sep 2019 11:27:18 -0700 (PDT) Received: from big-swifty.lan (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 898363F694; Mon, 23 Sep 2019 11:27:15 -0700 (PDT) From: Marc Zyngier To: kvmarm@lists.cs.columbia.edu, linux-kernel@vger.kernel.org Cc: Eric Auger , James Morse , Julien Thierry , Suzuki K Poulose , Thomas Gleixner , Jason Cooper , Lorenzo Pieralisi , Andrew Murray Subject: [PATCH 14/35] irqchip/gic-v4.1: Plumb skeletal VPE irqchip Date: Mon, 23 Sep 2019 19:25:45 +0100 Message-Id: <20190923182606.32100-15-maz@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190923182606.32100-1-maz@kernel.org> References: <20190923182606.32100-1-maz@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Just like for GICv4.0, each VPE has its own doorbell interrupt, and thus an irqchip that manages them. Since the doorbell management is quite different on GICv4.1, let's introduce an almost empty irqchip the will get populated over the next new patches. Signed-off-by: Marc Zyngier --- drivers/irqchip/irq-gic-v3-its.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c index c71aa0046bf0..4098ef6d030a 100644 --- a/drivers/irqchip/irq-gic-v3-its.c +++ b/drivers/irqchip/irq-gic-v3-its.c @@ -3403,6 +3403,32 @@ static struct irq_chip its_vpe_irq_chip = { .irq_set_vcpu_affinity = its_vpe_set_vcpu_affinity, }; +static int its_vpe_4_1_set_vcpu_affinity(struct irq_data *d, void *vcpu_info) +{ + struct its_cmd_info *info = vcpu_info; + + switch (info->cmd_type) { + case SCHEDULE_VPE: + return 0; + + case DESCHEDULE_VPE: + return 0; + + case INVALL_VPE: + return 0; + + default: + return -EINVAL; + } +} + +static struct irq_chip its_vpe_4_1_irq_chip = { + .name = "GICv4.1-vpe", + .irq_eoi = irq_chip_eoi_parent, + .irq_set_affinity = its_vpe_set_affinity, + .irq_set_vcpu_affinity = its_vpe_4_1_set_vcpu_affinity, +}; + static int its_vpe_id_alloc(void) { return ida_simple_get(&its_vpeid_ida, 0, ITS_MAX_VPEID, GFP_KERNEL); @@ -3483,6 +3509,7 @@ static void its_vpe_irq_domain_free(struct irq_domain *domain, static int its_vpe_irq_domain_alloc(struct irq_domain *domain, unsigned int virq, unsigned int nr_irqs, void *args) { + struct irq_chip *irqchip = &its_vpe_irq_chip; struct its_vm *vm = args; unsigned long *bitmap; struct page *vprop_page; @@ -3510,6 +3537,9 @@ static int its_vpe_irq_domain_alloc(struct irq_domain *domain, unsigned int virq vm->nr_db_lpis = nr_ids; vm->vprop_page = vprop_page; + if (gic_rdists->has_rvpeid) + irqchip = &its_vpe_4_1_irq_chip; + for (i = 0; i < nr_irqs; i++) { vm->vpes[i]->vpe_db_lpi = base + i; err = its_vpe_init(vm->vpes[i]); @@ -3520,7 +3550,7 @@ static int its_vpe_irq_domain_alloc(struct irq_domain *domain, unsigned int virq if (err) break; irq_domain_set_hwirq_and_chip(domain, virq + i, i, - &its_vpe_irq_chip, vm->vpes[i]); + irqchip, vm->vpes[i]); set_bit(i, bitmap); } -- 2.20.1