Re: kgdb Bad IO access

Jason Wessel
2007-07-06T17:33:24Z

Tilman Schmidt wrote:
> Andrew Morton schrieb:
>
>> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc6/2.6.22-rc6-mm1/
>>
>> - Added the kgdb tree, as git-kgdb.patch (Jason Wessel
>> <jason.wessel@windriver.com>)
>>
>> This is a large patch which unifies all the various kgdb stubs lying
>> around various architectures and extends kgdb support to other
>> architectures. Supported architectures are at present arm, i386, ia64,
>> mips, ppc32, ppc64, sh, and x86_64.
>>
>> Subject to review, we're aiming this at 2.6.24.
>>
>
> Built a kernel with this just for fun on a Pentium D 940 system running
> a 32 bit install of SuSE 10.2. It complained thusly relatively early
> during startup:
>
> --------8<--------8<--------8<--------8<--------8<--------8<--------8<
> Bad IO access at port 10000 (outb(val,port))
> WARNING: at lib/iomap.c:44 bad_io_access()
> [dump_trace+99/475] dump_trace+0x63/0x1db
> [show_trace_log_lvl+26/47] show_trace_log_lvl+0x1a/0x2f
> [show_trace+18/20] show_trace+0x12/0x14
> [dump_stack+22/24] dump_stack+0x16/0x18
> [bad_io_access+84/86] bad_io_access+0x54/0x56
> [iowrite8+52/54] iowrite8+0x34/0x36
> [kgdb8250_uart_init+164/609] kgdb8250_uart_init+0xa4/0x261
> [kgdb_init_io+172/200] kgdb_init_io+0xac/0xc8
> [kgdb_late_entry+54/164] kgdb_late_entry+0x36/0xa4
> [kernel_init+346/732] kernel_init+0x15a/0x2dc
> [kernel_thread_helper+7/16] kernel_thread_helper+0x7/0x10
> =======================
> Bad IO access at port 10000 (return inb(port))
> WARNING: at lib/iomap.c:44 bad_io_access()
> [dump_trace+99/475] dump_trace+0x63/0x1db
> [show_trace_log_lvl+26/47] show_trace_log_lvl+0x1a/0x2f
> [show_trace+18/20] show_trace+0x12/0x14
> [dump_stack+22/24] dump_stack+0x16/0x18
> [bad_io_access+84/86] bad_io_access+0x54/0x56
> [ioread8+40/47] ioread8+0x28/0x2f
> [kgdb8250_uart_init+334/609] kgdb8250_uart_init+0x14e/0x261
> [kgdb_init_io+172/200] kgdb_init_io+0xac/0xc8
> input: AT Translated Set 2 keyboard as /class/input/input1
> [kgdb_late_entry+54/164] kgdb_late_entry+0x36/0xa4
> [kernel_init+346/732] kernel_init+0x15a/0x2dc
> [kernel_thread_helper+7/16] kernel_thread_helper+0x7/0x10
> =======================
> Bad IO access at port 10000 (outb(val,port))
> WARNING: at lib/iomap.c:44 bad_io_access()
> [dump_trace+99/475] dump_trace+0x63/0x1db
> [show_trace_log_lvl+26/47] show_trace_log_lvl+0x1a/0x2f
> [show_trace+18/20] show_trace+0x12/0x14
> [dump_stack+22/24] dump_stack+0x16/0x18
> [bad_io_access+84/86] bad_io_access+0x54/0x56
> [iowrite8+52/54] iowrite8+0x34/0x36
> [kgdb8250_uart_init+164/609] kgdb8250_uart_init+0xa4/0x261
> [kgdb8250_late_init+32/153] kgdb8250_late_init+0x20/0x99
> [kgdb_late_entry+136/164] kgdb_late_entry+0x88/0xa4
> [kernel_init+346/732] kernel_init+0x15a/0x2dc
> [kernel_thread_helper+7/16] kernel_thread_helper+0x7/0x10
> =======================
> Bad IO access at port 10000 (return inb(port))
> WARNING: at lib/iomap.c:44 bad_io_access()
> [dump_trace+99/475] dump_trace+0x63/0x1db
> [show_trace_log_lvl+26/47] show_trace_log_lvl+0x1a/0x2f
> [show_trace+18/20] show_trace+0x12/0x14
> [dump_stack+22/24] dump_stack+0x16/0x18
> [bad_io_access+84/86] bad_io_access+0x54/0x56
> [ioread8+40/47] ioread8+0x28/0x2f
> [kgdb8250_uart_init+334/609] kgdb8250_uart_init+0x14e/0x261
> [kgdb8250_late_init+32/153] kgdb8250_late_init+0x20/0x99
> [kgdb_late_entry+136/164] kgdb_late_entry+0x88/0xa4
> [kernel_init+346/732] kernel_init+0x15a/0x2dc
> [kernel_thread_helper+7/16] kernel_thread_helper+0x7/0x10
> =======================
> KGDB failed to request the serial IRQ (0)
> registered taskstats version 1
> Freeing unused kernel memory: 236k freed
> --------8<--------8<--------8<--------8<--------8<--------8<--------8<
>
> Apart from that, the kernel runs fine, though its subjectively a bit
> sluggish compared to 2.6.22-rc6-mm1 without kgdb. Its uname -a is:
> Linux xenon 2.6.22-rc6-mm1-test4 #10 SMP PREEMPT Thu Jul 5 23:41:32 CEST 2007 i686 i686 i386 GNU/Linux
> I didn't even try to actually do anything with kgdb, though.
>
> The .config delta is:
>
> --- good.config-3 2007-07-05 22:35:30.000000000 +0200
> +++ .config 2007-07-05 23:23:09.000000000 +0200
> @@ -1,7 +1,7 @@
> #
> # Automatically generated make config: don't edit
> # Linux kernel version: 2.6.22-rc6-mm1
> -# Thu Jul 5 22:05:32 2007
> +# Thu Jul 5 23:23:09 2007
> #
> CONFIG_X86_32=y
> CONFIG_GENERIC_TIME=y
> @@ -35,7 +35,7 @@
> #
> # General setup
> #
> -CONFIG_LOCALVERSION="-test3"
> +CONFIG_LOCALVERSION="-test4"
> CONFIG_LOCALVERSION_AUTO=y
> CONFIG_SWAP=y
> CONFIG_SWAP_PREFETCH=y
> @@ -2529,8 +2529,24 @@
> CONFIG_FAIL_MAKE_REQUEST=y
> CONFIG_FAULT_INJECTION_DEBUG_FS=y
> CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y
> -# CONFIG_WANT_EXTRA_DEBUG_INFORMATION is not set
> -# CONFIG_KGDB is not set
> +CONFIG_WANT_EXTRA_DEBUG_INFORMATION=y
> +CONFIG_KGDB=y
> +# CONFIG_KGDB_CONSOLE is not set
> +# CONFIG_KGDB_ONLY_MODULES is not set
> +CONFIG_KGDB_8250_NOMODULE=y
> +# CONFIG_KGDBOE_NOMODULE is not set
> +# CONFIG_KGDB_MPSC is not set
> +# CONFIG_KGDB_CPM_UART is not set
> +# CONFIG_KGDB_SIBYTE is not set
> +# CONFIG_KGDB_TXX9 is not set
> +# CONFIG_KGDB_SH_SCI is not set
> +# CONFIG_KGDB_AMBA_PL011 is not set
> +# CONFIG_KGDB_PXA_SERIAL is not set
> +# CONFIG_KGDBOE is not set
> +CONFIG_KGDB_8250=y
> +CONFIG_KGDB_SIMPLE_SERIAL=y
> +CONFIG_KGDB_BAUDRATE=115200
> +CONFIG_KGDB_PORT_NUM=1
> CONFIG_EARLY_PRINTK=y
> CONFIG_DEBUG_STACKOVERFLOW=y
> CONFIG_DEBUG_STACK_USAGE=y
>
>
> HTH
> T.
>
>

Hi Tilman,

Perhaps you could send me your entire .config as well as the entire
output of the dmesg after your boot, or the entire boot log?

One of the kgdb patches does slightly modify the rs232 registration. If
your system did not have a second serial port, or if the virtual second
line is some kind of other device that "simple configuration" detect
needs further modification. Hopefully the full output of the boot will
shed some light as to what is going on.

Thanks,
Jason.