arm64 vm boot failed when set num_pcie_ports to 28
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
Confirmed
|
Undecided
|
Kevin Zhao |
Bug Description
We are testing OpenStack on Phytium,FT2000PLUS
root@compute01:~# lscpu
Architecture: aarch64
Byte Order: Little Endian
CPU(s): 64
On-line CPU(s) list: 0-63
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 16
NUMA node(s): 8
Model name: Phytium,FT2000PLUS
CPU max MHz: 2200.0000
CPU min MHz: 1000.0000
BogoMIPS: 3600.00
NUMA node0 CPU(s): 0-7
NUMA node1 CPU(s): 8-15
NUMA node2 CPU(s): 16-23
NUMA node3 CPU(s): 24-31
NUMA node4 CPU(s): 32-39
NUMA node5 CPU(s): 40-47
NUMA node6 CPU(s): 48-55
NUMA node7 CPU(s): 56-63
Flags: fp asimd evtstrm crc32
The problem we initially met are we are not able to attach to more than 2 volumes (virtio-blk) if config drive enabled. We somehow work around the problem by using scsi-bus instead.
But we are still interesting to make plug more than 2 virtio-blk devices possible, and after some investigation I think `num_pcie_ports` might be too small (looks like it default to 9 if unspecified), and `pcie-root` does not allow hot plugging, and `pcie-root-port` does not allow more than 1 slots, so the only way I am thinking to mitigate the problem is to increase this option to maximum.
But the current problem is vms with previously working images failed to boot and when I try to virsh console, I only saw the uefi shell console.
Maybe this is not a bug for `code`, but I definitely think it is necessary to improve the doc and make it easier to understand these terms. I am glad to provide to additional details if asked. thanks
Changed in nova: | |
assignee: | nobody → Kevin Zhao (kevin-zhao) |
status: | New → Confirmed |
xml for the problematic vm is shown below
virsh # dumpxml 52 instance- 000002f6< /name> 809a8d51- 8ad0-4472- 9479-8d0554a662 65</uuid> openstack. org/xmlns/ libvirt/ nova/1. 0"> nova:name> sw-test2< /nova:name> nova:creationTi me>2020- 02-17 05:56:08< /nova:creationT ime>
<nova: memory> 2048</nova: memory>
<nova: disk>40< /nova:disk>
<nova: swap>0< /nova:swap>
<nova: ephemeral> 0</nova: ephemeral>
<nova: vcpus>1< /nova:vcpus> /nova:flavor> 1264ebf99809dc8 efe9e49b" >admin< /nova:user>
<nova: project uuid="5d51ef16f 6644af297156061 8c93f071" >admin< /nova:project> af9f-47af- b3a8-93a31bfc2e be"/> instance> >2097152< /memory> >2097152< /currentMemory> 'static' >1</vcpu> 1024</shares> /machine< /partition> 'virt-2. 11'>hvm< /type> >/usr/share/ AAVMF/AAVMF_ CODE.fd< /loader> /var/lib/ libvirt/ qemu/nvram/ instance- 000002f6_ VARS.fd< /nvram> passthrough' check='none'> 'delay' /> 'catchup' /> destroy< /on_poweroff> restart< /on_reboot> destroy< /on_crash> /usr/bin/ qemu-system- aarch64< /emulator> 33da-42ec- 9a8c-9293d545c3 37'/> vms/809a8d51- 8ad0-4472- 9479-8d0554a662 65_disk' > disk0'/ > pcie-root- port'> root-port' /> 'on'/> pcie-root- port'>
<domain type='kvm' id='52'>
<name>
<uuid>
<metadata>
<nova:instance xmlns:nova="http://
<nova:package version="18.2.3"/>
<
<
<nova:flavor name="ecs_1C2G40G">
<
<nova:owner>
<nova:user uuid="b4653e743
</nova:owner>
<nova:root type="image" uuid="d3fe4150-
</nova:
</metadata>
<memory unit='KiB'
<currentMemory unit='KiB'
<vcpu placement=
<cputune>
<shares>
</cputune>
<resource>
<partition>
</resource>
<os>
<type arch='aarch64' machine=
<loader readonly='yes' type='pflash'
<nvram>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<gic version='2'/>
</features>
<cpu mode='host-
<topology sockets='1' cores='1' threads='1'/>
</cpu>
<clock offset='utc'>
<timer name='pit' tickpolicy=
<timer name='rtc' tickpolicy=
</clock>
<on_poweroff>
<on_reboot>
<on_crash>
<devices>
<emulator>
<disk type='network' device='disk'>
<driver name='qemu' type='raw' cache='writeback' discard='unmap'/>
<auth username='cinder'>
<secret type='ceph' uuid='457eb676-
</auth>
<source protocol='rbd' name='nova.
<host name='172.16.22.67' port='6789'/>
<host name='172.16.22.68' port='6789'/>
<host name='172.16.22.69' port='6789'/>
</source>
<target dev='vda' bus='virtio'/>
<alias name='virtio-
<address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
</disk>
<controller type='usb' index='0' model='qemu-xhci'>
<alias name='usb'/>
<address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
</controller>
<controller type='pci' index='0' model='pcie-root'>
<alias name='pcie.0'/>
</controller>
<controller type='pci' index='1' model='
<model name='pcie-
<target chassis='1' port='0x8'/>
<alias name='pci.1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0' multifunction=
</controller>
<controller type='pci' index='2' model='
<...