How do you know what is inside your computer? There are a couple tools. If the hardware is on the PCI bus, from the command line you can run lspci, which will in turn enumerate the discovered devices on that bus. But what if the hardware is not on the PCI bus? And how does the Kernel discover it in the first place? For the hardware that I have to work with, the answer is that it is enumerated by the Unified Extensible Firmware Interface (UEFI) coded embedded in the device and exposed via the Advanced Configuration and Power Interface (ACPI). This world is full of four letter acronyms. Here are my notes on some of them.Continue reading
The systems I am working with have 80 or more cores in them. I’ve recently had to investigate processes around core start up. Here are my notes.Continue reading
Today I was reminded how easy it is to get fixed in your thinking.
The short lessons learned: if the Hostname fails (due to SSL) try the IP address.
Longer story:Continue reading
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/acpiContinue reading
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 reading
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….
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:
It *just* reorders the code to call
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
I have an Ampere Altra-Max/INGRASYS Yushan Server System running Centos 8 stream.
Because we are a chip manufacteror, we don’t sell end systems, we provide a reference platform that is a starting point for our customers to make a product. This leads to bizarre set of internal versus external names. One thing that you can rely on, however, is the identifier of the processor itself:
# cat /proc/cpuinfo processor : 0 BogoMIPS : 50.00 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp ssbs CPU implementer : 0x41 CPU architecture: 8 CPU variant : 0x3 CPU part : 0xd0c CPU revision : 1 ...
TO make this readable, use the utility lscpu:
[root@eng14sys-r 111 ~]# lscpu Architecture: aarch64 Byte Order: Little Endian CPU(s): 80 On-line CPU(s) list: 0-79 Thread(s) per core: 1 Core(s) per socket: 80 Socket(s): 1 NUMA node(s): 1 Vendor ID: ARM BIOS Vendor ID: Ampere(R) Model: 1 Model name: Neoverse-N1 BIOS Model name: Ampere(R) Altra(R) Processor Stepping: r3p1 CPU max MHz: 3000.0000 CPU min MHz: 1000.0000 BogoMIPS: 50.00 L1d cache: 64K L1i cache: 64K L2 cache: 1024K NUMA node0 CPU(s): 0-79 Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp ssbs
I want to build the latest Linus-repo Linux Kernel and run it on the server. Here’s the steps I went through.Continue reading
ALSA. Jack. PulseAudio. MIDI. Musescore. Jamulus.
My musical interactions with Linux are not the most complex in the world, but they ain’t trivial. The complexity of the Linux audio landscape has been a stumbling block so far. Pipewire has just gotten me past that.
The title of this article implies that you need to do something other than install Pipewire. So far, this is not true. On my system, at least, it Just works.Continue reading