summaryrefslogtreecommitdiff
path: root/arch
AgeCommit message (Collapse)AuthorFilesLines
2017-06-07ARM: dts: stm32: Add missing reset-cells node in stm32f746Lionel Debieve1-0/+1
rcc node must include reset-cells node. Signed-off-by: Lionel Debieve <lionel.debieve@st.com> Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com>
2017-06-07ARM: dts: stm32: Set gpio controller as interrupt controller on F4 and F7Alexandre TORGUE2-0/+44
This patch set each gpio controller as a interrupt controller. User who wants to use gpio as interrupt will have choice to use either "gpiolib" interface or "common" interrupt interface. Acked-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com>
2017-06-07KVM: nVMX: Update vmcs12->guest_linear_address on nested VM-exitJim Mattson1-2/+1
The guest-linear address field is set for VM exits due to attempts to execute LMSW with a memory operand and VM exits due to attempts to execute INS or OUTS for which the relevant segment is usable, regardless of whether or not EPT is in use. Fixes: 119a9c01a5922 ("KVM: nVMX: pass valid guest linear-address to the L1") Signed-off-by: Jim Mattson <jmattson@google.com> Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
2017-06-07KVM: nVMX: Don't update vmcs12->xss_exit_bitmap on nested VM-exitJim Mattson1-2/+0
The XSS-exiting bitmap is a VMCS control field that does not change while the CPU is in non-root mode. Transferring the unchanged value from vmcs02 to vmcs12 is unnecessary. Signed-off-by: Jim Mattson <jmattson@google.com> Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
2017-06-07kvm: vmx: Check value written to IA32_BNDCFGSJim Mattson2-0/+5
Bits 11:2 must be zero and the linear addess in bits 63:12 must be canonical. Otherwise, WRMSR(BNDCFGS) should raise #GP. Fixes: 0dd376e709975779 ("KVM: x86: add MSR_IA32_BNDCFGS to msrs_to_save") Signed-off-by: Jim Mattson <jmattson@google.com> Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
2017-06-07kvm: x86: Guest BNDCFGS requires guest MPX supportJim Mattson2-2/+10
The BNDCFGS MSR should only be exposed to the guest if the guest supports MPX. (cf. the TSC_AUX MSR and RDTSCP.) Fixes: 0dd376e709975779 ("KVM: x86: add MSR_IA32_BNDCFGS to msrs_to_save") Change-Id: I3ad7c01bda616715137ceac878f3fa7e66b6b387 Signed-off-by: Jim Mattson <jmattson@google.com> Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
2017-06-07kvm: vmx: Do not disable intercepts for BNDCFGSJim Mattson1-1/+0
The MSR permission bitmaps are shared by all VMs. However, some VMs may not be configured to support MPX, even when the host does. If the host supports VMX and the guest does not, we should intercept accesses to the BNDCFGS MSR, so that we can synthesize a #GP fault. Furthermore, if the host does not support MPX and the "ignore_msrs" kvm kernel parameter is set, then we should intercept accesses to the BNDCFGS MSR, so that we can skip over the rdmsr/wrmsr without raising a #GP fault. Fixes: da8999d31818fdc8 ("KVM: x86: Intel MPX vmx and msr handle") Signed-off-by: Jim Mattson <jmattson@google.com> Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
2017-06-07ARM: dts: stm32: Add watchdog support for STM32F429 eval boardYannick Fertre1-0/+5
This patch adds watchdog support for STM32x9I-Eval board. Signed-off-by: Yannick Fertre <yannick.fertre@st.com> Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com>
2017-06-07ARM: dts: stm32: Add watchdog support for STM32F429 SoCYannick Fertre1-1/+8
Add watchdog into DT for stm32f429 family. Signed-off-by: Yannick FERTRE <yannick.fertre@st.com> Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com>
2017-06-07ARM: sun8i: v3s: add device nodes for DE2 display pipelineIcenowy Zheng1-0/+83
Allwinner V3s SoC features a "Display Engine 2.0" with only one mixer and only one TCON connected to this mixer, which have RGB LCD output. Add device nodes for this display pipeline. Signed-off-by: Icenowy Zheng <icenowy@aosc.io> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
2017-06-07ARM: dts: sunxi: add SoC specific compatibles for the crypto nodesAntoine Tenart2-2/+4
Add SoC specific compatibles for all sunXi crypto nodes, in addition to the one already used (allwinner,sun4i-a10-crypto). Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
2017-06-07ARM: sun5i: add a cryptographic engine nodeAntoine Tenart1-0/+9
Add a node for the cryptographic engine that can be found on sun5i SoCs. This cryptographic engine is compatible with the Allwinner cryptographic accelerator driver. Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
2017-06-07arm64: allwinner: h5: enable dwmac-sun8i for Nano Pi NEO2Icenowy Zheng1-0/+27
Add the required DT parts to enable Ethernet (dwmac-sun8i driver) on the Nano Pi NEO2 board. It uses an external Realtek RTL8211E PHY connected via RGMII to provide GbE network. Specially unlike other Allwinner boards, the phy is connected to MDIO address 7, not 1. This includes the regulator (which is controlled by a GPIO pin) and the actual Ethernet MAC node, referring the RGMII pins of the device. Signed-off-by: Icenowy Zheng <icenowy@aosc.io> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
2017-06-07arm64: allwinner: h5: enable dwmac-sun8i for Orange Pi PrimeIcenowy Zheng1-0/+27
Add the required DT parts to enable Ethernet (dwmac-sun8i driver) on the Orange Pi Prime board. It uses an external Realtek RTL8211E PHY connected via RGMII to provide GbE network. This includes the regulator (which is controlled by a GPIO pin) and the actual Ethernet MAC node, referring the RGMII pins of the device. Signed-off-by: Icenowy Zheng <icenowy@aosc.io> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
2017-06-07arm64: allwinner: h5: sort the device nodes in / part for some boardsIcenowy Zheng2-14/+14
The reg_vcc3v3 node is wrongly placed at the start of the / part, but not with other fixed regulators used by the board, which makes the device nodes unsorted. As Orange Pi Prime and Nano Pi NEO2 device trees are copy'n'paste works, they share the device node unsorted issue. Fix this by move reg_vcc3v3 node to the position before reg_usb0_vbus. Signed-off-by: Icenowy Zheng <icenowy@aosc.io> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
2017-06-07arm64: allwinner: a64: add device tree for SoPine with baseboardIcenowy Zheng2-0/+127
Pine64 have made an official baseboard when SoPine SoM is out. The official baseboard is like the original Pine64 -- but with SD card slot replaced with Pine64's eMMC module slot. Add a device tree for SoPine with the baseboard. Signed-off-by: Icenowy Zheng <icenowy@aosc.xyz> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
2017-06-07arm64: allwinner: bananapi-m64: Enable dwmac-sun8iCorentin Labbe1-0/+15
The dwmac-sun8i hardware is present on the BananaPi M64. It uses an external PHY rtl8211e via RGMII. Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
2017-06-07arm64: allwinner: pine64-plus: Enable dwmac-sun8iCorentin Labbe1-1/+16
The dwmac-sun8i hardware is present on the pine64 plus. It uses an external PHY rtl8211e via RGMII. Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
2017-06-07arm64: allwinner: pine64: Enable dwmac-sun8iCorentin Labbe1-0/+16
The dwmac-sun8i hardware is present on the pine64 It uses an external PHY via RMII. Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
2017-06-07arm64: allwinner: sun50i-a64: add dwmac-sun8i Ethernet driverCorentin Labbe1-0/+35
The dwmac-sun8i is an Ethernet MAC that supports 10/100/1000 Mbit connections. It is very similar to the device found in the Allwinner H3, but lacks the internal 100 Mbit PHY and its associated control bits. This adds the necessary bits to the Allwinner A64 SoC .dtsi, but keeps it disabled at this level. Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
2017-06-07arm64: allwinner: sun50i-a64: Add dt node for the syscon control moduleCorentin Labbe1-0/+6
This patch add the dt node for the syscon register present on the Allwinner A64. Only two register are present in this syscon and the only one useful is the one dedicated to EMAC clock. Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
2017-06-07arm64: allwinner: a64: add DTSI file for SoPine SoMIcenowy Zheng1-0/+65
SoPine is a SoM by Pine64, which have a gold finger compatible with the slot of DDR3 SODIMM (signals are not compatible), and have an A64, an AXP803, a LPDDR3 DRAM chip, a power led and a MicroSD slot on it. The card detect pin of the MicroSD slot on the SoM is pulled down, which makes it unusable; however, the slot is at the surface of the SoM that is closed to the baseboard, so it's nearly impossible to hot-swap it, thus I make it non-removable. Signed-off-by: Icenowy Zheng <icenowy@aosc.xyz> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
2017-06-07arm64: allwinner: a64: Convert CCU raw number references to macrosChen-Yu Tsai1-17/+18
The A64 device tree file has some remnants of raw number references to the CCU node, likely from when the CCU bindings and device tree changes were first merged. Convert these, and the R_CCU ones, to use the proper defined macros from their respective device tree binding header files. Signed-off-by: Chen-Yu Tsai <wens@csie.org> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
2017-06-07arm64: dts: allwinner: pine64: Prepare optional UART nodes with pinctrlAndreas Färber2-0/+44
Pine64 exposes all A64 UARTs, not just UART0. Since the pins can be used as GPIO, don't enable the new UART nodes by default, but prepare the pinctrl settings to aid in activating them via overlays, i.e., overriding the status property of &uartX nodes. For UART4 (Euler) the safer route of not including RTS/CTS pins is chosen, whereas for UART1 (Bluetooth) they are included. Add the corresponding pinctrl nodes where missing. Suggested-by: Maxime Ripard <maxime.ripard@free-electrons.com> Signed-off-by: Andreas Färber <afaerber@suse.de> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
2017-06-07arm64: allwinner: a64: enable RSB on A64Icenowy Zheng1-0/+19
Allwinner A64 have a RSB controller like the one on A23/A33 SoCs. Add it and its pinmux. Signed-off-by: Icenowy Zheng <icenowy@aosc.io> Acked-by: Chen-Yu Tsai <wens@csie.org> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
2017-06-07arm64: dts: allwinner: pine64: Add remaining UART aliasesAndreas Färber1-0/+4
Enabling uart2 node currently leads to a /dev/ttyS1 device, with ttyS0..4 always present, causing confusion on the user's part. dtc cannot resolve an overlay's &uart2 reference for strings, only for phandles, so it would need to hardcode the full node path. Avoid this and enforce reliable numbering by adding serialX aliases for: UART1 - on Wifi/BT connector UART2 - on Pi-2 connector UART3 - on Euler connector UART4 - on Euler connector Signed-off-by: Andreas Färber <afaerber@suse.de> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
2017-06-07arm64: dts: allwinner: a64: Add UART2 pin nodesAndreas Färber1-0/+5
UART2 is exposed on the Pi connector of Pine64. Make a pinctrl node available at the SoC level, to simplify enabling UART2 via DT overlay. Signed-off-by: Andreas Färber <afaerber@suse.de> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
2017-06-07arm64: allwinner: h5: add support for NanoPi NEO2 boardIcenowy Zheng2-0/+135
NanoPi NEO2 is a board with the same size factor with the original NanoPi NEO by FriendlyELEC. It has a H5 instead of H3 on NanoPi NEO, and the ethernet is upgraded to 1Gbps (with external RTL8211E PHY). Add support for this board. Signed-off-by: Icenowy Zheng <icenowy@aosc.io> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
2017-06-07arm64: allwinner: h5: add support for Orange Pi Prime boardIcenowy Zheng2-0/+206
Orange Pi Prime is a new Allwinner H5-based SBC by Xunlong. It's like a Orange Pi Plus 2E with H3 replaced with H5, eMMC replaced with onboard SPI NOR Flash and wireless card changed to Realtek RTL8723BS (with Bluetooth functionality). Signed-off-by: Icenowy Zheng <icenowy@aosc.io> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
2017-06-07ARM: dts: stm32: Enable ltdc & simple panel on stm32f429-Eval boardYannick Fertre1-0/+23
Enable ltdc & enable am-480272h3tmqw-t01h panel. Signed-off-by: Yannick Fertre <yannick.fertre@st.com> Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com>
2017-06-07ARM: dts: stm32: Add ltdc support on stm32f429 MCUYannick Fertre1-1/+45
Add LTDC (Lcd-tft Display Controller) support. Signed-off-by: Yannick Fertre <yannick.fertre@st.com> Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com>
2017-06-07ARM: dts: stm32: add stm32f769I & stm32f746 discovery board supportVikas Manocha4-0/+163
Stm32f769I & stm32f746 are MCUs of stm32f7 family. Here are the major specs of the two boards: stm32f769I discovery board: - Cortex-M7 core @216MHz - 2MB mcu internal flash - 512KB internal sram - 16MB sdram memory - 64MB qspi flash memory - 4 inch wvga LCD-TFT Display stm32f746 discovery board: - Cortex-M7 core @216MHz - 1MB mcu internal flash - 320KB internal sram - 8MB sdram memory - 16MB qspi flash memory - 4.3 inch 480x272 LCD-TFT display Signed-off-by: Vikas Manocha <vikas.manocha@st.com> Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com>
2017-06-07arm64: ftrace: add support for far branches to dynamic ftraceArd Biesheuvel7-2/+84
Currently, dynamic ftrace support in the arm64 kernel assumes that all core kernel code is within range of ordinary branch instructions that occur in module code, which is usually the case, but is no longer guaranteed now that we have support for module PLTs and address space randomization. Since on arm64, all patching of branch instructions involves function calls to the same entry point [ftrace_caller()], we can emit the modules with a trampoline that has unlimited range, and patch both the trampoline itself and the branch instruction to redirect the call via the trampoline. Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> [will: minor clarification to smp_wmb() comment] Signed-off-by: Will Deacon <will.deacon@arm.com>
2017-06-07arm64: ftrace: don't validate branch via PLT in ftrace_make_nop()Ard Biesheuvel1-3/+43
When turning branch instructions into NOPs, we attempt to validate the action by comparing the old value at the call site with the opcode of a direct relative branch instruction pointing at the old target. However, these call sites are statically initialized to call _mcount(), and may be redirected via a PLT entry if the module is loaded far away from the kernel text, leading to false negatives and spurious errors. So skip the validation if CONFIG_ARM64_MODULE_PLTS is configured. Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Signed-off-by: Will Deacon <will.deacon@arm.com>
2017-06-07driver core: remove CLASS_ATTR usageGreg Kroah-Hartman2-4/+5
There was only 2 remaining users of CLASS_ATTR() so let's finally get rid of them and force everyone to use the correct RW/RO/WO versions instead. Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Paul Mackerras <paulus@samba.org> Acked-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-06-07arm: dts: mediatek: Add audio driver node for MT2701Garlic Tseng2-0/+163
Add audio driver node for mt2701 Signed-off-by: Garlic Tseng <garlic.tseng@mediatek.com> Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
2017-06-07ARM: OMAP1: Fix a typo in a comment lineMarkus Elfring1-1/+1
Adjust a line in this description for the software module. Signed-off-by: Markus Elfring <elfring@users.sourceforge.net> Signed-off-by: Tony Lindgren <tony@atomide.com>
2017-06-07ARM: OMAP1: Delete an error message for a failed memory allocation in ↵Markus Elfring1-2/+0
omap1_dm_timer_init() Omit an extra message for a memory allocation failure in this function. This issue was detected by using the Coccinelle software. Link: http://events.linuxfoundation.org/sites/events/files/slides/LCJ16-Refactor_Strings-WSang_0.pdf Signed-off-by: Markus Elfring <elfring@users.sourceforge.net> Signed-off-by: Tony Lindgren <tony@atomide.com>
2017-06-07ARM: OMAP1: DMA: Delete an unnecessary return statement in omap1_show_dma_caps()Markus Elfring1-1/+0
The script "checkpatch.pl" pointed information out like the following. WARNING: void function return statements are not generally useful Thus remove such a statement in the affected function. Signed-off-by: Markus Elfring <elfring@users.sourceforge.net> Signed-off-by: Tony Lindgren <tony@atomide.com>
2017-06-07ARM: OMAP1: DMA: Delete an error message for a failed memory allocation in ↵Markus Elfring1-2/+0
omap1_system_dma_init() Omit an extra message for a memory allocation failure in this function. This issue was detected by using the Coccinelle software. Link: http://events.linuxfoundation.org/sites/events/files/slides/LCJ16-Refactor_Strings-WSang_0.pdf Signed-off-by: Markus Elfring <elfring@users.sourceforge.net> Signed-off-by: Tony Lindgren <tony@atomide.com>
2017-06-07ARM: OMAP1: DMA: Improve a size determination in omap1_system_dma_init()Markus Elfring1-1/+1
Replace the specification of a data structure by a pointer dereference as the parameter for the operator "sizeof" to make the corresponding size determination a bit safer according to the Linux coding style convention. Signed-off-by: Markus Elfring <elfring@users.sourceforge.net> Signed-off-by: Tony Lindgren <tony@atomide.com>
2017-06-07ARM: imx6ull: Make suspend/resume work like on 6ulLeonard Crestez1-2/+4
Suspend and resume on imx6ull is currenty not working because of some missed checks where behavior should match imx6ul. Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com> Reviewed-by: Fabio Estevam <fabio.estevam@nxp.com> Signed-off-by: Shawn Guo <shawnguo@kernel.org>
2017-06-07ARM: imx: Add MXC_CPU_IMX6ULL and cpu_is_imx6ullLeonard Crestez2-0/+9
Support for imx6ull is already present but it's based on of_machine_is_compatible("fsl,imx6ull") checks. Add it to the MXC_CPU_* enumeration as well. This also fixes /sys/devices/soc0/soc_id reading "Unknown". Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com> Reviewed-by: Fabio Estevam <fabio.estevam@nxp.com> Signed-off-by: Shawn Guo <shawnguo@kernel.org>
2017-06-07ARM: dts: imx6: Fix PCI GPIO reset polarityFabio Estevam7-7/+7
The imx6 PCI driver ignores the GPIO polarity from 'reset-gpio' and considers that the PCI reset is active low, unless the property 'reset-gpio-active-high' is present. Fix the device tree description by explicitly passing the 'GPIO_ACTIVE_LOW' flag to the 'reset-gpio' property. Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com> Signed-off-by: Shawn Guo <shawnguo@kernel.org>
2017-06-07Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/netDavid S. Miller54-310/+521
Just some simple overlapping changes in marvell PHY driver and the DSA core code. Signed-off-by: David S. Miller <davem@davemloft.net>
2017-06-07ARM64: dts: meson-gx: Fix sensors reporting from SCPCarlo Caione1-1/+1
Switch to use the new compatible for the SCPI sensors so that the sensor readings are reported using the correct scale. Signed-off-by: Carlo Caione <carlo@endlessm.com> Signed-off-by: Kevin Hilman <khilman@baylibre.com>
2017-06-07Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/netLinus Torvalds1-0/+6
Pull networking fixes from David Miller: 1) Made TCP congestion control documentation match current reality, from Anmol Sarma. 2) Various build warning and failure fixes from Arnd Bergmann. 3) Fix SKB list leak in ipv6_gso_segment(). 4) Use after free in ravb driver, from Eugeniu Rosca. 5) Don't use udp_poll() in ping protocol driver, from Eric Dumazet. 6) Don't crash in PCI error recovery of cxgb4 driver, from Guilherme Piccoli. 7) _SRC_NAT_DONE_BIT needs to be cleared using atomics, from Liping Zhang. 8) Use after free in vxlan deletion, from Mark Bloch. 9) Fix ordering of NAPI poll enabled in ethoc driver, from Max Filippov. 10) Fix stmmac hangs with TSO, from Niklas Cassel. 11) Fix crash in CALIPSO ipv6, from Richard Haines. 12) Clear nh_flags properly on mpls link up. From Roopa Prabhu. 13) Fix regression in sk_err socket error queue handling, noticed by ping applications. From Soheil Hassas Yeganeh. 14) Update mlx4/mlx5 MAINTAINERS information. * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (78 commits) net: stmmac: fix a broken u32 less than zero check net: stmmac: fix completely hung TX when using TSO net: ethoc: enable NAPI before poll may be scheduled net: bridge: fix a null pointer dereference in br_afspec ravb: Fix use-after-free on `ifconfig eth0 down` net/ipv6: Fix CALIPSO causing GPF with datagram support net: stmmac: ensure jumbo_frm error return is correctly checked for -ve value Revert "sit: reload iphdr in ipip6_rcv" i40e/i40evf: proper update of the page_offset field i40e: Fix state flags for bit set and clean operations of PF iwlwifi: fix host command memory leaks iwlwifi: fix min API version for 7265D, 3168, 8000 and 8265 iwlwifi: mvm: clear new beacon command template struct iwlwifi: mvm: don't fail when removing a key from an inexisting sta iwlwifi: pcie: only use d0i3 in suspend/resume if system_pm is set to d0i3 iwlwifi: mvm: fix firmware debug restart recording iwlwifi: tt: move ucode_loaded check under mutex iwlwifi: mvm: support ibss in dqa mode iwlwifi: mvm: Fix command queue number on d0i3 flow iwlwifi: mvm: rs: start using LQ command color ...
2017-06-07Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparcLinus Torvalds17-116/+201
Pull sparc fixes from David Miller: 1) Fix TLB context wrap races, from Pavel Tatashin. 2) Cure some gcc-7 build issues. 3) Handle invalid setup_hugepagesz command line values properly, from Liam R Howlett. 4) Copy TSB using the correct address shift for the huge TSB, from Mike Kravetz. * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc: sparc64: delete old wrap code sparc64: new context wrap sparc64: add per-cpu mm of secondary contexts sparc64: redefine first version sparc64: combine activate_mm and switch_mm sparc64: reset mm cpumask after wrap sparc/mm/hugepages: Fix setup_hugepagesz for invalid values. sparc: Machine description indices can vary sparc64: mm: fix copy_tsb to correctly copy huge page TSBs arch/sparc: support NR_CPUS = 4096 sparc64: Add __multi3 for gcc 7.x and later. sparc64: Fix build warnings with gcc 7. arch/sparc: increase CONFIG_NODES_SHIFT on SPARC64 to 5
2017-06-06sparc64: delete old wrap codePavel Tatashin6-45/+1
The old method that is using xcall and softint to get new context id is deleted, as it is replaced by a method of using per_cpu_secondary_mm without xcall to perform the context wrap. Signed-off-by: Pavel Tatashin <pasha.tatashin@oracle.com> Reviewed-by: Bob Picco <bob.picco@oracle.com> Reviewed-by: Steven Sistare <steven.sistare@oracle.com> Signed-off-by: David S. Miller <davem@davemloft.net>
2017-06-06sparc64: new context wrapPavel Tatashin1-27/+54
The current wrap implementation has a race issue: it is called outside of the ctx_alloc_lock, and also does not wait for all CPUs to complete the wrap. This means that a thread can get a new context with a new version and another thread might still be running with the same context. The problem is especially severe on CPUs with shared TLBs, like sun4v. I used the following test to very quickly reproduce the problem: - start over 8K processes (must be more than context IDs) - write and read values at a memory location in every process. Very quickly memory corruptions start happening, and what we read back does not equal what we wrote. Several approaches were explored before settling on this one: Approach 1: Move smp_new_mmu_context_version() inside ctx_alloc_lock, and wait for every process to complete the wrap. (Note: every CPU must WAIT before leaving smp_new_mmu_context_version_client() until every one arrives). This approach ends up with deadlocks, as some threads own locks which other threads are waiting for, and they never receive softint until these threads exit smp_new_mmu_context_version_client(). Since we do not allow the exit, deadlock happens. Approach 2: Handle wrap right during mondo interrupt. Use etrap/rtrap to enter into into C code, and issue new versions to every CPU. This approach adds some overhead to runtime: in switch_mm() we must add some checks to make sure that versions have not changed due to wrap while we were loading the new secondary context. (could be protected by PSTATE_IE but that degrades performance as on M7 and older CPUs as it takes 50 cycles for each access). Also, we still need a global per-cpu array of MMs to know where we need to load new contexts, otherwise we can change context to a thread that is going way (if we received mondo between switch_mm() and switch_to() time). Finally, there are some issues with window registers in rtrap() when context IDs are changed during CPU mondo time. The approach in this patch is the simplest and has almost no impact on runtime. We use the array with mm's where last secondary contexts were loaded onto CPUs and bump their versions to the new generation without changing context IDs. If a new process comes in to get a context ID, it will go through get_new_mmu_context() because of version mismatch. But the running processes do not need to be interrupted. And wrap is quicker as we do not need to xcall and wait for everyone to receive and complete wrap. Signed-off-by: Pavel Tatashin <pasha.tatashin@oracle.com> Reviewed-by: Bob Picco <bob.picco@oracle.com> Reviewed-by: Steven Sistare <steven.sistare@oracle.com> Signed-off-by: David S. Miller <davem@davemloft.net>