This patch spreads the virtconsoles and virtserialports across multiple
virtio-serial-pci devices.
There has been a discussion about how to test the communication between various
topologies of virtio_consoles. This patch keeps the old way of configuration
but still lets the user to test the communication in 1:N, N:1, N:M (no_pci :
no_dev_per_pci) topologies.
The logic is simple:
Starting with virtconsoles it allocates them by two per one virtio-serial-pci
device. It doesn't require any changes to tests_base.cfg but still when using
more than 2 devices it transfers data between multiple PCIs. The layout can
look like this:
3 consoles, 2 serialports: "CC|CS|S" => 3 virtio-serial-pci devices
3 consoles, 4 serialports: "CC|CS|SS|S" => 4 virtio-serial-pci devices
...
Later in the test consoles are picked starting first available console:
Layout: 3 consoles, 2 serialports: "CC|CS|S"
virtio_console_smoke = "serialport;console"
{
1st round: cc|cS|s => only the first serialport is used (1:1)
2nd round: Cc|cs|s => only the first console is used (1:1)
}
virtio_console_loopback =
"console:console;serialport:serialport:console:console"
{
1st round: CC|cs|s => first two consoles are used (1:N)
2nd round: CC|cS|S => first 2 consoles and first 2 serialports are used
(N:M)
}
virtio_console_perf = "serialport"
{
1st round: cc|cS|s => only the first serialport is used (1:1)
}
An example of "info qtree" with 3 consoles and 2 serialports:
...
dev: virtio-serial-pci, id "virtio-serial-pci2"
dev-prop: vectors = 32
dev-prop: class = 0x780
dev-prop: indirect_desc = off
dev-prop: max_ports = 31
bus-prop: addr = 06.0
bus-prop: romfile = <null>
bus-prop: rombar = 1
class Class 0780, addr 00:06.0, pci id 1af4:1003 (sub 1af4:0003)
bar 0: i/o at 0xc080 [0xc09f]
bar 1: mem at 0xf2042000 [0xf2042fff]
bus: virtio-serial-pci2.0
type virtio-serial-bus
dev: virtserialport, id "p4"
dev-prop: nr = 1
dev-prop: chardev = vs4
dev-prop: name = "serialport-4"
dev-prop-int: id: 1
dev-prop-int: guest_connected: 0
dev-prop-int: host_connected: 1
dev: virtio-serial-pci, id "virtio-serial-pci1"
dev-prop: vectors = 32
dev-prop: class = 0x780
dev-prop: indirect_desc = off
dev-prop: max_ports = 31
bus-prop: addr = 05.0
bus-prop: romfile = <null>
bus-prop: rombar = 1
class Class 0780, addr 00:05.0, pci id 1af4:1003 (sub 1af4:0003)
bar 0: i/o at 0xc060 [0xc07f]
bar 1: mem at 0xf2041000 [0xf2041fff]
bus: virtio-serial-pci1.0
type virtio-serial-bus
dev: virtserialport, id "p3"
dev-prop: nr = 1
dev-prop: chardev = vs3
dev-prop: name = "serialport-3"
dev-prop-int: id: 1
dev-prop-int: guest_connected: 0
dev-prop-int: host_connected: 1
dev: virtconsole, id "c2"
dev-prop: is_console = 1
dev-prop: nr = 0
dev-prop: chardev = vc2
dev-prop: name = "console-2"
dev-prop-int: id: 0
dev-prop-int: guest_connected: 1
dev-prop-int: host_connected: 0
dev: virtio-serial-pci, id "virtio-serial-pci0"
dev-prop: vectors = 32
dev-prop: class = 0x780
dev-prop: indirect_desc = off
dev-prop: max_ports = 31
bus-prop: addr = 04.0
bus-prop: romfile = <null>
bus-prop: rombar = 1
class Class 0780, addr 00:04.0, pci id 1af4:1003 (sub 1af4:0003)
bar 0: i/o at 0xc040 [0xc05f]
bar 1: mem at 0xf2040000 [0xf2040fff]
bus: virtio-serial-pci0.0
type virtio-serial-bus
dev: virtconsole, id "c1"
dev-prop: is_console = 1
dev-prop: nr = 1
dev-prop: chardev = vc1
dev-prop: name = "console-1"
dev-prop-int: id: 1
dev-prop-int: guest_connected: 1
dev-prop-int: host_connected: 0
dev: virtconsole, id "c0"
dev-prop: is_console = 1
dev-prop: nr = 0
dev-prop: chardev = vc0
dev-prop: name = "console-0"
dev-prop-int: id: 0
dev-prop-int: guest_connected: 1
dev-prop-int: host_connected: 0
...
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html