Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update 5.14.x+fslc up to v5.14.8 #453

Merged
merged 100 commits into from
Sep 28, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
100 commits
Select commit Hold shift + click to select a range
952d4ed
PCI: pci-bridge-emul: Add PCIe Root Capabilities Register
pali Jul 22, 2021
fb28e3d
PCI: aardvark: Fix reporting CRS value
pali Jul 22, 2021
f59fcad
console: consume APC, DM, DCS
dankamongmen Aug 30, 2021
5cd412e
staging: rtl8192u: Fix bitwise vs logical operator in TranslateRxSign…
nathanchance Aug 14, 2021
069c288
um: fix stub location calculation
jmberg-intel Jul 13, 2021
dc25d3b
coredump: fix memleak in dump_vma_snapshot()
Sep 8, 2021
6909fa4
um: virtio_uml: fix memory leak on init failures
jmberg-intel Jun 25, 2021
e00e0ed
RDMA/hns: Enable stash feature of HIP09
Aug 21, 2021
e0291e6
RDMA/mlx5: Fix xlt_chunk_align calculation
niklas88 Sep 8, 2021
b005ce6
dmaengine: acpi: Avoid comparison GSI with Linux vIRQ
andy-shev Jul 30, 2021
d4e7c85
perf test: Fix bpf test sample mismatch reporting
rfmvh Aug 5, 2021
60a830d
perf symbol: Look for ImageBase in PE file to compute .text offset
rbernon Sep 9, 2021
24a026e
perf tools: Allow build-id with trailing zeros
namhyung Sep 10, 2021
8843c3d
staging: rtl8723bs: fix wpa_set_auth_algs() function
fabioaiuto Jul 15, 2021
61c87f0
n64cart: fix return value check in n64cart_probe()
Sep 9, 2021
e0e8738
thermal/drivers/exynos: Fix an error code in exynos_tmu_probe()
Aug 10, 2021
bc013a3
9p/trans_virtio: Remove sysfs file on probe failure
YongjiXie May 17, 2021
861006f
pwm: ab8500: Fix register offset calculation to not depend on probe o…
Jul 5, 2021
154d764
prctl: allow to setup brk for et_dyn executables
cyrillos Sep 8, 2021
ada62fe
nilfs2: use refcount_dec_and_lock() to fix potential UAF
Sep 8, 2021
07906d1
profiling: fix shift-out-of-bounds bugs
pskrgag Sep 8, 2021
04864f2
PM: sleep: core: Avoid setting power.must_resume to false
Sep 7, 2021
02006fe
thermal/drivers/qcom/spmi-adc-tm5: Don't abort probing if a sensor is…
Aug 23, 2021
ec33d4b
ceph: cancel delayed work instead of flushing on mdsc teardown
jtlayton Jul 27, 2021
1c90a35
pwm: lpc32xx: Don't modify HW state in .probe() after the PWM chip wa…
Jul 7, 2021
81680e8
pwm: mxs: Don't modify HW state in .probe() after the PWM chip was re…
Jul 7, 2021
acf769f
dmanegine: idxd: cleanup all device related bits after disabling device
davejiang Jun 5, 2021
6c578df
dmaengine: idxd: have command status always set
davejiang Jun 3, 2021
8583436
dmaengine: idxd: fix wq slot allocation index check
davejiang Jul 22, 2021
ecf3158
dmaengine: idxd: fix abort status check
davejiang Jul 22, 2021
0e53af9
dmaengine: idxd: clear block on fault flag when clear wq
davejiang Aug 3, 2021
c3315f6
platform/chrome: sensorhub: Add trace events for sample
gwendalcr May 14, 2021
674534e
platform/chrome: cros_ec_trace: Fix format warnings
gwendalcr Aug 30, 2021
bf55b05
s390/entry: make oklabel within CHKSTG macro local
hcahca Aug 27, 2021
7e68a2b
SUNRPC: don't pause on incomplete allocation
neilbrown Aug 29, 2021
4abef9e
math: RATIONAL_KUNIT_TEST should depend on RATIONAL instead of select…
geertu Sep 8, 2021
71f9ab9
init: move usermodehelper_enable() to populate_rootfs()
Villemoes Sep 8, 2021
bdf3f58
Kconfig.debug: drop selecting non-existing HARDLOCKUP_DETECTOR_ARCH
bulwahn Sep 8, 2021
59faa78
tools/bootconfig: Fix tracing_on option checking in ftrace2bconf.sh
mhiramat Sep 4, 2021
57df1f7
tracing/boot: Fix to loop on only subkeys
mhiramat Sep 8, 2021
654b40f
thermal/core: Fix thermal_cooling_device_register() prototype
arndb Jul 22, 2021
52cf807
drm/amdgpu: Disable PCIE_DPM on Intel RKL Platform
Kobatw Aug 30, 2021
0a1b862
drivers: base: cacheinfo: Get rid of DEFINE_SMP_CALL_CACHE_FUNCTION()
KAGA-KOKO Aug 31, 2021
7eb2c86
dma-buf: DMABUF_MOVE_NOTIFY should depend on DMA_SHARED_BUFFER
geertu Sep 2, 2021
9a9d2fb
dma-buf: DMABUF_DEBUG should depend on DMA_SHARED_BUFFER
geertu Sep 2, 2021
2d0bfe7
parisc: Move pci_dev_is_behind_card_dino to where it is used
groeck Sep 8, 2021
f74210e
iommu/amd: Relocate GAMSup check to early_enable_iommus
weihuang-amd Aug 20, 2021
cab628d
iommu/vt-d: Fix PASID leak in intel_svm_unbind_mm()
fyu1 Aug 28, 2021
4ca6014
iommu/vt-d: Fix a deadlock in intel_svm_drain_prq()
fyu1 Aug 28, 2021
3a4a126
arm64: mm: limit linear region to 51 bits for KVM in nVHE mode
ardbiesheuvel Aug 26, 2021
f7525b4
drm/ttm: Fix a deadlock if the target BO is not idle during swap
Sep 7, 2021
f8d2c2c
of: property: Disable fw_devlink DT support for X86
Sep 10, 2021
4d74704
riscv: dts: microchip: mpfs-icicle: Fix serial console
geertu Aug 26, 2021
70100a0
dmaengine: idxd: depends on !UML
jmberg-intel Jun 25, 2021
786c11a
dmaengine: sprd: Add missing MODULE_DEVICE_TABLE
SamuelZOU May 4, 2021
e921d59
cxl: Move cxl_core to new directory
Aug 2, 2021
964a983
cxl/pci: Introduce cdevm_file_operations
djbw Aug 2, 2021
996a433
dmaengine: ioat: depends on !UML
jmberg-intel Aug 9, 2021
5c9fc54
dmaengine: xilinx_dma: Set DMA mask for coherent APIs
radheyxilinx Aug 19, 2021
0a96c97
s390: add kmemleak annotation in stack_alloc()
svens-s390 Aug 27, 2021
417cd31
ASoC: audio-graph: respawn Platform Support
morimoto Aug 30, 2021
abae6b3
ACPI: PM: s2idle: Run both AMD and Microsoft methods if both are supp…
superm1 Sep 1, 2021
8e4e080
ceph: fix memory leak on decode error in ceph_handle_caps
jtlayton Jul 1, 2021
8e46ecc
ceph: request Fw caps before updating the mtime in ceph_write_iter
jtlayton Aug 11, 2021
6ca3781
ceph: remove the capsnaps when removing caps
lxbsz Aug 25, 2021
31db9b1
ceph: lockdep annotations for try_nonblocking_invalidate
jtlayton Sep 2, 2021
e0f8639
s390/unwind: use current_frame_address() to unwind current task
Sep 1, 2021
13d4c38
btrfs: update the bdev time directly when closing
josefbacik Jul 27, 2021
ebed7d8
btrfs: delay blkdev_put until after the device remove
josefbacik Jul 27, 2021
0e78f3d
btrfs: fix lockdep warning while mounting sprout fs
asj Aug 31, 2021
255c3bf
nilfs2: fix memory leak in nilfs_sysfs_create_device_group
sunnanyong Sep 8, 2021
e005476
nilfs2: fix NULL pointer in nilfs_##name##_attr_release
sunnanyong Sep 8, 2021
90b8f51
nilfs2: fix memory leak in nilfs_sysfs_create_##name##_group
sunnanyong Sep 8, 2021
6e17978
nilfs2: fix memory leak in nilfs_sysfs_delete_##name##_group
sunnanyong Sep 8, 2021
7797daf
nilfs2: fix memory leak in nilfs_sysfs_create_snapshot_group
sunnanyong Sep 8, 2021
0ea5f80
nilfs2: fix memory leak in nilfs_sysfs_delete_snapshot_group
sunnanyong Sep 8, 2021
d51100f
thermal/drivers/rcar_gen3_thermal: Store TSC id as unsigned int
Aug 4, 2021
d5b10c0
habanalabs: fix nullifying of destroyed mmu pgt pool
Jul 8, 2021
6826456
drm/amdgpu: Fixes to returning VBIOS RAS EEPROM address
Aug 24, 2021
25b4e51
drm/amd/display: Fix memory leak reported by coverity
Aug 13, 2021
350b2f2
drm/amdgpu: fix fdinfo race with process exit
PhilipYangA Jul 29, 2021
46d712b
habanalabs: add validity check for event ID received from F/W
ofirbitt Jul 20, 2021
836c080
habanalabs: fix mmu node address resolution in debugfs
yuranu Jul 29, 2021
f621eee
habanalabs: add "in device creation" status
oshpigelman Aug 16, 2021
ddd8601
habanalabs: cannot sleep while holding spinlock
Farah-kassabri Aug 15, 2021
f53bd7f
pwm: img: Don't modify HW state in .remove() callback
Jul 7, 2021
2c92f9e
pwm: rockchip: Don't modify HW state in .remove() callback
Jul 7, 2021
da66431
pwm: stm32-lp: Don't modify HW state in .remove() callback
Jul 7, 2021
e2860e2
nvmet: fixup buffer overrun in nvmet_subsys_attr_serial()
hreinecke Sep 6, 2021
2ab96bf
block: genhd: don't call blkdev_show() with major_names_lock held
Sep 7, 2021
a3330c1
blk-throttle: fix UAF by deleteing timer in blk_throtl_exit()
Sep 7, 2021
4638425
blk-mq: allow 4x BLK_MAX_REQUEST_COUNT at blk_plug for multiple_queues
liu-song-6 Sep 7, 2021
affd236
rtc: rx8010: select REGMAP_I2C
Aug 30, 2021
cacfce7
sched/idle: Make the idle timer expire in hard interrupt context
Sep 6, 2021
d1217e4
cifs: properly invalidate cached root handle when closing it
ematsumiya Sep 9, 2021
dcd45a0
io_uring: fix off-by-one in BUILD_BUG_ON check of __REQ_F_LAST_BIT
Sep 7, 2021
bef2b32
selinux,smack: fix subjective/objective credential use mixups
pcmoore Sep 23, 2021
1236431
drm/nouveau/nvkm: Replace -ENOSYS with -ENODEV
groeck Sep 8, 2021
c34892e
Linux 5.14.8
gregkh Sep 26, 2021
430729d
Merge tag 'v5.14.8' into 5.14.x+fslc
zandrey Sep 27, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Documentation/driver-api/cxl/memory-devices.rst
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ CXL Core
.. kernel-doc:: drivers/cxl/cxl.h
:internal:

.. kernel-doc:: drivers/cxl/core.c
.. kernel-doc:: drivers/cxl/core/bus.c
:doc: cxl core

External Interfaces
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0
VERSION = 5
PATCHLEVEL = 14
SUBLEVEL = 7
SUBLEVEL = 8
EXTRAVERSION =
NAME = Opossums on Parade

Expand Down
7 changes: 2 additions & 5 deletions arch/arm64/kernel/cacheinfo.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ static void ci_leaf_init(struct cacheinfo *this_leaf,
this_leaf->type = type;
}

static int __init_cache_level(unsigned int cpu)
int init_cache_level(unsigned int cpu)
{
unsigned int ctype, level, leaves, fw_level;
struct cpu_cacheinfo *this_cpu_ci = get_cpu_cacheinfo(cpu);
Expand Down Expand Up @@ -78,7 +78,7 @@ static int __init_cache_level(unsigned int cpu)
return 0;
}

static int __populate_cache_leaves(unsigned int cpu)
int populate_cache_leaves(unsigned int cpu)
{
unsigned int level, idx;
enum cache_type type;
Expand All @@ -97,6 +97,3 @@ static int __populate_cache_leaves(unsigned int cpu)
}
return 0;
}

DEFINE_SMP_CALL_CACHE_FUNCTION(init_cache_level)
DEFINE_SMP_CALL_CACHE_FUNCTION(populate_cache_leaves)
16 changes: 15 additions & 1 deletion arch/arm64/mm/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -319,7 +319,21 @@ static void __init fdt_enforce_memory_region(void)

void __init arm64_memblock_init(void)
{
const s64 linear_region_size = PAGE_END - _PAGE_OFFSET(vabits_actual);
s64 linear_region_size = PAGE_END - _PAGE_OFFSET(vabits_actual);

/*
* Corner case: 52-bit VA capable systems running KVM in nVHE mode may
* be limited in their ability to support a linear map that exceeds 51
* bits of VA space, depending on the placement of the ID map. Given
* that the placement of the ID map may be randomized, let's simply
* limit the kernel's linear map to 51 bits as well if we detect this
* configuration.
*/
if (IS_ENABLED(CONFIG_KVM) && vabits_actual == 52 &&
is_hyp_mode_available() && !is_kernel_in_hyp_mode()) {
pr_info("Capping linear region to 51 bits for KVM in nVHE mode on LVA capable hardware.\n");
linear_region_size = min_t(u64, linear_region_size, BIT(51));
}

/* Handle linux,usable-memory-range property */
fdt_enforce_memory_region();
Expand Down
7 changes: 2 additions & 5 deletions arch/mips/kernel/cacheinfo.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ do { \
leaf++; \
} while (0)

static int __init_cache_level(unsigned int cpu)
int init_cache_level(unsigned int cpu)
{
struct cpuinfo_mips *c = &current_cpu_data;
struct cpu_cacheinfo *this_cpu_ci = get_cpu_cacheinfo(cpu);
Expand Down Expand Up @@ -74,7 +74,7 @@ static void fill_cpumask_cluster(int cpu, cpumask_t *cpu_map)
cpumask_set_cpu(cpu1, cpu_map);
}

static int __populate_cache_leaves(unsigned int cpu)
int populate_cache_leaves(unsigned int cpu)
{
struct cpuinfo_mips *c = &current_cpu_data;
struct cpu_cacheinfo *this_cpu_ci = get_cpu_cacheinfo(cpu);
Expand Down Expand Up @@ -114,6 +114,3 @@ static int __populate_cache_leaves(unsigned int cpu)

return 0;
}

DEFINE_SMP_CALL_CACHE_FUNCTION(init_cache_level)
DEFINE_SMP_CALL_CACHE_FUNCTION(populate_cache_leaves)
6 changes: 5 additions & 1 deletion arch/riscv/boot/dts/microchip/microchip-mpfs-icicle-kit.dts
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,14 @@

aliases {
ethernet0 = &emac1;
serial0 = &serial0;
serial1 = &serial1;
serial2 = &serial2;
serial3 = &serial3;
};

chosen {
stdout-path = &serial0;
stdout-path = "serial0:115200n8";
};

cpus {
Expand Down
7 changes: 2 additions & 5 deletions arch/riscv/kernel/cacheinfo.c
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ static void fill_cacheinfo(struct cacheinfo **this_leaf,
}
}

static int __init_cache_level(unsigned int cpu)
int init_cache_level(unsigned int cpu)
{
struct cpu_cacheinfo *this_cpu_ci = get_cpu_cacheinfo(cpu);
struct device_node *np = of_cpu_device_node_get(cpu);
Expand Down Expand Up @@ -155,7 +155,7 @@ static int __init_cache_level(unsigned int cpu)
return 0;
}

static int __populate_cache_leaves(unsigned int cpu)
int populate_cache_leaves(unsigned int cpu)
{
struct cpu_cacheinfo *this_cpu_ci = get_cpu_cacheinfo(cpu);
struct cacheinfo *this_leaf = this_cpu_ci->info_list;
Expand Down Expand Up @@ -187,6 +187,3 @@ static int __populate_cache_leaves(unsigned int cpu)

return 0;
}

DEFINE_SMP_CALL_CACHE_FUNCTION(init_cache_level)
DEFINE_SMP_CALL_CACHE_FUNCTION(populate_cache_leaves)
20 changes: 10 additions & 10 deletions arch/s390/include/asm/stacktrace.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,16 +34,6 @@ static inline bool on_stack(struct stack_info *info,
return addr >= info->begin && addr + len <= info->end;
}

static __always_inline unsigned long get_stack_pointer(struct task_struct *task,
struct pt_regs *regs)
{
if (regs)
return (unsigned long) kernel_stack_pointer(regs);
if (task == current)
return current_stack_pointer();
return (unsigned long) task->thread.ksp;
}

/*
* Stack layout of a C stack frame.
*/
Expand Down Expand Up @@ -74,6 +64,16 @@ struct stack_frame {
((unsigned long)__builtin_frame_address(0) - \
offsetof(struct stack_frame, back_chain))

static __always_inline unsigned long get_stack_pointer(struct task_struct *task,
struct pt_regs *regs)
{
if (regs)
return (unsigned long)kernel_stack_pointer(regs);
if (task == current)
return current_frame_address();
return (unsigned long)task->thread.ksp;
}

/*
* To keep this simple mark register 2-6 as being changed (volatile)
* by the called function, even though register 6 is saved/nonvolatile.
Expand Down
8 changes: 4 additions & 4 deletions arch/s390/include/asm/unwind.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,10 @@ static inline bool unwind_error(struct unwind_state *state)
return state->error;
}

static inline void unwind_start(struct unwind_state *state,
struct task_struct *task,
struct pt_regs *regs,
unsigned long first_frame)
static __always_inline void unwind_start(struct unwind_state *state,
struct task_struct *task,
struct pt_regs *regs,
unsigned long first_frame)
{
task = task ?: current;
first_frame = first_frame ?: get_stack_pointer(task, regs);
Expand Down
4 changes: 2 additions & 2 deletions arch/s390/kernel/entry.S
Original file line number Diff line number Diff line change
Expand Up @@ -140,10 +140,10 @@ _LPP_OFFSET = __LC_LPP
TSTMSK __LC_MCCK_CODE,(MCCK_CODE_STG_ERROR|MCCK_CODE_STG_KEY_ERROR)
jnz \errlabel
TSTMSK __LC_MCCK_CODE,MCCK_CODE_STG_DEGRAD
jz oklabel\@
jz .Loklabel\@
TSTMSK __LC_MCCK_CODE,MCCK_CODE_STG_FAIL_ADDR
jnz \errlabel
oklabel\@:
.Loklabel\@:
.endm

#if IS_ENABLED(CONFIG_KVM)
Expand Down
10 changes: 7 additions & 3 deletions arch/s390/kernel/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
#include <linux/compat.h>
#include <linux/start_kernel.h>
#include <linux/hugetlb.h>
#include <linux/kmemleak.h>

#include <asm/boot_data.h>
#include <asm/ipl.h>
Expand Down Expand Up @@ -312,9 +313,12 @@ void *restart_stack;
unsigned long stack_alloc(void)
{
#ifdef CONFIG_VMAP_STACK
return (unsigned long)__vmalloc_node(THREAD_SIZE, THREAD_SIZE,
THREADINFO_GFP, NUMA_NO_NODE,
__builtin_return_address(0));
void *ret;

ret = __vmalloc_node(THREAD_SIZE, THREAD_SIZE, THREADINFO_GFP,
NUMA_NO_NODE, __builtin_return_address(0));
kmemleak_not_leak(ret);
return (unsigned long)ret;
#else
return __get_free_pages(GFP_KERNEL, THREAD_SIZE_ORDER);
#endif
Expand Down
4 changes: 3 additions & 1 deletion arch/um/drivers/virtio_uml.c
Original file line number Diff line number Diff line change
Expand Up @@ -1139,7 +1139,7 @@ static int virtio_uml_probe(struct platform_device *pdev)
rc = os_connect_socket(pdata->socket_path);
} while (rc == -EINTR);
if (rc < 0)
return rc;
goto error_free;
vu_dev->sock = rc;

spin_lock_init(&vu_dev->sock_lock);
Expand All @@ -1160,6 +1160,8 @@ static int virtio_uml_probe(struct platform_device *pdev)

error_init:
os_close_file(vu_dev->sock);
error_free:
kfree(vu_dev);
return rc;
}

Expand Down
3 changes: 1 addition & 2 deletions arch/um/kernel/skas/clone.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@
void __attribute__ ((__section__ (".__syscall_stub")))
stub_clone_handler(void)
{
int stack;
struct stub_data *data = (void *) ((unsigned long)&stack & ~(UM_KERN_PAGE_SIZE - 1));
struct stub_data *data = get_stub_page();
long err;

err = stub_syscall2(__NR_clone, CLONE_PARENT | CLONE_FILES | SIGCHLD,
Expand Down
7 changes: 2 additions & 5 deletions arch/x86/kernel/cpu/cacheinfo.c
Original file line number Diff line number Diff line change
Expand Up @@ -985,7 +985,7 @@ static void ci_leaf_init(struct cacheinfo *this_leaf,
this_leaf->priv = base->nb;
}

static int __init_cache_level(unsigned int cpu)
int init_cache_level(unsigned int cpu)
{
struct cpu_cacheinfo *this_cpu_ci = get_cpu_cacheinfo(cpu);

Expand Down Expand Up @@ -1014,7 +1014,7 @@ static void get_cache_id(int cpu, struct _cpuid4_info_regs *id4_regs)
id4_regs->id = c->apicid >> index_msb;
}

static int __populate_cache_leaves(unsigned int cpu)
int populate_cache_leaves(unsigned int cpu)
{
unsigned int idx, ret;
struct cpu_cacheinfo *this_cpu_ci = get_cpu_cacheinfo(cpu);
Expand All @@ -1033,6 +1033,3 @@ static int __populate_cache_leaves(unsigned int cpu)

return 0;
}

DEFINE_SMP_CALL_CACHE_FUNCTION(init_cache_level)
DEFINE_SMP_CALL_CACHE_FUNCTION(populate_cache_leaves)
12 changes: 12 additions & 0 deletions arch/x86/um/shared/sysdep/stub_32.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,4 +101,16 @@ static inline void remap_stack_and_trap(void)
"memory");
}

static __always_inline void *get_stub_page(void)
{
unsigned long ret;

asm volatile (
"movl %%esp,%0 ;"
"andl %1,%0"
: "=a" (ret)
: "g" (~(UM_KERN_PAGE_SIZE - 1)));

return (void *)ret;
}
#endif
12 changes: 12 additions & 0 deletions arch/x86/um/shared/sysdep/stub_64.h
Original file line number Diff line number Diff line change
Expand Up @@ -108,4 +108,16 @@ static inline void remap_stack_and_trap(void)
__syscall_clobber, "r10", "r8", "r9");
}

static __always_inline void *get_stub_page(void)
{
unsigned long ret;

asm volatile (
"movq %%rsp,%0 ;"
"andq %1,%0"
: "=a" (ret)
: "g" (~(UM_KERN_PAGE_SIZE - 1)));

return (void *)ret;
}
#endif
3 changes: 1 addition & 2 deletions arch/x86/um/stub_segv.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,8 @@
void __attribute__ ((__section__ (".__syscall_stub")))
stub_segv_handler(int sig, siginfo_t *info, void *p)
{
int stack;
struct faultinfo *f = get_stub_page();
ucontext_t *uc = p;
struct faultinfo *f = (void *)(((unsigned long)&stack) & ~(UM_KERN_PAGE_SIZE - 1));

GET_FAULTINFO_FROM_MC(*f, &uc->uc_mcontext);
trap_myself();
Expand Down
14 changes: 13 additions & 1 deletion block/blk-mq.c
Original file line number Diff line number Diff line change
Expand Up @@ -2135,6 +2135,18 @@ static void blk_add_rq_to_plug(struct blk_plug *plug, struct request *rq)
}
}

/*
* Allow 4x BLK_MAX_REQUEST_COUNT requests on plug queue for multiple
* queues. This is important for md arrays to benefit from merging
* requests.
*/
static inline unsigned short blk_plug_max_rq_count(struct blk_plug *plug)
{
if (plug->multiple_queues)
return BLK_MAX_REQUEST_COUNT * 4;
return BLK_MAX_REQUEST_COUNT;
}

/**
* blk_mq_submit_bio - Create and send a request to block device.
* @bio: Bio pointer.
Expand Down Expand Up @@ -2231,7 +2243,7 @@ blk_qc_t blk_mq_submit_bio(struct bio *bio)
else
last = list_entry_rq(plug->mq_list.prev);

if (request_count >= BLK_MAX_REQUEST_COUNT || (last &&
if (request_count >= blk_plug_max_rq_count(plug) || (last &&
blk_rq_bytes(last) >= BLK_PLUG_FLUSH_SIZE)) {
blk_flush_plug_list(plug, false);
trace_block_plug(q);
Expand Down
1 change: 1 addition & 0 deletions block/blk-throttle.c
Original file line number Diff line number Diff line change
Expand Up @@ -2458,6 +2458,7 @@ int blk_throtl_init(struct request_queue *q)
void blk_throtl_exit(struct request_queue *q)
{
BUG_ON(!q->td);
del_timer_sync(&q->td->service_queue.pending_timer);
throtl_shutdown_wq(q);
blkcg_deactivate_policy(q, &blkcg_policy_throtl);
free_percpu(q->td->latency_buckets[READ]);
Expand Down
Loading