Re: EFI runtime-services on x86_64

From: Eric W. Biederman
Date: Tue Aug 03 2010 - 17:45:56 EST


Huang Ying <ying.huang@xxxxxxxxx> writes:

> Hi, Bjorn,
>
> On Mon, 2010-08-02 at 10:35 +0800, Tang, Feng wrote:
>> Hi Bjorn,
>>
>> On Sat, 31 Jul 2010 04:58:48 +0800
>> Bjorn Helgaas <bjorn.helgaas@xxxxxx> wrote:
>>
>> > Hello Feng,
>> >
>> > Can you educate me about your commit 772be899bc, "86: Make EFI RTC
>> > function depend on 32bit again"?
>> >
>> > It adds "#ifdef CONFIG_X86_32" to avoid using efi_get_time() and
>> > efi_set_rtc_mmss(), but there's no explanation of *why* those services
>> > only work on 32-bit.
>> >
>> > Is this an EFI spec limitation? Do the other EFI runtime services
>> > work on 64-bit, since you didn't touch them? Or do we just not use
>> > any of the others?
>> >
>>
>> Commit 772be899bc, "86: Make EFI RTC function depend on 32bit again" is
>> a regression fix for 7bd867d "x86: Move get/set_wallclock to x86_platform_ops".
>> These 2 commits just abstract the rtc service for legacy x86 PC/EFI/Virtualiation
>> kernel, and has no functional change to existing code.
>>
>> I'm not familiar with EFI, but my understanding is current EFI code in
>> kernel only provides the get/set_time service for x86_32 platform.
>
> I think get/set_time service should have worked on x86_64 too. Just
> lacks proper debugging/testing for recent kernels.

Is there any reason we just don't rip those calls out?

If we don't need them and we lack proper debug/testing I don't see the point
of using the EFI calls and exposing ourselves to more potential BIOS breakage.

EFI runtime calls have the nasty fact that they don't work in general even
if EFI is present because you may have the wrong word size EFI running on
your machine. A 32bit EFI and a 64bit kernel or a 64bit EFI and a 32bit kernel.

Eric
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/