29 Jun, 2011

13 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
     
  • Embed the struct hvsi_header in the various packet definitions
    rather than open coding it multiple times. Will help provide
    stronger type checking.

    Signed-off-by: Benjamin Herrenschmidt

    Benjamin Herrenschmidt
     
  • This moves various HVSI protocol definitions from the hvsi.c
    driver to a header file that can be used later on by a udbg
    implementation

    Signed-off-by: Benjamin Herrenschmidt

    Benjamin Herrenschmidt
     
  • Currently Maple setup code creates cpc925_edac device only on
    Motorola ATCA-6101 blade. Make setup code check bridge revision
    and enable EDAC on all U3H bridges.

    Verified on Momentum MapleD (ppc970fx kit) board.

    Signed-off-by: Dmitry Eremin-Solenikov
    Signed-off-by: Benjamin Herrenschmidt

    Dmitry Eremin-Solenikov
     
  • Reconfiguration notifier call for device node may fail by several reasons,
    but it always assumes kmalloc failures.

    This enables reconfiguration notifier call chain to get the actual error
    code rather than -ENOMEM by converting all reconfiguration notifier calls
    to return encapsulate error code with notifier_from_errno().

    Signed-off-by: Akinobu Mita
    Cc: Benjamin Herrenschmidt
    Cc: Paul Mackerras
    Cc: linuxppc-dev@lists.ozlabs.org
    Signed-off-by: Benjamin Herrenschmidt

    Akinobu Mita
     
  • This introduces pSeries_reconfig_notify() as a just wrapper of
    blocking_notifier_call_chain() for pSeries_reconfig_chain.

    This is a preparation to improvement of error code on reconfiguration
    notifier failure.

    Signed-off-by: Akinobu Mita
    Cc: Benjamin Herrenschmidt
    Cc: Paul Mackerras
    Cc: linuxppc-dev@lists.ozlabs.org
    Signed-off-by: Benjamin Herrenschmidt

    Akinobu Mita
     
  • Enable functions used to access SCOM if PPC_MAPLE is defined: they are
    used by cpufreq driver to control hardware.

    Signed-off-by: Dmitry Eremin-Solenikov
    Signed-off-by: Benjamin Herrenschmidt

    Dmitry Eremin-Solenikov
     
  • This has been broken for a while but hasn't been an issue until
    now because nobody was reserving regions at high addresses.

    Signed-off-by: Becky Bruce
    Signed-off-by: Benjamin Herrenschmidt

    Becky Bruce
     
  • Signed-off-by: Becky Bruce
    Signed-off-by: Benjamin Herrenschmidt

    Becky Bruce
     
  • On MMUs such as FSL where we can guarantee the entire linear mapping is
    bolted, we don't need to worry about linear TLB misses. If on top of
    that we do a full table walk, we get rid of all recursive TLB faults, and
    can dispense with some state saving. This gains a few percent on
    TLB-miss-heavy workloads, and around 50% on a benchmark that had a high
    rate of virtual page table faults under the normal handler.

    While touching the EX_TLB layout, remove EX_TLB_MMUCR0, EX_TLB_SRR0, and
    EX_TLB_SRR1 as they're not used.

    [BenH: Fixed build with 64K pages (wsp config)]

    Signed-off-by: Scott Wood
    Signed-off-by: Benjamin Herrenschmidt

    Scott Wood
     
  • Signed-off-by: Scott Wood
    Signed-off-by: Benjamin Herrenschmidt

    Scott Wood
     
  • Benjamin Herrenschmidt
     

28 Jun, 2011

2 commits


27 Jun, 2011

19 commits


23 Jun, 2011

6 commits