Thread (60 messages) 60 messages, 9 authors, 2021-07-09

Re: [dpdk-dev] Use WFE for spinlock and ring

From: Bruce Richardson <hidden>
Date: 2021-04-30 14:19:15

On Fri, Apr 30, 2021 at 01:41:22PM +0000, Honnappa Nagarahalli wrote:
<snip>
quoted
quoted
quoted
quoted
quoted
quoted
quoted
The rte_wait_until_equal_xxx APIs abstract the functionality
of 'polling for a memory location to become equal to a given
value'[1].
quoted
quoted
quoted
quoted
quoted
quoted
Use the API for the rte spinlock and ring implementations.
With the wait until equal APIs being stable, changes will not impact
ABI.
quoted
quoted
quoted
quoted
quoted
Afaics, there is no ARM target with WFE enabled and we lost
ability to enable WFE support with removal of the make build
system.
quoted
quoted
quoted
quoted
WFE can be enabled with direct meson file change.
WFE is not intended to be enabled by default. It can be enabled
based on benchmarking result on hardware.
quoted
$ git grep RTE_ARM_USE_WFE
config/arm/meson.build:        ['RTE_ARM_USE_WFE', false],
lib/eal/arm/include/rte_pause_64.h:#ifdef RTE_ARM_USE_WFE

How did you enable WFE to test this series?
I modified meson file to test.
Tests were also done with WFE disabled to make sure no
degradation with
generic implementation.

I don't understand the usage.
Which platform should use it?
Platforms that implement WFE semantic (e.g. N1) can use.
The user can enable this feature for power efficiency purpose. But
there is something to note as described in commit message 1be7855d77
when the API was introduced.
quoted
quoted
quoted
Should it be a compile-time option?
Yes, it should be a compile-time option.
It can be configured via c_args meson option?
+Cc Bruce for discussing how to enable such feature.

The problem with c_args is that the application has no way to know.
Agree about c_args not being a great choice. Why does this need to be a
compile-time option? Can runtime support not be detected in some
manner?
The problem is inconsistency in performance on different Arm platforms. We had decided that each platform needs to enable it after some testing.
Then it sounds like it does indeed need to be a build option. Does it need
to be added to the meson_options.txt, or can it just be specified in
cross-files and optionally via c_args?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help