summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-03-27iommu/arm-smmu-v3: Support 52-bit physical addressRobin Murphy
Implement SMMUv3.1 support for 52-bit physical addresses. Since a 52-bit OAS implies 64KB translation granule support, permitting level 1 block entries there is simple, and the rest is just extending address fields. Tested-by: Nate Watterson <nwatters@codeaurora.org> Signed-off-by: Robin Murphy <robin.murphy@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
2018-03-27iommu/io-pgtable-arm: Support 52-bit physical addressRobin Murphy
Bring io-pgtable-arm in line with the ARMv8.2-LPA feature allowing 52-bit physical addresses when using the 64KB translation granule. This will be supported by SMMUv3.1. Tested-by: Nate Watterson <nwatters@codeaurora.org> Signed-off-by: Robin Murphy <robin.murphy@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
2018-03-27iommu/arm-smmu-v3: Clean up queue definitionsRobin Murphy
As with registers and tables, use GENMASK and the bitfield accessors consistently for queue fields, to save some lines and ease maintenance a little. This now leaves everything in a nice state where all named field definitions expect to be used with bitfield accessors (although since single-bit fields can still be used directly we leave some of those uses as-is to avoid unnecessary churn), while the few remaining *_MASK definitions apply exclusively to in-place values. Signed-off-by: Robin Murphy <robin.murphy@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
2018-03-27iommu/arm-smmu-v3: Clean up table definitionsRobin Murphy
As with registers, use GENMASK and the bitfield accessors consistently for table fields, to save some lines and ease maintenance a little. This also catches a subtle off-by-one wherein bit 5 of CD.T0SZ was missing. Signed-off-by: Robin Murphy <robin.murphy@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
2018-03-27iommu/arm-smmu-v3: Clean up register definitionsRobin Murphy
The FIELD_{GET,PREP} accessors provided by linux/bitfield.h allow us to define multi-bit register fields solely in terms of their bit positions via GENMASK(), without needing explicit *_SHIFT and *_MASK definitions. As well as the immediate reduction in lines of code, this avoids the awkwardness of values sometimes being pre-shifted and sometimes not, which means we can factor out some common values like memory attributes. Furthermore, it also makes it trivial to verify the definitions against the architecture spec, on which note let's also fix up a few field names to properly match the current release (IHI0070B). Signed-off-by: Robin Murphy <robin.murphy@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
2018-03-27iommu/arm-smmu-v3: Clean up address maskingRobin Murphy
Before trying to add the SMMUv3.1 support for 52-bit addresses, make things bearable by cleaning up the various address mask definitions to use GENMASK_ULL() consistently. The fact that doing so reveals (and fixes) a latent off-by-one in Q_BASE_ADDR_MASK only goes to show what a jolly good idea it is... Tested-by: Nate Watterson <nwatters@codeaurora.org> Signed-off-by: Robin Murphy <robin.murphy@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
2018-03-27iommu/arm-smmu-v3: limit reporting of MSI allocation failuresNate Watterson
Currently, the arm-smmu-v3 driver expects to allocate MSIs for all SMMUs with FEAT_MSI set. This results in unwarranted "failed to allocate MSIs" warnings being printed on systems where FW was either deliberately configured to force the use of SMMU wired interrupts -or- is altogether incapable of describing SMMU MSI topology (ACPI IORT prior to rev.C). Remedy this by checking msi_domain before attempting to allocate SMMU MSIs. Acked-by: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: Nate Watterson <nwatters@codeaurora.org> Signed-off-by: Sinan Kaya <okaya@codeaurora.org> Signed-off-by: Will Deacon <will.deacon@arm.com>
2018-03-27iommu/arm-smmu-v3: Warn about missing IRQsRobin Murphy
It is annoyingly non-obvious when DMA transactions silently go missing due to undetected SMMU faults. Help skip the first few debugging steps in those situations by making it clear when we have neither wired IRQs nor MSIs with which to raise error conditions. Signed-off-by: Robin Murphy <robin.murphy@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
2018-03-27Merge tag 'tegra-for-4.17-arm64-defconfig' of ↵Arnd Bergmann
ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/tegra/linux into next/soc Pull "arm64: Default configuration updates for v4.17-rc1" from Thierry Reding: Enable the BPMP thermal and CPU frequency drivers as well as make sure that the Tegra SMMU is enabled by default because there's no fun without it. Also enable initial Tegra194 support. * tag 'tegra-for-4.17-arm64-defconfig' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/tegra/linux: arm64: defconfig: Enable the Tegra SMMU by default arm64: defconfig: Enable CONFIG_TEGRA_BPMP_THERMAL arm64: defconfig: Enable CONFIG_ARM_TEGRA186_CPUFREQ arm64: defconfig: Enable NVIDIA Tegra194 support
2018-03-27Merge tag 'imx-defconfig-4.17' of ↵Arnd Bergmann
ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into next/soc Pull "i.MX defconfig updates for 4.17" from Shawn Guo: - Re-sync defconfig files by running savedefconfig. - Enable generic fsl-asoc-card driver for imx_v4_v5_defconfig. - Enable MAG3110 magnetometer sensor driver, AC97 and WM8962 codec driver, DA9062/63 PMIC, RTC and Watchdog support for imx_v6_v7_defconfig. * tag 'imx-defconfig-4.17' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux: ARM: mxs_defconfig: Re-sync defconfig ARM: imx_v4_v5_defconfig: Use the generic fsl-asoc-card driver ARM: imx_v4_v5_defconfig: Re-sync defconfig ARM: imx_v6_v7_defconfig: Select CONFIG_SND_SOC_WM8962 explicitly ARM: imx_v6_v7_defconfig: Re-sync defconfig ARM: imx_v6_v7_defconfig: Enable Dialog Semiconductor DA9062 driver ARM: imx_v6_v7_defconfig: Enable AC97 codec support ARM: imx: Update imx_v6_v7_defconfig for mag3110 support ARM: imx_v6_v7_defconfig: enable OP-TEE ARM: imx_v6_v7_defconfig: select the CONFIG_CPUFREQ_DT
2018-03-27ARM: imx: fix imx6sll-only buildArnd Bergmann
When selecting SOC_IMX6SLL but not SOC_IMX6SL, we get a link error: arch/arm/mach-imx/mach-imx6sl.o: In function `imx6sl_init_late': mach-imx6sl.c:(.init.text+0x14): undefined reference to `imx6sl_cpuidle_init' This adds the missing line to the Makefile to also build the cpuidle support that we need here. Fixes: dee5dee2a5b2 ("ARM: imx: Add basic msl support for imx6sll") Acked-by: Shawn Guo <shawnguo@kernel.org> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2018-03-27ARM: imx: select ARM_CPU_SUSPEND for CPU_IDLE as wellArnd Bergmann
The cpuidle support calls cpu_suspend(), which is compiled conditionally, and fails to link unless something selects CONFIG_ARM_CPU_SUSPEND. arch/arm/mach-imx/cpuidle-imx6sx.o: In function `imx6sx_enter_wait': cpuidle-imx6sx.c:(.text+0x6c): undefined reference to `cpu_suspend' This adds an explicit select statement here. Acked-by: Shawn Guo <shawnguo@kernel.org> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2018-03-27pinctrl: sunxi: add support for the Allwinner H6 main pin controllerIcenowy Zheng
The Allwinner H6 SoC has two pin controllers, one main controller (called CPUX-PORT in user manual) and one controller in CPUs power domain (called CPUS-PORT in user manual). This commit introduces support for the main pin controller on H6. The pin bank A and B are not wired out and hidden from the SoC's documents, however it's shown that the "ATE" (an AC200 chip co-packaged with the H6 die) is connected to the main SoC die via these pin banks. The information about these banks is just copied from the BSP pinctrl driver, but re-formatted to fit the mainline pinctrl driver format. The GPIO functions are dropped, as they're impossible to use -- except a GPIO&IRQ only pin (PB20) which might be the IRQ of ATE. Signed-off-by: Icenowy Zheng <icenowy@aosc.io> Acked-by: Rob Herring <robh@kernel.org> Reviewed-by: Andre Przywara <andre.przywara@arm.com> Acked-by: Maxime Ripard <maxime.ripard@bootlin.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2018-03-27arm: dts: armada-xp-98dx: use SPDX-License-Identifier for prestara 98d SoCsGregory CLEMENT
Follow the recent trend for the license description, and also fix the wrongly stated X11 to MIT. As already pointed on the DT ML, the X11 license text [1] is explicitly for the X Consortium and has a couple of extra clauses. The MIT license text [2] is actually what the current DT files claim. [1] https://spdx.org/licenses/X11.html [2] https://spdx.org/licenses/MIT.html Cc: Chris Packham <chris.packham@alliedtelesis.co.nz> Acked-by: Chris Packham <chris.packham@alliedtelesis.co.nz> Acked-by: Jason Cooper <jason@lakedaemon.net> Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
2018-03-27arm: dts: armada-*.dtsi: use SPDX-License-Identifier for most of the Armada SoCsGregory CLEMENT
Follow the recent trend for the license description, and also fix the wrongly stated X11 to MIT. As already pointed on the DT ML, the X11 license text [1] is explicitly for the X Consortium and has a couple of extra clauses. The MIT license text [2] is actually what the current DT files claim. [1] https://spdx.org/licenses/X11.html [2] https://spdx.org/licenses/MIT.html Acked-by: Jason Cooper <jason@lakedaemon.net> Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
2018-03-27pinctrl: sunxi: change irq_bank_base to irq_bank_mapIcenowy Zheng
The Allwinner H6 SoC have its pin controllers with the first IRQ-capable GPIO bank at IRQ bank 1 and the second bank at IRQ bank 5. Change the current code that uses IRQ bank base to a IRQ bank map, in order to support the case that holes exist among IRQ banks. Signed-off-by: Icenowy Zheng <icenowy@aosc.io> Acked-by: Maxime Ripard <maxime.ripard@bootlin.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2018-03-27ARM: dts: armada388-clearfog: add SFP module supportRussell King
Add SFP module support for Clearfog using the SFP phylink support. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Tested-by: Andrew Lunn <andrew@lunn.ch> Tested-by: Baruch Siach <baruch@tkos.co.il> Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
2018-03-27ARM: dts: armada-385-linksys: Disable internal RTCHauke Mehrtens
The internal RTC does not work correctly on these Linksys boards based on Marvell SoCs. For me it only shows Wed Dec 31 23:59:59 1969 and for others it is off by 3 minutes in 10 minutes running, this was reported by multiple users. On the Linksys Mamba device the device tree comment says that no crystal is connected to the internal RTC, this is probably also true for the other devices. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
2018-03-27pinctrl: sunxi: introduce IRQ bank conversion functionIcenowy Zheng
The Allwinner H6 SoC have its pin controllers with the first IRQ-capable GPIO bank at IRQ bank 1 and the second bank at IRQ bank 5. Some refactors in the sunxi pinctrl framework are needed. This commit introduces a IRQ bank conversion function, which replaces the "(bank_base + bank)" code in IRQ register access. Signed-off-by: Icenowy Zheng <icenowy@aosc.io> Acked-by: Maxime Ripard <maxime.ripard@bootlin.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2018-03-27pinctrl: sunxi: refactor irq related register function to have descIcenowy Zheng
As the new H6 SoC has holes in the IRQ registers, refactor the IRQ related register function for getting the full pinctrl desc structure. Signed-off-by: Icenowy Zheng <icenowy@aosc.io> Acked-by: Maxime Ripard <maxime.ripard@bootlin.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2018-03-27Merge tag 'imx-dt64-4.17-2' of ↵Arnd Bergmann
ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into next/dt Pull "Freescale arm64 device tree fixups for 4.17" from Shawn Guo: - It reverts a couple of patches that "fix" DTC warnings on IFC memory controller in a wrong way. We will start over agagin to address the DTC warnings later. * tag 'imx-dt64-4.17-2' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux: Revert "dt-bindings: ifc: Fix the unit address format in the examples" Revert "arm64: dts: fsl: fix ifc simple-bus unit address format warnings"
2018-03-27Merge tag 'socfpga_dts_for_v4.17' of ↵Arnd Bergmann
ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/dinguyen/linux into next/dt Pull "SoCFPGA DTS updates for v4.17" from Dinh Nguyen: - Fix GIC PPI warning - Stratix10 platform updates - Disable over-current for Arria10 devkit - Enable watchdog timer * tag 'socfpga_dts_for_v4.17' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/dinguyen/linux: arm: dts: socfpga: fix GIC PPI warning arm64: dts: stratix10: disable false USB overcurrent on devkit arm64: dts: stratix10: enable watchdog timer on the S10 devkit
2018-03-27Merge tag 'omap-for-v4.17/dt-pt2-signed' of ↵Arnd Bergmann
ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into next/dt Pull "Second set of dts changes for omap variants for v4.17" from Tony Lindgren: This series of patches configures few new drivers and adds omap5 specific nodes: - Enable USB OTG mode for xhci on am437x - A series of changes to configure aux control module instance on omap5 mostly to get the audio clocks configured - A series of changes to update droid4 for MDM6600 modem USB PHY and UART1 pinctrl * tag 'omap-for-v4.17/dt-pt2-signed' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap: ARM: dts: omap4-droid4: Configure uart1 pins ARM: dts: omap4-droid4: Configure MDM6600 USB PHY ARM: dts: omap4-droid4: Fix USB PHY port naming ARM: dts: omap5-board-common: Add phandle for mclk clock for twl6040 ARM: dts: omap5: add fref_xtal_ck support ARM: dts: omap5: add support for control module wkup pad config dt-bindings: omap5: ctrl: Support for control module wkup pad config ARM: dts: am43xx: Enable dual-role mode for USB1
2018-03-27Merge tag 'sunxi-h3-h5-for-4.17' of ↵Arnd Bergmann
ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/sunxi/linux into next/dt Pull "Allwinner H3/H5 changes for 4.17" from Maxime Ripard: Here is our usual bunch of changes to the common DTSI shared between arm and arm64, and their associated device trees. Even though the diffstat is quite big, it's been mostly just cleanups. The big feature is that the HDMI is now suported on H3 and H5 boards. * tag 'sunxi-h3-h5-for-4.17' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/sunxi/linux: arm64: allwinner: H5: Add Xunlong Orange Pi Zero Plus ARM: dts: sun8i-h3: Add Mali node ARM64: dts: sun50i: h5: Enable HDMI output on H5 boards ARM: dts: sun8i: h3: Enable HDMI output on H3 boards ARM: dts: sunxi: h3/h5: Add HDMI pipeline ARM: dts: sun8i: h2-plus: remove unnecessary mmc1_pins node ARM: dts: sunxi: h3-h5: rename mmc0_pins_a and mmc1_pins_a ARM: dts: sunxi: h3-h5: Move pinctrl of mmc1 from dts to dtsi ARM: dts: sunxi: h3-h5: Move pinctrl of mmc0 from dts to dtsi ARM: dts: sunxi: h3-h5: remove mmc0 card detection pin from pinctrl ARM: dts: sun8i: h2+: add support for Banana Pi M2 Zero board ARM: dts: sunxi: Switch MMC nodes away from cd-inverted property ARM: dts: nanopi-neo-air: Add WiFi / eMMC
2018-03-27Merge branch 'topic/ppc-kvm' into nextMichael Ellerman
Merge the DAWR series, which touches arch code and KVM code and may need to be merged into the kvm-ppc tree.
2018-03-27powerpc: Disable DAWR in the base POWER9 CPU featuresMichael Neuling
Using the DAWR on POWER9 can cause xstops, hence we need to disable it. Signed-off-by: Michael Neuling <mikey@neuling.org> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2018-03-27powerpc: Disable DAWR on POWER9 via CPU feature quirkMichael Neuling
This disables the DAWR on all POWER9 CPUs via cpu feature quirk. Using the DAWR on POWER9 can cause xstops, hence we need to disable it. Signed-off-by: Michael Neuling <mikey@neuling.org> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2018-03-27KVM: PPC: Book3S HV: Handle migration with POWER9 disabled DAWRMichael Neuling
POWER9 with the DAWR disabled causes problems for partition migration. Either we have to fail the migration (since we lose the DAWR) or we silently drop the DAWR and allow the migration to pass. This patch does the latter and allows the migration to pass (at the cost of silently losing the DAWR). This is not ideal but hopefully the best overall solution. This approach has been acked by Paulus. With this patch kvmppc_set_one_reg() will store the DAWR in the vcpu but won't actually set it on POWER9 hardware. Signed-off-by: Michael Neuling <mikey@neuling.org> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2018-03-27KVM: PPC: Book3S HV: Return error from h_set_dabr() on POWER9Michael Neuling
POWER7 compat mode guests can use h_set_dabr on POWER9. POWER9 should use the DAWR but since it's disabled there we can't. This returns H_UNSUPPORTED on a h_set_dabr() on POWER9 where the DAWR is disabled. Current Linux guests ignore this error, so they will silently not get the DAWR (sigh). The same error code is being used by POWERVM in this case. Signed-off-by: Michael Neuling <mikey@neuling.org> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2018-03-27KVM: PPC: Book3S HV: Return error from h_set_mode(SET_DAWR) on POWER9Michael Neuling
Return H_P2 on a h_set_mode(SET_DAWR) on POWER9 where the DAWR is disabled. Current Linux guests ignore this error, so they will silently not get the DAWR (sigh). The same error code is being used by POWERVM in this case. Signed-off-by: Michael Neuling <mikey@neuling.org> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2018-03-27Merge tag 'sunxi-dt64-for-4.17' of ↵Arnd Bergmann
ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/sunxi/linux into next/dt Pull "Allwinner arm64 DT changes for 4.17" from Maxime Ripard: We've had for this release a pretty good progress on the arm64 front as well: - The A64 now has SPDIF support - The H6 is now supported (even though at an early stage) - The TERES-I laptop from Olimex has seen some early support as well * tag 'sunxi-dt64-for-4.17' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/sunxi/linux: arm64: dts: allwinner: a64: Add support for TERES-I laptop arm64: dts: allwinner: a64: add simplefb for A64 SoC arm64: dts: allwinner: a64: Add watchdog arm64: dts: allwinner: a64: Add i2c0 pins arm64: allwinner: h6: add support for Pine H64 board arm64: allwinner: h6: add the basical Allwinner H6 DTSI file arm64: dts: sunxi: Switch MMC nodes away from cd-inverted property arm64: dts: allwinner: a64: Add DAI nodes arm64: dts: allwinner: a64: Add SPDIF to the Pine64 arm64: dts: allwinner: a64: Add SPDIF to the A64 arm64: dts: allwinner: a64: Add the SPDIF block and pin
2018-03-27powerpc: Update xmon to use ppc_breakpoint_available()Michael Neuling
The 'bd' command will now print an error and not set the breakpoint on P9. Signed-off-by: Michael Neuling <mikey@neuling.org> [mpe: Unsplit quoted string] Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2018-03-27Merge tag 'sunxi-dt-for-4.17' of ↵Arnd Bergmann
ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/sunxi/linux into next/dt Pull "Allwinner DT changes for 4.17" from Maxime Ripard: There is a bunch of significant additions for this release cycle: - The A83t now has HDMI support - The A80 finally has SMP support (without PSCI, unfortunately) - The A80 has preliminary display support And also: - a number of boards based on old (A10, A20) SoCs now have the HDMI support enabled. - The display frontend is enabled on the A33, allowing to use it for hardware display scaling - New boards: Olimex A20-SOM204 variants * tag 'sunxi-dt-for-4.17' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/sunxi/linux: (39 commits) ARM: dts: sun9i: cubieboard4: Enable VGA display output ARM: dts: sun9i: Add pinmux settings for LCD0 RGB888 output. ARM: dts: sun9i: Add device nodes for documented display pipelines for A80 ARM: dts: sun8i: reference tablet design: Enable PMIC power supplies ARM: dts: sun8i: a33: Enable A33 internal audio codec on A33-OLinuXino ARM: dts: sun8i: a33: Enable PMIC power supplies on A33-OLinuXino ARM: dts: sun8i: a33: Drop sunxi-common-regulators.dtsi for A33-OLinuXino ARM: dts: sun8i: a33: Drop GPIO pinmux settings for A33-OLinuXino ARM: dts: sun9i: Add enable-method for SMP support for the A80 SoC ARM: dts: sun8i: h3: Add eMMC for NanoPi M1 Plus ARM: dts: sun8i: a711: set regulator for each cluster of CPUs ARM: dts: sun8i: a83t: add stable OPP tables and CPUfreq ARM: dts: sun8i: a83t: add cpu0 and cpu100 labels ARM: dtsi: axp81x: remove IP name from DT node name ARM: dtsi: sun8i: a711: enable battery power supply subnode ARM: dtsi: axp81x: add battery power supply subnode ARM: dtsi: axp81x: add node for ADC ARM: dtsi: axp22x: add node for ADC ARM: dtsi: axp209: add node for ADC ARM: dts: sun7i: Enable HDMI support on the Orange Pi mini ...
2018-03-27Merge tag 'at91-ab-4.17-dt2' of ↵Arnd Bergmann
ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/abelloni/linux into next/dt Pull "AT91 DT for 4.17 #2" from Alexandre Belloni: Pinctrl fixes, the UART pullups were discussed back in 2016. * tag 'at91-ab-4.17-dt2' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/abelloni/linux: ARM: dts: at91sam9260: pullup rx on usart0 ARM: dts: at91rm9200: pullup rx on uart0 ARM: dts: at91: fixes uart pinctrl, set pullup on rx, clear pullup on tx ARM: dts: at91: at91sam9g25: fix mux-mask pinctrl property
2018-03-27powerpc: Update ptrace to use ppc_breakpoint_available()Michael Neuling
This updates the ptrace code to use ppc_breakpoint_available(). We now advertise via PPC_PTRACE_GETHWDBGINFO zero breakpoints when the DAWR is missing (ie. POWER9). This results in GDB falling back to software emulation of the breakpoint (which is slow). For the features advertised by PPC_PTRACE_GETHWDBGINFO, we keep advertising DAWR as if we don't GDB assumes 1 breakpoint irrespective of the number of breakpoints advertised. GDB then fails later when trying to set this one breakpoint. Signed-off-by: Michael Neuling <mikey@neuling.org> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2018-03-27powerpc: Add ppc_breakpoint_available()Michael Neuling
Add ppc_breakpoint_available() to determine if a breakpoint is available currently via the DAWR or DABR. Signed-off-by: Michael Neuling <mikey@neuling.org> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2018-03-27HID: google: add google hammer HID driverWei-Ning Huang
Add Google hammer HID driver. This driver allow us to control hammer keyboard backlight and support future features. Signed-off-by: Wei-Ning Huang <wnhuang@google.com> Signed-off-by: Nicolas Boichat <drinkcat@chromium.org> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2018-03-27powerpc/eeh: Add eeh_state_active() helperSam Bobroff
Checking for a "fully active" device state requires testing two flag bits, which is open coded in several places, so add a function to do it. Signed-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com> Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2018-03-27powerpc/eeh: Factor out common code eeh_reset_device()Sam Bobroff
The caller will always pass NULL for 'rmv_data' when 'eeh_aware_driver' is true, so the first two calls to eeh_pe_dev_traverse() can be combined without changing behaviour as can the two arms of the final 'if' block. This should not change behaviour. Signed-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com> Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2018-03-27powerpc/eeh: Remove always-true tests in eeh_reset_device()Sam Bobroff
eeh_reset_device() tests the value of 'bus' more than once but the only caller, eeh_handle_normal_device() does this test itself and will never pass NULL. So, remove the dead tests. This should not change behaviour. Signed-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com> Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2018-03-27powerpc/eeh: Clarify arguments to eeh_reset_device()Sam Bobroff
It is currently difficult to understand the behaviour of eeh_reset_device() due to the way it's parameters are used. In particular, when 'bus' is NULL, it's value is still necessary so the same value is looked up again locally under a different name ('frozen_bus') but behaviour is changed. To clarify this, add a new parameter 'driver_eeh_aware', and have the caller set it when it would have passed NULL for 'bus' and always pass a value for 'bus'. Then change any test that was on 'bus' to one on '!driver_eeh_aware' and replace uses of 'frozen_bus' with 'bus'. Also update the function's comment. This should not change behaviour. Signed-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com> Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2018-03-27powerpc/eeh: Rename frozen_bus to bus in eeh_handle_normal_event()Sam Bobroff
The name "frozen_bus" is misleading: it's not necessarily frozen, it's just the PE's PCI bus. Signed-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com> Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2018-03-27powerpc/eeh: Remove misleading test in eeh_handle_normal_event()Sam Bobroff
Remove a test that checks if "frozen_bus" is NULL, because it cannot have changed since it was tested at the start of the function and so must be true here. Signed-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com> Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2018-03-27powerpc/eeh: Fix misleading comment in __eeh_addr_cache_get_device()Sam Bobroff
Commit "0ba178888b05 powerpc/eeh: Remove reference to PCI device" removed a call to pci_dev_get() from __eeh_addr_cache_get_device() but did not update the comment to match. Signed-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com> Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2018-03-27powerpc/eeh: Manage EEH_PE_RECOVERING inside eeh_handle_normal_event()Sam Bobroff
Currently the EEH_PE_RECOVERING flag for a PE is managed by both the caller and callee of eeh_handle_normal_event() (among other places not considered here). This is complicated by the fact that the PE may or may not have been invalidated by the call. So move the callee's handling into eeh_handle_normal_event(), which clarifies it and allows the return type to be changed to void (because it no longer needs to indicate at the PE has been invalidated). This should not change behaviour except in eeh_event_handler() where it was previously possible to cause eeh_pe_state_clear() to be called on an invalid PE, which is now avoided. Signed-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com> Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2018-03-27powerpc/eeh: Remove eeh_handle_event()Sam Bobroff
The function eeh_handle_event(pe) does nothing other than switching between calling eeh_handle_normal_event(pe) and eeh_handle_special_event(). However it is only called in two places, one where pe can't be NULL and the other where it must be NULL (see eeh_event_handler()) so it does nothing but obscure the flow of control. So, remove it. Signed-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com> Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2018-03-27powerpc/powernv/npu: Do not try invalidating 32bit table when 64bit table is ↵Alexey Kardashevskiy
enabled GPUs and the corresponding NVLink bridges get different PEs as they have separate translation validation entries (TVEs). We put these PEs to the same IOMMU group so they cannot be passed through separately. So the iommu_table_group_ops::set_window/unset_window for GPUs do set tables to the NPU PEs as well which means that iommu_table's list of attached PEs (iommu_table_group_link) has both GPU and NPU PEs linked. This list is used for TCE cache invalidation. The problem is that NPU PE has just a single TVE and can be programmed to point to 32bit or 64bit windows while GPU PE has two (as any other PCI device). So we end up having an 32bit iommu_table struct linked to both PEs even though only the 64bit TCE table cache can be invalidated on NPU. And a relatively recent skiboot detects this and prints errors. This changes GPU's iommu_table_group_ops::set_window/unset_window to make sure that NPU PE is only linked to the table actually used by the hardware. If there are two tables used by an IOMMU group, the NPU PE will use the last programmed one which with the current use scenarios is expected to be a 64bit one. Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2018-03-27powerpc/mm: Fix typo in commentsAlexey Kardashevskiy
Fixes: 912cc87a6 "powerpc/mm/radix: Add LPID based tlb flush helpers" Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2018-03-27powerpc/lpar/debug: Initialize flags before printing debug messageAlexey Kardashevskiy
With enabled DEBUG, there is a compile error: "error: ‘flags’ is used uninitialized in this function". This moves pr_devel() little further where @flags are initialized. Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2018-03-27powerpc/init: Do not advertise radix during client-architecture-supportAlexey Kardashevskiy
Currently the pseries kernel advertises radix MMU support even if the actual support is disabled via the CONFIG_PPC_RADIX_MMU option. This adds a check for CONFIG_PPC_RADIX_MMU to avoid advertising radix to the hypervisor. Suggested-by: Paul Mackerras <paulus@ozlabs.org> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>