Hi Gerd,

The following library provides an example of all the steps to register an MMIO 
range for RT access.

https://github.com/tianocore/edk2/blob/master/MdePkg/Library/DxeRuntimePciExpressLib/PciExpressLib.c

The example is from PCI Express, but the PCI Config space for PCI Express is an 
MMIO window.  This
library contains a Constructor/Destructor to create/close a Set Virtual Address 
Map event.  It has the 
Set Virtual Address Map Event Notification Function and a function to request a 
specific 4KB 
portion of the 256 MB MMIO window to be marked as RT.

DxeRuntimePciExpressLibConstructor()
DxeRuntimePciExpressLibDestructor()
DxeRuntimePciExpressLibVirtualNotify()
PciExpressRegisterForRuntimeAccess()

Best regards,

Mike


> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Yao, Jiewen
> Sent: Monday, August 30, 2021 6:02 AM
> To: devel@edk2.groups.io; kra...@redhat.com
> Subject: Re: [edk2-devel] mmio mappings for runtime service
> 
> The BIOS driver must set EFI_RUNTIME_MEMORY attribute for the 
> EfiGcdMemoryTypeMemoryMappedIo region with GCD service gDS-
> >SetMemorySpaceAttributes().
> Then DXE will report EfiMemoryMappedIO with EFI_RUNTIME_MEMORY attribute in 
> UEFI memory map.
> The OS will gBS->GetMemoryMap() and assign virtual address for the MMIO, and 
> gRT->SetVirtualAddressMap() back to the BIOS.
> 
> Finally, the BIOS driver can gRT->ConvertPointer() the MMIO physical address 
> to virtual address, then access it at
> runtime.
> 
> Thank you
> Yao Jiewen
> 
> > -----Original Message-----
> > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Gerd
> > Hoffmann
> > Sent: Monday, August 30, 2021 6:24 PM
> > To: devel@edk2.groups.io
> > Subject: [edk2-devel] mmio mappings for runtime service
> >
> >   Hi,
> >
> > What is the correct way to make sure runtime services can access
> > mmio registers, i.e. that there is a mapping in the page tables
> > for the mmio page needed?
> >
> > Is that the job of the firmware?
> > Or should the OS calling the runtime service handle that?
> > In case of the latter: How does the OS figure which pages are needed?
> >
> > thanks,
> >   Gerd
> >
> >
> >
> >
> >
> 
> 
> 
> 
> 



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#79956): https://edk2.groups.io/g/devel/message/79956
Mute This Topic: https://groups.io/mt/85247585/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to