07 Nov, 2011

1 commit

  • * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (106 commits)
    powerpc/p3060qds: Add support for P3060QDS board
    powerpc/83xx: Add shutdown request support to MCU handling on MPC8349 MITX
    powerpc/85xx: Make kexec to interate over online cpus
    powerpc/fsl_booke: Fix comment in head_fsl_booke.S
    powerpc/85xx: issue 15 EOI after core reset for FSL CoreNet devices
    powerpc/8xxx: Fix interrupt handling in MPC8xxx GPIO driver
    powerpc/85xx: Add 'fsl,pq3-gpio' compatiable for GPIO driver
    powerpc/86xx: Correct Gianfar support for GE boards
    powerpc/cpm: Clear muram before it is in use.
    drivers/virt: add ioctl for 32-bit compat on 64-bit to fsl-hv-manager
    powerpc/fsl_msi: add support for "msi-address-64" property
    powerpc/85xx: Setup secondary cores PIR with hard SMP id
    powerpc/fsl-booke: Fix settlbcam for 64-bit
    powerpc/85xx: Adding DCSR node to dtsi device trees
    powerpc/85xx: clean up FPGA device tree nodes for Freecsale QorIQ boards
    powerpc/85xx: fix PHYS_64BIT selection for P1022DS
    powerpc/fsl-booke: Fix setup_initial_memory_limit to not blindly map
    powerpc: respect mem= setting for early memory limit setup
    powerpc: Update corenet64_smp_defconfig
    powerpc: Update mpc85xx/corenet 32-bit defconfigs
    ...

    Fix up trivial conflicts in:
    - arch/powerpc/configs/40x/hcu4_defconfig
    removed stale file, edited elsewhere
    - arch/powerpc/include/asm/udbg.h, arch/powerpc/kernel/udbg.c:
    added opal and gelic drivers vs added ePAPR driver
    - drivers/tty/serial/8250.c
    moved UPIO_TSI to powerpc vs removed UPIO_DWAPB support

    Linus Torvalds
     

20 Sep, 2011

2 commits

  • This adds a udbg and an hvc console backend for supporting a console
    using the OPAL console interfaces.

    On OPAL v1 we have hvc0 mapped to whatever console the system was
    configured for (network or hvsi serial port) via the service
    processor.

    On OPAL v2 we have hvcN mapped to the Nth console provided by OPAL
    which generally corresponds to:

    hvc0 : network console (raw protocol)
    hvc1 : serial port S1 (hvsi)
    hvc2 : serial port S2 (hvsi)

    Note: At this point, early debug console only works with OPAL v1
    and shouldn't be enabled in a normal kernel.

    Signed-off-by: Benjamin Herrenschmidt

    Benjamin Herrenschmidt
     
  • Add a new udbg driver for the PS3 gelic Ehthernet device.

    This driver shares only a few stucture and constant definitions with the
    gelic Ethernet device driver, so is implemented as a stand-alone driver
    with no dependencies on the gelic Ethernet device driver.

    Signed-off-by: Hector Martin
    Signed-off-by: Andre Heider
    Signed-off-by: Geoff Levand
    Signed-off-by: Benjamin Herrenschmidt

    Hector Martin
     

24 Aug, 2011

1 commit

  • The ePAPR embedded hypervisor specification provides an API for "byte
    channels", which are serial-like virtual devices for sending and receiving
    streams of bytes. This driver provides Linux kernel support for byte
    channels via three distinct interfaces:

    1) An early-console (udbg) driver. This provides early console output
    through a byte channel. The byte channel handle must be specified in a
    Kconfig option.

    2) A normal console driver. Output is sent to the byte channel designated
    for stdout in the device tree. The console driver is for handling kernel
    printk calls.

    3) A tty driver, which is used to handle user-space input and output. The
    byte channel used for the console is designated as the default tty.

    Signed-off-by: Timur Tabi
    Signed-off-by: Greg Kroah-Hartman

    Timur Tabi
     

29 Jun, 2011

2 commits

  • On pseries machines, consoles are provided by the hypervisor using
    a low level get_chars/put_chars type interface. However, this is
    really just a transport to the service processor which implements
    them either as "raw" console (networked consoles, HMC, ...) or as
    "hvsi" serial ports.

    The later is a simple packet protocol on top of the raw character
    interface that is supposed to convey additional "serial port" style
    semantics. In practice however, all it does is provide a way to
    read the CD line and set/clear our DTR line, that's it.

    We currently implement the "raw" protocol as an hvc console backend
    (/dev/hvcN) and the "hvsi" protocol using a separate tty driver
    (/dev/hvsi0).

    However this is quite impractical. The arbitrary difference between
    the two type of devices has been a major source of user (and distro)
    confusion. Additionally, there's an additional mini -hvsi implementation
    in the pseries platform code for our low level debug console and early
    boot kernel messages, which means code duplication, though that low
    level variant is impractical as it's incapable of doing the initial
    protocol negociation to establish the link to the FSP.

    This essentially replaces the dedicated hvsi driver and the platform
    udbg code completely by extending the existing hvc_vio backend used
    in "raw" mode so that:

    - It now supports HVSI as well
    - We add support for hvc backend providing tiocm{get,set}
    - It also provides a udbg interface for early debug and boot console

    This is overall less code, though this will only be obvious once we
    remove the old "hvsi" driver, which is still available for now. When
    the old driver is enabled, the new code still kicks in for the low
    level udbg console, replacing the old mini implementation in the platform
    code, it just doesn't provide the higher level "hvc" interface.

    In addition to producing generally simler code, this has several benefits
    over our current situation:

    - The user/distro only has to deal with /dev/hvcN for the hypervisor
    console, avoiding all sort of confusion that has plagued us in the past

    - The tty, kernel and low level debug console all use the same code
    base which supports the full protocol establishment process, thus the
    console is now available much earlier than it used to be with the
    old HVSI driver. The kernel console works much earlier and udbg is
    available much earlier too. Hackers can enable a hard coded very-early
    debug console as well that works with HVSI (previously that was only
    supported for the "raw" mode).

    I've tried to keep the same semantics as hvsi relative to how I react
    to things like CD changes, with some subtle differences though:

    - I clear DTR on close if HUPCL is set

    - Current hvsi triggers a hangup if it detects a up->down transition
    on CD (you can still open a console with CD down). My new implementation
    triggers a hangup if the link to the FSP is severed, and severs it upon
    detecting a up->down transition on CD.

    Signed-off-by: Benjamin Herrenschmidt

    Benjamin Herrenschmidt
     
  • When CONFIG_PPC_EARLY_DEBUG is set, call register_early_udbg_console()
    early from generic code.

    Signed-off-by: Benjamin Herrenschmidt

    Benjamin Herrenschmidt
     

06 May, 2011

1 commit


13 Dec, 2009

1 commit

  • Add support for using the USB Gecko adapter as an early debugging
    console on the Nintendo GameCube and Wii video game consoles.
    The USB Gecko is a 3rd party memory card interface adapter that provides
    a EXI (External Interface) to USB serial converter.

    Signed-off-by: Albert Herranz
    Acked-by: Benjamin Herrenschmidt
    Signed-off-by: Grant Likely

    Albert Herranz
     

11 Mar, 2009

1 commit

  • When the console is on a serial port to be driven by serial8250, a
    character can be lost from the end of the first line in the two-line
    sequence

    serial8250.0: ttyS0 at MMIO 0xe0004500 (irq = 42) is a 16550A
    console handover: boot [udbg0] -> real [ttyS0]

    This happens because udbg_puts or udbg_write stuff the last byte of
    the line into the Tx FIFO and return, whereupon the serial8250
    initialization code immediately empties that FIFO. The fix: udbg_puts
    and udbg_write now wait for the Tx FIFO to clear before returning.
    This delays the system by one additional serial frame time for each
    line written by udbg, but the effect is not noticeable, a cumulative
    17 milliseconds for 200 lines of early printk output at 115200 baud.

    Also, the routines in udbg_16550.c now emit CRLF instead of LFCR.
    Linux makes a point of emitting CRLF because, when serial output is
    captured to a file, LFCR sequences can confuse text editors. See
    http://lkml.org/lkml/2006/2/4/50 for some history.

    Signed-off-by: Andrew Klossner
    Signed-off-by: Benjamin Herrenschmidt

    Andrew Klossner
     

24 Apr, 2008

2 commits

  • The udbg console should be safe to call basically at any time after boot.
    It does not need any per-cpu resources or for the cpu to be online, as
    long as there is a udbg_putc routine hooked up it should work. So mark it
    as CON_ANYTIME.

    Signed-off-by: Michael Ellerman
    Signed-off-by: Paul Mackerras

    Michael Ellerman
     
  • Because the udbg_console has CON_ENABLED set, it's possible that when we
    register it with the console code the index won't be set. This leads to
    slightly confusing boot messages like:

    [ 0.000000] console [udbg-1] enabled

    We could remove CON_ENABLED, but we don't want to do that, we always
    want the udbg console to be activated, even if the user specified some
    other console on the command line.

    The simplest fix seems to be just to set the index to 0 by hand. There
    is no issue with duplicate udbg consoles, as we guard against registering
    multiple times in register_early_udbg_console().

    Signed-off-by: Michael Ellerman
    Signed-off-by: Paul Mackerras

    Michael Ellerman
     

24 Dec, 2007

1 commit


11 Dec, 2007

1 commit

  • This makes the early debug option force the console loglevel
    to the max. The early debug option is meant to catch messages very
    early in the kernel boot process, in many cases, before the kernel
    has a chance to parse the "debug" command line argument. Thus it
    makes sense when CONFIG_PPC_EARLY_DEBUG is set, to force the console
    log level to the max at boot time.

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Paul Mackerras

    Benjamin Herrenschmidt
     

04 Oct, 2007

1 commit


26 Jul, 2007

1 commit

  • Fixed the following warnings:

    WARNING: vmlinux.o(.text+0x2934): Section mismatch: reference to .init.text:__alloc_bootmem (between 'irq_alloc_host' and 'irq_set_default_host')
    WARNING: vmlinux.o(.text+0xb2aa): Section mismatch: reference to .init.data:boot_command_line (between 'register_early_udbg_console' and 'udbg_printf')
    WARNING: vmlinux.o(.text+0xb2b2): Section mismatch: reference to .init.data:boot_command_line (between 'register_early_udbg_console' and 'udbg_printf')
    WARNING: vmlinux.o(.text+0xe354): Section mismatch: reference to .init.text:__alloc_bootmem (between 'pcibios_alloc_controller' and 'pci_domain_nr')
    WARNING: vmlinux.o(.text+0x12768): Section mismatch: reference to .init.text:update_bridge_resource (between 'quirk_fsl_pcie_transparent' and 'indirect_read_config')
    WARNING: vmlinux.o(.text+0x127a8): Section mismatch: reference to .init.text:update_bridge_resource (between 'quirk_fsl_pcie_transparent' and 'indirect_read_config')
    WARNING: vmlinux.o(.text+0x17566c): Section mismatch: reference to .init.text:pcibios_fixup_bus (between 'pci_scan_child_bus' and 'pci_scan_bus_parented')

    Signed-off-by: Kumar Gala

    Kumar Gala
     

14 Jun, 2007

1 commit

  • Previously, registering this early console would just result
    in dropping early buffered printk output until a udbg_putc
    was registered.

    However, commit 69331af79cf29e26d1231152a172a1a10c2df511
    clears the CON_PRINTBUFFER flag on the main console when a
    CON_BOOT (early) console has been registered, resulting in
    the buffered messages never being displayed to the user.

    This fixes the problem by making sure we don't register udbg_console
    on platforms that don't implement udbg_putc.

    Signed-off-by: Milton Miller
    Acked-by: Mark A. Greer
    Signed-off-by: Paul Mackerras

    Milton Miller
     

09 May, 2007

2 commits

  • * 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (77 commits)
    [POWERPC] Abolish powerpc_flash_init()
    [POWERPC] Early serial debug support for PPC44x
    [POWERPC] Support for the Ebony 440GP reference board in arch/powerpc
    [POWERPC] Add device tree for Ebony
    [POWERPC] Add powerpc/platforms/44x, disable platforms/4xx for now
    [POWERPC] MPIC U3/U4 MSI backend
    [POWERPC] MPIC MSI allocator
    [POWERPC] Enable MSI mappings for MPIC
    [POWERPC] Tell Phyp we support MSI
    [POWERPC] RTAS MSI implementation
    [POWERPC] PowerPC MSI infrastructure
    [POWERPC] Rip out the existing powerpc msi stubs
    [POWERPC] Remove use of 4level-fixup.h for ppc32
    [POWERPC] Add powerpc PCI-E reset API implementation
    [POWERPC] Holly bootwrapper
    [POWERPC] Holly DTS
    [POWERPC] Holly defconfig
    [POWERPC] Add support for 750CL Holly board
    [POWERPC] Generalize tsi108 PCI setup
    [POWERPC] Generalize tsi108 PHY types
    ...

    Fixed conflict in include/asm-powerpc/kdebug.h manually

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • The console subsystem already has an idea of a boot console, using the
    CON_BOOT flag. The implementation has some flaws though. The major
    problem is that presence of a boot console makes register_console() ignore
    any other console devices (unless explicitly specified on the kernel
    command line).

    This patch fixes the console selection code to *not* consider a boot
    console a full-featured one, so the first non-boot console registering will
    become the default console instead. This way the unregister call for the
    boot console in the register_console() function actually triggers and the
    handover from the boot console to the real console device works smoothly.
    Added a printk for the handover, so you know which console device the
    output goes to when the boot console stops printing messages.

    The disable_early_printk() call is obsolete with that patch, explicitly
    disabling the early console isn't needed any more as it works automagically
    with that patch.

    I've walked through the tree, dropped all disable_early_printk() instances
    found below arch/ and tagged the consoles with CON_BOOT if needed. The
    code is tested on x86, sh (thanks to Paul) and mips (thanks to Ralf).

    Changes to last version: Rediffed against -rc3, adapted to mips cleanups by
    Ralf, fixed "udbg-immortal" cmd line arg on powerpc.

    Signed-off-by: Gerd Hoffmann
    Acked-by: Paul Mundt
    Acked-by: Ralf Baechle
    Cc: Andi Kleen
    Cc: Alan Cox
    Cc: Richard Henderson
    Cc: Ivan Kokshaysky
    Cc: Paul Mackerras
    Cc: Benjamin Herrenschmidt
    Cc: Jeremy Fitzhardinge
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Gerd Hoffmann
     

08 May, 2007

1 commit

  • This adds support for early serial debugging via the built in
    port on IBM/AMCC PowerPC 44x CPUs. It uses a bolted TLB entry in
    address space 1 for the UART's mapping, allowing robust debugging both
    before and after the initialization of the MMU.

    Signed-off-by: David Gibson
    Signed-off-by: Paul Mackerras

    David Gibson
     

14 Feb, 2007

1 commit

  • udbg_early_init() is a function used on 64 bit systems, which
    initializes whichever early udbg backend is configured. This function
    is not called on 32-bit, however if btext early debug is enabled it
    does have an explicit, inline, #ifdef-ed assignment performing
    analagous initialization.

    This patch makes things more uniform by folding the btext
    initialization as an option into udbg_early_init() and calling that
    from the 32-bit setup path.

    Signed-off-by: David Gibson
    Signed-off-by: Paul Mackerras

    David Gibson
     

13 Feb, 2007

1 commit


07 Feb, 2007

2 commits


01 Jul, 2006

1 commit


28 Jun, 2006

1 commit


09 Jun, 2006

1 commit

  • When debugging early kernel crashes that happen after console_init() and
    before a proper console driver takes over, we often have to go hack into
    udbg.c to prevent it from unregistering so we can "see" what is
    happening. This patch adds a kernel command line option "udbg-immortal"
    instead to avoid having to modify the kernel.

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Paul Mackerras

    Benjamin Herrenschmidt
     

11 Jan, 2006

1 commit

  • This patch adds Kconfig entries to control the early debugging options,
    currently in setup_64.c.

    Doing this via Kconfig rather than #defines means you can have one source tree,
    which is buildable for multiple platforms - and you can enable the correct
    early debug option for each platform via .config.

    I made udbg_early_init() a static inline because otherwise GCC is to daft to
    optimise it away when debugging is off.

    Now that we have udbg_init_rtas() we can make call_rtas_display_status* static.

    Signed-off-by: Michael Ellerman
    Signed-off-by: Paul Mackerras

    Michael Ellerman
     

09 Jan, 2006

5 commits

  • Added a common udbg_progress for use by ppc_md.progress()

    Signed-off-by: Kumar Gala
    Signed-off-by: Paul Mackerras

    Kumar Gala
     
  • This adds some very basic support for the new machines, including the
    Quad G5 (tested), and other new dual core based machines and iMac G5
    iSight (untested). This is still experimental ! There is no thermal
    control yet, there is no proper handing of MSIs, etc.. but it
    boots, I have all 4 cores up on my machine. Compared to the previous
    version of this patch, this one adds DART IOMMU support for the U4
    chipset and thus should work fine on setups with more than 2Gb of RAM.

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Paul Mackerras

    Benjamin Herrenschmidt
     
  • The udbg low level io layer has an issue with udbg_getc() returning a
    char (unsigned on ppc) instead of an int, thus the -1 if you had no
    available input device could end up turned into 0xff, filling your
    display with bogus characters. This fixes it, along with adding a little
    blob to xmon to do a delay before exiting when getting an EOF and fixing
    the detection of ADB keyboards in udbg_adb.c

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Paul Mackerras

    Benjamin Herrenschmidt
     
  • This patch unifies udbg for both ppc32 and ppc64 when building the
    merged achitecture. xmon now has a single "back end". The powermac udbg
    stuff gets enriched with some ADB capabilities and btext output. In
    addition, the early_init callback is now called on ppc32 as well,
    approx. in the same order as ppc64 regarding device-tree manipulations.
    The init sequences of ppc32 and ppc64 are getting closer, I'll unify
    them in a later patch.

    For now, you can force udbg to the scc using "sccdbg" or to btext using
    "btextdbg" on powermacs. I'll implement a cleaner way of forcing udbg
    output to something else than the autodetected OF output device in a
    later patch.

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Paul Mackerras

    Benjamin Herrenschmidt
     
  • This moves the discovery of legacy serial ports to a separate file,
    makes it common to ppc32 and ppc64, and reworks it to use the new OF
    address translators to get to the ports early. This new version can also
    detect some PCI serial cards using legacy chips and will probably match
    those discovered port with the default console choice.

    Only ppc64 gets udbg still yet, unifying udbg isn't finished yet.

    It also adds some speed-probing code to udbg so that the default console
    can come up at the same speed it was set to by the firmware.

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Paul Mackerras

    Benjamin Herrenschmidt
     

11 Nov, 2005

1 commit

  • Since the udbg code in ppc64 has no ppc32 equivalent, move it straight
    over into arch/powerpc (and include/asm-powerpc for udbg.h). In time,
    we probably want to meld the various bits and pieces of 32-bit early
    debugging code into udbg, but for now only include it on
    CONFIG_PPC64=y builds. The only change during the move is to
    standardise the protecting #ifdef/#define in udbg.h, and move its
    banner comment above the initial #ifdef (which seems to be normal
    practice).

    Built and booted on POWER5 LPAR (ARCH=powerpc and ARCH=ppc64). Built
    for 32bit multiplatform (ARCH=powerpc).

    Signed-off-by: David Gibson
    Signed-off-by: Paul Mackerras

    David Gibson