From patchwork Mon Dec 4 20:16:47 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Bodireddy, Bhanuprakash" X-Patchwork-Id: 844401 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=openvswitch.org (client-ip=140.211.169.12; helo=mail.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3yrGgD0mDpz9ryr for ; Tue, 5 Dec 2017 07:28:56 +1100 (AEDT) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 246FCD22; Mon, 4 Dec 2017 20:28:48 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id D8AEECB6 for ; Mon, 4 Dec 2017 20:28:47 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id AA487401 for ; Mon, 4 Dec 2017 20:28:44 +0000 (UTC) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 04 Dec 2017 12:28:44 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,361,1508828400"; d="scan'208";a="12991647" Received: from silpixa00393942.ir.intel.com (HELO silpixa00393942.ger.corp.intel.com) ([10.237.223.42]) by orsmga001.jf.intel.com with ESMTP; 04 Dec 2017 12:28:43 -0800 From: Bhanuprakash Bodireddy To: dev@openvswitch.org Date: Mon, 4 Dec 2017 20:16:47 +0000 Message-Id: <1512418610-84032-2-git-send-email-bhanuprakash.bodireddy@intel.com> X-Mailer: git-send-email 2.4.11 In-Reply-To: <1512418610-84032-1-git-send-email-bhanuprakash.bodireddy@intel.com> References: <1512418610-84032-1-git-send-email-bhanuprakash.bodireddy@intel.com> X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, T_RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Subject: [ovs-dev] [PATCH RFC 2/5] configure: Include -mprefetchwt1 explicitly. X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org Processors support prefetch instruction in anticipation of write but compilers(gcc) won't use them unless explicitly asked to do so even with '-march=native' specified. [Problem] Case A: OVS_PREFETCH_CACHE(addr, OPCH_HTW) __builtin_prefetch(addr, 1, 3) leaq -112(%rbp), %rax [Assembly] prefetchw (%rax) Case B: OVS_PREFETCH_CACHE(addr, OPCH_LTW) __builtin_prefetch(addr, 1, 1) leaq -112(%rbp), %rax [Assembly] prefetchw (%rax) <***problem***> Inspite of specifying -march=native and using Low Temporal Write(OPCH_LTW), the compiler generates 'prefetchw' instruction instead of 'prefetchwt1' instruction available on processor. [Solution] Include -mprefetchwt1 Case B: OVS_PREFETCH_CACHE(addr, OPCH_LTW) __builtin_prefetch(addr, 1, 1) leaq -112(%rbp), %rax [Assembly] prefetchwt1 (%rax) [Testing] $ ./boot.sh $ ./configure checking target hint for cgcc... x86_64 checking whether gcc accepts -mprefetchwt1... yes $ make -j Signed-off-by: Bhanuprakash Bodireddy --- configure.ac | 1 + 1 file changed, 1 insertion(+) diff --git a/configure.ac b/configure.ac index 6a8113a..8f4fbe2 100644 --- a/configure.ac +++ b/configure.ac @@ -171,6 +171,7 @@ OVS_CONDITIONAL_CC_OPTION([-Wno-unused], [HAVE_WNO_UNUSED]) OVS_CONDITIONAL_CC_OPTION([-Wno-unused-parameter], [HAVE_WNO_UNUSED_PARAMETER]) OVS_ENABLE_WERROR OVS_ENABLE_SPARSE +OVS_ENABLE_OPTION([-mprefetchwt1]) OVS_CTAGS_IDENTIFIERS AC_ARG_VAR(KARCH, [Kernel Architecture String])