lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20090511091539.GM25550@hawkmoon.kerlabs.com>
Date:	Mon, 11 May 2009 11:15:39 +0200
From:	Louis Rilling <Louis.Rilling@...labs.com>
To:	Jason Wessel <jason.wessel@...driver.com>
Cc:	linux-kernel@...r.kernel.org, kgdb-bugreport@...ts.sourceforge.net,
	kdb@....sgi.com
Subject: Re: [PATCH 0/13] RFC ONLY - kdb for kgdb

Hi Jason,

On 08/05/09 16:23 -0500, Jason Wessel wrote:
> This patch series is a request for comments on several levels.
> 
> 1) Do people find kdb useful? (See * and **)

Yes! Having a debugger on the main console is very handy, especially when
a) it is a pain, when it's possible (*), to setup a serial console, and
b) over ethernet, neither kgdb nor kdb is as reliable as kdb on tty0.

I won't answer the other questions since I'm definitely a user, not a developer
of kernel debugger.

(*) not everybody has IPMI 2 boards with serial over lan consoles.

> 2) Would kdb folks be willing to use it if it was a front end to kgdb?
> 3) Does kdb have a future in the mainline kernel?
> 4) Is this a reasonable approach to have some level of
>    unification to end up with a more robust kernel debugger?
> 
> * This is not meant to be a religious war
> 
> ** This will never replace printk :-)
> 
> What follows is a series of patches to the development kernel which
> enable kdb as a front end to kgdb for arm, mips, powerpc, and x86.
> This is a very raw prototype, but enough of it it works such that
> folks can try it out.
> 
> To get the most basic functionality, you only need the first 2 patches
> in the series.  The remainder of the patches go on to incrementally
> add back some of the functionality that was removed from kdb.  I made
> an attempt to try to make the first part just the generic set of
> changes required to get kdb working on 1 or more archs.

Do you intend to support kdb modules? If yes, in which extent should they be
adapted?

Thanks,

Louis

> 
> The kdb front end works a little differently than if you were to take
> the original kdb patch set from:
> 
> ftp://oss.sgi.com/projects/kdb/download/v4.4/
> 
> In the kernel .config you should enable the following options:
> 
> CONFIG_KGDB=y
> CONFIG_KGDB_SERIAL_CONSOLE=y
> CONFIG_KGDB_LOW_LEVEL_TRAP=y
> CONFIG_KGDB_KDB=y
> CONFIG_KGDB_KDB_PRIMARY=y
> CONFIG_KDB_KEYBOARD=y
> CONFIG_KDB_USB=y
> 
> If you were using the serial port with kdb before, now you just use
> the kgdboc mechanism with no differences at all.  IE use you kernel
> command line with:
> 
>    console=ttyS0,115200 kgdboc=ttyS0 kgdbwait
> 
> That will get you access to kdb just after the console has been
> registered.  If you want to use the keyboard, you could use:
> 
>    console=tty0 kgdboc=kdb kgdbwait
> 
> You can also use the keyboard and or serial console:
> 
>    console=ttyS0,115200 console=tty0 kgdboc=kdb,ttyS0
> 
> 
> In terms of breaking into the debugger after the system is up, you
> must use the sysrq-g sequence.  That means you could run:
>    echo g > /proc/sysrq-trigger
> 
> Or you can use the SysRq key on your key board.  On a typical laptop
> you might have to do the following:
> 
> press and hold ALT    -- You will be holding this the whole time
> press and hold FN
> press and release the key with the SysRq label
> release FN
> press and release g
> release ALT
> 
> I have also found on some PS/2 keyboards you have press alt again
> after resuming the system because the key up event got lost somewhere.
> 
> Once you are in kdb you can run help to see a limited list of
> commands.
> 
> You can also still connect gdb or re-enter kdb without leaving the
> exception state.  To get out of kgdb mode you can type "$3#33", or to
> get into kgdb mode from kdb, you can type "kgdb".  Also from gdb you
> can issue commands to the kdb front end, via gdb's montior command.
> For instance you could issue "monitor lsmod".  Allowing the gdb
> monitor extension was certainly another motivation behind the
> prototype.
> 
> From here it is a matter of deciding if it is worth continuing down
> this route.
> 
> The evaulation of this project will definitely cause some further
> cleanup and improvement to kgdb, regardless of if this effort is
> carried forward.  Two of the patches in this series are patches likely
> to get integrated into kgdb's code base and do not bear the "RFC ONLY"
> indication.
> 
> Thanks,
> Jason.
> 
> You can find the development branch for this here:
> 
> http://git.kernel.org/?p=linux/kernel/git/jwessel/linux-2.6-kgdb.git;a=shortlog;h=kdb_prototype
> 
> or grab a static version of the patches here:
> 
> http://kernel.org/pub/linux/kernel/people/jwessel/branches/kdb_prototype.tar.bz2
> 
> short log info follows:
> 
> Jason Wessel (13):
>       RFC ONLY - kdb: core for kgdb backend
>       RFC ONLY - kgdb: core changes to support kdb
>       RFC ONLY - kgdb,8250,pl011: Return immediately from console poll
>       RFC ONLY - kgdb: gdb "monitor" -> kdb passthrough
>       RFC ONLY - kgdboc,keyboard: Keyboard driver for kdb with kgdb
>       kgdb: remove post_primary_code references
>       RFC ONLY - x86,kgdb: Add low level debug hook
>       RFC ONLY - arm,kgdb: Add hook to catch an oops with debugger
>       RFC ONLY - powerpc,kgdb: Introduce low level trap catching
>       RFC ONLY - mips,kgdb: kdb low level trap catch and stack trace
>       kgdb: Add the ability to schedule a breakpoint via a tasklet
>       RFC ONLY - kgdb,kdb: use async breakpoint for sysrq for usb
>       RFC ONLY - usb,keyboard: uchi, echi, and ochi polling keyboard urbs
> 
>  Makefile                              |    1 +
>  arch/arm/include/asm/kgdb.h           |    2 +
>  arch/arm/include/asm/kmap_types.h     |    1 +
>  arch/arm/kernel/kgdb.c                |   13 +
>  arch/arm/kernel/traps.c               |    5 +
>  arch/mips/include/asm/kgdb.h          |    2 +
>  arch/mips/include/asm/kmap_types.h    |    3 +-
>  arch/mips/kernel/kgdb.c               |   27 +-
>  arch/mips/kernel/traps.c              |   14 +
>  arch/powerpc/include/asm/kmap_types.h |    1 +
>  arch/powerpc/kernel/kgdb.c            |   12 +-
>  arch/powerpc/kernel/traps.c           |    7 +
>  arch/x86/include/asm/kgdb.h           |    3 +
>  arch/x86/include/asm/kmap_types.h     |    3 +-
>  arch/x86/kernel/kgdb.c                |   56 +-
>  arch/x86/kernel/traps.c               |    6 +
>  drivers/char/Makefile                 |    1 +
>  drivers/char/kdb_keyboard.c           |  407 ++++
>  drivers/char/kdb_keyboard.h           |  143 ++
>  drivers/hid/usbhid/hid-core.c         |   26 +
>  drivers/hid/usbhid/usbkbd.c           |   13 +
>  drivers/serial/8250.c                 |    4 +-
>  drivers/serial/amba-pl011.c           |    6 +-
>  drivers/serial/kgdboc.c               |   80 +-
>  drivers/usb/core/hcd.c                |   14 +
>  drivers/usb/core/hcd.h                |    4 +
>  drivers/usb/host/ehci-hcd.c           |   42 +
>  drivers/usb/host/ehci-pci.c           |    6 +
>  drivers/usb/host/ehci-q.c             |  225 ++
>  drivers/usb/host/ohci-hcd.c           |   66 +
>  drivers/usb/host/ohci-pci.c           |    6 +-
>  drivers/usb/host/ohci-q.c             |   63 +
>  drivers/usb/host/uhci-hcd.c           |   36 +
>  drivers/usb/host/uhci-q.c             |   51 +
>  fs/proc/meminfo.c                     |  145 ++
>  fs/proc/mmu.c                         |   16 +-
>  include/linux/kdb.h                   |  172 ++
>  include/linux/kdbprivate.h            |  611 ++++++
>  include/linux/keyboard.h              |    2 +
>  include/linux/kgdb.h                  |   25 +-
>  include/linux/serial_core.h           |    1 +
>  init/main.c                           |   26 +
>  kdb/.gitignore                        |    1 +
>  kdb/Makefile                          |   48 +
>  kdb/kdb_bp.c                          |  863 ++++++++
>  kdb/kdb_bt.c                          |  209 ++
>  kdb/kdb_cmds                          |   32 +
>  kdb/kdb_io.c                          |  895 ++++++++
>  kdb/kdbmain.c                         | 3669 +++++++++++++++++++++++++++++++++
>  kdb/kdbsupport.c                      | 1120 ++++++++++
>  kernel/kallsyms.c                     |   22 +
>  kernel/kgdb.c                         |  321 +++-
>  kernel/module.c                       |   19 +-
>  kernel/panic.c                        |    6 +
>  kernel/printk.c                       |   14 +
>  kernel/sched.c                        |   93 +-
>  kernel/signal.c                       |   49 +
>  lib/Kconfig.kgdb                      |   37 +
>  mm/hugetlb.c                          |   22 +
>  mm/swapfile.c                         |   22 +
>  60 files changed, 9697 insertions(+), 92 deletions(-)
>  create mode 100644 drivers/char/kdb_keyboard.c
>  create mode 100644 drivers/char/kdb_keyboard.h
>  create mode 100644 include/linux/kdb.h
>  create mode 100644 include/linux/kdbprivate.h
>  create mode 100644 kdb/.gitignore
>  create mode 100644 kdb/Makefile
>  create mode 100644 kdb/kdb_bp.c
>  create mode 100644 kdb/kdb_bt.c
>  create mode 100644 kdb/kdb_cmds
>  create mode 100644 kdb/kdb_io.c
>  create mode 100644 kdb/kdbmain.c
>  create mode 100644 kdb/kdbsupport.c
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@...r.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

-- 
Dr Louis Rilling			Kerlabs
Skype: louis.rilling			Batiment Germanium
Phone: (+33|0) 6 80 89 08 23		80 avenue des Buttes de Coesmes
http://www.kerlabs.com/			35700 Rennes

Download attachment "signature.asc" of type "application/pgp-signature" (190 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ