Why do we use a variable MTRR to map the bios code instead of the fixed ones? I've been trying to integrate a VGA bios alongside the normal and fallback images, but that 2 ^ XIP size requirement is making things very difficult. So far I have only managed to include the VGA bios code blob if I disable the normal image in the config.lb Is there anything preventing me from using the fixed size MTRR descriptors for the bios area instead of a variable one?
No, I think it's ok to only use fixed range mtrr for bios area. The intel manuals said for the first 1MB area, if fixed mtrrs are enabled, the processor uses the memory type stored for the appropriate fixed-range mtrr.