lkml.org 
[lkml]   [2010]   [Aug]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [PATCH][EFI] Run EFI in physical mode
    Date
    On Fri, 13 Aug 2010 15:19:56 -0700, "Eric W. Biederman" wrote:

    >Takao Indoh <indou.takao@jp.fujitsu.com> writes:
    >
    >> Hi all,
    >>
    >> The attached patch enables EFI to run in physical mode.
    >>
    >> Basically EFI is in physical mode at first and it's switched to virtual
    >> mode after calling SetVirtualAddressMap. By applying this patch, you can
    >> run EFI always in physical mode. And you can also specify "virtefi" as
    >> kernel boot parameter to run EFI in virtual mode as before. Note that
    >> this patch supports only x86_64.
    >>
    >> This is needed to run kexec/kdump in EFI-booted system. The following is
    >> an original discussion. In this thread, I explained that kdump does not
    >> work because EFI system table is modified by SetVirtualAddressMap. And
    >> the idea to run EFI in physical mode was proposed. This patch implements
    >> it.
    >>
    >> http://marc.info/?l=linux-kernel&m=128018221820234&w=2
    >>> When the 1st kernel boots, EFI system table(efi_system_table_t) is
    >>> modified by SetVirtualAddressMap, which is one of EFI runtime service.
    >>> This runtime changes physical address in EFI system table to virtual
    >>> address.
    >>>
    >>> When the 2nd kernel boots, it also receives the same EFI system table,
    >>> and the address included in it is already virtual address(1st kernel
    >>> rewrote it). But 2nd kernel does not know that, 2nd kernel thinks it is
    >>> a physical address. This causes problems.
    >>
    >> Basic idea of this patch is to create EFI own pagetable. This pagetable
    >> maps physical address of EFI runtime to the virtual address which is the
    >> same value so that we can call it directly. For example, physical
    >> address 0x800000 is mapped to virtual address 0x800000. Before calling
    >> EFI runtime, cr3 register is switched to this pagetable, and restored
    >> when we come back from EFI.
    >>
    >> Any comments would be appreciated.
    >>
    >> Signed-off-by: Takao Indoh <indou.takao@jp.fujitsu.com>
    >
    >Acked-by: "Eric W. Biederman" <ebiederm@xmission.com>
    >
    >There is what appears to be unneeded redundancy (we need two
    >implementations of physciall calls into efi?), but that is confined to
    >the weird efi state.
    >
    >It is a shame you haven't done the little bit extra to get
    >efi_pagetable_init working on x86_32.

    Unfortunately I don't have a machine to test. The machine I'm using does
    not support EFI on x86_32:-( I'd appreciate it if anyone try it...

    Thanks,
    Takao Indoh

    >
    >Overall this seems sane and confined to the x86 efi, and it looks
    >like further improvements could easily be layered on top of this one.
    >
    >Eric


    \
     
     \ /
      Last update: 2010-08-16 21:33    [W:0.026 / U:92.676 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site