[v5,8/8] event/opdl: use new API to save cycles on aarch64
Checks
Commit Message
Use the new API to wait in low power state instead of continuous
polling to save CPU cycles and power.
Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
---
drivers/event/opdl/opdl_ring.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
Comments
On Thu, Sep 12, 2019 at 4:57 PM Gavin Hu <gavin.hu@arm.com> wrote:
>
> Use the new API to wait in low power state instead of continuous
> polling to save CPU cycles and power.
>
> Signed-off-by: Gavin Hu <gavin.hu@arm.com>
> Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Reviewed-by: Jerin Jacob <jerinj@marvell.com>
> ---
> drivers/event/opdl/opdl_ring.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/event/opdl/opdl_ring.c b/drivers/event/opdl/opdl_ring.c
> index e8b29e2..f446fa3 100644
> --- a/drivers/event/opdl/opdl_ring.c
> +++ b/drivers/event/opdl/opdl_ring.c
> @@ -17,6 +17,7 @@
> #include <rte_memory.h>
> #include <rte_memzone.h>
> #include <rte_eal_memconfig.h>
> +#include <rte_atomic.h>
>
> #include "opdl_ring.h"
> #include "opdl_log.h"
> @@ -475,9 +476,7 @@ opdl_ring_input_multithread(struct opdl_ring *t, const void *entries,
> /* If another thread started inputting before this one, but hasn't
> * finished, we need to wait for it to complete to update the tail.
> */
> - while (unlikely(__atomic_load_n(&s->shared.tail, __ATOMIC_ACQUIRE) !=
> - old_head))
> - rte_pause();
> + rte_wait_until_equal_acquire_32(&s->shared.tail, old_head);
>
> __atomic_store_n(&s->shared.tail, old_head + num_entries,
> __ATOMIC_RELEASE);
> --
> 2.7.4
>
@@ -17,6 +17,7 @@
#include <rte_memory.h>
#include <rte_memzone.h>
#include <rte_eal_memconfig.h>
+#include <rte_atomic.h>
#include "opdl_ring.h"
#include "opdl_log.h"
@@ -475,9 +476,7 @@ opdl_ring_input_multithread(struct opdl_ring *t, const void *entries,
/* If another thread started inputting before this one, but hasn't
* finished, we need to wait for it to complete to update the tail.
*/
- while (unlikely(__atomic_load_n(&s->shared.tail, __ATOMIC_ACQUIRE) !=
- old_head))
- rte_pause();
+ rte_wait_until_equal_acquire_32(&s->shared.tail, old_head);
__atomic_store_n(&s->shared.tail, old_head + num_entries,
__ATOMIC_RELEASE);