Open lethedata opened 7 months ago
I ran into this issue again however the fix didn't work. This system booted with UEFI which uses Graphics Output Protocol rather than VGA so the above parameters don't work.[^1] When Xen boots with efi, it relies on a configuration file or a bootloader; focusing on the bootloader, it provides the device tree to Xen.[^2] From here Xen appears to do it's own mode switch (using the vesafb driver I think) which would explain why GRUB2 gfxmode, gfxpayload, and the terminal_input/output settings weren't working. The vesafb driver doesn't seem to have any configuration options but I don't fully understand the code (or C for that matter) so could be wrong.
Digging around, I found a commit which modifies xen's vga=current
to work with GRUB2's set gfxpayload=keep
parameter however it doesn't appear until Xen's 4.17 series so xcp-ng 8.3 (4.13.5) doesn't have it.[^3] If Wikipedia is half right this will be available in the next major xcp-ng release 9.
Due to setting xcp-ng resolution only working for BIOS/Legacy mode, I think it might be best to leave it out of the docs until UEFI is supported in order to provide a fully documented solution for both install types. It also doesn't appear to be a super common issue so not really urgent.
[^1]: UEFI Spec Graphics Output Protocol [^2]: Xen EFI Documentation [^3]: x86/boot: make "vga=current" work with graphics modes
Xen 4.17 is coming to XCP-ng 8.3, so maybe this will help.
On some monitors an "Input Signal Out Of Range" error occurs a bit after the grub menu due to resolution issues. The fix is simply requiring vga kernel parameters be changed for both xen and dom0.
For xcp-ng version 8.2 and below, only following the steps in Citrix Article CTX226191 are required.
For xcp-ng v8.3b,
modprobe.blacklist=i915
parameter needs to be added to dom0 along with the above fixes as the module is no longer blacklisted by default.I'm planning to make a PR to the troubleshooting documentation in order to fully document and explain the above process along with how to do it temporarily at boot (mainly needed for installations) but I'm not sure when I'll get to it at this time so figured I'd get the information posted here if anyone wants to write it up.