diff options
author | Paul Mundt <lethal@linux-sh.org> | 2009-04-01 23:31:16 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2009-04-01 23:31:16 -0400 |
commit | eeee7853c4ffaf5b9eb58f39708e3c78f66cee15 (patch) | |
tree | 55506c48a8e841573f1d869cd6e0fbfc6e8443e1 | |
parent | 8dafc34616282c1fd79d42a4353ee5322767d720 (diff) |
sh: Add a command line option for disabling I/O trapping.
This adds a 'noiotrap' kernel command line option to permit disabling of
I/O trapping. This is mostly useful for running on emulators where the
physical device limitations are not an issue.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
-rw-r--r-- | Documentation/kernel-parameters.txt | 2 | ||||
-rw-r--r-- | arch/sh/kernel/io_trapped.c | 13 |
2 files changed, 15 insertions, 0 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 240257dd4238..8b2067cceadc 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -1544,6 +1544,8 @@ and is between 256 and 4096 characters. It is defined in the file | |||
1544 | Valid arguments: on, off | 1544 | Valid arguments: on, off |
1545 | Default: on | 1545 | Default: on |
1546 | 1546 | ||
1547 | noiotrap [SH] Disables trapped I/O port accesses. | ||
1548 | |||
1547 | noirqdebug [X86-32] Disables the code which attempts to detect and | 1549 | noirqdebug [X86-32] Disables the code which attempts to detect and |
1548 | disable unhandled interrupt sources. | 1550 | disable unhandled interrupt sources. |
1549 | 1551 | ||
diff --git a/arch/sh/kernel/io_trapped.c b/arch/sh/kernel/io_trapped.c index 39cd7f3aec7b..c22853b059ef 100644 --- a/arch/sh/kernel/io_trapped.c +++ b/arch/sh/kernel/io_trapped.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/bitops.h> | 14 | #include <linux/bitops.h> |
15 | #include <linux/vmalloc.h> | 15 | #include <linux/vmalloc.h> |
16 | #include <linux/module.h> | 16 | #include <linux/module.h> |
17 | #include <linux/init.h> | ||
17 | #include <asm/system.h> | 18 | #include <asm/system.h> |
18 | #include <asm/mmu_context.h> | 19 | #include <asm/mmu_context.h> |
19 | #include <asm/uaccess.h> | 20 | #include <asm/uaccess.h> |
@@ -32,6 +33,15 @@ EXPORT_SYMBOL_GPL(trapped_mem); | |||
32 | #endif | 33 | #endif |
33 | static DEFINE_SPINLOCK(trapped_lock); | 34 | static DEFINE_SPINLOCK(trapped_lock); |
34 | 35 | ||
36 | static int trapped_io_disable __read_mostly; | ||
37 | |||
38 | static int __init trapped_io_setup(char *__unused) | ||
39 | { | ||
40 | trapped_io_disable = 1; | ||
41 | return 1; | ||
42 | } | ||
43 | __setup("noiotrap", trapped_io_setup); | ||
44 | |||
35 | int register_trapped_io(struct trapped_io *tiop) | 45 | int register_trapped_io(struct trapped_io *tiop) |
36 | { | 46 | { |
37 | struct resource *res; | 47 | struct resource *res; |
@@ -39,6 +49,9 @@ int register_trapped_io(struct trapped_io *tiop) | |||
39 | struct page *pages[TRAPPED_PAGES_MAX]; | 49 | struct page *pages[TRAPPED_PAGES_MAX]; |
40 | int k, n; | 50 | int k, n; |
41 | 51 | ||
52 | if (unlikely(trapped_io_disable)) | ||
53 | return 0; | ||
54 | |||
42 | /* structure must be page aligned */ | 55 | /* structure must be page aligned */ |
43 | if ((unsigned long)tiop & (PAGE_SIZE - 1)) | 56 | if ((unsigned long)tiop & (PAGE_SIZE - 1)) |
44 | goto bad; | 57 | goto bad; |