On (Mon) Feb 15 2010 [10:03:34], Gerd Hoffmann wrote: > On 02/12/10 15:23, Amit Shah wrote: >> On (Fri) Feb 12 2010 [15:42:14], Michael S. Tsirkin wrote: >>> Since commit 98b19252cf1bd97c54bc4613f3537c5ec0aae263, all >>> serial devices declare MULTIPORT feature. >>> To allow 0.12 compatibility, we should clear this when >>> max_nr_ports is 1. >> >> In addition to this, setting max_nr_ports to 1 is needed when -M 0.12 is >> selected. > > Indeed. > >> However, is this the only way to do it? Gerd? > > Is there a qdev property for max_nr_ports? Then simply adding a compat > property will do the trick.
Something like this (I can split it into two patches before submission): diff --git a/hw/pc.c b/hw/pc.c index 5b29f3b..a975934 100644 --- a/hw/pc.c +++ b/hw/pc.c @@ -1055,12 +1055,32 @@ void cmos_set_s3_resume(void) } static QEMUMachine pc_machine = { + .name = "pc-0.13", + .alias = "pc", + .desc = "Standard PC", + .init = pc_init_pci, + .is_default = 1, + .max_cpus = 255, +}; + +static QEMUMachine pc_machine_v0_12 = { .name = "pc-0.12", .alias = "pc", .desc = "Standard PC", .init = pc_init_pci, .max_cpus = 255, - .is_default = 1, + .compat_props = (GlobalProperty[]) { + { + .driver = "virtio-serial-pci", + .property = "max_nr_ports", + .value = stringify(1), + },{ + .driver = "virtio-serial-pci", + .property = "vectors", + .value = stringify(0), + }, + { /* end of list */ } + } }; static QEMUMachine pc_machine_v0_11 = { @@ -1074,6 +1094,14 @@ static QEMUMachine pc_machine_v0_11 = { .property = "vectors", .value = stringify(0), },{ + .driver = "virtio-serial-pci", + .property = "max_nr_ports", + .value = stringify(1), + },{ + .driver = "virtio-serial-pci", + .property = "vectors", + .value = stringify(0), + },{ .driver = "ide-drive", .property = "ver", .value = "0.11", @@ -1105,6 +1133,14 @@ static QEMUMachine pc_machine_v0_10 = { .property = "class", .value = stringify(PCI_CLASS_DISPLAY_OTHER), },{ + .driver = "virtio-serial-pci", + .property = "max_nr_ports", + .value = stringify(1), + },{ + .driver = "virtio-serial-pci", + .property = "vectors", + .value = stringify(0), + },{ .driver = "virtio-net-pci", .property = "vectors", .value = stringify(0), @@ -1139,6 +1175,7 @@ static QEMUMachine isapc_machine = { static void pc_machine_init(void) { qemu_register_machine(&pc_machine); + qemu_register_machine(&pc_machine_v0_12); qemu_register_machine(&pc_machine_v0_11); qemu_register_machine(&pc_machine_v0_10); qemu_register_machine(&isapc_machine); Amit