My (limited) understanding is that _DSM is used to turn the card on/off and switch the mux on relevant laptops between the different GPU's. And the ACPI vbios method was introduced for optimus laptops -- those checks have always been there. I'm fairly sure they can be dropped. Just to confirm -- dropping the checks from nouveau_acpi.c:nouveau_acpi_rom_supported (and no other changes) makes the VBIOS get loaded from ACPI, without errors. For the kworker thing -- see what's going on -- 'echo w > /proc/sysrq-trigger' (iirc; perhaps a different sysrq would be helpful... see if it's in nouveau or not. even if it is, it may not be related to this specific issue.)