linux-stable/drivers/rtc
Andy Shevchenko b6da197a2e rtc: cmos: Stop using shared IRQ
As reported by Guilherme G. Piccoli:

---8<---8<---8<---

The rtc-cmos interrupt setting was changed in the commit 079062b28f
("rtc: cmos: prevent kernel warning on IRQ flags mismatch") in order
to allow shared interrupts; according to that commit's description,
some machine got kernel warnings due to the interrupt line being shared
between rtc-cmos and other hardware, and rtc-cmos didn't allow IRQ sharing
that time.

After the aforementioned commit though it was observed a huge increase
in lost HPET interrupts in some systems, observed through the following
kernel message:

[...] hpet1: lost 35 rtc interrupts

After investigation, it was narrowed down to the shared interrupts
usage when having the kernel option "irqpoll" enabled. In this case,
all IRQ handlers are called for non-timer interrupts, if such handlers
are setup in shared IRQ lines. The rtc-cmos IRQ handler could be set to
hpet_rtc_interrupt(), which will produce the kernel "lost interrupts"
message after doing work - lots of readl/writel to HPET registers, which
are known to be slow.

Although "irqpoll" is not a default kernel option, it's used in some contexts,
one being the kdump kernel (which is an already "impaired" kernel usually
running with 1 CPU available), so the performance burden could be considerable.
Also, the same issue would happen (in a shorter extent though) when using
"irqfixup" kernel option.

In a quick experiment, a virtual machine with uptime of 2 minutes produced
>300 calls to hpet_rtc_interrupt() when "irqpoll" was set, whereas without
sharing interrupts this number reduced to 1 interrupt. Machines with more
hardware than a VM should generate even more unnecessary HPET interrupts
in this scenario.

---8<---8<---8<---

After looking into the rtc-cmos driver history and DSDT table from
the Microsoft Surface 3, we may notice that Hans de Goede submitted
a correct fix (see dependency below). Thus, we simply revert
the culprit commit.

Fixes: 079062b28f ("rtc: cmos: prevent kernel warning on IRQ flags mismatch")
Depends-on: a1e23a42f1 ("rtc: cmos: Do not assume irq 8 for rtc when there are no legacy irqs")
Reported-by: Guilherme G. Piccoli <gpiccoli@canonical.com>
Cc: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Tested-by: Guilherme G. Piccoli <gpiccoli@canonical.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20200123131437.28157-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2020-01-25 21:54:57 +01:00
..
class.c rtc: class: add debug message when registration fails 2019-08-20 21:44:45 +02:00
dev.c compat_ioctl: move rtc handling into drivers/rtc/dev.c 2019-10-23 17:23:43 +02:00
hctosys.c
interface.c rtc: interface: fix kerneldoc comments 2019-11-27 09:31:08 +01:00
Kconfig rtc: Fix Kconfig indentation 2019-11-27 09:31:14 +01:00
lib.c
Makefile rtc: fsl-ftm-alarm: add FTM alarm driver 2019-08-23 16:20:50 +02:00
nvmem.c
proc.c
rtc-88pm80x.c rtc: remove superfluous error message 2019-08-21 09:57:23 +02:00
rtc-88pm860x.c rtc: Remove dev_err() usage after platform_get_irq() 2019-08-13 10:53:10 +02:00
rtc-ab-b5ze-s3.c rtc: ab-b5ze-s3: remove .remove 2019-11-08 16:14:09 +01:00
rtc-ab-eoz9.c rtc: remove superfluous error message 2019-08-21 09:57:23 +02:00
rtc-ab3100.c
rtc-ab8500.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 194 2019-05-30 11:29:22 -07:00
rtc-abx80x.c rtc: abx80x: return meaningful value for RTC_VL_READ 2019-12-18 10:37:21 +01:00
rtc-ac100.c rtc: remove superfluous error message 2019-08-21 09:57:23 +02:00
rtc-armada38x.c rtc: armada38x: Use of_device_get_match_data() 2019-10-07 15:49:20 +02:00
rtc-as3722.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
rtc-asm9260.c rtc: asm9260: add the missed check for devm_clk_get 2019-12-23 11:16:23 +01:00
rtc-aspeed.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-at91rm9200.c rtc: at91rm9200: use FIELD_PREP/FIELD_GET 2020-01-15 15:11:10 +01:00
rtc-at91sam9.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-au1xxx.c
rtc-bd70528.c rtc: bd70528: fix module alias to autoload module 2019-11-08 16:56:28 +01:00
rtc-bq32k.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-bq4802.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
rtc-brcmstb-waketimer.c rtc: brcmstb-waketimer: add missed clk_disable_unprepare 2019-11-08 16:14:09 +01:00
rtc-cadence.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-cmos.c rtc: cmos: Stop using shared IRQ 2020-01-25 21:54:57 +01:00
rtc-coh901331.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-core.h
rtc-cpcap.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
rtc-cros-ec.c rtc: cros-ec: let the core handle rtc range 2019-11-08 16:14:09 +01:00
rtc-da9052.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
rtc-da9055.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
rtc-da9063.c rtc: da9063: Handle invalid IRQ from platform_get_irq_byname() 2019-10-07 15:49:18 +02:00
rtc-davinci.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-digicolor.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-dm355evm.c
rtc-ds1216.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-ds1286.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-ds1302.c rtc: ds1302: Remove unused DRV_NAME 2019-11-15 11:58:14 +01:00
rtc-ds1305.c rtc: remove superfluous error message 2019-08-21 09:57:23 +02:00
rtc-ds1307.c RTC for 5.3 2019-07-17 10:03:50 -07:00
rtc-ds1343.c rtc: ds1343: Remove unused struct spi_device in struct ds1343_priv 2019-12-23 11:22:32 +01:00
rtc-ds1347.c rtc: ds1347: handle century register 2019-10-07 15:49:38 +02:00
rtc-ds1374.c RTC for 5.5 2019-12-03 13:31:08 -08:00
rtc-ds1390.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-ds1511.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-ds1553.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-ds1672.c rtc: ds1672: remove unnecessary check 2019-08-21 09:57:23 +02:00
rtc-ds1685.c rtc: ds1685: fix build error with make W=1 2019-11-27 09:31:13 +01:00
rtc-ds1742.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-ds2404.c rtc: ds2404: use hw endiannes variable 2019-05-23 17:42:25 +02:00
rtc-ds3232.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
rtc-efi-platform.c
rtc-efi.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
rtc-em3027.c rtc: em3027: correct month value 2019-11-08 16:14:09 +01:00
rtc-ep93xx.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-fm3130.c RTC for 5.3 2019-07-17 10:03:50 -07:00
rtc-fsl-ftm-alarm.c rtc: fsl-ftm-alarm: avoid struct rtc_time conversions 2019-11-08 16:14:09 +01:00
rtc-ftrtc010.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
rtc-generic.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
rtc-goldfish.c rtc: Use devm_platform_ioremap_resource() 2019-10-06 21:04:51 +02:00
rtc-hid-sensor-time.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 335 2019-06-05 17:37:06 +02:00
rtc-hym8563.c rtc: hym8563: Read the valid flag directly instead of caching it 2019-12-23 11:18:06 +01:00
rtc-imx-sc.c rtc: remove superfluous error message 2019-08-21 09:57:23 +02:00
rtc-imxdi.c rtc: imxdi: use devm_platform_ioremap_resource() to simplify code 2019-07-22 22:16:14 +02:00
rtc-isl1208.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
rtc-isl12022.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-isl12026.c rtc: isl12026: convert to i2c_new_dummy_device 2019-07-22 22:30:19 +02:00
rtc-jz4740.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-lp8788.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-lpc24xx.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-lpc32xx.c rtc: lpc32xx: remove .remove 2019-11-08 16:14:09 +01:00
rtc-ls1x.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
rtc-m41t80.c RTC for 5.5 2019-12-03 13:31:08 -08:00
rtc-m41t93.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-m41t94.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-m48t35.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
rtc-m48t59.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-m48t86.c rtc: Use devm_platform_ioremap_resource() 2019-10-06 21:04:51 +02:00
rtc-max6900.c
rtc-max6902.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-max6916.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-max8907.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-max8925.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-max8997.c
rtc-max8998.c
rtc-max77686.c rtc: max77686: convert to devm_i2c_new_dummy_device() 2019-09-01 09:18:35 +02:00
rtc-mc13xxx.c
rtc-mc146818-lib.c rtc: Fix the AltCentury value on AMD/Hygon platform 2019-11-08 16:56:28 +01:00
rtc-mcp795.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-meson-vrtc.c rtc: meson: mark PM functions as __maybe_unused 2019-09-10 16:14:15 +02:00
rtc-meson.c rtc: meson: remove redundant assignment to variable retries 2019-11-27 09:31:13 +01:00
rtc-moxart.c rtc: moxart: Convert to SPDX identifier 2019-12-23 11:23:49 +01:00
rtc-mpc5121.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-mrst.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 441 2019-06-05 17:37:17 +02:00
rtc-msm6242.c rtc: msm6242: Remove unneeded msm6242_set()/msm6242_clear() functions 2019-11-18 15:23:54 +01:00
rtc-mt6397.c rtc: mt6397: drop free_irq of devm_ allocated irq 2019-12-10 14:25:34 +01:00
rtc-mt7622.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-mv.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-mxc.c rtc: mxc: use spin_lock_irqsave instead of spin_lock_irq in IRQ context 2019-08-12 23:04:25 +02:00
rtc-mxc_v2.c rtc: mxc_v2: use devm_platform_ioremap_resource() to simplify code 2019-07-22 22:16:12 +02:00
rtc-omap.c rtc: omap: Remove unneeded semicolon 2019-12-23 11:16:23 +01:00
rtc-opal.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 114 2019-05-24 17:39:01 +02:00
rtc-palmas.c
rtc-pcap.c
rtc-pcf2123.c rtc: pcf2123: add proper compatible string 2019-08-20 21:42:19 +02:00
rtc-pcf2127.c rtc: pcf2127: return meaningful value for RTC_VL_READ 2019-12-18 10:37:23 +01:00
rtc-pcf8523.c rtc: pcf8523: return meaningful value for RTC_VL_READ 2019-12-18 10:37:25 +01:00
rtc-pcf8563.c rtc: pcf8563: Use BIT 2019-12-23 11:23:53 +01:00
rtc-pcf8583.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-pcf50633.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
rtc-pcf85063.c rtc: pcf85063: return meaningful value for RTC_VL_READ 2019-12-18 10:37:35 +01:00
rtc-pcf85363.c rtc: pcf85363/pcf85263: fix regmap error in set_time 2019-09-01 08:48:28 +02:00
rtc-pic32.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-pl030.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-pl031.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
rtc-pm8xxx.c rtc: pm8xxx: update kerneldoc for struct pm8xxx_rtc 2019-11-27 09:31:13 +01:00
rtc-ps3.c
rtc-puv3.c rtc: remove superfluous error message 2019-08-21 09:57:23 +02:00
rtc-pxa.c rtc: Remove dev_err() usage after platform_get_irq() 2019-08-13 10:53:10 +02:00
rtc-r7301.c rtc: Use devm_platform_ioremap_resource() 2019-10-06 21:04:51 +02:00
rtc-r9701.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-rc5t583.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 201 2019-05-30 11:29:52 -07:00
rtc-rk808.c rtc: Remove dev_err() usage after platform_get_irq() 2019-08-13 10:53:10 +02:00
rtc-rp5c01.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
rtc-rs5c313.c
rtc-rs5c348.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-rs5c372.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-rtd119x.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-rv3028.c rtc: rv3028: return meaningful value for RTC_VL_READ 2019-12-18 10:37:39 +01:00
rtc-rv3029c2.c rtc: rv3029: remove useless error messages 2019-12-23 11:16:23 +01:00
rtc-rv8803.c rtc: rv8803: return meaningful value for RTC_VL_READ 2019-12-18 10:37:42 +01:00
rtc-rx4581.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-rx6110.c rtc: rx6110: Convert to SPDX identifier 2019-11-15 11:58:12 +01:00
rtc-rx8010.c rtc: rx8010: Fix return code for rx8010_probe 2019-12-23 11:16:23 +01:00
rtc-rx8025.c rtc: rx8025: Remove struct i2c_client from struct rx8025_data 2019-12-23 11:22:21 +01:00
rtc-rx8581.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-s3c.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-s3c.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-s5m.c rtc: s5m: convert to i2c_new_dummy_device 2019-07-23 20:34:31 +02:00
rtc-s35390a.c rtc: s35390a: set range 2019-10-19 22:33:05 +02:00
rtc-sa1100.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-sa1100.h
rtc-sc27xx.c rtc: sc27xx: remove .remove 2019-11-08 16:14:09 +01:00
rtc-sd3078.c rtc: remove superfluous error message 2019-08-21 09:57:23 +02:00
rtc-sh.c RTC for 5.2 2019-05-09 14:46:33 -07:00
rtc-sirfsoc.c rtc: sirfsoc: remove .remove 2019-11-08 16:14:09 +01:00
rtc-snvs.c rtc: snvs: switch to rtc_time64_to_tm/rtc_tm_to_time64 2019-09-01 08:48:23 +02:00
rtc-spear.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-st-lpc.c rtc: st-lpc: Remove struct resource from struct st_rtc 2019-11-27 09:31:14 +01:00
rtc-starfire.c
rtc-stk17ta8.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-stm32.c rtc: stm32: add missed clk_disable_unprepare in error path of resume 2019-12-10 14:29:23 +01:00
rtc-stmp3xxx.c
rtc-sun4v.c
rtc-sun6i.c rtc: sun6i: Remove struct device from sun6i_rtc_dev 2019-11-27 09:31:14 +01:00
rtc-sunxi.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-tegra.c rtc: tegra: remove set but unused variable 2019-11-27 09:31:13 +01:00
rtc-test.c rtc: test: enable wakeup flags 2019-05-23 17:44:52 +02:00
rtc-tps6586x.c rtc: tps6586x: Use IRQ_NOAUTOEN flag 2020-01-25 21:50:18 +01:00
rtc-tps65910.c rtc: tps65910: allow using RTC without alarm interrupt 2019-11-17 22:24:33 +01:00
rtc-tps80031.c
rtc-twl.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
rtc-tx4939.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-v3020.c rtc: v3020: remove set but unused variable 2019-11-27 09:31:13 +01:00
rtc-vr41xx.c compat_ioctl: move rtc handling into drivers/rtc/dev.c 2019-10-23 17:23:43 +02:00
rtc-vt8500.c rtc: vt8500: let the core handle rtc range 2019-10-19 22:33:15 +02:00
rtc-wilco-ec.c rtc: wilco-ec: Handle reading invalid times 2019-10-14 17:49:17 +02:00
rtc-wm831x.c rtc: wm831x: Add IRQF_ONESHOT flag 2019-07-13 21:39:51 +02:00
rtc-wm8350.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
rtc-x1205.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-xgene.c rtc: xgene: Remove unused struct device in struct xgene_rtc_dev 2019-11-27 09:31:14 +01:00
rtc-zynqmp.c rtc: zynqmp: re-use rtc_time64_to_tm operation 2019-12-10 16:49:20 +01:00
sysfs.c rtc: sysfs: fix hctosys_show kerneldoc 2019-11-27 09:31:13 +01:00
systohc.c rtc: drop set_mms and set_mmss64 2019-05-08 22:14:36 +02:00