[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [UNIKRAFT PATCH, v2, 06/15] lib/ukring: Disable use of cpu_spinwait function



Hi Alexander,

Please see inline.

On 7/21/20 6:39 PM, Alexander Jung wrote:
> This is not currently supported by Unikraft.
> 
> Signed-off-by: Alexander Jung <alexander.jung@xxxxxxxxx>
> ---
>  lib/ukring/include/uk/ring.h | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/lib/ukring/include/uk/ring.h b/lib/ukring/include/uk/ring.h
> index 26ac2f8..f19b13e 100644
> --- a/lib/ukring/include/uk/ring.h
> +++ b/lib/ukring/include/uk/ring.h
> @@ -111,8 +111,11 @@ uk_ring_enqueue(struct uk_ring *r, void *buf)
>     * that preceded us, we need to wait for them
>     * to complete 
>     */
> +   /* TODO: Provide cpu_spinwait() */
> +#if 0
>    while (r->prod_tail != prod_head)
>      cpu_spinwait();

Actually waiting for some new ring entry by busy-waiting it's an
important feature of buffer rings shared between different execution
abstractions. So we should keep this and introduce something similar to
cpu_spinwait(). On FreeBSD it actually calls the x86 PAUSE instruction
which is smarter way of busy-waiting.

> +#endif
>  
>    ukarch_store_n(&r->prod_tail, prod_next);
>    ukplat_lcpu_enable_irq();
> @@ -153,8 +156,11 @@ uk_ring_dequeue_mc(struct uk_ring *r)
>     * that preceded us, we need to wait for them
>     * to complete
>     */
> +   /* TODO: Provide cpu_spinwait() */
> +#if 0
>    while (r->cons_tail != cons_head)
>      cpu_spinwait();
> +#endif
>  
>    ukarch_store_n(&r->cons_tail, cons_next);
>    ukplat_lcpu_enable_irq();
> 



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.