From patchwork Fri Jun 3 13:29:12 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: 9153067 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 0252F607D5 for ; Fri, 3 Jun 2016 13:31:49 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E76E4282E8 for ; Fri, 3 Jun 2016 13:31:48 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id DB9EE282EE; Fri, 3 Jun 2016 13:31:48 +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 90E362832F for ; Fri, 3 Jun 2016 13:31:48 +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 1b8pAl-0005xu-Hv; Fri, 03 Jun 2016 13:29:59 +0000 Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b8pAk-0005wL-AE for xen-devel@lists.xen.org; Fri, 03 Jun 2016 13:29:58 +0000 Received: from [85.158.137.68] by server-3.bemta-3.messagelabs.com id 05/1F-15051-55681575; Fri, 03 Jun 2016 13:29:57 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprLIsWRWlGSWpSXmKPExsXiVRvkohvaFhh ucHEPk8WSj4tZHBg9ju7+zRTAGMWamZeUX5HAmtG8ZQF7wW7Big3rtzM1MO7i7WLk4hASmMAo 0fz2EyOIwyLwkkXi1cVPzCCOhEA/q8SqS5uBHA4gJ0bixfWaLkZOILNC4tW33cwgtpCAusTpd zvYICbNYJJYM/UgI0iCTcBEYu+fB0wgtoiAtMS1z5fB4swCvhI3dx4HiwsLREps7X3OBDKfRU BV4t6eApAwr4C7xLuFU1kg1spJLLiQDhLmFPCQeH7qJRtIWAio5Nk9tQmMAgsYGVYxahSnFpW lFukaGuslFWWmZ5TkJmbm6BoaGOvlphYXJ6an5iQmFesl5+duYgQGFQMQ7GDctt3zEKMkB5OS KO/5swHhQnxJ+SmVGYnFGfFFpTmpxYcYZTg4lCR47VoDw4UEi1LTUyvSMnOA4Q2TluDgURLhj QJJ8xYXJOYWZ6ZDpE4x6nJsmXpvLZMQS15+XqqUOK8iSJEASFFGaR7cCFisXWKUlRLmZQQ6So inILUoN7MEVf4VozgHo5Iw73KQKTyZeSVwm14BHcEEdETBI3+QI0oSEVJSDYxrN62JnW8qYaS 3cemn5WuVv8yuO/vh3+HJq75Zc+V2POr7cH2PYc/+06Ffu1w5q89MVb6aJ8vetfopa3O9/JWz nL17CyW3HQ/v4Ymf8MOn2ukao2Zj+vbiIzO3HHuftM2eh/vyt4Lf8xoublz6dMK3uue8DhK14 scv/le7d13S8gfr1Q3s4vm3lViKMxINtZiLihMBJqvyCLACAAA= X-Env-Sender: edgar.iglesias@gmail.com X-Msg-Ref: server-6.tower-31.messagelabs.com!1464960596!17363914!1 X-Originating-IP: [74.125.82.68] X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG X-StarScan-Received: X-StarScan-Version: 8.46; banners=-,-,- X-VirusChecked: Checked Received: (qmail 50988 invoked from network); 3 Jun 2016 13:29:56 -0000 Received: from mail-wm0-f68.google.com (HELO mail-wm0-f68.google.com) (74.125.82.68) by server-6.tower-31.messagelabs.com with AES128-GCM-SHA256 encrypted SMTP; 3 Jun 2016 13:29:56 -0000 Received: by mail-wm0-f68.google.com with SMTP id e3so23577260wme.2 for ; Fri, 03 Jun 2016 06:29:56 -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=hvSv/yE4BeOo95dtjOShCPi05bcFLPcHsq4ngxiWKgk=; b=jC8X0rBse8nqgbHiA8s8vZ2FzYOJIn7gadroVwaWrXdhWflBl1A44lf1VB1jdrz22h /fPn2UelRyr40UcP+4sw9lNgzMdbssqcEEnTFf8gdeOb0qXEC0KUKm+au9JU3udcwlHr 1uYFYc6tR0/m6WFxujgSyDQOm/COj8mmRL/O8n29htSFocmv1wyndC2se1FpSPfiTu/6 7EgdvE7lhUD2Lm0oC5fhsA/QymIOb6GfdIAlfqub6p/6WrNSQMmMu5L7HZ2SL5kQXDu8 3IUn1IUhbOBbk3dO1PyHFOcY90QWOlIy6fBY0zUqTWvSXLREtIEE4X3L4vrXYMFU969z pWtg== 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=hvSv/yE4BeOo95dtjOShCPi05bcFLPcHsq4ngxiWKgk=; b=g/U4xiV6gtIVxOCDJ9H2ohf50zpmnNeHFqA4lWzusLZUYXQNH7hG/oIKUM1fGLlk5z yOBytomuBIgvVoxniJiWwik9wuiKX+iEm666y82oVnGwOMxGWnf5j+r1Dv0B70haaQ/I 6LX8NwucT9T32XbqiMj7+9pc8tnc6TjPkRynDOUFXJZN8A0Z3cgBJS9ylf2UYvhGhKmt 7tTsGMEINYLqW8CKgnDI7oH7JuHWQEOsyuij6kdveA5LttJ/x8ZY4UZobcGzM+1Y0N79 Vos2P0o4avsILc9G8ixqvDcfbyj+TLKjm+bkdfUnvcxnNLq8jcHJUrjFPqAWYypDHf94 LvRg== X-Gm-Message-State: ALyK8tKCr1ShN+6N7zUwFQGdlzdQkgCu7KOVloN8tMfQ1DOQlQwLlXhgE3RVi/dIim3oTQ== X-Received: by 10.194.19.199 with SMTP id h7mr3367538wje.91.1464960596671; Fri, 03 Jun 2016 06:29:56 -0700 (PDT) Received: from localhost (81-231-233-234-no56.tbcn.telia.com. [81.231.233.234]) by smtp.gmail.com with ESMTPSA id ug8sm5760548wjc.42.2016.06.03.06.29.54 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 03 Jun 2016 06:29:54 -0700 (PDT) From: "Edgar E. Iglesias" To: xen-devel@lists.xen.org Date: Fri, 3 Jun 2016 15:29:12 +0200 Message-Id: <1464960552-6645-8-git-send-email-edgar.iglesias@gmail.com> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1464960552-6645-1-git-send-email-edgar.iglesias@gmail.com> References: <1464960552-6645-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 v2 7/7] xen/arm: Map mmio-sram nodes as normal un-cached rwx memory 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" Map mmio-sram nodes as normal un-cached MEMORY with RWX perms. If the node has set the no-memory-wc property, we map it as DEVICE RW. Signed-off-by: Edgar E. Iglesias --- xen/arch/arm/domain_build.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index 064feb3..2a2316b 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -54,6 +54,32 @@ struct map_range_data const struct map_attr *attr; }; +static const struct map_attr mattr_device_rw __initconst = +{ + .memattr = MATTR_DEV, + .access = p2m_access_rw, +}; + +static const struct map_attr mattr_memory_nc_rwx __initconst = +{ + .memattr = MATTR_MEM_NC, + .access = p2m_access_rwx, +}; + +static const struct dt_device_match dev_map_attrs[] __initconst = +{ + { + __DT_MATCH_COMPATIBLE("mmio-sram"), + __DT_MATCH_PROPS("no-memory-wc"), + .data = &mattr_device_rw, + }, + { + __DT_MATCH_COMPATIBLE("mmio-sram"), + .data = &mattr_memory_nc_rwx, + }, + { /* sentinel */ }, +}; + //#define DEBUG_DT #ifdef DEBUG_DT @@ -1201,6 +1227,16 @@ static int handle_device(struct domain *d, struct dt_device_node *dev, return 0; } +static const struct map_attr *lookup_map_attr(struct dt_device_node *node, + const struct map_attr *parent_attr) +{ + const struct dt_device_match *r; + + /* Search and if nothing matches, use the parent's attributes. */ + r = dt_match_node(dev_map_attrs, node); + return r ? r->data : parent_attr; +} + static int handle_node(struct domain *d, struct kernel_info *kinfo, struct dt_device_node *node, const struct map_attr *attr) @@ -1290,6 +1326,7 @@ 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); + attr = lookup_map_attr(node, attr); res = handle_device(d, node, attr); if ( res) return res;