RE: [Linux-ia64] [PATCH] Support for alternative kernel profiler

Luck, Tony
2002-01-09T21:37:34Z

[-- Attachment #1: Type: text/plain, Size: 946 bytes --]

It turns out that we don't really need to have init_tasks[] exported.

Here is a revised version of the patch with just the change to add
SA_PERCPU_IRQ to the flags accepted by request_irq()

-Tony

-----Original Message-----
From: Luck, Tony [mailto:tony.luck@intel.com]
Sent: Friday, January 04, 2002 5:04 PM
To: 'davidm@hpl.hp.com'
Cc: linux-ia64@linuxia64.org
Subject: [Linux-ia64] [PATCH] Support for alternative kernel profiler in
a module

To allow an alternative kernel profiler using the ia64
perfomance counters to be loaded as a module, a couple
of small changes are needed.

1) Define a new 'irqflags' bit (SA_PERCPU_IRQ) to allow a module
to request a per-cpu irq.

2) Export init_tasks[] so that the module can adjust the state
of psr.pp in the idle tasks for all CPUs.

I've attached the patch rather than inlining it in the hope that
outlook won't sabotage it by folding long lines or playing with
tabs and spaces.

-Tony Luck

[-- Attachment #2: DIFF --]
[-- Type: application/octet-stream, Size: 1118 bytes --]

diff -ru ../../REF/2.4.17-ia64-011226/arch/ia64/kernel/irq.c linux/arch/ia64/kernel/irq.c
--- ../../REF/2.4.17-ia64-011226/arch/ia64/kernel/irq.c Mon Dec 31 09:02:35 2001
+++ linux/arch/ia64/kernel/irq.c Fri Jan 4 16:17:35 2002
@@ -1010,6 +1010,11 @@
rand_initialize_irq(irq);
}

+ if (new->flags & SA_PERCPU_IRQ) {
+ desc->status |= IRQ_PER_CPU;
+ desc->handler = &irq_type_ia64_lsapic;
+ }
+
/*
* The following block of code has to be executed atomically
*/
diff -ru ../../REF/2.4.17-ia64-011226/include/asm-ia64/signal.h linux/include/asm-ia64/signal.h
--- ../../REF/2.4.17-ia64-011226/include/asm-ia64/signal.h Wed Oct 3 11:32:32 2001
+++ linux/include/asm-ia64/signal.h Fri Jan 4 16:23:52 2002
@@ -111,10 +111,12 @@
*
* SA_INTERRUPT is also used by the irq handling routines.
* SA_SHIRQ is for shared interrupt support on PCI and EISA.
+ * SA_PERCPU_IRQ is for processor internal interrupts
*/
#define SA_PROBE SA_ONESHOT
#define SA_SAMPLE_RANDOM SA_RESTART
#define SA_SHIRQ 0x04000000
+#define SA_PERCPU_IRQ 0x02000000

#endif /* __KERNEL__ */