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/