Some VGA data such as VESA info needs a proper tuning for addresses
passed on kernel requests. We returned linear addresses there while
spec points out that far pointers are needed.
This fixes a long-standing issue that caused Linux kernel to never exit
the mode scanning loop in arch/x86/boot/video-vesa.c::vesa_probe()
because returned mode info table segment/offset pair was bogus. The
issue triggered on some machines when CONFIG_FB_VESA was disabled.
Also use already VESA structures defined in <boot/vesa.h> header now
that we no longer use the struct to store VESA BIOS data.
Reported-by: Pekka Enberg <penberg@kernel.org> CC: Sasha Levin <levinsasha928@gmail.com> CC: Ingo Molnar <mingo@elte.hu> CC: Asias He <asias.hejun@gmail.com> Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
[ penberg@kernel.org: minor cleanups to setup_vga_rom() ] Signed-off-by: Pekka Enberg <penberg@kernel.org>