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

Re: [PATCH v2 02/13] xen/spinlock: reduce lock profile ifdefs


  • To: Juergen Gross <jgross@xxxxxxxx>
  • From: Jan Beulich <jbeulich@xxxxxxxx>
  • Date: Wed, 18 Oct 2023 17:57:44 +0200
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=t8IBvTFzP1phOlDjw7SSlnqr2ekEcF07H/fIzSNK94c=; b=C6CEQ6pxIroNhNEfOH75x8phwOsCVwpeD0N+T41E0BJIjHJuP8AmHqY2i1iSv3jgP4sBvYtwMsIUQqrJx0hclD+/P1VzM70YkCIYn18o7sJ07NRKEx3MUQTdgF2/1Z1QClWcgSjPIpPQxnJoUopED5x1/WJD+JXcs0nHkvNbaV0BMp3jCWfYM0qTS0ZTToYsK13asSzxSc3lrSAQa1xGZ/5jPgvvx+3+3JnyOkkvwFe0ZQ1ZWzxafYIuIe47FWyM+bFeh5f7p25Hckhla1Le5gGFWGnKOMqgS8q546mbU312gx9fkeZK4NYmfRTSWSPpXhBDd8KV9ySrJtyqVpS9hw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jKfeP4jZ/MvMpD9+a4SsT+R82EeEKtf5kOtPWpr8CqzfH+BRoih35Nh5Jf3HrQsrTSkHsu/DiUBil8qBIkMc1ELy4JO5cilOJsPCFbz5C9KWsSb6PIoCUcS5oxAi+lhCSpfEujVt+ShtgI4+gebboC37OxjHU87pMbHzN42OUMiqR5OZuq8voh+h5zOkI7XbIf5EctsrWCSae2OxBQwOvaVoOCu37wuMiTaEz95Nmf8cH1E2lQdPBNgvtUvGzKSV4W492Xysfy1mjZdETsJk5E8E+x584I4YkdWbT+9sih/fcqB3yRQC3BU2NlJIaMK+KaHXkn5KQDf/OuISDYP6HQ==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com;
  • Cc: javi.merino@xxxxxxxxx, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, George Dunlap <george.dunlap@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxxx
  • Delivery-date: Wed, 18 Oct 2023 15:57:57 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 13.10.2023 11:42, Juergen Gross wrote:
> With some small adjustments to the LOCK_PROFILE_* macros some #ifdefs
> can be dropped from spinlock.c.
> 
> Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
> ---
> V2:
> - new patch
> ---
>  xen/common/spinlock.c | 45 ++++++++++++++++++-------------------------
>  1 file changed, 19 insertions(+), 26 deletions(-)
> 
> diff --git a/xen/common/spinlock.c b/xen/common/spinlock.c
> index 202c707540..4878a01302 100644
> --- a/xen/common/spinlock.c
> +++ b/xen/common/spinlock.c
> @@ -267,25 +267,28 @@ void spin_debug_disable(void)
>          lock->profile->time_hold += NOW() - lock->profile->time_locked;      
> \
>          lock->profile->lock_cnt++;                                           
> \
>      }
> -#define LOCK_PROFILE_VAR    s_time_t block = 0
> -#define LOCK_PROFILE_BLOCK  block = block ? : NOW();
> -#define LOCK_PROFILE_GOT                                                     
> \
> +#define LOCK_PROFILE_VAR(val)    s_time_t block = (val)

This macro, and then at least for consistency also ...

> +#define LOCK_PROFILE_BLOCK  block = block ? : NOW()

... this one should imo take the variable name as an argument. Otherwise
situations like ...

>  void _spin_barrier(spinlock_t *lock)
>  {
>      spinlock_tickets_t sample;
> -#ifdef CONFIG_DEBUG_LOCK_PROFILE
> -    s_time_t block = NOW();
> -#endif
> +    LOCK_PROFILE_VAR(NOW());
>  
>      check_barrier(&lock->debug);
>      smp_mb();
> @@ -432,13 +431,7 @@ void _spin_barrier(spinlock_t *lock)
>      {
>          while ( observe_head(&lock->tickets) == sample.head )
>              arch_lock_relax();
> -#ifdef CONFIG_DEBUG_LOCK_PROFILE
> -        if ( lock->profile )
> -        {
> -            lock->profile->time_block += NOW() - block;
> -            lock->profile->block_cnt++;
> -        }
> -#endif
> +        LOCK_PROFILE_BLKACC(lock->profile, block);
>      }
>      smp_mb();
>  }

... this arise where there's no visible declaration of "block", but a
use. (Originally I was meaning to ask how this function would build,
when the declaration is dropped.)

Jan



 


Rackspace

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