From: Andi Kleen <ak@suse.de>
To: Stephane Eranian <eranian@frankl.hpl.hp.com>
Cc: eranian@hpl.hp.com, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 18/18] 2.6.17.9 perfmon2 patch for review: new x86_64 files
Date: 23 Aug 2006 12:19:44 +0200 [thread overview]
Message-ID: <p73fyfn7nzz.fsf@verdi.suse.de> (raw)
In-Reply-To: <200608230806.k7N869KD000552@frankl.hpl.hp.com>
Stephane Eranian <eranian@frankl.hpl.hp.com> writes:
Earlier comment about logical pieces applies too.
>
> --- linux-2.6.17.9.base/arch/x86_64/perfmon/Kconfig 1969-12-31 16:00:00.000000000 -0800
> +++ linux-2.6.17.9/arch/x86_64/perfmon/Kconfig 2006-08-21 03:37:46.000000000 -0700
> @@ -0,0 +1,39 @@
> +menu "Hardware Performance Monitoring support"
> +config PERFMON
> + bool "Perfmon2 performance monitoring interface"
> + select X86_LOCAL_APIC
> + default y
No default y please unless the kernel doesn't boot without it.
> + help
> + Enables the perfmon2 interface to access the hardware
> + performance counters. See <http://perfmon2.sf.net/> for
> + more details. If you're unsure, say Y.
> +
> +config X86_64_PERFMON_AMD64
> + tristate "Support 64-bit mode AMD64 hardware performance counters"
> + depends on PERFMON
> + default m
No default m please. If someone just presses return in make oldconfig
with a new kernel they don't want all kinds of new random optional drivers.
I think I would prefer to call it _K8, because in theory new AMD CPUs
might have difference performance counters.
> + help
> + Enables support for 64-bit mode AMD64 hardware performance
> + counters. Does not work with Intel EM64T processors.
> + If unsure, say m.
I would drop the if unsure ... too
> +
> +config X86_64_PERFMON_EM64T
> + tristate "Support Intel EM64T hardware performance counters"
> + depends on PERFMON
> + default m
> + help
> + Enables support for the Intel EM64T hardware performance
> + counters. Does not work with AMD64 processors.
> + If unsure, say m.
Does that include the Core 2 support that you had in the i386 patch?
In general I would prefer to call it P4, not EM64T which is just
a generic architecture name and at least on P4 performance counters
are not really architected yet.
> +
> + if (cpu_data->x86 != 15) {
> + PFM_INFO("unsupported family=%d", cpu_data->x86);
> + return -1;
> + }
> +
> + if (cpu_data->x86_vendor != X86_VENDOR_AMD) {
> + PFM_INFO("not an AMD processor");
> + return -1;
> + }
Doing the checks the other way round would be more logical.
> + *
> + * This file implements the PEBS sampling format for Intel
> + * EM64T Intel Pentium 4/Xeon processors. It does not work
> + * with Intel 32-bit P4/Xeon processors.
Why not anyways? The registers are basically the same. What's so different
in 64bit? oprofile shares that code too.
The file seems a bit underdocumented. At least some brief description
what PEBS is and maybe at least one sentence for each function?
> + */
> +#ifndef __PERFMON_EM64T_PEBS_SMPL_H__
> +#define __PERFMON_EM64T_PEBS_SMPL_H__ 1
> +
> +#define PFM_EM64T_PEBS_SMPL_UUID { \
> + 0x36, 0xbe, 0x97, 0x94, 0x1f, 0xbf, 0x41, 0xdf,\
> + 0xb4, 0x63, 0x10, 0x62, 0xeb, 0x72, 0x9b, 0xad}
What does it need the UUID for?
> +
> +/*
> + * format specific parameters (passed at context creation)
> + *
> + * intr_thres: index from start of buffer of entry where the
> + * PMU interrupt must be triggered. It must be several samples
> + * short of the end of the buffer.
> + */
> +struct pfm_em64t_pebs_smpl_arg {
> + size_t buf_size; /* size of the buffer in bytes */
> + size_t intr_thres; /* index of interrupt threshold entry */
> + u32 flags; /* buffer specific flags */
> + u64 cnt_reset; /* counter reset value */
> + u32 res1; /* for future use */
> + u64 reserved[2]; /* for future use */
I hope you double checked the alignment comes up everywhere correctly.
u64 alignment is different on the 32bit and 64bit ABIs. That can screw
Normally it's safer to use aligned_u64 on files that can be used on
32bit too, because that avoids that problem.
Where is the actual code that implements the code that you hooked
into arch/x86_64/*? I must have missed that.
-Andi
next prev parent reply other threads:[~2006-08-23 10:19 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-23 8:06 [PATCH 18/18] 2.6.17.9 perfmon2 patch for review: new x86_64 files Stephane Eranian
2006-08-23 10:19 ` Andi Kleen [this message]
2006-08-23 10:29 ` Stephane Eranian
2006-08-23 15:25 ` Christoph Hellwig
2006-08-23 15:53 ` Stephane Eranian
2006-08-23 20:57 ` Christoph Hellwig
2006-08-23 10:39 ` Stephane Eranian
2006-08-23 11:22 ` Andi Kleen
2006-08-23 12:14 ` Stephane Eranian
2006-08-23 12:29 ` Andi Kleen
2006-08-23 12:58 ` Stephane Eranian
2006-08-23 13:44 ` Andi Kleen
2006-08-23 13:48 ` Stephane Eranian
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=p73fyfn7nzz.fsf@verdi.suse.de \
--to=ak@suse.de \
--cc=eranian@frankl.hpl.hp.com \
--cc=eranian@hpl.hp.com \
--cc=linux-kernel@vger.kernel.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.