From patchwork Mon Jan 30 17:21:54 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Edgar E. Iglesias" X-Patchwork-Id: 9545773 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 BE59F604A0 for ; Mon, 30 Jan 2017 17:25:16 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9CAA625D9E for ; Mon, 30 Jan 2017 17:25:16 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9110F2811E; Mon, 30 Jan 2017 17:25:16 +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=-3.6 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_MED, RCVD_IN_SORBS_SPAM, 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 44F5525D9E for ; Mon, 30 Jan 2017 17:25:16 +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 1cYFeX-0001g4-Q0; Mon, 30 Jan 2017 17:22:05 +0000 Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cYFeX-0001f5-CY for xen-devel@lists.xen.org; Mon, 30 Jan 2017 17:22:05 +0000 Received: from [85.158.143.35] by server-7.bemta-6.messagelabs.com id 17/5D-29440-C367F885; Mon, 30 Jan 2017 17:22:04 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrFIsWRWlGSWpSXmKPExsVyMfS6o65NWX+ EwYrLAhZLPi5mcWD0OLr7N1MAYxRrZl5SfkUCa0bn7riC3SIVHZsvMjcw9gt0MXJxCAlMZJQ4 3H2VGcRhEXjJIrG6rZ8dxJEQ6GeVaN00HcjhBHJiJLaensMMYZdLTJnwkRHEFhJQlzj9bgcbx KgZTBLXpveCJdgETCT2/nnABGKLCEhLXPt8GSzOLOArcXPncbC4sICfxN+T/4AWcACtVpW4dM AbJMwr4C7xYu1eFohdchI3z3WC7eUU8JDY0/4Paq+7xLxHv1kmMAosYGRYxahenFpUllqka6m XVJSZnlGSm5iZo2toYKaXm1pcnJiempOYVKyXnJ+7iREYVgxAsIPx7qaAQ4ySHExKorx9H/si hPiS8lMqMxKLM+KLSnNSiw8xynBwKEnwKpX2RwgJFqWmp1akZeYAAxwmLcHBoyTCa1oClOYtL kjMLc5Mh0idYrTk6Ok6/ZKJ49QNELln1+WXTEIsefl5qVLivJ9BGgRAGjJK8+DGwaLwEqOslD AvI9CBQjwFqUW5mSWo8q8YxTkYlYR5xUGu4snMK4Hb+groICagg9xf9YEcVJKIkJJqYJw6gV1 W7NamI4Evi4Su9WRssrhiKddyKVpE4vx394/Nek+rUw9y5XRtuS945H7T3bOnbD8zaX11YlkQ zvNyoVH/Tv5DnXvfnz/jJGYXvCvUen/AQs705WsFfznxWb8XUKzjtf23omip2NUFEzxiNV/Ep MSvt+TyWKvVuGtC1bTJM7KjmRTkhJVYijMSDbWYi4oTAT1mHHS9AgAA X-Env-Sender: edgar.iglesias@gmail.com X-Msg-Ref: server-3.tower-21.messagelabs.com!1485796923!54627750!1 X-Originating-IP: [209.85.215.65] X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG, SUBJECT_RANDOMQ,UPPERCASE_25_50 X-StarScan-Received: X-StarScan-Version: 9.1.1; banners=-,-,- X-VirusChecked: Checked Received: (qmail 11297 invoked from network); 30 Jan 2017 17:22:04 -0000 Received: from mail-lf0-f65.google.com (HELO mail-lf0-f65.google.com) (209.85.215.65) by server-3.tower-21.messagelabs.com with AES128-GCM-SHA256 encrypted SMTP; 30 Jan 2017 17:22:04 -0000 Received: by mail-lf0-f65.google.com with SMTP id h65so31798232lfi.3 for ; Mon, 30 Jan 2017 09:22:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=yPhF93GZTHHci6DmbZTFboy87ZQiCDfzN8iwmpYdLY0=; b=R5EcSsDAXDeraqgLS5kTJJPd3uP0jdnP+ePmw2xxDDeqvkvXP5xcWfGvIuHix3vHEG 6xOKBGDnGsX2+W+qrySmNL/biOqg7PevrqvsCDTH62FC3ky0PzPSN3yMaADvWFCXzd8h 0oofc9PcKI5JNSnz3Bid+EItFy5ZIY3NBtmpBjZLZa+2XdU1ayIa/1cQ0JOf+qlj1nvF xxPbhHOi2cZUInGsvYk5aYUuGZCN+kfaVeX9TmTGVqD1eY3BISYQFDI8PNddpsuiLe5l tpBOSwtU1voiSgSLBvO9amk/vQgTqtSD3FwLc5jfJr9KaUSZoFZ3pQJh9CLmKZGM11dd RnmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=yPhF93GZTHHci6DmbZTFboy87ZQiCDfzN8iwmpYdLY0=; b=c3xuGSdImMTrWWX+dWdIfnfJ1nFbwG/LxR3wkhFPRBvfGVGyG+2jpB9SkByRmvX8y0 hcsuigSKdqcj9iOANLMNqgvfVCgQKeP+1RKjW9fdagk3R1wMr3S5yGM1f2Rg69WKnKi0 t2vQ/7RyTsQdCSadvSZsjIHX1plGqNRKquVvdEQLPAFMVNxRAHJxnObQ2aQRqa4YUQd6 t2qtTly8N5bZxaxQ0XeVKU4KdeNiz6l+N50NGChla4pcvGJRqvFLBDT6cETBIXuVZtVD Zdzp4MZRltx+DkUiTlzeTCNKUIGYcOKdaRp7atCLEWu4HDUZVZLeTPMzHYIg90gZj/e8 MJ2w== X-Gm-Message-State: AIkVDXLPkISCvoX5ilThwqbuMBb+n2OkVIQ/nUMOR/t3iCq2rDFrxsoJZemJqI5llToOTg== X-Received: by 10.25.44.21 with SMTP id s21mr7332654lfs.56.1485796923505; Mon, 30 Jan 2017 09:22:03 -0800 (PST) Received: from localhost (81-231-233-234-no56.tbcn.telia.com. [81.231.233.234]) by smtp.gmail.com with ESMTPSA id f25sm3913175lji.26.2017.01.30.09.22.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 30 Jan 2017 09:22:02 -0800 (PST) From: "Edgar E. Iglesias" To: xen-devel@lists.xen.org Date: Mon, 30 Jan 2017 18:21:54 +0100 Message-Id: <1485796915-9372-6-git-send-email-edgar.iglesias@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1485796915-9372-1-git-send-email-edgar.iglesias@gmail.com> References: <1485796915-9372-1-git-send-email-edgar.iglesias@gmail.com> Cc: edgar.iglesias@xilinx.com, julien.grall@arm.com, sstabellini@kernel.org Subject: [Xen-devel] [RFC v1 5/6] xen/arm: zynqmp: Forward plaform specific firmware calls 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" Forward platform specific firmware calls from the hardware domain to firmware. Signed-off-by: Edgar E. Iglesias --- xen/arch/arm/platforms/xilinx-zynqmp.c | 63 ++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/xen/arch/arm/platforms/xilinx-zynqmp.c b/xen/arch/arm/platforms/xilinx-zynqmp.c index 2adee91..bde7f52 100644 --- a/xen/arch/arm/platforms/xilinx-zynqmp.c +++ b/xen/arch/arm/platforms/xilinx-zynqmp.c @@ -19,6 +19,46 @@ #include +/* Service calls. */ +#define SVC_MASK 0x3F000000 +#define SVC_SIP 0x02000000 /* SoC Implementation Specific. */ + +/* SMC function IDs for SiP Service queries */ +#define ZYNQMP_SIP_SVC_CALL_COUNT 0xff00 +#define ZYNQMP_SIP_SVC_UID 0xff01 +#define ZYNQMP_SIP_SVC_VERSION 0xff03 + +enum pm_api_id { + /* Miscellaneous API functions: */ + GET_API_VERSION = 1, + SET_CONFIGURATION, + GET_NODE_STATUS, + GET_OPERATING_CHARACTERISTIC, + REGISTER_NOTIFIER, + /* API for suspending of PUs: */ + REQUEST_SUSPEND, + SELF_SUSPEND, + FORCE_POWERDOWN, + ABORT_SUSPEND, + REQUEST_WAKEUP, + SET_WAKEUP_SOURCE, + SYSTEM_SHUTDOWN, + /* API for managing PM slaves: */ + REQUEST_NODE, + RELEASE_NODE, + SET_REQUIREMENT, + SET_MAX_LATENCY, + /* Direct control API functions: */ + RESET_ASSERT, + RESET_GET_STATUS, + MMIO_WRITE, + MMIO_READ, + PM_INIT, + FPGA_LOAD, + FPGA_GET_STATUS, + GET_CHIPID, +}; + static const char * const zynqmp_dt_compat[] __initconst = { "xlnx,zynqmp", @@ -32,8 +72,31 @@ static const struct dt_device_match zynqmp_blacklist_dev[] __initconst = { /* sentinel */ }, }; +bool zynqmp_hvc(struct cpu_user_regs *regs) +{ + uint32_t fid = regs->x0; + uint32_t svc = fid & SVC_MASK; + register_t ret[4]; + + /* We only forward SiP service calls from the hw domain to firmware. */ + if ( svc != SVC_SIP || !is_hardware_domain(current->domain) ) + return false; + + /* Forward the call. */ + call_smcc64(regs->x0, regs->x1, regs->x2, regs->x3, + regs->x4, regs->x5, regs->x6, ret); + + /* Transfer return values into guest registers. */ + regs->x0 = ret[0]; + regs->x1 = ret[1]; + regs->x2 = ret[2]; + regs->x3 = ret[3]; + return true; +} + PLATFORM_START(xgene_storm, "Xilinx ZynqMP") .compatible = zynqmp_dt_compat, + .hvc = zynqmp_hvc, .blacklist_dev = zynqmp_blacklist_dev, PLATFORM_END