From patchwork Fri May 20 15:51:24 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Edgar E. Iglesias" X-Patchwork-Id: 9129861 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 6DD7B60772 for ; Fri, 20 May 2016 15:53:37 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5BAD327CC9 for ; Fri, 20 May 2016 15:53:37 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 4E32027BE4; Fri, 20 May 2016 15:53:37 +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.1 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_MED, T_DKIM_INVALID 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 7408F27BE4 for ; Fri, 20 May 2016 15:53:35 +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 1b3mi7-00079O-LE; Fri, 20 May 2016 15:51:35 +0000 Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b3mi6-00078w-AN for xen-devel@lists.xen.org; Fri, 20 May 2016 15:51:34 +0000 Received: from [193.109.254.147] by server-3.bemta-14.messagelabs.com id 10/87-03281-5823F375; Fri, 20 May 2016 15:51:33 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprHIsWRWlGSWpSXmKPExsXiVRvkqNtqZB9 u8GEGo8WSj4tZHBg9ju7+zRTAGMWamZeUX5HAmjHh8DvmggfCFdd/7mFtYFzB38XIxSEkMIlR Yt/dz0wgDovASxaJE2d+M4M4EgL9rBKnpmxh62LkBHJiJN49ecYMYZdLrFjwAswWElCXOP1uB xvEqBlMEi0bFoE1sAmYSOz984AJxBYRkJa49vkyI4jNLOArcXPncaA4B4ewQKTE6id2ICaLgK rEzlsRIBW8Ah4Snb8WMIOEJQTkJBZcSAcJcwp4SrSvOMcIsdVDomXHQZYJjAILGBlWMWoUpxa VpRbpGhroJRVlpmeU5CZm5ugaGpro5aYWFyemp+YkJhXrJefnbmIEhhUDEOxgPLfM+RCjJAeT kiivmrh9uBBfUn5KZUZicUZ8UWlOavEhRhkODiUJ3nsGQDnBotT01Iq0zBxggMOkJTh4lER4Y wyB0rzFBYm5xZnpEKlTjLocW6beW8skxJKXn5cqJc4bAVIkAFKUUZoHNwIWbZcYZaWEeRmBjh LiKUgtys0sQZV/xSjOwagkzLsX5BKezLwSuE2vgI5gAjrilpgNyBEliQgpqQZGw/INuUW3fYt ehF5ySBJ5es3lk1fUuuqHU9bbr3we32fqsvqY/q7PUV2CJ08d6G3LEdsyX275/2n/pvuf5Vy7 fr3Dsl3ndVQCH+0/2vG8x6CywqzttVv6ovnaFV+Weyy/NlX9y33rb0J9Pgs+7FHvtrCKTWHKr AtK3KG7vV/s/IvAl6fTFB1rlFiKMxINtZiLihMBaOyXNbECAAA= X-Env-Sender: edgar.iglesias@gmail.com X-Msg-Ref: server-16.tower-27.messagelabs.com!1463759492!42843783!1 X-Originating-IP: [74.125.82.65] X-SpamReason: No, hits=0.0 required=7.0 tests= X-StarScan-Received: X-StarScan-Version: 8.34; banners=-,-,- X-VirusChecked: Checked Received: (qmail 62785 invoked from network); 20 May 2016 15:51:32 -0000 Received: from mail-wm0-f65.google.com (HELO mail-wm0-f65.google.com) (74.125.82.65) by server-16.tower-27.messagelabs.com with AES128-GCM-SHA256 encrypted SMTP; 20 May 2016 15:51:32 -0000 Received: by mail-wm0-f65.google.com with SMTP id n129so30292873wmn.1 for ; Fri, 20 May 2016 08:51:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=AqhiU9r1HWGB75EOgPR6BpuE4Mf/ekle9DuxpIRuduw=; b=voUegrVYJ5US/O3onSlMVu/ApSjT7wElJCjK+VtEuXgtzedpwHxAe8wM5NmAbuUi0a /qAUzlBrteS/CqU3XXrq7ihhmJMCxDq3p/Zqeadcj2XlisSqY0gu8KSLnkRT9Fbwf03I 7u1NzClFW/2J+sqFJ+O4jBp3U/bNHHgsZj4GfOEmzcOiyj2yyS43D0osZAZXzBvxbF9i AuuTqwI3SDR1m4ntJGyoRG3R2if2oP/I7uqdbGXY4jpFihbQ/6g++7WLLNrWuM7W5Nmc wrCfynQphLHoqwFJv5IQ1GIMbA/UquJFP6fAK4sGl7659nXipsNQnJEyiCv1PN6fRQWm QdZw== 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=AqhiU9r1HWGB75EOgPR6BpuE4Mf/ekle9DuxpIRuduw=; b=Z66FTY1Bkeelpwj4xECGBnpmoFwJobJkH+fCruHp6NLMSzs8fB6g5WITN2RnC8OhhW zLOHmiQ7CX/BAamo0FnvKfEx+so+vBnYWR4lwtm9a3rHWRnZtHz1QkMNWR8lga+AeoWz i/ib5iEEXLikN7TWaddrs6DXZ89TjAjsMf2A8DezdzvCw8aCC90LUsFqPcSbONelvQva vQy+AZTOOAkSb0u3cIQ44fAyr21f99Fl/nNHwaMAAyiHdtko56fiW/yUxf0SR+c8N42r WqijVMlf1OZpI5+h+6SMz1dO/Ueky9TB7jkLyHtEUkYZKtnJC0bv+PqLgIjCIqv2twLg 72sQ== X-Gm-Message-State: AOPr4FW2d2C/nCkDMtAmiIbYZxZ73MqEc9O14/sBgKAPoIZOvGgszcmK4GuJR2JZ4758rw== X-Received: by 10.28.9.137 with SMTP id 131mr4411181wmj.13.1463759492427; Fri, 20 May 2016 08:51:32 -0700 (PDT) Received: from localhost (81-231-233-234-no56.tbcn.telia.com. [81.231.233.234]) by smtp.gmail.com with ESMTPSA id d79sm5166160wmi.23.2016.05.20.08.51.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 May 2016 08:51:31 -0700 (PDT) From: "Edgar E. Iglesias" To: xen-devel@lists.xen.org Date: Fri, 20 May 2016 17:51:24 +0200 Message-Id: <1463759488-11900-3-git-send-email-edgar.iglesias@gmail.com> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1463759488-11900-1-git-send-email-edgar.iglesias@gmail.com> References: <1463759488-11900-1-git-send-email-edgar.iglesias@gmail.com> Cc: edgar.iglesias@xilinx.com, julien.grall@arm.com, sstabellini@kernel.org Subject: [Xen-devel] [RFC for-4.8 2/6] xen/arm: Add an optional map function to the device descriptor 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: "Edgar E. Iglesias" Add an optional map function to the device descriptor. If registered, the map function will be called to do custom device specific mappings of the device. If not registered, the generic DT version (handle_device) will be used. This is in preparation for adding support for "mmio-sram" memory that needs to be mapped as MEMORY and not DEVICE. Signed-off-by: Edgar E. Iglesias --- xen/arch/arm/domain_build.c | 13 ++++++++++++- xen/include/asm-arm/device.h | 10 ++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index 00dc07a..15b6dbe 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -1212,6 +1212,7 @@ static int handle_node(struct domain *d, struct kernel_info *kinfo, DT_MATCH_PATH("/hypervisor"), { /* sentinel */ }, }; + const struct device_desc *desc; struct dt_device_node *child; int res; const char *name; @@ -1233,6 +1234,8 @@ static int handle_node(struct domain *d, struct kernel_info *kinfo, return 0; } + desc = device_get_desc(node); + /* * Replace these nodes with our own. Note that the original may be * used_by DOMID_XEN so this check comes first. @@ -1268,7 +1271,15 @@ static int handle_node(struct domain *d, struct kernel_info *kinfo, "WARNING: Path %s is reserved, skip the node as we may re-use the path.\n", path); - res = handle_device(d, node); + if ( desc && desc->map ) + { + res = desc->map(d, node); + } + else + { + res = handle_device(d, node); + } + if ( res) return res; diff --git a/xen/include/asm-arm/device.h b/xen/include/asm-arm/device.h index 1a40a02..98b9fe1 100644 --- a/xen/include/asm-arm/device.h +++ b/xen/include/asm-arm/device.h @@ -48,6 +48,16 @@ struct device_desc { const struct dt_device_match *dt_match; /* Device initialization */ int (*init)(struct dt_device_node *dev, const void *data); + + /** + * map - Custom map function to map a devices memory regions and IRQs + * @d: Domain to map device into + * @dev: Device tree node representing the device + * + * OPTIONAL: If not set the generic DT code will take care of creating + * the mappings. + */ + int (*map)(struct domain *d, struct dt_device_node *dev); }; struct acpi_device_desc {