From patchwork Thu Nov 9 17:10:17 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksandr Tyshchenko X-Patchwork-Id: 10051345 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 0DCEF60632 for ; Thu, 9 Nov 2017 17:12:54 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 947B92B042 for ; Thu, 9 Nov 2017 17:12:53 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 893452B047; Thu, 9 Nov 2017 17:12:53 +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 0CC772B043 for ; Thu, 9 Nov 2017 17:12:53 +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 1eCqM5-0004qG-A8; Thu, 09 Nov 2017 17:11: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 1eCqM4-0004lV-5G for xen-devel@lists.xenproject.org; Thu, 09 Nov 2017 17:11:04 +0000 Received: from [193.109.254.147] by server-2.bemta-6.messagelabs.com id 55/5F-05188-72C840A5; Thu, 09 Nov 2017 17:11:03 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrKIsWRWlGSWpSXmKPExsVyMfS6o656D0u UwY1lrBbft0xmcmD0OPzhCksAYxRrZl5SfkUCa0bH9m+MBe2CFU1bTjM2ML7j6WLk4hASmMEo 0f1uNTuIwyLwkkVi07zpjCCOhEA/q8TPTS1AGU4gJ0uip/U1K4SdJnGhpZEFwi6XmNG7DqxGS EBJ4vXOzUwQ9mwmiT3XZEFsNgEDif3vnoDViADV3Fs1mQlkAbPAXUaJe/vPgyWEBcIlbq7sAx vKIqAqMe37f7BlvAIuErfWfINaJidx81wnM4jNCRR/8/E6G8QyZ4mLr4+zTWAUXMDIsIpRozi 1qCy1SNfQUC+pKDM9oyQ3MTNH19DATC83tbg4MT01JzGpWC85P3cTIzDoGIBgB+OnZQGHGCU5 mJREeaUsWaKE+JLyUyozEosz4otKc1KLDzHKcHAoSfDe7QLKCRalpqdWpGXmAMMfJi3BwaMkw vsOJM1bXJCYW5yZDpE6xejKceHOpT9MHMc2XQaSB/bcApLPZr5uYOaYdrW1iVmIJS8/L1VKnH cBSLMASHNGaR7caFjsXmKUlRLmZQQ6VoinILUoN7MEVf4VozgHo5Iwr2E30BSezLwSuAteAR3 HBHRcNDvYcSWJCCmpBsZG1Rl9i1+8Cz0gM0/n5GIjW4P1xq4Mam/OcCza/fdstP/Dl9sfnVvy 6XjM0/X5wSkCaof3zuYU/nB5V2iN4/eVIT+s2wOXX8/U32CXX2+XbtnF/CPFSWbdkiMfXRnqH eKdJyvlm8Wtm9f3lcHPbMvW8umda5pKA5sO+IVKCQYcv8cr8mriKVMlluKMREMt5qLiRAA9Wi 6X2AIAAA== X-Env-Sender: olekstysh@gmail.com X-Msg-Ref: server-5.tower-27.messagelabs.com!1510247462!110311640!1 X-Originating-IP: [209.85.215.65] 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 21263 invoked from network); 9 Nov 2017 17:11:03 -0000 Received: from mail-lf0-f65.google.com (HELO mail-lf0-f65.google.com) (209.85.215.65) by server-5.tower-27.messagelabs.com with AES128-GCM-SHA256 encrypted SMTP; 9 Nov 2017 17:11:03 -0000 Received: by mail-lf0-f65.google.com with SMTP id f125so7975945lff.4 for ; Thu, 09 Nov 2017 09:11:02 -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=HjWriD3KxLiyHAU7khBhscHAhWAxb6paEiyc1GDZxuU=; b=Ehb3QOE02TTgE6Z/+YpejX5XYVSGf0fvofpT8CNKEIUHeMy4i4BwwsuTl0BdeuSq6T TEBLLIH8mK42x2jjj4Ja2+Z/ZjGE7cX/lM1lTXcrOSIWIwrV3GMp/paJLWkrLONKvDUi nKe7Vc06iEFv/siXobce4Lakp56zTEQOegWUjp9JRPejDg5COm4j+Ox9dQ80mhv7Xqgu tdUqmrFTF+msRh+EQ+Ot1uAP2adYOGXi/fHIdy34AgSxAXVjb4AtcU4RR5SqmzLVl/3D 5Z8AxpiKNGT5HEVUOu/6Xh1oJBr4ITispCNBmDsZplIhDo+Nc1manqYw2ZImigUvmxX3 svbw== 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=HjWriD3KxLiyHAU7khBhscHAhWAxb6paEiyc1GDZxuU=; b=DYgC5Knxw/pYCnt8mW5a1WJb9d+2B3UPirtZr1AJgBorZC/YZ67TEQHdQcsRJVBvxb YktgG2A8SU6/bNJJz2/jFMNR7ZvHzIwYnYQt3rzS9pxbafn7YUA7V07WU+elZaEP4FUk oxBZq6zEerBFJxNTXbWzYgNi6EKU87dSeBus2MDVzVMNtVeGjHfqw9KdI+U+jnhJAbjY ZJ1KHjLlIf/SOwLzGwKXZHnslXq+7JEmsT/upcVAVfsoPE8dXROpIPJcGt+ZjfafiJ7k AnNQ7fX5FXiiCh3XT4PGYbR7X32Gp4I0nhFh4Tg+UpHTYyKUQLu35S2Wus/NNRAOSW6o 6Img== X-Gm-Message-State: AJaThX7JZNvPW2gsBQqiqa13Qxn/5yMw2Mg1L6r0SlGC7q8Q9hxPcOEt d1xDRmBymRd61d86oiOSU5/w0A== X-Google-Smtp-Source: AGs4zMaxgL7LkssIV9SKZ9Jw44DTR28eNXU7s4ADgHtJ6vUDoIpey+TBw4hGXuwH50g8vaiDaxLWGQ== X-Received: by 10.25.77.75 with SMTP id a72mr465576lfb.262.1510247462220; Thu, 09 Nov 2017 09:11:02 -0800 (PST) Received: from otyshchenko.kyiv.epam.com (ll-53.209.223.85.sovam.net.ua. [85.223.209.53]) by smtp.gmail.com with ESMTPSA id x90sm1394299ljb.86.2017.11.09.09.11.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 09 Nov 2017 09:11:01 -0800 (PST) From: Oleksandr Tyshchenko To: xen-devel@lists.xenproject.org Date: Thu, 9 Nov 2017 19:10:17 +0200 Message-Id: <1510247421-24094-28-git-send-email-olekstysh@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1510247421-24094-1-git-send-email-olekstysh@gmail.com> References: <1510247421-24094-1-git-send-email-olekstysh@gmail.com> Cc: Oleksandr Tyshchenko , Stefano Stabellini , Julien Grall , Jan Beulich , Andrew Cooper Subject: [Xen-devel] [RFC PATCH 27/31] cpufreq: hack: perf->states isn't a real guest handle on ARM 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: Oleksandr Tyshchenko This patch is just a temp solution to highlight a problem which should be resolved in a proper way. set_px_pminfo() is intended to be called from platform hypercall where "perf" argument was entirely filled in by hwdom. But unlike x86 we don't get this info from hwdom on ARM, we get it from other sources (device tree + firmware). In order to retain function interface, we emulate receiving hypercall and pass argument which function expects to see. Although "perf->states" looks like a guest handle it is not a real handle and we can't use copy_from_guest() over it. As only scpi-cpufreq sets XEN_PX_DATA flag use it as an indicator to do memcpy. Signed-off-by: Oleksandr Tyshchenko CC: Jan Beulich CC: Andrew Cooper CC: Stefano Stabellini CC: Julien Grall --- xen/drivers/cpufreq/cpufreq.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/xen/drivers/cpufreq/cpufreq.c b/xen/drivers/cpufreq/cpufreq.c index 64e1ae7..1022cd1 100644 --- a/xen/drivers/cpufreq/cpufreq.c +++ b/xen/drivers/cpufreq/cpufreq.c @@ -558,11 +558,22 @@ int set_px_pminfo(uint32_t acpi_id, struct xen_processor_performance *dom0_px_in ret = -ENOMEM; goto out; } - if ( copy_from_guest(pxpt->states, dom0_px_info->states, - dom0_px_info->state_count) ) + + if ( dom0_px_info->flags == XEN_PX_DATA ) { - ret = -EFAULT; - goto out; + struct xen_processor_px *states = (dom0_px_info->states).p; + + memcpy(pxpt->states, states, + dom0_px_info->state_count * sizeof(struct xen_processor_px)); + } + else + { + if ( copy_from_guest(pxpt->states, dom0_px_info->states, + dom0_px_info->state_count) ) + { + ret = -EFAULT; + goto out; + } } pxpt->state_count = dom0_px_info->state_count;