Messages in this thread | | | Subject | Re: [PATCH 1/2] x86/efi: Map EFI memmap entries in-order at runtime | From | "H. Peter Anvin" <> | Date | Sat, 26 Sep 2015 12:49:26 -0700 |
| |
It is still a hack unless all relative offsets are preserved. That is actually simpler, even: no sorting necessary.
On September 26, 2015 11:15:57 AM PDT, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote: >On 26 September 2015 at 10:20, H. Peter Anvin <hpa@zytor.com> wrote: >> I think it "works" because the affected BIOSes don't put spaces >between the chunks. I have discussed this with Matt. >> > >Forgive the ASCII art but perhaps an illustration might help: > >before the 2.5 feature, PE/COFF runtime images were remapped as >illustrated here: > > PA VA >+---------------+ +---------------+ >| | | | >| PE/COFF .text | | EFI | >| | | Runtime | >+- - - - - - - -+ => | Services |----+ >| | | Code | | : : >| PE/COFF .data | | | | : : >| | | | | +---------------+ >+---------------+ +---------------+ | | | >| | | | | | EFI | >: : : : | | Runtime | >: : : : +--->| Services | >| | | | | Code | >+---------------+ +---------------+ | | >| | | | | | >| PE/COFF .text | | EFI | +---------------+ >| | | Runtime | : gap : >+- - - - - - - -+ => | Services |---+ +---------------+ >| | | Code | | | | >| PE/COFF .data | | | | | EFI | >| | | | | | Runtime | >+---------------+ +---------------+ +---->| Services | >| | | | | Code | >: : : : | | >: : : : | | >: : : : +---------------+ >: : : : : : > >Since the affected symbol references only exist between PE/COFF .text >and PE/COFF .data, there is never a problem since each is PE/COFF >image is mapped as a single region. >However, with the new feature enabled, this no longer holds: > PA VA >+---------------+ +---------------+ >| | | | >| PE/COFF .text | | RtServices |----+ >| | | Code | | >+- - - - - - - -+ => +---------------+ | +---------------+ >| | | RtServices | +--->| RtServices | >| PE/COFF .data | | Data | | Code | >| | | |----+ +---------------+ >+---------------+ +---------------+ | : gap : >| | | | | +---------------+ >: : : : +--->| RtServices | >: : : : | Data | >| | | | +---------------+ >+---------------+ +---------------+ : gap : >| | | | +---------------+ >| PE/COFF .text | | RtServices |-------->| RtServices | >| | | Code | | Code | >+- - - - - - - -+ => +---------------+ +---------------+ >| | | RtServices | : gap : >| PE/COFF .data | | Data |---+ +---------------+ >| | | | | | RtServices | >+---------------+ +---------------+ +---->| Data | >| | | | | | >: : : : +---------------+ >: : : : : : >: : : : : : > >The illustration uses gaps, but obviously, this applies equally to >inverting the mapping order, since the PE/COFF .text and .data >sections will end up out of order.
-- Sent from my Android device with K-9 Mail. Please excuse my brevity.
| |