Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1559739 > unrolled thread

[PATCH 1/1] x86/rtc: Allocate interrupt for platform device

Started byAndy Shevchenko <andriy.shevchenko@linux.intel.com>
First post2017-01-16 14:40 +0100
Last post2017-01-16 16:10 +0100
Articles 3 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH 1/1] x86/rtc: Allocate interrupt for platform device Andy Shevchenko <andriy.shevchenko@linux.intel.com> - 2017-01-16 14:40 +0100
    Re: [PATCH 1/1] x86/rtc: Allocate interrupt for platform device kbuild test robot <lkp@intel.com> - 2017-01-16 15:50 +0100
      Re: [PATCH 1/1] x86/rtc: Allocate interrupt for platform device Andy Shevchenko <andriy.shevchenko@linux.intel.com> - 2017-01-16 16:10 +0100

#1559739 — [PATCH 1/1] x86/rtc: Allocate interrupt for platform device

FromAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Date2017-01-16 14:40 +0100
Subject[PATCH 1/1] x86/rtc: Allocate interrupt for platform device
Message-ID<t0fFU-10y-27@gated-at.bofh.it>
Legacy RTC requires interrupt line 8 to be dedicated for it. On Intel
MID platforms the legacy PIC is absent and in order to make RTC work we
need to allocate interrupt separately.

Current solution brought by the commit 82a51c38f199
("x86/platform/intel-mid: Enable RTC on Intel Merrifield") does it in a
wrong place, and since it's done unconditionally for all x86 devices,
some of them, like PNP based, might get it wrong -- at the beginning
default x86_platform.legacy.rtc flag is set for all x86 devices.

Move interrupt allocation to arch/x86/kernel/rtc.c module and allocate
it for pure platform devices only.

Fixes: 82a51c38f199 ("x86/platform/intel-mid: Enable RTC on Intel Merrifield")
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 arch/x86/kernel/rtc.c             |  7 +++++++
 arch/x86/platform/intel-mid/sfi.c | 14 --------------
 2 files changed, 7 insertions(+), 14 deletions(-)

diff --git a/arch/x86/kernel/rtc.c b/arch/x86/kernel/rtc.c
index 5b21cb7d84d6..bcaaaeab0178 100644
--- a/arch/x86/kernel/rtc.c
+++ b/arch/x86/kernel/rtc.c
@@ -178,6 +178,8 @@ static struct platform_device rtc_device = {
 
 static __init int add_rtc_cmos(void)
 {
+	struct irq_alloc_info info;
+	int ret;
 #ifdef CONFIG_PNP
 	static const char * const ids[] __initconst =
 	    { "PNP0b00", "PNP0b01", "PNP0b02", };
@@ -197,6 +199,11 @@ static __init int add_rtc_cmos(void)
 	if (!x86_platform.legacy.rtc)
 		return -ENODEV;
 
+	ioapic_set_alloc_attr(&info, NUMA_NO_NODE, 1, 0);
+	ret = mp_map_gsi_to_irq(RTC_IRQ, IOAPIC_MAP_ALLOC, &info);
+	if (ret < 0)
+		return ret;
+
 	platform_device_register(&rtc_device);
 	dev_info(&rtc_device.dev,
 		 "registered platform RTC device (no PNP device found)\n");
diff --git a/arch/x86/platform/intel-mid/sfi.c b/arch/x86/platform/intel-mid/sfi.c
index e4d4cabbb370..19b43e3a9f0f 100644
--- a/arch/x86/platform/intel-mid/sfi.c
+++ b/arch/x86/platform/intel-mid/sfi.c
@@ -41,7 +41,6 @@
 #include <asm/intel_scu_ipc.h>
 #include <asm/apb_timer.h>
 #include <asm/reboot.h>
-#include <asm/time.h>
 
 #define	SFI_SIG_OEM0	"OEM0"
 #define MAX_IPCDEVS	24
@@ -540,21 +539,8 @@ static int __init sfi_parse_devs(struct sfi_table_header *table)
 	return 0;
 }
 
-static int __init intel_mid_legacy_rtc_init(void)
-{
-	struct irq_alloc_info info;
-
-	if (!x86_platform.legacy.rtc)
-		return -ENODEV;
-
-	ioapic_set_alloc_attr(&info, NUMA_NO_NODE, 1, 0);
-	return mp_map_gsi_to_irq(RTC_IRQ, IOAPIC_MAP_ALLOC, &info);
-}
-
 static int __init intel_mid_platform_init(void)
 {
-	intel_mid_legacy_rtc_init();
-
 	sfi_table_parse(SFI_SIG_GPIO, NULL, NULL, sfi_parse_gpio);
 	sfi_table_parse(SFI_SIG_DEVS, NULL, NULL, sfi_parse_devs);
 	return 0;
-- 
2.11.0

[toc] | [next] | [standalone]


#1559806

Fromkbuild test robot <lkp@intel.com>
Date2017-01-16 15:50 +0100
Message-ID<t0gLE-1Gm-37@gated-at.bofh.it>
In reply to#1559739

[Multipart message — attachments visible in raw view] — view raw

Hi Andy,

[auto build test ERROR on tip/auto-latest]
[also build test ERROR on v4.10-rc4 next-20170116]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Andy-Shevchenko/x86-rtc-Allocate-interrupt-for-platform-device/20170116-222720
config: x86_64-randconfig-x011-201703 (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All errors (new ones prefixed by >>):

   arch/x86/kernel/rtc.c: In function 'add_rtc_cmos':
>> arch/x86/kernel/rtc.c:202:2: error: implicit declaration of function 'ioapic_set_alloc_attr' [-Werror=implicit-function-declaration]
     ioapic_set_alloc_attr(&info, NUMA_NO_NODE, 1, 0);
     ^~~~~~~~~~~~~~~~~~~~~
>> arch/x86/kernel/rtc.c:203:8: error: implicit declaration of function 'mp_map_gsi_to_irq' [-Werror=implicit-function-declaration]
     ret = mp_map_gsi_to_irq(RTC_IRQ, IOAPIC_MAP_ALLOC, &info);
           ^~~~~~~~~~~~~~~~~
>> arch/x86/kernel/rtc.c:203:35: error: 'IOAPIC_MAP_ALLOC' undeclared (first use in this function)
     ret = mp_map_gsi_to_irq(RTC_IRQ, IOAPIC_MAP_ALLOC, &info);
                                      ^~~~~~~~~~~~~~~~
   arch/x86/kernel/rtc.c:203:35: note: each undeclared identifier is reported only once for each function it appears in
   cc1: some warnings being treated as errors

vim +/ioapic_set_alloc_attr +202 arch/x86/kernel/rtc.c

   196			}
   197		}
   198	#endif
   199		if (!x86_platform.legacy.rtc)
   200			return -ENODEV;
   201	
 > 202		ioapic_set_alloc_attr(&info, NUMA_NO_NODE, 1, 0);
 > 203		ret = mp_map_gsi_to_irq(RTC_IRQ, IOAPIC_MAP_ALLOC, &info);
   204		if (ret < 0)
   205			return ret;
   206	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[toc] | [prev] | [next] | [standalone]


#1559820

FromAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Date2017-01-16 16:10 +0100
Message-ID<t0h4Z-23f-1@gated-at.bofh.it>
In reply to#1559806
On Mon, 2017-01-16 at 22:46 +0800, kbuild test robot wrote:
> Hi Andy,
> 
> [auto build test ERROR on tip/auto-latest]
> [also build test ERROR on v4.10-rc4 next-20170116]
> [if your patch is applied to the wrong git tree, please drop us a note
> to help improve the system]
> 
> url:    https://github.com/0day-ci/linux/commits/Andy-Shevchenko/x86-r
> tc-Allocate-interrupt-for-platform-device/20170116-222720
> config: x86_64-randconfig-x011-201703 (attached as .config)
> compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
> reproduce:
>         # save the attached .config to linux build tree
>         make ARCH=x86_64 
> 
> All errors (new ones prefixed by >>):
> 
>    arch/x86/kernel/rtc.c: In function 'add_rtc_cmos':
> > > arch/x86/kernel/rtc.c:202:2: error: implicit declaration of
> > > function 'ioapic_set_alloc_attr' [-Werror=implicit-function-
> > > declaration]
> 
>      ioapic_set_alloc_attr(&info, NUMA_NO_NODE, 1, 0);
>      ^~~~~~~~~~~~~~~~~~~~~
> > > arch/x86/kernel/rtc.c:203:8: error: implicit declaration of
> > > function 'mp_map_gsi_to_irq' [-Werror=implicit-function-
> > > declaration]
> 
>      ret = mp_map_gsi_to_irq(RTC_IRQ, IOAPIC_MAP_ALLOC, &info);
>            ^~~~~~~~~~~~~~~~~
> > > arch/x86/kernel/rtc.c:203:35: error: 'IOAPIC_MAP_ALLOC' undeclared
> > > (first use in this function)
> 
>      ret = mp_map_gsi_to_irq(RTC_IRQ, IOAPIC_MAP_ALLOC, &info);
>                                       ^~~~~~~~~~~~~~~~
>    arch/x86/kernel/rtc.c:203:35: note: each undeclared identifier is
> reported only once for each function it appears in
>    cc1: some warnings being treated as errors

Hmm... Perhaps nice catch. I would check what I have missed, though I
even tested this change on two platforms.

> 
> vim +/ioapic_set_alloc_attr +202 arch/x86/kernel/rtc.c
> 
>    196			}
>    197		}
>    198	#endif
>    199		if (!x86_platform.legacy.rtc)
>    200			return -ENODEV;
>    201	
>  > 202		ioapic_set_alloc_attr(&info, NUMA_NO_NODE, 1,
> 0);
>  > 203		ret = mp_map_gsi_to_irq(RTC_IRQ,
> IOAPIC_MAP_ALLOC, &info);
>    204		if (ret < 0)
>    205			return ret;
>    206	
> 
> ---
> 0-DAY kernel test infrastructure                Open Source Technology
> Center
> https://lists.01.org/pipermail/kbuild-all                   Intel
> Corporation

-- 
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web