Message ID | 1443418478-8240-3-git-send-email-thunder.leizhen@huawei.com |
---|---|
State | New |
Headers | show |
On Monday 28 September 2015 13:34:38 Zhen Lei wrote: > diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig > index 07d1811..25cec57 100644 > --- a/arch/arm64/Kconfig > +++ b/arch/arm64/Kconfig > @@ -85,7 +85,7 @@ config ARM64 > select PERF_USE_VMALLOC > select POWER_RESET > select POWER_SUPPLY > - select RTC_LIB > + select RTC_LIB if !EFI > select SPARSE_IRQ > select SYSCTL_EXCEPTION_TRACE > select HAVE_CONTEXT_TRACKING Sorry, we can't do that: enabling EFI has to be done in a way that it only adds features but not disables them. Your patch breaks RTC on all non-EFI platforms as soon as CONFIG_EFI is selected by the user. Arnd -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
On 28 September 2015 at 06:34, Zhen Lei <thunder.leizhen@huawei.com> wrote: > Now, ARM64 is also support EFI startup. We hope use EFI runtime services > to get/set current time and date. > > RTC_LIB only controls some configs in drivers/char/Kconfig(included > EFI_RTC), and will be automatically selected when RTC_CLASS opened. So > this patch have no functional change but give an opportunity to select > EFI_RTC when RTC_CLASS closed. > > Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com> > --- > arch/arm64/Kconfig | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig > index 07d1811..25cec57 100644 > --- a/arch/arm64/Kconfig > +++ b/arch/arm64/Kconfig > @@ -85,7 +85,7 @@ config ARM64 > select PERF_USE_VMALLOC > select POWER_RESET > select POWER_SUPPLY > - select RTC_LIB > + select RTC_LIB if !EFI > select SPARSE_IRQ > select SYSCTL_EXCEPTION_TRACE > select HAVE_CONTEXT_TRACKING You can currently enable EFI_RTC just fine on arm64 when EFI is enabled. Why exactly do you need this patch on top? -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
On 2015/9/28 15:35, Arnd Bergmann wrote: > On Monday 28 September 2015 13:34:38 Zhen Lei wrote: >> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig >> index 07d1811..25cec57 100644 >> --- a/arch/arm64/Kconfig >> +++ b/arch/arm64/Kconfig >> @@ -85,7 +85,7 @@ config ARM64 >> select PERF_USE_VMALLOC >> select POWER_RESET >> select POWER_SUPPLY >> - select RTC_LIB >> + select RTC_LIB if !EFI >> select SPARSE_IRQ >> select SYSCTL_EXCEPTION_TRACE >> select HAVE_CONTEXT_TRACKING > > Sorry, we can't do that: enabling EFI has to be done in a way that it only > adds features but not disables them. I run "make ARCH=arm64 menuconfig" and found that RTC_CLASS is selected by default. Actually, RTC_LIB only controls whether to display some configs when run "make menuconfig". I list all informations below: ---------make ARCH=arm64 menuconfig----- [*] Real Time Clock ---> ---------drivers/rtc/Kconfig------- menuconfig RTC_CLASS bool "Real Time Clock" default n depends on !S390 && !UML select RTC_LIB ----------------------------------- find . -name "*Kconfig*" | xargs grep RTC_LIB ./drivers/rtc/Kconfig:config RTC_LIB ./drivers/rtc/Kconfig: select RTC_LIB ./drivers/char/Kconfig:if RTC_LIB=n ./drivers/char/Kconfig:endif # RTC_LIB ./arch/x86/Kconfig: select RTC_LIB ./arch/arm/Kconfig: select RTC_LIB ./arch/arm64/Kconfig: select RTC_LIB if !EFI ./arch/sh/Kconfig: select RTC_LIB ./arch/mips/Kconfig: select RTC_LIB if !MACH_LOONGSON64 --------------drivers/char/Kconfig-------------- if RTC_LIB=n config RTC tristate "Enhanced Real Time Clock Support (legacy PC RTC driver)" ....... endif # RTC_LIB > > Your patch breaks RTC on all non-EFI platforms as soon as CONFIG_EFI > is selected by the user. No, on non-EFI platforms, they can still use RTC as before. As I mentioned above, RTC_LIB only controls whether to display some configs when run "make menuconfig". On ARM64, (in this patch) I only allowed EFI_RTC can be showed when RTC_LIB was not selected. --------------drivers/char/Kconfig-------------- if RTC_LIB=n config RTC tristate "Enhanced Real Time Clock Support (legacy PC RTC driver)" ....... config EFI_RTC bool "EFI Real Time Clock Services" depends on IA64 || ARM64 ....... endif # RTC_LIB > > Arnd > > . >
On Monday 28 September 2015 16:29:57 Leizhen wrote: > > On 2015/9/28 15:35, Arnd Bergmann wrote: > > On Monday 28 September 2015 13:34:38 Zhen Lei wrote: > >> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig > >> index 07d1811..25cec57 100644 > >> --- a/arch/arm64/Kconfig > >> +++ b/arch/arm64/Kconfig > >> @@ -85,7 +85,7 @@ config ARM64 > >> select PERF_USE_VMALLOC > >> select POWER_RESET > >> select POWER_SUPPLY > >> - select RTC_LIB > >> + select RTC_LIB if !EFI > >> select SPARSE_IRQ > >> select SYSCTL_EXCEPTION_TRACE > >> select HAVE_CONTEXT_TRACKING > > > > Sorry, we can't do that: enabling EFI has to be done in a way that it only > > adds features but not disables them. > > I run "make ARCH=arm64 menuconfig" and found that RTC_CLASS is selected by default. Actually, RTC_LIB only > controls whether to display some configs when run "make menuconfig". I list all informations below: > > ---------make ARCH=arm64 menuconfig----- > [*] Real Time Clock ---> > > ---------drivers/rtc/Kconfig------- > menuconfig RTC_CLASS > bool "Real Time Clock" > default n > depends on !S390 && !UML > select RTC_LIB Ok, I see. So your patch here has no effect at all and can be dropped, or we can remove the 'select RTC_LIB' without the EFI dependency. > ----------------------------------- > find . -name "*Kconfig*" | xargs grep RTC_LIB > ./drivers/rtc/Kconfig:config RTC_LIB > ./drivers/rtc/Kconfig: select RTC_LIB > ./drivers/char/Kconfig:if RTC_LIB=n > ./drivers/char/Kconfig:endif # RTC_LIB > ./arch/x86/Kconfig: select RTC_LIB > ./arch/arm/Kconfig: select RTC_LIB > ./arch/arm64/Kconfig: select RTC_LIB if !EFI > ./arch/sh/Kconfig: select RTC_LIB > ./arch/mips/Kconfig: select RTC_LIB if !MACH_LOONGSON64 > > --------------drivers/char/Kconfig-------------- > if RTC_LIB=n > > config RTC > tristate "Enhanced Real Time Clock Support (legacy PC RTC driver)" > > ....... > > endif # RTC_LIB > > > > > > Your patch breaks RTC on all non-EFI platforms as soon as CONFIG_EFI > > is selected by the user. > > No, on non-EFI platforms, they can still use RTC as before. As I mentioned above, > RTC_LIB only controls whether to display some configs when run "make menuconfig". > On ARM64, (in this patch) I only allowed EFI_RTC can be showed when RTC_LIB was > not selected. > but that is the wrong driver that uses the legacy API, we cannot have that on ARM because it conflicts with the normal RTC_CLASS drivers. > --------------drivers/char/Kconfig-------------- > if RTC_LIB=n > > config RTC > tristate "Enhanced Real Time Clock Support (legacy PC RTC driver)" > > ....... > > config EFI_RTC > bool "EFI Real Time Clock Services" > depends on IA64 || ARM64 > > ....... > > endif # RTC_LIB The driver you want is RTC_DRV_EFI, not EFI_RTC. Arnd -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
On 2015/9/28 16:42, Arnd Bergmann wrote: > On Monday 28 September 2015 16:29:57 Leizhen wrote: >> >> On 2015/9/28 15:35, Arnd Bergmann wrote: >>> On Monday 28 September 2015 13:34:38 Zhen Lei wrote: >>>> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig >>>> index 07d1811..25cec57 100644 >>>> --- a/arch/arm64/Kconfig >>>> +++ b/arch/arm64/Kconfig >>>> @@ -85,7 +85,7 @@ config ARM64 >>>> select PERF_USE_VMALLOC >>>> select POWER_RESET >>>> select POWER_SUPPLY >>>> - select RTC_LIB >>>> + select RTC_LIB if !EFI >>>> select SPARSE_IRQ >>>> select SYSCTL_EXCEPTION_TRACE >>>> select HAVE_CONTEXT_TRACKING >>> >>> Sorry, we can't do that: enabling EFI has to be done in a way that it only >>> adds features but not disables them. >> >> I run "make ARCH=arm64 menuconfig" and found that RTC_CLASS is selected by default. Actually, RTC_LIB only >> controls whether to display some configs when run "make menuconfig". I list all informations below: >> >> ---------make ARCH=arm64 menuconfig----- >> [*] Real Time Clock ---> >> >> ---------drivers/rtc/Kconfig------- >> menuconfig RTC_CLASS >> bool "Real Time Clock" >> default n >> depends on !S390 && !UML >> select RTC_LIB > > Ok, I see. So your patch here has no effect at all and can be dropped, or > we can remove the 'select RTC_LIB' without the EFI dependency. Oh, I described the reason in the reply to Ard Biesheuvel. https://lkml.org/lkml/2015/9/28/124 > >> ----------------------------------- >> find . -name "*Kconfig*" | xargs grep RTC_LIB >> ./drivers/rtc/Kconfig:config RTC_LIB >> ./drivers/rtc/Kconfig: select RTC_LIB >> ./drivers/char/Kconfig:if RTC_LIB=n >> ./drivers/char/Kconfig:endif # RTC_LIB >> ./arch/x86/Kconfig: select RTC_LIB >> ./arch/arm/Kconfig: select RTC_LIB >> ./arch/arm64/Kconfig: select RTC_LIB if !EFI >> ./arch/sh/Kconfig: select RTC_LIB >> ./arch/mips/Kconfig: select RTC_LIB if !MACH_LOONGSON64 >> >> --------------drivers/char/Kconfig-------------- >> if RTC_LIB=n >> >> config RTC >> tristate "Enhanced Real Time Clock Support (legacy PC RTC driver)" >> >> ....... >> >> endif # RTC_LIB >> >> >>> >>> Your patch breaks RTC on all non-EFI platforms as soon as CONFIG_EFI >>> is selected by the user. >> >> No, on non-EFI platforms, they can still use RTC as before. As I mentioned above, >> RTC_LIB only controls whether to display some configs when run "make menuconfig". >> On ARM64, (in this patch) I only allowed EFI_RTC can be showed when RTC_LIB was >> not selected. >> > > but that is the wrong driver that uses the legacy API, we cannot have that > on ARM because it conflicts with the normal RTC_CLASS drivers. Yes, RTC_CLASS will automatically select RTC_LIB, and will not display EFI_RTC, because RTC_LIB=y now. We can select EFI_RTC only when RTC_CLASS is not selected(meanwhile RTC_LIB=n) > >> --------------drivers/char/Kconfig-------------- >> if RTC_LIB=n >> >> config RTC >> tristate "Enhanced Real Time Clock Support (legacy PC RTC driver)" >> >> ....... >> >> config EFI_RTC >> bool "EFI Real Time Clock Services" >> depends on IA64 || ARM64 >> >> ....... >> >> endif # RTC_LIB > > The driver you want is RTC_DRV_EFI, not EFI_RTC. OK, I will try it tommorrow. > > Arnd > > . > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
On Monday 28 September 2015 17:44:40 Leizhen wrote: > >> No, on non-EFI platforms, they can still use RTC as before. As I mentioned above, > >> RTC_LIB only controls whether to display some configs when run "make menuconfig". > >> On ARM64, (in this patch) I only allowed EFI_RTC can be showed when RTC_LIB was > >> not selected. > >> > > > > but that is the wrong driver that uses the legacy API, we cannot have that > > on ARM because it conflicts with the normal RTC_CLASS drivers. > > Yes, RTC_CLASS will automatically select RTC_LIB, and will not display EFI_RTC, because > RTC_LIB=y now. > > We can select EFI_RTC only when RTC_CLASS is not selected(meanwhile RTC_LIB=n) I understood that, and my initial point was that we cannot allow such a situation, all drivers that we might use must be able to coexist in one kernel. If you have any applications that are ported from Itanium and that rely on specific behavior of the ia64 rtc driver, we should either enable those in the normal rtc-efi driver, or you need to change your application to use the portable RTC interfaces. Arnd -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 07d1811..25cec57 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -85,7 +85,7 @@ config ARM64 select PERF_USE_VMALLOC select POWER_RESET select POWER_SUPPLY - select RTC_LIB + select RTC_LIB if !EFI select SPARSE_IRQ select SYSCTL_EXCEPTION_TRACE select HAVE_CONTEXT_TRACKING
Now, ARM64 is also support EFI startup. We hope use EFI runtime services to get/set current time and date. RTC_LIB only controls some configs in drivers/char/Kconfig(included EFI_RTC), and will be automatically selected when RTC_CLASS opened. So this patch have no functional change but give an opportunity to select EFI_RTC when RTC_CLASS closed. Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com> --- arch/arm64/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.5.0 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/