From: "Lee, Chun-Yi" <joeyli.kernel@gmail.com>
To: "Rafael J. Wysocki" <rjw@rjwysocki.net>,
Alessandro Zummo <a.zummo@towertech.it>,
"H. Peter Anvin" <hpa@zytor.com>,
Matt Fleming <matt@console-pimps.org>,
Matthew Garrett <matthew.garrett@nebula.com>
Cc: Elliott@hp.com, samer.el-haj-mahmoud@hp.com,
Oliver Neukum <oneukum@suse.de>,
werner@suse.com, trenn@suse.de, JBeulich@suse.com,
linux-kernel@vger.kernel.org, rtc-linux@googlegroups.com,
x86@kernel.org,
"linux-efi@vger.kernel.org" <linux-efi@vger.kernel.org>,
linux-acpi@vger.kernel.org, "Lee, Chun-Yi" <jlee@suse.com>
Subject: [PATCH 03/14] rtc: block registration of rtc-cmos when CMOS RTC Not Present
Date: Thu, 19 Dec 2013 15:44:02 +0800 [thread overview]
Message-ID: <1387439053-8711-4-git-send-email-jlee@suse.com> (raw)
In-Reply-To: <1387439053-8711-1-git-send-email-jlee@suse.com>
We should not acess CMOS address when CMOS RTC Not Present bit set in
FADT. The ee5872be patch didn't avoid rtc-cmos driver loaded when system support
ACPI PNP PNP0B0* devices.
So this patch block the registion of rtc-cmos driver to avoid
user space access RTC through CMOS interface.
Signed-off-by: Lee, Chun-Yi <jlee@suse.com>
---
arch/x86/kernel/rtc.c | 20 ++++++++++++++++----
drivers/rtc/rtc-cmos.c | 9 +++++++++
2 files changed, 25 insertions(+), 4 deletions(-)
diff --git a/arch/x86/kernel/rtc.c b/arch/x86/kernel/rtc.c
index ca9622a..9b6c568 100644
--- a/arch/x86/kernel/rtc.c
+++ b/arch/x86/kernel/rtc.c
@@ -174,16 +174,27 @@ static __init int add_rtc_cmos(void)
{ "PNP0b00", "PNP0b01", "PNP0b02", };
struct pnp_dev *dev;
struct pnp_id *id;
- int i;
+ int i = 0;
+ bool found_pnp;
pnp_for_each_dev(dev) {
for (id = dev->id; id; id = id->next) {
for (i = 0; i < ARRAY_SIZE(ids); i++) {
- if (compare_pnp_id(id, ids[i]) != 0)
- return 0;
+ if (compare_pnp_id(id, ids[i]) != 0) {
+ found_pnp = true;
+ goto found_pnp;
+ }
}
}
}
+
+found_pnp:
+ if (found_pnp) {
+ if (acpi_gbl_FADT.header.revision >= 5 &&
+ acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_CMOS_RTC)
+ pr_err(FW_BUG "Found %s device but CMOS RTC Not Present flag set\n", ids[i]);
+ return 0;
+ }
#endif
if (of_have_populated_dt())
return 0;
@@ -193,7 +204,8 @@ static __init int add_rtc_cmos(void)
return -ENODEV;
#ifdef CONFIG_ACPI
- if (acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_CMOS_RTC) {
+ if (acpi_gbl_FADT.header.revision >= 5 &&
+ acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_CMOS_RTC) {
/* This warning can likely go away again in a year or two. */
pr_info("ACPI: not registering RTC platform device\n");
return -ENODEV;
diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c
index f148762..3a84ca9 100644
--- a/drivers/rtc/rtc-cmos.c
+++ b/drivers/rtc/rtc-cmos.c
@@ -28,6 +28,9 @@
* interrupts disabled, holding the global rtc_lock, to exclude those
* other drivers and utilities on correctly configured systems.
*/
+
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
@@ -1144,6 +1147,12 @@ static int __init cmos_init(void)
{
int retval = 0;
+ if (acpi_gbl_FADT.header.revision >= 5 &&
+ acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_CMOS_RTC) {
+ pr_info("ACPI CMOS RTC Not Present detected - not loading\n");
+ return 0;
+ }
+
#ifdef CONFIG_PNP
retval = pnp_register_driver(&cmos_pnp_driver);
if (retval == 0)
--
1.6.4.2
next prev parent reply other threads:[~2013-12-19 7:46 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-19 7:43 [RFC PATCH 00/14] Support timezone of ACPI TAD and EFI TIME Lee, Chun-Yi
2013-12-19 7:44 ` [PATCH 01/14] rtc-efi: fix decrease day twice when computing year days Lee, Chun-Yi
2013-12-19 7:44 ` Lee, Chun-Yi [this message]
2013-12-19 14:38 ` [PATCH 03/14] rtc: block registration of rtc-cmos when CMOS RTC Not Present H. Peter Anvin
2013-12-20 3:54 ` joeyli
2013-12-20 4:20 ` H. Peter Anvin
2013-12-19 14:59 ` [RFC PATCH 00/14] Support timezone of ACPI TAD and EFI TIME H. Peter Anvin
2013-12-19 16:04 ` Alessandro Zummo
2013-12-20 4:05 ` joeyli
2013-12-20 4:22 ` H. Peter Anvin
2013-12-20 5:38 ` joeyli
2013-12-20 21:10 ` H. Peter Anvin
2013-12-20 21:25 ` H. Peter Anvin
2013-12-20 21:45 ` Rafael J. Wysocki
2013-12-20 21:43 ` H. Peter Anvin
2013-12-20 21:50 ` Matt Fleming
2013-12-20 22:18 ` Rafael J. Wysocki
2013-12-21 12:21 ` Matt Fleming
2014-01-12 0:30 ` [RFT][PATCH] ACPI / init: Run acpi_early_init() before efi_enter_virtual_mode() (was: Re: [RFC PATCH 00/14] Support timezone of ACPI TAD and EFI TIME) Rafael J. Wysocki
2014-01-12 9:06 ` Borislav Petkov
2014-01-14 2:04 ` Toshi Kani
2014-01-14 16:25 ` Toshi Kani
2014-01-12 11:05 ` Matt Fleming
2014-01-17 12:20 ` Matt Fleming
2014-01-14 4:09 ` joeyli
2014-01-14 16:50 ` Rafael J. Wysocki
2014-01-14 18:00 ` [RFT][PATCH] ACPI / init: Run acpi_early_init() before efi_enter_virtual_mode() H. Peter Anvin
2014-01-14 20:32 ` Toshi Kani
2014-01-15 7:18 ` joeyli
2013-12-21 2:43 ` [RFC PATCH 00/14] Support timezone of ACPI TAD and EFI TIME joeyli
2013-12-20 10:53 ` Thomas Renninger
2013-12-20 22:15 ` H. Peter Anvin
2013-12-20 15:16 ` Matthew Garrett
2013-12-20 16:57 ` H. Peter Anvin
2013-12-20 16:58 ` Matthew Garrett
2013-12-20 20:29 ` H. Peter Anvin
2013-12-20 20:32 ` Matthew Garrett
2013-12-20 21:14 ` H. Peter Anvin
2013-12-20 21:12 ` H. Peter Anvin
-- strict thread matches above, loose matches on Subject: below --
2013-12-19 7:51 Lee, Chun-Yi
2013-12-19 7:51 ` [PATCH 03/14] rtc: block registration of rtc-cmos when CMOS RTC Not Present Lee, Chun-Yi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1387439053-8711-4-git-send-email-jlee@suse.com \
--to=joeyli.kernel@gmail.com \
--cc=Elliott@hp.com \
--cc=JBeulich@suse.com \
--cc=a.zummo@towertech.it \
--cc=hpa@zytor.com \
--cc=jlee@suse.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-efi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=matt@console-pimps.org \
--cc=matthew.garrett@nebula.com \
--cc=oneukum@suse.de \
--cc=rjw@rjwysocki.net \
--cc=rtc-linux@googlegroups.com \
--cc=samer.el-haj-mahmoud@hp.com \
--cc=trenn@suse.de \
--cc=werner@suse.com \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox