DPDK patches and discussions
 help / color / mirror / Atom feed
From: Neil Horman <nhorman@tuxdriver.com>
To: Tony Lu <zlu@ezchip.com>
Cc: dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH 14/15] app/test: turn off cpu flag checks for tile architecture
Date: Thu, 11 Dec 2014 08:39:19 -0500	[thread overview]
Message-ID: <20141211133919.GB28213@hmsreliant.think-freely.org> (raw)
In-Reply-To: <000901d014fd$106f85d0$314e9170$@com>

On Thu, Dec 11, 2014 at 12:43:36PM +0800, Tony Lu wrote:
> >-----Original Message-----
> >From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Neil Horman
> >Sent: Tuesday, December 09, 2014 11:03 PM
> >To: Zhigang Lu
> >Cc: dev@dpdk.org
> >Subject: Re: [dpdk-dev] [PATCH 14/15] app/test: turn off cpu flag checks
> for tile
> >architecture
> >
> >On Mon, Dec 08, 2014 at 04:59:37PM +0800, Zhigang Lu wrote:
> >> Tile processor doesn't have CPU flag hardware registers, so this patch
> >> turns off cpu flag checks for tile.
> >>
> >> Signed-off-by: Zhigang Lu <zlu@ezchip.com>
> >> Signed-off-by: Cyril Chemparathy <cchemparathy@ezchip.com>
> >> ---
> >>  app/test/test_cpuflags.c | 2 +-
> >>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/app/test/test_cpuflags.c b/app/test/test_cpuflags.c index
> >> 5aeba5d..da93af5 100644
> >> --- a/app/test/test_cpuflags.c
> >> +++ b/app/test/test_cpuflags.c
> >> @@ -113,7 +113,7 @@ test_cpuflags(void)
> >>
> >>  	printf("Check for ICACHE_SNOOP:\t\t");
> >>  	CHECK_FOR_FLAG(RTE_CPUFLAG_ICACHE_SNOOP);
> >> -#else
> >> +#elif !defined(RTE_ARCH_TILE)
> >>  	printf("Check for SSE:\t\t");
> >>  	CHECK_FOR_FLAG(RTE_CPUFLAG_SSE);
> >>
> >Please stop this.  It doesn't make sense for a library that supports
> multiple
> >arches, we need some way to generically test for flags that doesn't involve
> >forcing applications to do ton's of ifdeffing.  Perhaps
> rte_cpu_get_flag_enabled
> >needs to do a flag table lookup based on the detected arch at run time, and
> >return the appropriate response.  In the case of tile, it can just be an
> empty
> >table, so 0 is always returned.  But making an application responsible for
> doing
> >arch checks is a guarantee to write non-portable applications
> >
> >Neil
> >
> 
> Thanks for taking a look at this.
> This change just follows what PPC did in commit 9ae15538. The root cause is
Yes, and I objected to it there as well:
http://dpdk.org/ml/archives/dev/2014-November/008628.html

To which the response was effectively "Sure, we'll do that later".  You're
effectively making the same argument.  If no one ever steps up to change the
interface when adding a new arch, it will never get done, and we'll have a
fragmented cpuflag test mechanism that creates completely non-portable code
accross arches.

> that
> the test_cpuflags.c explicitly tests X86-specific CPU flags, so we might
> need to revise
> this test case to make it architecture-independent.
> 
Exactly what I said in my email to the powerpc people.  If you're going
to add a new arch, and a given interface doesn't support doing so, please try to
re-design the interface to make it more friendly, otherwise we'll be left with
unmaintainable code.

Thinking about it, you probably don't even need to change the api call to do
this.  You just need to create a unified map for all flags of all supported
arches, that is to say a two dimensional array with the indicies [arch][flag]
where the stored value is the arch specific data to help determine if the
feature is supported, or a universal "not supported" flag.

Neil

  reply	other threads:[~2014-12-11 13:39 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-08  8:59 [dpdk-dev] [PATCH 00/15] Patches for DPDK to support " Zhigang Lu
2014-12-08  8:59 ` [dpdk-dev] [PATCH 01/15] mk: introduce Tilera Tile architecture Zhigang Lu
2014-12-08 11:09   ` Bruce Richardson
2014-12-08 14:25     ` Neil Horman
2014-12-08 21:34       ` Cyril Chemparathy
2014-12-08  8:59 ` [dpdk-dev] [PATCH 02/15] eal/tile: add atomic operations for TileGx Zhigang Lu
2014-12-08 14:28   ` Neil Horman
2014-12-08 21:29     ` Cyril Chemparathy
2014-12-08  8:59 ` [dpdk-dev] [PATCH 03/15] eal/tile: add byte order " Zhigang Lu
2014-12-08  8:59 ` [dpdk-dev] [PATCH 04/15] eal/tile: add spinlock " Zhigang Lu
2014-12-08  8:59 ` [dpdk-dev] [PATCH 05/15] eal/tile: add prefetch " Zhigang Lu
2014-12-08  8:59 ` [dpdk-dev] [PATCH 06/15] eal/tile: add memcpy " Zhigang Lu
2014-12-08  8:59 ` [dpdk-dev] [PATCH 07/15] eal/tile: add CPU flags " Zhigang Lu
2014-12-08  8:59 ` [dpdk-dev] [PATCH 08/15] eal/tile: add cycle " Zhigang Lu
2014-12-08  8:59 ` [dpdk-dev] [PATCH 09/15] eal: split vector operations to architecture specific Zhigang Lu
2014-12-08  8:59 ` [dpdk-dev] [PATCH 10/15] eal/tile: add vector operations for TileGx Zhigang Lu
2014-12-08  8:59 ` [dpdk-dev] [PATCH 11/15] eal/tile: add EAL support for global mPIPE initialization Zhigang Lu
2014-12-08 20:03   ` Neil Horman
2014-12-08 21:32     ` Cyril Chemparathy
2014-12-09 11:36       ` Neil Horman
2014-12-08  8:59 ` [dpdk-dev] [PATCH 12/15] eal/tile: add mPIPE buffer stack mempool provider Zhigang Lu
2014-12-09 14:07   ` Neil Horman
2014-12-12  8:30     ` Tony Lu
2014-12-12 13:03       ` Neil Horman
2014-12-08  8:59 ` [dpdk-dev] [PATCH 13/15] pmd/tile: add mPIPE poll mode driver for TileGx Zhigang Lu
2014-12-08  8:59 ` [dpdk-dev] [PATCH 14/15] app/test: turn off cpu flag checks for tile architecture Zhigang Lu
2014-12-09 15:03   ` Neil Horman
2014-12-11  4:43     ` Tony Lu
2014-12-11 13:39       ` Neil Horman [this message]
2014-12-12  8:10         ` Tony Lu
2014-12-12 13:07           ` Neil Horman
2014-12-08  8:59 ` [dpdk-dev] [PATCH 15/15] eal: allow empty set of compile time cpuflags Zhigang Lu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20141211133919.GB28213@hmsreliant.think-freely.org \
    --to=nhorman@tuxdriver.com \
    --cc=dev@dpdk.org \
    --cc=zlu@ezchip.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).