All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Martin J. Bligh" <mbligh@aracnet.com>
To: Andrew Morton <akpm@digeo.com>
Cc: linux-kernel <linux-kernel@vger.kernel.org>
Subject: [PATCH] Timer interrupt cleanups [2/3] - local timer
Date: Sun, 05 Jan 2003 18:34:16 -0800	[thread overview]
Message-ID: <198230000.1041820456@titus> (raw)

This patch renames:

apic_timer_interrupt -> local_apic_timer_interrupt
smp_apic_timer_interrupt ->  do_local_apic_timer_interrupt
smp_local_timer_interrupt -> do_local_timer

--------------------

Assuming we're SMP with a local apic timer all firing away:

global_timer_interrupt
	do_global_timer_interrupt
		{ack the interrupt}
		do_global_timer_interrupt_hook
			do_global_timer
				jiffies_64++;
				update_times
		{update CMOS clock}    (In the interrupt still ??!!)

local_apic_timer_interrupt
	do_local_apic_timer_interrupt
		{ack the interrupt}
		do_local_timer
			x86_do_profile
			update_process_times

--------------------

On UP with local apic timer:

global_timer_interrupt
	do_global_timer_interrupt
		{ack the interrupt}
		do_global_timer_interrupt_hook
			do_global_timer
				jiffies_64++;
				update_process_times
				update_times
		{update CMOS clock}    (In the interrupt still ??!!)

local_apic_timer_interrupt
	do_local_apic_timer_interrupt
		{ack the interrupt}
		do_local_timer
			x86_do_profile

--------------------

On a UP 386 with stale crusty breadcrumbs, and no local timer:
	
global_timer_interrupt
	do_global_timer_interrupt
		{ack the interrupt}
		do_global_timer_interrupt_hook
			do_global_timer
				jiffies_64++;
				update_process_times
				update_times
			x86_do_profile()
		{update CMOS clock}    (In the interrupt still ??!!)

--------------------

diff -urpN -X /home/fletch/.diff.exclude 
01-rename_global_timer/arch/i386/kernel/apic.c 
02-rename_local_timer/arch/i386/kernel/apic.c
--- 01-rename_global_timer/arch/i386/kernel/apic.c	Thu Jan  2 22:04:58 2003
+++ 02-rename_local_timer/arch/i386/kernel/apic.c	Sun Jan  5 10:53:14 2003
@@ -40,14 +40,14 @@ void __init apic_intr_init(void)
 	smp_intr_init();
 #endif
 	/* self generated IPI for local APIC timer */
-	set_intr_gate(LOCAL_TIMER_VECTOR, apic_timer_interrupt);
+	set_intr_gate(LOCAL_TIMER_VECTOR, local_apic_timer_interrupt);

 	/* IPI vectors for APIC spurious and error interrupts */
 	set_intr_gate(SPURIOUS_APIC_VECTOR, spurious_interrupt);
 	set_intr_gate(ERROR_APIC_VECTOR, error_interrupt);
 }

-/* Using APIC to generate smp_local_timer_interrupt? */
+/* Using local APIC interrupt to fire do_local_timer? */
 int using_apic_timer = 0;

 int prof_multiplier[NR_CPUS] = { 1, };
@@ -991,7 +991,7 @@ int setup_profiling_timer(unsigned int m
  * value into /proc/profile.
  */

-inline void smp_local_timer_interrupt(struct pt_regs * regs)
+inline void do_local_timer(struct pt_regs * regs)
 {
 	int cpu = smp_processor_id();

@@ -1038,7 +1038,7 @@ inline void smp_local_timer_interrupt(st
  *   interrupt as well. Thus we cannot inline the local irq ... ]
  */

-void smp_apic_timer_interrupt(struct pt_regs regs)
+void do_local_apic_timer_interrupt(struct pt_regs regs)
 {
 	int cpu = smp_processor_id();

@@ -1058,7 +1058,7 @@ void smp_apic_timer_interrupt(struct pt_
 	 * interrupt lock, which is the WrongThing (tm) to do.
 	 */
 	irq_enter();
-	smp_local_timer_interrupt(&regs);
+	do_local_timer(&regs);
 	irq_exit();
 }

diff -urpN -X /home/fletch/.diff.exclude 
01-rename_global_timer/arch/i386/kernel/entry.S 
02-rename_local_timer/arch/i386/kernel/entry.S
--- 01-rename_global_timer/arch/i386/kernel/entry.S	Thu Jan  2 22:04:58 2003
+++ 02-rename_local_timer/arch/i386/kernel/entry.S	Sun Jan  5 10:51:02 2003
@@ -397,12 +397,14 @@ common_interrupt:
 	call do_IRQ
 	jmp ret_from_intr

-#define BUILD_INTERRUPT(name, nr)	\
+#define __BUILD_INTERRUPT(name, callfn, nr)	\
 ENTRY(name)				\
 	pushl $nr-256;			\
 	SAVE_ALL			\
-	call smp_/**/name;	\
+	call callfn;	\
 	jmp ret_from_intr;
+
+#define BUILD_INTERRUPT(name, nr) __BUILD_INTERRUPT(name, smp_/**/name, nr)

 /* The include is where all of the SMP etc. interrupts come from */
 #include "entry_arch.h"
diff -urpN -X /home/fletch/.diff.exclude 
01-rename_global_timer/arch/i386/mach-voyager/voyager_smp.c 
02-rename_local_timer/arch/i386/mach-voyager/voyager_smp.c
--- 01-rename_global_timer/arch/i386/mach-voyager/voyager_smp.c	Thu Jan  2 
22:04:58 2003
+++ 02-rename_local_timer/arch/i386/mach-voyager/voyager_smp.c	Sun Jan  5 
10:55:56 2003
@@ -234,7 +234,7 @@ static int cpucount = 0;
  * space */
 static __u32 trampoline_base;

-/* The per cpu profile stuff - used in smp_local_timer_interrupt */
+/* The per cpu profile stuff - used in do_local_timer */
 static unsigned int prof_multiplier[NR_CPUS] __cacheline_aligned = { 1, };
 static unsigned int prof_old_multiplier[NR_CPUS] __cacheline_aligned = { 
1, };
 static unsigned int prof_counter[NR_CPUS] __cacheline_aligned = { 1, };
@@ -1150,7 +1150,7 @@ smp_call_function (void (*func) (void *i
  *
  * This function is currently a placeholder and is unused in the code */
 asmlinkage void
-smp_apic_timer_interrupt(struct pt_regs regs)
+do_local_apic_timer_interrupt(struct pt_regs regs)
 {
 	wrapper_smp_local_timer_interrupt(&regs);
 }
@@ -1286,14 +1286,14 @@ void
 smp_vic_timer_interrupt(struct pt_regs *regs)
 {
 	send_CPI_allbutself(VIC_TIMER_CPI);
-	smp_local_timer_interrupt(regs);
+	do_local_timer(regs);
 }

 static inline void
 wrapper_smp_local_timer_interrupt(struct pt_regs *regs)
 {
 	irq_enter();
-	smp_local_timer_interrupt(regs);
+	do_local_timer(regs);
 	irq_exit();
 }

@@ -1306,7 +1306,7 @@ wrapper_smp_local_timer_interrupt(struct
  * value into /proc/profile.
  */
 void
-smp_local_timer_interrupt(struct pt_regs * regs)
+do_local_timer(struct pt_regs * regs)
 {
 	int cpu = smp_processor_id();
 	long weight;
diff -urpN -X /home/fletch/.diff.exclude 
01-rename_global_timer/include/asm-i386/apic.h 
02-rename_local_timer/include/asm-i386/apic.h
--- 01-rename_global_timer/include/asm-i386/apic.h	Sun Nov 17 20:29:57 2002
+++ 02-rename_local_timer/include/asm-i386/apic.h	Sun Jan  5 10:51:02 2003
@@ -75,7 +75,7 @@ extern void sync_Arb_IDs (void);
 extern void init_bsp_APIC (void);
 extern void setup_local_APIC (void);
 extern void init_apic_mappings (void);
-extern void smp_local_timer_interrupt (struct pt_regs * regs);
+extern void do_local_timer (struct pt_regs * regs);
 extern void setup_boot_APIC_clock (void);
 extern void setup_secondary_APIC_clock (void);
 extern void setup_apic_nmi_watchdog (void);
diff -urpN -X /home/fletch/.diff.exclude 
01-rename_global_timer/include/asm-i386/hw_irq.h 
02-rename_local_timer/include/asm-i386/hw_irq.h
--- 01-rename_global_timer/include/asm-i386/hw_irq.h	Thu Jan  2 22:05:15 
2003
+++ 02-rename_local_timer/include/asm-i386/hw_irq.h	Sun Jan  5 10:51:02 2003
@@ -36,7 +36,7 @@ extern asmlinkage void call_function_int
 #endif

 #ifdef CONFIG_X86_LOCAL_APIC
-extern asmlinkage void apic_timer_interrupt(void);
+extern asmlinkage void local_apic_timer_interrupt(void);
 extern asmlinkage void error_interrupt(void);
 extern asmlinkage void spurious_interrupt(void);
 extern asmlinkage void thermal_interrupt(struct pt_regs);
diff -urpN -X /home/fletch/.diff.exclude 
01-rename_global_timer/include/asm-i386/mach-default/do_timer.h 
02-rename_local_timer/include/asm-i386/mach-default/do_timer.h
--- 01-rename_global_timer/include/asm-i386/mach-default/do_timer.h	Sun Jan 
5 10:48:34 2003
+++ 02-rename_local_timer/include/asm-i386/mach-default/do_timer.h	Sun Jan 
5 10:51:02 2003
@@ -25,7 +25,7 @@ static inline void do_global_timer_inter
 	x86_do_profile(regs);
 #else
 	if (!using_apic_timer)
-		smp_local_timer_interrupt(regs);
+		do_local_timer(regs);
 #endif
 }

diff -urpN -X /home/fletch/.diff.exclude 
01-rename_global_timer/include/asm-i386/mach-default/entry_arch.h 
02-rename_local_timer/include/asm-i386/mach-default/entry_arch.h
--- 01-rename_global_timer/include/asm-i386/mach-default/entry_arch.h	Mon 
Dec 23 23:01:56 2002
+++ 02-rename_local_timer/include/asm-i386/mach-default/entry_arch.h	Sun 
Jan  5 10:51:02 2003
@@ -23,7 +23,7 @@ BUILD_INTERRUPT(call_function_interrupt,
  * a much simpler SMP time architecture:
  */
 #ifdef CONFIG_X86_LOCAL_APIC
-BUILD_INTERRUPT(apic_timer_interrupt,LOCAL_TIMER_VECTOR)
+__BUILD_INTERRUPT(local_apic_timer_interrupt, 
do_local_apic_timer_interrupt, LOCAL_TIMER_VECTOR)
 BUILD_INTERRUPT(error_interrupt,ERROR_APIC_VECTOR)
 BUILD_INTERRUPT(spurious_interrupt,SPURIOUS_APIC_VECTOR)

diff -urpN -X /home/fletch/.diff.exclude 
01-rename_global_timer/include/asm-i386/mach-visws/do_timer.h 
02-rename_local_timer/include/asm-i386/mach-visws/do_timer.h
--- 01-rename_global_timer/include/asm-i386/mach-visws/do_timer.h	Sun Jan 
5 10:48:57 2003
+++ 02-rename_local_timer/include/asm-i386/mach-visws/do_timer.h	Sun Jan  5 
10:51:02 2003
@@ -18,7 +18,7 @@ static inline void do_global_timer_inter
 	x86_do_profile(regs);
 #else
 	if (!using_apic_timer)
-		smp_local_timer_interrupt(regs);
+		do_local_timer(regs);
 #endif
 }

diff -urpN -X /home/fletch/.diff.exclude 
01-rename_global_timer/include/asm-i386/mach-visws/entry_arch.h 
02-rename_local_timer/include/asm-i386/mach-visws/entry_arch.h
--- 01-rename_global_timer/include/asm-i386/mach-visws/entry_arch.h	Mon Dec 
23 23:01:56 2002
+++ 02-rename_local_timer/include/asm-i386/mach-visws/entry_arch.h	Sun Jan 
5 10:51:02 2003
@@ -17,7 +17,7 @@ BUILD_INTERRUPT(call_function_interrupt,
  * a much simpler SMP time architecture:
  */
 #ifdef CONFIG_X86_LOCAL_APIC
-BUILD_INTERRUPT(apic_timer_interrupt,LOCAL_TIMER_VECTOR)
+__BUILD_INTERRUPT(local_apic_timer_interrupt, 
do_local_apic_timer_interrupt, LOCAL_TIMER_VECTOR)
 BUILD_INTERRUPT(error_interrupt,ERROR_APIC_VECTOR)
 BUILD_INTERRUPT(spurious_interrupt,SPURIOUS_APIC_VECTOR)
 #endif
diff -urpN -X /home/fletch/.diff.exclude 
01-rename_global_timer/include/asm-i386/voyager.h 
02-rename_local_timer/include/asm-i386/voyager.h
--- 01-rename_global_timer/include/asm-i386/voyager.h	Thu Jan  2 22:05:15 
2003
+++ 02-rename_local_timer/include/asm-i386/voyager.h	Sun Jan  5 10:54:21 
2003
@@ -506,7 +506,7 @@ extern void voyager_smp_intr_init(void);
 extern __u8 voyager_extended_cmos_read(__u16 cmos_address);
 extern void voyager_smp_dump(void);
 extern void voyager_timer_interrupt(struct pt_regs *regs);
-extern void smp_local_timer_interrupt(struct pt_regs * regs);
+extern void do_local_timer(struct pt_regs * regs);
 extern void voyager_power_off(void);
 extern void smp_voyager_power_off(void *dummy);
 extern void voyager_restart(void);


                 reply	other threads:[~2003-01-06  2:26 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=198230000.1041820456@titus \
    --to=mbligh@aracnet.com \
    --cc=akpm@digeo.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.