Commit eeee7853 authored by Paul Mundt's avatar Paul Mundt

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: default avatarPaul Mundt <lethal@linux-sh.org>
parent 8dafc346
...@@ -1544,6 +1544,8 @@ and is between 256 and 4096 characters. It is defined in the file ...@@ -1544,6 +1544,8 @@ and is between 256 and 4096 characters. It is defined in the file
Valid arguments: on, off Valid arguments: on, off
Default: on Default: on
noiotrap [SH] Disables trapped I/O port accesses.
noirqdebug [X86-32] Disables the code which attempts to detect and noirqdebug [X86-32] Disables the code which attempts to detect and
disable unhandled interrupt sources. disable unhandled interrupt sources.
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include <linux/bitops.h> #include <linux/bitops.h>
#include <linux/vmalloc.h> #include <linux/vmalloc.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/init.h>
#include <asm/system.h> #include <asm/system.h>
#include <asm/mmu_context.h> #include <asm/mmu_context.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
...@@ -32,6 +33,15 @@ EXPORT_SYMBOL_GPL(trapped_mem); ...@@ -32,6 +33,15 @@ EXPORT_SYMBOL_GPL(trapped_mem);
#endif #endif
static DEFINE_SPINLOCK(trapped_lock); static DEFINE_SPINLOCK(trapped_lock);
static int trapped_io_disable __read_mostly;
static int __init trapped_io_setup(char *__unused)
{
trapped_io_disable = 1;
return 1;
}
__setup("noiotrap", trapped_io_setup);
int register_trapped_io(struct trapped_io *tiop) int register_trapped_io(struct trapped_io *tiop)
{ {
struct resource *res; struct resource *res;
...@@ -39,6 +49,9 @@ int register_trapped_io(struct trapped_io *tiop) ...@@ -39,6 +49,9 @@ int register_trapped_io(struct trapped_io *tiop)
struct page *pages[TRAPPED_PAGES_MAX]; struct page *pages[TRAPPED_PAGES_MAX];
int k, n; int k, n;
if (unlikely(trapped_io_disable))
return 0;
/* structure must be page aligned */ /* structure must be page aligned */
if ((unsigned long)tiop & (PAGE_SIZE - 1)) if ((unsigned long)tiop & (PAGE_SIZE - 1))
goto bad; goto bad;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment