From patchwork Mon Apr 10 09:01:57 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Roger_Pau_Monn=C3=A9?= X-Patchwork-Id: 9672135 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 1EEEB60244 for ; Mon, 10 Apr 2017 09:06:11 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 13BBC283E2 for ; Mon, 10 Apr 2017 09:06:11 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 07A2328408; Mon, 10 Apr 2017 09:06:11 +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.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED 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 88F10283E2 for ; Mon, 10 Apr 2017 09:06:10 +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 1cxVEm-0003jf-Hb; Mon, 10 Apr 2017 09:03:52 +0000 Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cxVEl-0003jX-G8 for xen-devel@lists.xenproject.org; Mon, 10 Apr 2017 09:03:51 +0000 Received: from [193.109.254.147] by server-9.bemta-6.messagelabs.com id 1B/5D-03420-67A4BE85; Mon, 10 Apr 2017 09:03:50 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprNIsWRWlGSWpSXmKPExsXitHSDvW6Z1+s Ig+7/Uhbft0xmcmD0OPzhCksAYxRrZl5SfkUCa8ajlkfMBbP4Kv51X2BvYHzB2cXIySEh4C/x evFtJhCbTUBH4uLcnWxdjBwcIgIqErf3GoCYzALlEjNuxINUCAuYSyw6fZINxGYRUJW4vPo+I 4jNK2Ap8aKvnxliop7E24kvwOKcAlYSu38cYAexhYBqds9cD1UvKHFy5hMWEJtZQFOidftvdg hbXqJ562xmiHpFif55D9gmMPLNQtIyC0nLLCQtCxiZVzFqFKcWlaUW6Roa6CUVZaZnlOQmZuY AeWZ6uanFxYnpqTmJScV6yfm5mxiBgcYABDsY7y0LOMQoycGkJMqbbvk6QogvKT+lMiOxOCO+ qDQntfgQowwHh5IE7ycPoJxgUWp6akVaZg4w5GHSEhw8SiK8wZ5Aad7igsTc4sx0iNQpRkUpc d6VIH0CIImM0jy4NlicXWKUlRLmZQQ6RIinILUoN7MEVf4VozgHo5Iw7z6QKTyZeSVw018BLW YCWnxm10uQxSWJCCmpBsZ+I/UNd7p+5PN0cW2f3uTzJ/Za2+zt7hwq6ktl9eMZOdZ6xiVbseq e3nmcf+vFyvQ5Bx1b/C4Hmopx/6y//evRbuUP6vr+C8099//puKR4asfa2zVaD1c/MhBhybQ9 x7Gw5EiA3Ge3Yw/iIhJ/l9wuvsLL+fZUSO7qqb65HB+7WkIa1Zp9E5VYijMSDbWYi4oTASdon v+uAgAA X-Env-Sender: prvs=266d97a94=roger.pau@citrix.com X-Msg-Ref: server-7.tower-27.messagelabs.com!1491815028!91955410!1 X-Originating-IP: [66.165.176.63] X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni42MyA9PiAzMDYwNDg=\n, received_headers: No Received headers X-StarScan-Received: X-StarScan-Version: 9.4.12; banners=-,-,- X-VirusChecked: Checked Received: (qmail 24034 invoked from network); 10 Apr 2017 09:03:50 -0000 Received: from smtp02.citrix.com (HELO SMTP02.CITRIX.COM) (66.165.176.63) by server-7.tower-27.messagelabs.com with RC4-SHA encrypted SMTP; 10 Apr 2017 09:03:50 -0000 X-IronPort-AV: E=Sophos;i="5.37,181,1488844800"; d="scan'208";a="426935228" From: Roger Pau Monne To: Date: Mon, 10 Apr 2017 10:01:57 +0100 Message-ID: <20170410090157.49501-2-roger.pau@citrix.com> X-Mailer: git-send-email 2.11.0 (Apple Git-81) In-Reply-To: <20170410090157.49501-1-roger.pau@citrix.com> References: <20170410090157.49501-1-roger.pau@citrix.com> MIME-Version: 1.0 Cc: Andrew Cooper , Jan Beulich , Roger Pau Monne Subject: [Xen-devel] [PATCH for-4.9 v2 2/2] x86/dm: fix clang build 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: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP The current code in dm_op breaks clang build with: dm.c:411:21: error: 'break' is bound to loop, GCC binds it to switch [-Werror,-Wgcc-compat] while ( read_atomic(&p2m->ioreq.entry_count) && ^ xen/include/asm/atomic.h:53:43: note: expanded from macro 'read_atomic' default: x_ = 0; __bad_atomic_size(); break; \ ^ Move the read_atomic check inside the loop body in order to fix the error. Signed-off-by: Roger Pau Monné --- Cc: Jan Beulich Cc: Andrew Cooper --- Changes since v1: - New in this version. --- xen/arch/x86/hvm/dm.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/hvm/dm.c b/xen/arch/x86/hvm/dm.c index d72b7bd835..d7aaaf6ff8 100644 --- a/xen/arch/x86/hvm/dm.c +++ b/xen/arch/x86/hvm/dm.c @@ -408,9 +408,16 @@ static int dm_op(domid_t domid, { struct p2m_domain *p2m = p2m_get_hostp2m(d); - while ( read_atomic(&p2m->ioreq.entry_count) && - first_gfn <= p2m->max_mapped_pfn ) + while ( first_gfn <= p2m->max_mapped_pfn ) { + /* + * NB: read_atomic cannot be used in the loop condition because + * clang complains with: "'break' is bound to loop, GCC binds + * it to switch", so move it inside of the loop instead. + */ + if ( !read_atomic(&p2m->ioreq.entry_count) ) + break; + /* Iterate p2m table for 256 gfns each time. */ p2m_finish_type_change(d, _gfn(first_gfn), 256, p2m_ioreq_server, p2m_ram_rw);