Release linux (4.8.7-1).
-----BEGIN PGP SIGNATURE----- iQIcBAABCgAGBQJYKMjFAAoJEOe/yOyVhhEJOtIP/RIo9vUk0PusThnw4bYQTA8T x8UTEpGJ+tqWBRL+yv7Ff3A8qP2TRAvJW2xzqu1+4UwNYgCSTa8A20bJ6crGzN8X Y6J7nqWFuzWsB2SHsPvYI1m0Q9luNrQ+1vkohpH53u8FfJxuceHwP/tFj6ShMl8i bNUiftui2Sc82JUjUdiG2EpXlIJH+N3aO8+R5ER3qUqoiHxChrslSbh3Lg8T8Tcp ItwwLi6K9s3CjYCiDiZ54+BYYQRy+rmTRFpEmgac4v2+HqXrMKAR4D6EomqMl3r1 wHQ/F/Tt1GMvYvJniKWJIJVeCzuZSBmaQrL+D7xkKVGrzMo7QGGW1xr3DzyV1alc Ugx4k2nDbPDGinrbkhJbuds02VDIl8vfrnUM1NCYZ2GrReD5jJPj6OcZvlXRbjZw gUL1j+3w1dCa71E2rufZK7DZnGw4MjR9Q0cAefbgWNzEFDNh3nXQEKpxleEMmT/C xXVR2cfUpOAr1J4vR++I7kAn9re9tw7UlX3JYqH8+ty6Lm+DxrzoGMxEd1bmxYm9 yzIn4O8x6LK2B7NdHfRs1SJC4rWWy/3+2z+5SnFroGMem8ugDhB95Q3QFvQGe9Ga zw1T6+GlYF9oglzY87XcKY2oUQveL8A45pM2TF3HsgGbx7wziR2yymjWAk03w32Y uYbKvmpQsH/wNrOA8E8I =uDst -----END PGP SIGNATURE----- Merge tag 'debian/4.8.7-1' Drop ABI maintenance and patches that are already upstream.
This commit is contained in:
commit
abd19bbc53
|
@ -36,6 +36,253 @@ linux (4.9~rc3-1~exp1) experimental; urgency=medium
|
|||
|
||||
-- Ben Hutchings <ben@decadent.org.uk> Thu, 03 Nov 2016 16:51:55 -0600
|
||||
|
||||
linux (4.8.7-1) unstable; urgency=medium
|
||||
|
||||
* New upstream stable update:
|
||||
https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.8.6
|
||||
- [armhf,arm64] drm/vc4: Fix races when the CS reads from render targets.
|
||||
- [x86] drm/i915/backlight: setup and cache pwm alternate increment value
|
||||
- [x86] drm/i915/backlight: setup backlight pwm alternate increment on
|
||||
backlight enable
|
||||
- [x86] drm/amdgpu: fix IB alignment for UVD
|
||||
- [x86] drm/amdgpu/dce10: disable hpd on local panels
|
||||
- [x86] drm/amdgpu/dce8: disable hpd on local panels
|
||||
- [x86] drm/amdgpu/dce11: disable hpd on local panels
|
||||
- [x86] drm/amdgpu/dce11: add missing drm_mode_config_cleanup call
|
||||
- [x86] drm/amdgpu: initialize the context reset_counter in amdgpu_ctx_init
|
||||
- [x86] drm/amdgpu: change vblank_time's calculation method to reduce
|
||||
computational error.
|
||||
- drm/radeon: narrow asic_init for virtualization
|
||||
- drm/radeon/si/dpm: fix phase shedding setup
|
||||
- drm/radeon: change vblank_time's calculation method to reduce
|
||||
computational error.
|
||||
- [x86] drm/vmwgfx: Limit the user-space command buffer size
|
||||
- [x86] drm/amd/powerplay: fix mclk not switching back after multi-head
|
||||
was disabled
|
||||
- [x86] drm/i915/skl: Fix FIFO underrun (Closes: #844113)
|
||||
+ Update plane watermarks atomically during plane updates
|
||||
+ Move CRTC updating in atomic_commit into it's own hook
|
||||
+ Update DDB values atomically with wms/plane attrs
|
||||
+ Don't try to update plane watermarks if they haven't changed
|
||||
- [x86] drm/i915/gen9: only add the planes actually affected by ddb changes
|
||||
- [x86] drm/i915/gen9: fix the WaWmMemoryReadLatency implementation
|
||||
- [x86] drm/i915/gen9: minimum scanlines for Y tile is not always 4
|
||||
- [x86] drm/i915/gen9: fix plane_blocks_per_line on watermarks calculations
|
||||
- [x86] drm/i915/gen9: fix the watermark res_blocks value
|
||||
- [x86] drm/i915: SAGV is not SKL-only, so rename a few things
|
||||
- [x86] drm/i915: introduce intel_has_sagv()
|
||||
- [x86] drm/i915/kbl: KBL also needs to run the SAGV code
|
||||
- [x86] Revert "drm/i915: Check live status before reading edid"
|
||||
- [x86] drm/i915: Account for TSEG size when determining 865G stolen base
|
||||
- [x86] drm/i915/skl: Ensure pipes with changed wms get added to the state
|
||||
- [x86] drm/i915: Allow PCH DPLL sharing regardless of DPLL_SDVO_HIGH_SPEED
|
||||
- [x86] drm/i915: Move long hpd handling into the hotplug work
|
||||
- [x86] drm/i915: Allow DP to work w/o EDID
|
||||
- [x86] drm/i915: Just clear the mmiodebug before a register access
|
||||
- [x86] drm/i915: Unalias obj->phys_handle and obj->userptr
|
||||
- rt2x00usb: Fix error return code
|
||||
- uio: fix dmem_region_start computation
|
||||
- i40e: remove a stray unlock
|
||||
- i40e: fix broken i40e_config_rss_aq function
|
||||
- mwifiex: correct aid value during tdls setup
|
||||
- mwifiex: fix failed to reconnect after interface disabled/enabled
|
||||
- ath10k: Add WMI_SERVICE_PERIODIC_CHAN_STAT_SUPPORT wmi service
|
||||
- ath10k: fix sending frame in management path in push txq logic
|
||||
- ath10k: fix reporting channel survey data
|
||||
- ath10k: fix throughput regression in multi client mode
|
||||
- [armel/marvell,armhf] crypto: marvell - Don't overwrite default
|
||||
creq->state during initialization
|
||||
- crypto: gcm - Fix IV buffer size in crypto_gcm_setkey
|
||||
- [armel/marvell,armhf] crypto: marvell - Update transformation context for
|
||||
each dequeued req
|
||||
- [x86] crypto: ccp - Fix return value check in ccp_dmaengine_register()
|
||||
- [armhf] hwrng: omap - Only fail if pm_runtime_get_sync returns < 0
|
||||
- ASoC: topology: Fix error return code in soc_tplg_dapm_widget_create()
|
||||
- ASoC: dapm: Fix possible uninitialized variable in
|
||||
snd_soc_dapm_get_volsw()
|
||||
- ASoC: dapm: Fix value setting for _ENUM_DOUBLE MUX's second channel
|
||||
- ASoC: dapm: Fix kcontrol creation for output driver widget
|
||||
- staging: r8188eu: Fix scheduling while atomic splat
|
||||
- IB/qib: Remove qpt_mask global
|
||||
- IB/mlx5: Fix steering resource leak
|
||||
- mm/hugetlb: check for reserved hugepages during memory offline
|
||||
- mm/hugetlb: improve locking in dissolve_free_huge_pages()
|
||||
- [x86] drm/vmwgfx: Avoid validating views on view destruction
|
||||
- [s390x] cio: fix accidental interrupt enabling during resume
|
||||
- [s390x] con3270: fix use of uninitialised data
|
||||
- [s390x] con3270: fix insufficient space padding
|
||||
- [armhf,arm64] clk: bcm2835: Skip PLLC clocks when deciding on a new
|
||||
clock parent
|
||||
- [arm64] clk: gcc-msm8996: Fix pcie 2 pipe register offset
|
||||
- [arm64] clk: qcom: select GDSC for msm8996 gcc and mmcc
|
||||
- clk: Return errors from clk providers in __of_clk_get_from_provider()
|
||||
- clk: core: Force setting the phase delay when no change
|
||||
- clk: divider: Fix clk_divider_round_rate() to use clk_readl()
|
||||
- perf hists browser: Fix event group display
|
||||
- perf ui/tui: Reset output width for hierarchy
|
||||
- perf ui/stdio: Always reset output width for hierarchy
|
||||
- perf symbols: Check symbol_conf.allow_aliases for kallsyms loading too
|
||||
- perf symbols: Fixup symbol sizes before picking best ones
|
||||
- iwlwifi: check for valid ethernet address provided by OEM
|
||||
- iwlwifi: mvm: fix pending frames tracking on tx resp
|
||||
- iwlwifi: mvm: call a different txq_enable function
|
||||
- iwlwifi: mvm: free reserved queue on STA removal
|
||||
- iwlwifi: mvm: support BAR in reorder buffer
|
||||
- iwlwifi: mvm: disable P2P queue on mac context release
|
||||
- iwlwifi: mvm: bail out if CTDP start operation fails
|
||||
- [armhf,arm64] pinctrl: qcom: fix masking of pinmux functions
|
||||
- mpt3sas: Don't spam logs if logging level is 0
|
||||
- [powerpc*] Always restore FPU/VEC/VSX if hardware transactional memory
|
||||
in use
|
||||
- [powerpc*] Add check_if_tm_restore_required() to giveup_all()
|
||||
- [powerpc*] nvram: Fix an incorrect partition merge
|
||||
- [powerpc*] Fix usage of _PAGE_RO in hugepage
|
||||
- [armhf] dts: omap3: overo: add missing unit name for lcd35 display
|
||||
- PCI: generic: Fix pci_remap_iospace() failure path
|
||||
- [armhf] PCI: tegra: Fix pci_remap_iospace() failure path
|
||||
- libnvdimm: clear the internal poison_list when clearing badblocks
|
||||
https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.8.7
|
||||
- [armhf] i2c: rk3x: Give the tuning value 0 during
|
||||
rk3x_i2c_v0_calc_timings
|
||||
- i2c: core: fix NULL pointer dereference under race condition
|
||||
- drm/dp/mst: Clear port->pdt when tearing down the i2c adapter
|
||||
- gpio / ACPI: fix returned error from acpi_dev_gpio_irq_get()
|
||||
- gpio: GPIO_GET_CHIPINFO_IOCTL: Fix line offset validation
|
||||
- gpio: GPIO_GET_CHIPINFO_IOCTL: Fix information leak
|
||||
- gpio: GPIO_GET_LINEHANDLE_IOCTL: Validate line offset
|
||||
- gpio: GPIOHANDLE_GET_LINE_VALUES_IOCTL: Fix information leak
|
||||
- gpio: GPIO_GET_LINEEVENT_IOCTL: Validate line offset
|
||||
- gpio: GPIO_GET_LINEHANDLE_IOCTL: Reject invalid line flags
|
||||
- gpio: GPIO_GET_LINEEVENT_IOCTL: Reject invalid line and event flags
|
||||
- gpio: GPIOHANDLE_GET_LINE_VALUES_IOCTL: Fix another information leak
|
||||
- gpio: GPIO_GET_LINE{HANDLE,EVENT}_IOCTL: Fix file descriptor leak
|
||||
- libxfs: clean up _calc_dquots_per_chunk
|
||||
- mm/list_lru.c: avoid error-path NULL pointer deref
|
||||
- mm/slab: fix kmemcg cache creation delayed issue
|
||||
- mm: memcontrol: do not recurse in direct reclaim
|
||||
- [x86] thermal/powerclamp: correct cpu support check
|
||||
- KEYS: Fix short sprintf buffer in /proc/keys show function
|
||||
- ALSA: usb-audio: Add quirk for Syntek STK1160
|
||||
- ALSA: seq: Fix time account regression
|
||||
- ALSA: hda - allow 40 bit DMA mask for NVidia devices
|
||||
- ALSA: hda - Adding a new group of pin cfg into ALC295 pin quirk table
|
||||
- ALSA: hda - Fix surround output pins for ASRock B150M mobo
|
||||
- ALSA: hda - Fix headset mic detection problem for two Dell laptops
|
||||
- [powerpc*] cxl: Fix leaking pid refs in some error paths
|
||||
- btrfs: fix races on root_log_ctx lists
|
||||
- [powerpc] Convert cmp to cmpd in idle enter sequence
|
||||
- [powerpc] mm/radix: Use tlbiel only if we ever ran on the current cpu
|
||||
- [powerpc] Re-fix race condition between going idle and entering guest
|
||||
- [powerpc] Fix race condition in setting lock bit in idle/wakeup code
|
||||
- [amd64] x86/microcode/AMD: Fix more fallout from
|
||||
CONFIG_RANDOMIZE_MEMORY=y
|
||||
- timers: Prevent base clock rewind when forwarding clock
|
||||
- timers: Prevent base clock corruption when forwarding
|
||||
- timers: Plug locking race vs. timer migration
|
||||
- timers: Lock base for same bucket optimization
|
||||
- mei: txe: don't clean an unprocessed interrupt cause.
|
||||
- USB: serial: fix potential NULL-dereference at probe
|
||||
- USB: serial: cp210x: fix tiocmget error handling
|
||||
- USB: serial: ftdi_sio: add support for Infineon TriBoard TC2X7
|
||||
- xhci: use default USB_RESUME_TIMEOUT when resuming ports.
|
||||
- usb: increase ohci watchdog delay to 275 msec (Closes: #842863)
|
||||
- [powerpc] GenWQE: Fix bad page access during abort of resource
|
||||
allocation
|
||||
- [x86] smpboot: Init apic mapping before usage
|
||||
- vt: clear selection before resizing
|
||||
- [x86] hv: do not lose pending heartbeat vmbus packets
|
||||
- xhci: add restart quirk for Intel Wildcatpoint PCH
|
||||
- xhci: workaround for hosts missing CAS bit
|
||||
- tty: limit terminal size to 4M chars
|
||||
- [arm64] dts: marvell: fix clocksource for CP110 master SPI0
|
||||
- dm: free io_barrier after blk_cleanup_queue call
|
||||
- [x86] KVM: fix wbinvd_dirty_mask use-after-free
|
||||
- [s390] KVM: Fix STHYI buffer alignment for diag224
|
||||
- [armhf] mvebu: Select corediv clk for all mvebu v7 SoC
|
||||
- nfsd: Fix general protection fault in release_lock_stateid()
|
||||
- [mips*] KASLR: Fix handling of NULL FDT
|
||||
- ovl: fix get_acl() on tmpfs
|
||||
- ovl: update S_ISGID when setting posix ACLs
|
||||
- ovl: fsync after copy-up
|
||||
- virtio_ring: Make interrupt suppression spec compliant
|
||||
- virtio_pci: Limit DMA mask to 44 bits for legacy virtio devices
|
||||
- virtio: console: Unlock vqs while freeing buffers
|
||||
- dm mirror: fix read error on recovery after default leg failure
|
||||
- dm table: fix missing dm_put_target_type() in dm_table_add_target()
|
||||
- dm rq: clear kworker_task if kthread_run() returned an error
|
||||
- dm raid: fix compat_features validation (Closes: #843572)
|
||||
- dm raid: fix activation of existing raid4/10 devices
|
||||
- firewire: net: guard against rx buffer overflows (CVE-2016-8633)
|
||||
- firewire: net: fix fragmented datagram_size off-by-one
|
||||
- mac80211: discard multicast and 4-addr A-MSDUs
|
||||
- ath10k: cache calibration data when the core is stopped
|
||||
- scsi: scsi_debug: Fix memory leak if LBP enabled and module is unloaded
|
||||
- scsi: arcmsr: Send SYNCHRONIZE_CACHE command to firmware
|
||||
- [arm64, armhf] mmc: dw_mmc-pltfm: fix the potential NULL pointer
|
||||
dereference
|
||||
- RAID1: ignore discard error
|
||||
- RAID10: ignore discard error
|
||||
- md: be careful not lot leak internal curr_resync value into metadata.
|
||||
- Revert "drm/radeon: fix DP link training issue with second 4K monitor"
|
||||
- [armhf] drm/imx: ipuv3-plane: Switch EBA buffer only when we don't need
|
||||
modeset
|
||||
- [armhf] drm/imx: ipuv3-plane: Access old u/vbo properly in
|
||||
->atomic_check for YU12/YV12
|
||||
- drm/radeon/si_dpm: Limit clocks on HD86xx part
|
||||
- drm/radeon/si_dpm: workaround for SI kickers
|
||||
- drm/radeon: drop register readback in cayman_cp_int_cntl_setup
|
||||
- drm/nouveau/acpi: fix check for power resources support
|
||||
- drm/fb-helper: Don't call dirty callback for untouched clips
|
||||
- drm/fb-helper: Fix connector ref leak on error
|
||||
- drm/fb-helper: Keep references for the current set of used connectors
|
||||
- drm/i915/gen9: fix DDB partitioning for multi-screen cases
|
||||
- drm/i915/gen9: fix watermarks when using the pipe scaler
|
||||
- drm/dp/mst: Check peer device type before attempting EDID read
|
||||
- drm: Release reference from blob lookup after replacing property
|
||||
- drm/i915: Respect alternate_aux_channel for all DDI ports
|
||||
- drm/i915: Clean up DDI DDC/AUX CH sanitation
|
||||
- drm/i915/fbc: fix CFB size calculation for gen8+
|
||||
- drm: i915: Wait for fences on new fb, not old
|
||||
- i2c: mark device nodes only in case of successful instantiation
|
||||
- netfilter: xt_NFLOG: fix unexpected truncated packet
|
||||
- [arm64, armhf] pwm: Unexport children before chip removal
|
||||
- [arm64, armhf] usb: dwc3: Fix size used in dma_free_coherent()
|
||||
- [arm64, armhf] usb: chipidea: host: fix NULL ptr dereference during
|
||||
shutdown
|
||||
- [armhf] usb: musb: Fix hardirq-safe hardirq-unsafe lock order error
|
||||
- tty: vt, fix bogus division in csi_J
|
||||
- [x86] kvm: Check memopp before dereference (CVE-2016-8630)
|
||||
- btrfs: qgroup: Prevent qgroup->reserved from going subzero
|
||||
- [x86] cpufreq: intel_pstate: Set P-state upfront in performance mode
|
||||
- HID: usbhid: add ATEN CS962 to list of quirky devices
|
||||
|
||||
[ Ben Hutchings ]
|
||||
* debian/control: Fix build-dependency on openssl to work with new
|
||||
versions that have M-A: allowed (Closes: #839145)
|
||||
* [rt] Update to 4.8.6-rt5:
|
||||
- [i386] entry: Fix preempt_lazy_count check in resume_kernel()
|
||||
- sched: Use mmdrop_delayed() in sched_cpu_dying()
|
||||
- Revert "mm/zsmalloc: Use get/put_cpu_light in
|
||||
zs_map_object()/zs_unmap_object()"
|
||||
- mm/zsmalloc: copy with get_cpu_var() and locking
|
||||
- NFSv4: replace seqcount_t with a seqlock_t
|
||||
- ftrace: Fix trace header alignment
|
||||
- connector/cn_proc: Protect send_msg() with a local lock on RT
|
||||
- drivers/zram: Don't disable preemption in zcomp_stream_get/put()
|
||||
* HID: Enable HID_ALPS, HID_ASUS (Closes: #843085), HID_CMEDIA as modules
|
||||
* cpupower: Fix checks for CPU existence (Closes: #843071)
|
||||
* perf: Disable use of libcrypto (Closes: #843199)
|
||||
* IB: Enable INFINIBAND_RDMAVT as module, re-enabling INFINIBAND_HFI1
|
||||
and INFINIBAND_QIB (Closes: #843792)
|
||||
* libcpupower-dev: Depend on libcpupower1 (Closes: #840852)
|
||||
* [arm64] Enable more drivers for X-Gene (Closes: #840061):
|
||||
- ipmi: Enable IPMI_HANDLER, IPMI_DEVICE_INTERFACE, IPMI_SSIF as modules
|
||||
- i2c: Enable I2C_XGENE_SLIMPRO as module
|
||||
- mailbox: Enable XGENE_SLIMPRO_MBOX as module
|
||||
* debian/control: Build-Depend on a recent debhelper instead of dh-systemd
|
||||
|
||||
-- Ben Hutchings <ben@decadent.org.uk> Sun, 13 Nov 2016 04:38:09 +0000
|
||||
|
||||
linux (4.8.5-1) unstable; urgency=medium
|
||||
|
||||
* New upstream stable update:
|
||||
|
|
|
@ -70,6 +70,13 @@ CONFIG_HW_RANDOM_BCM2835=m
|
|||
CONFIG_HW_RANDOM_HISI=m
|
||||
CONFIG_HW_RANDOM_MSM=m
|
||||
|
||||
##
|
||||
## file: drivers/char/ipmi/Kconfig
|
||||
##
|
||||
CONFIG_IPMI_HANDLER=m
|
||||
CONFIG_IPMI_DEVICE_INTERFACE=m
|
||||
CONFIG_IPMI_SSIF=m
|
||||
|
||||
##
|
||||
## file: drivers/clk/Kconfig
|
||||
##
|
||||
|
@ -195,6 +202,7 @@ CONFIG_I2C_DESIGNWARE_PLATFORM=m
|
|||
CONFIG_I2C_QUP=m
|
||||
CONFIG_I2C_TEGRA=m
|
||||
CONFIG_I2C_CROS_EC_TUNNEL=m
|
||||
CONFIG_I2C_XGENE_SLIMPRO=m
|
||||
|
||||
##
|
||||
## file: drivers/iio/adc/Kconfig
|
||||
|
@ -231,6 +239,7 @@ CONFIG_LEDS_GPIO=m
|
|||
CONFIG_MAILBOX=y
|
||||
CONFIG_BCM2835_MBOX=y
|
||||
CONFIG_HI6220_MBOX=y
|
||||
CONFIG_XGENE_SLIMPRO_MBOX=m
|
||||
|
||||
##
|
||||
## file: drivers/memory/tegra/Kconfig
|
||||
|
|
|
@ -663,6 +663,7 @@ CONFIG_HID_A4TECH=y
|
|||
CONFIG_HID_ACRUX=m
|
||||
CONFIG_HID_ACRUX_FF=y
|
||||
CONFIG_HID_APPLE=y
|
||||
CONFIG_HID_ASUS=m
|
||||
CONFIG_HID_AUREAL=m
|
||||
CONFIG_HID_BELKIN=y
|
||||
CONFIG_HID_BETOP_FF=m
|
||||
|
@ -670,6 +671,7 @@ CONFIG_HID_CHERRY=y
|
|||
CONFIG_HID_CHICONY=y
|
||||
CONFIG_HID_CORSAIR=m
|
||||
CONFIG_HID_PRODIKEYS=m
|
||||
CONFIG_HID_CMEDIA=m
|
||||
CONFIG_HID_CP2112=m
|
||||
CONFIG_HID_CYPRESS=y
|
||||
CONFIG_HID_DRAGONRISE=m
|
||||
|
@ -743,6 +745,7 @@ CONFIG_HID_ZEROPLUS=m
|
|||
CONFIG_ZEROPLUS_FF=y
|
||||
CONFIG_HID_ZYDACRON=m
|
||||
CONFIG_HID_SENSOR_HUB=m
|
||||
CONFIG_HID_ALPS=m
|
||||
|
||||
##
|
||||
## file: drivers/hid/usbhid/Kconfig
|
||||
|
@ -1197,6 +1200,11 @@ CONFIG_INFINIBAND_OCRDMA=m
|
|||
CONFIG_INFINIBAND_QIB=m
|
||||
CONFIG_INFINIBAND_QIB_DCA=y
|
||||
|
||||
##
|
||||
## file: drivers/infiniband/sw/rdmavt/Kconfig
|
||||
##
|
||||
CONFIG_INFINIBAND_RDMAVT=m
|
||||
|
||||
##
|
||||
## file: drivers/infiniband/ulp/ipoib/Kconfig
|
||||
##
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
From: Ben Hutchings <ben@decadent.org.uk>
|
||||
Date: Thu, 03 Nov 2016 15:25:26 -0600
|
||||
Subject: cpupower: Fix checks for CPU existence
|
||||
Bug: https://bugzilla.kernel.org/show_bug.cgi?id=135391
|
||||
Bug-Debian: https://bugs.debian.org/843071
|
||||
|
||||
Calls to cpufreq_cpu_exists(cpu) were converted to
|
||||
cpupower_is_cpu_online(cpu) when libcpupower was introduced and the
|
||||
former function was deleted. However, cpupower_is_cpu_online()
|
||||
returns 1 on success whereas cpufreq_cpu_exists() returned 0 on
|
||||
success. It also does not distinguish physically absent and offline
|
||||
CPUs, and does not set errno.
|
||||
|
||||
cpufreq-set has already been fixed (commit c25badc9ceb6).
|
||||
|
||||
In cpufreq-bench, which prints an error message for offline CPUs,
|
||||
properly distinguish and report the zero and negative cases.
|
||||
|
||||
Reported-by: Jose <jjorge@free.fr>
|
||||
Reported-by: Julien RIVAUD <frnchfrgg@free.fr>
|
||||
Cc: stable <stable@vger.kernel.org> # 4.7+
|
||||
Fixes: ac5a181d065d ("cpupower: Add cpuidle parts into library")
|
||||
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||
---
|
||||
--- a/tools/power/cpupower/bench/system.c
|
||||
+++ b/tools/power/cpupower/bench/system.c
|
||||
@@ -58,12 +58,19 @@ long long int get_time()
|
||||
|
||||
int set_cpufreq_governor(char *governor, unsigned int cpu)
|
||||
{
|
||||
+ int rc;
|
||||
|
||||
dprintf("set %s as cpufreq governor\n", governor);
|
||||
|
||||
- if (cpupower_is_cpu_online(cpu) != 0) {
|
||||
- perror("cpufreq_cpu_exists");
|
||||
- fprintf(stderr, "error: cpu %u does not exist\n", cpu);
|
||||
+ rc = cpupower_is_cpu_online(cpu);
|
||||
+ if (rc != 1) {
|
||||
+ if (rc < 0)
|
||||
+ fprintf(stderr, "cpupower_is_cpu_online: %s\n",
|
||||
+ strerror(-rc));
|
||||
+ else
|
||||
+ fprintf(stderr,
|
||||
+ "error: cpu %u is offline or does not exist\n",
|
||||
+ cpu);
|
||||
return -1;
|
||||
}
|
||||
|
|
@ -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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Probably happens on all ARM, with
|
||||
CONFIG_PREEMPT_RT_FULL
|
||||
|
|
|
@ -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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Marcelo Tosatti <mtosatti@redhat.com>
|
||||
Date: Wed, 8 Apr 2015 20:33:25 -0300
|
||||
Subject: KVM: lapic: mark LAPIC timer handler as irqsafe
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Since lapic timer handler only wakes up a simple waitqueue,
|
||||
it can be executed from hardirq context.
|
||||
|
|
128
debian/patches/features/all/rt/NFSv4-replace-seqcount_t-with-a-seqlock_t.patch
vendored
Normal file
128
debian/patches/features/all/rt/NFSv4-replace-seqcount_t-with-a-seqlock_t.patch
vendored
Normal file
|
@ -0,0 +1,128 @@
|
|||
Date: Fri, 28 Oct 2016 23:05:11 +0200
|
||||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
To: Trond Myklebust <trond.myklebust@primarydata.com>
|
||||
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.8/older/patches-4.8.6-rt5.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
|
||||
point. So I took a look at the code.
|
||||
It the lockdep part was removed in commit abbec2da13f0 ("NFS: Use
|
||||
raw_write_seqcount_begin/end int nfs4_reclaim_open_state") because
|
||||
lockdep complained. The whole seqcount thing was introduced in commit
|
||||
c137afabe330 ("NFSv4: Allow the state manager to mark an open_owner as
|
||||
being recovered").
|
||||
The recovery threads runs only once.
|
||||
write_seqlock() does not work on !RT because it disables preemption and it the
|
||||
writer side is preemptible (has to remain so despite the fact that it will
|
||||
block readers).
|
||||
|
||||
Reported-by: kernel test robot <xiaolong.ye@intel.com>
|
||||
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
---
|
||||
fs/nfs/delegation.c | 4 ++--
|
||||
fs/nfs/nfs4_fs.h | 2 +-
|
||||
fs/nfs/nfs4proc.c | 4 ++--
|
||||
fs/nfs/nfs4state.c | 22 ++++++++++++++++------
|
||||
4 files changed, 21 insertions(+), 11 deletions(-)
|
||||
|
||||
--- a/fs/nfs/delegation.c
|
||||
+++ b/fs/nfs/delegation.c
|
||||
@@ -150,11 +150,11 @@ static int nfs_delegation_claim_opens(st
|
||||
sp = state->owner;
|
||||
/* Block nfs4_proc_unlck */
|
||||
mutex_lock(&sp->so_delegreturn_mutex);
|
||||
- seq = raw_seqcount_begin(&sp->so_reclaim_seqcount);
|
||||
+ seq = read_seqbegin(&sp->so_reclaim_seqlock);
|
||||
err = nfs4_open_delegation_recall(ctx, state, stateid, type);
|
||||
if (!err)
|
||||
err = nfs_delegation_claim_locks(ctx, state, stateid);
|
||||
- if (!err && read_seqcount_retry(&sp->so_reclaim_seqcount, seq))
|
||||
+ if (!err && read_seqretry(&sp->so_reclaim_seqlock, seq))
|
||||
err = -EAGAIN;
|
||||
mutex_unlock(&sp->so_delegreturn_mutex);
|
||||
put_nfs_open_context(ctx);
|
||||
--- a/fs/nfs/nfs4_fs.h
|
||||
+++ b/fs/nfs/nfs4_fs.h
|
||||
@@ -107,7 +107,7 @@ struct nfs4_state_owner {
|
||||
unsigned long so_flags;
|
||||
struct list_head so_states;
|
||||
struct nfs_seqid_counter so_seqid;
|
||||
- seqcount_t so_reclaim_seqcount;
|
||||
+ seqlock_t so_reclaim_seqlock;
|
||||
struct mutex so_delegreturn_mutex;
|
||||
};
|
||||
|
||||
--- a/fs/nfs/nfs4proc.c
|
||||
+++ b/fs/nfs/nfs4proc.c
|
||||
@@ -2525,7 +2525,7 @@ static int _nfs4_open_and_get_state(stru
|
||||
unsigned int seq;
|
||||
int ret;
|
||||
|
||||
- seq = raw_seqcount_begin(&sp->so_reclaim_seqcount);
|
||||
+ seq = raw_seqcount_begin(&sp->so_reclaim_seqlock.seqcount);
|
||||
|
||||
ret = _nfs4_proc_open(opendata);
|
||||
if (ret != 0)
|
||||
@@ -2561,7 +2561,7 @@ static int _nfs4_open_and_get_state(stru
|
||||
ctx->state = state;
|
||||
if (d_inode(dentry) == state->inode) {
|
||||
nfs_inode_attach_open_context(ctx);
|
||||
- if (read_seqcount_retry(&sp->so_reclaim_seqcount, seq))
|
||||
+ if (read_seqretry(&sp->so_reclaim_seqlock, seq))
|
||||
nfs4_schedule_stateid_recovery(server, state);
|
||||
}
|
||||
out:
|
||||
--- a/fs/nfs/nfs4state.c
|
||||
+++ b/fs/nfs/nfs4state.c
|
||||
@@ -488,7 +488,7 @@ nfs4_alloc_state_owner(struct nfs_server
|
||||
nfs4_init_seqid_counter(&sp->so_seqid);
|
||||
atomic_set(&sp->so_count, 1);
|
||||
INIT_LIST_HEAD(&sp->so_lru);
|
||||
- seqcount_init(&sp->so_reclaim_seqcount);
|
||||
+ seqlock_init(&sp->so_reclaim_seqlock);
|
||||
mutex_init(&sp->so_delegreturn_mutex);
|
||||
return sp;
|
||||
}
|
||||
@@ -1459,8 +1459,12 @@ static int nfs4_reclaim_open_state(struc
|
||||
* recovering after a network partition or a reboot from a
|
||||
* server that doesn't support a grace period.
|
||||
*/
|
||||
+#ifdef CONFIG_PREEMPT_RT_FULL
|
||||
+ write_seqlock(&sp->so_reclaim_seqlock);
|
||||
+#else
|
||||
+ write_seqcount_begin(&sp->so_reclaim_seqlock.seqcount);
|
||||
+#endif
|
||||
spin_lock(&sp->so_lock);
|
||||
- raw_write_seqcount_begin(&sp->so_reclaim_seqcount);
|
||||
restart:
|
||||
list_for_each_entry(state, &sp->so_states, open_states) {
|
||||
if (!test_and_clear_bit(ops->state_flag_bit, &state->flags))
|
||||
@@ -1528,14 +1532,20 @@ static int nfs4_reclaim_open_state(struc
|
||||
spin_lock(&sp->so_lock);
|
||||
goto restart;
|
||||
}
|
||||
- raw_write_seqcount_end(&sp->so_reclaim_seqcount);
|
||||
spin_unlock(&sp->so_lock);
|
||||
+#ifdef CONFIG_PREEMPT_RT_FULL
|
||||
+ write_sequnlock(&sp->so_reclaim_seqlock);
|
||||
+#else
|
||||
+ write_seqcount_end(&sp->so_reclaim_seqlock.seqcount);
|
||||
+#endif
|
||||
return 0;
|
||||
out_err:
|
||||
nfs4_put_open_state(state);
|
||||
- spin_lock(&sp->so_lock);
|
||||
- raw_write_seqcount_end(&sp->so_reclaim_seqcount);
|
||||
- spin_unlock(&sp->so_lock);
|
||||
+#ifdef CONFIG_PREEMPT_RT_FULL
|
||||
+ write_sequnlock(&sp->so_reclaim_seqlock);
|
||||
+#else
|
||||
+ write_seqcount_end(&sp->so_reclaim_seqlock.seqcount);
|
||||
+#endif
|
||||
return status;
|
||||
}
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
From: Steven Rostedt <rostedt@goodmis.org>
|
||||
Date: Wed, 13 Feb 2013 09:26:05 -0500
|
||||
Subject: acpi/rt: Convert acpi_gbl_hardware lock back to a raw_spinlock_t
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
We hit the following bug with 3.6-rt:
|
||||
|
||||
|
|
|
@ -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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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: Benedikt Spranger <b.spranger@linutronix.de>
|
||||
Date: Sat, 6 Mar 2010 17:47:10 +0100
|
||||
Subject: ARM: AT91: PIT: Remove irq handler when clock event is unused
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Setup and remove the interrupt handler in clock event mode selection.
|
||||
This avoids calling the (shared) interrupt handler when the device is
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Sat, 1 May 2010 18:29:35 +0200
|
||||
Subject: ARM: at91: tclib: Default to tclib timer for RT
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
RT is not too happy about the shared timer interrupt in AT91
|
||||
devices. Default to tclib timer for RT.
|
||||
|
|
|
@ -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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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 @@
|
|||
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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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 @@
|
|||
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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Implement the arm pieces for lazy preempt.
|
||||
|
||||
|
|
|
@ -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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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 @@
|
|||
Subject: arm64/xen: Make XEN depend on !RT
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Mon, 12 Oct 2015 11:18:40 +0200
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
It's not ready and probably never will be, unless xen folks have a
|
||||
look at it.
|
||||
|
|
|
@ -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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Steven Rostedt <srostedt@redhat.com>
|
||||
Date: Fri, 3 Jul 2009 08:44:29 -0500
|
||||
Subject: ata: Do not disable interrupts in ide code for preempt-rt
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Use the local_irq_*_nort variants.
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Sat, 3 May 2014 11:00:29 +0200
|
||||
Subject: blk-mq: revert raw locks, post pone notifier to POST_DEAD
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
The blk_mq_cpu_notify_lock should be raw because some CPU down levels
|
||||
are called with interrupts off. The notifier itself calls currently one
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Fri, 13 Feb 2015 11:01:26 +0100
|
||||
Subject: block: blk-mq: Use swait
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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: Shorten interrupt disabled regions
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Wed, 22 Jun 2011 19:47:02 +0200
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Moving the blk_sched_flush_plug() call out of the interrupt/preempt
|
||||
disabled region in the scheduler allows us to replace
|
||||
|
|
|
@ -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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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: Ingo Molnar <mingo@elte.hu>
|
||||
Date: Fri, 3 Jul 2009 08:29:58 -0500
|
||||
Subject: bug: BUG_ON/WARN_ON variants dependend on RT/!RT
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Introduce RT/NON-RT WARN/BUG statements to avoid ifdefs in the code.
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Mike Galbraith <umgwanakikbuti@gmail.com>
|
||||
Date: Sat, 21 Jun 2014 10:09:48 +0200
|
||||
Subject: memcontrol: Prevent scheduling while atomic in cgroup code
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
mm, memcg: make refill_stock() use get_cpu_light()
|
||||
|
||||
|
|
|
@ -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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
To avoid:
|
||||
|BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:914
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Alexandre Belloni <alexandre.belloni@free-electrons.com>
|
||||
Date: Thu, 17 Mar 2016 21:09:43 +0100
|
||||
Subject: [PATCH] clockevents/drivers/timer-atmel-pit: fix double free_irq
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
clockevents_exchange_device() changes the state from detached to shutdown
|
||||
and so at that point the IRQ has not yet been requested.
|
||||
|
|
|
@ -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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
RT does not increment preempt count when a 'sleeping' spinlock is
|
||||
locked. Update PREEMPT_LOCK_OFFSET for that case.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: sched: Take RT softirq semantics into account in cond_resched()
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Thu, 14 Jul 2011 09:56:44 +0200
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
The softirq semantics work different on -RT. There is no SOFTIRQ_MASK in
|
||||
the preemption counter which leads to the BUG_ON() statement in
|
||||
|
|
68
debian/patches/features/all/rt/connector-cn_proc-Protect-send_msg-with-a-local-lock.patch
vendored
Normal file
68
debian/patches/features/all/rt/connector-cn_proc-Protect-send_msg-with-a-local-lock.patch
vendored
Normal file
|
@ -0,0 +1,68 @@
|
|||
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.8/older/patches-4.8.6-rt5.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
|
||||
|Preemption disabled at:[<ffffffff8148019b>] proc_exit_connector+0xbb/0x140
|
||||
|
|
||||
|CPU: 4 PID: 31807 Comm: sleep Tainted: G W E 4.8.0-rt11-rt #106
|
||||
|Call Trace:
|
||||
| [<ffffffff813436cd>] dump_stack+0x65/0x88
|
||||
| [<ffffffff8109c425>] ___might_sleep+0xf5/0x180
|
||||
| [<ffffffff816406b0>] __rt_spin_lock+0x20/0x50
|
||||
| [<ffffffff81640978>] rt_read_lock+0x28/0x30
|
||||
| [<ffffffff8156e209>] netlink_broadcast_filtered+0x49/0x3f0
|
||||
| [<ffffffff81522621>] ? __kmalloc_reserve.isra.33+0x31/0x90
|
||||
| [<ffffffff8156e5cd>] netlink_broadcast+0x1d/0x20
|
||||
| [<ffffffff8147f57a>] cn_netlink_send_mult+0x19a/0x1f0
|
||||
| [<ffffffff8147f5eb>] cn_netlink_send+0x1b/0x20
|
||||
| [<ffffffff814801d8>] proc_exit_connector+0xf8/0x140
|
||||
| [<ffffffff81077f71>] do_exit+0x5d1/0xba0
|
||||
| [<ffffffff810785cc>] do_group_exit+0x4c/0xc0
|
||||
| [<ffffffff81078654>] SyS_exit_group+0x14/0x20
|
||||
| [<ffffffff81640a72>] entry_SYSCALL_64_fastpath+0x1a/0xa4
|
||||
|
||||
Since ab8ed951080e ("connector: fix out-of-order cn_proc netlink message
|
||||
delivery") which is v4.7-rc6.
|
||||
|
||||
Signed-off-by: Mike Galbraith <umgwanakikbuti@gmail.com>
|
||||
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
---
|
||||
drivers/connector/cn_proc.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/connector/cn_proc.c
|
||||
+++ b/drivers/connector/cn_proc.c
|
||||
@@ -32,6 +32,7 @@
|
||||
#include <linux/pid_namespace.h>
|
||||
|
||||
#include <linux/cn_proc.h>
|
||||
+#include <linux/locallock.h>
|
||||
|
||||
/*
|
||||
* Size of a cn_msg followed by a proc_event structure. Since the
|
||||
@@ -54,10 +55,11 @@ static struct cb_id cn_proc_event_id = {
|
||||
|
||||
/* proc_event_counts is used as the sequence number of the netlink message */
|
||||
static DEFINE_PER_CPU(__u32, proc_event_counts) = { 0 };
|
||||
+static DEFINE_LOCAL_IRQ_LOCK(send_msg_lock);
|
||||
|
||||
static inline void send_msg(struct cn_msg *msg)
|
||||
{
|
||||
- preempt_disable();
|
||||
+ local_lock(send_msg_lock);
|
||||
|
||||
msg->seq = __this_cpu_inc_return(proc_event_counts) - 1;
|
||||
((struct proc_event *)msg->data)->cpu = smp_processor_id();
|
||||
@@ -70,7 +72,7 @@ static inline void send_msg(struct cn_ms
|
||||
*/
|
||||
cn_netlink_send(msg, 0, CN_IDX_PROC, GFP_NOWAIT);
|
||||
|
||||
- preempt_enable();
|
||||
+ local_unlock(send_msg_lock);
|
||||
}
|
||||
|
||||
void proc_fork_connector(struct task_struct *task)
|
|
@ -1,7 +1,7 @@
|
|||
From: Steven Rostedt <rostedt@goodmis.org>
|
||||
Date: Thu, 5 Dec 2013 09:16:52 -0500
|
||||
Subject: cpu hotplug: Document why PREEMPT_RT uses a spinlock
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
The patch:
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: cpu: Make hotplug.lock a "sleeping" spinlock on RT
|
||||
From: Steven Rostedt <rostedt@goodmis.org>
|
||||
Date: Fri, 02 Mar 2012 10:36:57 -0500
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Tasks can block on hotplug.lock in pin_current_cpu(), but their state
|
||||
might be != RUNNING. So the mutex wakeup will set the state
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Steven Rostedt <srostedt@redhat.com>
|
||||
Date: Mon, 16 Jul 2012 08:07:43 +0000
|
||||
Subject: cpu/rt: Rework cpu down for PREEMPT_RT
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Bringing a CPU down is a pain with the PREEMPT_RT kernel because
|
||||
tasks can be preempted in many more places than in non-RT. In
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Steven Rostedt <rostedt@goodmis.org>
|
||||
Date: Tue, 4 Mar 2014 12:28:32 -0500
|
||||
Subject: cpu_chill: Add a UNINTERRUPTIBLE hrtimer_nanosleep
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
We hit another bug that was caused by switching cpu_chill() from
|
||||
msleep() to hrtimer_nanosleep().
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Tiejun Chen <tiejun.chen@windriver.com>
|
||||
Subject: cpu_down: move migrate_enable() back
|
||||
Date: Thu, 7 Nov 2013 10:06:07 +0800
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Commit 08c1ab68, "hotplug-use-migrate-disable.patch", intends to
|
||||
use migrate_enable()/migrate_disable() to replace that combination
|
||||
|
|
|
@ -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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Ralf posted a picture of a backtrace from
|
||||
|
||||
|
|
|
@ -1,10 +1,43 @@
|
|||
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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
We can't deal with the cpumask allocations which happen in atomic
|
||||
context (see arch/x86/kernel/apic/io_apic.c) on RT right now.
|
||||
There are "valid" GFP_ATOMIC allocations such as
|
||||
|
||||
|BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:931
|
||||
|in_atomic(): 1, irqs_disabled(): 0, pid: 2130, name: tar
|
||||
|1 lock held by tar/2130:
|
||||
| #0: (&mm->mmap_sem){++++++}, at: [<ffffffff811d4e89>] SyS_brk+0x39/0x190
|
||||
|Preemption disabled at:[<ffffffff81063048>] flush_tlb_mm_range+0x28/0x350
|
||||
|
|
||||
|CPU: 1 PID: 2130 Comm: tar Tainted: G W 4.8.2-rt2+ #747
|
||||
|Call Trace:
|
||||
| [<ffffffff814d52dc>] dump_stack+0x86/0xca
|
||||
| [<ffffffff810a26fb>] ___might_sleep+0x14b/0x240
|
||||
| [<ffffffff819bc1d4>] rt_spin_lock+0x24/0x60
|
||||
| [<ffffffff81194fba>] get_page_from_freelist+0x83a/0x11b0
|
||||
| [<ffffffff81195e8b>] __alloc_pages_nodemask+0x15b/0x1190
|
||||
| [<ffffffff811f0b81>] alloc_pages_current+0xa1/0x1f0
|
||||
| [<ffffffff811f7df5>] new_slab+0x3e5/0x690
|
||||
| [<ffffffff811fb0d5>] ___slab_alloc+0x495/0x660
|
||||
| [<ffffffff811fb311>] __slab_alloc.isra.79+0x71/0xc0
|
||||
| [<ffffffff811fb447>] __kmalloc_node+0xe7/0x240
|
||||
| [<ffffffff814d4ee0>] alloc_cpumask_var_node+0x20/0x50
|
||||
| [<ffffffff814d4f3e>] alloc_cpumask_var+0xe/0x10
|
||||
| [<ffffffff810430c1>] native_send_call_func_ipi+0x21/0x130
|
||||
| [<ffffffff8111c13f>] smp_call_function_many+0x22f/0x370
|
||||
| [<ffffffff81062b64>] native_flush_tlb_others+0x1a4/0x3a0
|
||||
| [<ffffffff8106309b>] flush_tlb_mm_range+0x7b/0x350
|
||||
| [<ffffffff811c88e2>] tlb_flush_mmu_tlbonly+0x62/0xd0
|
||||
| [<ffffffff811c9af4>] tlb_finish_mmu+0x14/0x50
|
||||
| [<ffffffff811d1c84>] unmap_region+0xe4/0x110
|
||||
| [<ffffffff811d3db3>] do_munmap+0x293/0x470
|
||||
| [<ffffffff811d4f8c>] SyS_brk+0x13c/0x190
|
||||
| [<ffffffff810032e2>] do_fast_syscall_32+0xb2/0x2f0
|
||||
| [<ffffffff819be181>] entry_SYSENTER_compat+0x51/0x60
|
||||
|
||||
which forbid allocations at run-time.
|
||||
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
---
|
||||
|
|
|
@ -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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Don Estabrook reported
|
||||
| kernel: WARNING: CPU: 2 PID: 858 at kernel/sched/core.c:2428 migrate_disable+0xed/0x100()
|
||||
|
|
|
@ -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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Avoid filling the pool / allocating memory with irqs off().
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: dm: Make rt aware
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Mon, 14 Nov 2011 23:06:09 +0100
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Use the BUG_ON_NORT variant for the irq_disabled() checks. RT has
|
||||
interrupts legitimately enabled here as we cant deadlock against the
|
||||
|
@ -16,7 +16,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|||
|
||||
--- a/drivers/md/dm-rq.c
|
||||
+++ b/drivers/md/dm-rq.c
|
||||
@@ -802,7 +802,7 @@ static void dm_old_request_fn(struct req
|
||||
@@ -811,7 +811,7 @@ static void dm_old_request_fn(struct req
|
||||
/* Establish tio->ti before queuing work (map_tio_request) */
|
||||
tio->ti = ti;
|
||||
queue_kthread_work(&md->kworker, &tio->work);
|
||||
|
|
|
@ -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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Ingo Molnar <mingo@elte.hu>
|
||||
Date: Fri, 3 Jul 2009 08:29:24 -0500
|
||||
Subject: drivers/net: Use disable_irq_nosync() in 8139too
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Use disable_irq_nosync() instead of disable_irq() as this might be
|
||||
called in atomic context with netpoll.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Steven Rostedt <rostedt@goodmis.org>
|
||||
Date: Fri, 3 Jul 2009 08:30:00 -0500
|
||||
Subject: drivers/net: vortex fix locking issues
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Argh, cut and paste wasn't enough...
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Ingo Molnar <mingo@elte.hu>
|
||||
Date: Fri, 3 Jul 2009 08:29:30 -0500
|
||||
Subject: drivers: random: Reduce preempt disabled region
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
No need to keep preemption disabled across the whole function.
|
||||
|
||||
|
|
|
@ -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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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.
|
||||
|
|
92
debian/patches/features/all/rt/drivers-zram-Don-t-disable-preemption-in-zcomp_strea.patch
vendored
Normal file
92
debian/patches/features/all/rt/drivers-zram-Don-t-disable-preemption-in-zcomp_strea.patch
vendored
Normal file
|
@ -0,0 +1,92 @@
|
|||
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.8/older/patches-4.8.6-rt5.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
|
||||
also have to fix an lock order issue in zram_decompress_page() such
|
||||
that zs_map_object() nests inside of zcomp_stream_put() as it does in
|
||||
zram_bvec_write().
|
||||
|
||||
Signed-off-by: Mike Galbraith <umgwanakikbuti@gmail.com>
|
||||
[bigeasy: get_locked_var() -> per zcomp_strm lock]
|
||||
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
---
|
||||
drivers/block/zram/zcomp.c | 12 ++++++++++--
|
||||
drivers/block/zram/zcomp.h | 1 +
|
||||
drivers/block/zram/zram_drv.c | 6 +++---
|
||||
3 files changed, 14 insertions(+), 5 deletions(-)
|
||||
|
||||
--- a/drivers/block/zram/zcomp.c
|
||||
+++ b/drivers/block/zram/zcomp.c
|
||||
@@ -118,12 +118,19 @@ ssize_t zcomp_available_show(const char
|
||||
|
||||
struct zcomp_strm *zcomp_stream_get(struct zcomp *comp)
|
||||
{
|
||||
- return *get_cpu_ptr(comp->stream);
|
||||
+ struct zcomp_strm *zstrm;
|
||||
+
|
||||
+ zstrm = *this_cpu_ptr(comp->stream);
|
||||
+ spin_lock(&zstrm->zcomp_lock);
|
||||
+ return zstrm;
|
||||
}
|
||||
|
||||
void zcomp_stream_put(struct zcomp *comp)
|
||||
{
|
||||
- put_cpu_ptr(comp->stream);
|
||||
+ struct zcomp_strm *zstrm;
|
||||
+
|
||||
+ zstrm = *this_cpu_ptr(comp->stream);
|
||||
+ spin_unlock(&zstrm->zcomp_lock);
|
||||
}
|
||||
|
||||
int zcomp_compress(struct zcomp_strm *zstrm,
|
||||
@@ -174,6 +181,7 @@ static int __zcomp_cpu_notifier(struct z
|
||||
pr_err("Can't allocate a compression stream\n");
|
||||
return NOTIFY_BAD;
|
||||
}
|
||||
+ spin_lock_init(&zstrm->zcomp_lock);
|
||||
*per_cpu_ptr(comp->stream, cpu) = zstrm;
|
||||
break;
|
||||
case CPU_DEAD:
|
||||
--- a/drivers/block/zram/zcomp.h
|
||||
+++ b/drivers/block/zram/zcomp.h
|
||||
@@ -14,6 +14,7 @@ struct zcomp_strm {
|
||||
/* compression/decompression buffer */
|
||||
void *buffer;
|
||||
struct crypto_comp *tfm;
|
||||
+ spinlock_t zcomp_lock;
|
||||
};
|
||||
|
||||
/* dynamic per-device compression frontend */
|
||||
--- a/drivers/block/zram/zram_drv.c
|
||||
+++ b/drivers/block/zram/zram_drv.c
|
||||
@@ -568,6 +568,7 @@ static int zram_decompress_page(struct z
|
||||
struct zram_meta *meta = zram->meta;
|
||||
unsigned long handle;
|
||||
unsigned int size;
|
||||
+ struct zcomp_strm *zstrm;
|
||||
|
||||
zram_lock_table(&meta->table[index]);
|
||||
handle = meta->table[index].handle;
|
||||
@@ -579,16 +580,15 @@ static int zram_decompress_page(struct z
|
||||
return 0;
|
||||
}
|
||||
|
||||
+ zstrm = zcomp_stream_get(zram->comp);
|
||||
cmem = zs_map_object(meta->mem_pool, handle, ZS_MM_RO);
|
||||
if (size == PAGE_SIZE) {
|
||||
copy_page(mem, cmem);
|
||||
} else {
|
||||
- struct zcomp_strm *zstrm = zcomp_stream_get(zram->comp);
|
||||
-
|
||||
ret = zcomp_decompress(zstrm, cmem, size, mem);
|
||||
- zcomp_stream_put(zram->comp);
|
||||
}
|
||||
zs_unmap_object(meta->mem_pool, handle);
|
||||
+ zcomp_stream_put(zram->comp);
|
||||
zram_unlock_table(&meta->table[index]);
|
||||
|
||||
/* Should NEVER happen. Return bio error if it does. */
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Thu, 25 Apr 2013 18:12:52 +0200
|
||||
Subject: drm/i915: drop trace_i915_gem_ring_dispatch on rt
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
This tracepoint is responsible for:
|
||||
|
||||
|
|
|
@ -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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
DRM folks identified the spots, so use them.
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Sun, 16 Aug 2015 14:27:50 +0200
|
||||
Subject: dump stack: don't disable preemption during trace
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
I see here large latencies during a stack dump on x86. The
|
||||
preempt_disable() and get_cpu() should forbid moving the task to another
|
||||
|
|
|
@ -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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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 @@
|
|||
Subject: block: Turn off warning which is bogus on RT
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Tue, 14 Jun 2011 17:05:09 +0200
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
On -RT the context is always with IRQs enabled. Ignore this warning on -RT.
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Wed, 14 Sep 2016 11:55:23 +0200
|
||||
Subject: fs/dcache: include wait.h
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Since commit d9171b934526 ("parallel lookups machinery, part 4 (and
|
||||
last)") dcache.h is using but does not include wait.h. It works as long
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Wed, 14 Sep 2016 17:57:03 +0200
|
||||
Subject: [PATCH] fs/dcache: init in_lookup_hashtable
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
in_lookup_hashtable was introduced in commit 94bdd655caba ("parallel
|
||||
lookups machinery, part 3") and never initialized but since it is in
|
||||
|
|
|
@ -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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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.
|
||||
|
@ -121,7 +121,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
struct dentry *dentry;
|
||||
struct dentry *alias;
|
||||
struct inode *dir = d_inode(parent);
|
||||
@@ -1484,7 +1484,7 @@ int nfs_atomic_open(struct inode *dir, s
|
||||
@@ -1490,7 +1490,7 @@ int nfs_atomic_open(struct inode *dir, s
|
||||
struct file *file, unsigned open_flags,
|
||||
umode_t mode, int *opened)
|
||||
{
|
||||
|
|
|
@ -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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
bit_spin_locks break under RT.
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Mon, 17 Feb 2014 17:30:03 +0100
|
||||
Subject: fs: jbd2: pull your plug when waiting for space
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Two cps in parallel managed to stall the the ext4 fs. It seems that
|
||||
journal code is either waiting for locks or sleeping waiting for
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Sun, 19 Jul 2009 08:44:27 -0500
|
||||
Subject: fs: namespace preemption fix
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
On RT we cannot loop with preemption disabled here as
|
||||
mnt_make_readonly() might have been preempted. We can safely enable
|
||||
|
|
|
@ -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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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
|
||||
|
@ -22,7 +22,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
--- a/fs/nfs/dir.c
|
||||
+++ b/fs/nfs/dir.c
|
||||
@@ -1799,7 +1799,11 @@ int nfs_rmdir(struct inode *dir, struct
|
||||
@@ -1805,7 +1805,11 @@ int nfs_rmdir(struct inode *dir, struct
|
||||
|
||||
trace_nfs_rmdir_enter(dir, dentry);
|
||||
if (d_really_is_positive(dentry)) {
|
||||
|
@ -34,7 +34,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
error = NFS_PROTO(dir)->rmdir(dir, &dentry->d_name);
|
||||
/* Ensure the VFS deletes this inode */
|
||||
switch (error) {
|
||||
@@ -1809,7 +1813,11 @@ int nfs_rmdir(struct inode *dir, struct
|
||||
@@ -1815,7 +1819,11 @@ int nfs_rmdir(struct inode *dir, struct
|
||||
case -ENOENT:
|
||||
nfs_dentry_handle_enoent(dentry);
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Mike Galbraith <efault@gmx.de>
|
||||
Date: Fri, 3 Jul 2009 08:44:12 -0500
|
||||
Subject: fs: ntfs: disable interrupt only on !RT
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
On Sat, 2007-10-27 at 11:44 +0200, Ingo Molnar wrote:
|
||||
> * Nick Piggin <nickpiggin@yahoo.com.au> wrote:
|
||||
|
|
|
@ -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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Wrap the bit_spin_lock calls into a separate inline and add the RT
|
||||
replacements with a real spinlock.
|
||||
|
|
|
@ -0,0 +1,63 @@
|
|||
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.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Line up helper arrows to the right column.
|
||||
|
||||
Cc: stable-rt@vger.kernel.org
|
||||
Signed-off-by: Mike Galbraith <umgwanakikbuti@gmail.com>
|
||||
[bigeasy: fixup function tracer header]
|
||||
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
---
|
||||
kernel/trace/trace.c | 32 ++++++++++++++++----------------
|
||||
1 file changed, 16 insertions(+), 16 deletions(-)
|
||||
|
||||
--- a/kernel/trace/trace.c
|
||||
+++ b/kernel/trace/trace.c
|
||||
@@ -2896,17 +2896,17 @@ get_total_entries(struct trace_buffer *b
|
||||
|
||||
static void print_lat_help_header(struct seq_file *m)
|
||||
{
|
||||
- seq_puts(m, "# _--------=> CPU# \n"
|
||||
- "# / _-------=> irqs-off \n"
|
||||
- "# | / _------=> need-resched \n"
|
||||
- "# || / _-----=> need-resched_lazy \n"
|
||||
- "# ||| / _----=> hardirq/softirq \n"
|
||||
- "# |||| / _---=> preempt-depth \n"
|
||||
- "# ||||| / _--=> preempt-lazy-depth\n"
|
||||
- "# |||||| / _-=> migrate-disable \n"
|
||||
- "# ||||||| / delay \n"
|
||||
- "# cmd pid |||||||| time | caller \n"
|
||||
- "# \\ / |||||||| \\ | / \n");
|
||||
+ seq_puts(m, "# _--------=> CPU# \n"
|
||||
+ "# / _-------=> irqs-off \n"
|
||||
+ "# | / _------=> need-resched \n"
|
||||
+ "# || / _-----=> need-resched_lazy \n"
|
||||
+ "# ||| / _----=> hardirq/softirq \n"
|
||||
+ "# |||| / _---=> preempt-depth \n"
|
||||
+ "# ||||| / _--=> preempt-lazy-depth\n"
|
||||
+ "# |||||| / _-=> migrate-disable \n"
|
||||
+ "# ||||||| / delay \n"
|
||||
+ "# cmd pid |||||||| time | caller \n"
|
||||
+ "# \\ / |||||||| \\ | / \n");
|
||||
}
|
||||
|
||||
static void print_event_info(struct trace_buffer *buf, struct seq_file *m)
|
||||
@@ -2935,11 +2935,11 @@ static void print_func_help_header_irq(s
|
||||
"# |/ _-----=> need-resched_lazy\n"
|
||||
"# || / _---=> hardirq/softirq\n"
|
||||
"# ||| / _--=> preempt-depth\n"
|
||||
- "# |||| /_--=> preempt-lazy-depth\n"
|
||||
- "# ||||| _-=> migrate-disable \n"
|
||||
- "# ||||| / delay\n"
|
||||
- "# TASK-PID CPU# |||||| TIMESTAMP FUNCTION\n"
|
||||
- "# | | | |||||| | |\n");
|
||||
+ "# |||| / _-=> preempt-lazy-depth\n"
|
||||
+ "# ||||| / _-=> migrate-disable \n"
|
||||
+ "# |||||| / delay\n"
|
||||
+ "# TASK-PID CPU# ||||||| TIMESTAMP FUNCTION\n"
|
||||
+ "# | | | ||||||| | |\n");
|
||||
}
|
||||
|
||||
void
|
|
@ -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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Requeue with timeout causes a bug with PREEMPT_RT_FULL.
|
||||
|
||||
|
|
|
@ -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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Joe Korty reported, that __irq_set_affinity_locked() schedules a
|
||||
workqueue while holding a rawlock which results in a might_sleep()
|
||||
|
@ -11,9 +11,9 @@ This patch uses swork_queue() instead.
|
|||
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
---
|
||||
drivers/scsi/qla2xxx/qla_isr.c | 4 +++
|
||||
include/linux/interrupt.h | 5 ++++
|
||||
include/linux/interrupt.h | 6 +++++
|
||||
kernel/irq/manage.c | 43 ++++++++++++++++++++++++++++++++++++++---
|
||||
3 files changed, 49 insertions(+), 3 deletions(-)
|
||||
3 files changed, 50 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/drivers/scsi/qla2xxx/qla_isr.c
|
||||
+++ b/drivers/scsi/qla2xxx/qla_isr.c
|
||||
|
@ -39,7 +39,15 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
#include <linux/atomic.h>
|
||||
#include <asm/ptrace.h>
|
||||
@@ -229,7 +230,11 @@ extern void resume_device_irqs(void);
|
||||
@@ -218,6 +219,7 @@ extern void resume_device_irqs(void);
|
||||
* struct irq_affinity_notify - context for notification of IRQ affinity changes
|
||||
* @irq: Interrupt to which notification applies
|
||||
* @kref: Reference count, for internal use
|
||||
+ * @swork: Swork item, for internal use
|
||||
* @work: Work item, for internal use
|
||||
* @notify: Function to be called on change. This will be
|
||||
* called in process context.
|
||||
@@ -229,7 +231,11 @@ extern void resume_device_irqs(void);
|
||||
struct irq_affinity_notify {
|
||||
unsigned int irq;
|
||||
struct kref kref;
|
||||
|
|
|
@ -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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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: Tue, 14 Jul 2015 14:26:34 +0200
|
||||
Subject: gpu: don't check for the lock owner.
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
---
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Mike Galbraith <umgwanakikbuti@gmail.com>
|
||||
Date: Tue, 24 Mar 2015 08:14:49 +0100
|
||||
Subject: hotplug: Use set_cpus_allowed_ptr() in sync_unplug_thread()
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
do_set_cpus_allowed() is not safe vs ->sched_class change.
|
||||
|
||||
|
|
|
@ -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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
get_online_cpus() is a heavy weight function which involves a global
|
||||
mutex. migrate_disable() wants a simpler construct which prevents only
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: hotplug: sync_unplug: No "\n" in task name
|
||||
From: Yong Zhang <yong.zhang0@gmail.com>
|
||||
Date: Sun, 16 Oct 2011 18:56:43 +0800
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Otherwise the output will look a little odd.
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: hotplug: Use migrate disable on unplug
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Sun, 17 Jul 2011 19:35:29 +0200
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Migration needs to be disabled accross the unplug handling to make
|
||||
sure that the unplug thread is off the unplugged cpu.
|
||||
|
|
|
@ -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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.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: Wed, 23 Dec 2015 20:57:41 +0100
|
||||
Subject: hrtimer: enfore 64byte alignment
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
The patch "hrtimer: Fixup hrtimer callback changes for preempt-rt" adds
|
||||
a list_head expired to struct hrtimer_clock_base and with it we run into
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Fri, 3 Jul 2009 08:44:31 -0500
|
||||
Subject: hrtimer: Fixup hrtimer callback changes for preempt-rt
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
In preempt-rt we can not call the callbacks which take sleeping locks
|
||||
from the timer interrupt context.
|
||||
|
|
|
@ -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.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Make cancellation of a running callback in softirq context safe
|
||||
against preemption.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Mike Galbraith <bitbucket@online.de>
|
||||
Date: Fri, 30 Aug 2013 07:57:25 +0200
|
||||
Subject: hwlat-detector: Don't ignore threshold module parameter
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
If the user specified a threshold at module load time, use it.
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Steven Rostedt <rostedt@goodmis.org>
|
||||
Date: Mon, 19 Aug 2013 17:33:25 -0400
|
||||
Subject: hwlat-detector: Update hwlat_detector to add outer loop detection
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
The hwlat_detector reads two timestamps in a row, then reports any
|
||||
gap between those calls. The problem is, it misses everything between
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Steven Rostedt <rostedt@goodmis.org>
|
||||
Date: Mon, 19 Aug 2013 17:33:27 -0400
|
||||
Subject: hwlat-detector: Use thread instead of stop machine
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
There's no reason to use stop machine to search for hardware latency.
|
||||
Simply disabling interrupts while running the loop will do enough to
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Steven Rostedt <rostedt@goodmis.org>
|
||||
Date: Mon, 19 Aug 2013 17:33:26 -0400
|
||||
Subject: hwlat-detector: Use trace_clock_local if available
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
As ktime_get() calls into the timing code which does a read_seq(), it
|
||||
may be affected by other CPUS that touch that lock. To remove this
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: hwlatdetect.patch
|
||||
From: Carsten Emde <C.Emde@osadl.org>
|
||||
Date: Tue, 19 Jul 2011 13:53:12 +0100
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Jon Masters developed this wonderful SMI detector. For details please
|
||||
consult Documentation/hwlat_detector.txt. It could be ported to Linux
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Clark Williams <williams@redhat.com>
|
||||
Date: Tue, 26 May 2015 10:43:43 -0500
|
||||
Subject: i915: bogus warning from i915 when running on PREEMPT_RT
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
The i915 driver has a 'WARN_ON(!in_interrupt())' in the display
|
||||
handler, which whines constanly on the RT kernel (since the interrupt
|
||||
|
@ -19,7 +19,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
--- a/drivers/gpu/drm/i915/intel_display.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_display.c
|
||||
@@ -11613,7 +11613,7 @@ void intel_check_page_flip(struct drm_i9
|
||||
@@ -11647,7 +11647,7 @@ void intel_check_page_flip(struct drm_i9
|
||||
struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
|
||||
struct intel_flip_work *work;
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Ingo Molnar <mingo@elte.hu>
|
||||
Date: Fri, 3 Jul 2009 08:30:16 -0500
|
||||
Subject: ide: Do not disable interrupts for PREEMPT-RT
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Use the local_irq_*_nort variants.
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Tue, 14 Jul 2015 14:26:34 +0200
|
||||
Subject: idr: Use local lock instead of preempt enable/disable
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
We need to protect the per cpu variable and prevent migration.
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sven-Thorsten Dietrich <sdietrich@novell.com>
|
||||
Date: Fri, 3 Jul 2009 08:30:35 -0500
|
||||
Subject: infiniband: Mellanox IB driver patch use _nort() primitives
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Fixes in_atomic stack-dump, when Mellanox module is loaded into the RT
|
||||
Kernel.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Ingo Molnar <mingo@elte.hu>
|
||||
Date: Fri, 3 Jul 2009 08:30:16 -0500
|
||||
Subject: input: gameport: Do not disable interrupts on PREEMPT_RT
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Use the _nort() primitives.
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: Intrduce migrate_disable() + cpu_light()
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Fri, 17 Jun 2011 15:42:38 +0200
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
Introduce migrate_disable(). The task can't be pushed to another CPU but can
|
||||
be preempted.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Subject: iommu/amd: Use WARN_ON_NORT in __attach_device()
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Sat, 27 Feb 2016 10:22:23 +0100
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.2-rt2.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.6-rt5.tar.xz
|
||||
|
||||
RT does not disable interrupts here, but the protection is still
|
||||
correct. Fixup the WARN_ON so it won't yell on RT.
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue