Commit bf4e5d92979c5f7b0b5e5d0a261954aa87f02ac1
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
hw/pc.c
| ... | ... | @@ -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 | ... | ... |