From 9e8b3009b7dbe4c2f3e407999e30813122fa4af9 Mon Sep 17 00:00:00 2001 From: Jing Liu Date: Thu, 12 Jan 2017 10:38:25 +0100 Subject: [PATCH] s390x/3270: Mark non-migratable and enable the device Mark 3270 as non-migratable for the experimental stage. Enable the 3270 device so that we can use x3270 client to operate the guest. Run qemu with the arguments: -chardev socket,id=char3270_0,host=0.0.0.0,port=23,nowait,server,tn3270 \ -device x-terminal3270,chardev=char3270_0,devno=fe.0.000a,id=terminal3270_0 \ There are some restrictions for the first stage: We don't support SSL connections, multiple client connections and client resizing. Only tested with the x3270 client. Signed-off-by: Jing Liu Signed-off-by: Yang Chen Reviewed-by: QingFeng Hao Reviewed-by: Dong Jia Shi Signed-off-by: Cornelia Huck --- default-configs/s390x-softmmu.mak | 1 + hw/char/Makefile.objs | 1 + hw/char/terminal3270.c | 6 ++++++ 3 files changed, 8 insertions(+) diff --git a/default-configs/s390x-softmmu.mak b/default-configs/s390x-softmmu.mak index 36e15de336..9615a48f80 100644 --- a/default-configs/s390x-softmmu.mak +++ b/default-configs/s390x-softmmu.mak @@ -2,6 +2,7 @@ CONFIG_PCI=y CONFIG_VIRTIO_PCI=y CONFIG_VIRTIO=y CONFIG_SCLPCONSOLE=y +CONFIG_TERMINAL3270=y CONFIG_S390_FLIC=y CONFIG_S390_FLIC_KVM=$(CONFIG_KVM) CONFIG_WDT_DIAG288=y diff --git a/hw/char/Makefile.objs b/hw/char/Makefile.objs index 725fdc46f4..55fcb68fd2 100644 --- a/hw/char/Makefile.objs +++ b/hw/char/Makefile.objs @@ -29,3 +29,4 @@ common-obj-$(CONFIG_MILKYMIST) += milkymist-uart.o common-obj-$(CONFIG_SCLPCONSOLE) += sclpconsole.o sclpconsole-lm.o obj-$(CONFIG_VIRTIO) += virtio-serial-bus.o +obj-$(CONFIG_TERMINAL3270) += terminal3270.o diff --git a/hw/char/terminal3270.c b/hw/char/terminal3270.c index 58bcc4be15..b2dda01baa 100644 --- a/hw/char/terminal3270.c +++ b/hw/char/terminal3270.c @@ -260,12 +260,18 @@ static Property terminal_properties[] = { DEFINE_PROP_END_OF_LIST(), }; +static const VMStateDescription terminal3270_vmstate = { + .name = TYPE_TERMINAL_3270, + .unmigratable = 1, +}; + static void terminal_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); EmulatedCcw3270Class *ck = EMULATED_CCW_3270_CLASS(klass); dc->props = terminal_properties; + dc->vmsd = &terminal3270_vmstate; ck->init = terminal_init; ck->read_payload_3270 = read_payload_3270; ck->write_payload_3270 = write_payload_3270;