Posts
Ubuntu 18.10 beta announced
- Get link
- Other Apps
Fedora 29 Beta announcement
Oddly, the images available for download do not, as of this writing, include any build for ppc64le. However, a ppc64le release is planned for the Server flavour, You can download beta Server images for ppc64le, which you can then turn around and convert into Workstation.
- Get link
- Other Apps
Chromium on POWER9 ready to land
Chromium is an important dependency for many tools, such as QtWebEngine, so this port definitely improves the T2's viability and compatibility as a workstation. However, I'll say as a personal note, and with full disclosure as a long-time member of the Mozilla community, moves like Chrome 69's forced integration with Google web services (even cookies won't be cleared unless you log out) continue to make me unwilling to support this project myself even though I'm glad it exists. At least there are alternatives like Ungoogled Chromium, at least for right now.
Firefox doesn't have a JIT, but it also doesn't have Google or its general untrustworthiness and it otherwise works fine, and my goal is to get ppc64le supported in SpiderMonkey eventually. Meanwhile, if you really do prefer Chromium, you now have a fully-working port and this hard work should be commended.
- Get link
- Other Apps
Nested virtualization coming to POWER9
As you will no doubt recall from our previous series on turning your Talos into a Power Mac, the Kernel-based Virtual Machine functionality on Power ISA and PowerPC comes in two flavours: KVM-PR, which emulates supervisor instructions in software and thus is slower but more flexible and can be nested, and KVM-HV, which uses hardware hypervisor support in later Power ISA chips and is faster, but cannot emulate most earlier CPUs and previously could not be nested (though a KVM-PR guest can run within a KVM-HV guest, and additional KVM-PR guests within that).
With these patches, nested KVM-HV guests are now possible, and can run at nearly full speed. Let's define the base hypervisor to be at level 0 ("L0"). L0 can use the hardware virtualization support to run a guest at level 1 ("L1"). An L1 guest, however, currently cannot do the same thing, so it can't spawn any additional nested VMs under its own control. The trick with these patches is to add hypercalls to allow an L1 guest to ask the L0 hypervisor to create another guest on its behalf, but set up address translation that the L1 guest can manipulate. The new guest is actually another L1 guest, but it looks like an L2 guest because L0 will in effect translate the fake L2's addressing requests through the L1 guest that requested it using a combination of instruction emulation and paravirtualization. The emulated L2 guest should be able to then turn around and request a new VM itself, and the L0 hypervisor will make another L1 guest that the faux L2 guest can control that acts like an L3 guest, and thus turtles all the way down.
Because it is still inherently KVM-HV, however, it inherits all of its basic limitations such as only supporting the current processor generation and the one immediately preceding it. In addition, the current nested guest implementation relies on radix MMU mode, the default MMU mode of the POWER9 (KVM-PR requires hashed page table MMU mode), meaning it does not support earlier Power ISA generations that only support hashed page tables. The patches are out for comments on the mailing list and hopefully will be incorporated into the Linux kernel tree in the very near future.
- Get link
- Other Apps
More news on the "Tiny Talos"
Whatever it is, the full reveal is scheduled for October. We'll be watching.
- Get link
- Other Apps
Alpine Linux updated to 3.8.1
- Get link
- Other Apps
More POWER in Firefox 62
Unfortunately, the Fedora pre-built Firefox 62 seems to have a crippling crash bug in it when typing addresses into the location bar. Your distro's package may vary. However, building from source doesn't seem to be affected, implying some build configuration issue on their end. Note that there are build system changes in 62 which require some additional workarounds in your .mozconfig and this might have been what bit them. Here's what I use for making a debug build:
export CC=/usr/bin/gcc export CXX=/usr/bin/g++ mk_add_options MOZ_MAKE_FLAGS="-j24" ac_add_options --enable-application=browser ac_add_options --enable-optimize="-Og -mcpu=power9" ac_add_options --enable-debug ac_add_options --disable-jemalloc ac_add_options --disable-release ac_add_options --enable-linker=bfd export RUSTC_OPT_LEVEL=0Adjust the -j24 to the number of threads you want (I like keeping some resources free, so I reserve eight threads from the 32 on this system). The linker defaults to gold, which doesn't work right on ppc64le; this configuration forces it to GNU ld ("bfd"). This config also forces the use of gcc instead of clang; you change to your tastes.
Making a release build seems to have some problems on POWER9 still, so that's disabled, along with jemalloc. I also have a binary of gn (from Chromium) used to regenerate some configurations, which I'm happy to provide upon request. If you have such a binary, then add export GN=/path/to/gn to let the build system use it.
Save this as .mozconfig in the root of the Mercurial tree you cloned or tarball you expanded, and then ./mach build to build.
For an optimized build, such as the one this blog post is being typed in, the config is nearly the same:
export CC=/usr/bin/gcc export CXX=/usr/bin/g++ mk_add_options MOZ_MAKE_FLAGS="-j24" ac_add_options --enable-application=browser ac_add_options --enable-optimize="-O3 -mcpu=power9" ac_add_options --disable-jemalloc ac_add_options --disable-release ac_add_options --enable-linker=bfd export RUSTC_OPT_LEVEL=2Unfortunately, setting MOZ_PGO (for profile-guided optimization) and MOZ_LTO (for link-time optimization), although they complete, seem to generate defective executables. That will be a project to work on later. The RUSTC_OPT_LEVEL is probably unnecessary here but doesn't hurt.
My internal builds also use a port of TenFourFox's basic adblock to reduce the amount of JavaScript it needs to run, since Firefox does not yet have a JIT for ppc64le. That's something I'm working on as well, inspired by the big-endian 32-bit PowerPC JIT in TenFourFox, but this JIT will be 64-bit and little-endian so that we can get wasm up and running. I'll be posting progress reports here as the work moves along. This is rather different than the folks working on the ppc64le Chromium port, which uses the existing Power ISA support in V8 and is trying to get the rest of the browser up. For philosophical reasons I won't be working on that project (I think Google's dissemination of Blink is not ultimately benign, a topic for another day), but I support more browser choice on our new platform, and I hope they are successful too.
- Get link
- Other Apps
Talos shines at OSS North America
- Get link
- Other Apps