Before taking the template into use, some minor changes are required.
Open ssc600-kvm.xml in a text editor. For example vi <path to SSC600 SW package>/virtual_products/ssc600-kvm.xml.
The CPU configuration must be updated to match the available CPU cores on the host. The SSC600 SW requires 4 cores, also the emulator requires one additional core. Update the cpuset attributes to match available cores.
<vcpu placement='static'>4</vcpu>
<cputune>
<vcpupin vcpu='0' cpuset='15'/>
<vcpupin vcpu='1' cpuset='14'/>
<vcpupin vcpu='2' cpuset='13'/>
<vcpupin vcpu='3' cpuset='12'/>
<emulatorpin cpuset='11'/>
<vcpusched vcpus='0' scheduler='fifo' priority='50'/>
<vcpusched vcpus='1' scheduler='fifo' priority='50'/>
<vcpusched vcpus='2' scheduler='fifo' priority='50'/>
<vcpusched vcpus='3' scheduler='fifo' priority='50'/>
</cputune>
The path to the virtual disk must also be updated:
<disk type='file' device='disk'>
<driver name='qemu' type='raw' cache='none' io='threads'/>
<source file='/var/lib/libvirt/images/ssc600_disk.img'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</disk>
Update the path to the PTP status file if needed.
<filesystem type="mount" accessmode="mapped">
<driver type="path" wrpolicy="immediate"/>
<source dir="/var/lib/libvirt/images/ptp"/>
<target dir="ptp"/>
<readonly/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0"/>
</filesystem>
Also, the networking must be updated to use the correct interfaces. For the process bus(ses), trustGuestRxFilters attribute must be set to yes for the network traffic to be passed through to the virtual machine.
<interface type='bridge'>
<mac/>
<source bridge='mgmt-bridge'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</interface>
<interface type='direct' trustGuestRxFilters='yes'>
<mac/>
<source dev='enp5s0' mode='bridge'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
If a protection communication port is required, use PCI passthrough to attach the desired network interface to the virtual machine. Add the following configuration under the <devices> tree in the template.
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x…' bus='0x…' slot='0x…' function='0x…'/>
</source>
</hostdev>
To obtain the domain, bus, slot, and function parameters of a PCI device, use the virsh nodedev-dumpxml [dev id] command.
To identify available PCI devices on the host system, use the virsh nodedev-list --tree command.
For example, if eno5 is the desired interface for the protection communication port and virsh nodedev-list --tree prints:
Then, the device parameters can be obtained from the output of the virsh nodedev-dumpxml pci_0000_b2_00_0 command:
<device>
<name>pci_0000_b2_00_0</name>
<path>/sys/devices/pci0000:b0/0000:b0:02.0/0000:b2:00.0</path>
<parent>pci_0000_b0_02_0</parent>
<driver>
<name>igb</name>
</driver>
<capability type='pci'>
<domain>0</domain>
<bus>178</bus>
<slot>0</slot>
<function>0</function>
<product id='0x1521'>I350 Gigabit Network Connection</product>
<vendor id='0x8086'>Intel Corporation</vendor>
.
.
.
In this example, the eno5 interface can be attached to the virtual machine using the following configuration:
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0’ bus='0xb2’ slot='0x0' function='0x0’ />
</source>
</hostdev>
Once SSC600 SW has been started, the PCI device can be mapped as a protection communication port through the web interface.
See the libvirt template ssc600-kvm.xml (../template/kvm/ssc600-kvm.xml).
Once the template has been updated, import the SSC600 SW virtual machine using the virsh command:
virsh define ssc600-kvm.xml
<os>
<type arch="x86_64" machine="q35">hvm</type>
<boot dev="hd"/>
</os>
Supported machine types can be listed using qemu-system-x86_64 --machine help. q35* machine types are known to work.
If the command fails with chardev 'spicevmc' not supported without spice graphics add the below inside the devices XML block.
<graphics type="spice">
<listen type="none"/>
<image compression="off"/>
<gl enable="no"/>
</graphics>