From patchwork Mon Sep 5 10:14:00 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kyle Temkin X-Patchwork-Id: 9313409 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 BC1CC600CA for ; Mon, 5 Sep 2016 10:17:13 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A7D7928A0C for ; Mon, 5 Sep 2016 10:17:13 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9CB0328A40; Mon, 5 Sep 2016 10:17:13 +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=-1.7 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED, RCVD_IN_SORBS_SPAM, T_DKIM_INVALID autolearn=no 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 56A4028A0C for ; Mon, 5 Sep 2016 10:17:13 +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 1bgqva-0002R0-S5; Mon, 05 Sep 2016 10:14:58 +0000 Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bgqvZ-0002QQ-I7 for xen-devel@lists.xen.org; Mon, 05 Sep 2016 10:14:57 +0000 Received: from [85.158.143.35] by server-1.bemta-6.messagelabs.com id 24/41-21406-0A54DC75; Mon, 05 Sep 2016 10:14:56 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrEIsWRWlGSWpSXmKPExsVyMfTOYd0Frmf DDR5uUrRY8nExiwOjx9Hdv5kCGKNYM/OS8isSWDMmf9vNWDBfoOLAq3/MDYwXeLsYuTiEBCYy Sqzb2M4E4rAINLFKnHy9mBnEkRDoZ5VY9/A0axcjJ5ATI3G14SQLhF0tcf5FE1hcSEBeYs7Mf kaIUZOZJO7OucMOkmATUJHoutnH1sXIAdRgJXF2MVhYREBa4trny4wgNrNAtMTpVpDNnBzCAh 4Se5ddAIuzCKhKrHjyEMzmFbCQeHtgBzPEXjmJl69/gtmcApYSb8+/ZIa4wUJi1t2XTBMYBRc wMqxi1ChOLSpLLdI1NNdLKspMzyjJTczM0TU0MNPLTS0uTkxPzUlMKtZLzs/dxAgMOQYg2MF4 e2PAIUZJDiYlUd4C1bPhQnxJ+SmVGYnFGfFFpTmpxYcYZTg4lCR4XVyAcoJFqempFWmZOcDgh 0lLcPAoifDygKR5iwsSc4sz0yFSpxiNObb8vraWiWPb1HtrmYRY8vLzUqXEeUtBSgVASjNK8+ AGwaLyEqOslDAvI9BpQjwFqUW5mSWo8q8YxTkYlYR5VUCm8GTmlcDtewV0ChPQKet2nwY5pSQ RISXVwGh1+/ZbGecvlm3ej7QnNib3cXuwrf2mmrKx8On+knZns6MCXQ3iFhuDS+q/cQmXsPLe //156o2s0hLR6asvPcl5620cyjzPU8V+xgaR6sKmxocuZz2sbj/I+X3j4ZdZ+7K/NfM22ms92 BI+5e7yuFs+DB+KJycruFTb5cnH+bQtCJ1c1bJgpRJLcUaioRZzUXEiAE/i4fXFAgAA X-Env-Sender: kyle@ktemkin.com X-Msg-Ref: server-16.tower-21.messagelabs.com!1473070495!27184091!1 X-Originating-IP: [209.85.220.195] X-SpamReason: No, hits=0.0 required=7.0 tests= X-StarScan-Received: X-StarScan-Version: 8.84; banners=-,-,- X-VirusChecked: Checked Received: (qmail 11195 invoked from network); 5 Sep 2016 10:14:56 -0000 Received: from mail-qk0-f195.google.com (HELO mail-qk0-f195.google.com) (209.85.220.195) by server-16.tower-21.messagelabs.com with AES128-GCM-SHA256 encrypted SMTP; 5 Sep 2016 10:14:56 -0000 Received: by mail-qk0-f195.google.com with SMTP id o1so12133185qkd.2 for ; Mon, 05 Sep 2016 03:14:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ktemkin-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=S2UM9m38tUGyCNmx5m28zJDxziIIzU+ChMQp2/qCqIg=; b=lJcoqDRtvf18aGqaSOO9a6cUfQzRZv6lBqpFL2PPgWxK9jeIFpBX4ZVD3vl/VV1T6d zBDfo5OZJRrWKOLy2nOFclJU2ZcW9j49tbGVHCtBsWojEKtDGFHgyYSQC8UXWkm5j7gL Fb8lbn9fsrwdpUwRyfV2qJsRyzZojF1urPwgkplV3FLF//qhsEJX1NL1McaIFPFBGGdy 4cug10F8KKaXw0oBO9mkBfG66P7IXh+3upCZx5los8xBNWvsqjVHu0orJqnm/zkIwpM3 DXzhe/EATZkxZLTX0SSzeOIYBf0uWw01Sg6aiq7HUK8yELqvTrWROMV4cV1BZMVqKaNr 7Dug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=S2UM9m38tUGyCNmx5m28zJDxziIIzU+ChMQp2/qCqIg=; b=aOo5PS7GurLTeMn3qlz35RGwWC5ZnShfjS3yW+6Sq2eAKT0N8HrqGLz2QjWHvfXyJ1 C2/D2P1ZSEQAGy5Yyasqk2UeFtUeBiYg2is6tE73QbPqWXubXEK6EYSwVd5es2xLCLtp PFs8D79JOhCm1ba1Vuuvcylr7KYKoN4MKbAyaLGSLa9YIe9ELbNUVjsnMd/BWxlfu9fy KKH8kd4oGSIb4CkT3nryM317lMKM3fq4MjpceMlJb9ChJMgl3459+hho6tXggA+lWZHl 9yV1bMHkmG0nEn+cfqLkgJXAvoqJQArTISyN0Hkc7T2Y7rBRsids22HcWzCvpwtFnkoR Et2A== X-Gm-Message-State: AE9vXwOTwM27w0IpSn2BlPYgg6abRnpdMHnaXrFIMe6edALRHtIsm2+K9Iwo0/vq+8J6Sg== X-Received: by 10.55.103.145 with SMTP id b139mr36799505qkc.15.1473070495388; Mon, 05 Sep 2016 03:14:55 -0700 (PDT) Received: from arch.twcny.rr.com ([2604:6000:ab82:8101:c6e9:84ff:fec5:418]) by smtp.gmail.com with ESMTPSA id e7sm14323997qtb.9.2016.09.05.03.14.54 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 05 Sep 2016 03:14:55 -0700 (PDT) From: Kyle Temkin X-Google-Original-From: Kyle Temkin To: xen-devel@lists.xen.org Date: Mon, 5 Sep 2016 06:14:00 -0400 Message-Id: <20160905101401.7003-6-temkink@ainfosec.com> X-Mailer: git-send-email 2.9.2 In-Reply-To: <20160905101401.7003-1-temkink@ainfosec.com> References: <20160905101401.7003-1-temkink@ainfosec.com> Cc: julien.grall@arm.com, sstabellini@kernel.org, "Kyle J. Temkin" Subject: [Xen-devel] [PATCH RFC 5/6] xen/arm: Add function to query IRQ 'ownership'. 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 From: "Kyle J. Temkin" The addition of new IRQ-related platform hooks now allow platforms to perform platform-specific interrupt logic; allowing e.g. virtualization of platform-specific interrupt controller hardware. This commit adds the ability to for the platform to identify the domain a given IRQ routes to, allowing platform logic to e.g. deny access to registers associated with a given IRQ unless the requesting domain 'owns' the IRQ. This will be used on Tegra platforms, where the hardware domain needs access to its legacy interrupt controller, but should not be able to control registers that correspond to other domains' IRQs, or sections associated with IRQs routed to Xen. Signed-off-by: Kyle Temkin Reviewed-by: Stefano Stabellini --- xen/arch/arm/irq.c | 10 ++++++++++ xen/include/asm-arm/irq.h | 2 ++ 2 files changed, 12 insertions(+) diff --git a/xen/arch/arm/irq.c b/xen/arch/arm/irq.c index dc42817..c6e1a24 100644 --- a/xen/arch/arm/irq.c +++ b/xen/arch/arm/irq.c @@ -144,6 +144,16 @@ static inline struct domain *irq_get_domain(struct irq_desc *desc) return irq_get_guest_info(desc)->d; } +domid_t irq_get_domain_id(struct irq_desc *desc) +{ + // If this domain isn't routed to a guest, return DOMID_XEN. + if(!test_bit(_IRQ_GUEST, &desc->status)) + return DOMID_XEN; + + // Otherise, get the guest domain's information. + return irq_get_domain(desc)->domain_id; +} + void irq_set_affinity(struct irq_desc *desc, const cpumask_t *cpu_mask) { if ( desc != NULL ) diff --git a/xen/include/asm-arm/irq.h b/xen/include/asm-arm/irq.h index 8f7a167..55300a8 100644 --- a/xen/include/asm-arm/irq.h +++ b/xen/include/asm-arm/irq.h @@ -45,6 +45,8 @@ int route_irq_to_guest(struct domain *d, unsigned int virq, unsigned int irq, const char *devname); int release_guest_irq(struct domain *d, unsigned int irq); +domid_t irq_get_domain_id(struct irq_desc *desc); + void arch_move_irqs(struct vcpu *v); #define arch_evtchn_bind_pirq(d, pirq) ((void)((d) + (pirq)))