From patchwork Thu Oct 19 12:48:39 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andre Przywara X-Patchwork-Id: 10016633 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 9627C60224 for ; Thu, 19 Oct 2017 12:51:20 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 75AD628D26 for ; Thu, 19 Oct 2017 12:51:20 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 69A7228D42; Thu, 19 Oct 2017 12:51:20 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id A9EEF28D26 for ; Thu, 19 Oct 2017 12:51:19 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e5AG6-0004R1-7q; Thu, 19 Oct 2017 12:49:10 +0000 Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e5AG5-0004Qj-5L for xen-devel@lists.xenproject.org; Thu, 19 Oct 2017 12:49:09 +0000 Received: from [85.158.143.35] by server-6.bemta-6.messagelabs.com id FF/0B-08608-44F98E95; Thu, 19 Oct 2017 12:49:08 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrELMWRWlGSWpSXmKPExsVysyfVTddl/ot Ig1UaFt+3TGZyYPQ4/OEKSwBjFGtmXlJ+RQJrxqc5p5kLzitX9Oy+wNbAuEiui5GLQ0hgA6PE +5nb2CCc5YwSHStXM3UxcnKwCehK7Lj5mhnEFhGIkDj9+BJYnFlASWL/2WuMILawgLPE1n37W EFsFgFViT2zP7CB2LwCVhIbl3axg9gSAvIS5x7cBpvDKWAtcXvvDbBeIaCabQ/fMU5g5F7AyL CKUaM4tagstUjXyEAvqSgzPaMkNzEzR9fQwEwvN7W4ODE9NScxqVgvOT93EyPQvwxAsIPx17K AQ4ySHExKorwfq15ECvEl5adUZiQWZ8QXleakFh9ilOHgUJLgZZ4HlBMsSk1PrUjLzAEGGkxa goNHSYQ3ei5Qmre4IDG3ODMdInWKUZej4+bdP0xCLHn5ealS4rx3QYoEQIoySvPgRsCC/hKjr JQwLyPQUUI8BalFuZklqPKvGMU5GJWEeZ+BTOHJzCuB2/QK6AgmoCPY7cGOKElESEk1MHr8XT XnhpXTJ95Y3SoTcfeqZeVGH5MM8xW6xa5WuWz57lz358r6t7nBYoedf2ownrn2XPaFvpXRo93 T3ONdZhcbep6euO2aUOZjJvkXWotUt08K7T/ZN4HjcdbSoL+L9Zc8+q7v8c2k78u5y07rBC/n 1/01M/yg8cf+IfvtfcviHnYv2n1q5V4lluKMREMt5qLiRADJQPDtdQIAAA== X-Env-Sender: andre.przywara@arm.com X-Msg-Ref: server-15.tower-21.messagelabs.com!1508417347!77805692!1 X-Originating-IP: [217.140.101.70] X-SpamReason: No, hits=0.0 required=7.0 tests= X-StarScan-Received: X-StarScan-Version: 9.4.45; banners=-,-,- X-VirusChecked: Checked Received: (qmail 37696 invoked from network); 19 Oct 2017 12:49:07 -0000 Received: from usa-sjc-mx-foss1.foss.arm.com (HELO foss.arm.com) (217.140.101.70) by server-15.tower-21.messagelabs.com with SMTP; 19 Oct 2017 12:49:07 -0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 2198BF; Thu, 19 Oct 2017 05:49:07 -0700 (PDT) Received: from e104803-lin.lan (unknown [10.1.207.46]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 35D883F3E1; Thu, 19 Oct 2017 05:49:06 -0700 (PDT) From: Andre Przywara To: Julien Grall , Stefano Stabellini Date: Thu, 19 Oct 2017 13:48:39 +0100 Message-Id: <20171019124847.5978-5-andre.przywara@arm.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20171019124847.5978-1-andre.przywara@arm.com> References: <20171019124847.5978-1-andre.przywara@arm.com> Cc: xen-devel@lists.xenproject.org Subject: [Xen-devel] [PATCH 04/12] ARM: VGIC: move gic_remove_irq_from_queues() X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP gic_remove_irq_from_queues() was not only misnamed, it also has the wrong abstraction, as it should not live in gic.c. Move it into vgic.c and vgic.h, where it belongs to, and rename it on the way. Signed-off-by: Andre Przywara Reviewed-by: Stefano Stabellini --- xen/arch/arm/gic.c | 9 --------- xen/arch/arm/vgic-v3-its.c | 4 ++-- xen/arch/arm/vgic.c | 11 ++++++++++- xen/include/asm-arm/gic.h | 1 - xen/include/asm-arm/vgic.h | 1 + 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c index 75b2e0e0ca..ef041354ea 100644 --- a/xen/arch/arm/gic.c +++ b/xen/arch/arm/gic.c @@ -411,15 +411,6 @@ void gic_remove_from_lr_pending(struct vcpu *v, struct pending_irq *p) list_del_init(&p->lr_queue); } -void gic_remove_irq_from_queues(struct vcpu *v, struct pending_irq *p) -{ - ASSERT(spin_is_locked(&v->arch.vgic.lock)); - - clear_bit(GIC_IRQ_GUEST_QUEUED, &p->status); - list_del_init(&p->inflight); - gic_remove_from_lr_pending(v, p); -} - void gic_raise_inflight_irq(struct vcpu *v, unsigned int virtual_irq) { struct pending_irq *n = irq_to_pending(v, virtual_irq); diff --git a/xen/arch/arm/vgic-v3-its.c b/xen/arch/arm/vgic-v3-its.c index 72a5c70656..d8fa44258d 100644 --- a/xen/arch/arm/vgic-v3-its.c +++ b/xen/arch/arm/vgic-v3-its.c @@ -381,7 +381,7 @@ static int its_handle_clear(struct virt_its *its, uint64_t *cmdptr) * have no active state, we don't need to care about this here. */ if ( !test_bit(GIC_IRQ_GUEST_VISIBLE, &p->status) ) - gic_remove_irq_from_queues(vcpu, p); + vgic_remove_irq_from_queues(vcpu, p); spin_unlock_irqrestore(&vcpu->arch.vgic.lock, flags); ret = 0; @@ -619,7 +619,7 @@ static int its_discard_event(struct virt_its *its, } /* Cleanup the pending_irq and disconnect it from the LPI. */ - gic_remove_irq_from_queues(vcpu, p); + vgic_remove_irq_from_queues(vcpu, p); vgic_init_pending_irq(p, INVALID_LPI); spin_unlock_irqrestore(&vcpu->arch.vgic.lock, flags); diff --git a/xen/arch/arm/vgic.c b/xen/arch/arm/vgic.c index 451a306a98..cd50b90d67 100644 --- a/xen/arch/arm/vgic.c +++ b/xen/arch/arm/vgic.c @@ -281,7 +281,7 @@ bool vgic_migrate_irq(struct vcpu *old, struct vcpu *new, unsigned int irq) /* If the IRQ is still lr_pending, re-inject it to the new vcpu */ if ( !list_empty(&p->lr_queue) ) { - gic_remove_irq_from_queues(old, p); + vgic_remove_irq_from_queues(old, p); irq_set_affinity(p->desc, cpumask_of(new->processor)); spin_unlock_irqrestore(&old->arch.vgic.lock, flags); vgic_vcpu_inject_irq(new, irq); @@ -510,6 +510,15 @@ void vgic_clear_pending_irqs(struct vcpu *v) spin_unlock_irqrestore(&v->arch.vgic.lock, flags); } +void vgic_remove_irq_from_queues(struct vcpu *v, struct pending_irq *p) +{ + ASSERT(spin_is_locked(&v->arch.vgic.lock)); + + clear_bit(GIC_IRQ_GUEST_QUEUED, &p->status); + list_del_init(&p->inflight); + gic_remove_from_lr_pending(v, p); +} + void vgic_vcpu_inject_irq(struct vcpu *v, unsigned int virq) { uint8_t priority; diff --git a/xen/include/asm-arm/gic.h b/xen/include/asm-arm/gic.h index 2f248301ce..030c1d86a7 100644 --- a/xen/include/asm-arm/gic.h +++ b/xen/include/asm-arm/gic.h @@ -243,7 +243,6 @@ extern void gic_raise_guest_irq(struct vcpu *v, unsigned int irq, unsigned int priority); extern void gic_raise_inflight_irq(struct vcpu *v, unsigned int virtual_irq); extern void gic_remove_from_lr_pending(struct vcpu *v, struct pending_irq *p); -extern void gic_remove_irq_from_queues(struct vcpu *v, struct pending_irq *p); /* Accept an interrupt from the GIC and dispatch its handler */ extern void gic_interrupt(struct cpu_user_regs *regs, int is_fiq); diff --git a/xen/include/asm-arm/vgic.h b/xen/include/asm-arm/vgic.h index e489d0bf21..8d0ff65708 100644 --- a/xen/include/asm-arm/vgic.h +++ b/xen/include/asm-arm/vgic.h @@ -204,6 +204,7 @@ extern int vcpu_vgic_init(struct vcpu *v); extern struct vcpu *vgic_get_target_vcpu(struct vcpu *v, unsigned int virq); extern void vgic_vcpu_inject_irq(struct vcpu *v, unsigned int virq); extern void vgic_vcpu_inject_spi(struct domain *d, unsigned int virq); +void vgic_remove_irq_from_queues(struct vcpu *v, struct pending_irq *p); extern void vgic_clear_pending_irqs(struct vcpu *v); extern void vgic_init_pending_irq(struct pending_irq *p, unsigned int virq); extern struct pending_irq *irq_to_pending(struct vcpu *v, unsigned int irq);