Most Minecraft servers are run on x86_64 based hardware. Ampere AltraMax chips run AARCH64…which is the non-ARM specific way of saying ARM64 instruction set.
Continue readingLabeling a Linux Kernel RPM
You can use the Kernel build system to make your own RPMs using the the target:
make rpm-pkg
Continue readingSplitting the irealpro 1400
The irealpro player has become an indispensable tool for practicing a tune. Since I play saxophone, the fact that irealpro will give me a full rhythm section to play against makes working on a tune far more possible than it was for me in the past.
I recently got a new phone and went to reinstall the set of songs that I use. They come from a collection called the Jazz 1400. This snuck up slightly in number from the last time I imported, and it must have hit a threshold, because my phone refuses to import it.
Continue readingA Non-authoritative history of Preemptive Multitasking in the personal computing world.
Back when machines only had one or two CPUs (still the case for embedded devices) the OS Kernel was responsible for making sure that the machine coule process more than one instruction “path” at a time. I started coding back on the Commodore 64, and there it was easy to lock up the machine: just run a program that does nothing. I’d have to look back at the Old Programmer’s Guide, but I am pretty sure that a program had to voluntarily give up the CPU if you wanted any form of multi-tasking.
The alternative is called “preemptive multitasking” where the hardware provides a mechanism that can call a controller function to switch tasks. The task running on the CPU is paused, the state is saved, and the controller function decides what to do next.
Continue readingLooking at ACPI PPTT from Userspace
The sys file system is used to expose Linux constructs to user space. One place we can see ACPI based information is in /sys/firmware/acpi
Continue readingACPI subsytem initialization
Many other modules might trigger ACPI device registration. This means the the basic ACPI subsystem has to be up and available before much of the Hardware is usable. Hence, we can see that the ACPI subsystem gets registered here. What I am not certain of is when does this code get called?
Continue readingACPI root pointer from UEFI System Table.
As I found out after I posted my lat entry , the correct way to find the Root pointer for the ACPI tables is to get it from the EFI System table. Where does that get set? Here’s the general flow: again, we start at init/main.c. start_kernel. However, the call is not in the ACPI code, but rather in setup_arch. The call chain goes
start-Kernel->setup_arch->efi_init->efi_get_fdt_params and that seems to pull it our of initial_boot_params. I can’t quite see where that is initialized. Yet. From context it looks like it is constructed out of the kernel command line parameters. Still learning….
Learning ACPI for ARM64 part 2: Completeing Early intialization
Last article got up through allocating the memory for the ACPI Tables. Now we want to populate them.
Continue readingLearning ACPI for ARM64 part 1: Finding the Root.
It started as a request from our tech lead: please help triage these patches. So I lookedat the set of patches and started with what looked like the simplest one:
Fix topology for Core scheduling.
It *just* reorders the code to call
store_cpu_topology(cpu);
before
notify_cpu_starting() .
Yeah…there is no such thing as a simple patch. These are my notes as I study and learn ACPI. My assumptions are here for all to see, and may well prove to be wrong.
Lets dig in.
Continue reading