[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] xhci issues with Logitech, Inc. Headset H340 audio device
From: |
Dmitry Fleytman |
Subject: |
[Qemu-devel] xhci issues with Logitech, Inc. Headset H340 audio device |
Date: |
Tue, 8 Aug 2017 18:28:51 +0300 |
Hi Gerd, qemu-devel
We are trying to use USB host device assignment to propagate
Logitech H340 headset to QEMU guest with virtual XHCI controller
running Windows 10.
For some reason headphone function of the device does not work -
guest OS claims that the device does not complete requests.
We have a bunch of other devices that work, also, the same device operates
properly when:
1. connected to physical machine running Windows 10,
2. assigned to the same QEMU VM running Ubuntu Linux or Windows 7,
3. assigned to QEMU VM with virtual OHCI controller and Windows 10.
From what we see, the difference between this Logitech device and other devices
that work
is that it exposes Isochronous Synch Endpoint (see USB audio spec 3.7.2.2) for
headphones function.
Windows traces show (AFAICT, they are pretty cryptic) that the device does not
properly complete
isochronous IN transfers issued for this endpoint.
The difference between the problematic guest OS (Windows 10) and working
guest OS (Ubuntu Linux) is that Windows 10 driver uses event data TRB entries
for completion notification while Linux sets IOC bit in data transfer TRB
descriptors.
This difference exists for both ISO IN and ISO OUT endpoints of headphones
function.
On QEMU side it looks like guest sends a bunch of ISO OUT requests with data,
1 ISO is request to synch endpoint and then hangs reading MFINDEX register
repeatedly.
Of course QEMU processes this ISO IN request and issues data transfer event
TRB which is visible in sniffer running on the guest side (Wireshark).
QEMU also generates events for all ISO OUT transfers, they are visible in
the sniffer as well.
There is a separate parts of logic in XHCI controller code responsible for
generation
of Event Data Transfer Event TRBs and this code works properly as far as we can
tell.
Do you have any idea about what could be wrong with this device or
corresponding XHCI code?
Do you see any additional research directions or places to look into?
Thank you in advance,
Dmitry
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemu-devel] xhci issues with Logitech, Inc. Headset H340 audio device,
Dmitry Fleytman <=