Andy Shevchenko
f599ae7529
rtc: cmos: Stop using shared IRQ
...
commit b6da197a2e9670df6f07e6698629e9ce95ab614e upstream.
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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-02-14 16:34:12 -05:00
..
class.c
rtc: class: add debug message when registration fails
2019-08-20 21:44:45 +02:00
dev.c
hctosys.c
interface.c
rtc: disable uie before setting time and enable after
2019-12-17 19:56:52 +01:00
Kconfig
RTC for 5.4
2019-09-22 11:05:43 -07: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-eoz9.c
rtc: remove superfluous error message
2019-08-21 09:57:23 +02:00
rtc-ab3100.c
rtc: ab3100: convert to SPDX identifier
2019-04-11 16:42:55 +02:00
rtc-ab8500.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 194
2019-05-30 11:29:22 -07:00
rtc-abx80x.c
rtc-ac100.c
rtc: remove superfluous error message
2019-08-21 09:57:23 +02:00
rtc-armada38x.c
rtc: remove superfluous error message
2019-08-21 09:57:23 +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: Remove dev_err() usage after platform_get_irq()
2019-08-13 10:53:10 +02:00
rtc-aspeed.c
rtc: remove superfluous error message
2019-08-21 09:57:23 +02:00
rtc-at91rm9200.c
rtc: Remove dev_err() usage after platform_get_irq()
2019-08-13 10:53:10 +02:00
rtc-at91rm9200.h
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
rtc-at91sam9.c
rtc: Remove dev_err() usage after platform_get_irq()
2019-08-13 10:53:10 +02:00
rtc-au1xxx.c
rtc-bd70528.c
rtc: bd70528: fix module alias to autoload module
2020-01-26 10:01:06 +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
2020-01-17 19:49:03 +01:00
rtc-cadence.c
rtc: remove superfluous error message
2019-08-21 09:57:23 +02:00
rtc-cmos.c
rtc: cmos: Stop using shared IRQ
2020-02-14 16:34:12 -05:00
rtc-coh901331.c
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
mfd / platform: cros_ec: Reorganize platform and mfd includes
2019-09-02 11:33:42 +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 for 5.2
2019-05-09 14:46:33 -07:00
rtc-davinci.c
rtc: Remove dev_err() usage after platform_get_irq()
2019-08-13 10:53:10 +02:00
rtc-digicolor.c
rtc: digicolor: convert to SPDX identifier
2019-05-08 22:14:31 +02:00
rtc-dm355evm.c
rtc-ds1216.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
rtc-ds1286.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
rtc-ds1302.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 377
2019-06-05 17:37:10 +02: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
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
2019-06-19 17:09:55 +02:00
rtc-ds1347.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
2019-06-19 17:09:55 +02:00
rtc-ds1374.c
docs: i2c: convert to ReST and add to driver-api bookset
2019-07-31 13:25:27 -06:00
rtc-ds1390.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
2019-06-19 17:09:55 +02:00
rtc-ds1511.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
2019-06-19 17:09:55 +02:00
rtc-ds1553.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
2019-06-19 17:09:55 +02:00
rtc-ds1672.c
rtc: ds1672: remove unnecessary check
2019-08-21 09:57:23 +02:00
rtc-ds1685.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
2019-06-19 17:09:55 +02: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
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
2019-06-19 17:09:55 +02:00
rtc-ep93xx.c
rtc: ep93xx: fix checkpatch issues
2019-04-19 22:37:16 +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: add FTM alarm driver
2019-08-23 16:20:50 +02: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-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: Return -EINVAL if the time is known to be invalid
2020-02-14 16:34:12 -05: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: remove superfluous error message
2019-08-21 09:57:23 +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
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
rtc-lpc32xx.c
rtc: lpc32xx: convert to SPDX identifier
2019-04-12 12:23:20 +02: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.3
2019-07-17 10:03:50 -07: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
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
2019-06-19 17:09:55 +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: mc13xxx: fix style issue
2019-04-16 18:06:54 +02:00
rtc-mc146818-lib.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02: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-moxart.c
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: Fix reading of 10-hour digit
2020-01-17 19:49:03 +01:00
rtc-mt6397.c
rtc: mt6397: fix alarm register overwrite
2020-01-17 19:48:16 +01:00
rtc-mt7622.c
rtc: Remove dev_err() usage after platform_get_irq()
2019-08-13 10:53:10 +02:00
rtc-mv.c
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
ARM: SoC-related driver updates
2019-05-16 09:19:14 -07: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: pcap: convert to SPDX identifier
2019-05-08 22:14:36 +02:00
rtc-pcf2123.c
rtc: pcf2123: add proper compatible string
2019-08-20 21:42:19 +02:00
rtc-pcf2127.c
rtc: pcf2127: bugfix: watchdog build dependency
2019-08-27 18:24:15 +02:00
rtc-pcf8523.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
2019-06-19 17:09:55 +02:00
rtc-pcf8563.c
rtc: pcf8563: let the core handle range offsetting
2019-09-01 10:57:47 +02: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-pcf85363.c
rtc: pcf85363/pcf85263: fix regmap error in set_time
2019-09-01 08:48:28 +02:00
rtc-pic32.c
rtc: Remove dev_err() usage after platform_get_irq()
2019-08-13 10:53:10 +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: Remove dev_err() usage after platform_get_irq()
2019-08-13 10:53:10 +02: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
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +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-rv3028.c
rtc: remove superfluous error message
2019-08-21 09:57:23 +02:00
rtc-rv3029c2.c
rtc: rv3029: revert error handling patch to rv3029_eeprom_write()
2019-08-21 09:57:23 +02:00
rtc-rv8803.c
rtc: remove superfluous error message
2019-08-21 09:57:23 +02: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: declare missing of table
2019-04-29 15:53:42 +02:00
rtc-rx8010.c
RTC for 5.3
2019-07-17 10:03:50 -07:00
rtc-rx8025.c
RTC for 5.3
2019-07-17 10:03:50 -07: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: Remove dev_err() usage after platform_get_irq()
2019-08-13 10:53:10 +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: convert to devm_i2c_new_dummy_device()
2019-09-01 09:18:35 +02:00
rtc-sa1100.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
rtc-sa1100.h
rtc-sc27xx.c
rtc: sc27xx: Remove clearing SPRD_RTC_POWEROFF_ALM_FLAG flag
2019-09-10 16:14:13 +02: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
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 4
2019-05-21 11:28:40 +02: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: Remove dev_err() usage after platform_get_irq()
2019-08-13 10:53:10 +02:00
rtc-st-lpc.c
RTC for 5.3
2019-07-17 10:03:50 -07:00
rtc-starfire.c
rtc-stk17ta8.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
2019-06-19 17:09:55 +02:00
rtc-stm32.c
rtc: Remove dev_err() usage after platform_get_irq()
2019-08-13 10:53:10 +02:00
rtc-stmp3xxx.c
rtc: stmp3xxx: convert to SPDX identifier
2019-04-11 16:42:55 +02:00
rtc-sun4v.c
rtc-sun6i.c
rtc: sun6i: Add support for RTC clocks on R40
2020-01-14 20:08:21 +01:00
rtc-sunxi.c
rtc: remove superfluous error message
2019-08-21 09:57:23 +02:00
rtc-tegra.c
rtc: remove superfluous error message
2019-08-21 09:57:23 +02:00
rtc-test.c
rtc: test: enable wakeup flags
2019-05-23 17:44:52 +02:00
rtc-tps6586x.c
rtc: remove superfluous error message
2019-08-21 09:57:23 +02:00
rtc-tps65910.c
rtc: remove superfluous error message
2019-08-21 09:57:23 +02: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 dev_get_drvdata()
2019-04-29 15:53:43 +02:00
rtc-v3020.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
2019-06-19 17:09:55 +02:00
rtc-vr41xx.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156
2019-05-30 11:26:35 -07:00
rtc-vt8500.c
rtc: Remove dev_err() usage after platform_get_irq()
2019-08-13 10:53:10 +02:00
rtc-wilco-ec.c
platform/chrome: wilco_ec: Standardize mailbox interface
2019-04-15 16:07:42 +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: Remove dev_err() usage after platform_get_irq()
2019-08-13 10:53:10 +02:00
rtc-zynqmp.c
rtc: Remove dev_err() usage after platform_get_irq()
2019-08-13 10:53:10 +02:00
sysfs.c
systohc.c
rtc: drop set_mms and set_mmss64
2019-05-08 22:14:36 +02:00