core: Move per_cpu::cpu_id initialization out of assembly code

We can trivially initialize this field during early setup if we pass the
value to entry(). Removes one offset define that needs to be kept in
manual sync with struct per_cpu.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
x86: Switch GDT and IDT before enabling hypervisor page table

The Linux GDT and IDT are no longer accessible once we switched to the
hypervisor page table. So we need to move the latter after the former to
avoid occasional crashes during hypervisor enabling.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>