From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from e23smtp02.au.ibm.com (e23smtp02.au.ibm.com [202.81.31.144]) by dpdk.org (Postfix) with ESMTP id E93132A9 for ; Mon, 3 Nov 2014 09:03:00 +0100 (CET) Received: from /spool/local by e23smtp02.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 3 Nov 2014 18:12:09 +1000 Received: from d23dlp02.au.ibm.com (202.81.31.213) by e23smtp02.au.ibm.com (202.81.31.208) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Mon, 3 Nov 2014 18:12:07 +1000 Received: from d23relay10.au.ibm.com (d23relay10.au.ibm.com [9.190.26.77]) by d23dlp02.au.ibm.com (Postfix) with ESMTP id 7360F2BB0023 for ; Mon, 3 Nov 2014 19:12:06 +1100 (EST) Received: from d23av02.au.ibm.com (d23av02.au.ibm.com [9.190.235.138]) by d23relay10.au.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id sA38E3lg26869916 for ; Mon, 3 Nov 2014 19:14:03 +1100 Received: from d23av02.au.ibm.com (localhost [127.0.0.1]) by d23av02.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id sA38C5t5006803 for ; Mon, 3 Nov 2014 19:12:06 +1100 Received: from d23ml028.cn.ibm.com (d23ml028.cn.ibm.com [9.119.32.184]) by d23av02.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id sA38BvQB006634; Mon, 3 Nov 2014 19:12:05 +1100 In-Reply-To: <1414500657-23774-1-git-send-email-david.marchand@6wind.com> References: <1414500657-23774-1-git-send-email-david.marchand@6wind.com> To: David Marchand MIME-Version: 1.0 X-KeepSent: 0226824D:610A1E52-48257D85:002BA8B7; type=4; name=$KeepSent X-Mailer: IBM Notes Release 9.0.1SHF211 December 19, 2013 Message-ID: From: Chao CH Zhu Date: Mon, 3 Nov 2014 16:10:45 +0800 X-MIMETrack: Serialize by Router on d23ml028/23/M/IBM(Release 8.5.3FP6HF882 | August 28, 2014) at 11/03/2014 16:10:54, Serialize complete at 11/03/2014 16:10:54 X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 14110308-0005-0000-0000-000000F1A85C Content-Type: text/plain; charset="US-ASCII" X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Cc: dev@dpdk.org Subject: Re: [dpdk-dev] [PATCH v3 00/10] split architecture specific operations X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 03 Nov 2014 08:03:02 -0000 David, I acked the set of patches. Thanks a lot! Best Regards! ------------------------------ Chao Zhu From: David Marchand To: dev@dpdk.org Cc: Chao CH Zhu/China/IBM@IBMCN Date: 2014/10/28 20:50 Subject: [PATCH v3 00/10] split architecture specific operations The set of patches split x86 architecture specific operations from DPDK and put them to x86 arch directory. This will make the adoption of DPDK much easier on other computer architecture. For a new architecture, just add an architecture specific directory and necessary building configuration files, then DPDK eal library can support it. Reviewing patchset from Chao, I ended up modifying it along the way, so here is a new iteration of this patchset. Changes since Chao v2 patchset : - added a preliminary patch for moving rte_atomic.h (for better readability) - fixed documentation generation - implemented a generic header for each arch specific header (cpuflags, memcpy, prefetch were missing) - removed C++ stuff from generic headers - centralised all doxygen stuff in generic headers (no need to have duplicates) - refactored rte_cycles functions - moved vmware tsc stuff to arch rte_cycles.h headers - finished x86 factorisation Little summary of current state : - all applications continue to include the eal headers as before, these headers are the arch-specific ones - the arch specific headers always include the generic ones. The generic headers contain the doxygen documentation and code common to all architectures - a x86 architecture has been defined which handles both 32bits and 64bits peculiarities It builds fine for 32/64 bits (w and w/o "force intrinsics"), but I really would like a lot of eyes on this (and I would say, especially, rte_cycles, rte_memcpy and rte_cpuflags). I still have some concerns about the use of intrinsics for architecture != x86 but I think Chao will be the best to look at this. -- David Marchand Chao Zhu (7): eal: split atomic operations to architecture specific eal: split byte order operations to architecture specific eal: split CPU cycle operation to architecture specific eal: split prefetch operations to architecture specific eal: split spinlock operations to architecture specific eal: split memcpy operation to architecture specific eal: split CPU flags operations to architecture specific David Marchand (3): eal: move rte_atomic.h header eal: install all arch headers eal: factorize x86 headers doc/api/doxy-api.conf | 1 + lib/librte_eal/common/Makefile | 24 +- lib/librte_eal/common/eal_common_cpuflags.c | 190 ---- .../common/include/arch/x86/rte_atomic.h | 216 ++++ .../common/include/arch/x86/rte_atomic_32.h | 222 ++++ .../common/include/arch/x86/rte_atomic_64.h | 191 ++++ .../common/include/arch/x86/rte_byteorder.h | 121 +++ .../common/include/arch/x86/rte_byteorder_32.h | 51 + .../common/include/arch/x86/rte_byteorder_64.h | 52 + .../common/include/arch/x86/rte_cpuflags.h | 310 ++++++ .../common/include/arch/x86/rte_cycles.h | 121 +++ .../common/include/arch/x86/rte_memcpy.h | 297 +++++ .../common/include/arch/x86/rte_prefetch.h | 62 ++ .../common/include/arch/x86/rte_spinlock.h | 94 ++ lib/librte_eal/common/include/generic/rte_atomic.h | 918 ++++++++++++++++ .../common/include/generic/rte_byteorder.h | 189 ++++ .../common/include/generic/rte_cpuflags.h | 110 ++ lib/librte_eal/common/include/generic/rte_cycles.h | 209 ++++ lib/librte_eal/common/include/generic/rte_memcpy.h | 144 +++ .../common/include/generic/rte_prefetch.h | 71 ++ .../common/include/generic/rte_spinlock.h | 226 ++++ .../common/include/i686/arch/rte_atomic.h | 373 ------- lib/librte_eal/common/include/rte_atomic.h | 1133 -------------------- lib/librte_eal/common/include/rte_byteorder.h | 270 ----- lib/librte_eal/common/include/rte_cpuflags.h | 182 ---- lib/librte_eal/common/include/rte_cycles.h | 266 ----- lib/librte_eal/common/include/rte_memcpy.h | 376 ------- lib/librte_eal/common/include/rte_prefetch.h | 88 -- lib/librte_eal/common/include/rte_spinlock.h | 258 ----- .../common/include/x86_64/arch/rte_atomic.h | 335 ------ mk/arch/i686/rte.vars.mk | 2 + mk/arch/x86_64/rte.vars.mk | 2 + 32 files changed, 3624 insertions(+), 3480 deletions(-) create mode 100644 lib/librte_eal/common/include/arch/x86/rte_atomic.h create mode 100644 lib/librte_eal/common/include/arch/x86/rte_atomic_32.h create mode 100644 lib/librte_eal/common/include/arch/x86/rte_atomic_64.h create mode 100644 lib/librte_eal/common/include/arch/x86/rte_byteorder.h create mode 100644 lib/librte_eal/common/include/arch/x86/rte_byteorder_32.h create mode 100644 lib/librte_eal/common/include/arch/x86/rte_byteorder_64.h create mode 100644 lib/librte_eal/common/include/arch/x86/rte_cpuflags.h create mode 100644 lib/librte_eal/common/include/arch/x86/rte_cycles.h create mode 100644 lib/librte_eal/common/include/arch/x86/rte_memcpy.h create mode 100644 lib/librte_eal/common/include/arch/x86/rte_prefetch.h create mode 100644 lib/librte_eal/common/include/arch/x86/rte_spinlock.h create mode 100644 lib/librte_eal/common/include/generic/rte_atomic.h create mode 100644 lib/librte_eal/common/include/generic/rte_byteorder.h create mode 100644 lib/librte_eal/common/include/generic/rte_cpuflags.h create mode 100644 lib/librte_eal/common/include/generic/rte_cycles.h create mode 100644 lib/librte_eal/common/include/generic/rte_memcpy.h create mode 100644 lib/librte_eal/common/include/generic/rte_prefetch.h create mode 100644 lib/librte_eal/common/include/generic/rte_spinlock.h delete mode 100644 lib/librte_eal/common/include/i686/arch/rte_atomic.h delete mode 100644 lib/librte_eal/common/include/rte_atomic.h delete mode 100644 lib/librte_eal/common/include/rte_byteorder.h delete mode 100644 lib/librte_eal/common/include/rte_cpuflags.h delete mode 100644 lib/librte_eal/common/include/rte_cycles.h delete mode 100644 lib/librte_eal/common/include/rte_memcpy.h delete mode 100644 lib/librte_eal/common/include/rte_prefetch.h delete mode 100644 lib/librte_eal/common/include/rte_spinlock.h delete mode 100644 lib/librte_eal/common/include/x86_64/arch/rte_atomic.h -- 1.7.10.4