Hi Andrew, Thanks for good answers.
Best wishes, Stanley -----邮件原件----- 发件人: Andrew Fish [mailto:af...@apple.com] 发送时间: 2013年7月25日 1:15 收件人: stanley.ganyezu 抄送: 'Laszlo Ersek'; edk2-devel@lists.sourceforge.net 主题: Re: [edk2] 答复: runtime service address translation I'd recommend reading UEFI 2.4 sections about the boot and runtime services mentioned in this post... On Jul 24, 2013, at 9:49 AM, "stanley.ganyezu" <stanley.gany...@gmail.com> wrote: > Hi Laszlo, > In SetVirtualAddressMap, is CPU running at virtual mode or physical mode? Physical mode. The OS can only call runtime services in virtual mode after SetVirtualAddressMap() succeeds. > How do OS construct VirtualMap? ExitBootServices() is used by the OS loader (or OS) to terminate EFI services and take over the machine (IDT, page tables, etc.). A valid MapKey must be passed into ExitBootServices() to succeed, so that the OS has a correct view of the memory map. > Based on EFI memory map? Or OS add some > changes? The EFI Memory map, returned from GetMemoryMap() prior to call to ExitBootServices(). The firmware fills in all the fields except for VirtualStart. typedef struct { UINT32 Type; EFI_PHYSICAL_ADDRESS PhysicalStart; EFI_VIRTUAL_ADDRESS VirtualStart; UINT64 NumberOfPages; UINT64 Attribute; } EFI_MEMORY_DESCRIPTOR; When the OS calls SetVirtualAddressMap() it passes in the EFI Memory map with the VirtualStart virtual address filled in. The contract is the virtual addresses requested by firmware must be mapped by the kernel anytime an EFI Runtime Services call is being made. How the mapping is done is OS specific. Thanks, Andrew Fish > > Thanks > > > > Best wishes, > Stanley > > > -----邮件原件----- > 发件人: Laszlo Ersek [mailto:ler...@redhat.com] > 发送时间: 2013年7月25日 0:25 > 收件人: Kinney, Michael D > 抄送: edk2-devel@lists.sourceforge.net > 主题: Re: [edk2] runtime service address translation > > On 07/24/13 18:15, Kinney, Michael D wrote: > >> [...] SetVirtualAddressMap() can not break up >> the memory map entries into smaller entries. [...] > > Thank you both for the answers! > Laszlo > > ---------------------------------------------------------------------------- > -- > 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 ------------------------------------------------------------------------------ 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