Here’s how to set up Debian (and probably Ubuntu) to run a armhf binary.
The OpenPower BMC kicks off the host booting by writing to a CFAM register over FSI. From there, if your system is healthy enough, it will start outputting characters over the LPC VUART. If it’s not, then you get no output, and the only indication that something went wrong is the host powering itself off.
OpenROAD is an open source tool for building chips. This post describes how to build using system dependencies on Debian.
This post has instructions for creating an ITS and using it to build a signed FIT for booting on a OpenBMC system that requires a signed kernel FIT.
The OpenBMC virtual serial console replaces IPMI Serial over LAN (SoL) as a way to see the UART output of your host system. Where you would have once run:
Debian testing, as of the 5.16.0-3 kernel, has working eMMC and Ethernet such that the stock kernel can be used to install Debian on the eMMC.
This describes how to boot Linux on Microwatt, running on the Arty A7 FPGA.
The AST2600 has a recovery mode where it can boot a payload from the UART. This must be enabled by a strapping pin.
Debugging u-boot in Qemu allows for JTAG-style single stepping without the hassle of setting up hardware. However, u-boot relocates itself half way through running, which requires some fiddling in u-boot.
u-boot has a test suite that can run against Qemu, but it’s intimidating to get going. Here’s some minimal instructions:
When writing commit messages for patch sets sent via email on the Linux Kernel Mailing List it is convention to include a changelog between the current and previous versions of the patch.
OpenBMC’s kernel configuration disables
/dev/mem by default. In the early
days of the project some functionality was implemented using simple userspace
programs that read and wrote straight to peripherals, instead of kernel drivers.
Now that it has kernel drivers userspace access to memory is restricted.
When your Linux kernel is misbehaving, you often look to the output of ‘dmesg’ to see what went wrong. If you can’t get to userspace, hopefully you have a serial port to see the latest output.
The Petitboot kernel contains a default command line set in the skiroot kernel configuration:
A safe way to try out a new petitboot release on your machine is to add it to your disk, and chainload from the in-flash version to the one on disk. This uses the same well-tested mechanim as booting your operating system, but doesn’t require touching flash. If something goes wrong, just reboot!
These instructions are current as of v4.19-rc2 running Ubuntu 18.10 with clang-7 (7.0.0-+rc2-1~exp3). This will work on a ppc64le box or cross compiled from another machine.
Phoronix published some benchmarks of various pieces of software running on a Power9 Talos II system. I wrote about my efforts to speed up LameMP3 earlier, and to continue that trend I took a look at Scikit Learn.
Phoronix published some benchmarks of various pieces of software running on a Power9 Talos II system. One of the benchmarks uses LameMP3 to encode a WAV into a MP3. I remember this from a few decades ago, ripping music from CDs and searching for the passing the right options in order to get the best sounding MP3s.
Firefox has bitrotted on PowerPC a little. I installed an Ubuntu 18.04 (and then upgraded to the in-development 18.10) ppc64le on a Power9 workstation, and attempted to run Firefox 61. It crashed (trimmed backtrace):
tl;dr: To disable OPAL/skiboot fast reboot on your system:
The LTC team at IBM have created a useful model of the ASPEED BMC SoCs and
upstreamed it to QEMU. If you’re on a recent distro, you can skip building it
sudo apt-get install qemu-system-arm instead.
Here are some instructions for booting the OpenBMC 4.13-based kenrel on the ASPEED ast2500 EVB. They assume you’re on Ubuntu 18.04.
This blog uses jekyll-now, which I found in a search for a method to have a simple blog. The highlight is it provides instructions for you to create and edit the blog using the Github interface.
On an OpenPower system, the hostboot kernel can be fetched from the host using pdbg to read host memory.