mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Mikael Pettersson <mikpe@csd.uu.se>
To: akpm@osdl.org
Cc: anton@samba.org, linux-kernel@vger.kernel.org, linuxppc64-dev@ozlabs.org
Subject: [PATCH 2.6.12-rc1-mm5 1/3] perfctr: ppc64 arch hooks
Date: Fri, 1 Apr 2005 00:07:34 +0200 (MEST)	[thread overview]
Message-ID: <200503312207.j2VM7YUI011924@alkaid.it.uu.se> (raw)

Here's a 3-part patch kit which adds a ppc64 driver to perfctr,
written by David Gibson <david@gibson.dropbear.id.au>.
ppc64 is sufficiently different from ppc32 that this driver
is kept separate from my ppc32 driver. This shouldn't matter unless
people actually want to run ppc32 kernels on ppc64 processors.

ppc64 perfctr driver from David Gibson <david@gibson.dropbear.id.au>:
- ppc64 arch hooks: Kconfig, syscalls numbers and tables, task struct,
  and process management ops (switch_to, exit, fork)

Signed-off-by: Mikael Pettersson <mikpe@csd.uu.se>

 arch/ppc64/Kconfig            |    1 +
 arch/ppc64/kernel/misc.S      |   12 ++++++++++++
 arch/ppc64/kernel/process.c   |    6 ++++++
 include/asm-ppc64/processor.h |    2 ++
 include/asm-ppc64/unistd.h    |    8 +++++++-
 5 files changed, 28 insertions(+), 1 deletion(-)

diff -rupN linux-2.6.12-rc1-mm4/arch/ppc64/Kconfig linux-2.6.12-rc1-mm4.perfctr27-ppc64-arch-hooks/arch/ppc64/Kconfig
--- linux-2.6.12-rc1-mm4/arch/ppc64/Kconfig	2005-03-31 21:08:24.000000000 +0200
+++ linux-2.6.12-rc1-mm4.perfctr27-ppc64-arch-hooks/arch/ppc64/Kconfig	2005-03-31 23:28:07.000000000 +0200
@@ -297,6 +297,7 @@ config SECCOMP
 
 endmenu
 
+source "drivers/perfctr/Kconfig"
 
 menu "General setup"
 
diff -rupN linux-2.6.12-rc1-mm4/arch/ppc64/kernel/misc.S linux-2.6.12-rc1-mm4.perfctr27-ppc64-arch-hooks/arch/ppc64/kernel/misc.S
--- linux-2.6.12-rc1-mm4/arch/ppc64/kernel/misc.S	2005-03-31 21:08:24.000000000 +0200
+++ linux-2.6.12-rc1-mm4.perfctr27-ppc64-arch-hooks/arch/ppc64/kernel/misc.S	2005-03-31 23:28:07.000000000 +0200
@@ -956,6 +956,12 @@ _GLOBAL(sys_call_table32)
 	.llong .sys32_request_key
 	.llong .compat_sys_keyctl
 	.llong .compat_sys_waitid
+	.llong .sys_ni_syscall		/* 273 reserved for sys_ioprio_set */
+	.llong .sys_ni_syscall		/* 274 reserved for sys_ioprio_get */
+	.llong .sys_vperfctr_open	/* 275 */
+	.llong .sys_vperfctr_control
+	.llong .sys_vperfctr_write
+	.llong .sys_vperfctr_read
 
 	.balign 8
 _GLOBAL(sys_call_table)
@@ -1232,3 +1238,9 @@ _GLOBAL(sys_call_table)
 	.llong .sys_request_key		/* 270 */
 	.llong .sys_keyctl
 	.llong .sys_waitid
+	.llong .sys_ni_syscall		/* 273 reserved for sys_ioprio_set */
+	.llong .sys_ni_syscall		/* 274 reserved for sys_ioprio_get */
+	.llong .sys_vperfctr_open	/* 275 */
+	.llong .sys_vperfctr_control
+	.llong .sys_vperfctr_write
+	.llong .sys_vperfctr_read
diff -rupN linux-2.6.12-rc1-mm4/arch/ppc64/kernel/process.c linux-2.6.12-rc1-mm4.perfctr27-ppc64-arch-hooks/arch/ppc64/kernel/process.c
--- linux-2.6.12-rc1-mm4/arch/ppc64/kernel/process.c	2005-03-31 21:07:46.000000000 +0200
+++ linux-2.6.12-rc1-mm4.perfctr27-ppc64-arch-hooks/arch/ppc64/kernel/process.c	2005-03-31 23:28:07.000000000 +0200
@@ -36,6 +36,7 @@
 #include <linux/kallsyms.h>
 #include <linux/interrupt.h>
 #include <linux/utsname.h>
+#include <linux/perfctr.h>
 
 #include <asm/pgtable.h>
 #include <asm/uaccess.h>
@@ -225,7 +226,9 @@ struct task_struct *__switch_to(struct t
 
 
 	local_irq_save(flags);
+	perfctr_suspend_thread(&prev->thread);
 	last = _switch(old_thread, new_thread);
+	perfctr_resume_thread(&current->thread);
 
 	local_irq_restore(flags);
 
@@ -323,6 +326,7 @@ void exit_thread(void)
 		last_task_used_altivec = NULL;
 #endif /* CONFIG_ALTIVEC */
 #endif /* CONFIG_SMP */
+	perfctr_exit_thread(&current->thread);
 }
 
 void flush_thread(void)
@@ -425,6 +429,8 @@ copy_thread(int nr, unsigned long clone_
  	 */
 	kregs->nip = *((unsigned long *)ret_from_fork);
 
+	perfctr_copy_task(p, regs);
+
 	return 0;
 }
 
diff -rupN linux-2.6.12-rc1-mm4/include/asm-ppc64/processor.h linux-2.6.12-rc1-mm4.perfctr27-ppc64-arch-hooks/include/asm-ppc64/processor.h
--- linux-2.6.12-rc1-mm4/include/asm-ppc64/processor.h	2005-03-31 21:08:31.000000000 +0200
+++ linux-2.6.12-rc1-mm4.perfctr27-ppc64-arch-hooks/include/asm-ppc64/processor.h	2005-03-31 23:28:07.000000000 +0200
@@ -574,6 +574,8 @@ struct thread_struct {
 	unsigned long	vrsave;
 	int		used_vr;	/* set if process has used altivec */
 #endif /* CONFIG_ALTIVEC */
+	/* performance counters */
+	struct vperfctr *perfctr;
 };
 
 #define ARCH_MIN_TASKALIGN 16
diff -rupN linux-2.6.12-rc1-mm4/include/asm-ppc64/unistd.h linux-2.6.12-rc1-mm4.perfctr27-ppc64-arch-hooks/include/asm-ppc64/unistd.h
--- linux-2.6.12-rc1-mm4/include/asm-ppc64/unistd.h	2005-03-31 21:07:54.000000000 +0200
+++ linux-2.6.12-rc1-mm4.perfctr27-ppc64-arch-hooks/include/asm-ppc64/unistd.h	2005-03-31 23:28:07.000000000 +0200
@@ -283,8 +283,14 @@
 #define __NR_request_key	270
 #define __NR_keyctl		271
 #define __NR_waitid		272
+/* 273 is reserved for ioprio_set */
+/* 274 is reserved for ioprio_get */
+#define __NR_vperfctr_open	275
+#define __NR_vperfctr_control	(__NR_vperfctr_open+1)
+#define __NR_vperfctr_write	(__NR_vperfctr_open+2)
+#define __NR_vperfctr_read	(__NR_vperfctr_open+3)
 
-#define __NR_syscalls		273
+#define __NR_syscalls		279
 #ifdef __KERNEL__
 #define NR_syscalls	__NR_syscalls
 #endif

             reply	other threads:[~2005-03-31 22:08 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-03-31 22:07 Mikael Pettersson [this message]
2005-03-31 23:11 ` Andrew Morton
2005-03-31 23:49   ` David Gibson
2005-04-01  1:33     ` Andrew Morton
2005-04-01 12:46       ` Mikael Pettersson
2005-04-01 18:25         ` Andrew Morton
2005-04-04  3:25         ` David Gibson

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=200503312207.j2VM7YUI011924@alkaid.it.uu.se \
    --to=mikpe@csd.uu.se \
    --cc=akpm@osdl.org \
    --cc=anton@samba.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc64-dev@ozlabs.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®