On Thu, Jan 4, 2024 at 2:20 PM segaloco via COFF <coff(a)tuhs.org> wrote:
[TUHS bcc, moved to COFF]
On Thursday, January 4th, 2024 at 10:26 AM, Kevin Bowling
<kevin.bowling(a)kev009.com> wrote:
For whatever reason, intel makes it difficult to
impossible to remove
the ME in later generations.
Part of me wonders if the general computing industry is starting to cheat off of the
smartphone sector's homework, this phenomenon where whole critical components of a
hardware device you literally own are still heavily controlled and provisioned by the
vendor unless you do a whole bunch of tinkering to break through their stuff and
"root" your device. That I can fully pay for and own a "computer" and
I am not granted full root control over that device is one of the key things that keeps
"smart" devices besides my work issued mobile at arms length.
For me this smells of the same stuff, they've gotten outside of the lane of
*essential to function* design decisions and instead have now put in a "feature"
that you are only guaranteed to opt out of by purchasing an entirely different product.
In other words, the only guaranteed recourse if a CPU has something like this going on is
to not use that CPU, rather than as the device owner having leeway to do what you want.
Depends on the vendor really, some give more control than others, but IMO there is only
one level of control you give to someone who has bought and paid for a complete device:
unlimited. Anything else suggests they do not own the device, it is a permanently leased
product that just stops requiring payments after a while, but if I don't get the
keys, I don't consider myself to own it, I'm just borrowing it, kinda like how
the Bell System used to own your telephone no matter how many decades it had been sitting
on your desk.
My two cents, much of this can also be said of BIOS, UEFI, anything else that gets
between you and the CPUs reset vector. Is it a nice option to have some vendor provided
blob to do your DRAM training, possibly transition out of real mode, enumerate devices,
whatever. Absolutely, but it's nice as an *option* that can be turned off should I
want to study and commit to doing those things myself. I fear we are approaching an age
where the only way you get reset vector is by breadboarding your own thing. I get wanting
to protect users from say bricking the most basic firmware on a board, but if I want to
risk that, I should be completely free to do so on a device I've fully paid for. For
me the key point of contention is choice and consent. I'm fine having this as a
selectable option. I'm not fine with it becoming an endemic "requirement."
Are we there yet? Can't say, I don't run anything serious on x86-family stuff,
not that ARM and RISC-V don't also have weird stuff like this going on. SBI and all
that are their own wonderful kettle of fish.
We've been there for a while.
I've been swimming in these waters for a couple of years now, and it
_is_ an issue. That said, I can kind of sympathize with the vendors to
an extent; they're between a rock and a hard place in a lot of ways.
Starting up a modern CPU (even one in an end-user device like a phone
or a laptop) is, I imagine, a bit like starting the engines on a
container ship. You don't just press a switch and have massive
two-story diesel pistons start firing in enormous cylinders; instead,
you push a switch which starts an electric motor which turns on
something like a V8 engine, which starts up a larger engine that
starts the process of compressing the big pistons so the thing can
start; it's a slow, multi-stage process out of physical necessity.
Modern CPUs follow a similar process: you apply power to a board and
it's going to do all sorts of stuff like power sequencing for DIMM
sockets, asking them what's there, whether they're working properly,
etc. Then there's turning on thermal sensors, the IO bus, flash, etc.
A slew of internal diagnostics are going to run across a number of
components. And all of this is happening before you even begin
bringing the CPU socket online, let alone allowing the CPUs to come
out of reset. And most of this is going to be done with FPGAs or
little rinky-dink microcontrollers embedded in various places (an
interesting exercise might be trying to count the number of CPUs on a
modern mainboard): and that's not even counting the CPUs on IO
devices. Most of those aren't just hidden, they're invisible to anyone
other than the device manufacturer. Even if I had the documentation
and the means to replace the images in those disparate components,
it'd be a daunting task from a time/reward perspective. Most of the
time, it's just not possible.
How did we get here? Well, in part because systems are a lot more
complex now than they were in the past, and that has reflected itself
back onto software. The reality is that, for most users, even those
who care about what software they run, most of this stuff just isn't
that _interesting_. We care what runs on the x86 CPU (or whatever)
sure, but how many people even _know_ about the little CPU embedded in
their USB flash stick? So there's little incentive for the software
vendors to put a lot of effort into supporting this stuff, and so it
falls on board vendors, who just do what they've got to do to ship a
product.
I've mentioned the Oxide architecture before: we have no UEFI and we
have no BIOS. We also designed our own custom boards.
At Oxide, we build a service processor board based on an ARM Cortex-M
profile microcontroller that runs its own OS that we built in-house
most of the pre-CPU-poweron tasks. And yet, there are still some
things that we can't get away from (firmware on peripherals, and the
aforementioned PSP). The PSP is an interesting case in point; even if
we _wanted_ to bypass it entirely, we can't; it's built into the CPU
SoC complex and it's just how the thing works. And we build the
computers! Imagine the situation for a user of a commodity COTS
system.
BTW sorry that's pretty rambly, the lack of
intimate user control over especially smart devices these days is one of the pillars of my
gripes with modern tech. Only time will tell how this plays out. Unfortunately the
general public just isn't educated enough (by design, not their own fault) on their
rights to really get a big push on a societal scale to change this. People just want I
push button I get Netflix, they'll happily throw all their rights in the garbage over
bread and circuses....but that ain't new...
I think most people just want a computer (or phone, tablet, whatever)
at all and the entire system has congealed (again, to use Roscoe's
term) around the way that things are now. Even for those of us who
don't like it, it's damned hard to change the status quo.
- Dan C.