> I don't know what a BSP is, but why can I update linux (or indeed almost any OS) on my PC without any support from the motherboard vendor? What OS features need SoC support, and why can the OS not live without them, when it was previously able to do so?
Basically, PCs have 2 things going for them:
First, they use standardized, enumerable interfaces. You can boot an arbitrary Linux-based system and the kernel can ask the PCI bus "what hardware is installed?" using the same query on every machine, and get back an answer in the same format. "Embedded" devices don't have that, generally (ARM ServerReady does add this, and does create ARM-based hardware where you just stick in a random distro's USB stick and boot and it works).
Second, Linux on PCs tends to use upstream drivers. When you run ex. Ubuntu on a laptop, it talks to your ex. graphics card using a driver that's in Torvald's official tree. For... reasons... that I don't claim to understand but that probably involve cost-cutting, Android phones rely on drivers that are written by hardware vendors and then abandoned without any effort to get included upstream.
So the result is that in many cases you can boot vanilla Linux on an arbitrary phone or whatever, but it'll come up with access to the CPU, RAM, and USB (because that is still an enumerable bus using a standard interface), but it will have no idea how to query the rest of the hardware and if it did it wouldn't have any drivers to talk to that hardware with.
Edit: I should mention, a BSP is the ... "solution" that vendors use to pretend this whole thing is workable. It stands for board support package, which is a giant blob of source code that includes at minimum a copy of Linux with all their delightfully buggy custom drivers included and all the necessary hardware devices hard-coded so the system can find the hardware when it boots. And by find, of course, I mean "blindly assume it's there". On a good day this data is encoded in a device tree, which is a file format for "here's what hardware is in this system and how to talk to it (ports, memory addresses, whatever) ".