On 03/18/2013 11:04 AM, Matt Fleming wrote:
> On 03/18/2013 03:32 PM, David Woodhouse wrote:
>> On Mon, 2013-03-18 at 15:16 +0000, Matt Fleming wrote:
>>>
>>> See,
>>>
>>> commit 53b87cf0 ("x86, mm: Include the entire kernel memory map in
>>> trampoline_pgd"),
>>> commit 185034e7 ("x86, efi: 1:1 pagetable mapping for virtual EFI calls"),
>>> commit da5a108d05b4 ("x86/kernel: remove tboot 1:1 page table creation
>>> code") and
>>> commit bd52276fa1d4 ("x86-64/efi: Use EFI to deal with platform wall
>>> clock (again)")
>>>
>>> and the two revert commits from Linus, be354f40 and 11520e5e.
>>
>> Thanks. That seems like a rather scary approach. I was thinking of just
>> setting up a dedicated kernel thread for making runtime services calls,
>> and giving it some "userspace" page tables with a 1:1 mapping. No
>> messing around with %cr3 directly.
>
> How would that work? Would it be a real, executable thread context as
> opposed to just an address space? In which case would we be passing data
> to this thread for it to execute on our behalf? One thing to be aware of
> is that sometimes we need to make EFI calls when the sky is falling,
> such as writing EFI variables in the pstore code paths when crashing.
> Scheduling things at that point may be difficult.
>
> Provided that you can still do things like that, it seems like a nice
> solution.
>
What is the point?
We don't need the scheduler to be involved, we just want to do a
temporary context switch. We can't preempt EFI anyway, so given that,
we are non-preemptable and switching %cr3 is fine.
-hpa
--
To unsubscribe from this list: send the line "unsubscribe linux-efi" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html