All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Doug Goldstein <cardoe@cardoe.com>, xen-devel@lists.xen.org
Cc: Kevin Tian <kevin.tian@intel.com>, Keir Fraser <keir@xen.org>,
	Jan Beulich <jbeulich@suse.com>,
	Aravind Gopalakrishnan <Aravind.Gopalakrishnan@amd.com>,
	Jun Nakajima <jun.nakajima@intel.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Subject: Re: [PATCH v2 1/2] xenoprof: fix up ability to disable it
Date: Tue, 9 Feb 2016 10:05:23 +0000	[thread overview]
Message-ID: <56B9B9E3.9000700@citrix.com> (raw)
In-Reply-To: <1454991321-399-1-git-send-email-cardoe@cardoe.com>

On 09/02/16 04:15, Doug Goldstein wrote:
> diff --git a/xen/include/asm-x86/vpmu.h b/xen/include/asm-x86/vpmu.h
> index 67e73dc..4750a1f 100644
> --- a/xen/include/asm-x86/vpmu.h
> +++ b/xen/include/asm-x86/vpmu.h
> @@ -89,10 +89,14 @@ static inline void vpmu_clear(struct vpmu_struct *vpmu)
>  {
>      vpmu->flags = 0;
>  }
> +#ifdef CONFIG_XENOPROF
>  static inline bool_t vpmu_is_set(const struct vpmu_struct *vpmu, const u32 mask)
>  {
>      return !!(vpmu->flags & mask);
>  }
> +#else
> +#define vpmu_is_set(x, y) (!!0)

Why vpmu_is_set()?  this wasn't guarded in v1.

> +#endif
>  static inline bool_t vpmu_are_all_set(const struct vpmu_struct *vpmu,
>                                        const u32 mask)
>  {
> @@ -121,8 +125,13 @@ static inline int vpmu_do_rdmsr(unsigned int msr, uint64_t *msr_content)
>      return vpmu_do_msr(msr, msr_content, 0, 0);
>  }
>  
> +#ifdef CONFIG_XENOPROF
>  extern int acquire_pmu_ownership(int pmu_ownership);
>  extern void release_pmu_ownership(int pmu_ownership);
> +#else
> +#define acquire_pmu_ownership(x) (1)
> +#define release_pmu_ownership(x)

Yikes - we have two externs of acquire_pmu_ownership().  This is plain
wrong and needs fixing as a separate patch.

These are xenoprof functions, so the externs in xenoprof.h are correct. 
These ones in vpmu.h should be deleted, and code should include
xenoprof.h instead.

> +#endif
>  
>  extern unsigned int vpmu_mode;
>  extern unsigned int vpmu_features;
> diff --git a/xen/include/asm-x86/xenoprof.h b/xen/include/asm-x86/xenoprof.h
> index b006ddc..9574f33 100644
> --- a/xen/include/asm-x86/xenoprof.h
> +++ b/xen/include/asm-x86/xenoprof.h
> @@ -67,9 +67,16 @@ void xenoprof_backtrace(struct vcpu *, const struct cpu_user_regs *,
>                   "xenoprof/x86 with autotranslated mode enabled"    \
>                   "isn't supported yet\n");                          \
>      } while (0)
> +
> +#ifdef CONFIG_XENOPROF
>  int passive_domain_do_rdmsr(unsigned int msr, uint64_t *msr_content);
>  int passive_domain_do_wrmsr(unsigned int msr, uint64_t msr_content);
>  void passive_domain_destroy(struct vcpu *v);
> +#else
> +#define passive_domain_do_rdmsr(x, y) (0)
> +#define passive_domain_do_wrmsr(x, y) (0)
> +#define passive_domain_destroy(x)
> +#endif

This looks much neater - Thanks.

However, please make static inline functions rather than macros, so that
the arguments still get typechecked and evaluated even if !CONFIG_XENOPROF

passive_domain_destroy() is particular is problematic if one were to
have a construct such as "if ( passive_domain_destroy() )" (although
that specific one is not a good example in this case).

~Andrew

  parent reply	other threads:[~2016-02-09 10:05 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-09  4:15 [PATCH v2 1/2] xenoprof: fix up ability to disable it Doug Goldstein
2016-02-09  4:15 ` [PATCH v2 2/2] build: convert xenoprof to Kconfig Doug Goldstein
2016-02-09 12:03   ` Jan Beulich
2016-02-09 10:05 ` Andrew Cooper [this message]
2016-02-09 10:07   ` [PATCH v2 1/2] xenoprof: fix up ability to disable it Andrew Cooper
2016-02-09 13:54   ` Boris Ostrovsky

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=56B9B9E3.9000700@citrix.com \
    --to=andrew.cooper3@citrix.com \
    --cc=Aravind.Gopalakrishnan@amd.com \
    --cc=boris.ostrovsky@oracle.com \
    --cc=cardoe@cardoe.com \
    --cc=jbeulich@suse.com \
    --cc=jun.nakajima@intel.com \
    --cc=keir@xen.org \
    --cc=kevin.tian@intel.com \
    --cc=suravee.suthikulpanit@amd.com \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.