Good news.

Thanks,
Star
From: Rob Taglang [mailto:r...@taglang.io]
Sent: Wednesday, April 4, 2018 12:49 AM
To: Laszlo Ersek <ler...@redhat.com>
Cc: Ni, Ruiyu <ruiyu...@intel.com>; edk2-devel@lists.01.org; Ming Huang 
<ming.hu...@linaro.org>; Zeng, Star <star.z...@intel.com>
Subject: Re: [edk2] OVMF UsbBulkTransfer returns EFI_OUT_OF_RESOURCES

Hello,

Thanks for you help, I got to the bottom of it.

I was passing a pointer to an unsigned int (note, not UINTN) as the length. 
Some garbage in the top bits was getting shifted in and causing the calculated 
number of pages to be very large in RootBridgeIoMap, hence the 
OUT_OF_RESOURCES. Copying the length to a UINTN and passing a pointer to that 
variable works correctly. I must have just been getting lucky with the top bits 
being zeroed out when running on real hardware.

Again thank you,
-Rob

On Tue, Apr 3, 2018 at 11:49 AM, Rob Taglang 
<r...@taglang.io<mailto:r...@taglang.io>> wrote:

My apologies, it looks like the first link got messed up: 
https://sourceforge.net/projects/edk2/files/OVMF/OVMF-X64-r15214.zip/download 
-Rob On Tue, Apr 3, 2018 at 11:10 AM, Rob Taglang 
<r...@taglang.io<mailto:r...@taglang.io>> wrote:
Hi Lazlo, I have tried this with both the very old OVMF-X64-r15214.zip hosted 
on SourceForge: edk2.git-ovmf-x64-0-20180226.b3485.gb1956b5d42.noarch.rpm And 
what I believe is the most recent OVMF hosted in the kraxel repo: 
edk2.git-ovmf-x64-0-20180226.b3485.gb1956b5d42.noarch.rpm And I see the same 
behavior in both. The USB device is a proprietary CDC_ACM device. I have tested 
on this motherboard: 
http://www.supermicro.com/products/motherboard/atom/x10/a1sri-2758f.cfm whose 
UEFI firmware does appear to be based on EDK and everything works as expected. 
Thanks, Rob On Tue, Apr 3, 2018 at 7:49 AM, Laszlo Ersek 
<ler...@redhat.com<mailto:ler...@redhat.com>> wrote:
Hi Rob, On 04/03/18 00:12, Rob Taglang wrote:
Hello, I can pass a host USB device to QEMU boot with OVMF, and it shows up as 
a EFI_USB_IO_PROTOCOL device and the interface descriptors and endpoints are 
detected correctly. A UsbControlTransfer operation succeeds. However, 
UsbBulkTransfer returns EFI_OUT_OF_RESOURCES regardless of how much memory I 
allocate for QEMU. This application does work correctly on real hardware. Is 
this expected behavior in OVMF?
I seem to recall recent patches for the core USB drivers in edk2 that modified 
various timeouts and transfer block sizes. For example: [edk2] 
[MdeModulePkg/Usb v2 0/1] Calculating the count of blocks to transfer Committed 
at 
<https://github.com/tianocore/edk2/commit/824b6e3b5fa080df36626db3eb8465c25a12c053>.
 Can you try a fresh edk2 build, and/or state git commit hashes at which the 
tree does or does not work for you? It would also be interesting to know the 
exact USB device (vendor, model etc) that produces this issue for you. Chances 
are the edk2 USB drivers would have the same issue if they encountered your 
device on the bare metal (i.e. with edk2 running as physical platform 
firmware). Thanks! Laszlo
_______________________________________________ edk2-devel mailing list 
edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org> 
https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________ edk2-devel mailing list 
edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org> 
https://lists.01.org/mailman/listinfo/edk2-devel

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to