Bug 1274588
| Summary: | Can't boot up guest os from passthrough usb device | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | Xujun Ma <xuma> |
| Component: | SLOF | Assignee: | Thomas Huth <thuth> |
| Status: | CLOSED ERRATA | QA Contact: | Virtualization Bugs <virt-bugs> |
| Severity: | unspecified | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | 7.2 | CC: | hannsj_uhl, knoel, michen, mrezanin, qzhang, thuth, virt-maint, xianwang, xuma, zhengtli |
| Target Milestone: | rc | ||
| Target Release: | --- | ||
| Hardware: | ppc64le | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | qemu-slof-20151103 | Doc Type: | Bug Fix |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2016-11-04 04:31: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: | |
| Embargoed: | |||
| Bug Depends On: | 1279954 | ||
| Bug Blocks: | 1308609, 1359843 | ||
|
Description
Xujun Ma
2015-10-23 05:24:23 UTC
Is there an error message or unusual output from SLOF when the problem occurs? Could you please attach a console log (preferably text when starting with "-nographic", but screenshot is ok, too)? (In reply to Thomas Huth from comment #2) > Is there an error message or unusual output from SLOF when the problem > occurs? Could you please attach a console log (preferably text when starting > with "-nographic", but screenshot is ok, too)? yes ,it is .the whole output as follows: [root@ibm-p8-rhevm-08 ~]# sh usb.sh SLOF ********************************************************************** QEMU Starting Build Date = Sep 18 2015 06:25:39 FW Version = mockbuild@ release 20150313 Press "s" to enter Open Firmware. Press F12 for boot menu. Populating /vdevice methods Populating /vdevice/vty@71000000 Populating /vdevice/nvram@71000001 Populating /vdevice/v-scsi@71000002 SCSI: Looking for devices 8200000000000000 CD-ROM : "QEMU QEMU CD-ROM 2.3." Populating /pci@800000020000000 00 1800 (D) : 8086 24cd serial bus [ usb-ehci ] 00 1000 (D) : 1af4 1000 virtio [ net ] 00 0800 (D) : 106b 003f serial bus [ usb-ohci ] 00 0000 (D) : 1234 1111 qemu vga No NVRAM common partition, re-initializing... Installing QEMU fb Scanning USB EHCI: Initializing USB Storage SCSI: Looking for devices USB-DISK: CSW signature invalid USB-DISK: CSW signature invalid OHCI: initializing USB Keyboard USB mouse USB HUB No console specified using screen & keyboard Welcome to Open Firmware Copyright (c) 2004, 2011 IBM Corporation All rights reserved. This program and the accompanying materials are made available under the terms of the BSD License available at http://www.opensource.org/licenses/bsd-license.php Trying to load: from: /pci@800000020000000/usb@3/usb-host@1 ... E3405: No such device Trying to load: from: /pci@800000020000000/ethernet@2 ... E3403: Bad executable: E3406: Client application returned an error. ..`. .. ....... .. ...... ....... ..`...`''.`'. .''``````..''. .`''```''`. `''`````` .`` .:' ': `''..... .''. ''` .''..''....... ``.':.';. ``````''`.''. .''. ''``''`````'` ``.':':` .....`''.`'`...... `'`.....`''.`'` .`.`'`` .'`'`````. ``'''''' ``''`'''`. `'` Type 'boot' and press return to continue booting the system. Type 'reset-all' and press return to reboot the system. ..`. .. ....... .. ...... ....... ..`...`''.`'. .''``````..''. .`''```''`. `''`````` .`` .:' ': `''..... .''. ''` .''..''....... ``.':.';. ``````''`.''. .''. ''``''`````'` ``.':':` .....`''.`'`...... `'`.....`''.`'` .`.`'`` .'`'`````. ``'''''' ``''`'''`. `'` Type 'boot' and press return to continue booting the system. Type 'reset-all' and press return to reboot the system. Ready! 0 > I just had a quick try on our P8 server and it seems to work with the USB disk that we've got plugged in there:
# lsusb -v
Bus 002 Device 002: ID 0781:5583 SanDisk Corp.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 3.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 9
idVendor 0x0781 SanDisk Corp.
idProduct 0x5583
bcdDevice 1.00
iManufacturer 1 SanDisk
iProduct 2 Ultra Fit
iSerial 3 4C530001090822110352
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 44
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 224mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 8 Mass Storage
bInterfaceSubClass 6 SCSI
bInterfaceProtocol 80 Bulk-Only
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 0
bMaxBurst 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 0
bMaxBurst 15
Binary Object Store Descriptor:
bLength 5
bDescriptorType 15
wTotalLength 22
bNumDeviceCaps 2
USB 2.0 Extension Device Capability:
bLength 7
bDescriptorType 16
bDevCapabilityType 2
bmAttributes 0x00000002
Link Power Management (LPM) Supported
SuperSpeed USB Device Capability:
bLength 10
bDescriptorType 16
bDevCapabilityType 3
bmAttributes 0x00
wSpeedsSupported 0x000e
Device can operate at Full Speed (12Mbps)
Device can operate at High Speed (480Mbps)
Device can operate at SuperSpeed (5Gbps)
bFunctionalitySupport 1
Lowest fully-functional device speed is Full Speed (12Mbps)
bU1DevExitLat 10 micro seconds
bU2DevExitLat 256 micro seconds
Device Status: 0x0000
(Bus Powered)
# rpm -qa | grep SLOF
SLOF-20150313-5.gitc89b0df.el7.noarch
# rpm -qa | grep qemu-kvm-rhev
qemu-kvm-rhev-2.3.0-31.el7_2.3.ppc64le
# uname -r
3.10.0-327.el7.ppc64le
/usr/libexec/qemu-kvm -m 16G -smp 8 -nographic -usbdevice tablet -netdev user,id=net0 -device virtio-net-pci,netdev=net0,bootindex=3,id=net0,mac=24:be:05:11:92:11 -device usb-ehci,id=usbctr -device usb-host,hostbus=2,hostaddr=2,id=hostdev0 -device virtio-scsi-pci -device scsi-cd,id=scsi-cd1,drive=scsi-cd1-dr,bootindex=4 -drive file=/var/lib/libvirt/images/isos/RHEL-6.7-20150304.0-Server-ppc64-dvd1.iso,if=none,id=scsi-cd1-dr,readonly=on,format=raw,cache=none
SLOF **********************************************************************
QEMU Starting
Build Date = Sep 18 2015 06:25:39
FW Version = mockbuild@ release 20150313
Press "s" to enter Open Firmware.
Populating /vdevice methods
Populating /vdevice/vty@71000000
Populating /vdevice/nvram@71000001
Populating /pci@800000020000000
00 2000 (D) : 1af4 1004 virtio [ scsi ]
Populating /pci@800000020000000/scsi@4
SCSI: Looking for devices
100000000000000 CD-ROM : "QEMU QEMU CD-ROM 2.3."
00 1800 (D) : 8086 24cd serial bus [ usb-ehci ]
00 1000 (D) : 1af4 1000 virtio [ net ]
00 0800 (D) : 106b 003f serial bus [ usb-ohci ]
00 0000 (D) : 1234 1111 qemu vga
No NVRAM common partition, re-initializing...
Installing QEMU fb
Scanning USB
EHCI: Initializing
ptr 0x7E4F3019 desc_type 48
ptr 0x7E4F3026 desc_type 48
USB Storage
SCSI: Looking for devices
101000000000000 DISK : "SanDisk Ultra Fit 1.00"
OHCI: initializing
USB Keyboard
USB mouse
USB HUB
No console specified using screen & keyboard
... the only strange thing here are these "ptr 0x..." messages, but I guess these are only left-over debug strings.
Could you please provide the output of "lsusb -v" for that USB disk? Also, does it behave differently when use a different kind of USB host controller, i.e. "-device pci-ohci" instead of "-device usb-ehci" ? Or "-device nec-usb-xhci" ? I've got to correct myself: Even though I do not get that "CSW signature invalid" message as you did, it seems like I can also not load a file in SLOF from the passthrough USB disk. However, it also does not work in Linux in the guest when I start Linux from another device in the guest, I only get the following output in the dmesg log: [ 1.828196] usb 1-1: new full-speed USB device number 2 using ohci-pci [ 2.588163] usb 1-1: device descriptor read/64, error 18 [ 3.438161] usb 1-1: device descriptor read/64, error 18 [ 4.288203] usb 1-1: new full-speed USB device number 3 using ohci-pci [ 5.038220] usb 1-1: device descriptor read/64, error 18 [ 5.888160] usb 1-1: device descriptor read/64, error 18 [ 6.738160] usb 1-1: new full-speed USB device number 4 using ohci-pci [ 6.769459] usb 1-1: Invalid ep0 maxpacket: 9 [ 7.508159] usb 1-1: new full-speed USB device number 5 using ohci-pci [ 7.539503] usb 1-1: Invalid ep0 maxpacket: 9 [ 7.548173] usb usb1-port1: unable to enumerate USB device Could you please check whether the passthrough USB disk is working in Linux for you when you start the guest OS from another disk? Ok, those "device descriptor read/64, error 18" error messages indicate that the emulated host controller does not match the host's USB controller. It works in Linux if I use "-device nec-usb-xhci" - since my host also features an XHCI controller. Could you please check what kind of USB controller is used by your host machine (e.g. with "lspci | grep -i USB")? And then use the same controller type for the guest and check whether the device is working in Linux in the guest? Anyway, when I specify "-device nec-usb-xhci" (and thus the disk is later working in Linux), the SLOF firmware suddenly does not detect the USB disk anymore. So at least here is definitely a bug ... Ok, it works for me when I use the SLOF version from upstream (with an additional fix for the FAT filesystem that was required for the USB disk that is attached to our system, see https://lists.ozlabs.org/pipermail/slof/2015-December/000448.html). There have been a couple of XHCI related updates in SLOF between the version that we use in RHEL 7.2 and the current upstream version, so one of these must have fixed the remaining issue that I was seeing. We should get this with a rebase of SLOF into downstream, too, so I'm adding this bug to the list of bugs that are blocked by BZ 1279954. FWIW, here's the console output of my successful boot from an USB passthrough disk:
# /usr/libexec/qemu-kvm -m 4G -smp 2 -vga none -nographic -device nec-usb-xhci,id=usbctr -device usb-host,hostbus=2,hostaddr=2,id=hostdev0 -bios ~thuth/boot_rom.bin
SLOF **********************************************************************
QEMU Starting
Build Date = Dec 2 2015 15:47:26
FW Version = git-b4c93802a5b2c72f
Press "s" to enter Open Firmware.
Populating /vdevice methods
Populating /vdevice/vty@71000000
Populating /vdevice/nvram@71000001
Populating /vdevice/l-lan@71000002
Populating /vdevice/v-scsi@71000003
SCSI: Looking for devices
8200000000000000 CD-ROM : "QEMU QEMU CD-ROM 2.3."
Populating /pci@800000020000000
00 0000 (D) : 1033 0194 serial bus [ usb-xhci ]
No NVRAM common partition, re-initializing...
Scanning USB
XHCI: Initializing
ptr 0x7E4E8019 desc_type 48
ptr 0x7E4E8026 desc_type 48
USB Storage
SCSI: Looking for devices
101000000000000 DISK : "SanDisk Ultra Fit 1.00"
Using default console: /vdevice/vty@71000000
Welcome to Open Firmware
Copyright (c) 2004, 2011 IBM Corporation All rights reserved.
This program and the accompanying materials are made available
under the terms of the BSD License available at
http://www.opensource.org/licenses/bsd-license.php
..`. .. ....... .. ...... .......
..`...`''.`'. .''``````..''. .`''```''`. `''``````
.`` .:' ': `''..... .''. ''` .''..''.......
``.':.';. ``````''`.''. .''. ''``''`````'`
``.':':` .....`''.`'`...... `'`.....`''.`'`
.`.`'`` .'`'`````. ``'''''' ``''`'''`. `'`
Type 'boot' and press return to continue booting the system.
Type 'reset-all' and press return to reboot the system.
Ready!
0 > devalias
disk : /pci@800000020000000/usb@0/storage@1/disk@101000000000000
usb0 : /pci@800000020000000/usb@0
scsi : /vdevice/v-scsi@71000003
cdrom : /vdevice/v-scsi@71000003/disk@8200000000000000
net : /vdevice/l-lan@71000002
nvram : /vdevice/nvram@71000001
hvterm : /vdevice/vty@71000000 ok
0 > boot disk:1,ppc64.img
Trying to load: from: /pci@800000020000000/usb@0/storage@1/disk@101000000000000:1,ppc64.img ... Successfully loaded
zImage starting: loaded at 0x00400000 (sp: 0x031e0fb0)
Allocating 0x1925074 bytes for kernel ...
OF version = 'SLOF,thuth'
Trying to claim from 0x400000 to 0x31ecdfc (0x2decdfc) got ffffffff
gunzipping (0x03200000 <- 0x0040c000:0x00b3f6cb)...done 0x1680000 bytes
Attached initrd image at 0x00b40000-0x031df1e0
Allocating 0x269f1e0 bytes for initrd ...
Relocating initrd 0x4b26000 <- 0x00b40000 (0x269f1e0 bytes)
initrd head: 0xfd377a58
Linux/PowerPC load:
Finalizing device tree... using OF tree (promptr=7dca04c4)
OF stdout device is: /vdevice/vty@71000000
Preparing to boot Linux version 4.2.3-300.fc23.ppc64 (mockbuild.fedoraproject.org) (gcc version 5.1.1 20150618 (Red Hat 5.1.1-4) (GCC) ) #1 SMP Fri Oct 9 15:02:21 UTC 2015
...
I'm sorry to respond late,i need time to ask for a usb stick by creating ticket. the issue seems to be solved,what else do i need to do? (In reply to Xujun Ma from comment #10) > the issue seems to be solved,what else do i need to do? Could you maybe confirm that the host you were using has an XHCI controller as USB interface, not an EHCI? Then I think we can assume that this issue is solved (i.e. the controller type in the guest should match the controller type in the host). (In reply to Thomas Huth from comment #11) > (In reply to Xujun Ma from comment #10) > > the issue seems to be solved,what else do i need to do? > > Could you maybe confirm that the host you were using has an XHCI controller > as USB interface, not an EHCI? Then I think we can assume that this issue is > solved (i.e. the controller type in the guest should match the controller > type in the host). yes,my host only has an XHCI controller:Texas Instruments TUSB73x0 SuperSpeed USB 3.0 xHCI Host Controller,and it will display error message "ptr 0x7E4F3019 desc_type 48" if use usb-ehci in guest,and it can't be found as a data disk in a booted guest,the dmesg displays info like "device descriptor read/64, error 18". it will be normal if i use nec-usb-xhci controler in guest,the usb stick can be found and there are none of any error message,but it still can't boot os from the passthough usb stick. This bug was accidentally moved from POST to MODIFIED via an error in automation, please see mmccune with any questions Fix included in SLOF-20160223-1.gitdbbfda4.el7. Reproduced the issue on old version: Version-Release number of selected component (if applicable): host:kernel-3.10.0-327.18.2.el7.ppc64le qemu-kvm-rhev-2.3.0-31.el7.ppc64le SLOF-20150313-5.gitc89b0df.el7.noarch guest:kernel-3.10.0-327.el7.ppc64le Steps to Reproduce: 1.boot up guest and install os with command /usr/libexec/qemu-kvm \ -m 16G -smp 16 -monitor stdio -qmp tcp::8888,server,nowait -vnc :25\ -usbdevice tablet \ -netdev tap,id=tap0,script=/etc/qemu-ifup \ -device virtio-net-pci,netdev=tap0,bootindex=3,id=net0,mac=24:be:05:11:92:11 \ -device usb-ehci,id=usbctr \ -device usb-host,hostbus=1,hostaddr=2,id=hostdev0 \ -device virtio-scsi-pci\ -device scsi-cd,id=scsi-cd1,drive=scsi-cd1-dr,bootindex=4 \ -drive file=RHEL-7.2-20151030.0-Server-ppc64-dvd1.iso,if=none,id=scsi-cd1-dr,readonly=on,format=raw,cache=none \ 2.boot up guest os from usb Actual results: can't boot up guest os ,and it stop at slof Verified the issue on the latest build: Version-Release number of selected component (if applicable): qemu-kvm-rhev-2.6.0-5.el7.ppc64le SLOF-20160223-4.gitdbbfda4.el7.noarch host:kernel-3.10.0-327.18.2.el7.ppc64le guest:kernel-3.10.0-327.el7.ppc64le 1.boot up guest and install os with command /usr/libexec/qemu-kvm \ -m 16G -smp 16 -monitor stdio -qmp tcp::8888,server,nowait -vnc :25\ -usbdevice tablet \ -netdev tap,id=tap0,script=/etc/qemu-ifup \ -device virtio-net-pci,netdev=tap0,bootindex=3,id=net0,mac=24:be:05:11:92:11 \ -device usb-ehci,id=usbctr \ -device usb-host,hostbus=1,hostaddr=2,id=hostdev0 \ -device virtio-scsi-pci\ -device scsi-cd,id=scsi-cd1,drive=scsi-cd1-dr,bootindex=4 \ -drive file=RHEL-7.2-20151030.0-Server-ppc64-dvd1.iso,if=none,id=scsi-cd1-dr,readonly=on,format=raw,cache=none \ 2.boot up guest os from usb Actual results:can boot up of form usb.the bug was fixed but there is another issue and it's different from usb data disk(Bug 1273717 ). the issue is: host will lost usb device after boot and quit guest twice. the usb stick won't appear again after reboot host. there are some message in host log: [ 0.882164] usb 1-2: new high-speed USB device number 2 using xhci_hcd [ 16.002226] usb 1-2: device descriptor read/64, error -110 [ 31.232201] usb 1-2: device descriptor read/64, error -110 [ 31.462161] usb 1-2: new high-speed USB device number 3 using xhci_hcd [ 46.582196] usb 1-2: device descriptor read/64, error -110 [ 61.812196] usb 1-2: device descriptor read/64, error -110 [ 62.042163] usb 1-2: new high-speed USB device number 4 using xhci_hcd [ 67.062291] usb 1-2: device descriptor read/8, error -110 [ 72.192259] usb 1-2: device descriptor read/8, error -110 [ 72.422160] usb 1-2: new high-speed USB device number 5 using xhci_hcd [ 77.442291] usb 1-2: device descriptor read/8, error -110 [ 82.572292] usb 1-2: device descriptor read/8, error -110 [ 82.682167] usb usb1-port2: unable to enumerate USB device 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://rhn.redhat.com/errata/RHEA-2016-2355.html |