Bug 1387602

Summary: Disabling vfio-platform will break ppc64 qemu-kvm-rhev
Product: Red Hat Enterprise Linux 7 Reporter: Miroslav Rezanina <mrezanin>
Component: qemu-kvm-rhevAssignee: Miroslav Rezanina <mrezanin>
Status: CLOSED NOTABUG QA Contact: Virtualization Bugs <virt-bugs>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 7.4CC: chayang, juzhang, knoel, qzhang, virt-maint
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-10-24 11:28:42 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: 1387600    

Description Miroslav Rezanina 2016-10-21 11:05:09 UTC
Description of problem:

We disabled vfio-platform in RHEL 7.3. However, removing it in QEMU 2.7.0 will cause qemu-kvm on ppc64 to fail.


Version-Release number of selected component (if applicable):
qemu-kvm-rhev (2.7.0 based)

How reproducible:

Can be reproduced using upstream QEMU with applying commit e305bb4 (remove platform.o from hw/vfio/Makefile.objs)

Steps to Reproduce:
1.
2.
3.

Actual results:

qemu-kvm fails to start

Expected results:

qemu-kvm works correctly
Additional info:

Comment 1 Laurent Vivier 2016-10-21 13:37:33 UTC
ERROR: qom/object.c:168:type_get_parent: assertion failed: (type->parent_type != NULL)
...
#4  0x0000555555a636d9 in type_get_parent (type=<optimized out>, 
    type=<optimized out>)
    at qom/object.c:168
#5  0x0000555555a63a71 in type_initialize (ti=ti@entry=0x555556e27300)
    at qom/object.c:278
#6  0x0000555555a6429d in type_initialize (ti=0x555556e27300)
    at qom/object.c:812
#7  object_class_foreach_tramp (key=<optimized out>, value=0x555556e27300, 
    opaque=0x7fffffffd9f0)
    at qom/object.c:799
...
#11 0x0000555555901a8f in find_default_machine ()
    at /home/lvivier/Projects/qemu-upstream-2/vl.c:1510
#12 0x0000555555780c74 in select_machine ()
    at /home/lvivier/Projects/qemu-upstream-2/vl.c:2776
#13 main (argc=1, argv=<optimized out>, envp=<optimized out>)
    at /home/lvivier/Projects/qemu-upstream-2/vl.c:4052
...

#5  0x0000555555a63a71 in type_initialize (ti=ti@entry=0x555556e27300)
    at qom/object.c:278
278	    parent = type_get_parent(ti);
(gdb) p *ti
$3 = {name = 0x555556e13be0 "vfio-calxeda-xgmac", class_size = 224, 
  instance_size = 952, class_init = 
    0x55555581a960 <vfio_calxeda_xgmac_class_init>, class_base_init = 0x0, 
  class_finalize = 0x0, class_data = 0x0, instance_init = 0x0, 
  instance_post_init = 0x0, instance_finalize = 0x0, abstract = false, 
  parent = 0x555556d940a0 "vfio-platform", parent_type = 0x0, 
  class = 0x555556e84380, num_interfaces = 0, interfaces = {{
      typename = 0x0} <repeats 32 times>}}

If you remove platform, you must also remove children of platform:

diff --git a/hw/vfio/Makefile.objs b/hw/vfio/Makefile.objs
index c25e32b..e78d433 100644
--- a/hw/vfio/Makefile.objs
+++ b/hw/vfio/Makefile.objs
@@ -1,8 +1,5 @@
 ifeq ($(CONFIG_LINUX), y)
 obj-$(CONFIG_SOFTMMU) += common.o
 obj-$(CONFIG_PCI) += pci.o pci-quirks.o
-obj-$(CONFIG_SOFTMMU) += platform.o
-obj-$(CONFIG_SOFTMMU) += calxeda-xgmac.o
-obj-$(CONFIG_SOFTMMU) += amd-xgbe.o
 obj-$(CONFIG_SOFTMMU) += spapr.o
 endif

So you must also backport:

81b2836 Remove unsupported VFIO devices from QEMU

Comment 2 Miroslav Rezanina 2016-10-24 11:28:42 UTC
Not a bug, just missing patch during early stage of rebase.