From: William Lee Irwin III <wli@holomorphy.com>
To: Andi Kleen <andi@firstfloor.org>
Cc: Christoph Hellwig <hch@infradead.org>,
Alan Cox <alan@lxorguk.ukuu.org.uk>, David Chinner <dgc@sgi.com>,
Zan Lynx <zlynx@acm.org>, Adrian Bunk <bunk@stusta.de>,
Linux Kernel <linux-kernel@vger.kernel.org>
Subject: [3/6] make IRQ stacks independently configurable (was: Re: [-mm patch] i386: enable 4k stacks by default)
Date: Mon, 30 Apr 2007 10:44:05 -0700 [thread overview]
Message-ID: <20070430174405.GF19966@holomorphy.com> (raw)
In-Reply-To: <20070430173819.GC19966@holomorphy.com>
On Mon, Apr 30, 2007 at 10:38:19AM -0700, William Lee Irwin III wrote:
> Here's what I did for i386 for someone concerned about blowing the stack.
Divorce IRQ stack configuration from CONFIG_4KSTACKS, as it's believed to
be an important safety measure regardless of stack size by some users.
Signed-off-by: William Irwin <wli@holomorphy.com>
Index: stack-paranoia/arch/i386/Kconfig.debug
===================================================================
--- stack-paranoia.orig/arch/i386/Kconfig.debug 2007-04-30 10:32:56.182682722 -0700
+++ stack-paranoia/arch/i386/Kconfig.debug 2007-04-30 10:34:07.058721717 -0700
@@ -35,6 +35,14 @@
This option will slow down process creation somewhat.
+config IRQSTACKS
+ bool "IRQ stacks"
+ depends on DEBUG_KERNEL
+ help
+ Arranges for per-cpu interrupt stacks so that interrupts
+ and interrupt-time processing don't consume space on task
+ stacks.
+
config VMALLOC_STACK
bool "vmalloc() the stack"
depends on DEBUG_KERNEL
@@ -76,8 +84,7 @@
If you say Y here the kernel will use a 4Kb stacksize for the
kernel stack attached to each process/thread. This facilitates
running more threads on a system and also reduces the pressure
- on the VM subsystem for higher order allocations. This option
- will also use IRQ stacks to compensate for the reduced stackspace.
+ on the VM subsystem for higher order allocations.
config 8KSTACKS
bool "Use 8KB for kernel stacks"
@@ -90,7 +97,6 @@
If you say Y here, the kernel will use a 16KB stacksize.
This impedes running more threads on a system and also increases
the pressure on the VM subsystem for higher order allocations.
- This option will also use IRQ stacks to for additional safety.
config 32KSTACKS
bool "Use 32KB for kernel stacks"
@@ -98,15 +104,14 @@
If you say Y here, the kernel will use a 32KB stacksize.
This impedes running more threads on a system and also increases
the pressure on the VM subsystem for higher order allocations.
- This option will also use IRQ stacks to for additional safety.
config 64KSTACKS
bool "Use 64KB for kernel stacks"
+ depends on !IRQSTACKS
help
If you say Y here, the kernel will use a 64KB stacksize.
This impedes running more threads on a system and also increases
the pressure on the VM subsystem for higher order allocations.
- This option will also use IRQ stacks to for additional safety.
endchoice
Index: stack-paranoia/arch/i386/kernel/irq.c
===================================================================
--- stack-paranoia.orig/arch/i386/kernel/irq.c 2007-04-30 10:26:15.967875780 -0700
+++ stack-paranoia/arch/i386/kernel/irq.c 2007-04-30 10:34:07.058721717 -0700
@@ -47,7 +47,7 @@
#endif
}
-#ifdef CONFIG_4KSTACKS
+#ifdef CONFIG_IRQSTACKS
/*
* per-CPU IRQ handling contexts (thread information and stack)
*/
@@ -71,7 +71,7 @@
/* high bit used in ret_from_ code */
int irq = ~regs->orig_eax;
struct irq_desc *desc = irq_desc + irq;
-#ifdef CONFIG_4KSTACKS
+#ifdef CONFIG_IRQSTACKS
union irq_ctx *curctx, *irqctx;
u32 *isp;
#endif
@@ -99,7 +99,7 @@
}
#endif
-#ifdef CONFIG_4KSTACKS
+#ifdef CONFIG_IRQSTACKS
curctx = (union irq_ctx *) current_thread_info();
irqctx = hardirq_ctx[smp_processor_id()];
@@ -144,7 +144,7 @@
return 1;
}
-#ifdef CONFIG_4KSTACKS
+#ifdef CONFIG_IRQSTACKS
/*
* These should really be __section__(".bss.page_aligned") as well, but
Index: stack-paranoia/include/asm-i386/irq.h
===================================================================
--- stack-paranoia.orig/include/asm-i386/irq.h 2007-04-30 10:26:31.904783972 -0700
+++ stack-paranoia/include/asm-i386/irq.h 2007-04-30 10:34:07.058721717 -0700
@@ -24,7 +24,7 @@
# define ARCH_HAS_NMI_WATCHDOG /* See include/linux/nmi.h */
#endif
-#ifdef CONFIG_4KSTACKS
+#ifdef CONFIG_IRQSTACKS
extern void irq_ctx_init(int cpu);
extern void irq_ctx_exit(int cpu);
# define __ARCH_HAS_DO_SOFTIRQ
Index: stack-paranoia/include/asm-i386/module.h
===================================================================
--- stack-paranoia.orig/include/asm-i386/module.h 2007-04-30 10:32:56.182682722 -0700
+++ stack-paranoia/include/asm-i386/module.h 2007-04-30 10:34:07.058721717 -0700
@@ -80,7 +80,13 @@
#define MODULE_VMALLOC_STACK ""
#endif
+#ifdef CONFIG_IRQSTACKS
+#define MODULE_IRQSTACKS "IRQSTACKS "
+#else
+#define MODULE_IRQSTACKS ""
+#endif
+
#define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY MODULE_STACKSIZE \
- MODULE_VMALLOC_STACK
+ MODULE_VMALLOC_STACK MODULE_IRQSTACKS
#endif /* _ASM_I386_MODULE_H */
next prev parent reply other threads:[~2007-04-30 17:44 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-04-28 19:19 [-mm patch] i386: enable 4k stacks by default Adrian Bunk
2007-04-28 21:18 ` Zan Lynx
2007-04-30 3:58 ` David Chinner
2007-04-30 8:17 ` Alan Cox
2007-04-30 10:26 ` Andi Kleen
2007-04-30 10:48 ` Christoph Hellwig
2007-04-30 12:13 ` Andi Kleen
2007-04-30 17:38 ` William Lee Irwin III
2007-04-30 17:40 ` [1/6] make stack size configurable (was: Re: [-mm patch] i386: enable 4k stacks by default) William Lee Irwin III
2007-04-30 18:10 ` Christoph Hellwig
2007-04-30 18:13 ` William Lee Irwin III
2007-04-30 18:25 ` Adrian Bunk
2007-04-30 18:32 ` William Lee Irwin III
2007-04-30 17:43 ` [2/6] add config option to vmalloc stacks " William Lee Irwin III
2007-04-30 18:11 ` Christoph Hellwig
2007-04-30 18:25 ` Jan Engelhardt
2007-04-30 19:09 ` William Lee Irwin III
2007-04-30 19:15 ` Christoph Hellwig
2007-04-30 19:23 ` Bill Irwin
2007-04-30 22:04 ` Bill Irwin
2007-05-01 22:36 ` Matt Mackall
2007-05-01 22:51 ` Bill Irwin
2007-05-01 23:07 ` Alan Cox
2007-05-01 23:23 ` Bill Irwin
2007-05-01 23:15 ` Matt Mackall
2007-05-01 23:27 ` Bill Irwin
2007-05-04 5:35 ` Joseph Fannin
2007-05-04 7:43 ` Bill Irwin
2007-04-30 17:44 ` William Lee Irwin III [this message]
2007-04-30 18:11 ` [3/6] make IRQ stacks independently configurable " Christoph Hellwig
2007-04-30 18:14 ` William Lee Irwin III
2007-04-30 17:45 ` [4/6] go BUG on vmallocspace in __pa() " William Lee Irwin III
2007-04-30 18:52 ` Andi Kleen
2007-04-30 18:58 ` William Lee Irwin III
2007-04-30 19:20 ` Alan Cox
2007-04-30 19:26 ` Bill Irwin
2007-05-02 22:31 ` [4/6] go BUG on vmallocspace in __pa() Jeremy Fitzhardinge
2007-05-02 22:48 ` Bill Irwin
2007-04-30 17:46 ` [5/6] dynamically allocate IRQ stacks (was: Re: [-mm patch] i386: enable 4k stacks by default) William Lee Irwin III
2007-04-30 19:49 ` Zwane Mwaikambo
2007-04-30 20:03 ` Bill Irwin
2007-04-30 20:07 ` Andi Kleen
2007-04-30 17:47 ` [6/6] arrange for a guard page on cpu 0's IRQ stack " William Lee Irwin III
2007-04-30 18:22 ` [-mm patch] i386: enable 4k stacks by default Jan Engelhardt
2007-04-30 18:35 ` William Lee Irwin III
2007-04-30 18:51 ` Andi Kleen
2007-04-30 8:55 ` Neil Brown
2007-04-30 8:59 ` Christoph Hellwig
2007-04-30 11:30 ` Jens Axboe
2007-04-30 23:24 ` Neil Brown
2007-05-01 8:01 ` Jens Axboe
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=20070430174405.GF19966@holomorphy.com \
--to=wli@holomorphy.com \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=andi@firstfloor.org \
--cc=bunk@stusta.de \
--cc=dgc@sgi.com \
--cc=hch@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=zlynx@acm.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.