I'm pretty sure I once commented that I have a broken laptop. It's my sister's old machine, which isn't that bad (better than mine), but she managed to kill the GPU by overheating the whole thing.
So, sure, I could repair it: I could replace the motherboard, but that's an expensive solution and really not worth it. I could try removing the GPU from the motherboard, but it's a BGA and I can't even solder SMD, so.. nope. I could always try a BIOS mod to disable it, but if it goes wrong, bye-bye laptop. Or, if nothing works, screw it, I'm gonna find a way of disabling it before the OS finds it (like a DSDT patch from the Hackintosh projects).
Or even nothing works, I can always destroy it with a magnet.
Anyway, from my ideas above, you might have realized something already: the laptop works just fine with its integrated GPU (it has an i5, so it's good enough for daily stuff), but it crashes with the dedicated AMD one. The crappy part is that, even though the GPU is damaged, any OS can still detect it, and then load its drivers, which will eventually crash the system. On Windows it's right after the boot, before the login, and on Linux it's right after the Kernel loads (ha, funny).
I already managed to make this laptop work on Linux: just provide the magic
radeon.dpm=0 parameter to the kernel and it shall not give a damn about the GPU. It might give some errors, warnings and scream like a little girl, but it won't crash. And from there you can always blacklist the
radeon module and enjoy the laptop. But since I want to use it to code stuff for Windows, and stuff that requires a more powerful machine than my old laptop, Linux isn't really an option. At least I know that works.
But Windows... well, Windows is a whole different story. Windows 7 is fine: you have to manually install the drivers, and you can block driver updates from Microsoft. In fact, we all used to do that. But then Windows 10 changed it all: you are forced to install the drivers they send you. At least on that laptop, with that GPU, and, well, with me.
There are many ways of killing Microsoft's dumbass idea of forcing me to install their updates. One of them is blocking the specific crappy update that is killing the machine using KB3073930, which is a small tool that does that for you. It's cool, it's interesting, but it doesn't really work well. I mean, sure, it works, but as soon as Windows 10 upgrades to a recent build, it ignores such hack and will install whatever it wants to.
I also tried playing with the registry to tricky Windows in not finding the driver for it. That didn't work well. It used to work better in Windows 98, but on Windows 10 it will crash the whole thing and you'll have to reset the system. Nope.
So during the course of many, many updates, I had to keep a Device Manager running to check if the GPU driver was being installed, since it usually crashes after the system reboots. So once it got installed, I had to go there and disable the device, uninstall the driver and remove it from the system. Such "hack" was obviously seen by Windows, which then forced me to install the AMD driver again on the next set of updates (after the reboot). So, more crashes! Yey!
I tried disabling the option that decides wheter Windows should get the drivers online or not: the first build upgrade actually reenabled it! Nice job, Microsoft! Screw my settings, do whatever you want! I remember that such upgrade killed many of my custom settings on my desktop machine, so.. yeah.
I looked everywhere. I was already tired of this bullshit, thinking I would have to install Windows 7 again. Ugh, that interface... nah, I like Windows 10, there must be a way of fixing this that doesn't involve many hours of hacking or checking the damn thing every boot, right?
And turns out there is a solution! Thanks, Microsoft, for group policies that even you can't override (well, I hope not). This afternoon I've found something online that tells me that I can disable complete driver installation for a specific device based on its hardware IDs. Nice! Pretty much what I wanted to do with the DSDT patch, but I would change the ID, which is very dangerous (who cares, right?).
After uninstalling the AMD drivers, letting Windows get its default stuff, and so on, I enabled that policy, giving all IDs from the GPU to it. It was like, screw it, block the crap out of it! Windows even removed its own drivers from the thing, leaving the device fully disabled on the system. So, in the end, it works. It just took me forever to find a proper solution to it.
Now my only hope is that the next update won't remove or disable such policy.