Bug 1295638

Summary: Migration also success with passthrough usb device to the guest
Product: Red Hat Enterprise Linux 6 Reporter: jingzhao <jinzhao>
Component: qemu-kvmAssignee: Gerd Hoffmann <kraxel>
Status: CLOSED NOTABUG QA Contact: Virtualization Bugs <virt-bugs>
Severity: high Docs Contact:
Priority: high    
Version: 6.8CC: ailan, chayang, juzhang, kraxel, mkenneth, rbalakri, virt-maint
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-01-12 08:09:47 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:

Description jingzhao 2016-01-05 05:03:36 UTC
Description of problem:
Migration also success with passthrough usb device to the guest


Version-Release number of selected component (if applicable):
kernel version:2.6.32-595.el6.x86_64
qemu-kvm-0.12.1.2-2.482.el6.x86_64

How reproducible:
3/3


Steps to Reproduce:
1.Boot guest in src with following cli:
/usr/libexec/qemu-kvm \
-name rhel6 \
-machine rhel6.6.0,accel=kvm \
-realtime mlock=off \
-cpu Westmere \
-m 6G   \
-smp 4,cores=2,threads=1,sockets=2  \
-uuid 49a3438a-70a3-4ba8-92ce-3a05e0934608 \
-nodefaults \
-rtc base=utc,driftfix=slew \
-monitor unix:/tmp/monitor-unix,server,nowait \
-global kvm-pit.lost_tick_policy=discard \
-global PIIX4_PM.disable_s3=1 \
-global PIIX4_PM.disable_s4=1 \
-boot order=c,menu=on,strict=on \
-readconfig /home/ich9-ehci-uhci.cfg \
-device usb-kbd,id=kbd1,bus=ehci.0 \
-device usb-host,hostbus=3,hostaddr=4,bus=ehci.0,id=hostdev,port=5 \
-drive file=/mnt/usb/usb-storage.qcow2,if=none,id=storage0,media=disk,cache=none,format=qcow2 \
-device usb-storage,drive=storage0,removable=on,bus=ehci.0,id=storage0,bootindex=1 \
-drive file=/mnt/usb/win10usb.img,if=none,id=ide,media=disk,cache=none,format=raw \
-device ide-drive,drive=ide,id=ide0,bootindex=0 \
-cdrom /usr/share/virtio-win/virtio-win.iso \
-netdev tap,id=hostnet1  \
-device e1000,netdev=hostnet1,id=virtio-net-pci1,mac=b6:2f:a8:85:72:6c,bus=pci.0,multifunction=off \
-monitor stdio \
-qmp tcp:0:4467,server,nowait -serial unix:/tmp/ttym,server,nowait \
-vga qxl \
-spice port=5911,addr=0.0.0.0,disable-ticketing,seamless-migration=on \
-k en-us \
-chardev spicevmc,id=charredir1,name=usbredir \
-device usb-redir,chardev=charredir1,id=redir1,bus=ehci.0 \
-chardev spicevmc,id=charredir2,name=usbredir \
-device usb-redir,chardev=charredir2,id=redir2,bus=ehci.0 \


2. Boot guest in dest with "-incoming tcp:0:5800"

3. In src, check the device which passthrough from host work well and executed monitor command "migrate -d tcp: ipaddress:5800"


Actual results:
Migrated successfully and guest which in dest work well

Expected results:
Migrated failed and for "state blocked by non-migratable device"



Additional info:

Comment 2 Gerd Hoffmann 2016-01-12 08:09:47 UTC
> Actual results:
> Migrated successfully and guest which in dest work well

Works as intended.  Live migration support has been added to usb-host in one of the 6.x minor releases (it is not fully transparent to the guest though, you should see the guest re-initializing the device in the guest kernel log).

> Expected results:
> Migrated failed and for "state blocked by non-migratable device"

Only for old RHEL-6.x versions (with x <= 3 IIRC).

Comment 3 jingzhao 2016-01-12 08:37:55 UTC
(In reply to Gerd Hoffmann from comment #2)
> > Actual results:
> > Migrated successfully and guest which in dest work well
> 
> Works as intended.  Live migration support has been added to usb-host in one
> of the 6.x minor releases (it is not fully transparent to the guest though,
> you should see the guest re-initializing the device in the guest kernel log).

--Gerd, migrated successfully after RHEL-6.3 version according your reply,  I think it's not the intended result for migrated with passthrough device and I think migrated should failed with passthrough device. Also, I tried it on rhel7 host and migrated failed in rhel7 host(qemu-img-rhev-2.3.0-31.el7_2.3.x86_64). could you help me to confirm it? which test result should the expected test result?

Thanks
Jing

> 
> > Expected results:
> > Migrated failed and for "state blocked by non-migratable device"
> 
> Only for old RHEL-6.x versions (with x <= 3 IIRC).

Comment 4 Gerd Hoffmann 2016-01-12 09:56:02 UTC
> --Gerd, migrated successfully after RHEL-6.3 version according your reply, 
> I think it's not the intended result for migrated with passthrough device
> and I think migrated should failed with passthrough device.

No, it should work.

> Also, I tried it
> on rhel7 host and migrated failed in rhel7
> host(qemu-img-rhev-2.3.0-31.el7_2.3.x86_64). could you help me to confirm
> it?

On RHEL-7 it should work too (and does here on a quick test).

Comment 5 jingzhao 2016-01-13 07:17:43 UTC
(In reply to Gerd Hoffmann from comment #4)
> > --Gerd, migrated successfully after RHEL-6.3 version according your reply, 
> > I think it's not the intended result for migrated with passthrough device
> > and I think migrated should failed with passthrough device.
> 
> No, it should work.
> 
> > Also, I tried it
> > on rhel7 host and migrated failed in rhel7
> > host(qemu-img-rhev-2.3.0-31.el7_2.3.x86_64). could you help me to confirm
> > it?
> 
> On RHEL-7 it should work too (and does here on a quick test).

--[jingzhao] Gerd, used qemu-img-rhev-2.3.0-31.el7_2.5.x86_64 and 3.10.0-327.5.1.el7.x86_64 and didn't reproduce the issue. thanks for your confirm.