Skip to content

Commit ad350a5

Browse files
committed
Merge remote-tracking branch 'stable/linux-4.14.y' into rpi-4.14.y
2 parents c6b70aa + 96427a5 commit ad350a5

File tree

127 files changed

+1261
-610
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

127 files changed

+1261
-610
lines changed

Documentation/networking/ip-sysctl.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -508,7 +508,7 @@ tcp_rmem - vector of 3 INTEGERs: min, default, max
508508
min: Minimal size of receive buffer used by TCP sockets.
509509
It is guaranteed to each TCP socket, even under moderate memory
510510
pressure.
511-
Default: 1 page
511+
Default: 4K
512512

513513
default: initial size of receive buffer used by TCP sockets.
514514
This value overrides net.core.rmem_default used by other protocols.
@@ -666,7 +666,7 @@ tcp_window_scaling - BOOLEAN
666666
tcp_wmem - vector of 3 INTEGERs: min, default, max
667667
min: Amount of memory reserved for send buffers for TCP sockets.
668668
Each TCP socket has rights to use it due to fact of its birth.
669-
Default: 1 page
669+
Default: 4K
670670

671671
default: initial size of send buffer used by TCP sockets. This
672672
value overrides net.core.wmem_default used by other protocols.

Documentation/virtual/kvm/cpuid.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ KVM_FEATURE_PV_UNHALT || 7 || guest checks this feature bit
5454
|| || before enabling paravirtualized
5555
|| || spinlock support.
5656
------------------------------------------------------------------------------
57+
KVM_FEATURE_ASYNC_PF_VMEXIT || 10 || paravirtualized async PF VM exit
58+
|| || can be enabled by setting bit 2
59+
|| || when writing to msr 0x4b564d02
60+
------------------------------------------------------------------------------
5761
KVM_FEATURE_CLOCKSOURCE_STABLE_BIT || 24 || host will warn if no guest-side
5862
|| || per-cpu warps are expected in
5963
|| || kvmclock.

Documentation/virtual/kvm/msr.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,8 @@ MSR_KVM_ASYNC_PF_EN: 0x4b564d02
170170
when asynchronous page faults are enabled on the vcpu 0 when
171171
disabled. Bit 1 is 1 if asynchronous page faults can be injected
172172
when vcpu is in cpl == 0. Bit 2 is 1 if asynchronous page faults
173-
are delivered to L1 as #PF vmexits.
173+
are delivered to L1 as #PF vmexits. Bit 2 can be set only if
174+
KVM_FEATURE_ASYNC_PF_VMEXIT is present in CPUID.
174175

175176
First 4 byte of 64 byte memory location will be written to by
176177
the hypervisor at the time of asynchronous page fault (APF)

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# SPDX-License-Identifier: GPL-2.0
22
VERSION = 4
33
PATCHLEVEL = 14
4-
SUBLEVEL = 24
4+
SUBLEVEL = 26
55
EXTRAVERSION =
66
NAME = Petit Gorille
77

arch/arm/boot/dts/logicpd-som-lv.dtsi

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@
9797
};
9898

9999
&i2c1 {
100+
pinctrl-names = "default";
101+
pinctrl-0 = <&i2c1_pins>;
100102
clock-frequency = <2600000>;
101103

102104
twl: twl@48 {
@@ -215,7 +217,12 @@
215217
>;
216218
};
217219

218-
220+
i2c1_pins: pinmux_i2c1_pins {
221+
pinctrl-single,pins = <
222+
OMAP3_CORE1_IOPAD(0x21ba, PIN_INPUT | MUX_MODE0) /* i2c1_scl.i2c1_scl */
223+
OMAP3_CORE1_IOPAD(0x21bc, PIN_INPUT | MUX_MODE0) /* i2c1_sda.i2c1_sda */
224+
>;
225+
};
219226
};
220227

221228
&omap3_pmx_wkup {

arch/arm/boot/dts/logicpd-torpedo-som.dtsi

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@
104104
};
105105

106106
&i2c1 {
107+
pinctrl-names = "default";
108+
pinctrl-0 = <&i2c1_pins>;
107109
clock-frequency = <2600000>;
108110

109111
twl: twl@48 {
@@ -211,6 +213,12 @@
211213
OMAP3_CORE1_IOPAD(0x21b8, PIN_INPUT | MUX_MODE0) /* hsusb0_data7.hsusb0_data7 */
212214
>;
213215
};
216+
i2c1_pins: pinmux_i2c1_pins {
217+
pinctrl-single,pins = <
218+
OMAP3_CORE1_IOPAD(0x21ba, PIN_INPUT | MUX_MODE0) /* i2c1_scl.i2c1_scl */
219+
OMAP3_CORE1_IOPAD(0x21bc, PIN_INPUT | MUX_MODE0) /* i2c1_sda.i2c1_sda */
220+
>;
221+
};
214222
};
215223

216224
&uart2 {

arch/arm/boot/dts/rk3288-phycore-som.dtsi

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -110,26 +110,6 @@
110110
};
111111
};
112112

113-
&cpu0 {
114-
cpu0-supply = <&vdd_cpu>;
115-
operating-points = <
116-
/* KHz uV */
117-
1800000 1400000
118-
1608000 1350000
119-
1512000 1300000
120-
1416000 1200000
121-
1200000 1100000
122-
1008000 1050000
123-
816000 1000000
124-
696000 950000
125-
600000 900000
126-
408000 900000
127-
312000 900000
128-
216000 900000
129-
126000 900000
130-
>;
131-
};
132-
133113
&emmc {
134114
status = "okay";
135115
bus-width = <8>;

arch/arm/kvm/hyp/Makefile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ ccflags-y += -fno-stack-protector -DDISABLE_BRANCH_PROFILING
77

88
KVM=../../../../virt/kvm
99

10+
CFLAGS_ARMV7VE :=$(call cc-option, -march=armv7ve)
11+
1012
obj-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/hyp/vgic-v2-sr.o
1113
obj-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/hyp/vgic-v3-sr.o
1214
obj-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/hyp/timer-sr.o
@@ -15,7 +17,10 @@ obj-$(CONFIG_KVM_ARM_HOST) += tlb.o
1517
obj-$(CONFIG_KVM_ARM_HOST) += cp15-sr.o
1618
obj-$(CONFIG_KVM_ARM_HOST) += vfp.o
1719
obj-$(CONFIG_KVM_ARM_HOST) += banked-sr.o
20+
CFLAGS_banked-sr.o += $(CFLAGS_ARMV7VE)
21+
1822
obj-$(CONFIG_KVM_ARM_HOST) += entry.o
1923
obj-$(CONFIG_KVM_ARM_HOST) += hyp-entry.o
2024
obj-$(CONFIG_KVM_ARM_HOST) += switch.o
25+
CFLAGS_switch.o += $(CFLAGS_ARMV7VE)
2126
obj-$(CONFIG_KVM_ARM_HOST) += s2-setup.o

arch/arm/kvm/hyp/banked-sr.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@
2020

2121
#include <asm/kvm_hyp.h>
2222

23+
/*
24+
* gcc before 4.9 doesn't understand -march=armv7ve, so we have to
25+
* trick the assembler.
26+
*/
2327
__asm__(".arch_extension virt");
2428

2529
void __hyp_text __banked_save_state(struct kvm_cpu_context *ctxt)

arch/arm/mach-mvebu/Kconfig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ config MACH_ARMADA_375
4242
depends on ARCH_MULTI_V7
4343
select ARMADA_370_XP_IRQ
4444
select ARM_ERRATA_720789
45-
select ARM_ERRATA_753970
45+
select PL310_ERRATA_753970
4646
select ARM_GIC
4747
select ARMADA_375_CLK
4848
select HAVE_ARM_SCU
@@ -58,7 +58,7 @@ config MACH_ARMADA_38X
5858
bool "Marvell Armada 380/385 boards"
5959
depends on ARCH_MULTI_V7
6060
select ARM_ERRATA_720789
61-
select ARM_ERRATA_753970
61+
select PL310_ERRATA_753970
6262
select ARM_GIC
6363
select ARM_GLOBAL_TIMER
6464
select CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK

arch/arm/plat-orion/common.c

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -472,28 +472,27 @@ void __init orion_ge11_init(struct mv643xx_eth_platform_data *eth_data,
472472
/*****************************************************************************
473473
* Ethernet switch
474474
****************************************************************************/
475-
static __initconst const char *orion_ge00_mvmdio_bus_name = "orion-mii";
476-
static __initdata struct mdio_board_info
477-
orion_ge00_switch_board_info;
475+
static __initdata struct mdio_board_info orion_ge00_switch_board_info = {
476+
.bus_id = "orion-mii",
477+
.modalias = "mv88e6085",
478+
};
478479

479480
void __init orion_ge00_switch_init(struct dsa_chip_data *d)
480481
{
481-
struct mdio_board_info *bd;
482482
unsigned int i;
483483

484484
if (!IS_BUILTIN(CONFIG_PHYLIB))
485485
return;
486486

487-
for (i = 0; i < ARRAY_SIZE(d->port_names); i++)
488-
if (!strcmp(d->port_names[i], "cpu"))
487+
for (i = 0; i < ARRAY_SIZE(d->port_names); i++) {
488+
if (!strcmp(d->port_names[i], "cpu")) {
489+
d->netdev[i] = &orion_ge00.dev;
489490
break;
491+
}
492+
}
490493

491-
bd = &orion_ge00_switch_board_info;
492-
bd->bus_id = orion_ge00_mvmdio_bus_name;
493-
bd->mdio_addr = d->sw_addr;
494-
d->netdev[i] = &orion_ge00.dev;
495-
strcpy(bd->modalias, "mv88e6085");
496-
bd->platform_data = d;
494+
orion_ge00_switch_board_info.mdio_addr = d->sw_addr;
495+
orion_ge00_switch_board_info.platform_data = d;
497496

498497
mdiobus_register_board_info(&orion_ge00_switch_board_info, 1);
499498
}

arch/arm64/net/bpf_jit_comp.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,16 +238,17 @@ static int emit_bpf_tail_call(struct jit_ctx *ctx)
238238
off = offsetof(struct bpf_array, map.max_entries);
239239
emit_a64_mov_i64(tmp, off, ctx);
240240
emit(A64_LDR32(tmp, r2, tmp), ctx);
241+
emit(A64_MOV(0, r3, r3), ctx);
241242
emit(A64_CMP(0, r3, tmp), ctx);
242-
emit(A64_B_(A64_COND_GE, jmp_offset), ctx);
243+
emit(A64_B_(A64_COND_CS, jmp_offset), ctx);
243244

244245
/* if (tail_call_cnt > MAX_TAIL_CALL_CNT)
245246
* goto out;
246247
* tail_call_cnt++;
247248
*/
248249
emit_a64_mov_i64(tmp, MAX_TAIL_CALL_CNT, ctx);
249250
emit(A64_CMP(1, tcc, tmp), ctx);
250-
emit(A64_B_(A64_COND_GT, jmp_offset), ctx);
251+
emit(A64_B_(A64_COND_HI, jmp_offset), ctx);
251252
emit(A64_ADD_I(1, tcc, tcc, 1), ctx);
252253

253254
/* prog = array->ptrs[index];

arch/parisc/include/asm/cacheflush.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ void flush_user_icache_range_asm(unsigned long, unsigned long);
2626
void flush_kernel_icache_range_asm(unsigned long, unsigned long);
2727
void flush_user_dcache_range_asm(unsigned long, unsigned long);
2828
void flush_kernel_dcache_range_asm(unsigned long, unsigned long);
29+
void purge_kernel_dcache_range_asm(unsigned long, unsigned long);
2930
void flush_kernel_dcache_page_asm(void *);
3031
void flush_kernel_icache_page(void *);
3132

arch/parisc/include/asm/processor.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,8 @@ extern int _parisc_requires_coherency;
316316
#define parisc_requires_coherency() (0)
317317
#endif
318318

319+
extern int running_on_qemu;
320+
319321
#endif /* __ASSEMBLY__ */
320322

321323
#endif /* __ASM_PARISC_PROCESSOR_H */

arch/parisc/kernel/cache.c

Lines changed: 31 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -465,10 +465,10 @@ EXPORT_SYMBOL(copy_user_page);
465465
int __flush_tlb_range(unsigned long sid, unsigned long start,
466466
unsigned long end)
467467
{
468-
unsigned long flags, size;
468+
unsigned long flags;
469469

470-
size = (end - start);
471-
if (size >= parisc_tlb_flush_threshold) {
470+
if ((!IS_ENABLED(CONFIG_SMP) || !arch_irqs_disabled()) &&
471+
end - start >= parisc_tlb_flush_threshold) {
472472
flush_tlb_all();
473473
return 1;
474474
}
@@ -539,23 +539,21 @@ void flush_cache_mm(struct mm_struct *mm)
539539
struct vm_area_struct *vma;
540540
pgd_t *pgd;
541541

542-
/* Flush the TLB to avoid speculation if coherency is required. */
543-
if (parisc_requires_coherency())
544-
flush_tlb_all();
545-
546542
/* Flushing the whole cache on each cpu takes forever on
547543
rp3440, etc. So, avoid it if the mm isn't too big. */
548-
if (mm_total_size(mm) >= parisc_cache_flush_threshold) {
544+
if ((!IS_ENABLED(CONFIG_SMP) || !arch_irqs_disabled()) &&
545+
mm_total_size(mm) >= parisc_cache_flush_threshold) {
546+
flush_tlb_all();
549547
flush_cache_all();
550548
return;
551549
}
552550

553551
if (mm->context == mfsp(3)) {
554552
for (vma = mm->mmap; vma; vma = vma->vm_next) {
555553
flush_user_dcache_range_asm(vma->vm_start, vma->vm_end);
556-
if ((vma->vm_flags & VM_EXEC) == 0)
557-
continue;
558-
flush_user_icache_range_asm(vma->vm_start, vma->vm_end);
554+
if (vma->vm_flags & VM_EXEC)
555+
flush_user_icache_range_asm(vma->vm_start, vma->vm_end);
556+
flush_tlb_range(vma, vma->vm_start, vma->vm_end);
559557
}
560558
return;
561559
}
@@ -581,21 +579,17 @@ void flush_cache_mm(struct mm_struct *mm)
581579
void flush_cache_range(struct vm_area_struct *vma,
582580
unsigned long start, unsigned long end)
583581
{
584-
BUG_ON(!vma->vm_mm->context);
585-
586-
/* Flush the TLB to avoid speculation if coherency is required. */
587-
if (parisc_requires_coherency())
582+
if ((!IS_ENABLED(CONFIG_SMP) || !arch_irqs_disabled()) &&
583+
end - start >= parisc_cache_flush_threshold) {
588584
flush_tlb_range(vma, start, end);
589-
590-
if ((end - start) >= parisc_cache_flush_threshold
591-
|| vma->vm_mm->context != mfsp(3)) {
592585
flush_cache_all();
593586
return;
594587
}
595588

596589
flush_user_dcache_range_asm(start, end);
597590
if (vma->vm_flags & VM_EXEC)
598591
flush_user_icache_range_asm(start, end);
592+
flush_tlb_range(vma, start, end);
599593
}
600594

601595
void
@@ -604,30 +598,41 @@ flush_cache_page(struct vm_area_struct *vma, unsigned long vmaddr, unsigned long
604598
BUG_ON(!vma->vm_mm->context);
605599

606600
if (pfn_valid(pfn)) {
607-
if (parisc_requires_coherency())
608-
flush_tlb_page(vma, vmaddr);
601+
flush_tlb_page(vma, vmaddr);
609602
__flush_cache_page(vma, vmaddr, PFN_PHYS(pfn));
610603
}
611604
}
612605

613606
void flush_kernel_vmap_range(void *vaddr, int size)
614607
{
615608
unsigned long start = (unsigned long)vaddr;
609+
unsigned long end = start + size;
616610

617-
if ((unsigned long)size > parisc_cache_flush_threshold)
611+
if ((!IS_ENABLED(CONFIG_SMP) || !arch_irqs_disabled()) &&
612+
(unsigned long)size >= parisc_cache_flush_threshold) {
613+
flush_tlb_kernel_range(start, end);
618614
flush_data_cache();
619-
else
620-
flush_kernel_dcache_range_asm(start, start + size);
615+
return;
616+
}
617+
618+
flush_kernel_dcache_range_asm(start, end);
619+
flush_tlb_kernel_range(start, end);
621620
}
622621
EXPORT_SYMBOL(flush_kernel_vmap_range);
623622

624623
void invalidate_kernel_vmap_range(void *vaddr, int size)
625624
{
626625
unsigned long start = (unsigned long)vaddr;
626+
unsigned long end = start + size;
627627

628-
if ((unsigned long)size > parisc_cache_flush_threshold)
628+
if ((!IS_ENABLED(CONFIG_SMP) || !arch_irqs_disabled()) &&
629+
(unsigned long)size >= parisc_cache_flush_threshold) {
630+
flush_tlb_kernel_range(start, end);
629631
flush_data_cache();
630-
else
631-
flush_kernel_dcache_range_asm(start, start + size);
632+
return;
633+
}
634+
635+
purge_kernel_dcache_range_asm(start, end);
636+
flush_tlb_kernel_range(start, end);
632637
}
633638
EXPORT_SYMBOL(invalidate_kernel_vmap_range);

arch/parisc/kernel/pacache.S

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1110,6 +1110,28 @@ ENTRY_CFI(flush_kernel_dcache_range_asm)
11101110
.procend
11111111
ENDPROC_CFI(flush_kernel_dcache_range_asm)
11121112

1113+
ENTRY_CFI(purge_kernel_dcache_range_asm)
1114+
.proc
1115+
.callinfo NO_CALLS
1116+
.entry
1117+
1118+
ldil L%dcache_stride, %r1
1119+
ldw R%dcache_stride(%r1), %r23
1120+
ldo -1(%r23), %r21
1121+
ANDCM %r26, %r21, %r26
1122+
1123+
1: cmpb,COND(<<),n %r26, %r25,1b
1124+
pdc,m %r23(%r26)
1125+
1126+
sync
1127+
syncdma
1128+
bv %r0(%r2)
1129+
nop
1130+
.exit
1131+
1132+
.procend
1133+
ENDPROC_CFI(purge_kernel_dcache_range_asm)
1134+
11131135
ENTRY_CFI(flush_user_icache_range_asm)
11141136
.proc
11151137
.callinfo NO_CALLS

0 commit comments

Comments
 (0)