gdt reserved in asm startup code is mapped to low physical address. This is still usable in the higher half kernel because we still have the provisional id mapping. As soon as this mapping is removed (because low address belongs to userspace), the gdt will become unavailable and trigger page faults ... meh. We move the gdt to higher memory (by creating another mapping in the kernel VMAs).