Bug 1601318
Summary: | Failed to define/create guest with vf as hostdev interface with boot order | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | Red Hat Enterprise Linux 7 | Reporter: | chhu | ||||||
Component: | libvirt | Assignee: | Laine Stump <laine> | ||||||
Status: | CLOSED ERRATA | QA Contact: | chhu | ||||||
Severity: | medium | Docs Contact: | |||||||
Priority: | urgent | ||||||||
Version: | 7.6 | CC: | dyuan, lmen, meili, mtessun, xuzhang, yafu, yalzhang | ||||||
Target Milestone: | rc | Keywords: | Regression | ||||||
Target Release: | --- | ||||||||
Hardware: | x86_64 | ||||||||
OS: | Linux | ||||||||
Whiteboard: | |||||||||
Fixed In Version: | libvirt-4.5.0-10.el7 | Doc Type: | If docs needed, set a value | ||||||
Doc Text: | Story Points: | --- | |||||||
Clone Of: | |||||||||
: | 1630393 (view as bug list) | Environment: | |||||||
Last Closed: | 2018-10-30 09:58:24 UTC | Type: | Bug | ||||||
Regression: | --- | Mount Type: | --- | ||||||
Documentation: | --- | CRM: | |||||||
Verified Versions: | Category: | --- | |||||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||||
Cloudforms Team: | --- | Target Upstream Version: | |||||||
Embargoed: | |||||||||
Bug Depends On: | |||||||||
Bug Blocks: | 1630393 | ||||||||
Attachments: |
|
Created attachment 1459053 [details]
libvirtd log
modify the xml to set boot order in hostdev type interface also report error as below: # virsh edit yal error: unsupported configuration: boot order '1' used for more than one device Failed. Try again? [y,n,i,f,?]: The problem is in virDomainDefCollectBootOrder, which was added in commit 5b75a4, first appearing libvirt-4.4.0, and is called for every device. The oddity is that <interface type='hostdev'> is on both the network device list *and* on the hostdev device list, so it gets checked twice, and the 2nd time is incorrectly seen as a conflict. Fix posted upstream: https://www.redhat.com/archives/libvir-list/2018-September/msg00226.html Fix pushed upstream: commit 7ea7342996d74591e00bcbf14b1eb3995f77a199 Author: Laine Stump <laine> Date: Thu Sep 6 21:09:45 2018 -0400 conf: correct false boot order error during domain parse Test on packages: libvirt-4.5.0-10.el7.x86_64 qemu-kvm-rhev-2.12.0-16.el7.x86_64 Test steps: 1. VF as hostdev interface + boot order: PASSED 1) Prepare guest with xml as below: <os> <type arch='x86_64' machine='pc-i440fx-rhel7.6.0'>hvm</type> <bootmenu enable='yes' timeout='3000'/> <bios useserial='yes' rebootTimeout='3000'/> </os> ...... <interface type='hostdev' managed='yes'> <mac address='00:16:3e:77:e2:ed'/> <source> <address type='pci' domain='0x0000' bus='0x04' slot='0x10' function='0x2'/> </source> <boot order='1'/> <rom bar='on' file='/usr/share/ipxe/808610ed.rom'/> </interface> 2) Start the guest, and use virt-viewer to choose the iPXE to boot, it can get dhcp ip and boot from network. 3) Change the bootmenu enable='no', repeat 1)-2), no boot menu displayed and the guest boot from network automatically. 4) Delete the <bootmenu/> element, repeat 1)~2), no boot menu displayed and the guest boot from network automatically. 2. VF as hostdev interface + boot dev: PASSED 1) Prepare guest with xml as below: <os> <type arch='x86_64' machine='pc-i440fx-rhel7.6.0'>hvm</type> <boot dev='network'/> <bootmenu enable='yes' timeout='3000'/> <bios useserial='yes' rebootTimeout='3000'/> </os> ...... <interface type='hostdev' managed='yes'> <mac address='00:16:3e:77:e2:ed'/> <source> <address type='pci' domain='0x0000' bus='0x04' slot='0x10' function='0x2'/> </source> <rom bar='on' file='/usr/share/ipxe/808610ed.rom'/> </interface> 2) Do steps as above 1)-4) in step1. 3. PF passthrough as device + boot order: PASSED 1) Prepare guest with xml as below: <os> <type arch='x86_64' machine='pc-i440fx-rhel7.6.0'>hvm</type> <bootmenu enable='yes' timeout='6000'/> <bios useserial='yes' rebootTimeout='3000'/> </os> ...... <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x04' slot='0x00' function='0x0'/> </source> <boot order='1'/> <rom bar='on' file='/usr/share/ipxe/808610fb.rom'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </hostdev> 2) Do steps as above 1)-4) in step1. Thanks jiyan verified this bug with RHV test scenarios. Set the bug status to "VERIFIED", according to comment11-12 and the test with RHV scenarios. Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2018:3113 |
Created attachment 1459049 [details] guest xml Description of problem: Failed to define/create guest with vf as hostdev interface with boot order Version-Release number of selected component (if applicable): libvirt-4.5.0-3.el7.x86_64 qemu-kvm-rhev-2.12.0-7.el7.x86_64 kernel: 3.10.0-918.el7.x86_64 How reproducible: 100% Steps to Reproduce: 1. Prepare an env with 82576 VF, and guest xml as below: <domain type='kvm'> <name>r7</name> <memory unit='KiB'>2048576</memory> <currentMemory unit='KiB'>2048576</currentMemory> <vcpu placement='static' cpuset='0-1'>2</vcpu> <resource> <partition>/machine</partition> </resource> <os> <type arch='x86_64' machine='pc-i440fx-rhel7.6.0'>hvm</type> <bootmenu enable='yes' timeout='3000'/> <bios useserial='yes' rebootTimeout='3000'/> </os> ...... <interface type='hostdev' managed='yes'> <mac address='00:16:3e:77:e2:ed'/> <source> <address type='pci' domain='0x0000' bus='0x08' slot='0x10' function='0x3'/> </source> <boot order='1'/> <rom bar='on' file='/usr/share/ipxe/808610ca.rom'/> </interface> # cat t.xml|grep boot <bootmenu enable='yes' timeout='3000'/> <bios useserial='yes' rebootTimeout='3000'/> <on_reboot>restart</on_reboot> <boot order='1'/> # cat t.xml|grep order <boot order='1'/> # rpm -ql ipxe-roms|grep 808610ca.rom /usr/share/ipxe/808610ca.rom 2. Try to define/create a guest with VF, failed with error message: # virsh define t.xml error: Failed to define domain from t.xml error: unsupported configuration: boot order '1' used for more than one device # virsh create t.xml error: Failed to create domain from t.xml error: unsupported configuration: boot order '1' used for more than one device Actal results: In step2: get error message Expected results: In step3: define/create guest successfully Additional info: - guest xml - libvirtd log