Commit c2b3b41a0ba22b22e199f0a53830f337989db9fd
1 parent
5a38f081
add a -vga none cli option (Stefano Stabellini)
currently there is no way to fully disable any graphic card device for the PC architecture. You can have no graphical output, thanks to -nographic, but you would have the VGA device connected to your PCI bus anyway. There is already a convenient -vga option to choose between std, cirrus and vmware; this patch add the new option "none" to select no graphic card at all. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6322 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
3 changed files
with
29 additions
and
18 deletions
hw/pc.c
| ... | ... | @@ -852,22 +852,24 @@ static void pc_init1(ram_addr_t ram_size, int vga_ram_size, |
| 852 | 852 | exit(1); |
| 853 | 853 | } |
| 854 | 854 | |
| 855 | - /* VGA BIOS load */ | |
| 856 | - if (cirrus_vga_enabled) { | |
| 857 | - snprintf(buf, sizeof(buf), "%s/%s", bios_dir, VGABIOS_CIRRUS_FILENAME); | |
| 858 | - } else { | |
| 859 | - snprintf(buf, sizeof(buf), "%s/%s", bios_dir, VGABIOS_FILENAME); | |
| 860 | - } | |
| 861 | - vga_bios_size = get_image_size(buf); | |
| 862 | - if (vga_bios_size <= 0 || vga_bios_size > 65536) | |
| 863 | - goto vga_bios_error; | |
| 864 | - vga_bios_offset = qemu_ram_alloc(65536); | |
| 865 | - | |
| 866 | - ret = load_image(buf, phys_ram_base + vga_bios_offset); | |
| 867 | - if (ret != vga_bios_size) { | |
| 868 | - vga_bios_error: | |
| 869 | - fprintf(stderr, "qemu: could not load VGA BIOS '%s'\n", buf); | |
| 870 | - exit(1); | |
| 855 | + if (cirrus_vga_enabled || std_vga_enabled || vmsvga_enabled) { | |
| 856 | + /* VGA BIOS load */ | |
| 857 | + if (cirrus_vga_enabled) { | |
| 858 | + snprintf(buf, sizeof(buf), "%s/%s", bios_dir, VGABIOS_CIRRUS_FILENAME); | |
| 859 | + } else { | |
| 860 | + snprintf(buf, sizeof(buf), "%s/%s", bios_dir, VGABIOS_FILENAME); | |
| 861 | + } | |
| 862 | + vga_bios_size = get_image_size(buf); | |
| 863 | + if (vga_bios_size <= 0 || vga_bios_size > 65536) | |
| 864 | + goto vga_bios_error; | |
| 865 | + vga_bios_offset = qemu_ram_alloc(65536); | |
| 866 | + | |
| 867 | + ret = load_image(buf, phys_ram_base + vga_bios_offset); | |
| 868 | + if (ret != vga_bios_size) { | |
| 869 | +vga_bios_error: | |
| 870 | + fprintf(stderr, "qemu: could not load VGA BIOS '%s'\n", buf); | |
| 871 | + exit(1); | |
| 872 | + } | |
| 871 | 873 | } |
| 872 | 874 | |
| 873 | 875 | /* setup basic memory access */ |
| ... | ... | @@ -956,7 +958,7 @@ static void pc_init1(ram_addr_t ram_size, int vga_ram_size, |
| 956 | 958 | vga_ram_addr, vga_ram_size); |
| 957 | 959 | else |
| 958 | 960 | fprintf(stderr, "%s: vmware_vga: no PCI bus\n", __FUNCTION__); |
| 959 | - } else { | |
| 961 | + } else if (std_vga_enabled) { | |
| 960 | 962 | if (pci_enabled) { |
| 961 | 963 | pci_vga_init(pci_bus, ds, phys_ram_base + vga_ram_addr, |
| 962 | 964 | vga_ram_addr, vga_ram_size, 0, 0); | ... | ... |
sysemu.h
vl.c
| ... | ... | @@ -192,6 +192,7 @@ int vm_running; |
| 192 | 192 | static int rtc_utc = 1; |
| 193 | 193 | static int rtc_date_offset = -1; /* -1 means no change */ |
| 194 | 194 | int cirrus_vga_enabled = 1; |
| 195 | +int std_vga_enabled = 0; | |
| 195 | 196 | int vmsvga_enabled = 0; |
| 196 | 197 | #ifdef TARGET_SPARC |
| 197 | 198 | int graphic_width = 1024; |
| ... | ... | @@ -3873,7 +3874,7 @@ static void help(int exitcode) |
| 3873 | 3874 | " use -soundhw ? to get the list of supported cards\n" |
| 3874 | 3875 | " use -soundhw all to enable all of them\n" |
| 3875 | 3876 | #endif |
| 3876 | - "-vga [std|cirrus|vmware]\n" | |
| 3877 | + "-vga [std|cirrus|vmware|none]\n" | |
| 3877 | 3878 | " select video card type\n" |
| 3878 | 3879 | "-localtime set the real time clock to local time [default=utc]\n" |
| 3879 | 3880 | "-full-screen start in full screen\n" |
| ... | ... | @@ -4407,14 +4408,21 @@ static void select_vgahw (const char *p) |
| 4407 | 4408 | const char *opts; |
| 4408 | 4409 | |
| 4409 | 4410 | if (strstart(p, "std", &opts)) { |
| 4411 | + std_vga_enabled = 1; | |
| 4410 | 4412 | cirrus_vga_enabled = 0; |
| 4411 | 4413 | vmsvga_enabled = 0; |
| 4412 | 4414 | } else if (strstart(p, "cirrus", &opts)) { |
| 4413 | 4415 | cirrus_vga_enabled = 1; |
| 4416 | + std_vga_enabled = 0; | |
| 4414 | 4417 | vmsvga_enabled = 0; |
| 4415 | 4418 | } else if (strstart(p, "vmware", &opts)) { |
| 4416 | 4419 | cirrus_vga_enabled = 0; |
| 4420 | + std_vga_enabled = 0; | |
| 4417 | 4421 | vmsvga_enabled = 1; |
| 4422 | + } else if (strstart(p, "none", &opts)) { | |
| 4423 | + cirrus_vga_enabled = 0; | |
| 4424 | + std_vga_enabled = 0; | |
| 4425 | + vmsvga_enabled = 0; | |
| 4418 | 4426 | } else { |
| 4419 | 4427 | invalid_vga: |
| 4420 | 4428 | fprintf(stderr, "Unknown vga type: %s\n", p); | ... | ... |