On Jul 24, 2013, at 5:59 PM, "Tian, Feng" <feng.t...@intel.com> wrote:
> Sorry, Andrew.
>
> I don’t understand your point, where of XhciDxe current implementation is
> disobeying UEFI spec? Do I miss something?
>
> 2.6.3 Driver-Specific Elements:
> 12. If a driver is written for a PCI root bridge, then the
> EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL and the EFI_PCI_IO_PROTOCOL must be
> implemented.
>
> This sentence is from UEFI spec. My understanding is it defines the behavior
> of PCI_IO & PCI_ROOT_BRIDGE’s producer rather than the user.
I think there may be a missing requirement in the UEFI section 2.6.3 that if a
driver uses PCI it must use EFI_PCI_IO_PROTOCOL for IO. I was surprised there
was not a stronger statement about this that I could find. I'll take this issue
up with the UEFI Spec committee.
>
> I agree we should use PciIo->map schematic, it’s in our plan.
OK Thanks.
Andrew Fish
>
> Thanks
> Feng
>
> From: Andrew Fish [mailto:af...@apple.com]
> Sent: Thursday, July 25, 2013 8:41 AM
> To: Tian, Feng
> Cc: Cohen, Eugene; edk2-devel@lists.sourceforge.net
> Subject: Re: [edk2] XHCI DMA Buffer Issues
>
>
> On Jul 24, 2013, at 5:27 PM, "Tian, Feng" <feng.t...@intel.com> wrote:
>
>
> Hi, Eugene
>
> The EDKII XhciDxe driver doesn’t use PciIo.AllocateBuffer()/Map() to allocate
> DMA buffers. It’s mainly because EDKII is 1:1 mapping on Pci physical address
> and Cpu logical address for IA architecture. AllocateBuffer() is enough for
> current case.
>
>
> So as long as code runs an edk2 Intel/AMD CPU system it does not need to
> follow the UEFI spec? So if you had a uninitialized variable or a buffer that
> was just a random memory address you would not fix it if you were lucky and
> it worked on an edk2 Intel/AMD test system?
>
>
> We only implement this feature at EHCI driver as Andrew from Apple was trying
> to use this driver at an ARM based board “Beagle Board”.
>
> For which buffers to be mapped, I think all MMIO buffers specified in XHCI
> spec are required. For how to do this, please refer to EhciDxe driver.
>
> We ever constructed an non 1:1 mapping env at DUET, we mapped 0~1M to
> FFF00000~FFFFFFFF, other memory regions are shifted downwards with 1M offset.
> You can try this way.
>
>
> This is a violation of the UEFI 2.4 (all the way back to EFI 1.10)
> specification. Seems like we need to add an SCT for this.... Since folks seem
> to confuse passing the SCTs with following the spec.
>
> At a minimum you should update the comments in the driver to tell people that
> this is not a UEFI 2.4 (or even EFI 1.10) compatible driver.
>
> 2.6.3 Driver-Specific Elements:
> 12. If a driver is written for a PCI root bridge, then the
> EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL and the EFI_PCI_IO_PROTOCOL must be
> implemented.
>
> The driver needs to use the DMA scheme defined in the EFI_PCI_IO_PROTOCOL, it
> is not legal for a driver to makeup its own way to do DMA.
>
> Thanks,
>
> Andrew Fish
>
>
>
>
> Thanks
> Feng
>
> From: Cohen, Eugene [mailto:eug...@hp.com]
> Sent: Thursday, July 25, 2013 4:29 AM
> To: edk2-devel@lists.sourceforge.net
> Subject: [edk2] XHCI DMA Buffer Issues
>
> Dear XhciDxe Maintainer,
>
> I’m currently reviewing the XhciDxe driver and I’m trying to figure out how
> DMA buffers are allocated. I see a number of pool and page allocations but I
> do not see any called to PCI_IO Map()/Unmap() or to
> AllocateBuffer()/FreeBuffer().
>
> This appears to be violating the rules for PCI DMA buffers since they are not
> being mapped (and if common buffers are desired then they are also not being
> allocated with AllocateBuffer as required).
>
> Can someone more familiar with XHCI help me determine which buffers need to
> be mapped and how (BusMasterRead, BusMasterWrite, CommonBuffer)?
>
> It would be useful if we had a test environment that could catch driver DMA
> buffer mapping issues earlier. I think one way to do this would be set up
> the MMU in a non-identity mode so that anyone trying to use a processor
> virtual address for DMA would see a failure.
>
> Thanks,
>
> Eugene
>
> ------------------------------------------------------------------------------
> See everything from the browser to the database with AppDynamics
> Get end-to-end visibility with application monitoring from AppDynamics
> Isolate bottlenecks and diagnose root cause in seconds.
> Start your free trial of AppDynamics Pro today!
> http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk_______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/edk2-devel
------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel