mirror of https://github.com/xemu-project/xemu.git
vl: Replace DT_NOGRAPHIC with machine option
All DisplayType values are just UI options that don't affect any hardware emulation code, except for DT_NOGRAPHIC. Replace DT_NOGRAPHIC with DT_NONE plus a new "-machine graphics=on|off" option, so hardware emulation code don't need to use the display_type variable. Cc: Michael Walle <michael@walle.cc> Cc: Blue Swirl <blauwirbel@gmail.com> Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
This commit is contained in:
parent
cf3dc71eb5
commit
cfc58cf373
|
@ -257,6 +257,20 @@ static void machine_set_usb(Object *obj, bool value, Error **errp)
|
|||
ms->usb_disabled = !value;
|
||||
}
|
||||
|
||||
static bool machine_get_graphics(Object *obj, Error **errp)
|
||||
{
|
||||
MachineState *ms = MACHINE(obj);
|
||||
|
||||
return ms->enable_graphics;
|
||||
}
|
||||
|
||||
static void machine_set_graphics(Object *obj, bool value, Error **errp)
|
||||
{
|
||||
MachineState *ms = MACHINE(obj);
|
||||
|
||||
ms->enable_graphics = value;
|
||||
}
|
||||
|
||||
static bool machine_get_igd_gfx_passthru(Object *obj, Error **errp)
|
||||
{
|
||||
MachineState *ms = MACHINE(obj);
|
||||
|
@ -382,6 +396,7 @@ static void machine_initfn(Object *obj)
|
|||
ms->kvm_shadow_mem = -1;
|
||||
ms->dump_guest_core = true;
|
||||
ms->mem_merge = true;
|
||||
ms->enable_graphics = true;
|
||||
|
||||
object_property_add_str(obj, "accel",
|
||||
machine_get_accel, machine_set_accel, NULL);
|
||||
|
@ -460,6 +475,12 @@ static void machine_initfn(Object *obj)
|
|||
object_property_set_description(obj, "usb",
|
||||
"Set on/off to enable/disable usb",
|
||||
NULL);
|
||||
object_property_add_bool(obj, "graphics",
|
||||
machine_get_graphics,
|
||||
machine_set_graphics, NULL);
|
||||
object_property_set_description(obj, "graphics",
|
||||
"Set on/off to enable/disable graphics emulation",
|
||||
NULL);
|
||||
object_property_add_bool(obj, "igd-passthru",
|
||||
machine_get_igd_gfx_passthru,
|
||||
machine_set_igd_gfx_passthru, NULL);
|
||||
|
|
|
@ -167,7 +167,7 @@ milkymist_init(MachineState *machine)
|
|||
milkymist_memcard_create(0x60004000);
|
||||
milkymist_ac97_create(0x60005000, irq[4], irq[5], irq[6], irq[7]);
|
||||
milkymist_pfpu_create(0x60006000, irq[8]);
|
||||
if (display_type != DT_NOGRAPHIC) {
|
||||
if (machine->enable_graphics) {
|
||||
milkymist_tmu2_create(0x60007000, irq[9]);
|
||||
}
|
||||
milkymist_minimac2_create(0x60008000, 0x30000000, irq[10], irq[11]);
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include "hw/hw.h"
|
||||
#include "sysemu/sysemu.h"
|
||||
#include "sysemu/dma.h"
|
||||
#include "hw/boards.h"
|
||||
#include "hw/isa/isa.h"
|
||||
#include "hw/nvram/fw_cfg.h"
|
||||
#include "hw/sysbus.h"
|
||||
|
@ -868,16 +869,17 @@ static void fw_cfg_machine_ready(struct Notifier *n, void *data)
|
|||
static void fw_cfg_init1(DeviceState *dev)
|
||||
{
|
||||
FWCfgState *s = FW_CFG(dev);
|
||||
MachineState *machine = MACHINE(qdev_get_machine());
|
||||
|
||||
assert(!object_resolve_path(FW_CFG_PATH, NULL));
|
||||
|
||||
object_property_add_child(qdev_get_machine(), FW_CFG_NAME, OBJECT(s), NULL);
|
||||
object_property_add_child(OBJECT(machine), FW_CFG_NAME, OBJECT(s), NULL);
|
||||
|
||||
qdev_init_nofail(dev);
|
||||
|
||||
fw_cfg_add_bytes(s, FW_CFG_SIGNATURE, (char *)"QEMU", 4);
|
||||
fw_cfg_add_bytes(s, FW_CFG_UUID, qemu_uuid, 16);
|
||||
fw_cfg_add_i16(s, FW_CFG_NOGRAPHIC, (uint16_t)(display_type == DT_NOGRAPHIC));
|
||||
fw_cfg_add_i16(s, FW_CFG_NOGRAPHIC, (uint16_t)!machine->enable_graphics);
|
||||
fw_cfg_add_i16(s, FW_CFG_NB_CPUS, (uint16_t)smp_cpus);
|
||||
fw_cfg_add_i16(s, FW_CFG_BOOT_MENU, (uint16_t)boot_menu);
|
||||
fw_cfg_bootsplash(s);
|
||||
|
|
|
@ -1000,7 +1000,7 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwdef,
|
|||
slavio_timer_init_all(hwdef->counter_base, slavio_irq[19], slavio_cpu_irq, smp_cpus);
|
||||
|
||||
slavio_serial_ms_kbd_init(hwdef->ms_kb_base, slavio_irq[14],
|
||||
display_type == DT_NOGRAPHIC, ESCC_CLOCK, 1);
|
||||
!machine->enable_graphics, ESCC_CLOCK, 1);
|
||||
/* Slavio TTYA (base+4, Linux ttyS0) is the first QEMU serial device
|
||||
Slavio TTYB (base+0, Linux ttyS1) is the second QEMU serial device */
|
||||
escc_init(hwdef->serial_base, slavio_irq[15], slavio_irq[15],
|
||||
|
|
|
@ -154,6 +154,7 @@ struct MachineState {
|
|||
bool iommu;
|
||||
bool suppress_vmdesc;
|
||||
bool enforce_config_section;
|
||||
bool enable_graphics;
|
||||
|
||||
ram_addr_t ram_size;
|
||||
ram_addr_t maxram_size;
|
||||
|
|
|
@ -138,7 +138,6 @@ typedef enum DisplayType
|
|||
DT_SDL,
|
||||
DT_COCOA,
|
||||
DT_GTK,
|
||||
DT_NOGRAPHIC,
|
||||
DT_NONE,
|
||||
} DisplayType;
|
||||
|
||||
|
|
13
vl.c
13
vl.c
|
@ -2962,6 +2962,7 @@ int main(int argc, char **argv, char **envp)
|
|||
int show_vnc_port = 0;
|
||||
bool defconfig = true;
|
||||
bool userconfig = true;
|
||||
bool nographic = false;
|
||||
const char *log_mask = NULL;
|
||||
const char *log_file = NULL;
|
||||
char *trace_file = NULL;
|
||||
|
@ -3206,7 +3207,10 @@ int main(int argc, char **argv, char **envp)
|
|||
display_type = select_display(optarg);
|
||||
break;
|
||||
case QEMU_OPTION_nographic:
|
||||
display_type = DT_NOGRAPHIC;
|
||||
olist = qemu_find_opts("machine");
|
||||
qemu_opts_parse_noisily(olist, "graphics=off", false);
|
||||
nographic = true;
|
||||
display_type = DT_NONE;
|
||||
break;
|
||||
case QEMU_OPTION_curses:
|
||||
#ifdef CONFIG_CURSES
|
||||
|
@ -4167,7 +4171,7 @@ int main(int argc, char **argv, char **envp)
|
|||
* -nographic _and_ redirects all ports explicitly - this is valid
|
||||
* usage, -nographic is just a no-op in this case.
|
||||
*/
|
||||
if (display_type == DT_NOGRAPHIC
|
||||
if (nographic
|
||||
&& (default_parallel || default_serial
|
||||
|| default_monitor || default_virtcon)) {
|
||||
error_report("-nographic cannot be used with -daemonize");
|
||||
|
@ -4181,7 +4185,7 @@ int main(int argc, char **argv, char **envp)
|
|||
#endif
|
||||
}
|
||||
|
||||
if (display_type == DT_NOGRAPHIC) {
|
||||
if (nographic) {
|
||||
if (default_parallel)
|
||||
add_device_config(DEV_PARALLEL, "null");
|
||||
if (default_serial && default_monitor) {
|
||||
|
@ -4531,9 +4535,6 @@ int main(int argc, char **argv, char **envp)
|
|||
|
||||
/* init local displays */
|
||||
switch (display_type) {
|
||||
case DT_NOGRAPHIC:
|
||||
(void)ds; /* avoid warning if no display is configured */
|
||||
break;
|
||||
case DT_CURSES:
|
||||
curses_display_init(ds, full_screen);
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue