1
0
Fork 0
alistair23-linux/drivers
Serge Semin 7bd6569845 clocksource: dw_apb_timer: Make CPU-affiliation being optional
[ Upstream commit cee43dbf2e ]

Currently the DW APB Timer driver binds each clockevent timers to a
particular CPU. This isn't good for multiple reasons. First of all seeing
the device is placed on APB bus (which makes it accessible from any CPU
core), accessible over MMIO and having the DYNIRQ flag set we can be sure
that manually binding the timer to any CPU just isn't correct. By doing
so we just set an extra limitation on device usage. This also doesn't
reflect the device actual capability, since by setting the IRQ affinity
we can make it virtually local to any CPU. Secondly imagine if you had a
real CPU-local timer with the same rating and the same CPU-affinity.
In this case if DW APB timer was registered first, then due to the
clockevent framework tick-timer selection procedure we'll end up with the
real CPU-local timer being left unselected for clock-events tracking. But
on most of the platforms (MIPS/ARM/etc) such timers are normally embedded
into the CPU core and are accessible with much better performance then
devices placed on APB. For instance in MIPS architectures there is
r4k-timer, which is CPU-local, assigned with the same rating, and normally
its clockevent device is registered after the platform-specific one.

So in order to fix all of these issues let's make the DW APB Timer CPU
affinity being optional and deactivated by passing a negative CPU id,
which will effectively set the DW APB clockevent timer cpumask to
'cpu_possible_mask'.

Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
Cc: Alexey Malahov <Alexey.Malahov@baikalelectronics.ru>
Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Cc: Paul Burton <paulburton@kernel.org>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Alessandro Zummo <a.zummo@towertech.it>
Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: linux-mips@vger.kernel.org
Cc: linux-rtc@vger.kernel.org
Cc: devicetree@vger.kernel.org
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Link: https://lore.kernel.org/r/20200521204818.25436-5-Sergey.Semin@baikalelectronics.ru
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-06-22 09:30:55 +02:00
..
accessibility
acpi ACPI/IORT: Fix PMCG node single ID mapping handling 2020-06-22 09:30:54 +02:00
amba
android binderfs: use refcount for binder control devices too 2020-03-25 08:25:50 +01:00
ata libata: Return correct status in sata_pmp_eh_recover_pm() when ATA_DFLAG_DETACH is set 2020-04-17 10:50:22 +02:00
atm fore200e: Fix incorrect checks of NULL pointer dereference 2020-02-24 08:36:36 +01:00
auxdisplay
base x86/speculation: Add Special Register Buffer Data Sampling (SRBDS) mitigation 2020-06-10 20:24:57 +02:00
bcma
block block/floppy: fix contended case in floppy_queue_rq() 2020-06-17 16:40:38 +02:00
bluetooth Bluetooth: btusb: Disable runtime suspend on Realtek devices 2020-02-11 04:35:09 -08:00
bus bus: sunxi-rsb: Return correct data when mixing 16-bit and 8-bit reads 2020-04-17 10:49:56 +02:00
cdrom cdrom: respect device capabilities during opening action 2020-01-04 19:18:25 +01:00
char agp/intel: Reinforce the barrier after GTT updates 2020-06-17 16:40:36 +02:00
clk PM: runtime: clk: Fix clk_pm_runtime_get() error path 2020-06-17 16:40:30 +02:00
clocksource clocksource: dw_apb_timer: Make CPU-affiliation being optional 2020-06-22 09:30:55 +02:00
connector
counter counter: 104-quad-8: Add lock guards - generic interface 2020-05-02 08:48:44 +02:00
cpufreq cpufreq: Fix up cpufreq_boost_set_sw() 2020-06-17 16:40:33 +02:00
cpuidle cpuidle: teo: Avoid using "early hits" incorrectly 2020-02-05 21:22:52 +00:00
crypto crypto: ccp -- don't "select" CONFIG_DMADEVICES 2020-06-22 09:30:50 +02:00
dax device-dax: don't leak kernel memory to user space after unloading kmem 2020-05-27 17:46:48 +02:00
dca
devfreq PM / devfreq: Add missing locking while setting suspend_freq 2020-05-10 10:31:34 +02:00
dio
dma dmaengine: owl: Use correct lock in owl_dma_get_pchan() 2020-05-27 17:46:43 +02:00
dma-buf dma-buf: Fix SET_NAME ioctl uapi 2020-05-06 08:15:01 +02:00
edac EDAC/skx: Use the mcmtr register to retrieve close_pg/bank_xor_enable 2020-06-17 16:40:33 +02:00
eisa
extcon extcon: axp288: Add wakeup support 2020-04-08 09:08:43 +02:00
firewire net: add annotations on hh->hh_len lockless accesses 2020-01-09 10:20:06 +01:00
firmware efi/libstub/x86: Work around LLVM ELF quirk build regression 2020-06-22 09:30:52 +02:00
fpga fpga: dfl: pci: fix return value of cci_pci_sriov_configure 2020-04-29 16:33:22 +02:00
fsi fsi: core: Fix small accesses and unaligned offsets via sysfs 2019-12-31 16:45:09 +01:00
gnss
gpio gpio: fix locking open drain IRQ lines 2020-06-03 08:21:28 +02:00
gpu drm: rcar-du: Set primary plane zpos immutably at initializing 2020-06-22 09:30:53 +02:00
greybus
hid HID: i2c-hid: add Schneider SCL142ALM to descriptor override 2020-06-07 13:18:47 +02:00
hsi
hv Drivers: hv: vmbus: Fix Suspend-to-Idle for Generation-2 VM 2020-05-06 08:15:09 +02:00
hwmon hwmon: (nct7904) Fix incorrect range of temperature limit registers 2020-06-03 08:21:14 +02:00
hwspinlock
hwtracing stm class: sys-t: Fix the use of time_after() 2020-03-25 08:25:56 +01:00
i2c i2c: altera: Fix race between xfer_msg and isr thread 2020-06-07 13:18:50 +02:00
i3c
ide ide: serverworks: potential overflow in svwks_set_pio_mode() 2020-02-24 08:36:53 +01:00
idle
iio iio: adc: stm32-adc: fix a wrong error message when probing interrupts 2020-06-10 20:24:56 +02:00
infiniband RDMA/uverbs: Make the event_queue fds return POLLERR when disassociated 2020-06-17 16:40:22 +02:00
input Input: synaptics - add a second working PNP_ID for Lenovo T470s 2020-06-17 16:40:21 +02:00
interconnect interconnect: qcom: qcs404: Walk the list safely on node removal 2019-12-17 19:55:39 +01:00
iommu iommu: Fix reference count leak in iommu_group_alloc. 2020-06-03 08:21:28 +02:00
ipack ipack: tpci200: fix error return code in tpci200_register() 2020-05-27 17:46:47 +02:00
irqchip irqchip/mbigen: Free msi_desc on device teardown 2020-04-23 10:36:20 +02:00
isdn
leds leds: core: Fix warning message when init_data 2020-04-23 10:36:37 +02:00
lightnvm
macintosh macintosh: windfarm: fix MODINFO regression 2020-03-18 07:17:53 +01:00
mailbox mailbox: imx: Fix Tx doorbell shutdown path 2020-01-04 19:18:30 +01:00
mcb
md dm multipath: use updated MPATHF_QUEUE_IO on mapping for bio-based mpath 2020-05-06 08:15:10 +02:00
media media: si2157: Better check for running tuner in init 2020-06-22 09:30:50 +02:00
memory memory: mtk-smi: Add PM suspend and resume ops 2020-01-17 19:48:59 +01:00
memstick
message scsi: mptfusion: Fix double fetch bug in ioctl 2020-01-23 08:22:35 +01:00
mfd mfd: intel-lpss: Use devm_ioremap_uc for MMIO 2020-05-10 10:31:30 +02:00
misc mei: release me_cl object reference 2020-05-27 17:46:47 +02:00
mmc mmc: sdio: Fix several potential memory leaks in mmc_sdio_init_card() 2020-06-17 16:40:38 +02:00
mtd mtd: Fix mtd not registered due to nvmem name collision 2020-05-27 17:46:22 +02:00
mux
net ixgbe: Fix XDP redirect on archs with PAGE_SIZE above 4K 2020-06-22 09:30:53 +02:00
nfc NFC: st21nfca: add missed kfree_skb() in an error path 2020-06-10 20:24:54 +02:00
ntb
nubus
nvdimm libnvdimm: Out of bounds read in __nd_ioctl() 2020-04-23 10:36:42 +02:00
nvme nvme: fix possible hang when ns scanning fails during error recovery 2020-05-14 07:58:18 +02:00
nvmem nvmem: qfprom: remove incorrect write support 2020-06-10 20:24:57 +02:00
of of: overlay: kmemleak in dup_and_fixup_symbol_prop() 2020-04-23 10:36:23 +02:00
opp opp: Free static OPPs on errors while adding them 2020-02-24 08:36:34 +01:00
oprofile
parisc
parport parport: load lowlevel driver if ports not found 2019-12-31 16:45:25 +01:00
pci PCI/PM: Adjust pcie_wait_for_link_delay() for caller delay 2020-06-17 16:40:23 +02:00
pcmcia
perf pmu/smmuv3: Clear IRQ affinity hint on device removal 2020-06-22 09:30:54 +02:00
phy phy: uniphier-usb3ss: Add Pro5 support 2020-04-23 10:36:33 +02:00
pinctrl pinctrl: cherryview: Add missing spinlock usage in chv_gpio_irq_handler 2020-05-20 08:20:19 +02:00
platform platform/x86: dell-laptop: don't register micmute LED if there is no token 2020-06-22 09:30:53 +02:00
pnp
power power: supply: axp288_fuel_gauge: Broaden vendor check for Intel Compute Sticks. 2020-04-23 10:36:41 +02:00
powercap powercap: intel_rapl: add NULL pointer check to rapl_mmio_cpu_online() 2020-01-14 20:08:18 +01:00
pps
ps3
ptp ptp: free ptp device pin descriptors properly 2020-01-23 08:22:51 +01:00
pwm pwm: bcm2835: Dynamically allocate base 2020-04-29 16:33:02 +02:00
rapidio rapidio: fix an error in get_user_pages_fast() error handling 2020-05-27 17:46:48 +02:00
ras
regulator regulator: stm32-vrefbuf: fix a possible overshoot when re-enabling 2020-03-12 13:00:29 +01:00
remoteproc remoteproc: Fix and restore the parenting hierarchy for vdev 2020-06-17 16:40:33 +02:00
reset reset: uniphier: Add SCSSI reset control for each channel 2020-02-24 08:36:41 +01:00
rpmsg rpmsg: char: release allocated memory 2020-01-14 20:08:37 +01:00
rtc rtc: 88pm860x: fix possible race condition 2020-04-23 10:36:31 +02:00
s390 s390/ism: fix error return code in ism_probe() 2020-05-20 08:20:26 +02:00
sbus
scsi scsi: lpfc: Fix negation of else clause in lpfc_prep_node_fc4type 2020-06-17 16:40:35 +02:00
sfi
sh
siox
slimbus
soc soc: mediatek: cmdq: return send msg error code 2020-06-03 08:21:19 +02:00
soundwire soundwire: intel: fix PDI/stream mapping for Bulk 2019-12-31 16:45:11 +01:00
spi spi: dw: Enable interrupts in accordance with DMA xfer mode 2020-06-22 09:30:55 +02:00
spmi spmi: pmic-arb: Set lockdep class for hierarchical irq domains 2020-02-19 19:53:07 +01:00
ssb
staging media: staging: ipu3: Fix stale list entries on parameter queue failure 2020-06-22 09:30:52 +02:00
target scsi: target: Put lun_ref at end of tmr processing 2020-05-27 17:46:40 +02:00
tc
tee tee: optee: Fix compilation issue with nommu 2020-02-05 21:22:49 +00:00
thermal thermal: brcmstb_thermal: Do not use DT coefficients 2020-03-05 16:43:50 +01:00
thunderbolt thunderbolt: Prevent crash if non-active NVMem file is read 2020-02-28 17:22:13 +01:00
tty tty: hvc_console, fix crashes on parallel open/close 2020-06-10 20:24:56 +02:00
uio uio: fix a sleep-in-atomic-context bug in uio_dmem_genirq_irqcontrol() 2020-02-24 08:36:27 +01:00
usb CDC-ACM: heed quirk also in error handling 2020-06-10 20:24:57 +02:00
vfio vfio/type1: Fix VA->PA translation for PFNMAP VMAs in vaddr_get_pfn() 2020-05-06 08:15:14 +02:00
vhost vhost/vsock: fix packet delivery order to monitoring devices 2020-05-27 17:46:31 +02:00
video video: fbdev: w100fb: Fix a potential double free. 2020-06-17 16:40:33 +02:00
virt
virtio virtio_ring: Fix mem leak with vring_new_virtqueue() 2020-03-18 07:17:55 +01:00
visorbus visorbus: fix uninitialized variable access 2020-02-24 08:36:47 +01:00
vlynq
vme vme: bridges: reduce stack usage 2020-02-24 08:36:48 +01:00
w1
watchdog watchdog: imx_sc_wdt: Fix reboot on crash 2020-06-17 16:40:27 +02:00
xen xen/pvcalls-back: test for errors when calling backend_connect() 2020-06-17 16:40:38 +02:00
zorro
Kconfig
Makefile