1. 03 Apr, 2018 15 commits
    • Linus Torvalds's avatar
      Merge tag 'mmc-v4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc · dc73d6a8
      Linus Torvalds authored
      Pull MMC updates from Ulf Hansson:
       "MMC core:
         - Export host capabilities through debugfs
         - Export card RCA register via sysfs
         - Improve card initializing sequence while enabling 4-bit bus
         - Export a function to enable/disable wakeup for card detect IRQ
      
        MMC host:
         - dw_mmc: Add support for new hi3798cv200 variant
         - dw_mmc: Remove support for some deprecated DT properties
         - mediatek: Add support for new variant used on MT7622 SoC
         - sdhci: Improve wakeup support for SDIO IRQs
         - sdhci: Improve wakeup support for card detect IRQs
         - sdhci-omap: Add tuning support
         - sdhci_omap: Add UHS-I mode support
         - sunxi: Prepare for runtime PM support via a few re-factorings
         - tmio: deprecate "toshiba,mmc-wrprotect-disable" DT property
         - tmio/renesas_sdhi: Consolidate code supporting write protect
         - tmio: Improve DMA vs PIO handling
         - tmio: Add support for IP-builtin card detection logic"
      
      * tag 'mmc-v4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc: (55 commits)
        mmc: renesas_sdhi: replace EXT_ACC with HOST_MODE
        mmc: update sdio_claim_irq documentation
        mmc: Export host capabilities to debugfs.
        mmc: core: Disable HPI for certain Micron (Numonyx) eMMC cards
        mmc: block: fix updating ext_csd caches on ioctl call
        mmc: sunxi: Set our device drvdata earlier
        mmc: sunxi: Move the reset deassertion before enabling the clocks
        mmc: sunxi: Move resources management to separate functions
        mmc: dw_mmc: add support for hi3798cv200 specific extensions of dw-mshc
        dt-bindings: mmc: add bindings for hi3798cv200-dw-mshc
        mmc: core: Export card RCA register via sysfs
        mmc: renesas_sdhi: fix WP detection
        mmc: core: Use memdup_user() rather than duplicating its implementation
        mmc: dw_mmc-rockchip: correct property names in debug
        mmc: sd: Remove redundant err assignment from mmc_read_switch
        mmc: sdio: Check the return value of sdio_enable_4bit_bus
        mmc: core: Don't try UHS-I mode if 4-bit mode isn't supported
        arm64: dts: hi3660: remove 'num-slots' property for dwmmc
        ARM: dts: lpc18xx: remove 'num-slots' property for dwmmc
        arm64: dts: stratix10: remove 'num-slots' property for dwmmc
        ...
      dc73d6a8
    • Linus Torvalds's avatar
      Merge tag 'hsi-for-4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi · dabe5184
      Linus Torvalds authored
      Pull HSI updates from Sebastian Reichel:
      
       - spelling/typo fixes
      
       - remove extra error printing for -ENOMEM
      
      * tag 'hsi-for-4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi:
        HSI: hsi_char: Delete an error message for a failed memory allocation in hsc_probe()
        HSI: ssi_protocol: fix spelling mistake: "trigerred" -> "triggered"
        HSI: ssi_protocol: Delete an error message for a failed memory allocation in ssi_protocol_probe()
        HSI: ssi_protocol: Fix a typo in two comment lines
      dabe5184
    • Linus Torvalds's avatar
      Merge tag 'for-v4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply · 3ac684b8
      Linus Torvalds authored
      Pull power supply and reset updates from Sebastian Reichel:
      
       - Microsemi Ocelot reset support
      
       - Spreadtrum SC27xx reset support
      
       - generic gpio charger: lot's of cleanups
      
       - axp20x fuel gauge: add AXP813 support
      
       - misc fixes, including one devicetree change for the Nokia N900, that
         has been Acked-by Tony Lindgren
      
      * tag 'for-v4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply: (27 commits)
        power: reset: at91-reset: Switch from the pr_*() to the dev_*() logging functions
        power: reset: at91-poweroff: Remove redundant dev_err call in at91_poweroff_probe()
        power: reset: at91-poweroff: Switch from the pr_*() to the dev_*() logging functions
        power: reset: make function sc27xx_poweroff_shutdown static
        power: supply: da9150-fg: remove VLA usage
        ARM: dts: omap3-n900: Add link between battery and charger
        power: supply: bq2415x: add DT referencing support
        power: supply: bq27xxx: support missing supplier device
        max17042: propagate of_node to power supply device
        power: supply: axp288_fuel_gauge: Fix full status reporting
        power: supply: axp288_fuel_gauge: Do not register FG on ECS EF20EA
        power: reset: gpio-poweroff: Support for timeout from device property
        dt-bindings: power: reset: gpio-poweroff: Add 'timeout-ms' property
        power: reset: Add Spreadtrum SC27xx PMIC power off support
        power: supply: axp20x_battery: add support for AXP813
        dt-bindings: power: supply: axp20x: add AXP813 battery DT binding
        power: supply: axp20x_battery: use data struct for variant specific code
        power: supply: gpio-charger: Remove pdata from gpio_charger
        power: supply: gpio-charger: Use GPIOF_ACTIVE_LOW for legacy setup
        power: supply: gpio-charger: Remove redundant dev_err call in probe function
        ...
      3ac684b8
    • Linus Torvalds's avatar
      Merge tag 'spi-v4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi · 75dcc7ef
      Linus Torvalds authored
      Pull SPI updates from Mark Brown:
       "A quiet release for SPI, some fixes and small updates for individual
        drivers with one bigger change from Linus Walleij which coverts the
        bitbanging SPI driver to use the GPIO descriptor API from Linus
        Walleij.
      
        Since GPIO descriptors were used by platform data this means there's a
        few changes in arch/ making relevant updates for a few platforms and
        one misc driver that are affected"
      
      * tag 'spi-v4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi: (24 commits)
        MAINTAINERS: update Andi's e-mail
        spi: spi-atmel: Use correct enum for DMA transfer direction
        spi: sh-msiof: Document R-Car M3-N support
        spi: sh-msiof: Use correct enum for DMA transfer direction
        spi: sprd: Add the support of restarting the system
        spi: sprd: Simplify the transfer function
        spi: Fix unregistration of controller with fixed SPI bus number
        spi: rspi: use correct enum for DMA transfer direction
        spi: jcore: disable ref_clk after getting its rate
        spi: bcm-qspi: fIX some error handling paths
        spi: pxa2xx: Disable runtime PM if controller registration fails
        spi: tegra20-slink: use true and false for boolean values
        spi: Fix scatterlist elements size in spi_map_buf
        spi: atmel: init FIFOs before spi enable
        spi: orion: Prepare space for per-child options
        spi: orion: Make the error message greppable
        spi: orion: Rework GPIO CS handling
        spi: bcm2835aux: Avoid 64-bit arithmetic in xfer len calc
        spi: spi-gpio: Augment device tree bindings
        spi: spi-gpio: Rewrite to use GPIO descriptors
        ...
      75dcc7ef
    • Linus Torvalds's avatar
      Merge tag 'regulator-v4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator · b51c4354
      Linus Torvalds authored
      Pull regulator updates from Mark Brown:
       "A very small set of updates for the regulator API this time around,
        there's a few bug fixes and also:
      
         - Conversion of the regulator API to use GPIO descriptors rather than
           numbers from Linus Walleij.
      
         - New drivers for Marvell 88PG86x and Qualcomm PM8998 and PMI8998"
      
      * tag 'regulator-v4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator:
        regulator: qcom: smd: Add pm8998 and pmi8998 regulators
        regulator: core: Add missing blank line between functions
        regulator: qcom_smd: Drop regulator/{machine,of_regulator} includes
        regulator: giving regulator controlling gpios a non-empty label when used through the devicetree.
        regulator: gpio: Fix some error handling paths in 'gpio_regulator_probe()'
        regulator: 88pg86x: new i2c dual regulator chip
        regulator: 88pg86x: add DT bindings document
        regulator: da9211: Pass descriptors instead of GPIO numbers
        regulator: da9055: Pass descriptor instead of GPIO number
        regulator: core: Support passing an initialized GPIO enable descriptor
        regulator: dt: regulator-name is required property
        regulator: of: Add a missing 'of_node_put()' in an error handling path of 'of_regulator_match()'
      b51c4354
    • Linus Torvalds's avatar
      Merge tag 'regmap-v4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap · ffd776bf
      Linus Torvalds authored
      Pull regmap updates from Mark Brown:
       "This is a fairly large set of updates for regmap, mainly bugfixes.
      
        The biggest bit of this is some fixes for the bulk operations code
        which had issues in some use cases, Charles Keepax has sorted them
        out. We also gained the ability to use debugfs with syscon regmaps and
        to specify the clock to be used with MMIO regmaps"
      
      * tag 'regmap-v4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap: (21 commits)
        regmap: debugfs: Improve warning message on debugfs_create_dir() failure
        regmap: debugfs: Free map->debugfs_name when debugfs_create_dir() failed
        regmap: debugfs: Don't leak dummy names
        regmap: debugfs: Disambiguate dummy debugfs file name
        regmap: mmio: Add function to attach a clock
        regmap: Merge redundant handling in regmap_bulk_write
        regmap: Tidy up regmap_raw_write chunking code
        regmap: Move the handling for max_raw_write into regmap_raw_write
        regmap: Remove unnecessary printk for failed allocation
        regmap: Format data for raw write in regmap_bulk_write
        regmap: use debugfs even when no device
        regmap: Allow missing device in regmap_name_read_file()
        regmap: Use _regmap_read in regmap_bulk_read
        regmap: Tidy up regmap_raw_read chunking code
        regmap: Move the handling for max_raw_read into regmap_raw_read
        regmap: Use helper function for register offset
        regmap: Don't use format_val in regmap_bulk_read
        regmap: Correct comparison in regmap_cached
        regmap: Correct offset handling in regmap_volatile_range
        regmap-i2c: Off by one in regmap_i2c_smbus_i2c_read/write()
        ...
      ffd776bf
    • Linus Torvalds's avatar
      Merge tag 'pm-4.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · f2d28566
      Linus Torvalds authored
      Pull power management updates from Rafael Wysocki:
       "These update the cpuidle poll state definition to reduce excessive
        energy usage related to it, add new CPU ID to the RAPL power capping
        driver, update the ACPI system suspend code to handle some special
        cases better, extend the PM core's device links code slightly, add new
        sysfs attribute for better suspend-to-idle diagnostics and easier
        hibernation handling, update power management tools and clean up
        cpufreq quite a bit.
      
        Specifics:
      
         - Modify the cpuidle poll state implementation to prevent CPUs from
           staying in the loop in there for excessive times (Rafael Wysocki).
      
         - Add Intel Cannon Lake chips support to the RAPL power capping
           driver (Joe Konno).
      
         - Add reference counting to the device links handling code in the PM
           core (Lukas Wunner).
      
         - Avoid reconfiguring GPEs on suspend-to-idle in the ACPI system
           suspend code (Rafael Wysocki).
      
         - Allow devices to be put into deeper low-power states via ACPI if
           both _SxD and _SxW are missing (Daniel Drake).
      
         - Reorganize the core ACPI suspend-to-idle wakeup code to avoid a
           keyboard wakeup issue on Asus UX331UA (Chris Chiu).
      
         - Prevent the PCMCIA library code from aborting suspend-to-idle due
           to noirq suspend failures resulting from incorrect assumptions
           (Rafael Wysocki).
      
         - Add coupled cpuidle supprt to the Exynos3250 platform (Marek
           Szyprowski).
      
         - Add new sysfs file to make it easier to specify the image storage
           location during hibernation (Mario Limonciello).
      
         - Add sysfs files for collecting suspend-to-idle usage and time
           statistics for CPU idle states (Rafael Wysocki).
      
         - Update the pm-graph utilities (Todd Brandt).
      
         - Reduce the kernel log noise related to reporting Low-power Idle
           constraings by the ACPI system suspend code (Rafael Wysocki).
      
         - Make it easier to distinguish dedicated wakeup IRQs in the
           /proc/interrupts output (Tony Lindgren).
      
         - Add the frequency table validation in cpufreq to the core and drop
           it from a number of cpufreq drivers (Viresh Kumar).
      
         - Drop "cooling-{min|max}-level" for CPU nodes from a couple of DT
           bindings (Viresh Kumar).
      
         - Clean up the CPU online error code path in the cpufreq core (Viresh
           Kumar).
      
         - Fix assorted issues in the SCPI, CPPC, mediatek and tegra186
           cpufreq drivers (Arnd Bergmann, Chunyu Hu, George Cherian, Viresh
           Kumar).
      
         - Drop memory allocation error messages from a few places in cpufreq
           and cpuildle drivers (Markus Elfring)"
      
      * tag 'pm-4.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (56 commits)
        ACPI / PM: Fix keyboard wakeup from suspend-to-idle on ASUS UX331UA
        cpufreq: CPPC: Use transition_delay_us depending transition_latency
        PM / hibernate: Change message when writing to /sys/power/resume
        PM / hibernate: Make passing hibernate offsets more friendly
        cpuidle: poll_state: Avoid invoking local_clock() too often
        PM: cpuidle/suspend: Add s2idle usage and time state attributes
        cpuidle: Enable coupled cpuidle support on Exynos3250 platform
        cpuidle: poll_state: Add time limit to poll_idle()
        cpufreq: tegra186: Don't validate the frequency table twice
        cpufreq: speedstep: Don't validate the frequency table twice
        cpufreq: sparc: Don't validate the frequency table twice
        cpufreq: sh: Don't validate the frequency table twice
        cpufreq: sfi: Don't validate the frequency table twice
        cpufreq: scpi: Don't validate the frequency table twice
        cpufreq: sc520: Don't validate the frequency table twice
        cpufreq: s3c24xx: Don't validate the frequency table twice
        cpufreq: qoirq: Don't validate the frequency table twice
        cpufreq: pxa: Don't validate the frequency table twice
        cpufreq: ppc_cbe: Don't validate the frequency table twice
        cpufreq: powernow: Don't validate the frequency table twice
        ...
      f2d28566
    • Linus Torvalds's avatar
      Merge tag 'acpi-4.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · be553754
      Linus Torvalds authored
      Pull ACPI updates from Rafael Wysocki:
       "These update the ACPICA code in the kernel to follow upstream revision
        20180313 which includes fixes related to the so-called module-level
        AML (mostly "if" type of statements outside of any methods) that
        should improve the handling of systems that load alternative SSDTs
        depending on the current configuration, for example, and event
        handling fixes related to disabling and enabling GPEs on system
        startup and on suspend/resume.
      
        Moreover, the ACPICA license boilerplate is replaced with SPDX license
        IDs which alone reduces the number of lines of ACPICA code in the
        kernel quite a bit.
      
        Also added is a new driver for the generic ACPI Time and Alarm Device
        (TAD). At the moment it only handles the most basic capabilities of
        the TAD, however.
      
        In addition to that the ACPI battery driver is improved to handle
        battery thresholds on ThinkPads, among other things, some bugs are
        fixed, a new backlight quirk is added and some documentation is
        updated.
      
        Specifics:
      
         - Update the in-kernel ACPICA code to upstream revision 20180313
           including:
            * Module-level AML code handling fixes and simplifications (Bob
              Moore, Erik Schmauss).
            * Fixes and cleanups related to messaging (Bob Moore).
            * Events handling fixes related to disabling and enabling GPEs
              (Erik Schmauss).
            * Introduction of SPDX license identifiers and removal of license
              boilerplate in multiple files (Erik Schmauss).
            * Assorted fixes and cleanups (Bob Moore, Erik Schmauss, Hans de
              Goede, Seunghun Han).
      
         - Add new basic driver for the ACPI Time and Alarm Device (Rafael
           Wysocki).
      
         - Modify the ACPI battery driver to support battery thresholds on
           Lenovo ThinkPads (Ognjen Galic, Colin Ian King).
      
         - Avoid reporting battery capacity over 100 in the ACPI battery
           driver in some cases (Laszlo Toth).
      
         - Make the kernel recognize an OEM _OSI string from Dell to avoid
           power management issues with NVidia GPUs in Dell platforms (Alex
           Hung).
      
         - Make the PCI IRQ management code handle missing _PRS cleanly (Alex
           Hung).
      
         - Fix uevent notifications related to device hotplut (Lee, Chun-Yi).
      
         - Prevent the ACPI PAD driver from leaking memory (Lenny Szubowicz).
      
         - Update the ACPI CPPC library code to include subspace IDs in the
           kernel messages logged by it (George Cherian).
      
         - Add backlight quirk for Samsung 670Z5E (Hans de Goede).
      
         - Add the NFIT and HMAT tables to the list of ACPI tables that can be
           overridden via initrd (Dan Williams).
      
         - Fix and clean up some ACPI documentation and Kconfig help language
           (Aishwarya Pant, Randy Dunlap).
      
         - Replace license boilerplate with an SPDX license ID in the ACPI
           PMIC operation region handling code (Rajmohan Mani)"
      
      * tag 'acpi-4.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (39 commits)
        ACPI: acpi_pad: Fix memory leak in power saving threads
        ACPI / video: Add quirk to force acpi-video backlight on Samsung 670Z5E
        ACPI: Add Time and Alarm Device (TAD) driver
        ACPI / scan: Send change uevent with offine environmental data
        ACPI / Kconfig: Update ACPI_PROCFS_POWER help text
        ACPI / OSI: Add OEM _OSI strings to disable NVidia RTD3
        ACPICA: Update version to 20180313
        ACPICA: Cleanup/simplify module-level code support
        ACPICA: Events: add a return on failure from acpi_hw_register_read
        ACPICA: adding SPDX headers
        ACPICA: Rename a global for clarity, no functional change
        ACPICA: macros: fix ACPI_ERROR_NAMESPACE macro
        ACPICA: Change a compile-time option to a runtime option
        ACPICA: Remove calling of _STA from acpi_get_object_info()
        ACPICA: AML Debug Object: Don't ignore output of zero-length strings
        ACPICA: Fix memory leak on unusual memory leak
        ACPICA: Events: Dispatch GPEs after enabling for the first time
        ACPICA: Events: Add parallel GPE handling support to fix potential redundant _Exx evaluations
        ACPICA: Events: Stop unconditionally clearing ACPI IRQs during suspend/resume
        ACPICA: acpi: acpica: fix acpi operand cache leak in nseval.c
        ...
      be553754
    • Linus Torvalds's avatar
      Merge branch 'syscalls-next' of git://git.kernel.org/pub/scm/linux/kernel/git/brodo/linux · 642e7fd2
      Linus Torvalds authored
      Pull removal of in-kernel calls to syscalls from Dominik Brodowski:
       "System calls are interaction points between userspace and the kernel.
        Therefore, system call functions such as sys_xyzzy() or
        compat_sys_xyzzy() should only be called from userspace via the
        syscall table, but not from elsewhere in the kernel.
      
        At least on 64-bit x86, it will likely be a hard requirement from
        v4.17 onwards to not call system call functions in the kernel: It is
        better to use use a different calling convention for system calls
        there, where struct pt_regs is decoded on-the-fly in a syscall wrapper
        which then hands processing over to the actual syscall function. This
        means that only those parameters which are actually needed for a
        specific syscall are passed on during syscall entry, instead of
        filling in six CPU registers with random user space content all the
        time (which may cause serious trouble down the call chain). Those
        x86-specific patches will be pushed through the x86 tree in the near
        future.
      
        Moreover, rules on how data may be accessed may differ between kernel
        data and user data. This is another reason why calling sys_xyzzy() is
        generally a bad idea, and -- at most -- acceptable in arch-specific
        code.
      
        This patchset removes all in-kernel calls to syscall functions in the
        kernel with the exception of arch/. On top of this, it cleans up the
        three places where many syscalls are referenced or prototyped, namely
        kernel/sys_ni.c, include/linux/syscalls.h and include/linux/compat.h"
      
      * 'syscalls-next' of git://git.kernel.org/pub/scm/linux/kernel/git/brodo/linux: (109 commits)
        bpf: whitelist all syscalls for error injection
        kernel/sys_ni: remove {sys_,sys_compat} from cond_syscall definitions
        kernel/sys_ni: sort cond_syscall() entries
        syscalls/x86: auto-create compat_sys_*() prototypes
        syscalls: sort syscall prototypes in include/linux/compat.h
        net: remove compat_sys_*() prototypes from net/compat.h
        syscalls: sort syscall prototypes in include/linux/syscalls.h
        kexec: move sys_kexec_load() prototype to syscalls.h
        x86/sigreturn: use SYSCALL_DEFINE0
        x86: fix sys_sigreturn() return type to be long, not unsigned long
        x86/ioport: add ksys_ioperm() helper; remove in-kernel calls to sys_ioperm()
        mm: add ksys_readahead() helper; remove in-kernel calls to sys_readahead()
        mm: add ksys_mmap_pgoff() helper; remove in-kernel calls to sys_mmap_pgoff()
        mm: add ksys_fadvise64_64() helper; remove in-kernel call to sys_fadvise64_64()
        fs: add ksys_fallocate() wrapper; remove in-kernel calls to sys_fallocate()
        fs: add ksys_p{read,write}64() helpers; remove in-kernel calls to syscalls
        fs: add ksys_truncate() wrapper; remove in-kernel calls to sys_truncate()
        fs: add ksys_sync_file_range helper(); remove in-kernel calls to syscall
        kernel: add ksys_setsid() helper; remove in-kernel call to sys_setsid()
        kernel: add ksys_unshare() helper; remove in-kernel calls to sys_unshare()
        ...
      642e7fd2
    • Omar Sandoval's avatar
      bitmap: fix memset optimization on big-endian systems · 21035965
      Omar Sandoval authored
      Commit 2a98dc02 ("include/linux/bitmap.h: turn bitmap_set and
      bitmap_clear into memset when possible") introduced an optimization to
      bitmap_{set,clear}() which uses memset() when the start and length are
      constants aligned to a byte.
      
      This is wrong on big-endian systems; our bitmaps are arrays of unsigned
      long, so bit n is not at byte n / 8 in memory.  This was caught by the
      Btrfs selftests, but the bitmap selftests also fail when run on a
      big-endian machine.
      
      We can still use memset if the start and length are aligned to an
      unsigned long, so do that on big-endian.  The same problem applies to
      the memcmp in bitmap_equal(), so fix it there, too.
      
      Fixes: 2a98dc02 ("include/linux/bitmap.h: turn bitmap_set and bitmap_clear into memset when possible")
      Fixes: 2c6deb01 ("bitmap: use memcmp optimisation in more situations")
      Cc: stable@kernel.org
      Reported-by: default avatar"Erhard F." <erhard_f@mailbox.org>
      Cc: Matthew Wilcox <mawilcox@microsoft.com>
      Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarOmar Sandoval <osandov@fb.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      21035965
    • Linus Torvalds's avatar
      Merge tag 'arch-removal' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic · f5a8eb63
      Linus Torvalds authored
      Pul removal of obsolete architecture ports from Arnd Bergmann:
       "This removes the entire architecture code for blackfin, cris, frv,
        m32r, metag, mn10300, score, and tile, including the associated device
        drivers.
      
        I have been working with the (former) maintainers for each one to
        ensure that my interpretation was right and the code is definitely
        unused in mainline kernels. Many had fond memories of working on the
        respective ports to start with and getting them included in upstream,
        but also saw no point in keeping the port alive without any users.
      
        In the end, it seems that while the eight architectures are extremely
        different, they all suffered the same fate: There was one company in
        charge of an SoC line, a CPU microarchitecture and a software
        ecosystem, which was more costly than licensing newer off-the-shelf
        CPU cores from a third party (typically ARM, MIPS, or RISC-V). It
        seems that all the SoC product lines are still around, but have not
        used the custom CPU architectures for several years at this point. In
        contrast, CPU instruction sets that remain popular and have actively
        maintained kernel ports tend to all be used across multiple licensees.
      
        [ See the new nds32 port merged in the previous commit for the next
          generation of "one company in charge of an SoC line, a CPU
          microarchitecture and a software ecosystem"   - Linus ]
      
        The removal came out of a discussion that is now documented at
        https://lwn.net/Articles/748074/. Unlike the original plans, I'm not
        marking any ports as deprecated but remove them all at once after I
        made sure that they are all unused. Some architectures (notably tile,
        mn10300, and blackfin) are still being shipped in products with old
        kernels, but those products will never be updated to newer kernel
        releases.
      
        After this series, we still have a few architectures without mainline
        gcc support:
      
         - unicore32 and hexagon both have very outdated gcc releases, but the
           maintainers promised to work on providing something newer. At least
           in case of hexagon, this will only be llvm, not gcc.
      
         - openrisc, risc-v and nds32 are still in the process of finishing
           their support or getting it added to mainline gcc in the first
           place. They all have patched gcc-7.3 ports that work to some
           degree, but complete upstream support won't happen before gcc-8.1.
           Csky posted their first kernel patch set last week, their situation
           will be similar
      
        [ Palmer Dabbelt points out that RISC-V support is in mainline gcc
          since gcc-7, although gcc-7.3.0 is the recommended minimum  - Linus ]"
      
      This really says it all:
      
       2498 files changed, 95 insertions(+), 467668 deletions(-)
      
      * tag 'arch-removal' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic: (74 commits)
        MAINTAINERS: UNICORE32: Change email account
        staging: iio: remove iio-trig-bfin-timer driver
        tty: hvc: remove tile driver
        tty: remove bfin_jtag_comm and hvc_bfin_jtag drivers
        serial: remove tile uart driver
        serial: remove m32r_sio driver
        serial: remove blackfin drivers
        serial: remove cris/etrax uart drivers
        usb: Remove Blackfin references in USB support
        usb: isp1362: remove blackfin arch glue
        usb: musb: remove blackfin port
        usb: host: remove tilegx platform glue
        pwm: remove pwm-bfin driver
        i2c: remove bfin-twi driver
        spi: remove blackfin related host drivers
        watchdog: remove bfin_wdt driver
        can: remove bfin_can driver
        mmc: remove bfin_sdh driver
        input: misc: remove blackfin rotary driver
        input: keyboard: remove bf54x driver
        ...
      f5a8eb63
    • Linus Torvalds's avatar
      Merge tag 'nds32-for-linus-4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/greentime/linux · c9297d28
      Linus Torvalds authored
      Pull nds32 architecture support from Greentime Hu:
       "This contains the core nds32 Linux port (including interrupt
        controller driver and timer driver), which has been through seven
        rounds of review on mailing list.
      
        It is able to boot to shell and passes most LTP-2017 testsuites in
        nds32 AE3XX platform:
      
          Total Tests: 1901
          Total Skipped Tests: 618
          Total Failures: 78"
      Reviewed-by: default avatarArnd Bergmann <arnd@arndb.de>
      
      * tag 'nds32-for-linus-4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/greentime/linux: (44 commits)
        nds32: To use the generic dump_stack()
        nds32: fix building failed if using elf toolchain.
        nios2: add ioremap_nocache declaration before include asm-generic/io.h.
        nds32: fix building failed if using older version gcc.
        dt-bindings: timer: Add andestech atcpit100 timer binding doc
        clocksource/drivers/atcpit100: VDSO support
        clocksource/drivers/atcpit100: Add andestech atcpit100 timer
        net: faraday add nds32 support.
        irqchip: Andestech Internal Vector Interrupt Controller driver
        dt-bindings: interrupt-controller: Andestech Internal Vector Interrupt Controller
        dt-bindings: nds32 SoC Bindings
        dt-bindings: nds32 L2 cache controller Bindings
        dt-bindings: nds32 CPU Bindings
        MAINTAINERS: Add nds32
        nds32: Build infrastructure
        nds32: defconfig
        nds32: Miscellaneous header files
        nds32: Device tree support
        nds32: Generic timers support
        nds32: Loadable modules
        ...
      c9297d28
    • Linus Torvalds's avatar
      Merge tag 'm68k-for-v4.17-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k · 17e3cd22
      Linus Torvalds authored
      Pull m68k updates from Geert Uytterhoeven:
      
       - Macintosh enhancements and fixes
      
       - Remove useless memory layout printing using hashed pointers
      
       - Add missing Amiga Zorro bus DMA mask
      
       - Small fixes and cleanups
      
       - Defconfig updates
      
      * tag 'm68k-for-v4.17-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
        m68k/mac: Remove bogus "FIXME" comment
        m68k/mac: Enable RTC for 100-series PowerBooks
        m68k/mac: Clean up whitespace and remove redundant parentheses
        m68k/defconfig: Update defconfigs for v4.16-rc5
        zorro: Set up z->dev.dma_mask for the DMA API
        m68k/time: Stop validating rtc_time in .read_time
        m68k/mm: Stop printing the virtual memory layout
        macintosh/via-pmu68k: Initialize PMU driver with setup_arch and arch_initcall
        m68k/mac: Fix apparent race condition in Baboon interrupt dispatch
        m68k/mac: Enable PDMA support for PowerBook 190
      17e3cd22
    • Linus Torvalds's avatar
      Merge branch 'efi-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · bc16d405
      Linus Torvalds authored
      Pull EFI updates from Ingo Molnar:
       "The main EFI changes in this cycle were:
      
         - Fix the apple-properties code (Andy Shevchenko)
      
         - Add WARN() on arm64 if UEFI Runtime Services corrupt the reserved
           x18 register (Ard Biesheuvel)
      
         - Use efi_switch_mm() on x86 instead of manipulating %cr3 directly
           (Sai Praneeth)
      
         - Fix early memremap leak in ESRT code (Ard Biesheuvel)
      
         - Switch to L"xxx" notation for wide string literals (Ard Biesheuvel)
      
         - ... plus misc other cleanups and bugfixes"
      
      * 'efi-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/efi: Use efi_switch_mm() rather than manually twiddling with %cr3
        x86/efi: Replace efi_pgd with efi_mm.pgd
        efi: Use string literals for efi_char16_t variable initializers
        efi/esrt: Fix handling of early ESRT table mapping
        efi: Use efi_mm in x86 as well as ARM
        efi: Make const array 'apple' static
        efi/apple-properties: Use memremap() instead of ioremap()
        efi: Reorder pr_notice() with add_device_randomness() call
        x86/efi: Replace GFP_ATOMIC with GFP_KERNEL in efi_query_variable_store()
        efi/arm64: Check whether x18 is preserved by runtime services calls
        efi/arm*: Stop printing addresses of virtual mappings
        efi/apple-properties: Remove redundant attribute initialization from unmarshal_key_value_pairs()
        efi/arm*: Only register page tables when they exist
      bc16d405
    • Linus Torvalds's avatar
      Merge branch 'x86-dma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 2fcd2b30
      Linus Torvalds authored
      Pull x86 dma mapping updates from Ingo Molnar:
       "This tree, by Christoph Hellwig, switches over the x86 architecture to
        the generic dma-direct and swiotlb code, and also unifies more of the
        dma-direct code between architectures. The now unused x86-only
        primitives are removed"
      
      * 'x86-dma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        dma-mapping: Don't clear GFP_ZERO in dma_alloc_attrs
        swiotlb: Make swiotlb_{alloc,free}_buffer depend on CONFIG_DMA_DIRECT_OPS
        dma/swiotlb: Remove swiotlb_{alloc,free}_coherent()
        dma/direct: Handle force decryption for DMA coherent buffers in common code
        dma/direct: Handle the memory encryption bit in common code
        dma/swiotlb: Remove swiotlb_set_mem_attributes()
        set_memory.h: Provide set_memory_{en,de}crypted() stubs
        x86/dma: Remove dma_alloc_coherent_gfp_flags()
        iommu/intel-iommu: Enable CONFIG_DMA_DIRECT_OPS=y and clean up intel_{alloc,free}_coherent()
        iommu/amd_iommu: Use CONFIG_DMA_DIRECT_OPS=y and dma_direct_{alloc,free}()
        x86/dma/amd_gart: Use dma_direct_{alloc,free}()
        x86/dma/amd_gart: Look at dev->coherent_dma_mask instead of GFP_DMA
        x86/dma: Use generic swiotlb_ops
        x86/dma: Use DMA-direct (CONFIG_DMA_DIRECT_OPS=y)
        x86/dma: Remove dma_alloc_coherent_mask()
      2fcd2b30
  2. 02 Apr, 2018 25 commits
    • Linus Torvalds's avatar
      Merge branch 'sched-wait-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · ce6eba3d
      Linus Torvalds authored
      Pull wait_var_event updates from Ingo Molnar:
       "This introduces the new wait_var_event() API, which is a more flexible
        waiting primitive than wait_on_atomic_t().
      
        All wait_on_atomic_t() users are migrated over to the new API and
        wait_on_atomic_t() is removed. The migration fixes one bug and should
        result in no functional changes for the other usecases"
      
      * 'sched-wait-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        sched/wait: Improve __var_waitqueue() code generation
        sched/wait: Remove the wait_on_atomic_t() API
        sched/wait, arch/mips: Fix and convert wait_on_atomic_t() usage to the new wait_var_event() API
        sched/wait, fs/ocfs2: Convert wait_on_atomic_t() usage to the new wait_var_event() API
        sched/wait, fs/nfs: Convert wait_on_atomic_t() usage to the new wait_var_event() API
        sched/wait, fs/fscache: Convert wait_on_atomic_t() usage to the new wait_var_event() API
        sched/wait, fs/btrfs: Convert wait_on_atomic_t() usage to the new wait_var_event() API
        sched/wait, fs/afs: Convert wait_on_atomic_t() usage to the new wait_var_event() API
        sched/wait, drivers/media: Convert wait_on_atomic_t() usage to the new wait_var_event() API
        sched/wait, drivers/drm: Convert wait_on_atomic_t() usage to the new wait_var_event() API
        sched/wait: Introduce wait_var_event()
      ce6eba3d
    • Linus Torvalds's avatar
      Merge branch 'x86-timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · a5532439
      Linus Torvalds authored
      Pull x86 timer updates from Ingo Molnar:
       "Two changes: add the new convert_art_ns_to_tsc() API for upcoming
        Intel Goldmont+ drivers, and remove the obsolete rdtscll() API"
      
      * 'x86-timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/tsc: Get rid of rdtscll()
        x86/tsc: Convert ART in nanoseconds to TSC
      a5532439
    • Linus Torvalds's avatar
      Merge branch 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · cea061e4
      Linus Torvalds authored
      Pull x86 platform updates from Ingo Molnar:
       "The main changes in this cycle were:
      
         - Add "Jailhouse" hypervisor support (Jan Kiszka)
      
         - Update DeviceTree support (Ivan Gorinov)
      
         - Improve DMI date handling (Andy Shevchenko)"
      
      * 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/PCI: Fix a potential regression when using dmi_get_bios_year()
        firmware/dmi_scan: Uninline dmi_get_bios_year() helper
        x86/devicetree: Use CPU description from Device Tree
        of/Documentation: Specify local APIC ID in "reg"
        MAINTAINERS: Add entry for Jailhouse
        x86/jailhouse: Allow to use PCI_MMCONFIG without ACPI
        x86: Consolidate PCI_MMCONFIG configs
        x86: Align x86_64 PCI_MMCONFIG with 32-bit variant
        x86/jailhouse: Enable PCI mmconfig access in inmates
        PCI: Scan all functions when running over Jailhouse
        jailhouse: Provide detection for non-x86 systems
        x86/devicetree: Fix device IRQ settings in DT
        x86/devicetree: Initialize device tree before using it
        pci: Simplify code by using the new dmi_get_bios_year() helper
        ACPI/sleep: Simplify code by using the new dmi_get_bios_year() helper
        x86/pci: Simplify code by using the new dmi_get_bios_year() helper
        dmi: Introduce the dmi_get_bios_year() helper function
        x86/platform/quark: Re-use DEFINE_SHOW_ATTRIBUTE() macro
        x86/platform/atom: Re-use DEFINE_SHOW_ATTRIBUTE() macro
      cea061e4
    • Linus Torvalds's avatar
      Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · d22fff81
      Linus Torvalds authored
      Pull x86 mm updates from Ingo Molnar:
      
       - Extend the memmap= boot parameter syntax to allow the redeclaration
         and dropping of existing ranges, and to support all e820 range types
         (Jan H. Schönherr)
      
       - Improve the W+X boot time security checks to remove false positive
         warnings on Xen (Jan Beulich)
      
       - Support booting as Xen PVH guest (Juergen Gross)
      
       - Improved 5-level paging (LA57) support, in particular it's possible
         now to have a single kernel image for both 4-level and 5-level
         hardware (Kirill A. Shutemov)
      
       - AMD hardware RAM encryption support (SME/SEV) fixes (Tom Lendacky)
      
       - Preparatory commits for hardware-encrypted RAM support on Intel CPUs.
         (Kirill A. Shutemov)
      
       - Improved Intel-MID support (Andy Shevchenko)
      
       - Show EFI page tables in page_tables debug files (Andy Lutomirski)
      
       - ... plus misc fixes and smaller cleanups
      
      * 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (56 commits)
        x86/cpu/tme: Fix spelling: "configuation" -> "configuration"
        x86/boot: Fix SEV boot failure from change to __PHYSICAL_MASK_SHIFT
        x86/mm: Update comment in detect_tme() regarding x86_phys_bits
        x86/mm/32: Remove unused node_memmap_size_bytes() & CONFIG_NEED_NODE_MEMMAP_SIZE logic
        x86/mm: Remove pointless checks in vmalloc_fault
        x86/platform/intel-mid: Add special handling for ACPI HW reduced platforms
        ACPI, x86/boot: Introduce the ->reduced_hw_early_init() ACPI callback
        ACPI, x86/boot: Split out acpi_generic_reduce_hw_init() and export
        x86/pconfig: Provide defines and helper to run MKTME_KEY_PROG leaf
        x86/pconfig: Detect PCONFIG targets
        x86/tme: Detect if TME and MKTME is activated by BIOS
        x86/boot/compressed/64: Handle 5-level paging boot if kernel is above 4G
        x86/boot/compressed/64: Use page table in trampoline memory
        x86/boot/compressed/64: Use stack from trampoline memory
        x86/boot/compressed/64: Make sure we have a 32-bit code segment
        x86/mm: Do not use paravirtualized calls in native_set_p4d()
        kdump, vmcoreinfo: Export pgtable_l5_enabled value
        x86/boot/compressed/64: Prepare new top-level page table for trampoline
        x86/boot/compressed/64: Set up trampoline memory
        x86/boot/compressed/64: Save and restore trampoline memory
        ...
      d22fff81
    • Linus Torvalds's avatar
      Merge branch 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 986b37c0
      Linus Torvalds authored
      Pull x86 cleanups and msr updates from Ingo Molnar:
       "The main change is a performance/latency improvement to /dev/msr
        access. The rest are misc cleanups"
      
      * 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/msr: Make rdmsrl_safe_on_cpu() scheduling safe as well
        x86/cpuid: Allow cpuid_read() to schedule
        x86/msr: Allow rdmsr_safe_on_cpu() to schedule
        x86/rtc: Stop using deprecated functions
        x86/dumpstack: Unify show_regs()
        x86/fault: Do not print IP in show_fault_oops()
        x86/MSR: Move native_* variants to msr.h
      986b37c0
    • Linus Torvalds's avatar
      Merge branch 'x86-build-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · e68b4bad
      Linus Torvalds authored
      Pull x86 build updates from Ingo Molnar:
       "The biggest change is the forcing of asm-goto support on x86, which
        effectively increases the GCC minimum supported version to gcc-4.5 (on
        x86)"
      
      * 'x86-build-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/build: Don't pass in -D__KERNEL__ multiple times
        x86: Remove FAST_FEATURE_TESTS
        x86: Force asm-goto
        x86/build: Drop superfluous ALIGN from the linker script
      e68b4bad
    • Linus Torvalds's avatar
      Merge branch 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 5e46caf6
      Linus Torvalds authored
      Pull x86 asm fixlets from Ingo Molnar:
       "A clobber list fix and cleanups"
      
      * 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/asm: Trim clear_page.S includes
        x86/asm: Clobber flags in clear_page()
      5e46caf6
    • Linus Torvalds's avatar
      Merge branch 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 2451d1e5
      Linus Torvalds authored
      Pull x86 apic updates from Ingo Molnar:
       "The main x86 APIC/IOAPIC changes in this cycle were:
      
         - Robustify kexec support to more carefully restore IRQ hardware
           state before calling into kexec/kdump kernels. (Baoquan He)
      
         - Clean up the local APIC code a bit (Dou Liyang)
      
         - Remove unused callbacks (David Rientjes)"
      
      * 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/apic: Finish removing unused callbacks
        x86/apic: Drop logical_smp_processor_id() inline
        x86/apic: Modernize the pending interrupt code
        x86/apic: Move pending interrupt check code into it's own function
        x86/apic: Set up through-local-APIC mode on the boot CPU if 'noapic' specified
        x86/apic: Rename variables and functions related to x86_io_apic_ops
        x86/apic: Remove the (now) unused disable_IO_APIC() function
        x86/apic: Fix restoring boot IRQ mode in reboot and kexec/kdump
        x86/apic: Split disable_IO_APIC() into two functions to fix CONFIG_KEXEC_JUMP=y
        x86/apic: Split out restore_boot_irq_mode() from disable_IO_APIC()
        x86/apic: Make setup_local_APIC() static
        x86/apic: Simplify init_bsp_APIC() usage
        x86/x2apic: Mark set_x2apic_phys_mode() as __init
      2451d1e5
    • Linus Torvalds's avatar
      Merge branch 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 67dbfc14
      Linus Torvalds authored
      Pull SMP hotplug updates from Ingo Molnar:
       "Simplify the CPU hot-plug state machine"
      
      * 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        cpu/hotplug: Fix unused function warning
        cpu/hotplug: Merge cpuhp_bp_states and cpuhp_ap_states
      67dbfc14
    • Linus Torvalds's avatar
      Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 46e0d28b
      Linus Torvalds authored
      Pull scheduler updates from Ingo Molnar:
       "The main scheduler changes in this cycle were:
      
         - NUMA balancing improvements (Mel Gorman)
      
         - Further load tracking improvements (Patrick Bellasi)
      
         - Various NOHZ balancing cleanups and optimizations (Peter Zijlstra)
      
         - Improve blocked load handling, in particular we can now reduce and
           eventually stop periodic load updates on 'very idle' CPUs. (Vincent
           Guittot)
      
         - On isolated CPUs offload the final 1Hz scheduler tick as well, plus
           related cleanups and reorganization. (Frederic Weisbecker)
      
         - Core scheduler code cleanups (Ingo Molnar)"
      
      * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (45 commits)
        sched/core: Update preempt_notifier_key to modern API
        sched/cpufreq: Rate limits for SCHED_DEADLINE
        sched/fair: Update util_est only on util_avg updates
        sched/cpufreq/schedutil: Use util_est for OPP selection
        sched/fair: Use util_est in LB and WU paths
        sched/fair: Add util_est on top of PELT
        sched/core: Remove TASK_ALL
        sched/completions: Use bool in try_wait_for_completion()
        sched/fair: Update blocked load when newly idle
        sched/fair: Move idle_balance()
        sched/nohz: Merge CONFIG_NO_HZ_COMMON blocks
        sched/fair: Move rebalance_domains()
        sched/nohz: Optimize nohz_idle_balance()
        sched/fair: Reduce the periodic update duration
        sched/nohz: Stop NOHZ stats when decayed
        sched/cpufreq: Provide migration hint
        sched/nohz: Clean up nohz enter/exit
        sched/fair: Update blocked load from NEWIDLE
        sched/fair: Add NOHZ stats balancing
        sched/fair: Restructure nohz_balance_kick()
        ...
      46e0d28b
    • Linus Torvalds's avatar
      Merge branch 'ras-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 86bbbeba
      Linus Torvalds authored
      Pull x86 RAS updates from Ingo Molnar:
       "The main changes in this cycle were:
      
         - AMD MCE support/decoding improvements (Yazen Ghannam)
      
         - general MCE header cleanups and reorganization (Borislav Petkov)"
      
      * 'ras-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        Revert "x86/mce/AMD: Collect error info even if valid bits are not set"
        x86/MCE: Cleanup and complete struct mce fields definitions
        x86/mce/AMD: Carve out SMCA get_block_address() code
        x86/mce/AMD: Get address from already initialized block
        x86/mce/AMD, EDAC/mce_amd: Enumerate Reserved SMCA bank type
        x86/mce/AMD: Pass the bank number to smca_get_bank_type()
        x86/mce/AMD: Collect error info even if valid bits are not set
        x86/mce: Issue the 'mcelog --ascii' message only on !AMD
        x86/mce: Convert 'struct mca_config' bools to a bitfield
        x86/mce: Put private structures and definitions into the internal header
      86bbbeba
    • Howard McLauchlan's avatar
      bpf: whitelist all syscalls for error injection · c9a21195
      Howard McLauchlan authored
      Error injection is a useful mechanism to fail arbitrary kernel
      functions. However, it is often hard to guarantee an error propagates
      appropriately to user space programs. By injecting into syscalls, we can
      return arbitrary values to user space directly; this increases
      flexibility and robustness in testing, allowing us to test user space
      error paths effectively.
      
      The following script, for example, fails calls to sys_open() from a
      given pid:
      
      from bcc import BPF
      from sys import argv
      
      pid = argv[1]
      
      prog = r"""
      
      int kprobe__SyS_open(struct pt_regs *ctx, const char *pathname, int flags)
      {
          u32 pid = bpf_get_current_pid_tgid();
          if (pid == %s)
              bpf_override_return(ctx, -ENOMEM);
          return 0;
      }
      """ % pid
      
      b = BPF(text=prog)
      while 1:
          b.perf_buffer_poll()
      
      This patch whitelists all syscalls defined with SYSCALL_DEFINE and
      COMPAT_SYSCALL_DEFINE for error injection. These changes are not
      intended to be considered stable, and would normally be configured off.
      Signed-off-by: default avatarHoward McLauchlan <hmclauchlan@fb.com>
      Signed-off-by: default avatarDominik Brodowski <linux@dominikbrodowski.net>
      c9a21195
    • Dominik Brodowski's avatar
      kernel/sys_ni: remove {sys_,sys_compat} from cond_syscall definitions · 67a7acd3
      Dominik Brodowski authored
      This keeps it in line with the SYSCALL_DEFINEx() / COMPAT_SYSCALL_DEFINEx()
      calling convention.
      Signed-off-by: default avatarDominik Brodowski <linux@dominikbrodowski.net>
      67a7acd3
    • Dominik Brodowski's avatar
      kernel/sys_ni: sort cond_syscall() entries · 70dd4b31
      Dominik Brodowski authored
      Shuffle the cond_syscall() entries in kernel/sys_ni.c around so that they
      are kept in the same order as in include/uapi/asm-generic/unistd.h. For
      better structuring, add the same comments as in that file, but keep a few
      additional comments and extend the commentary where it seems useful.
      Signed-off-by: default avatarDominik Brodowski <linux@dominikbrodowski.net>
      70dd4b31
    • Dominik Brodowski's avatar
      syscalls/x86: auto-create compat_sys_*() prototypes · 3e2052e5
      Dominik Brodowski authored
      compat_sys_*() functions are no longer called from within the kernel on
      x86 except from the system call table. Linking the system call does not
      require compat_sys_*() function prototypes at least on x86. Therefore,
      generate compat_sys_*() prototypes on-the-fly within the
      COMPAT_SYSCALL_DEFINEx() macro, and remove x86-specific prototypes from
      various header files.
      Suggested-by: default avatarAndy Lutomirski <luto@kernel.org>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: David S. Miller <davem@davemloft.net>
      Cc: netdev@vger.kernel.org
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: x86@kernel.org
      Signed-off-by: default avatarDominik Brodowski <linux@dominikbrodowski.net>
      3e2052e5
    • Dominik Brodowski's avatar
      syscalls: sort syscall prototypes in include/linux/compat.h · c679a089
      Dominik Brodowski authored
      Shuffle the syscall prototypes in include/linux/compat.h around so
      that they are kept in the same order as in
      include/uapi/asm-generic/unistd.h. The individual entries are kept
      the same, and neither modified to bring them in line with kernel coding
      style nor wrapped in proper ifdefs -- as an exception to this, add the
      prefix "asmlinkage" where it was missing.
      
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarDominik Brodowski <linux@dominikbrodowski.net>
      c679a089
    • Dominik Brodowski's avatar
      net: remove compat_sys_*() prototypes from net/compat.h · 0621150d
      Dominik Brodowski authored
      As the syscall functions should only be called from the system call table
      but not from elsewhere in the kernel, it is sufficient that they are
      defined in linux/compat.h.
      
      Cc: David S. Miller <davem@davemloft.net>
      Cc: netdev@vger.kernel.org
      Signed-off-by: default avatarDominik Brodowski <linux@dominikbrodowski.net>
      0621150d
    • Dominik Brodowski's avatar
      syscalls: sort syscall prototypes in include/linux/syscalls.h · 3c1c456f
      Dominik Brodowski authored
      Shuffle the syscall prototypes in include/linux/syscalls.h around so
      that they are kept in the same order as in
      include/uapi/asm-generic/unistd.h. The individual entries are kept
      the same, and neither modified to bring them in line with kernel coding
      style nor wrapped in proper ifdefs.
      
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarDominik Brodowski <linux@dominikbrodowski.net>
      3c1c456f
    • Dominik Brodowski's avatar
      kexec: move sys_kexec_load() prototype to syscalls.h · 1bec510a
      Dominik Brodowski authored
      As the syscall function should only be called from the system call table
      but not from elsewhere in the kernel, move the prototype for
      sys_kexec_load() to include/syscall.h.
      
      Cc: Eric Biederman <ebiederm@xmission.com>
      Cc: kexec@lists.infradead.org
      Signed-off-by: default avatarDominik Brodowski <linux@dominikbrodowski.net>
      1bec510a
    • Tautschnig, Michael's avatar
      x86/sigreturn: use SYSCALL_DEFINE0 · 4c8ca51a
      Tautschnig, Michael authored
      All definitions of syscalls in x86 except for those patched here have
      already been using the appropriate SYSCALL_DEFINE*.
      Signed-off-by: default avatarMichael Tautschnig <tautschn@amazon.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: H. Peter Anvin <hpa@zytor.com>
      Cc: Jaswinder Singh <jaswinder@infradead.org>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: x86@kernel.org
      Reviewed-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarDominik Brodowski <linux@dominikbrodowski.net>
      4c8ca51a
    • Dominik Brodowski's avatar
      x86: fix sys_sigreturn() return type to be long, not unsigned long · 025bd390
      Dominik Brodowski authored
      Same as with other system calls, sys_sigreturn() should return a value
      of type long, not unsigned long. This also matches the behaviour for
      IA32_EMULATION, see sys32_sigreturn() in arch/x86/ia32/ia32_signal.c .
      
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Slaby <jslaby@suse.com>
      Cc: x86@kernel.org
      Cc: Michael Tautschnig <tautschn@amazon.co.uk>
      Reviewed-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarDominik Brodowski <linux@dominikbrodowski.net>
      025bd390
    • Dominik Brodowski's avatar
      x86/ioport: add ksys_ioperm() helper; remove in-kernel calls to sys_ioperm() · 66f4e88c
      Dominik Brodowski authored
      Using this helper allows us to avoid the in-kernel calls to the
      sys_ioperm() syscall. The ksys_ prefix denotes that this function is meant
      as a drop-in replacement for the syscall. In particular, it uses the same
      calling convention as sys_ioperm().
      
      This patch is part of a series which removes in-kernel calls to syscalls.
      On this basis, the syscall entry path can be streamlined. For details, see
      http://lkml.kernel.org/r/20180325162527.GA17492@light.dominikbrodowski.net
      
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Slaby <jslaby@suse.com>
      Cc: x86@kernel.org
      Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Reviewed-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarDominik Brodowski <linux@dominikbrodowski.net>
      66f4e88c
    • Dominik Brodowski's avatar
      mm: add ksys_readahead() helper; remove in-kernel calls to sys_readahead() · c7b95d51
      Dominik Brodowski authored
      Using this helper allows us to avoid the in-kernel calls to the
      sys_readahead() syscall. The ksys_ prefix denotes that this function is
      meant as a drop-in replacement for the syscall. In particular, it uses the
      same calling convention as sys_readahead().
      
      This patch is part of a series which removes in-kernel calls to syscalls.
      On this basis, the syscall entry path can be streamlined. For details, see
      http://lkml.kernel.org/r/20180325162527.GA17492@light.dominikbrodowski.net
      
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: linux-mm@kvack.org
      Signed-off-by: default avatarDominik Brodowski <linux@dominikbrodowski.net>
      c7b95d51
    • Dominik Brodowski's avatar
      mm: add ksys_mmap_pgoff() helper; remove in-kernel calls to sys_mmap_pgoff() · a90f590a
      Dominik Brodowski authored
      Using this helper allows us to avoid the in-kernel calls to the
      sys_mmap_pgoff() syscall. The ksys_ prefix denotes that this function is
      meant as a drop-in replacement for the syscall. In particular, it uses the
      same calling convention as sys_mmap_pgoff().
      
      This patch is part of a series which removes in-kernel calls to syscalls.
      On this basis, the syscall entry path can be streamlined. For details, see
      http://lkml.kernel.org/r/20180325162527.GA17492@light.dominikbrodowski.net
      
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: linux-mm@kvack.org
      Signed-off-by: default avatarDominik Brodowski <linux@dominikbrodowski.net>
      a90f590a
    • Dominik Brodowski's avatar
      mm: add ksys_fadvise64_64() helper; remove in-kernel call to sys_fadvise64_64() · 9d5b7c95
      Dominik Brodowski authored
      Using the ksys_fadvise64_64() helper allows us to avoid the in-kernel
      calls to the sys_fadvise64_64() syscall. The ksys_ prefix denotes that
      this function is meant as a drop-in replacement for the syscall. In
      particular, it uses the same calling convention as ksys_fadvise64_64().
      
      Some compat stubs called sys_fadvise64(), which then just passed through
      the arguments to sys_fadvise64_64(). Get rid of this indirection, and call
      ksys_fadvise64_64() directly.
      
      This patch is part of a series which removes in-kernel calls to syscalls.
      On this basis, the syscall entry path can be streamlined. For details, see
      http://lkml.kernel.org/r/20180325162527.GA17492@light.dominikbrodowski.net
      
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: linux-mm@kvack.org
      Signed-off-by: default avatarDominik Brodowski <linux@dominikbrodowski.net>
      9d5b7c95