op-apps: Add pdbg to the op-apps package group

This is justified by Nick Piggin below, with some rework of the original
email to abstract unnecessary detail.

     Hi,

     We are having a continuing discussion about shipping host debug tools on
     our standard OpenPower BMC image, and I promised Brad some justification
     for the request. I'm including a wider cc list to keep people on the
     same page.

     The exact host debug tool can be debated, but the capability to send
     system reset interrupts and read host registers is a baseline, so I have
     "pdbg" in mind, as that's what I have used.

     Justification:

     - The most basic capability is the system reset, which is an existing
       tool for pSeries (KVM and PowerVM) guests. The similar 'ipmi nmi' is
       available on x86 BMCs. This is required functionality expected by
       customers. An important hang at Pfizer was solved last year because
       they were able to system reset the Linux lpar to get a crash dump.

     - It's common to be pointed to a crashed system to debug.  More
       convenient to have a good baseline set of debug tools, and not modify
       the BMC of the system that is not yours.

     - Hardware and software partners similarly would like to have this
       functionality. They could download and install tools, but it can turn
       into a an ongoing inconvenience. Many of them are not
       openpower/openbmc experts, and may not have ability or inclination to
       find and install tools. Having everything just work out of the box and
       not having to follow ibm.com link is a big relief.

     - Experience with customers when collaborating to resolve bugs is we
       often don't have easy access to their P9 systems, and they are often
       unaware of how to flash firmware, or they don't know if they have
       permission to modify the BMC, etc.

     - On customer sites, live debugging is not uncommon. A bug may not be
       solveable with a single crash dump or system hang, so it may take some
       iterations working with the customer. It is also common that the
       customer may have redundant capacity or a test environment which means
       they can leave a machine in crashed state. They may be bringing up a new
       installation that is not yet online. This will certainly be the case
       with large supercomputers.

     - Customers may have policy or legislation that makes uploading code
       difficult or impossible.

     - Some consumers may customize everything on the BMC, but even so,
       having reference host debugging tools would show what's available. In
       some cases of small scale trials with P9 systems the BMC has not
       had much host debugging capability, making it very difficult to
       understand problems like hard hangs of the host.

     - A strong host debug capability on the BMC can be a differentiating
       point. For example very large sites often prefer to debug problems
       themselves.

     So I advocate for a reasonable host debug capability to be shipped with
     standard OpenPOWER OpenBMC images, and for host firmware teams to have
     responsibility and  control of the low level tools and libraries that
     access host registers.

     Thanks,
     Nick

Change-Id: I87baf40b6bd1004b234cdec139759de9e587d705
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
2 files changed
tree: 750089cbacbaea271e9b26109297e6377ef383b0
  1. import-layers/
  2. meta-openbmc-bsp/
  3. meta-openbmc-machines/
  4. meta-phosphor/
  5. .gitignore
  6. .gitreview
  7. .templateconf
  8. openbmc-env
  9. README.md
README.md

OpenBMC

Build Status

The OpenBMC project can be described as a Linux distribution for embedded devices that have a BMC; typically, but not limited to, things like servers, top of rack switches or RAID appliances. The OpenBMC stack uses technologies such as Yocto, Open-Embedded, Systemd and DBus to allow easy customization for your server platform.

Setting up your OpenBMC project

1) Prerequisite

  • Ubuntu 14.04
sudo apt-get install -y git build-essential libsdl1.2-dev texinfo gawk chrpath diffstat
  • Fedora 23
sudo dnf install -y git patch diffstat texinfo chrpath SDL-devel bitbake
sudo dnf groupinstall "C Development Tools and Libraries"

2) Download the source

git clone git@github.com:openbmc/openbmc.git
cd openbmc

3) Target your hardware

Any build requires an environment variable known as TEMPLATECONF to be set to a hardware target. OpenBMC has placed all known hardware targets in a standard directory structure meta-openbmc-machines/meta-openpower/[company]/[target]. You can see all of the known targets with find meta-openbmc-machines -type d -name conf. Choose the hardware target and then move to the next step. Additional examples can be found in the OpenBMC Cheatsheet

MachineTEMPLATECONF
Palmettometa-openbmc-machines/meta-openpower/meta-ibm/meta-palmetto/conf
Barreleyemeta-openbmc-machines/meta-openpower/meta-rackspace/meta-barreleye/conf
Zaiusmeta-openbmc-machines/meta-openpower/meta-ingrasys/meta-zaius/conf
Witherspoonmeta-openbmc-machines/meta-openpower/meta-ibm/meta-witherspoon/conf

As an example target Palmetto

export TEMPLATECONF=meta-openbmc-machines/meta-openpower/meta-ibm/meta-palmetto/conf

3) Build

. openbmc-env
bitbake obmc-phosphor-image

Additional details can be found in the docs repository.

Build Validation and Testing

Commits submitted by members of the OpenBMC Github community are compiled and tested via our Jenkins server. Commits are run through two levels of testing. At the repository level the makefile make check directive is run. At the system level, the commit is built into a firmware image and run with a arm-softmmu QEMU model against a barrage of CI tests.

Commits submitted by non-members do not automatically proceed through CI testing. After visual inspection of the commit, a CI run can be manually performed by the reviewer.

Automated testing against the QEMU model along with supported systems are performed. The OpenBMC project uses the Robot Framework for all automation. Our complete test repository can be found here.

Submitting Patches

Support of additional hardware and software packages is always welcome. Please follow the contributing guidelines when making a submission. It is expected that contributions contain test cases.

Bug Reporting

Issues are managed on Github. It is recommended you search through the issues before opening a new one.

Features of OpenBMC

Feature List

  • REST Management
  • IPMI
  • SSH based SOL
  • Power and Cooling Management
  • Event Logs
  • Zeroconf discoverable
  • Sensors
  • Inventory
  • LED Management
  • Host Watchdog
  • Simulation

Features In Progress

  • Code Update Support for multiple BMC/BIOS images
  • POWER On Chip Controller (OCC) Support
  • Full IPMI 2.0 Compliance with DCMI
  • Verified Boot
  • HTML5 Java Script Web User Interface
  • BMC RAS

Features Requested but need help

  • OpenCompute Redfish Compliance
  • OpenBMC performance monitoring
  • cgroup user management and policies
  • Remote KVM
  • Remote USB
  • OpenStack Ironic Integration
  • QEMU enhancements

Finding out more

Dive deeper in to OpenBMC by opening the docs repository

Contact