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

4.9 1.0.x imx stable merge #25

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
164 commits
Select commit Hold shift + click to select a range
d58d78c
netfilter: drop outermost socket lock in getsockopt()
Feb 8, 2018
a5ecf56
xtensa: fix high memory/reserved memory collision
jcmvbkbc Feb 13, 2018
bed7cb3
scsi: ibmvfc: fix misdefined reserved field in ibmvfc_fcp_rsp_info
Jan 24, 2018
3b4dd8a
cfg80211: fix cfg80211_beacon_dup
arndb Feb 2, 2018
c60e246
X.509: fix BUG_ON() when hash algorithm is unsupported
ebiggers Feb 22, 2018
e4b02ca
PKCS#7: fix certificate chain verification
ebiggers Feb 22, 2018
239ef9c
RDMA/uverbs: Protect from command mask overflow
Feb 13, 2018
97e6047
iio: buffer: check if a buffer has been set up when poll is called
Feb 15, 2018
964e8ce
iio: adis_lib: Initialize trigger before requesting interrupt
larsclausen Feb 14, 2018
dcc92a1
x86/oprofile: Fix bogus GCC-8 warning in nmi_setup()
arndb Feb 20, 2018
2146b6e
irqchip/gic-v3: Use wmb() instead of smb_wmb() in gic_raise_softirq()
Feb 1, 2018
c529ff4
PCI/cxgb4: Extend T3 PCI quirk to T4+ devices
Feb 15, 2018
4a41d44
ohci-hcd: Fix race condition caused by ohci_urb_enqueue() and io_watc…
Feb 2, 2018
31fec94
usb: ohci: Proper handling of ed_rm_list to handle race condition bet…
amandeep-samsung Feb 8, 2018
8bd22b1
arm64: Disable unhandled signal log messages by default
michaelweiser Feb 1, 2018
9b99be3
Add delay-init quirk for Corsair K70 RGB keyboards
JackStocker Feb 15, 2018
6f1e00f
drm/edid: Add 6 bpc quirk for CPT panel in Asus UX303LA
khfeng Feb 18, 2018
3c0cbbf
usb: dwc3: gadget: Set maxpacket size for ep0 IN
Jan 13, 2018
f04280f
usb: ldusb: add PIDs for new CASSY devices supported by this driver
Feb 9, 2018
fe80d73
Revert "usb: musb: host: don't start next rx urb if current one failed"
Feb 20, 2018
8bedacf
usb: gadget: f_fs: Process all descriptors during bind
Jan 24, 2018
18ec706
usb: renesas_usbhs: missed the "running" flag in usb_dmac with rx path
shimoday Feb 5, 2018
cf7780a
drm/amdgpu: Add dpm quirk for Jet PRO (v2)
alexdeucher Nov 21, 2017
3a66f97
drm/amdgpu: add atpx quirk handling (v2)
alexdeucher Dec 20, 2017
3a58e84
drm/amdgpu: Avoid leaking PM domain on driver unbind (v2)
alexdeucher Jan 23, 2018
65aeceb
drm/amdgpu: add new device to use atpx quirk
khfeng Feb 8, 2018
febf108
binder: add missing binder_unlock()
ebiggers Feb 26, 2018
f291598
X.509: fix NULL dereference when restricting key with unsupported_sig
ebiggers Feb 26, 2018
f2562ed
mm: avoid spurious 'bad pmd' warning messages
Feb 23, 2018
f06c2c6
fs/dax.c: fix inefficiency in dax_writeback_mapping_range()
jankara Feb 23, 2018
29c969c
libnvdimm: fix integer overflow static analysis warning
djbw Feb 23, 2018
be38759
device-dax: implement ->split() to catch invalid munmap attempts
djbw Feb 23, 2018
b29ea3c
mm: introduce get_user_pages_longterm
djbw Feb 23, 2018
53dfce3
v4l2: disable filesystem-dax mapping support
djbw Feb 23, 2018
00a6e63
IB/core: disable memory registration of filesystem-dax vmas
djbw Feb 23, 2018
807e336
libnvdimm, dax: fix 1GB-aligned namespaces vs physical misalignment
djbw Feb 23, 2018
8f7cf88
mm: Fix devm_memremap_pages() collision handling
schnhrr Feb 23, 2018
78b1cb3
mm: fail get_vaddr_frames() for filesystem-dax mappings
djbw Feb 23, 2018
22b5557
x86/entry/64: Clear extra registers beyond syscall arguments, to redu…
djbw Feb 23, 2018
c426a71
Linux 4.9.85
gregkh Feb 28, 2018
5a9f69b
hrtimer: Ensure POSIX compliance (relative CLOCK_REALTIME hrtimers)
anna-marialx Dec 21, 2017
b4e0649
i2c: designware: must wait for enable
bengardner Feb 14, 2018
4a97b2d
f2fs: fix a bug caused by NULL extent tree
May 19, 2017
051337a
dmaengine: fsl-edma: disable clks on all error paths
andipla Dec 14, 2017
d4ea611
nvme: check hw sectors before setting chunk sectors
Dec 14, 2017
83c5a93
net: usb: qmi_wwan: add Telit ME910 PID 0x1101 support
dnlplm Dec 14, 2017
dd1e39f
mtd: nand: gpmi: Fix failure when a erased page has a bitflip at BBM
saschahauer Dec 5, 2017
e88872e
mtd: nand: brcmnand: Zero bitflip is not an error
hsiehwt Nov 20, 2017
3cf31f5
ipv6: icmp6: Allow icmp messages to be looped back
Dec 13, 2017
db1e881
ARM: 8731/1: Fix csum_partial_copy_from_user() stack mismatch
lyrazhang Dec 1, 2017
9a5bd36
x86/asm: Allow again using asm.h when building for the 'bpf' clang ta…
acmel Dec 4, 2017
fd7cbb5
sget(): handle failures of register_shrinker()
Dec 18, 2017
3969270
net: phy: xgene: disable clk on error paths
khoroshilov Dec 15, 2017
5330add
drm/nouveau/pci: do a msi rearm on init
karolherbst Nov 24, 2017
ad17693
mac80211_hwsim: Fix a possible sleep-in-atomic bug in hwsim_get_radio_nl
XidianGeneral Dec 12, 2017
90f7d14
spi: atmel: fixed spin_lock usage inside atmel_spi_remove
Dec 15, 2017
1ec97b2
ASoC: nau8825: fix issue that pop noise when start capture
Dec 11, 2017
757677d
net: mediatek: setup proper state for disabled GMAC on the default
moore-bros Dec 18, 2017
95e094a
net: arc_emac: fix arc_emac_rx() error paths
akochetkov Dec 15, 2017
1148fee
ip6_tunnel: get the min mtu properly in ip6_tnl_xmit
lxin Dec 18, 2017
9d0858e
net: stmmac: Fix TX timestamp calculation
megahallon Dec 18, 2017
6358cb4
scsi: storvsc: Fix scsi_cmd error assignments in storvsc_handle_error
caavery Dec 19, 2017
0a1b1ee
ARM: dts: ls1021a: fix incorrect clock references
arndb Dec 21, 2017
d9868db
lib/mpi: Fix umul_ppmm() for MIPS64r6
amalon Dec 5, 2017
f60f577
tipc: error path leak fixes in tipc_enable_bearer()
rantala Dec 22, 2017
edaf4ff
tipc: fix tipc_mon_delete() oops in tipc_enable_bearer() error path
rantala Dec 22, 2017
3d6becb
tg3: Add workaround to restrict 5762 MRRS to 2048
siva-kallam Dec 22, 2017
78cc448
tg3: Enable PHY reset in MTU change path for 5720
siva-kallam Dec 22, 2017
af60c38
bnx2x: Improve reliability in case of nested PCI errors
Dec 22, 2017
86b9fa2
led: core: Fix brightness setting when setting delay_off=0
Dec 12, 2017
64fb18c
IB/mlx5: Fix mlx5_ib_alloc_mr error flow
nitzancarmi Dec 26, 2017
ff5544d
genirq: Guard handle_bad_irq log messages
groeck Dec 2, 2017
336c28a
s390/dasd: fix wrongly assigned configuration data
stefan-haberland Dec 6, 2017
fb426a4
IB/mlx4: Fix mlx4_ib_alloc_mr error flow
Dec 31, 2017
ab43aaa
IB/ipoib: Fix race condition in neigh creation
Dec 31, 2017
7999487
xfs: quota: fix missed destroy of qi_tree_lock
Dec 21, 2017
c33d494
xfs: quota: check result of register_shrinker()
Dec 21, 2017
88f72bd
macvlan: Fix one possible double free
gfreewind Dec 26, 2017
125ca93
e1000: fix disabling already-disabled warning
tndave Dec 5, 2017
b4b73c1
NET: usb: qmi_wwan: add support for YUGA CLM920-NC5 PID 0x9625
Dec 29, 2017
3a26db8
drm/ttm: check the return value of kzalloc
xwsong Jan 2, 2018
26f6873
uapi libc compat: add fallback for unsupported libcs
doughdemon Jan 1, 2018
cd80cb0
i40e/i40evf: Account for frags split over multiple descriptors in che…
Dec 8, 2017
4ec2b1c
nl80211: Check for the required netlink attribute presence
flankersky Jan 3, 2018
58c4ee8
mac80211: mesh: drop frames appearing to be from us
jmberg-intel Jan 4, 2018
9137deb
can: flex_can: Correct the checking for frame length in flexcan_start…
Jan 2, 2018
0fd8741
bnxt_en: Fix the 'Invalid VF' id check in bnxt_vf_ndo_prep routine.
Jan 4, 2018
cded2e6
xen-netfront: enable device after manual module load
otubo Jan 5, 2018
7086ec8
mdio-sun4i: Fix a memory leak
tititiou36 Jan 6, 2018
1bb8110
SolutionEngine771x: fix Ether platform data
Jan 6, 2018
beaa7d1
xen/gntdev: Fix off-by-one error when unmapping with holes
rosslagerwall Jan 9, 2018
c65c0df
xen/gntdev: Fix partial gntdev_mmap() cleanup
rosslagerwall Jan 9, 2018
b923c86
sctp: make use of pre-calculated len
marceloleitner Jan 8, 2018
3eb2221
net: gianfar_ptp: move set_fipers() to spinlock protecting area
yangbolu1991 Jan 9, 2018
25039c1
KVM: arm/arm64: Fix check for hugepage size when allocating at Stage 2
punitagrawal Feb 28, 2018
b5075ee
MIPS: Implement __multi3 for GCC7 MIPS64r6 builds
amalon Dec 7, 2017
6a83eb2
Linux 4.9.86
gregkh Mar 3, 2018
9be1646
tpm: st33zp24: fix potential buffer overruns caused by bit glitches o…
Feb 8, 2018
e785c9e
tpm_i2c_infineon: fix potential buffer overruns caused by bit glitche…
Feb 8, 2018
15dcd3a
tpm_i2c_nuvoton: fix potential buffer overruns caused by bit glitches…
Feb 8, 2018
922f22e
tpm_tis: fix potential buffer overruns caused by bit glitches on the bus
Feb 8, 2018
e6b9e04
tpm: constify transmit data pointers
arndb Sep 7, 2017
eb75717
tpm_tis_spi: Use DMA-safe memory for SPI transfers
webmeister Sep 11, 2017
89f0fb9
tpm-dev-common: Reject too short writes
webmeister Sep 8, 2017
57adeeb
ALSA: usb-audio: Add a quirck for B&W PX headphones
kernesti Feb 23, 2018
30f3237
ALSA: hda: Add a power_save blacklist
jwrdegoede Feb 22, 2018
61963d3
ALSA: hda - Fix pincfg at resume on Lenovo T470 dock
tiwai Feb 26, 2018
13e75c7
timers: Forward timer base before migrating timers
Jan 18, 2018
12efc91
parisc: Fix ordering of cache and TLB flushes
danglin44 Feb 27, 2018
144b635
cpufreq: s3c24xx: Fix broken s3c_cpufreq_init()
vireshk Feb 23, 2018
43672fa
dax: fix vma_is_fsdax() helper
djbw Feb 22, 2018
7844849
x86/xen: Zero MSR_IA32_SPEC_CTRL before suspend
jgross1 Feb 26, 2018
0c2b4a3
x86/platform/intel-mid: Handle Intel Edison reboot correctly
Feb 28, 2018
9bcc9ac
media: m88ds3103: don't call a non-initalized function
mchehab Feb 10, 2018
ec69fa8
nospec: Allow index argument to have const-qualified type
Villemoes Feb 16, 2018
8e4c257
ARM: mvebu: Fix broken PL310_ERRATA_753970 selects
ulfalizer Feb 5, 2018
aebf1b1
ARM: kvm: fix building with gcc-8
arndb Feb 2, 2018
2e112f3
KVM: mmu: Fix overlap between public and private memslots
Wanpeng-Li Feb 13, 2018
a175d51
KVM/x86: Remove indirect MSR op calls from SPEC_CTRL
bonzini Feb 22, 2018
f750e15
KVM/VMX: Optimize vmx_vcpu_run() and svm_vcpu_run() by marking the RD…
bonzini Feb 22, 2018
6213c71
PCI/ASPM: Deal with missing root ports in link state handling
Oct 2, 2017
b6f93a1
dm io: fix duplicate bio completion due to missing ref count
snitm Jun 20, 2017
5f1f00d
ARM: dts: LogicPD SOM-LV: Fix I2C1 pinmux
aford173 Jan 27, 2018
c737c8d
ARM: dts: LogicPD Torpedo: Fix I2C1 pinmux
aford173 Jan 25, 2018
027ba1a
x86/mm: Give each mm TLB flush generation a unique ID
amluto Jun 29, 2017
2585e4b
x86/speculation: Use Indirect Branch Prediction Barrier in context sw…
pdxChen Jan 29, 2018
eb2593f
md: only allow remove_and_add_spares when no sync_thread running.
Feb 2, 2018
e7b12ef
netlink: put module reference if dump start fails
zx2c4 Feb 21, 2018
59e1623
x86/apic/vector: Handle legacy irq data correctly
KAGA-KOKO Mar 7, 2018
9f32011
bridge: check brport attr show in brport_show
lxin Feb 12, 2018
def37b7
fib_semantics: Don't match route with mismatching tclassid
sbrivio-rh Feb 15, 2018
1886335
hdlc_ppp: carrier detect ok, don't turn off negotiation
Feb 24, 2018
c9a3046
ipv6 sit: work around bogus gcc-8 -Wrestrict warning
arndb Feb 22, 2018
106dc96
net: fix race on decreasing number of TX queues
Feb 13, 2018
06f0188
net: ipv4: don't allow setting net.ipv4.route.min_pmtu below 68
qsn Feb 26, 2018
59e105c
netlink: ensure to loop over all netns in genlmsg_multicast_allns()
NicolasDichtel Feb 6, 2018
3741c8f
ppp: prevent unregistered channels from connecting to PPP units
Mar 2, 2018
5984901
udplite: fix partial checksum initialization
akodanev Feb 15, 2018
3812dda
sctp: fix dst refcnt leak in sctp_v4_get_dst
rantala Feb 5, 2018
804e337
mlxsw: spectrum_switchdev: Check success of FDB add operation
Mar 1, 2018
19d3213
net: phy: fix phy_start to consider PHY_IGNORE_INTERRUPT
hkallweit Feb 8, 2018
3efb90a
tcp: Honor the eor bit in tcp_mtu_probe
Feb 12, 2018
85924b8
rxrpc: Fix send in rxrpc_send_data_packet()
dhowells Feb 22, 2018
45fa661
tcp_bbr: better deal with suboptimal GSO
Feb 21, 2018
a818270
sctp: fix dst refcnt leak in sctp_v6_get_dst()
akodanev Feb 5, 2018
8d07258
s390/qeth: fix underestimated count of buffer elements
Feb 9, 2018
3c07187
s390/qeth: fix SETIP command handling
julianwiedmann Feb 9, 2018
797658d
s390/qeth: fix overestimated count of buffer elements
julianwiedmann Feb 27, 2018
1537f14
s390/qeth: fix IP removal on offline cards
julianwiedmann Feb 27, 2018
2a3db83
s390/qeth: fix double-free on IP add/remove race
julianwiedmann Feb 27, 2018
058db71
s390/qeth: fix IP address lookup for L3 devices
julianwiedmann Feb 27, 2018
f3d26ce
s390/qeth: fix IPA command submission race
julianwiedmann Feb 27, 2018
9b7d723
sctp: verify size of a new chunk in _sctp_make_chunk()
akodanev Feb 9, 2018
d77763d
net: mpls: Pull common label check into helper
dsahern Mar 8, 2018
93f3aff
mpls, nospec: Sanitize array index in mpls_label_ok()
djbw Mar 8, 2018
816cfeb
bpf: fix wrong exposure of map_flags into fdinfo for lpm
borkmann Mar 8, 2018
422baf6
bpf: fix mlock precharge on arraymaps
borkmann Mar 8, 2018
017219b
bpf, x64: implement retpoline for tail call
borkmann Mar 8, 2018
54c6d01
bpf, arm64: fix out of bounds access in tail call
borkmann Mar 8, 2018
2a8bc53
bpf: add schedule points in percpu arrays management
Mar 8, 2018
2b70de4
bpf, ppc64: fix out of bounds access in tail call
borkmann Mar 8, 2018
931dde8
btrfs: preserve i_mode if __btrfs_set_acl() fails
eafer Aug 2, 2017
b674162
Linux 4.9.87
gregkh Mar 11, 2018
8d99753
Merge tag 'v4.9.87' into fslc_4.9-1.0.x-imx
MaxKrummenacher Mar 12, 2018
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 Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
VERSION = 4
PATCHLEVEL = 9
SUBLEVEL = 84
SUBLEVEL = 87
EXTRAVERSION =
NAME = Roaring Lionus

Expand Down
9 changes: 8 additions & 1 deletion arch/arm/boot/dts/logicpd-som-lv.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,8 @@
};

&i2c1 {
pinctrl-names = "default";
pinctrl-0 = <&i2c1_pins>;
clock-frequency = <2600000>;

twl: twl@48 {
Expand Down Expand Up @@ -215,7 +217,12 @@
>;
};


i2c1_pins: pinmux_i2c1_pins {
pinctrl-single,pins = <
OMAP3_CORE1_IOPAD(0x21ba, PIN_INPUT | MUX_MODE0) /* i2c1_scl.i2c1_scl */
OMAP3_CORE1_IOPAD(0x21bc, PIN_INPUT | MUX_MODE0) /* i2c1_sda.i2c1_sda */
>;
};
};

&omap3_pmx_wkup {
Expand Down
8 changes: 8 additions & 0 deletions arch/arm/boot/dts/logicpd-torpedo-som.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,8 @@
};

&i2c1 {
pinctrl-names = "default";
pinctrl-0 = <&i2c1_pins>;
clock-frequency = <2600000>;

twl: twl@48 {
Expand Down Expand Up @@ -207,6 +209,12 @@
OMAP3_CORE1_IOPAD(0x21b8, PIN_INPUT | MUX_MODE0) /* hsusb0_data7.hsusb0_data7 */
>;
};
i2c1_pins: pinmux_i2c1_pins {
pinctrl-single,pins = <
OMAP3_CORE1_IOPAD(0x21ba, PIN_INPUT | MUX_MODE0) /* i2c1_scl.i2c1_scl */
OMAP3_CORE1_IOPAD(0x21bc, PIN_INPUT | MUX_MODE0) /* i2c1_sda.i2c1_sda */
>;
};
};

&uart2 {
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/boot/dts/ls1021a-qds.dts
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@
reg = <0x2a>;
VDDA-supply = <&reg_3p3v>;
VDDIO-supply = <&reg_3p3v>;
clocks = <&sys_mclk 1>;
clocks = <&sys_mclk>;
};
};
};
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/boot/dts/ls1021a-twr.dts
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@
reg = <0x0a>;
VDDA-supply = <&reg_3p3v>;
VDDIO-supply = <&reg_3p3v>;
clocks = <&sys_mclk 1>;
clocks = <&sys_mclk>;
};
};

Expand Down
5 changes: 5 additions & 0 deletions arch/arm/kvm/hyp/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ ccflags-y += -fno-stack-protector -DDISABLE_BRANCH_PROFILING

KVM=../../../../virt/kvm

CFLAGS_ARMV7VE :=$(call cc-option, -march=armv7ve)

obj-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/hyp/vgic-v2-sr.o
obj-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/hyp/vgic-v3-sr.o
obj-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/hyp/timer-sr.o
Expand All @@ -14,7 +16,10 @@ obj-$(CONFIG_KVM_ARM_HOST) += tlb.o
obj-$(CONFIG_KVM_ARM_HOST) += cp15-sr.o
obj-$(CONFIG_KVM_ARM_HOST) += vfp.o
obj-$(CONFIG_KVM_ARM_HOST) += banked-sr.o
CFLAGS_banked-sr.o += $(CFLAGS_ARMV7VE)

obj-$(CONFIG_KVM_ARM_HOST) += entry.o
obj-$(CONFIG_KVM_ARM_HOST) += hyp-entry.o
obj-$(CONFIG_KVM_ARM_HOST) += switch.o
CFLAGS_switch.o += $(CFLAGS_ARMV7VE)
obj-$(CONFIG_KVM_ARM_HOST) += s2-setup.o
4 changes: 4 additions & 0 deletions arch/arm/kvm/hyp/banked-sr.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@

#include <asm/kvm_hyp.h>

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

void __hyp_text __banked_save_state(struct kvm_cpu_context *ctxt)
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/kvm/mmu.c
Original file line number Diff line number Diff line change
Expand Up @@ -1284,7 +1284,7 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
return -EFAULT;
}

if (vma_kernel_pagesize(vma) && !logging_active) {
if (vma_kernel_pagesize(vma) == PMD_SIZE && !logging_active) {
hugetlb = true;
gfn = (fault_ipa & PMD_MASK) >> PAGE_SHIFT;
} else {
Expand Down
4 changes: 4 additions & 0 deletions arch/arm/lib/csumpartialcopyuser.S
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,11 @@
.pushsection .text.fixup,"ax"
.align 4
9001: mov r4, #-EFAULT
#ifdef CONFIG_CPU_SW_DOMAIN_PAN
ldr r5, [sp, #9*4] @ *err_ptr
#else
ldr r5, [sp, #8*4] @ *err_ptr
#endif
str r4, [r5]
ldmia sp, {r1, r2} @ retrieve dst, len
add r2, r2, r1
Expand Down
4 changes: 2 additions & 2 deletions arch/arm/mach-mvebu/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ config MACH_ARMADA_375
depends on ARCH_MULTI_V7
select ARMADA_370_XP_IRQ
select ARM_ERRATA_720789
select ARM_ERRATA_753970
select PL310_ERRATA_753970
select ARM_GIC
select ARMADA_375_CLK
select HAVE_ARM_SCU
Expand All @@ -58,7 +58,7 @@ config MACH_ARMADA_38X
bool "Marvell Armada 380/385 boards"
depends on ARCH_MULTI_V7
select ARM_ERRATA_720789
select ARM_ERRATA_753970
select PL310_ERRATA_753970
select ARM_GIC
select ARMADA_370_XP_IRQ
select ARMADA_38X_CLK
Expand Down
2 changes: 1 addition & 1 deletion arch/arm64/kernel/traps.c
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ static const char *handler[]= {
"Error"
};

int show_unhandled_signals = 1;
int show_unhandled_signals = 0;

/*
* Dump out the contents of some kernel memory nicely...
Expand Down
5 changes: 3 additions & 2 deletions arch/arm64/net/bpf_jit_comp.c
Original file line number Diff line number Diff line change
Expand Up @@ -234,16 +234,17 @@ static int emit_bpf_tail_call(struct jit_ctx *ctx)
off = offsetof(struct bpf_array, map.max_entries);
emit_a64_mov_i64(tmp, off, ctx);
emit(A64_LDR32(tmp, r2, tmp), ctx);
emit(A64_MOV(0, r3, r3), ctx);
emit(A64_CMP(0, r3, tmp), ctx);
emit(A64_B_(A64_COND_GE, jmp_offset), ctx);
emit(A64_B_(A64_COND_CS, jmp_offset), ctx);

/* if (tail_call_cnt > MAX_TAIL_CALL_CNT)
* goto out;
* tail_call_cnt++;
*/
emit_a64_mov_i64(tmp, MAX_TAIL_CALL_CNT, ctx);
emit(A64_CMP(1, tcc, tmp), ctx);
emit(A64_B_(A64_COND_GT, jmp_offset), ctx);
emit(A64_B_(A64_COND_HI, jmp_offset), ctx);
emit(A64_ADD_I(1, tcc, tcc, 1), ctx);

/* prog = array->ptrs[index];
Expand Down
3 changes: 2 additions & 1 deletion arch/mips/lib/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,5 @@ obj-$(CONFIG_CPU_R3000) += r3k_dump_tlb.o
obj-$(CONFIG_CPU_TX39XX) += r3k_dump_tlb.o

# libgcc-style stuff needed in the kernel
obj-y += ashldi3.o ashrdi3.o bswapsi.o bswapdi.o cmpdi2.o lshrdi3.o ucmpdi2.o
obj-y += ashldi3.o ashrdi3.o bswapsi.o bswapdi.o cmpdi2.o lshrdi3.o multi3.o \
ucmpdi2.o
17 changes: 17 additions & 0 deletions arch/mips/lib/libgcc.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,18 @@ typedef int word_type __attribute__ ((mode (__word__)));
struct DWstruct {
int high, low;
};

struct TWstruct {
long long high, low;
};
#elif defined(__LITTLE_ENDIAN)
struct DWstruct {
int low, high;
};

struct TWstruct {
long long low, high;
};
#else
#error I feel sick.
#endif
Expand All @@ -22,4 +30,13 @@ typedef union {
long long ll;
} DWunion;

#if defined(CONFIG_64BIT) && defined(CONFIG_CPU_MIPSR6)
typedef int ti_type __attribute__((mode(TI)));

typedef union {
struct TWstruct s;
ti_type ti;
} TWunion;
#endif

#endif /* __ASM_LIBGCC_H */
54 changes: 54 additions & 0 deletions arch/mips/lib/multi3.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
// SPDX-License-Identifier: GPL-2.0
#include <linux/export.h>

#include "libgcc.h"

/*
* GCC 7 suboptimally generates __multi3 calls for mips64r6, so for that
* specific case only we'll implement it here.
*
* See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82981
*/
#if defined(CONFIG_64BIT) && defined(CONFIG_CPU_MIPSR6) && (__GNUC__ == 7)

/* multiply 64-bit values, low 64-bits returned */
static inline long long notrace dmulu(long long a, long long b)
{
long long res;

asm ("dmulu %0,%1,%2" : "=r" (res) : "r" (a), "r" (b));
return res;
}

/* multiply 64-bit unsigned values, high 64-bits of 128-bit result returned */
static inline long long notrace dmuhu(long long a, long long b)
{
long long res;

asm ("dmuhu %0,%1,%2" : "=r" (res) : "r" (a), "r" (b));
return res;
}

/* multiply 128-bit values, low 128-bits returned */
ti_type notrace __multi3(ti_type a, ti_type b)
{
TWunion res, aa, bb;

aa.ti = a;
bb.ti = b;

/*
* a * b = (a.lo * b.lo)
* + 2^64 * (a.hi * b.lo + a.lo * b.hi)
* [+ 2^128 * (a.hi * b.hi)]
*/
res.s.low = dmulu(aa.s.low, bb.s.low);
res.s.high = dmuhu(aa.s.low, bb.s.low);
res.s.high += dmulu(aa.s.high, bb.s.low);
res.s.high += dmulu(aa.s.low, bb.s.high);

return res.ti;
}
EXPORT_SYMBOL(__multi3);

#endif /* 64BIT && CPU_MIPSR6 && GCC7 */
1 change: 1 addition & 0 deletions arch/parisc/include/asm/cacheflush.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ void flush_user_icache_range_asm(unsigned long, unsigned long);
void flush_kernel_icache_range_asm(unsigned long, unsigned long);
void flush_user_dcache_range_asm(unsigned long, unsigned long);
void flush_kernel_dcache_range_asm(unsigned long, unsigned long);
void purge_kernel_dcache_range_asm(unsigned long, unsigned long);
void flush_kernel_dcache_page_asm(void *);
void flush_kernel_icache_page(void *);
void flush_user_dcache_range(unsigned long, unsigned long);
Expand Down
57 changes: 31 additions & 26 deletions arch/parisc/kernel/cache.c
Original file line number Diff line number Diff line change
Expand Up @@ -464,10 +464,10 @@ EXPORT_SYMBOL(copy_user_page);
int __flush_tlb_range(unsigned long sid, unsigned long start,
unsigned long end)
{
unsigned long flags, size;
unsigned long flags;

size = (end - start);
if (size >= parisc_tlb_flush_threshold) {
if ((!IS_ENABLED(CONFIG_SMP) || !arch_irqs_disabled()) &&
end - start >= parisc_tlb_flush_threshold) {
flush_tlb_all();
return 1;
}
Expand Down Expand Up @@ -538,23 +538,21 @@ void flush_cache_mm(struct mm_struct *mm)
struct vm_area_struct *vma;
pgd_t *pgd;

/* Flush the TLB to avoid speculation if coherency is required. */
if (parisc_requires_coherency())
flush_tlb_all();

/* Flushing the whole cache on each cpu takes forever on
rp3440, etc. So, avoid it if the mm isn't too big. */
if (mm_total_size(mm) >= parisc_cache_flush_threshold) {
if ((!IS_ENABLED(CONFIG_SMP) || !arch_irqs_disabled()) &&
mm_total_size(mm) >= parisc_cache_flush_threshold) {
flush_tlb_all();
flush_cache_all();
return;
}

if (mm->context == mfsp(3)) {
for (vma = mm->mmap; vma; vma = vma->vm_next) {
flush_user_dcache_range_asm(vma->vm_start, vma->vm_end);
if ((vma->vm_flags & VM_EXEC) == 0)
continue;
flush_user_icache_range_asm(vma->vm_start, vma->vm_end);
if (vma->vm_flags & VM_EXEC)
flush_user_icache_range_asm(vma->vm_start, vma->vm_end);
flush_tlb_range(vma, vma->vm_start, vma->vm_end);
}
return;
}
Expand Down Expand Up @@ -598,21 +596,17 @@ flush_user_icache_range(unsigned long start, unsigned long end)
void flush_cache_range(struct vm_area_struct *vma,
unsigned long start, unsigned long end)
{
BUG_ON(!vma->vm_mm->context);

/* Flush the TLB to avoid speculation if coherency is required. */
if (parisc_requires_coherency())
if ((!IS_ENABLED(CONFIG_SMP) || !arch_irqs_disabled()) &&
end - start >= parisc_cache_flush_threshold) {
flush_tlb_range(vma, start, end);

if ((end - start) >= parisc_cache_flush_threshold
|| vma->vm_mm->context != mfsp(3)) {
flush_cache_all();
return;
}

flush_user_dcache_range_asm(start, end);
if (vma->vm_flags & VM_EXEC)
flush_user_icache_range_asm(start, end);
flush_tlb_range(vma, start, end);
}

void
Expand All @@ -621,30 +615,41 @@ flush_cache_page(struct vm_area_struct *vma, unsigned long vmaddr, unsigned long
BUG_ON(!vma->vm_mm->context);

if (pfn_valid(pfn)) {
if (parisc_requires_coherency())
flush_tlb_page(vma, vmaddr);
flush_tlb_page(vma, vmaddr);
__flush_cache_page(vma, vmaddr, PFN_PHYS(pfn));
}
}

void flush_kernel_vmap_range(void *vaddr, int size)
{
unsigned long start = (unsigned long)vaddr;
unsigned long end = start + size;

if ((unsigned long)size > parisc_cache_flush_threshold)
if ((!IS_ENABLED(CONFIG_SMP) || !arch_irqs_disabled()) &&
(unsigned long)size >= parisc_cache_flush_threshold) {
flush_tlb_kernel_range(start, end);
flush_data_cache();
else
flush_kernel_dcache_range_asm(start, start + size);
return;
}

flush_kernel_dcache_range_asm(start, end);
flush_tlb_kernel_range(start, end);
}
EXPORT_SYMBOL(flush_kernel_vmap_range);

void invalidate_kernel_vmap_range(void *vaddr, int size)
{
unsigned long start = (unsigned long)vaddr;
unsigned long end = start + size;

if ((unsigned long)size > parisc_cache_flush_threshold)
if ((!IS_ENABLED(CONFIG_SMP) || !arch_irqs_disabled()) &&
(unsigned long)size >= parisc_cache_flush_threshold) {
flush_tlb_kernel_range(start, end);
flush_data_cache();
else
flush_kernel_dcache_range_asm(start, start + size);
return;
}

purge_kernel_dcache_range_asm(start, end);
flush_tlb_kernel_range(start, end);
}
EXPORT_SYMBOL(invalidate_kernel_vmap_range);
Loading