On 7/24/12 12:03 PM, Arnaldo Carvalho de Melo wrote:
Em Tue, Jul 24, 2012 at 11:28:48AM -0600, David Ahern escreveu:
On 7/24/12 10:15 AM, Robert Richter wrote:
On AMD cpus precise_ip maps to IBS, which does not support hardware
options as perfctrs do. Thus, following attr flags are not supported:

  exclude_user, exclude_kernel, exclude_host, exclude_guest

Counting in guest mode is possible with IBS, but not the exclusion of
a certain mode. If precise_ip counting is enabled on AMD we may not
set the exclude_guest flag.

Ok, so with AMD precise_ip requires exclude_guest to be unset; for
Intel we need it set.

So then we look at vendor_id in /proc/cpuinfo?

Does it return EOPNOTSUPP or something similar if something not
supported is asked for?

Fallbacking, or capability querying if you will, may be the way to do it
without having to maintain an userland table for what is possible,
leaving it to the kernel drivers for each arch.

Peter's patch (see https://lkml.org/lkml/2012/7/9/298) changes kernel side to require the use of exclude_guest if the precise modifier is used, returning -EOPNOTSUPP if exclude_guest is not set. This patch goes after the user experience: Today if a user specifies -e <event>:p all other modifiers are reset - including exclude_guest. Going forward we need :p to imply :pH if a user has not specified a GH modifer.

We could do nothing and handle the unsupported error and try setting the exclude_guest option - like perf handles other new parameters. But EOPNOTSUPP is not uniquely tied to this error -- e.g., it could be the BTS is not supported (:pp). Also, we have no easy way to discriminate :p from :pG or :pGH. It seems to me perf should not silently undo a user request on the modifier, but inform the user the request is wrong. For example if a user request -e cycles:pG it should not be silently turned into :pH.

And then yesterday, Robert stated that none of the exclude_xxxx modifiers can be set for the AMD if the precise modifier is used, so we cannot blindly set exclude_guest if precise_ip is set.

So, seems to me perf need's one action for Intel processors and another for AMD.

David


We do it now for sample_id_all and some other newer stuff, maybe we can
do it for this as well.

- Arnaldo


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to