Merge branch 'sid-4.19.21-wip' into 'sid'
4.19.26 See merge request kernel-team/linux!126
This commit is contained in:
commit
ad9f27e1eb
|
@ -1,4 +1,606 @@
|
|||
linux (4.19.20-2) UNRELEASED; urgency=medium
|
||||
linux (4.19.26-1) UNRELEASED; urgency=medium
|
||||
|
||||
* New upstream stable update:
|
||||
https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.19.21
|
||||
- devres: Align data[] to ARCH_KMALLOC_MINALIGN
|
||||
- drm/bufs: Fix Spectre v1 vulnerability
|
||||
- drm/vgem: Fix vgem_init to get drm device available.
|
||||
- [arm*] pinctrl: bcm2835: Use raw spinlock for RT compatibility
|
||||
- [x86] ASoC: Intel: mrfld: fix uninitialized variable access
|
||||
- gpiolib: Fix possible use after free on label
|
||||
- [armhf] drm/sun4i: Initialize registers in tcon-top driver
|
||||
- genirq/affinity: Spread IRQs to all available NUMA nodes
|
||||
- [armhf] gpu: ipu-v3: image-convert: Prevent race between run and
|
||||
unprepare
|
||||
- wil6210: fix reset flow for Talyn-mb
|
||||
- wil6210: fix memory leak in wil_find_tx_bcast_2
|
||||
- ath10k: assign 'n_cipher_suites' for WCN3990
|
||||
- ath9k: dynack: use authentication messages for 'late' ack
|
||||
- scsi: lpfc: Correct LCB RJT handling
|
||||
- scsi: mpt3sas: Call sas_remove_host before removing the target devices
|
||||
- scsi: lpfc: Fix LOGO/PLOGI handling when triggerd by ABTS Timeout event
|
||||
- [armhf] 8808/1: kexec:offline panic_smp_self_stop CPU
|
||||
- [mips] clk: boston: fix possible memory leak in clk_boston_setup()
|
||||
- dlm: Don't swamp the CPU with callbacks queued during recovery
|
||||
- [x86] PCI: Fix Broadcom CNB20LE unintended sign extension (redux)
|
||||
- [powerpc] pseries: add of_node_put() in dlpar_detach_node()
|
||||
- crypto: aes_ti - disable interrupts while accessing S-box
|
||||
- [arm*] drm/vc4: ->x_scaling[1] should never be set to VC4_SCALING_NONE
|
||||
- serial: fsl_lpuart: clear parity enable bit when disable parity
|
||||
- ptp: check gettime64 return code in PTP_SYS_OFFSET ioctl
|
||||
- [mips] Boston: Disable EG20T prefetch
|
||||
- dpaa2-ptp: defer probe when portal allocation failed
|
||||
- iwlwifi: fw: do not set sgi bits for HE connection
|
||||
- fpga: altera-cvp: Fix registration for CvP incapable devices
|
||||
- [x86] fpga: altera-cvp: fix 'bad IO access' on x86_64
|
||||
- [x86] vbox: fix link error with 'gcc -Og'
|
||||
- platform/chrome: don't report EC_MKBP_EVENT_SENSOR_FIFO as wakeup
|
||||
- i40e: prevent overlapping tx_timeout recover
|
||||
- scsi: hisi_sas: change the time of SAS SSP connection
|
||||
- usbnet: smsc95xx: fix rx packet alignment
|
||||
- [armhf,arm64] drm/rockchip: fix for mailbox read size
|
||||
- [arm*] OMAP2+: hwmod: Fix some section annotations
|
||||
- drm/amd/display: fix gamma not being applied correctly
|
||||
- drm/amd/display: calculate stream->phy_pix_clk before clock mapping
|
||||
- bpf: libbpf: retry map creation without the name
|
||||
- net/mlx5: EQ, Use the right place to store/read IRQ affinity hint
|
||||
- modpost: validate symbol names also in find_elf_symbol
|
||||
- perf tools: Add Hygon Dhyana support
|
||||
- [armhf] soc/tegra: Don't leak device tree node reference
|
||||
- media: rc: ensure close() is called on rc_unregister_device
|
||||
- media: video-i2c: avoid accessing released memory area when removing
|
||||
driver
|
||||
- [armhf] media: mtk-vcodec: Release device nodes in
|
||||
mtk_vcodec_init_enc_pm()
|
||||
- ptp: Fix pass zero to ERR_PTR() in ptp_clock_register
|
||||
- dmaengine: xilinx_dma: Remove __aligned attribute on zynqmp_dma_desc_ll
|
||||
- [powerpc] 32: Add .data..Lubsan_data*/.data..Lubsan_type* sections
|
||||
explicitly
|
||||
- media: adv*/tc358743/ths8200: fill in min width/height/pixelclock
|
||||
- ACPI: SPCR: Consider baud rate 0 as preconfigured state
|
||||
- f2fs: move dir data flush to write checkpoint process
|
||||
- f2fs: fix race between write_checkpoint and write_begin
|
||||
- f2fs: fix wrong return value of f2fs_acl_create
|
||||
- i2c: sh_mobile: add support for r8a77990 (R-Car E3)
|
||||
- [arm64] io: Ensure calls to delay routines are ordered against prior
|
||||
readX()
|
||||
- net: aquantia: return 'err' if set MPI_DEINIT state fails
|
||||
- [sparc*] sunvdc: Do not spin in an infinite loop when vio_ldc_send()
|
||||
returns EAGAIN
|
||||
- soc: bcm: brcmstb: Don't leak device tree node reference
|
||||
- nfsd4: fix crash on writing v4_end_grace before nfsd startup
|
||||
- drm: Clear state->acquire_ctx before leaving
|
||||
drm_atomic_helper_commit_duplicated_state()
|
||||
- perf: arm_spe: handle devm_kasprintf() failure
|
||||
- [arm64] io: Ensure value passed to __iormb() is held in a 64-bit register
|
||||
- Thermal: do not clear passive state during system sleep
|
||||
- thermal: Fix locking in cooling device sysfs update cur_state
|
||||
- firmware/efi: Add NULL pointer checks in efivars API functions
|
||||
- [s390] zcrypt: improve special ap message cmd handling
|
||||
- mt76x0: dfs: fix IBI_R11 configuration on non-radar channels
|
||||
- [arm64] ftrace: don't adjust the LR value
|
||||
- ARM: dts: mmp2: fix TWSI2
|
||||
- ARM: dts: aspeed: add missing memory unit-address
|
||||
- [x86] fpu: Add might_fault() to user_insn()
|
||||
- media: i2c: TDA1997x: select CONFIG_HDMI
|
||||
- media: DaVinci-VPBE: fix error handling in vpbe_initialize()
|
||||
- smack: fix access permissions for keyring
|
||||
- usb: dwc3: Correct the logic for checking TRB full in
|
||||
__dwc3_prepare_one_trb()
|
||||
- usb: dwc2: Disable power down feature on Samsung SoCs
|
||||
- usb: hub: delay hub autosuspend if USB3 port is still link training
|
||||
- timekeeping: Use proper seqcount initializer
|
||||
- usb: mtu3: fix the issue about SetFeature(U1/U2_Enable)
|
||||
- [armhf] clk: sunxi-ng: a33: Set CLK_SET_RATE_PARENT for all audio module
|
||||
clocks
|
||||
- media: imx274: select REGMAP_I2C
|
||||
- drm/amdgpu/powerplay: fix clock stretcher limits on polaris (v2)
|
||||
- tipc: fix node keep alive interval calculation
|
||||
- driver core: Move async_synchronize_full call
|
||||
- kobject: return error code if writing /sys/.../uevent fails
|
||||
- IB/hfi1: Unreserve a reserved request when it is completed
|
||||
- usb: dwc3: trace: add missing break statement to make compiler happy
|
||||
- [mips] gpio: mt7621: report failure of devm_kasprintf()
|
||||
- [mips] gpio: mt7621: pass mediatek_gpio_bank_probe() failure up the stack
|
||||
- [x86] iommu/amd: Fix amd_iommu=force_isolation
|
||||
- [armhf] dts: Fix OMAP4430 SDP Ethernet startup
|
||||
- [mips] bpf: fix encoding bug for mm_srlv32_op
|
||||
- media: coda: fix H.264 deblocking filter controls
|
||||
- [armel] dts: Fix up the D-Link DIR-685 MTD partition info
|
||||
- watchdog: renesas_wdt: don't set divider while watchdog is running
|
||||
- [armhf] dts: imx51-zii-rdu1: Do not specify "power-gpio" for hpa1
|
||||
- usb: dwc3: gadget: Disable CSP for stream OUT ep
|
||||
- [arm64] iommu/arm-smmu-v3: Avoid memory corruption from Hisilicon MSI
|
||||
payloads
|
||||
- [arm64] iommu/arm-smmu: Add support for qcom,smmu-v2 variant
|
||||
- [arm64] iommu/arm-smmu-v3: Use explicit mb() when moving cons pointer
|
||||
- [armhf] clk: imx6sl: ensure MMDC CH0 handshake is bypassed
|
||||
- [x86] platform: mlx-platform: Fix tachometer registers
|
||||
- cpuidle: big.LITTLE: fix refcount leak
|
||||
- OPP: Use opp_table->regulators to verify no regulator case
|
||||
- tee: optee: avoid possible double list_del()
|
||||
- drm/msm/dsi: fix dsi clock names in DSI 10nm PLL driver
|
||||
- drm/msm: dpu: Only check flush register against pending flushes
|
||||
- lightnvm: pblk: fix resubmission of overwritten write err lbas
|
||||
- lightnvm: pblk: add lock protection to list operations
|
||||
- i2c-axxia: check for error conditions first
|
||||
- [armhf] phy: sun4i-usb: add support for missing USB PHY index
|
||||
- udf: Fix BUG on corrupted inode
|
||||
- selftests/bpf: use __bpf_constant_htons in test_prog.c
|
||||
- [armel] pxa: avoid section mismatch warning
|
||||
- [armhf] ASoC: fsl: Fix SND_SOC_EUKREA_TLV320 build error on i.MX8M
|
||||
- [powerpc] KVM: Book3S: Only report KVM_CAP_SPAPR_TCE_VFIO on powernv
|
||||
machines
|
||||
- [arm*] mmc: bcm2835: Recover from MMC_SEND_EXT_CSD
|
||||
- [arm*] mmc: bcm2835: reset host on timeout
|
||||
- memstick: Prevent memstick host from getting runtime suspended during
|
||||
card detection
|
||||
- mmc: sdhci-of-esdhc: Fix timeout checks
|
||||
- mmc: sdhci-omap: Fix timeout checks
|
||||
- mmc: sdhci-xenon: Fix timeout checks
|
||||
- [mips] mmc: jz4740: Get CD/WP GPIOs from descriptors
|
||||
- usb: renesas_usbhs: add support for RZ/G2E
|
||||
- btrfs: harden agaist duplicate fsid on scanned devices
|
||||
- serial: sh-sci: Fix locking in sci_submit_rx()
|
||||
- serial: sh-sci: Resume PIO in sci_rx_interrupt() on DMA failure
|
||||
- tty: serial: samsung: Properly set flags in autoCTS mode
|
||||
- perf test: Fix perf_event_attr test failure
|
||||
- perf dso: Fix unchecked usage of strncpy()
|
||||
- perf header: Fix unchecked usage of strncpy()
|
||||
- btrfs: use tagged writepage to mitigate livelock of snapshot
|
||||
- perf probe: Fix unchecked usage of strncpy()
|
||||
- i2c: sh_mobile: Add support for r8a774c0 (RZ/G2E)
|
||||
- bnxt_en: Disable MSIX before re-reserving NQs/CMPL rings.
|
||||
- [x86] tools/power/x86/intel_pstate_tracer: Fix non root execution for
|
||||
post processing a trace file
|
||||
- livepatch: check kzalloc return values
|
||||
- [arm64] KVM: Skip MMIO insn after emulation
|
||||
- usb: musb: dsps: fix otg state machine
|
||||
- usb: musb: dsps: fix runtime pm for peripheral mode
|
||||
- perf header: Fix up argument to ctime()
|
||||
- perf tools: Cast off_t to s64 to avoid warning on bionic libc
|
||||
- percpu: convert spin_lock_irq to spin_lock_irqsave.
|
||||
- [arm64] net: hns3: fix incomplete uninitialization of IRQ in the
|
||||
hns3_nic_uninit_vector_data()
|
||||
- drm/amd/display: Add retry to read ddc_clock pin
|
||||
- Bluetooth: hci_bcm: Handle deferred probing for the clock supply
|
||||
- drm/amd/display: fix YCbCr420 blank color
|
||||
- [powerpc] uaccess: fix warning/error with access_ok()
|
||||
- mac80211: fix radiotap vendor presence bitmap handling
|
||||
- xfrm6_tunnel: Fix spi check in __xfrm6_tunnel_alloc_spi
|
||||
- mlxsw: spectrum: Properly cleanup LAG uppers when removing port from LAG
|
||||
- scsi: smartpqi: correct host serial num for ssa
|
||||
- scsi: smartpqi: correct volume status
|
||||
- scsi: smartpqi: increase fw status register read timeout
|
||||
- cw1200: Fix concurrency use-after-free bugs in cw1200_hw_scan()
|
||||
- [arm64] net: hns3: add max vector number check for pf
|
||||
- [powerpc] perf: Fix thresholding counter data for unknown type
|
||||
- iwlwifi: mvm: fix setting HE ppe FW config
|
||||
- [powerpc] powernv/ioda: Allocate indirect TCE levels of cached userspace
|
||||
addresses on demand
|
||||
- mlx5: update timecounter at least twice per counter overflow
|
||||
- drbd: narrow rcu_read_lock in drbd_sync_handshake
|
||||
- drbd: disconnect, if the wrong UUIDs are attached on a connected peer
|
||||
- drbd: skip spurious timeout (ping-timeo) when failing promote
|
||||
- drbd: Avoid Clang warning about pointless switch statment
|
||||
- drm/amd/display: validate extended dongle caps
|
||||
- video: clps711x-fb: release disp device node in probe()
|
||||
- md: fix raid10 hang issue caused by barrier
|
||||
- fbdev: fbmem: behave better with small rotated displays and many CPUs
|
||||
- i40e: define proper net_device::neigh_priv_len
|
||||
- ice: Do not enable NAPI on q_vectors that have no rings
|
||||
- igb: Fix an issue that PME is not enabled during runtime suspend
|
||||
- ACPI/APEI: Clear GHES block_status before panic()
|
||||
- fbdev: fbcon: Fix unregister crash when more than one framebuffer
|
||||
- [powerpc] mm: Fix reporting of kernel execute faults on the 8xx
|
||||
- [x86] KVM: svm: report MSR_IA32_MCG_EXT_CTL as unsupported
|
||||
- [powerpc] fadump: Do not allow hot-remove memory from fadump reserved
|
||||
area.
|
||||
- kvm: Change offset in kvm_write_guest_offset_cached to unsigned
|
||||
- NFS: nfs_compare_mount_options always compare auth flavors.
|
||||
- perf build: Don't unconditionally link the libbfd feature test to
|
||||
-liberty and -lz
|
||||
- hwmon: (lm80) fix a missing check of the status of SMBus read
|
||||
- hwmon: (lm80) fix a missing check of bus read in lm80 probe
|
||||
- seq_buf: Make seq_buf_puts() null-terminate the buffer
|
||||
- crypto: ux500 - Use proper enum in cryp_set_dma_transfer
|
||||
- crypto: ux500 - Use proper enum in hash_set_dma_transfer
|
||||
- [mips] ralink: Select CONFIG_CPU_MIPSR2_IRQ_VI on MT7620/8
|
||||
- cifs: check ntwrk_buf_start for NULL before dereferencing it
|
||||
- f2fs: fix use-after-free issue when accessing sbi->stat_info
|
||||
- um: Avoid marking pages with "changed protection"
|
||||
- niu: fix missing checks of niu_pci_eeprom_read
|
||||
- f2fs: fix sbi->extent_list corruption issue
|
||||
- cgroup: fix parsing empty mount option string
|
||||
- perf python: Do not force closing original perf descriptor in
|
||||
evlist.get_pollfd()
|
||||
- scripts/decode_stacktrace: only strip base path when a prefix of the path
|
||||
- arch/sh/boards/mach-kfr2r09/setup.c: fix struct mtd_oob_ops build warning
|
||||
- ocfs2: don't clear bh uptodate for block read
|
||||
- ocfs2: improve ocfs2 Makefile
|
||||
- mm/page_alloc.c: don't call kasan_free_pages() at deferred mem init
|
||||
- zram: fix lockdep warning of free block handling
|
||||
- isdn: hisax: hfc_pci: Fix a possible concurrency use-after-free bug in
|
||||
HFCPCI_l1hw()
|
||||
- gdrom: fix a memory leak bug
|
||||
- fsl/fman: Use GFP_ATOMIC in {memac,tgec}_add_hash_mac_address()
|
||||
- block/swim3: Fix -EBUSY error when re-opening device after unmount
|
||||
- [arm*] thermal: bcm2835: enable hwmon explicitly
|
||||
- kdb: Don't back trace on a cpu that didn't round up
|
||||
- [armhf] PCI: imx: Enable MSI from downstream components
|
||||
- thermal: generic-adc: Fix adc to temp interpolation
|
||||
- [arm64] sve: ptrace: Fix SVE_PT_REGS_OFFSET definition
|
||||
- kernel/hung_task.c: break RCU locks based on jiffies
|
||||
- proc/sysctl: fix return error for proc_doulongvec_minmax()
|
||||
- kernel/hung_task.c: force console verbose before panic
|
||||
- fs/epoll: drop ovflist branch prediction
|
||||
- exec: load_script: don't blindly truncate shebang string
|
||||
- kernel/kcov.c: mark write_comp_data() as notrace
|
||||
- scripts/gdb: fix lx-version string output
|
||||
- xfs: Fix xqmstats offsets in /proc/fs/xfs/xqmstat
|
||||
- xfs: cancel COW blocks before swapext
|
||||
- xfs: Fix error code in 'xfs_ioc_getbmap()'
|
||||
- xfs: fix overflow in xfs_attr3_leaf_verify
|
||||
- xfs: fix shared extent data corruption due to missing cow reservation
|
||||
- xfs: fix transient reference count error in
|
||||
xfs_buf_resubmit_failed_buffers
|
||||
- xfs: delalloc -> unwritten COW fork allocation can go wrong
|
||||
- fs/xfs: fix f_ffree value for statfs when project quota is set
|
||||
- xfs: fix PAGE_MASK usage in xfs_free_file_space
|
||||
- xfs: fix inverted return from xfs_btree_sblock_verify_crc
|
||||
- thermal: hwmon: inline helpers when CONFIG_THERMAL_HWMON is not set
|
||||
- dccp: fool proof ccid_hc_[rt]x_parse_options()
|
||||
- enic: fix checksum validation for IPv6
|
||||
- lib/test_rhashtable: Make test_insert_dup() allocate its hash table
|
||||
dynamically
|
||||
- net: dp83640: expire old TX-skb
|
||||
- net: dsa: Fix lockdep false positive splat
|
||||
- net: dsa: Fix NULL checking in dsa_slave_set_eee()
|
||||
- net: dsa: mv88e6xxx: Fix counting of ATU violations
|
||||
- net: dsa: slave: Don't propagate flag changes on down slave interfaces
|
||||
- net/mlx5e: Force CHECKSUM_UNNECESSARY for short ethernet frames
|
||||
- net: systemport: Fix WoL with password after deep sleep
|
||||
- rds: fix refcount bug in rds_sock_addref
|
||||
- Revert "net: phy: marvell: avoid pause mode on SGMII-to-Copper for
|
||||
88e151x"
|
||||
- rxrpc: bad unlock balance in rxrpc_recvmsg
|
||||
- sctp: check and update stream->out_curr when allocating stream_out
|
||||
- sctp: walk the list of asoc safely (CVE-2019-8956)
|
||||
- skge: potential memory corruption in skge_get_regs()
|
||||
- virtio_net: Account for tx bytes and packets on sending xdp_frames
|
||||
- net/mlx5e: FPGA, fix Innova IPsec TX offload data path performance
|
||||
- xfs: eof trim writeback mapping as soon as it is cached
|
||||
- ALSA: compress: Fix stop handling on compressed capture streams
|
||||
- ALSA: usb-audio: Add support for new T+A USB DAC
|
||||
- ALSA: hda - Serialize codec registrations
|
||||
- ALSA: hda/realtek - Fix lose hp_pins for disable auto mute
|
||||
- ALSA: hda/realtek - Use a common helper for hp pin reference
|
||||
- ALSA: hda/realtek - Headset microphone support for System76 darp5
|
||||
- fuse: call pipe_buf_release() under pipe lock
|
||||
- fuse: decrement NR_WRITEBACK_TEMP on the right page
|
||||
- fuse: handle zero sized retrieve correctly
|
||||
- [arm*] dmaengine: bcm2835: Fix interrupt race on RT
|
||||
- [arm*] dmaengine: bcm2835: Fix abort of transactions
|
||||
- [armhf] dmaengine: imx-dma: fix wrong callback invoke
|
||||
- futex: Handle early deadlock return correctly
|
||||
- [arm64] irqchip/gic-v3-its: Plug allocation race for devices sharing a
|
||||
DevID
|
||||
- [armhf] usb: phy: am335x: fix race condition in _probe
|
||||
- usb: dwc3: gadget: Handle 0 xfer length for OUT EP
|
||||
- usb: gadget: udc: net2272: Fix bitwise and boolean operations
|
||||
- usb: gadget: musb: fix short isoc packets with inventra dma
|
||||
- staging: speakup: fix tty-operation NULL derefs
|
||||
- scsi: cxlflash: Prevent deadlock when adapter probe fails
|
||||
- scsi: aic94xx: fix module loading
|
||||
- cpu/hotplug: Fix "SMT disabled by BIOS" detection for KVM
|
||||
- [x86] perf/x86/intel/uncore: Add Node ID mask
|
||||
- [x86] MCE: Initialize mce.bank in the case of a fatal error in
|
||||
mce_no_way_out()
|
||||
- perf/core: Don't WARN() for impossible ring-buffer sizes
|
||||
- perf tests evsel-tp-sched: Fix bitwise operator
|
||||
- serial: fix race between flush_to_ldisc and tty_open
|
||||
- serial: 8250_pci: Make PCI class test non fatal
|
||||
- serial: sh-sci: Do not free irqs that have already been freed
|
||||
- cacheinfo: Keep the old value if of_property_read_u32 fails
|
||||
- IB/hfi1: Add limit test for RC/UC send via loopback
|
||||
- [x86] perf/x86/intel: Delay memory deallocation until x86_pmu_dead_cpu()
|
||||
- ath9k: dynack: make ewma estimation faster
|
||||
- ath9k: dynack: check da->enabled first in sampling routines
|
||||
https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.19.22
|
||||
- mtd: Make sure mtd->erasesize is valid even if the partition is of size 0
|
||||
- mtd: rawnand: gpmi: fix MX28 bus master lockup problem
|
||||
- libata: Add NOLPM quirk for SAMSUNG MZ7TE512HMHP-000L1 SSD
|
||||
- [armhf, arm64] iio: adc: axp288: Fix TS-pin handling
|
||||
- signal: Always notice exiting tasks
|
||||
- signal: Better detection of synchronous signals
|
||||
- [armhf, arm64] misc: vexpress: Off by one in vexpress_syscfg_exec()
|
||||
- [x86] mei: me: add ice lake point device id.
|
||||
- debugfs: fix debugfs_rename parameter checking
|
||||
- [arm64] pinctrl: sunxi: Correct number of IRQ banks on H6 main pin
|
||||
controller
|
||||
- [x86] pinctrl: cherryview: fix Strago DMI workaround
|
||||
- tracing: uprobes: Fix typo in pr_fmt string
|
||||
- [mips*] cm: reprime error cause
|
||||
- [mips*] OCTEON: don't set octeon_dma_bar_type if PCI is disabled
|
||||
- [mips*] VDSO: Use same -m%-float cflag as the kernel proper
|
||||
- [mips*] loongson64: remove unreachable(), fix loongson_poweroff().
|
||||
- [mips*] VDSO: Include $(ccflags-vdso) in o32,n32 .lds builds
|
||||
- [arm64] firmware: arm_scmi: provide the mandatory device release callback
|
||||
- [powerpc*] radix: Fix kernel crash with mremap()
|
||||
- mic: vop: Fix use-after-free on remove
|
||||
- mac80211: ensure that mgmt tx skbs have tailroom for encryption
|
||||
- drm/modes: Prevent division by zero htotal
|
||||
- drm/amd/powerplay: Fix missing break in switch
|
||||
- [x86] drm/i915: always return something on DDI clock selection
|
||||
- [x86] drm/vmwgfx: Fix setting of dma masks
|
||||
- [x86] drm/vmwgfx: Return error code from vmw_execbuf_copy_fence_user
|
||||
- SUNRPC: Always drop the XPRT_LOCK on XPRT_CLOSE_WAIT
|
||||
- xfrm: Make set-mark default behavior backward compatible
|
||||
- Revert "ext4: use ext4_write_inode() when fsyncing w/o a journal"
|
||||
- libceph: avoid KEEPALIVE_PENDING races in ceph_con_keepalive()
|
||||
- xfrm: refine validation of template and selector families
|
||||
- batman-adv: Avoid WARN on net_device without parent in netns
|
||||
- batman-adv: Force mac header to start of data on xmit
|
||||
- svcrdma: Reduce max_send_sges
|
||||
- svcrdma: Remove max_sge check at connect time
|
||||
https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.19.23
|
||||
- Revert "exec: load_script: don't blindly truncate shebang string"
|
||||
https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.19.24
|
||||
- dt-bindings: eeprom: at24: add "atmel,24c2048" compatible string
|
||||
- eeprom: at24: add support for 24c2048
|
||||
- blk-mq: fix a hung issue when fsync
|
||||
- [armel, armhf] 8789/1: signal: copy registers using __copy_to_user()
|
||||
- [armel, armhf] 8790/1: signal: always use __copy_to_user to save iwmmxt
|
||||
context
|
||||
- [armel, armhf] 8791/1: vfp: use __copy_to_user() when saving VFP state
|
||||
- [armel, armhf] 8792/1: oabi-compat: copy oabi events using
|
||||
__copy_to_user()
|
||||
- [armel, armhf] 8793/1: signal: replace __put_user_error with __put_user
|
||||
- [armel, armhf] 8794/1: uaccess: Prevent speculative use of the current
|
||||
addr_limit
|
||||
- [armel, armhf] 8795/1: spectre-v1.1: use put_user() for __put_user()
|
||||
- [armel, armhf] 8796/1: spectre-v1,v1.1: provide helpers for address
|
||||
sanitization
|
||||
- [armel, armhf] 8797/1: spectre-v1.1: harden __copy_to_user
|
||||
- [armel, armhf] 8810/1: vfp: Fix wrong assignement to ufp_exc
|
||||
- [armel, armhfl armhf] make lookup_processor_type() non-__init
|
||||
- [armel, armhf] split out processor lookup
|
||||
- [armel, armhf] clean up per-processor check_bugs method call
|
||||
- [armel, armhf] add PROC_VTABLE and PROC_TABLE macros
|
||||
- [armel, armhf] spectre-v2: per-CPU vtables to work around big.Little
|
||||
systems
|
||||
- [armel, armhf] ensure that processor vtables is not lost after boot
|
||||
- [armel, armhf] fix the cockup in the previous patch
|
||||
- drm/amdgpu/sriov:Correct pfvf exchange logic
|
||||
- [i386] ACPI: NUMA: Use correct type for printing addresses on i386-PAE
|
||||
- perf report: Fix wrong iteration count in --branch-history
|
||||
- perf test shell: Use a fallback to get the pathname in vfs_getname
|
||||
- [riscv64] riscv: fix trace_sys_exit hook
|
||||
- cpufreq: check if policy is inactive early in __cpufreq_get()
|
||||
- drm/bridge: tc358767: add bus flags
|
||||
- drm/bridge: tc358767: add defines for DP1_SRCCTRL & PHY_2LANE
|
||||
- drm/bridge: tc358767: fix single lane configuration
|
||||
- drm/bridge: tc358767: fix initial DP0/1_SRCCTRL value
|
||||
- drm/bridge: tc358767: reject modes which require too much BW
|
||||
- drm/bridge: tc358767: fix output H/V syncs
|
||||
- nvme-pci: use the same attributes when freeing host_mem_desc_bufs.
|
||||
- nvme-pci: fix out of bounds access in nvme_cqe_pending
|
||||
- nvme-multipath: zero out ANA log buffer
|
||||
- nvme: pad fake subsys NQN vid and ssvid with zeros
|
||||
- drm/amdgpu: set WRITE_BURST_LENGTH to 64B to workaround SDMA1 hang
|
||||
- [armel] dts: kirkwood: Fix polarity of GPIO fan lines
|
||||
- [armel, armhf] gpio: pl061: handle failed allocations
|
||||
- drm/nouveau: Don't disable polling in fallback mode
|
||||
- drm/nouveau/falcon: avoid touching registers if engine is off
|
||||
- cifs: Limit memory used by lock request calls to a page
|
||||
- [x86] kvm: sev: Fail KVM_SEV_INIT if already initialized
|
||||
- CIFS: Do not assume one credit for async responses
|
||||
- [arm*] gpio: mxc: move gpio noirq suspend/resume to syscore phase
|
||||
- [x86] Revert "Input: elan_i2c - add ACPI ID for touchpad in ASUS Aspire
|
||||
F5-573G"
|
||||
- [x86] Input: elan_i2c - add ACPI ID for touchpad in Lenovo V330-15ISK
|
||||
- [armhf] OMAP5+: Fix inverted nirq pin interrupts with irq_set_type
|
||||
- perf/core: Fix impossible ring-buffer sizes warning
|
||||
- [x86] perf: Add check_period PMU callback
|
||||
- [x86] ALSA: hda - Add quirk for HP EliteBook 840 G5
|
||||
- ALSA: usb-audio: Fix implicit fb endpoint setup by quirk
|
||||
- ASoC: hdmi-codec: fix oops on re-probe
|
||||
- tools uapi: fix Alpha support
|
||||
- [riscv64] Add pte bit to distinguish swap from invalid
|
||||
- [x86] kvm/nVMX: read from MSR_IA32_VMX_PROCBASED_CTLS2 only when it is
|
||||
available
|
||||
- [x86] kvm: vmx: Fix entry number check for add_atomic_switch_msr()
|
||||
- [arm*] mmc: sunxi: Filter out unsupported modes declared in the device
|
||||
tree
|
||||
- mmc: block: handle complete_work on separate workqueue
|
||||
- Input: bma150 - register input device after setting private data
|
||||
- [x86] Input: elantech - enable 3rd button support on Fujitsu CELSIUS H780
|
||||
- Revert "nfsd4: return default lease period"
|
||||
- Revert "mm: don't reclaim inodes with many attached pages"
|
||||
- Revert "mm: slowly shrink slabs with a relatively small number of
|
||||
objects"
|
||||
- alpha: fix page fault handling for r16-r18 targets
|
||||
- alpha: Fix Eiger NR_IRQS to 128
|
||||
- [s390*] zcrypt: fix specification exception on z196 during ap probe
|
||||
- tracing/uprobes: Fix output for multiple string arguments
|
||||
- [x86] platform/UV: Use efi_runtime_lock to serialise BIOS calls
|
||||
- scsi: sd: fix entropy gathering for most rotational disks
|
||||
- signal: Restore the stop PTRACE_EVENT_EXIT
|
||||
- md/raid1: don't clear bitmap bits on interrupted recovery.
|
||||
- [x86] a.out: Clear the dump structure initially
|
||||
- dm crypt: don't overallocate the integrity tag space
|
||||
- dm thin: fix bug where bio that overwrites thin block ignores FUA
|
||||
- drm: Use array_size() when creating lease
|
||||
- [x86] drm/vkms: Fix license inconsistent
|
||||
- [x86] drm/i915: Block fbdev HPD processing during suspend
|
||||
- [x86] drm/i915: Prevent a race during I915_GEM_MMAP ioctl with WC set
|
||||
- mm: proc: smaps_rollup: fix pss_locked calculation
|
||||
https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.19.25
|
||||
- af_packet: fix raw sockets over 6in4 tunnel
|
||||
- [arm64, armhf] dsa: mv88e6xxx: Ensure all pending interrupts are handled
|
||||
prior to exit
|
||||
- mlxsw: __mlxsw_sp_port_headroom_set(): Fix a use of local variable
|
||||
- net: crypto set sk to NULL when af_alg_release. (CVE-2019-8912)
|
||||
- net: Fix for_each_netdev_feature on Big endian
|
||||
- net: fix IPv6 prefix route residue
|
||||
- net: ip6_gre: initialize erspan_ver just for erspan tunnels
|
||||
- net: ipv4: use a dedicated counter for icmp_v4 redirect packets
|
||||
- net: phy: xgmiitorgmii: Support generic PHY status read
|
||||
- net: stmmac: Fix a race in EEE enable callback
|
||||
- net: stmmac: handle endianness in dwmac4_get_timestamp
|
||||
- sky2: Increase D3 delay again
|
||||
- vhost: correctly check the return value of translate_desc() in log_used()
|
||||
- vsock: cope with memory allocation failure at socket creation time
|
||||
- vxlan: test dev->flags & IFF_UP before calling netif_rx()
|
||||
- net: Add header for usage of fls64()
|
||||
- tcp: clear icsk_backoff in tcp_write_queue_purge()
|
||||
- tcp: tcp_v4_err() should be more careful
|
||||
- net: Do not allocate page fragments that are not skb aligned
|
||||
- hwmon: (lm80) Fix missing unlock on error in set_fan_div()
|
||||
- scsi: target/core: Use kmem_cache_free() instead of kfree()
|
||||
- PCI: Fix __initdata issue with "pci=disable_acs_redir" parameter
|
||||
- sunrpc: fix 4 more call sites that were using stack memory with a
|
||||
scatterlist
|
||||
- netfilter: nf_nat_snmp_basic: add missing length checks in ASN.1 cbs
|
||||
(CVE-2019-9162)
|
||||
- net/x25: do not hold the cpu too long in x25_new_lci()
|
||||
- ax25: fix possible use-after-free
|
||||
https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.19.26
|
||||
- [armel armhf] 8834/1: Fix: kprobes: optimized kprobes illegal instruction
|
||||
- tracing: Fix number of entries in trace header
|
||||
- [mips*] eBPF: Always return sign extended 32b values
|
||||
- [armel] gpio: pxa: avoid attempting to set pin direction via pinctrl on
|
||||
MMP2
|
||||
- mac80211: Restore vif beacon interval if start ap fails
|
||||
- mac80211: Use linked list instead of rhashtable walk for mesh tables
|
||||
- mac80211: Free mpath object when rhashtable insertion fails
|
||||
- libceph: handle an empty authorize reply
|
||||
- ceph: avoid repeatedly adding inode to mdsc->snap_flush_list
|
||||
- numa: change get_mempolicy() to use nr_node_ids instead of MAX_NUMNODES
|
||||
- proc, oom: do not report alien mms when setting oom_score_adj
|
||||
- [x86] ALSA: hda/realtek - Headset microphone and internal speaker
|
||||
support for System76 oryp5
|
||||
- [x86] ALSA: hda/realtek: Disable PC beep in passthrough on alc285
|
||||
- KEYS: allow reaching the keys quotas exactly
|
||||
- backlight: pwm_bl: Fix devicetree parsing with auto-generated brightness
|
||||
tables
|
||||
- [armhf] mfd: ti_am335x_tscadc: Use PLATFORM_DEVID_AUTO while registering
|
||||
mfd cells
|
||||
- pvcalls-front: read all data before closing the connection
|
||||
- pvcalls-front: don't try to free unallocated rings
|
||||
- pvcalls-front: properly allocate sk
|
||||
- pvcalls-back: set -ENOTCONN in pvcalls_conn_back_read
|
||||
- mfd: twl-core: Fix section annotations on {,un}protect_pm_master
|
||||
- mfd: db8500-prcmu: Fix some section annotations
|
||||
- mfd: ab8500-core: Return zero in get_register_interruptible()
|
||||
- mfd: qcom_rpm: write fw_version to CTRL_REG
|
||||
- mfd: wm5110: Add missing ASRC rate register
|
||||
- mfd: axp20x: Add AC power supply cell for AXP813
|
||||
- mfd: axp20x: Re-align MFD cell entries
|
||||
- mfd: axp20x: Add supported cells for AXP803
|
||||
- mfd: cros_ec_dev: Add missing mfd_remove_devices() call in remove
|
||||
- mfd: tps65218: Use devm_regmap_add_irq_chip and clean up error path in
|
||||
probe()
|
||||
- mfd: mc13xxx: Fix a missing check of a register-read failure
|
||||
- qed: Fix qed_chain_set_prod() for PBL chains with non power of 2 page
|
||||
count
|
||||
- qed: Fix qed_ll2_post_rx_buffer_notify_fw() by adding a write memory
|
||||
barrier
|
||||
- net: hns: Fix use after free identified by SLUB debug
|
||||
- bpf: Fix [::] -> [::1] rewrite in sys_sendmsg
|
||||
- selftests/bpf: Test [::] -> [::1] rewrite in sys_sendmsg in
|
||||
test_sock_addr
|
||||
- watchdog: mt7621_wdt/rt2880_wdt: Fix compilation problem
|
||||
- net/mlx4: Get rid of page operation after dma_alloc_coherent
|
||||
- xprtrdma: Double free in rpcrdma_sendctxs_create()
|
||||
- mlxsw: spectrum_acl: Add cleanup after C-TCAM update error condition
|
||||
- selftests: forwarding: Add a test for VLAN deletion
|
||||
- netfilter: nf_tables: fix leaking object reference count
|
||||
- scsi: qla4xxx: check return code of qla4xxx_copy_from_fwddb_param
|
||||
- scsi: isci: initialize shost fully before calling scsi_add_host()
|
||||
- include/linux/compiler*.h: fix OPTIMIZER_HIDE_VAR
|
||||
- netfilter: nft_flow_offload: Fix reverse route lookup
|
||||
- bpf: correctly set initial window on active Fast Open sender
|
||||
- bpf: fix panic in stack_map_get_build_id() on i386 and arm32
|
||||
- netfilter: nft_flow_offload: fix interaction with vrf slave device
|
||||
- RDMA/mthca: Clear QP objects during their allocation
|
||||
- powerpc/8xx: fix setting of pagetable for Abatron BDI debug tool.
|
||||
- acpi/nfit: Fix race accessing memdev in nfit_get_smbios_id()
|
||||
- net: stmmac: Fix PCI module removal leak
|
||||
- net: stmmac: dwxgmac2: Only clear interrupts that are active
|
||||
- net: stmmac: Check if CBS is supported before configuring
|
||||
- net: stmmac: Fix the logic of checking if RX Watchdog must be enabled
|
||||
- net: stmmac: Prevent RX starvation in stmmac_napi_poll()
|
||||
- isdn: i4l: isdn_tty: Fix some concurrency double-free bugs
|
||||
- scsi: tcmu: avoid cmd/qfull timers updated whenever a new cmd comes
|
||||
- scsi: ufs: Fix system suspend status
|
||||
- scsi: qedi: Add ep_state for login completion on un-reachable targets
|
||||
- scsi: ufs: Fix geometry descriptor size
|
||||
- scsi: cxgb4i: add wait_for_completion()
|
||||
- netfilter: nft_flow_offload: fix checking method of conntrack helper
|
||||
- always clear the X2APIC_ENABLE bit for PV guest
|
||||
- [armhf, arm64] drm/meson: add missing of_node_put
|
||||
- drm/amdkfd: Don't assign dGPUs to APU topology devices
|
||||
- drm/amd/display: fix PME notification not working in RV desktop
|
||||
- vhost: return EINVAL if iovecs size does not match the message size
|
||||
- [armhf, arm64] drm/sun4i: backend: add missing of_node_puts
|
||||
- bpf: don't assume build-id length is always 20 bytes
|
||||
- bpf: zero out build_id for BPF_STACK_BUILD_ID_IP
|
||||
- atm: he: fix sign-extension overflow on large shift
|
||||
- hwmon: (tmp421) Correct the misspelling of the tmp442 compatible
|
||||
attribute in OF device ID table
|
||||
- [armhf] leds: lp5523: fix a missing check of return value of lp55xx_read
|
||||
- bpf: bpf_setsockopt: reset sock dst on SO_MARK changes
|
||||
- dpaa_eth: NETIF_F_LLTX requires to do our own update of trans_start
|
||||
- mlxsw: pci: Return error on PCI reset timeout
|
||||
- net: bridge: Mark FDB entries that were added by user as such
|
||||
- mlxsw: spectrum_switchdev: Do not treat static FDB entries as sticky
|
||||
- net/mlx5e: Fix wrong (zero) TX drop counter indication for representor
|
||||
- isdn: avm: Fix string plus integer warning from Clang
|
||||
- batman-adv: fix uninit-value in batadv_interface_tx()
|
||||
- inet_diag: fix reporting cgroup classid and fallback to priority
|
||||
- ipv6: propagate genlmsg_reply return code
|
||||
- net: ena: fix race between link up and device initalization
|
||||
- net/mlx4_en: Force CHECKSUM_NONE for short ethernet frames
|
||||
- net/mlx5e: Don't overwrite pedit action when multiple pedit used
|
||||
- net/packet: fix 4gb buffer limit due to overflow check
|
||||
- net: sfp: do not probe SFP module before we're attached
|
||||
- sctp: call gso_reset_checksum when computing checksum in sctp_gso_segment
|
||||
- sctp: set stream ext to NULL after freeing it in sctp_stream_outq_migrate
|
||||
- team: avoid complex list operations in team_nl_cmd_options_set()
|
||||
- Revert "socket: fix struct ifreq size in compat ioctl"
|
||||
- Revert "kill dev_ifsioc()"
|
||||
- net: socket: fix SIOCGIFNAME in compat
|
||||
- net: socket: make bond ioctls go through compat_ifreq_ioctl()
|
||||
- geneve: should not call rt6_lookup() when ipv6 was disabled
|
||||
- sit: check if IPv6 enabled before calling ip6_err_gen_icmpv6_unreach()
|
||||
- net_sched: fix a race condition in tcindex_destroy()
|
||||
- net_sched: fix a memory leak in cls_tcindex
|
||||
- net_sched: fix two more memory leaks in cls_tcindex
|
||||
- net/mlx5e: XDP, fix redirect resources availability check
|
||||
- RDMA/srp: Rework SCSI device reset handling
|
||||
- KEYS: user: Align the payload buffer
|
||||
- KEYS: always initialize keyring_index_key::desc_len
|
||||
- drm/amdgpu: Set DPM_FLAG_NEVER_SKIP when enabling PM-runtime
|
||||
- gpu: drm: radeon: Set DPM_FLAG_NEVER_SKIP when enabling PM-runtime
|
||||
- [x86] drm/i915/fbdev: Actually configure untiled displays
|
||||
- drm/amd/display: Fix MST reboot/poweroff sequence
|
||||
- mac80211: allocate tailroom for forwarded mesh packets
|
||||
- [x86] kvm: Return LA57 feature based on hardware capability
|
||||
- net: validate untrusted gso packets without csum offload
|
||||
- net: avoid false positives in untrusted gso validation
|
||||
- Revert "bridge: do not add port to router list when receives query with
|
||||
source 0.0.0.0"
|
||||
- netfilter: nf_tables: fix flush after rule deletion in the same batch
|
||||
- netfilter: nft_compat: use-after-free when deleting targets
|
||||
- netfilter: ipv6: Don't preserve original oif for loopback address
|
||||
- netfilter: nfnetlink_osf: add missing fmatch check
|
||||
- netfilter: ipt_CLUSTERIP: fix sleep-in-atomic bug in
|
||||
clusterip_config_entry_put()
|
||||
- udlfb: handle unplug properly
|
||||
- [armhf arm64] pinctrl: max77620: Use define directive for
|
||||
max77620_pinconf_param values
|
||||
- net: phylink: avoid resolving link state too early
|
||||
|
||||
[ Ben Hutchings ]
|
||||
* [sparc64] udeb: Use standard module list in nic-modules; add i2c-modules
|
||||
|
@ -36,6 +638,9 @@ linux (4.19.20-2) UNRELEASED; urgency=medium
|
|||
[ Vagrant Cascadian ]
|
||||
* [arm64] Add patch from v4.20 to enable device-tree for Pine64-LTS.
|
||||
|
||||
[ Romain Perier ]
|
||||
* [rt] Update to 4.19.25-rt16
|
||||
|
||||
-- Ben Hutchings <ben@decadent.org.uk> Tue, 12 Feb 2019 12:49:10 +0000
|
||||
|
||||
linux (4.19.20-1) unstable; urgency=medium
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Alexandre Belloni <alexandre.belloni@bootlin.com>
|
||||
Date: Thu, 13 Sep 2018 13:30:18 +0200
|
||||
Subject: [PATCH 1/7] ARM: at91: add TCB registers definitions
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Add registers and bits definitions for the timer counter blocks found on
|
||||
Atmel ARM SoCs.
|
||||
|
|
|
@ -2,7 +2,7 @@ From: Peter Zijlstra <peterz@infradead.org>
|
|||
Date: Mon, 28 May 2018 15:24:20 +0200
|
||||
Subject: [PATCH 1/4] Split IRQ-off and zone->lock while freeing pages from PCP
|
||||
list #1
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Split the IRQ-off section while accessing the PCP list from zone->lock
|
||||
while freeing pages.
|
||||
|
@ -18,7 +18,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
--- a/mm/page_alloc.c
|
||||
+++ b/mm/page_alloc.c
|
||||
@@ -1067,7 +1067,7 @@ static inline void prefetch_buddy(struct
|
||||
@@ -1095,7 +1095,7 @@ static inline void prefetch_buddy(struct
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -27,7 +27,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
* Assumes all pages on list are in same zone, and of same order.
|
||||
* count is the number of pages to free.
|
||||
*
|
||||
@@ -1078,14 +1078,41 @@ static inline void prefetch_buddy(struct
|
||||
@@ -1106,14 +1106,41 @@ static inline void prefetch_buddy(struct
|
||||
* pinned" detection logic.
|
||||
*/
|
||||
static void free_pcppages_bulk(struct zone *zone, int count,
|
||||
|
@ -73,7 +73,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
while (count) {
|
||||
struct list_head *list;
|
||||
@@ -1117,7 +1144,7 @@ static void free_pcppages_bulk(struct zo
|
||||
@@ -1145,7 +1172,7 @@ static void free_pcppages_bulk(struct zo
|
||||
if (bulkfree_pcp_prepare(page))
|
||||
continue;
|
||||
|
||||
|
@ -82,7 +82,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
/*
|
||||
* We are going to put the page back to the global
|
||||
@@ -1132,26 +1159,6 @@ static void free_pcppages_bulk(struct zo
|
||||
@@ -1160,26 +1187,6 @@ static void free_pcppages_bulk(struct zo
|
||||
prefetch_buddy(page);
|
||||
} while (--count && --batch_free && !list_empty(list));
|
||||
}
|
||||
|
@ -109,7 +109,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
}
|
||||
|
||||
static void free_one_page(struct zone *zone,
|
||||
@@ -2515,13 +2522,18 @@ void drain_zone_pages(struct zone *zone,
|
||||
@@ -2536,13 +2543,18 @@ void drain_zone_pages(struct zone *zone,
|
||||
{
|
||||
unsigned long flags;
|
||||
int to_drain, batch;
|
||||
|
@ -129,7 +129,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
}
|
||||
#endif
|
||||
|
||||
@@ -2537,14 +2549,21 @@ static void drain_pages_zone(unsigned in
|
||||
@@ -2558,14 +2570,21 @@ static void drain_pages_zone(unsigned in
|
||||
unsigned long flags;
|
||||
struct per_cpu_pageset *pset;
|
||||
struct per_cpu_pages *pcp;
|
||||
|
@ -153,7 +153,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
}
|
||||
|
||||
/*
|
||||
@@ -2766,7 +2785,10 @@ static void free_unref_page_commit(struc
|
||||
@@ -2787,7 +2806,10 @@ static void free_unref_page_commit(struc
|
||||
pcp->count++;
|
||||
if (pcp->count >= pcp->high) {
|
||||
unsigned long batch = READ_ONCE(pcp->batch);
|
||||
|
|
|
@ -2,7 +2,7 @@ From: Peter Zijlstra <peterz@infradead.org>
|
|||
Date: Mon, 28 May 2018 15:24:21 +0200
|
||||
Subject: [PATCH 2/4] Split IRQ-off and zone->lock while freeing pages from PCP
|
||||
list #2
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Split the IRQ-off section while accessing the PCP list from zone->lock
|
||||
while freeing pages.
|
||||
|
@ -18,7 +18,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
--- a/mm/page_alloc.c
|
||||
+++ b/mm/page_alloc.c
|
||||
@@ -1077,8 +1077,8 @@ static inline void prefetch_buddy(struct
|
||||
@@ -1105,8 +1105,8 @@ static inline void prefetch_buddy(struct
|
||||
* And clear the zone's pages_scanned counter, to hold off the "all pages are
|
||||
* pinned" detection logic.
|
||||
*/
|
||||
|
@ -29,7 +29,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
{
|
||||
bool isolated_pageblocks;
|
||||
struct page *page, *tmp;
|
||||
@@ -1093,12 +1093,27 @@ static void free_pcppages_bulk(struct zo
|
||||
@@ -1121,12 +1121,27 @@ static void free_pcppages_bulk(struct zo
|
||||
*/
|
||||
list_for_each_entry_safe(page, tmp, head, lru) {
|
||||
int mt = get_pcppage_migratetype(page);
|
||||
|
@ -57,7 +57,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
__free_one_page(page, page_to_pfn(page), zone, 0, mt);
|
||||
trace_mm_page_pcpu_drain(page, 0, mt);
|
||||
}
|
||||
@@ -2533,7 +2548,7 @@ void drain_zone_pages(struct zone *zone,
|
||||
@@ -2554,7 +2569,7 @@ void drain_zone_pages(struct zone *zone,
|
||||
local_irq_restore(flags);
|
||||
|
||||
if (to_drain > 0)
|
||||
|
@ -66,7 +66,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
}
|
||||
#endif
|
||||
|
||||
@@ -2563,7 +2578,7 @@ static void drain_pages_zone(unsigned in
|
||||
@@ -2584,7 +2599,7 @@ static void drain_pages_zone(unsigned in
|
||||
local_irq_restore(flags);
|
||||
|
||||
if (count)
|
||||
|
@ -75,7 +75,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
}
|
||||
|
||||
/*
|
||||
@@ -2756,7 +2771,8 @@ static bool free_unref_page_prepare(stru
|
||||
@@ -2777,7 +2792,8 @@ static bool free_unref_page_prepare(stru
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -85,7 +85,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
{
|
||||
struct zone *zone = page_zone(page);
|
||||
struct per_cpu_pages *pcp;
|
||||
@@ -2785,10 +2801,8 @@ static void free_unref_page_commit(struc
|
||||
@@ -2806,10 +2822,8 @@ static void free_unref_page_commit(struc
|
||||
pcp->count++;
|
||||
if (pcp->count >= pcp->high) {
|
||||
unsigned long batch = READ_ONCE(pcp->batch);
|
||||
|
@ -97,7 +97,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
}
|
||||
}
|
||||
|
||||
@@ -2799,13 +2813,17 @@ void free_unref_page(struct page *page)
|
||||
@@ -2820,13 +2834,17 @@ void free_unref_page(struct page *page)
|
||||
{
|
||||
unsigned long flags;
|
||||
unsigned long pfn = page_to_pfn(page);
|
||||
|
@ -116,7 +116,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
}
|
||||
|
||||
/*
|
||||
@@ -2816,6 +2834,11 @@ void free_unref_page_list(struct list_he
|
||||
@@ -2837,6 +2855,11 @@ void free_unref_page_list(struct list_he
|
||||
struct page *page, *next;
|
||||
unsigned long flags, pfn;
|
||||
int batch_count = 0;
|
||||
|
@ -128,7 +128,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
/* Prepare pages for freeing */
|
||||
list_for_each_entry_safe(page, next, list, lru) {
|
||||
@@ -2828,10 +2851,12 @@ void free_unref_page_list(struct list_he
|
||||
@@ -2849,10 +2872,12 @@ void free_unref_page_list(struct list_he
|
||||
local_irq_save(flags);
|
||||
list_for_each_entry_safe(page, next, list, lru) {
|
||||
unsigned long pfn = page_private(page);
|
||||
|
@ -142,7 +142,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
/*
|
||||
* Guard against excessive IRQ disabled times when we get
|
||||
@@ -2844,6 +2869,21 @@ void free_unref_page_list(struct list_he
|
||||
@@ -2865,6 +2890,21 @@ void free_unref_page_list(struct list_he
|
||||
}
|
||||
}
|
||||
local_irq_restore(flags);
|
||||
|
|
|
@ -2,7 +2,7 @@ From: Alexandre Belloni <alexandre.belloni@bootlin.com>
|
|||
Date: Thu, 13 Sep 2018 13:30:19 +0200
|
||||
Subject: [PATCH 2/7] clocksource/drivers: Add a new driver for the Atmel ARM
|
||||
TC blocks
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Add a driver for the Atmel Timer Counter Blocks. This driver provides a
|
||||
clocksource and two clockevent devices.
|
||||
|
|
|
@ -2,7 +2,7 @@ From: Alexandre Belloni <alexandre.belloni@bootlin.com>
|
|||
Date: Thu, 13 Sep 2018 13:30:20 +0200
|
||||
Subject: [PATCH 3/7] clocksource/drivers: timer-atmel-tcb: add clockevent
|
||||
device on separate channel
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Add an other clockevent device that uses a separate TCB channel when
|
||||
available.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Mon, 28 May 2018 15:24:22 +0200
|
||||
Subject: [PATCH 3/4] mm/SLxB: change list_lock to raw_spinlock_t
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
The list_lock is used with used with IRQs off on RT. Make it a raw_spinlock_t
|
||||
otherwise the interrupts won't be disabled on -RT. The locking rules remain
|
||||
|
@ -40,7 +40,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
slabs_destroy(cachep, &list);
|
||||
}
|
||||
@@ -728,7 +728,7 @@ static void __drain_alien_cache(struct k
|
||||
@@ -730,7 +730,7 @@ static void __drain_alien_cache(struct k
|
||||
struct kmem_cache_node *n = get_node(cachep, node);
|
||||
|
||||
if (ac->avail) {
|
||||
|
@ -49,7 +49,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
/*
|
||||
* Stuff objects into the remote nodes shared array first.
|
||||
* That way we could avoid the overhead of putting the objects
|
||||
@@ -739,7 +739,7 @@ static void __drain_alien_cache(struct k
|
||||
@@ -741,7 +741,7 @@ static void __drain_alien_cache(struct k
|
||||
|
||||
free_block(cachep, ac->entry, ac->avail, node, list);
|
||||
ac->avail = 0;
|
||||
|
@ -58,7 +58,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
}
|
||||
}
|
||||
|
||||
@@ -812,9 +812,9 @@ static int __cache_free_alien(struct kme
|
||||
@@ -814,9 +814,9 @@ static int __cache_free_alien(struct kme
|
||||
slabs_destroy(cachep, &list);
|
||||
} else {
|
||||
n = get_node(cachep, page_node);
|
||||
|
@ -70,7 +70,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
slabs_destroy(cachep, &list);
|
||||
}
|
||||
return 1;
|
||||
@@ -855,10 +855,10 @@ static int init_cache_node(struct kmem_c
|
||||
@@ -857,10 +857,10 @@ static int init_cache_node(struct kmem_c
|
||||
*/
|
||||
n = get_node(cachep, node);
|
||||
if (n) {
|
||||
|
@ -83,7 +83,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
return 0;
|
||||
}
|
||||
@@ -937,7 +937,7 @@ static int setup_kmem_cache_node(struct
|
||||
@@ -939,7 +939,7 @@ static int setup_kmem_cache_node(struct
|
||||
goto fail;
|
||||
|
||||
n = get_node(cachep, node);
|
||||
|
@ -92,7 +92,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
if (n->shared && force_change) {
|
||||
free_block(cachep, n->shared->entry,
|
||||
n->shared->avail, node, &list);
|
||||
@@ -955,7 +955,7 @@ static int setup_kmem_cache_node(struct
|
||||
@@ -957,7 +957,7 @@ static int setup_kmem_cache_node(struct
|
||||
new_alien = NULL;
|
||||
}
|
||||
|
||||
|
@ -101,7 +101,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
slabs_destroy(cachep, &list);
|
||||
|
||||
/*
|
||||
@@ -994,7 +994,7 @@ static void cpuup_canceled(long cpu)
|
||||
@@ -996,7 +996,7 @@ static void cpuup_canceled(long cpu)
|
||||
if (!n)
|
||||
continue;
|
||||
|
||||
|
@ -110,7 +110,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
/* Free limit for this kmem_cache_node */
|
||||
n->free_limit -= cachep->batchcount;
|
||||
@@ -1007,7 +1007,7 @@ static void cpuup_canceled(long cpu)
|
||||
@@ -1009,7 +1009,7 @@ static void cpuup_canceled(long cpu)
|
||||
}
|
||||
|
||||
if (!cpumask_empty(mask)) {
|
||||
|
@ -119,7 +119,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
goto free_slab;
|
||||
}
|
||||
|
||||
@@ -1021,7 +1021,7 @@ static void cpuup_canceled(long cpu)
|
||||
@@ -1023,7 +1023,7 @@ static void cpuup_canceled(long cpu)
|
||||
alien = n->alien;
|
||||
n->alien = NULL;
|
||||
|
||||
|
@ -128,7 +128,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
kfree(shared);
|
||||
if (alien) {
|
||||
@@ -1205,7 +1205,7 @@ static void __init init_list(struct kmem
|
||||
@@ -1207,7 +1207,7 @@ static void __init init_list(struct kmem
|
||||
/*
|
||||
* Do not assume that spinlocks can be initialized via memcpy:
|
||||
*/
|
||||
|
@ -137,7 +137,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
MAKE_ALL_LISTS(cachep, ptr, nodeid);
|
||||
cachep->node[nodeid] = ptr;
|
||||
@@ -1376,11 +1376,11 @@ slab_out_of_memory(struct kmem_cache *ca
|
||||
@@ -1378,11 +1378,11 @@ slab_out_of_memory(struct kmem_cache *ca
|
||||
for_each_kmem_cache_node(cachep, node, n) {
|
||||
unsigned long total_slabs, free_slabs, free_objs;
|
||||
|
||||
|
@ -151,7 +151,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
pr_warn(" node %d: slabs: %ld/%ld, objs: %ld/%ld\n",
|
||||
node, total_slabs - free_slabs, total_slabs,
|
||||
@@ -2173,7 +2173,7 @@ static void check_spinlock_acquired(stru
|
||||
@@ -2175,7 +2175,7 @@ static void check_spinlock_acquired(stru
|
||||
{
|
||||
#ifdef CONFIG_SMP
|
||||
check_irq_off();
|
||||
|
@ -160,7 +160,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
#endif
|
||||
}
|
||||
|
||||
@@ -2181,7 +2181,7 @@ static void check_spinlock_acquired_node
|
||||
@@ -2183,7 +2183,7 @@ static void check_spinlock_acquired_node
|
||||
{
|
||||
#ifdef CONFIG_SMP
|
||||
check_irq_off();
|
||||
|
@ -169,7 +169,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
#endif
|
||||
}
|
||||
|
||||
@@ -2221,9 +2221,9 @@ static void do_drain(void *arg)
|
||||
@@ -2223,9 +2223,9 @@ static void do_drain(void *arg)
|
||||
check_irq_off();
|
||||
ac = cpu_cache_get(cachep);
|
||||
n = get_node(cachep, node);
|
||||
|
@ -181,7 +181,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
slabs_destroy(cachep, &list);
|
||||
ac->avail = 0;
|
||||
}
|
||||
@@ -2241,9 +2241,9 @@ static void drain_cpu_caches(struct kmem
|
||||
@@ -2243,9 +2243,9 @@ static void drain_cpu_caches(struct kmem
|
||||
drain_alien_cache(cachep, n->alien);
|
||||
|
||||
for_each_kmem_cache_node(cachep, node, n) {
|
||||
|
@ -193,7 +193,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
slabs_destroy(cachep, &list);
|
||||
}
|
||||
@@ -2265,10 +2265,10 @@ static int drain_freelist(struct kmem_ca
|
||||
@@ -2267,10 +2267,10 @@ static int drain_freelist(struct kmem_ca
|
||||
nr_freed = 0;
|
||||
while (nr_freed < tofree && !list_empty(&n->slabs_free)) {
|
||||
|
||||
|
@ -206,7 +206,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
goto out;
|
||||
}
|
||||
|
||||
@@ -2281,7 +2281,7 @@ static int drain_freelist(struct kmem_ca
|
||||
@@ -2283,7 +2283,7 @@ static int drain_freelist(struct kmem_ca
|
||||
* to the cache.
|
||||
*/
|
||||
n->free_objects -= cache->num;
|
||||
|
@ -215,7 +215,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
slab_destroy(cache, page);
|
||||
nr_freed++;
|
||||
}
|
||||
@@ -2729,7 +2729,7 @@ static void cache_grow_end(struct kmem_c
|
||||
@@ -2731,7 +2731,7 @@ static void cache_grow_end(struct kmem_c
|
||||
INIT_LIST_HEAD(&page->lru);
|
||||
n = get_node(cachep, page_to_nid(page));
|
||||
|
||||
|
@ -224,7 +224,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
n->total_slabs++;
|
||||
if (!page->active) {
|
||||
list_add_tail(&page->lru, &(n->slabs_free));
|
||||
@@ -2739,7 +2739,7 @@ static void cache_grow_end(struct kmem_c
|
||||
@@ -2741,7 +2741,7 @@ static void cache_grow_end(struct kmem_c
|
||||
|
||||
STATS_INC_GROWN(cachep);
|
||||
n->free_objects += cachep->num - page->active;
|
||||
|
@ -233,7 +233,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
fixup_objfreelist_debug(cachep, &list);
|
||||
}
|
||||
@@ -2907,7 +2907,7 @@ static struct page *get_first_slab(struc
|
||||
@@ -2909,7 +2909,7 @@ static struct page *get_first_slab(struc
|
||||
{
|
||||
struct page *page;
|
||||
|
||||
|
@ -242,7 +242,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
page = list_first_entry_or_null(&n->slabs_partial, struct page, lru);
|
||||
if (!page) {
|
||||
n->free_touched = 1;
|
||||
@@ -2933,10 +2933,10 @@ static noinline void *cache_alloc_pfmema
|
||||
@@ -2935,10 +2935,10 @@ static noinline void *cache_alloc_pfmema
|
||||
if (!gfp_pfmemalloc_allowed(flags))
|
||||
return NULL;
|
||||
|
||||
|
@ -255,7 +255,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
return NULL;
|
||||
}
|
||||
|
||||
@@ -2945,7 +2945,7 @@ static noinline void *cache_alloc_pfmema
|
||||
@@ -2947,7 +2947,7 @@ static noinline void *cache_alloc_pfmema
|
||||
|
||||
fixup_slab_list(cachep, n, page, &list);
|
||||
|
||||
|
@ -264,7 +264,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
fixup_objfreelist_debug(cachep, &list);
|
||||
|
||||
return obj;
|
||||
@@ -3004,7 +3004,7 @@ static void *cache_alloc_refill(struct k
|
||||
@@ -3006,7 +3006,7 @@ static void *cache_alloc_refill(struct k
|
||||
if (!n->free_objects && (!shared || !shared->avail))
|
||||
goto direct_grow;
|
||||
|
||||
|
@ -273,7 +273,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
shared = READ_ONCE(n->shared);
|
||||
|
||||
/* See if we can refill from the shared array */
|
||||
@@ -3028,7 +3028,7 @@ static void *cache_alloc_refill(struct k
|
||||
@@ -3030,7 +3030,7 @@ static void *cache_alloc_refill(struct k
|
||||
must_grow:
|
||||
n->free_objects -= ac->avail;
|
||||
alloc_done:
|
||||
|
@ -282,7 +282,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
fixup_objfreelist_debug(cachep, &list);
|
||||
|
||||
direct_grow:
|
||||
@@ -3253,7 +3253,7 @@ static void *____cache_alloc_node(struct
|
||||
@@ -3255,7 +3255,7 @@ static void *____cache_alloc_node(struct
|
||||
BUG_ON(!n);
|
||||
|
||||
check_irq_off();
|
||||
|
@ -291,7 +291,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
page = get_first_slab(n, false);
|
||||
if (!page)
|
||||
goto must_grow;
|
||||
@@ -3271,12 +3271,12 @@ static void *____cache_alloc_node(struct
|
||||
@@ -3273,12 +3273,12 @@ static void *____cache_alloc_node(struct
|
||||
|
||||
fixup_slab_list(cachep, n, page, &list);
|
||||
|
||||
|
@ -306,7 +306,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
page = cache_grow_begin(cachep, gfp_exact_node(flags), nodeid);
|
||||
if (page) {
|
||||
/* This slab isn't counted yet so don't update free_objects */
|
||||
@@ -3452,7 +3452,7 @@ static void cache_flusharray(struct kmem
|
||||
@@ -3454,7 +3454,7 @@ static void cache_flusharray(struct kmem
|
||||
|
||||
check_irq_off();
|
||||
n = get_node(cachep, node);
|
||||
|
@ -315,7 +315,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
if (n->shared) {
|
||||
struct array_cache *shared_array = n->shared;
|
||||
int max = shared_array->limit - shared_array->avail;
|
||||
@@ -3481,7 +3481,7 @@ static void cache_flusharray(struct kmem
|
||||
@@ -3483,7 +3483,7 @@ static void cache_flusharray(struct kmem
|
||||
STATS_SET_FREEABLE(cachep, i);
|
||||
}
|
||||
#endif
|
||||
|
@ -324,7 +324,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
slabs_destroy(cachep, &list);
|
||||
ac->avail -= batchcount;
|
||||
memmove(ac->entry, &(ac->entry[batchcount]), sizeof(void *)*ac->avail);
|
||||
@@ -3891,9 +3891,9 @@ static int __do_tune_cpucache(struct kme
|
||||
@@ -3893,9 +3893,9 @@ static int __do_tune_cpucache(struct kme
|
||||
|
||||
node = cpu_to_mem(cpu);
|
||||
n = get_node(cachep, node);
|
||||
|
@ -336,7 +336,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
slabs_destroy(cachep, &list);
|
||||
}
|
||||
free_percpu(prev);
|
||||
@@ -4018,9 +4018,9 @@ static void drain_array(struct kmem_cach
|
||||
@@ -4020,9 +4020,9 @@ static void drain_array(struct kmem_cach
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -348,7 +348,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
slabs_destroy(cachep, &list);
|
||||
}
|
||||
@@ -4104,7 +4104,7 @@ void get_slabinfo(struct kmem_cache *cac
|
||||
@@ -4106,7 +4106,7 @@ void get_slabinfo(struct kmem_cache *cac
|
||||
|
||||
for_each_kmem_cache_node(cachep, node, n) {
|
||||
check_irq_on();
|
||||
|
@ -357,7 +357,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
total_slabs += n->total_slabs;
|
||||
free_slabs += n->free_slabs;
|
||||
@@ -4113,7 +4113,7 @@ void get_slabinfo(struct kmem_cache *cac
|
||||
@@ -4115,7 +4115,7 @@ void get_slabinfo(struct kmem_cache *cac
|
||||
if (n->shared)
|
||||
shared_avail += n->shared->avail;
|
||||
|
||||
|
@ -366,7 +366,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
}
|
||||
num_objs = total_slabs * cachep->num;
|
||||
active_slabs = total_slabs - free_slabs;
|
||||
@@ -4328,13 +4328,13 @@ static int leaks_show(struct seq_file *m
|
||||
@@ -4330,13 +4330,13 @@ static int leaks_show(struct seq_file *m
|
||||
for_each_kmem_cache_node(cachep, node, n) {
|
||||
|
||||
check_irq_on();
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Alexandre Belloni <alexandre.belloni@bootlin.com>
|
||||
Date: Thu, 13 Sep 2018 13:30:21 +0200
|
||||
Subject: [PATCH 4/7] clocksource/drivers: atmel-pit: make option silent
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
To conform with the other option, make the ATMEL_PIT option silent so it
|
||||
can be selected from the platform
|
||||
|
|
|
@ -2,7 +2,7 @@ From: Thomas Gleixner <tglx@linutronix.de>
|
|||
Date: Thu, 21 Jun 2018 17:29:19 +0200
|
||||
Subject: [PATCH 4/4] mm/SLUB: delay giving back empty slubs to IRQ enabled
|
||||
regions
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
__free_slab() is invoked with disabled interrupts which increases the
|
||||
irq-off time while __free_pages() is doing the work.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Alexandre Belloni <alexandre.belloni@bootlin.com>
|
||||
Date: Thu, 13 Sep 2018 13:30:22 +0200
|
||||
Subject: [PATCH 5/7] ARM: at91: Implement clocksource selection
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Allow selecting and unselecting the PIT clocksource driver so it doesn't
|
||||
have to be compile when unused.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Alexandre Belloni <alexandre.belloni@bootlin.com>
|
||||
Date: Thu, 13 Sep 2018 13:30:23 +0200
|
||||
Subject: [PATCH 6/7] ARM: configs: at91: use new TCB timer driver
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Unselecting ATMEL_TCLIB switches the TCB timer driver from tcb_clksrc to
|
||||
timer-atmel-tcb.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Alexandre Belloni <alexandre.belloni@bootlin.com>
|
||||
Date: Thu, 13 Sep 2018 13:30:24 +0200
|
||||
Subject: [PATCH 7/7] ARM: configs: at91: unselect PIT
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
The PIT is not required anymore to successfully boot and may actually harm
|
||||
in case preempt-rt is used because the PIT interrupt is shared.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: "Yadi.hu" <yadi.hu@windriver.com>
|
||||
Date: Wed, 10 Dec 2014 10:32:09 +0800
|
||||
Subject: ARM: enable irq in translation/section permission fault handlers
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Probably happens on all ARM, with
|
||||
CONFIG_PREEMPT_RT_FULL
|
||||
|
|
|
@ -4,7 +4,7 @@ Subject: [PATCH] Drivers: hv: vmbus: include header for get_irq_regs()
|
|||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
On !RT the header file get_irq_regs() gets pulled in via other header files. On
|
||||
RT it does not and the build fails:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Paul E. McKenney <paulmck@linux.ibm.com>
|
||||
Date: Mon, 29 Oct 2018 11:53:01 +0100
|
||||
Subject: [PATCH] EXP rcu: Revert expedited GP parallelization cleverness
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
(Commit 258ba8e089db23f760139266c232f01bad73f85c from linux-rcu)
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Thu, 21 Mar 2013 19:01:05 +0100
|
||||
Subject: printk: Drop the logbuf_lock more often
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
The lock is hold with irgs off. The latency drops 500us+ on my arm bugs
|
||||
with a "full" buffer after executing "dmesg" on the shell.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Josh Cartwright <joshc@ni.com>
|
||||
Date: Thu, 11 Feb 2016 11:54:01 -0600
|
||||
Subject: KVM: arm/arm64: downgrade preempt_disable()d region to migrate_disable()
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
kvm_arch_vcpu_ioctl_run() disables the use of preemption when updating
|
||||
the vgic and timer states to prevent the calling task from migrating to
|
||||
|
@ -23,7 +23,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
--- a/virt/kvm/arm/arm.c
|
||||
+++ b/virt/kvm/arm/arm.c
|
||||
@@ -700,7 +700,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_v
|
||||
@@ -699,7 +699,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_v
|
||||
* involves poking the GIC, which must be done in a
|
||||
* non-preemptible context.
|
||||
*/
|
||||
|
@ -32,7 +32,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
kvm_pmu_flush_hwstate(vcpu);
|
||||
|
||||
@@ -749,7 +749,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_v
|
||||
@@ -748,7 +748,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_v
|
||||
kvm_timer_sync_hwstate(vcpu);
|
||||
kvm_vgic_sync_hwstate(vcpu);
|
||||
local_irq_enable();
|
||||
|
@ -41,7 +41,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
continue;
|
||||
}
|
||||
|
||||
@@ -827,7 +827,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_v
|
||||
@@ -826,7 +826,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_v
|
||||
/* Exit types that need handling before we can be preempted */
|
||||
handle_exit_early(vcpu, run, ret);
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ Cc: Anna Schumaker <anna.schumaker@netapp.com>,
|
|||
linux-nfs@vger.kernel.org, linux-kernel@vger.kernel.org,
|
||||
tglx@linutronix.de
|
||||
Subject: NFSv4: replace seqcount_t with a seqlock_t
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
The raw_write_seqcount_begin() in nfs4_reclaim_open_state() bugs me
|
||||
because it maps to preempt_disable() in -RT which I can't have at this
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Sat, 27 May 2017 19:02:06 +0200
|
||||
Subject: kernel/sched/core: add migrate_disable()
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
---
|
||||
include/linux/preempt.h | 23 ++++++++
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Wed, 11 Oct 2017 17:43:49 +0200
|
||||
Subject: apparmor: use a locallock instead preempt_disable()
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
get_buffers() disables preemption which acts as a lock for the per-CPU
|
||||
variable. Since we can't disable preemption here on RT, a local_lock is
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Anders Roxell <anders.roxell@linaro.org>
|
||||
Date: Thu, 14 May 2015 17:52:17 +0200
|
||||
Subject: arch/arm64: Add lazy preempt support
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
arm64 is missing support for PREEMPT_RT. The main feature which is
|
||||
lacking is support for lazy preemption. The arch-specific entry code,
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Frank Rowand <frank.rowand@am.sony.com>
|
||||
Date: Mon, 19 Sep 2011 14:51:14 -0700
|
||||
Subject: arm: Convert arm boot_lock to raw
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
The arm boot_lock is used by the secondary processor startup code. The locking
|
||||
task is the idle thread, which has idle->sched_class == &idle_sched_class.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Fri, 1 Dec 2017 10:42:03 +0100
|
||||
Subject: [PATCH] arm*: disable NEON in kernel mode
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
NEON in kernel mode is used by the crypto algorithms and raid6 code.
|
||||
While the raid6 code looks okay, the crypto algorithms do not: NEON
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: arm: Enable highmem for rt
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Wed, 13 Feb 2013 11:03:11 +0100
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
fixup highmem for ARM.
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Mon, 11 Mar 2013 21:37:27 +0100
|
||||
Subject: arm/highmem: Flush tlb on unmap
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
The tlb should be flushed on unmap and thus make the mapping entry
|
||||
invalid. This is only done in the non-debug case which does not look
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Thu, 22 Dec 2016 17:28:33 +0100
|
||||
Subject: [PATCH] arm: include definition for cpumask_t
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
This definition gets pulled in by other files. With the (later) split of
|
||||
RCU and spinlock.h it won't compile anymore.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Yang Shi <yang.shi@linaro.org>
|
||||
Date: Thu, 10 Nov 2016 16:17:55 -0800
|
||||
Subject: [PATCH] arm: kprobe: replace patch_lock to raw lock
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
When running kprobe on -rt kernel, the below bug is caught:
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: arm: Add support for lazy preemption
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Wed, 31 Oct 2012 12:04:11 +0100
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Implement the arm pieces for lazy preempt.
|
||||
|
||||
|
@ -140,7 +140,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|||
|
||||
--- a/arch/arm/kernel/signal.c
|
||||
+++ b/arch/arm/kernel/signal.c
|
||||
@@ -644,7 +644,8 @@ do_work_pending(struct pt_regs *regs, un
|
||||
@@ -652,7 +652,8 @@ do_work_pending(struct pt_regs *regs, un
|
||||
*/
|
||||
trace_hardirqs_off();
|
||||
do {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Fri, 20 Sep 2013 14:31:54 +0200
|
||||
Subject: arm/unwind: use a raw_spin_lock
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Mostly unwind is done with irqs enabled however SLUB may call it with
|
||||
irqs disabled while creating a new SLUB cache.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Thu, 26 Jul 2018 09:13:42 +0200
|
||||
Subject: [PATCH] arm64: KVM: compute_layout before altenates are applied
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
compute_layout() is invoked as part of an alternative fixup under
|
||||
stop_machine() and needs a sleeping lock as part of get_random_long().
|
||||
|
|
|
@ -2,7 +2,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
Date: Wed, 25 Jul 2018 14:02:38 +0200
|
||||
Subject: [PATCH] arm64: fpsimd: use preemp_disable in addition to
|
||||
local_bh_disable()
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
In v4.16-RT I noticed a number of warnings from task_fpsimd_load(). The
|
||||
code disables BH and expects that it is not preemptible. On -RT the
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Wed, 09 Mar 2016 10:51:06 +0100
|
||||
Subject: arm: at91: do not disable/enable clocks in a row
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Currently the driver will disable the clock and enable it one line later
|
||||
if it is switching from periodic mode into one shot.
|
||||
|
|
|
@ -2,7 +2,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
Date: Tue, 13 Mar 2018 13:49:16 +0100
|
||||
Subject: [PATCH] block: blk-mq: move blk_queue_usage_counter_release()
|
||||
into process context
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
| BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:914
|
||||
| in_atomic(): 1, irqs_disabled(): 0, pid: 255, name: kworker/u257:6
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Thu, 29 Jan 2015 15:10:08 +0100
|
||||
Subject: block/mq: don't complete requests via IPI
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
The IPI runs in hardirq context and there are sleeping locks. This patch
|
||||
moves the completion into a workqueue.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Tue, 14 Jul 2015 14:26:34 +0200
|
||||
Subject: block/mq: do not invoke preempt_disable()
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
preempt_disable() and get_cpu() don't play well together with the sleeping
|
||||
locks it tries to allocate later.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Wed, 9 Apr 2014 10:37:23 +0200
|
||||
Subject: block: mq: use cpu_light()
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
there is a might sleep splat because get_cpu() disables preemption and
|
||||
later we grab a lock. As a workaround for this we use get_cpu_light().
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: block: Use cpu_chill() for retry loops
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Thu, 20 Dec 2012 18:28:26 +0100
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Retry loops on RT might loop forever when the modifying side was
|
||||
preempted. Steven also observed a live lock when there was a
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Tue, 3 Jul 2018 18:19:48 +0200
|
||||
Subject: [PATCH] cgroup: use irqsave in cgroup_rstat_flush_locked()
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
All callers of cgroup_rstat_flush_locked() acquire cgroup_rstat_lock
|
||||
either with spin_lock_irq() or spin_lock_irqsave().
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Fri, 13 Feb 2015 15:52:24 +0100
|
||||
Subject: cgroups: use simple wait in css_release()
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
To avoid:
|
||||
|BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:914
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Benedikt Spranger <b.spranger@linutronix.de>
|
||||
Date: Mon, 8 Mar 2010 18:57:04 +0100
|
||||
Subject: clocksource: TCLIB: Allow higher clock rates for clock events
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
As default the TCLIB uses the 32KiHz base clock rate for clock events.
|
||||
Add a compile time selection to allow higher clock resulution.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: completion: Use simple wait queues
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Fri, 11 Jan 2013 11:23:51 +0100
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Completions have no long lasting callbacks and therefor do not need
|
||||
the complex waitqueue variant. Use simple waitqueues which reduces the
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: sched: Use the proper LOCK_OFFSET for cond_resched()
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Sun, 17 Jul 2011 22:51:33 +0200
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
RT does not increment preempt count when a 'sleeping' spinlock is
|
||||
locked. Update PREEMPT_LOCK_OFFSET for that case.
|
||||
|
|
|
@ -2,7 +2,7 @@ From: Mike Galbraith <umgwanakikbuti@gmail.com>
|
|||
Date: Sun, 16 Oct 2016 05:11:54 +0200
|
||||
Subject: [PATCH] connector/cn_proc: Protect send_msg() with a local lock
|
||||
on RT
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
|BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:931
|
||||
|in_atomic(): 1, irqs_disabled(): 0, pid: 31807, name: sleep
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: cpu/hotplug: Implement CPU pinning
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Wed, 19 Jul 2017 17:31:20 +0200
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
---
|
||||
|
@ -76,7 +76,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|||
}
|
||||
|
||||
DEFINE_STATIC_PERCPU_RWSEM(cpu_hotplug_lock);
|
||||
@@ -853,6 +886,7 @@ static int take_cpu_down(void *_param)
|
||||
@@ -828,6 +861,7 @@ static int take_cpu_down(void *_param)
|
||||
|
||||
static int takedown_cpu(unsigned int cpu)
|
||||
{
|
||||
|
@ -84,7 +84,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|||
struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu);
|
||||
int err;
|
||||
|
||||
@@ -865,11 +899,14 @@ static int takedown_cpu(unsigned int cpu
|
||||
@@ -840,11 +874,14 @@ static int takedown_cpu(unsigned int cpu
|
||||
*/
|
||||
irq_lock_sparse();
|
||||
|
||||
|
@ -99,7 +99,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|||
/* CPU refused to die */
|
||||
irq_unlock_sparse();
|
||||
/* Unpark the hotplug thread so we can rollback there */
|
||||
@@ -888,6 +925,7 @@ static int takedown_cpu(unsigned int cpu
|
||||
@@ -863,6 +900,7 @@ static int takedown_cpu(unsigned int cpu
|
||||
wait_for_ap_thread(st, false);
|
||||
BUG_ON(st->state != CPUHP_AP_IDLE_DEAD);
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Thu, 9 Apr 2015 15:23:01 +0200
|
||||
Subject: cpufreq: drop K8's driver from beeing selected
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Ralf posted a picture of a backtrace from
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: cpumask: Disable CONFIG_CPUMASK_OFFSTACK for RT
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Wed, 14 Dec 2011 01:03:49 +0100
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
There are "valid" GFP_ATOMIC allocations such as
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Mike Galbraith <efault@gmx.de>
|
||||
Date: Sun, 8 Jan 2017 09:32:25 +0100
|
||||
Subject: [PATCH] cpuset: Convert callback_lock to raw_spinlock_t
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
The two commits below add up to a cpuset might_sleep() splat for RT:
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Fri, 21 Feb 2014 17:24:04 +0100
|
||||
Subject: crypto: Reduce preempt disabled regions, more algos
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Don Estabrook reported
|
||||
| kernel: WARNING: CPU: 2 PID: 858 at kernel/sched/core.c:2428 migrate_disable+0xed/0x100()
|
||||
|
|
|
@ -4,7 +4,7 @@ Subject: [PATCH] crypto: caam/qi - simplify CGR allocation, freeing
|
|||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
[Upstream commit 29e83c757006fd751966bdc53392bb22d74179c6]
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
Date: Thu, 26 Jul 2018 18:52:00 +0200
|
||||
Subject: [PATCH] crypto: cryptd - add a lock instead
|
||||
preempt_disable/local_bh_disable
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
cryptd has a per-CPU lock which protected with local_bh_disable() and
|
||||
preempt_disable().
|
||||
|
|
|
@ -4,7 +4,7 @@ Subject: [PATCH] crypto: limit more FPU-enabled sections
|
|||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Those crypto drivers use SSE/AVX/… for their crypto work and in order to
|
||||
do so in kernel they need to enable the "FPU" in kernel mode which
|
||||
|
|
|
@ -2,7 +2,7 @@ From: Mike Galbraith <efault@gmx.de>
|
|||
Date: Wed, 11 Jul 2018 17:14:47 +0200
|
||||
Subject: [PATCH] crypto: scompress - serialize RT percpu scratch buffer
|
||||
access with a local lock
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
| BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:974
|
||||
| in_atomic(): 1, irqs_disabled(): 0, pid: 1401, name: cryptomgr_test
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: debugobjects: Make RT aware
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Sun, 17 Jul 2011 21:41:35 +0200
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Avoid filling the pool / allocating memory with irqs off().
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Tue, 27 Mar 2018 16:24:15 +0200
|
||||
Subject: [PATCH] dm rq: remove BUG_ON(!irqs_disabled) check
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
In commit 052189a2ec95 ("dm: remove superfluous irq disablement in
|
||||
dm_request_fn") the spin_lock_irq() was replaced with spin_lock() + a
|
||||
|
|
|
@ -2,7 +2,7 @@ From: Mike Galbraith <umgwanakikbuti@gmail.com>
|
|||
Date: Thu, 31 Mar 2016 04:08:28 +0200
|
||||
Subject: [PATCH] drivers/block/zram: Replace bit spinlocks with rtmutex
|
||||
for -rt
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
They're nondeterministic, and lead to ___might_sleep() splats in -rt.
|
||||
OTOH, they're a lot less wasteful than an rtmutex per page.
|
||||
|
@ -10,13 +10,13 @@ OTOH, they're a lot less wasteful than an rtmutex per page.
|
|||
Signed-off-by: Mike Galbraith <umgwanakikbuti@gmail.com>
|
||||
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
---
|
||||
drivers/block/zram/zram_drv.c | 28 ++++++++++++++++++++++++++++
|
||||
drivers/block/zram/zram_drv.c | 38 ++++++++++++++++++++++++++++++++++++++
|
||||
drivers/block/zram/zram_drv.h | 3 +++
|
||||
2 files changed, 31 insertions(+)
|
||||
2 files changed, 41 insertions(+)
|
||||
|
||||
--- a/drivers/block/zram/zram_drv.c
|
||||
+++ b/drivers/block/zram/zram_drv.c
|
||||
@@ -53,6 +53,30 @@ static size_t huge_class_size;
|
||||
@@ -53,6 +53,40 @@ static size_t huge_class_size;
|
||||
|
||||
static void zram_free_page(struct zram *zram, size_t index);
|
||||
|
||||
|
@ -29,6 +29,16 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
+ spin_lock_init(&zram->table[index].lock);
|
||||
+}
|
||||
+
|
||||
+static int zram_slot_trylock(struct zram *zram, u32 index)
|
||||
+{
|
||||
+ int ret;
|
||||
+
|
||||
+ ret = spin_trylock(&zram->table[index].lock);
|
||||
+ if (ret)
|
||||
+ __set_bit(ZRAM_LOCK, &zram->table[index].value);
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static void zram_slot_lock(struct zram *zram, u32 index)
|
||||
+{
|
||||
+ spin_lock(&zram->table[index].lock);
|
||||
|
@ -44,10 +54,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
+#else
|
||||
+static void zram_meta_init_table_locks(struct zram *zram, size_t num_pages) { }
|
||||
+
|
||||
static void zram_slot_lock(struct zram *zram, u32 index)
|
||||
static int zram_slot_trylock(struct zram *zram, u32 index)
|
||||
{
|
||||
bit_spin_lock(ZRAM_LOCK, &zram->table[index].value);
|
||||
@@ -62,6 +86,7 @@ static void zram_slot_unlock(struct zram
|
||||
return bit_spin_trylock(ZRAM_LOCK, &zram->table[index].value);
|
||||
@@ -67,6 +101,7 @@ static void zram_slot_unlock(struct zram
|
||||
{
|
||||
bit_spin_unlock(ZRAM_LOCK, &zram->table[index].value);
|
||||
}
|
||||
|
@ -55,7 +65,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
static inline bool init_done(struct zram *zram)
|
||||
{
|
||||
@@ -900,6 +925,8 @@ static DEVICE_ATTR_RO(io_stat);
|
||||
@@ -900,6 +935,8 @@ static DEVICE_ATTR_RO(io_stat);
|
||||
static DEVICE_ATTR_RO(mm_stat);
|
||||
static DEVICE_ATTR_RO(debug_stat);
|
||||
|
||||
|
@ -64,7 +74,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
static void zram_meta_free(struct zram *zram, u64 disksize)
|
||||
{
|
||||
size_t num_pages = disksize >> PAGE_SHIFT;
|
||||
@@ -930,6 +957,7 @@ static bool zram_meta_alloc(struct zram
|
||||
@@ -930,6 +967,7 @@ static bool zram_meta_alloc(struct zram
|
||||
|
||||
if (!huge_class_size)
|
||||
huge_class_size = zs_huge_class_size(zram->mem_pool);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: tty/serial/omap: Make the locking RT aware
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Thu, 28 Jul 2011 13:32:57 +0200
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
The lock is a sleeping lock and local_irq_save() is not the
|
||||
optimsation we are looking for. Redo it to make it work on -RT and
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: tty/serial/pl011: Make the locking work on RT
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Tue, 08 Jan 2013 21:36:51 +0100
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
The lock is a sleeping lock and local_irq_save() is not the optimsation
|
||||
we are looking for. Redo it to make it work on -RT and non-RT.
|
||||
|
|
|
@ -2,7 +2,7 @@ From: Mike Galbraith <umgwanakikbuti@gmail.com>
|
|||
Date: Thu, 20 Oct 2016 11:15:22 +0200
|
||||
Subject: [PATCH] drivers/zram: Don't disable preemption in
|
||||
zcomp_stream_get/put()
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
In v4.7, the driver switched to percpu compression streams, disabling
|
||||
preemption via get/put_cpu_ptr(). Use a per-zcomp_strm lock here. We
|
||||
|
@ -63,7 +63,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
/* dynamic per-device compression frontend */
|
||||
--- a/drivers/block/zram/zram_drv.c
|
||||
+++ b/drivers/block/zram/zram_drv.c
|
||||
@@ -1016,6 +1016,7 @@ static int __zram_bvec_read(struct zram
|
||||
@@ -1026,6 +1026,7 @@ static int __zram_bvec_read(struct zram
|
||||
unsigned long handle;
|
||||
unsigned int size;
|
||||
void *src, *dst;
|
||||
|
@ -71,7 +71,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
if (zram_wb_enabled(zram)) {
|
||||
zram_slot_lock(zram, index);
|
||||
@@ -1050,6 +1051,7 @@ static int __zram_bvec_read(struct zram
|
||||
@@ -1060,6 +1061,7 @@ static int __zram_bvec_read(struct zram
|
||||
|
||||
size = zram_get_obj_size(zram, index);
|
||||
|
||||
|
@ -79,7 +79,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
src = zs_map_object(zram->mem_pool, handle, ZS_MM_RO);
|
||||
if (size == PAGE_SIZE) {
|
||||
dst = kmap_atomic(page);
|
||||
@@ -1057,14 +1059,13 @@ static int __zram_bvec_read(struct zram
|
||||
@@ -1067,14 +1069,13 @@ static int __zram_bvec_read(struct zram
|
||||
kunmap_atomic(dst);
|
||||
ret = 0;
|
||||
} else {
|
||||
|
|
|
@ -2,7 +2,7 @@ From: Mike Galbraith <efault@gmx.de>
|
|||
Date: Wed, 23 Aug 2017 11:57:29 +0200
|
||||
Subject: [PATCH] drivers/zram: fix zcomp_stream_get() smp_processor_id() use
|
||||
in preemptible code
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Use get_local_ptr() instead this_cpu_ptr() to avoid a warning regarding
|
||||
smp_processor_id() in preemptible code.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Thu, 6 Dec 2018 09:52:20 +0100
|
||||
Subject: [PATCH] drm/i915: disable tracing on -RT
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Luca Abeni reported this:
|
||||
| BUG: scheduling while atomic: kworker/u8:2/15203/0x00000003
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Wed, 19 Dec 2018 10:47:02 +0100
|
||||
Subject: [PATCH] drm/i915: skip DRM_I915_LOW_LEVEL_TRACEPOINTS with NOTRACE
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
The order of the header files is important. If this header file is
|
||||
included after tracepoint.h was included then the NOTRACE here becomes a
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: drm,i915: Use local_lock/unlock_irq() in intel_pipe_update_start/end()
|
||||
From: Mike Galbraith <umgwanakikbuti@gmail.com>
|
||||
Date: Sat, 27 Feb 2016 09:01:42 +0100
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
|
||||
[ 8.014039] BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:918
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: drm,radeon,i915: Use preempt_disable/enable_rt() where recommended
|
||||
From: Mike Galbraith <umgwanakikbuti@gmail.com>
|
||||
Date: Sat, 27 Feb 2016 08:09:11 +0100
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
DRM folks identified the spots, so use them.
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Thu, 26 Jul 2018 15:06:10 +0200
|
||||
Subject: [PATCH] efi: Allow efi=runtime
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
In case the option "efi=noruntime" is default at built-time, the user
|
||||
could overwrite its sate by `efi=runtime' and allow it again.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Thu, 26 Jul 2018 15:03:16 +0200
|
||||
Subject: [PATCH] efi: Disable runtime services on RT
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Based on meassurements the EFI functions get_variable /
|
||||
get_next_variable take up to 2us which looks okay.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: fs/epoll: Do not disable preemption on RT
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Fri, 08 Jul 2011 16:35:35 +0200
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
ep_call_nested() takes a sleeping lock so we can't disable preemption.
|
||||
The light version is enough since ep_call_nested() doesn't mind beeing
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Mon, 16 Feb 2015 18:49:10 +0100
|
||||
Subject: fs/aio: simple simple work
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
|BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:768
|
||||
|in_atomic(): 1, irqs_disabled(): 0, pid: 26, name: rcuos/2
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Wed, 13 Sep 2017 12:32:34 +0200
|
||||
Subject: [PATCH] fs/dcache: bring back explicit INIT_HLIST_BL_HEAD init
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Commit 3d375d78593c ("mm: update callers to use HASH_ZERO flag") removed
|
||||
INIT_HLIST_BL_HEAD and uses the ZERO flag instead for the init. However
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
--- a/fs/dcache.c
|
||||
+++ b/fs/dcache.c
|
||||
@@ -3062,6 +3062,8 @@ static int __init set_dhash_entries(char
|
||||
@@ -3058,6 +3058,8 @@ static int __init set_dhash_entries(char
|
||||
|
||||
static void __init dcache_init_early(void)
|
||||
{
|
||||
|
@ -24,7 +24,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
/* If hashes are distributed across NUMA nodes, defer
|
||||
* hash allocation until vmalloc space is available.
|
||||
*/
|
||||
@@ -3078,11 +3080,16 @@ static void __init dcache_init_early(voi
|
||||
@@ -3074,11 +3076,16 @@ static void __init dcache_init_early(voi
|
||||
NULL,
|
||||
0,
|
||||
0);
|
||||
|
@ -41,7 +41,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
/*
|
||||
* A constructor could be added for stable state like the lists,
|
||||
* but it is probably not worth it because of the cache nature
|
||||
@@ -3106,6 +3113,10 @@ static void __init dcache_init(void)
|
||||
@@ -3102,6 +3109,10 @@ static void __init dcache_init(void)
|
||||
NULL,
|
||||
0,
|
||||
0);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Fri, 20 Oct 2017 11:29:53 +0200
|
||||
Subject: [PATCH] fs/dcache: disable preemption on i_dir_seq's write side
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
i_dir_seq is an opencoded seqcounter. Based on the code it looks like we
|
||||
could have two writers in parallel despite the fact that the d_lock is
|
||||
|
@ -24,7 +24,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
--- a/fs/dcache.c
|
||||
+++ b/fs/dcache.c
|
||||
@@ -2404,9 +2404,10 @@ EXPORT_SYMBOL(d_rehash);
|
||||
@@ -2400,9 +2400,10 @@ EXPORT_SYMBOL(d_rehash);
|
||||
static inline unsigned start_dir_add(struct inode *dir)
|
||||
{
|
||||
|
||||
|
@ -37,7 +37,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
return n;
|
||||
cpu_relax();
|
||||
}
|
||||
@@ -2414,7 +2415,8 @@ static inline unsigned start_dir_add(str
|
||||
@@ -2410,7 +2411,8 @@ static inline unsigned start_dir_add(str
|
||||
|
||||
static inline void end_dir_add(struct inode *dir, unsigned n)
|
||||
{
|
||||
|
@ -47,7 +47,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
}
|
||||
|
||||
static void d_wait_lookup(struct dentry *dentry)
|
||||
@@ -2447,7 +2449,7 @@ struct dentry *d_alloc_parallel(struct d
|
||||
@@ -2443,7 +2445,7 @@ struct dentry *d_alloc_parallel(struct d
|
||||
|
||||
retry:
|
||||
rcu_read_lock();
|
||||
|
@ -56,7 +56,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
r_seq = read_seqbegin(&rename_lock);
|
||||
dentry = __d_lookup_rcu(parent, name, &d_seq);
|
||||
if (unlikely(dentry)) {
|
||||
@@ -2475,7 +2477,7 @@ struct dentry *d_alloc_parallel(struct d
|
||||
@@ -2471,7 +2473,7 @@ struct dentry *d_alloc_parallel(struct d
|
||||
}
|
||||
|
||||
hlist_bl_lock(b);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: fs: dcache: Use cpu_chill() in trylock loops
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Wed, 07 Mar 2012 21:00:34 +0100
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Retry loops on RT might loop forever when the modifying side was
|
||||
preempted. Use cpu_chill() instead of cpu_relax() to let the system
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Wed, 14 Sep 2016 14:35:49 +0200
|
||||
Subject: [PATCH] fs/dcache: use swait_queue instead of waitqueue
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
__d_lookup_done() invokes wake_up_all() while holding a hlist_bl_lock()
|
||||
which disables preemption. As a workaround convert it to swait.
|
||||
|
@ -34,7 +34,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
--- a/fs/dcache.c
|
||||
+++ b/fs/dcache.c
|
||||
@@ -2421,21 +2421,24 @@ static inline void end_dir_add(struct in
|
||||
@@ -2417,21 +2417,24 @@ static inline void end_dir_add(struct in
|
||||
|
||||
static void d_wait_lookup(struct dentry *dentry)
|
||||
{
|
||||
|
@ -70,7 +70,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
{
|
||||
unsigned int hash = name->hash;
|
||||
struct hlist_bl_head *b = in_lookup_hash(parent, hash);
|
||||
@@ -2550,7 +2553,7 @@ void __d_lookup_done(struct dentry *dent
|
||||
@@ -2546,7 +2549,7 @@ void __d_lookup_done(struct dentry *dent
|
||||
hlist_bl_lock(b);
|
||||
dentry->d_flags &= ~DCACHE_PAR_LOOKUP;
|
||||
__hlist_bl_del(&dentry->d_u.d_in_lookup_hash);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Fri, 18 Mar 2011 10:11:25 +0100
|
||||
Subject: fs: jbd/jbd2: Make state lock and journal head lock rt safe
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
bit_spin_locks break under RT.
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Thu, 15 Sep 2016 10:51:27 +0200
|
||||
Subject: [PATCH] fs/nfs: turn rmdir_sem into a semaphore
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
The RW semaphore had a reader side which used the _non_owner version
|
||||
because it most likely took the reader lock in one thread and released it
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Fri, 18 Mar 2011 09:18:52 +0100
|
||||
Subject: buffer_head: Replace bh_uptodate_lock for -rt
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Wrap the bit_spin_lock calls into a separate inline and add the RT
|
||||
replacements with a real spinlock.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Clark Williams <williams@redhat.com>
|
||||
Date: Tue, 3 Jul 2018 13:34:30 -0500
|
||||
Subject: [PATCH] fscache: initialize cookie hash table raw spinlocks
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
The fscache cookie mechanism uses a hash table of hlist_bl_head structures. The
|
||||
PREEMPT_RT patcheset adds a raw spinlock to this structure and so on PREEMPT_RT
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Mike Galbraith <umgwanakikbuti@gmail.com>
|
||||
Date: Sun, 16 Oct 2016 05:08:30 +0200
|
||||
Subject: [PATCH] ftrace: Fix trace header alignment
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Line up helper arrows to the right column.
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Sun, 17 Jul 2011 21:56:42 +0200
|
||||
Subject: trace: Add migrate-disabled counter to tracing output
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
---
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Fri, 1 Mar 2013 11:17:42 +0100
|
||||
Subject: futex: Ensure lock/unlock symetry versus pi_lock and hash bucket lock
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
In exit_pi_state_list() we have the following locking construct:
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Steven Rostedt <rostedt@goodmis.org>
|
||||
Date: Tue, 14 Jul 2015 14:26:34 +0200
|
||||
Subject: futex: Fix bug on when a requeued RT task times out
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Requeue with timeout causes a bug with PREEMPT_RT_FULL.
|
||||
|
||||
|
@ -66,7 +66,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|||
}
|
||||
|
||||
/*
|
||||
@@ -1763,6 +1764,34 @@ int __rt_mutex_start_proxy_lock(struct r
|
||||
@@ -1784,6 +1785,34 @@ int __rt_mutex_start_proxy_lock(struct r
|
||||
if (try_to_take_rt_mutex(lock, task, NULL))
|
||||
return 1;
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Wed, 8 Mar 2017 14:23:35 +0100
|
||||
Subject: [PATCH] futex: workaround migrate_disable/enable in different context
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
migrate_disable()/migrate_enable() takes a different path in atomic() vs
|
||||
!atomic() context. These little hacks ensure that we don't underflow / overflow
|
||||
|
@ -16,8 +16,8 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
--- a/kernel/futex.c
|
||||
+++ b/kernel/futex.c
|
||||
@@ -2855,9 +2855,18 @@ static int futex_lock_pi(u32 __user *uad
|
||||
* lock handoff sequence.
|
||||
@@ -2856,6 +2856,14 @@ static int futex_lock_pi(u32 __user *uad
|
||||
* before __rt_mutex_start_proxy_lock() is done.
|
||||
*/
|
||||
raw_spin_lock_irq(&q.pi_state->pi_mutex.wait_lock);
|
||||
+ /*
|
||||
|
@ -29,14 +29,18 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
+ migrate_disable();
|
||||
+
|
||||
spin_unlock(q.lock_ptr);
|
||||
/*
|
||||
* __rt_mutex_start_proxy_lock() unconditionally enqueues the @rt_waiter
|
||||
@@ -2864,6 +2872,7 @@ static int futex_lock_pi(u32 __user *uad
|
||||
*/
|
||||
ret = __rt_mutex_start_proxy_lock(&q.pi_state->pi_mutex, &rt_waiter, current);
|
||||
raw_spin_unlock_irq(&q.pi_state->pi_mutex.wait_lock);
|
||||
+ migrate_enable();
|
||||
|
||||
if (ret) {
|
||||
if (ret == 1)
|
||||
@@ -3004,11 +3013,21 @@ static int futex_unlock_pi(u32 __user *u
|
||||
* observed.
|
||||
@@ -3012,11 +3021,21 @@ static int futex_unlock_pi(u32 __user *u
|
||||
* rt_waiter. Also see the WARN in wake_futex_pi().
|
||||
*/
|
||||
raw_spin_lock_irq(&pi_state->pi_mutex.wait_lock);
|
||||
+ /*
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Ingo Molnar <mingo@elte.hu>
|
||||
Date: Fri, 3 Jul 2009 08:29:57 -0500
|
||||
Subject: genirq: Disable irqpoll on -rt
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Creates long latencies for no value
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Wed, 21 Aug 2013 17:48:46 +0200
|
||||
Subject: genirq: Do not invoke the affinity callback via a workqueue on RT
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Joe Korty reported, that __irq_set_affinity_locked() schedules a
|
||||
workqueue while holding a rawlock which results in a might_sleep()
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: genirq: Force interrupt thread on RT
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Sun, 03 Apr 2011 11:57:29 +0200
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Force threaded_irqs and optimize the code (force_irqthreads) in regard
|
||||
to this.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Josh Cartwright <joshc@ni.com>
|
||||
Date: Thu, 11 Feb 2016 11:54:00 -0600
|
||||
Subject: genirq: update irq_set_irqchip_state documentation
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
On -rt kernels, the use of migrate_disable()/migrate_enable() is
|
||||
sufficient to guarantee a task isn't moved to another CPU. Update the
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Fri, 4 Aug 2017 18:31:00 +0200
|
||||
Subject: [PATCH] hotplug: duct-tape RT-rwlock usage for non-RT
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
This type is only available on -RT. We need to craft something for
|
||||
non-RT. Since the only migrate_disable() user is -RT only, there is no
|
||||
|
@ -55,7 +55,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
}
|
||||
|
||||
DEFINE_STATIC_PERCPU_RWSEM(cpu_hotplug_lock);
|
||||
@@ -886,7 +890,9 @@ static int take_cpu_down(void *_param)
|
||||
@@ -861,7 +865,9 @@ static int take_cpu_down(void *_param)
|
||||
|
||||
static int takedown_cpu(unsigned int cpu)
|
||||
{
|
||||
|
@ -65,7 +65,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu);
|
||||
int err;
|
||||
|
||||
@@ -899,14 +905,18 @@ static int takedown_cpu(unsigned int cpu
|
||||
@@ -874,14 +880,18 @@ static int takedown_cpu(unsigned int cpu
|
||||
*/
|
||||
irq_lock_sparse();
|
||||
|
||||
|
@ -84,7 +84,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
/* CPU refused to die */
|
||||
irq_unlock_sparse();
|
||||
/* Unpark the hotplug thread so we can rollback there */
|
||||
@@ -925,7 +935,9 @@ static int takedown_cpu(unsigned int cpu
|
||||
@@ -900,7 +910,9 @@ static int takedown_cpu(unsigned int cpu
|
||||
wait_for_ap_thread(st, false);
|
||||
BUG_ON(st->state != CPUHP_AP_IDLE_DEAD);
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: hotplug: Lightweight get online cpus
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Wed, 15 Jun 2011 12:36:06 +0200
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
get_online_cpus() is a heavy weight function which involves a global
|
||||
mutex. migrate_disable() wants a simpler construct which prevents only
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Tue, 19 Feb 2019 16:59:15 +0100
|
||||
Subject: [PATCH] hrtimer: Don't lose state in cpu_chill()
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
In cpu_chill() the state is set to TASK_UNINTERRUPTIBLE and a timer is
|
||||
programmed. On return the state is always TASK_RUNNING which means we
|
||||
lose the state if it was something other than RUNNING. Also
|
||||
set_current_state() sets ->task_state_change to within cpu_chill() which
|
||||
is not expected.
|
||||
|
||||
Save the task state on entry and restore it on return. Simply set the
|
||||
state in order to avoid updating ->task_state_change.
|
||||
|
||||
Cc: stable-rt@vger.kernel.org
|
||||
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
---
|
||||
kernel/time/hrtimer.c | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/kernel/time/hrtimer.c
|
||||
+++ b/kernel/time/hrtimer.c
|
||||
@@ -1902,15 +1902,18 @@ void cpu_chill(void)
|
||||
{
|
||||
ktime_t chill_time;
|
||||
unsigned int freeze_flag = current->flags & PF_NOFREEZE;
|
||||
+ long saved_state;
|
||||
|
||||
+ saved_state = current->state;
|
||||
chill_time = ktime_set(0, NSEC_PER_MSEC);
|
||||
- set_current_state(TASK_UNINTERRUPTIBLE);
|
||||
+ __set_current_state_no_track(TASK_UNINTERRUPTIBLE);
|
||||
current->flags |= PF_NOFREEZE;
|
||||
sleeping_lock_inc();
|
||||
schedule_hrtimeout(&chill_time, HRTIMER_MODE_REL_HARD);
|
||||
sleeping_lock_dec();
|
||||
if (!freeze_flag)
|
||||
current->flags &= ~PF_NOFREEZE;
|
||||
+ __set_current_state_no_track(saved_state);
|
||||
}
|
||||
EXPORT_SYMBOL(cpu_chill);
|
||||
#endif
|
|
@ -1,7 +1,7 @@
|
|||
From: Yang Shi <yang.shi@windriver.com>
|
||||
Date: Mon, 16 Sep 2013 14:09:19 -0700
|
||||
Subject: hrtimer: Move schedule_work call to helper thread
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
When run ltp leapsec_timer test, the following call trace is caught:
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Fri, 3 Jul 2009 08:44:31 -0500
|
||||
Subject: hrtimer: by timers by default into the softirq context
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
We can't have hrtimers callbacks running in hardirq context on RT. Therefore
|
||||
the timers are deferred to the softirq context by default.
|
||||
|
@ -70,7 +70,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
timer->function = perf_mux_hrtimer_handler;
|
||||
}
|
||||
|
||||
@@ -9173,7 +9173,7 @@ static void perf_swevent_init_hrtimer(st
|
||||
@@ -9181,7 +9181,7 @@ static void perf_swevent_init_hrtimer(st
|
||||
if (!is_sampling_event(event))
|
||||
return;
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Tue, 3 Jul 2018 11:25:41 +0200
|
||||
Subject: [PATCH v2] hrtimer: consolidate hrtimer_init() + hrtimer_init_sleeper() calls
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
hrtimer_init_sleeper() calls require a prior initialisation of the
|
||||
hrtimer object with hrtimer_init(). Lets make the initialisation of
|
||||
|
@ -143,7 +143,7 @@ Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
|||
hrtimer_set_expires(&to->timer, *time);
|
||||
}
|
||||
|
||||
@@ -3201,10 +3199,9 @@ static int futex_wait_requeue_pi(u32 __u
|
||||
@@ -3209,10 +3207,9 @@ static int futex_wait_requeue_pi(u32 __u
|
||||
|
||||
if (abs_time) {
|
||||
to = &timeout;
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Tue, 26 Feb 2019 12:31:10 +0100
|
||||
Subject: [PATCH] hrtimer: cpu_chill(): save task state in ->saved_state()
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
In the previous change I saved the current task state on stack. This was
|
||||
bad because while the task is scheduled-out it might receive a wake-up.
|
||||
The wake up changes the task state and we must not destroy it.
|
||||
|
||||
Save the task-state in ->saved_state under a PI-lock to unsure that
|
||||
state changes during are not missed while the task temporary scheduled
|
||||
out.
|
||||
|
||||
Reported-by: Mike Galbraith <efault@gmx.de>
|
||||
Tested-by: Mike Galbraith <efault@gmx.de>
|
||||
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
---
|
||||
kernel/time/hrtimer.c | 18 +++++++++++++-----
|
||||
1 file changed, 13 insertions(+), 5 deletions(-)
|
||||
|
||||
--- a/kernel/time/hrtimer.c
|
||||
+++ b/kernel/time/hrtimer.c
|
||||
@@ -1900,20 +1900,28 @@ COMPAT_SYSCALL_DEFINE2(nanosleep, struct
|
||||
*/
|
||||
void cpu_chill(void)
|
||||
{
|
||||
- ktime_t chill_time;
|
||||
unsigned int freeze_flag = current->flags & PF_NOFREEZE;
|
||||
- long saved_state;
|
||||
+ struct task_struct *self = current;
|
||||
+ ktime_t chill_time;
|
||||
|
||||
- saved_state = current->state;
|
||||
- chill_time = ktime_set(0, NSEC_PER_MSEC);
|
||||
+ raw_spin_lock_irq(&self->pi_lock);
|
||||
+ self->saved_state = self->state;
|
||||
__set_current_state_no_track(TASK_UNINTERRUPTIBLE);
|
||||
+ raw_spin_unlock_irq(&self->pi_lock);
|
||||
+
|
||||
+ chill_time = ktime_set(0, NSEC_PER_MSEC);
|
||||
+
|
||||
current->flags |= PF_NOFREEZE;
|
||||
sleeping_lock_inc();
|
||||
schedule_hrtimeout(&chill_time, HRTIMER_MODE_REL_HARD);
|
||||
sleeping_lock_dec();
|
||||
if (!freeze_flag)
|
||||
current->flags &= ~PF_NOFREEZE;
|
||||
- __set_current_state_no_track(saved_state);
|
||||
+
|
||||
+ raw_spin_lock_irq(&self->pi_lock);
|
||||
+ __set_current_state_no_track(self->saved_state);
|
||||
+ self->saved_state = TASK_RUNNING;
|
||||
+ raw_spin_unlock_irq(&self->pi_lock);
|
||||
}
|
||||
EXPORT_SYMBOL(cpu_chill);
|
||||
#endif
|
|
@ -2,7 +2,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
Date: Thu, 6 Dec 2018 10:15:13 +0100
|
||||
Subject: [PATCH] hrtimer: move state change before hrtimer_cancel in
|
||||
do_nanosleep()
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
There is a small window between setting t->task to NULL and waking the
|
||||
task up (which would set TASK_RUNNING). So the timer would fire, run and
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Ingo Molnar <mingo@elte.hu>
|
||||
Date: Fri, 3 Jul 2009 08:29:34 -0500
|
||||
Subject: hrtimers: Prepare full preemption
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Make cancellation of a running callback in softirq context safe
|
||||
against preemption.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: genirq: Allow disabling of softirq processing in irq thread context
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Tue, 31 Jan 2012 13:01:27 +0100
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
The processing of softirqs in irq thread context is a performance gain
|
||||
for the non-rt workloads of a system, but it's counterproductive for
|
||||
|
|
|
@ -2,7 +2,7 @@ From: Marc Zyngier <marc.zyngier@arm.com>
|
|||
Date: Fri, 27 Jul 2018 13:38:54 +0100
|
||||
Subject: [PATCH] irqchip/gic-v3-its: Move pending table allocation to init
|
||||
time
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
|
||||
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
|
@ -13,7 +13,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
--- a/drivers/irqchip/irq-gic-v3-its.c
|
||||
+++ b/drivers/irqchip/irq-gic-v3-its.c
|
||||
@@ -173,6 +173,7 @@ static DEFINE_RAW_SPINLOCK(vmovp_lock);
|
||||
@@ -179,6 +179,7 @@ static DEFINE_RAW_SPINLOCK(vmovp_lock);
|
||||
static DEFINE_IDA(its_vpeid_ida);
|
||||
|
||||
#define gic_data_rdist() (raw_cpu_ptr(gic_rdists->rdist))
|
||||
|
@ -21,7 +21,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
#define gic_data_rdist_rd_base() (gic_data_rdist()->rd_base)
|
||||
#define gic_data_rdist_vlpi_base() (gic_data_rdist_rd_base() + SZ_128K)
|
||||
|
||||
@@ -1622,7 +1623,7 @@ static void its_free_prop_table(struct p
|
||||
@@ -1628,7 +1629,7 @@ static void its_free_prop_table(struct p
|
||||
get_order(LPI_PROPBASE_SZ));
|
||||
}
|
||||
|
||||
|
@ -30,7 +30,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
{
|
||||
phys_addr_t paddr;
|
||||
|
||||
@@ -1945,30 +1946,47 @@ static void its_free_pending_table(struc
|
||||
@@ -1951,30 +1952,47 @@ static void its_free_pending_table(struc
|
||||
get_order(max_t(u32, LPI_PENDBASE_SZ, SZ_64K)));
|
||||
}
|
||||
|
||||
|
@ -93,7 +93,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
/* set PROPBASE */
|
||||
val = (page_to_phys(gic_rdists->prop_page) |
|
||||
GICR_PROPBASER_InnerShareable |
|
||||
@@ -2020,6 +2038,10 @@ static void its_cpu_init_lpis(void)
|
||||
@@ -2026,6 +2044,10 @@ static void its_cpu_init_lpis(void)
|
||||
|
||||
/* Make sure the GIC has seen the above */
|
||||
dsb(sy);
|
||||
|
@ -104,7 +104,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
}
|
||||
|
||||
static void its_cpu_init_collection(struct its_node *its)
|
||||
@@ -3498,16 +3520,6 @@ static int redist_disable_lpis(void)
|
||||
@@ -3521,16 +3543,6 @@ static int redist_disable_lpis(void)
|
||||
u64 timeout = USEC_PER_SEC;
|
||||
u64 val;
|
||||
|
||||
|
@ -121,7 +121,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
if (!gic_rdists_supports_plpis()) {
|
||||
pr_info("CPU%d: LPIs not supported\n", smp_processor_id());
|
||||
return -ENXIO;
|
||||
@@ -3517,7 +3529,18 @@ static int redist_disable_lpis(void)
|
||||
@@ -3540,7 +3552,18 @@ static int redist_disable_lpis(void)
|
||||
if (!(val & GICR_CTLR_ENABLE_LPIS))
|
||||
return 0;
|
||||
|
||||
|
@ -141,7 +141,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
smp_processor_id());
|
||||
add_taint(TAINT_CRAP, LOCKDEP_STILL_OK);
|
||||
|
||||
@@ -3773,7 +3796,8 @@ int __init its_init(struct fwnode_handle
|
||||
@@ -3796,7 +3819,8 @@ int __init its_init(struct fwnode_handle
|
||||
}
|
||||
|
||||
gic_rdists = rdists;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: irqwork: push most work into softirq context
|
||||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Tue, 23 Jun 2015 15:32:51 +0200
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Initially we defered all irqwork into softirq because we didn't want the
|
||||
latency spikes if perf or another user was busy and delayed the RT task.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: jump-label: disable if stop_machine() is used
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Wed, 08 Jul 2015 17:14:48 +0200
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Some architectures are using stop_machine() while switching the opcode which
|
||||
leads to latency spikes.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: kconfig: Disable config options which are not RT compatible
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Sun, 24 Jul 2011 12:11:43 +0200
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Disable stuff which is known to have issues on RT
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: kconfig: Add PREEMPT_RT_FULL
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Wed, 29 Jun 2011 14:58:57 +0200
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
Introduce the final symbol for PREEMPT_RT_FULL.
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Thu, 19 May 2016 17:45:27 +0200
|
||||
Subject: [PATCH] kernel/printk: Don't try to print from IRQ/NMI region
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.15-rt12.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.25-rt16.tar.xz
|
||||
|
||||
On -RT we try to acquire sleeping locks which might lead to warnings
|
||||
from lockdep or a warn_on() from spin_try_lock() (which is a rtmutex on
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue