On 12.12.2023 10:47, Juergen Gross wrote:
> In order to prepare a type-safe recursive spinlock structure, add
> explicitly non-recursive locking functions to be used for non-recursive
> locking of spinlocks, which are used recursively, too.
> 
> Signed-off-by: Juergen Gross <jgr...@suse.com>

Acked-by: Jan Beulich <jbeul...@suse.com>
preferably with ...

> --- a/xen/include/xen/spinlock.h
> +++ b/xen/include/xen/spinlock.h
> @@ -101,6 +101,8 @@ struct lock_profile_qhead {
>  };
>  
>  #define _LOCK_PROFILE(lockname) { .name = #lockname, .lock = &lockname, }
> +#define _RLOCK_PROFILE(lockname) { .name = #lockname, .rlock = &lockname,    
>  \
> +    .is_rlock = 1, }

... "true" used here, ...

> @@ -133,13 +135,16 @@ struct lock_profile_qhead {
>              break;                                                           
>  \
>          }                                                                    
>  \
>          prof->name = #l;                                                     
>  \
> -        prof->lock = &(s)->l;                                                
>  \
> +        prof->lockptr = &(s)->l;                                             
>  \
> +        prof->is_rlock = isr;                                                
>  \
>          prof->next = (s)->profile_head.elem_q;                               
>  \
>          (s)->profile_head.elem_q = prof;                                     
>  \
>      } while( 0 )
>  
> -#define spin_lock_init_prof(s, l) __spin_lock_init_prof(s, l, spinlock_t)
> -#define rspin_lock_init_prof(s, l) __spin_lock_init_prof(s, l, rspinlock_t)
> +#define spin_lock_init_prof(s, l)                                            
>  \
> +    __spin_lock_init_prof(s, l, lock, spinlock_t, 0)

... "false" here, ...

> +#define rspin_lock_init_prof(s, l)                                           
>  \
> +    __spin_lock_init_prof(s, l, rlock, rspinlock_t, 1)

... "true" again here, and ...

> @@ -174,6 +179,7 @@ struct lock_profile_qhead { };
>  
>  #endif
>  
> +
>  typedef union {
>      uint32_t head_tail;
>      struct {

... definitely with this hunk dropped.

Jan

Reply via email to