Commit bf4e5d92979c5f7b0b5e5d0a261954aa87f02ac1

Authored by Pascal Terjan
Committed by Anthony Liguori
1 parent 07323531

Handle vga= in -append

Here is a patch I had sent twice to the list 2 years ago.
Hopefuly this time someone will be interested

It adds support for passing vga mode to linux kernel through
vga= option in -append

Signed-off-by: Pascal Terjan <pterjan@gmail.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Showing 1 changed file with 19 additions and 0 deletions
... ... @@ -825,6 +825,7 @@ static void load_linux(void *fw_cfg,
825 825 uint8_t header[8192];
826 826 target_phys_addr_t real_addr, prot_addr, cmdline_addr, initrd_addr = 0;
827 827 FILE *f, *fi;
  828 + char *vmode;
828 829  
829 830 /* Align to 16 bytes as a paranoia measure */
830 831 cmdline_size = (strlen(kernel_cmdline)+16) & ~15;
... ... @@ -900,6 +901,24 @@ static void load_linux(void *fw_cfg,
900 901 stw_p(header+0x22, cmdline_addr-real_addr);
901 902 }
902 903  
  904 + /* handle vga= parameter */
  905 + vmode = strstr(kernel_cmdline, "vga=");
  906 + if (vmode) {
  907 + unsigned int video_mode;
  908 + /* skip "vga=" */
  909 + vmode += 4;
  910 + if (!strncmp(vmode, "normal", 6)) {
  911 + video_mode = 0xffff;
  912 + } else if (!strncmp(vmode, "ext", 3)) {
  913 + video_mode = 0xfffe;
  914 + } else if (!strncmp(vmode, "ask", 3)) {
  915 + video_mode = 0xfffd;
  916 + } else {
  917 + video_mode = strtol(vmode, NULL, 0);
  918 + }
  919 + stw_p(header+0x1fa, video_mode);
  920 + }
  921 +
903 922 /* loader type */
904 923 /* High nybble = B reserved for Qemu; low nybble is revision number.
905 924 If this code is substantially changed, you may want to consider
... ...