11 Jul, 2019

10 commits

  • RAPL MMIO interface uses 64 bit registers, thus force use 64 bit register
    for all the RAPL code.

    Reviewed-by: Pandruvada, Srinivas
    Tested-by: Pandruvada, Srinivas
    Signed-off-by: Zhang Rui
    Signed-off-by: Rafael J. Wysocki

    Zhang Rui
     
  • Split intel_rapl.c to intel_rapl_common.c and intel_rapl_msr.c, where
    intel_rapl_common.c contains the common code that can be used by both MSR
    and MMIO interface.
    intel_rapl_msr.c contains the implementation of RAPL MSR interface.

    Reviewed-by: Pandruvada, Srinivas
    Tested-by: Pandruvada, Srinivas
    Signed-off-by: Zhang Rui
    Signed-off-by: Rafael J. Wysocki

    Zhang Rui
     
  • There are still some places in the common code that have hardcoded
    MSR access, convert them to follow the abstracted register access.

    Reviewed-by: Pandruvada, Srinivas
    Tested-by: Pandruvada, Srinivas
    Signed-off-by: Zhang Rui
    Signed-off-by: Rafael J. Wysocki

    Zhang Rui
     
  • Previously, there are three functions:
    rapl_register_psys(), which registers platform rapl domain.
    rapl_register_powercap(), which registers powercap control type.
    rapl_unregsiter_powercap(), which unregisters platform rapl domain and
    powercap control type.

    This is confusing as the function name does not describe what it does
    clearly.

    With this patch, the three functions are removed, and two new functions
    rapl_register_platform_domain()/rapl_unregister_platform_domain() are
    introduced instead, and they do exactly what their function name describes.

    Plus, as part of the common code, hardcoded MSR accesses in these functions
    are converted to follow the abstracted register access.

    Reviewed-by: Pandruvada, Srinivas
    Tested-by: Pandruvada, Srinivas
    Signed-off-by: Zhang Rui
    Signed-off-by: Rafael J. Wysocki

    Zhang Rui
     
  • MSR and MMIO RAPL interfaces have different ways to access the registers,
    thus in order to abstract the register access operations, two callbacks,
    .read_raw()/.write_raw() are introduced, and they should be implemented by
    MSR RAPL and MMIO RAPL interface driver respectly.

    This patch implements them for the MSR I/F only.

    Reviewed-by: Pandruvada, Srinivas
    Tested-by: Pandruvada, Srinivas
    Signed-off-by: Zhang Rui
    Signed-off-by: Rafael J. Wysocki

    Zhang Rui
     
  • MSR and MMIO RAPL interface have different sets of registers, thus the
    RAPL register address should be obtained from interface specific
    structure, i.e. struct rapl_if_private, instead.

    Reviewed-by: Pandruvada, Srinivas
    Tested-by: Pandruvada, Srinivas
    Signed-off-by: Zhang Rui
    Signed-off-by: Rafael J. Wysocki

    Zhang Rui
     
  • Introduce a new structure, rapl_if_private, to save the private data
    for different RAPL Interface.

    Reviewed-by: Pandruvada, Srinivas
    Tested-by: Pandruvada, Srinivas
    Signed-off-by: Zhang Rui
    Signed-off-by: Rafael J. Wysocki

    Zhang Rui
     
  • Create a new header file for the common definitions that might be used
    by different RAPL Interface.

    Reviewed-by: Pandruvada, Srinivas
    Tested-by: Pandruvada, Srinivas
    Signed-off-by: Zhang Rui
    Signed-off-by: Rafael J. Wysocki

    Zhang Rui
     
  • enum rapl_domain_reg_id is defined for the RAPL registers for each RAPL
    domain, thus use it whenever possible.

    Reviewed-by: Pandruvada, Srinivas
    Tested-by: Pandruvada, Srinivas
    Signed-off-by: Zhang Rui
    Signed-off-by: Rafael J. Wysocki

    Zhang Rui
     
  • To support both MSR and MMIO Interface, use 'reg' to discribe RAPL
    registers instead of 'msr'.

    Reviewed-by: Pandruvada, Srinivas
    Tested-by: Pandruvada, Srinivas
    Signed-off-by: Zhang Rui
    Signed-off-by: Rafael J. Wysocki

    Zhang Rui
     

10 Jul, 2019

11 commits

  • Pull power management updates from Rafael Wysocki:
    "These update PCI and ACPI power management (improved handling of ACPI
    power resources and PCIe link delays, fixes related to corner cases,
    hibernation handling rework), fix and extend the operating performance
    points (OPP) framework, add new cpufreq drivers for Raspberry Pi and
    imx8m chips, update some other cpufreq drivers, clean up assorted
    pieces of PM code and documentation and update tools.

    Specifics:

    - Improve the handling of shared ACPI power resources in the PCI bus
    type layer (Mika Westerberg).

    - Make the PCI layer take link delays required by the PCIe spec into
    account as appropriate and avoid polling devices in D3cold for PME
    (Mika Westerberg).

    - Fix some corner case issues in ACPI device power management and in
    the PCI bus type layer, optimiza and clean up the handling of
    runtime-suspended PCI devices during system-wide transitions to
    sleep states (Rafael Wysocki).

    - Rework hibernation handling in the ACPI core and the PCI bus type
    to resume runtime-suspended devices before hibernation (which
    allows some functional problems to be avoided) and fix some ACPI
    power management issues related to hiberation (Rafael Wysocki).

    - Extend the operating performance points (OPP) framework to support
    a wider range of devices (Rajendra Nayak, Stehpen Boyd).

    - Fix issues related to genpd_virt_devs and issues with platforms
    using the set_opp() callback in the OPP framework (Viresh Kumar,
    Dmitry Osipenko).

    - Add new cpufreq driver for Raspberry Pi (Nicolas Saenz Julienne).

    - Add new cpufreq driver for imx8m and imx7d chips (Leonard Crestez).

    - Fix and clean up the pcc-cpufreq, brcmstb-avs-cpufreq, s5pv210, and
    armada-37xx cpufreq drivers (David Arcari, Florian Fainelli, Paweł
    Chmiel, YueHaibing).

    - Clean up and fix the cpufreq core (Viresh Kumar, Daniel Lezcano).

    - Fix minor issue in the ACPI system sleep support code and export
    one function from it (Lenny Szubowicz, Dexuan Cui).

    - Clean up assorted pieces of PM code and documentation (Kefeng Wang,
    Andy Shevchenko, Bart Van Assche, Greg Kroah-Hartman, Fuqian Huang,
    Geert Uytterhoeven, Mathieu Malaterre, Rafael Wysocki).

    - Update the pm-graph utility to v5.4 (Todd Brandt).

    - Fix and clean up the cpupower utility (Abhishek Goel, Nick Black)"

    * tag 'pm-5.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (57 commits)
    ACPI: PM: Make acpi_sleep_state_supported() non-static
    PM: sleep: Drop dev_pm_skip_next_resume_phases()
    ACPI: PM: Unexport acpi_device_get_power()
    Documentation: ABI: power: Add missing newline at end of file
    ACPI: PM: Drop unused function and function header
    ACPI: PM: Introduce "poweroff" callbacks for ACPI PM domain and LPSS
    ACPI: PM: Simplify and fix PM domain hibernation callbacks
    PCI: PM: Simplify bus-level hibernation callbacks
    PM: ACPI/PCI: Resume all devices during hibernation
    cpufreq: Avoid calling cpufreq_verify_current_freq() from handle_update()
    cpufreq: Consolidate cpufreq_update_current_freq() and __cpufreq_get()
    kernel: power: swap: use kzalloc() instead of kmalloc() followed by memset()
    cpufreq: Don't skip frequency validation for has_target() drivers
    PCI: PM/ACPI: Refresh all stale power state data in pci_pm_complete()
    PCI / ACPI: Add _PR0 dependent devices
    ACPI / PM: Introduce concept of a _PR0 dependent device
    PCI / ACPI: Use cached ACPI device state to get PCI device power state
    ACPI: PM: Allow transitions to D0 to occur in special cases
    ACPI: PM: Avoid evaluating _PS3 on transitions from D3hot to D3cold
    cpufreq: Use has_target() instead of !setpolicy
    ...

    Linus Torvalds
     
  • Pull sound updates from Takashi Iwai:
    "Many updates in this development cycle are found in ASoC where it got
    a wide range of changes for the continued refactoring.

    Some highlights are below.

    ASoC:

    - Continued refactoring work by Morimoto-san toward the full
    componentization; the changes are seen allover the places

    - Support for force disconnecting muxes in DAPM

    - Continued development of ASoC Intel SOF stuff

    - New drivers for Cirrus Logic CS47L35, CS47L85 and CS47L90, Conexant
    CX2072X, Realtek RT1011 and RT1308

    HD-audio:

    - More fixes and adjustments for ASoC SOF HD-audio

    - Fix for resume problem on some Realtek codecs

    USB-audio:

    - A few fixes for the issues reported by syzbot USB fuzzer

    - Fix for UAC2 extension unit parser

    - Quirks for Line6 Helix, Emgaic Unitor 8

    FireWire:

    - Lots of code refactoring and fixes in most of its components"

    * tag 'sound-5.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (626 commits)
    ALSA: firewire-lib: code refactoring for local variables
    ALSA: firewire-lib: code refactoring for post operation to data block counter
    ALSA: firewire-lib: code refactoring for error path of parser for CIP header
    ALSA: firewire-lib: fix different data block counter between probed event and transferred isochronous packet
    ALSA: firewire-lib: fix initial value of data block count for IR context without CIP_DBC_IS_END_EVENT
    ALSA: firewire-lib/fireface: fix initial value of data block counter for IR context with CIP_NO_HEADER
    ALSA: firewire-lib: fix invalid length of rx packet payload for tracepoint events
    ALSA: usb-audio: fix Line6 Helix audio format rates
    firewire-motu: fix wrong reference count for stream functionality at error path of rawmidi interface
    ALSA: firewire-digi00x: fix wrong reference count for stream functionality at error path of rawmidi interface
    ALSA: dice: fix wrong reference count for stream functionality at error path of rawmidi interface
    ALSA: oxfw: fix wrong reference count for stream functionality at error path of rawmidi interface
    ALSA: fireworks: fix wrong reference count for stream functionality at error path of rawmidi interface
    ALSA: bebob: fix wrong reference count for stream functionality at error path of rawmidi interface
    ASoC: SOF: Intel: implement runtime idle for CNL/APL
    ASoC: SOF: add runtime idle callback
    ASoC: hdac_hdmi: report codec link up/down status to bus
    ASoC: SOF: debug: fix possible memory leak in sof_dfsentry_write()
    ASoC: sunxi: sun50i-codec-analog: Add earpiece
    ASoC: rt5665: remove redundant assignment to variable idx
    ...

    Linus Torvalds
     
  • Pull fbdev updates from Bartlomiej Zolnierkiewicz:

    - remove fbdev notifier usage for fbcon (as prep work to clean up the
    fbcon locking), add locking checks in vt/console code and make
    assorted cleanups in fbdev and backlight code (Daniel Vetter)

    - add COMPILE_TEST support to atmel_lcdfb, da8xx-fb, gbefb, imxfb,
    pvr2fb and pxa168fb drivers (me)

    - fix DMA API abuse in au1200fb and jz4740_fb drivers (Christoph
    Hellwig)

    - add check for new BGRT status field rotation bits in efifb driver
    (Hans de Goede)

    - mark expected switch fall-throughs in s3c-fb driver (Gustavo A. R.
    Silva)

    - remove fbdev mxsfb driver in favour of the drm version (Fabio
    Estevam)

    - remove broken rfbi code from omap2fb driver (me)

    - misc fixes (Arnd Bergmann, Shobhit Kukreti, Wei Yongjun, me)

    - misc cleanups (Gustavo A. R. Silva, Colin Ian King, me)

    * tag 'fbdev-v5.3' of git://github.com/bzolnier/linux: (62 commits)
    video: fbdev: imxfb: fix a typo in imxfb_probe()
    video: fbdev: s3c-fb: Mark expected switch fall-throughs
    video: fbdev: s3c-fb: fix sparse warnings about using incorrect types
    video: fbdev: don't print error message on framebuffer_alloc() failure
    video: fbdev: intelfb: return -ENOMEM on framebuffer_alloc() failure
    video: fbdev: s3c-fb: return -ENOMEM on framebuffer_alloc() failure
    vga_switcheroo: Depend upon fbcon being built-in, if enabled
    video: fbdev: omap2: remove rfbi
    video: fbdev: atmel_lcdfb: remove redundant initialization to variable ret
    video: fbdev-MMP: Use struct_size() in devm_kzalloc()
    video: fbdev: controlfb: fix warnings about comparing pointer to 0
    efifb: BGRT: Add check for new BGRT status field rotation bits
    jz4740_fb: fix DMA API abuse
    video: fbdev: pvr2fb: fix link error for pvr2fb_pci_exit
    video: fbdev: s3c-fb: add COMPILE_TEST support
    video: fbdev: imxfb: fix sparse warnings about using incorrect types
    video: fbdev: pvr2fb: fix build warning when compiling as module
    fbcon: Export fbcon_update_vcs
    backlight: simplify lcd notifier
    staging/olpc_dcon: Add drm conversion to TODO
    ...

    Linus Torvalds
     
  • Pull media updates from Mauro Carvalho Chehab:

    - new Atmel microship ISC driver

    - coda has gained support for mpeg2 and mpeg4

    - cxusb gained support for analog TV

    - rockchip staging driver was split into two separate staging drivers

    - added a new staging driver for Allegro DVT video IP core

    - added a new staging driver for Amlogic Meson video decoder

    - lots of improvements and cleanups

    * tag 'media/v5.3-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (398 commits)
    media: allegro: use new v4l2_m2m_ioctl_try_encoder_cmd funcs
    media: doc-rst: Fix typos
    media: radio-raremono: change devm_k*alloc to k*alloc
    media: stv0297: fix frequency range limit
    media: rc: Prefer KEY_NUMERIC_* for number buttons on remotes
    media: dvb_frontend: split dvb_frontend_handle_ioctl function
    media: mceusb: disable "nonsensical irdata" messages
    media: rc: remove redundant dev_err message
    media: cec-notifier: add new notifier functions
    media: cec: add struct cec_connector_info support
    media: cec-notifier: rename variables, check kstrdup and n->conn_name
    media: MAINTAINERS: Add maintainers for Media Controller
    media: staging: media: tegra-vde: Defer dmabuf's unmapping
    media: staging: media: tegra-vde: Add IOMMU support
    media: hdpvr: fix locking and a missing msleep
    media: v4l2: Test type instead of cfg->type in v4l2_ctrl_new_custom()
    media: atmel: atmel-isc: fix i386 build error
    media: v4l2-ctrl: Move compound control initialization
    media: hantro: Use vb2_get_buffer
    media: pci: cx88: Change the type of 'missed' to u64
    ...

    Linus Torvalds
     
  • Pull EDAC updates from Tony Luck:
    "All the bits that Boris had queued in his tree plus four patches to
    add support for Intel Icelake Xeon and then fix a few corner cases"

    * tag 'please-pull-for_5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras:
    EDAC: Fix global-out-of-bounds write when setting edac_mc_poll_msec
    EDAC, skx, i10nm: Fix source ID register offset
    EDAC, i10nm: Check ECC enabling status per channel
    EDAC, i10nm: Add Intel additional Ice-Lake support
    EDAC: Make edac_debugfs_create_x*() return void
    EDAC/aspeed: Remove set but not used variable 'np'
    EDAC/ie31200: Reformat PCI device table
    EDAC/ie31200: Add Intel Coffee Lake CPU support
    EDAC/sifive: Add EDAC platform driver for SiFive SoCs
    EDAC/sb_edac: Remove redundant update of tad_base
    arm64: dts: stratix10: Add SDMMC EDAC node
    EDAC/altera: Add Stratix10 SDMMC support
    arm64: dts: stratix10: Add OCRAM EDAC node
    EDAC/altera: Add Stratix10 OCRAM ECC support
    EDAC/sysfs: Drop device references properly
    EDAC/sysfs: Fix memory leak when creating a csrow object

    Linus Torvalds
     
  • Pull iommu updates from Joerg Roedel:

    - Make the dma-iommu code more generic so that it can be used outside
    of the ARM context with other IOMMU drivers. Goal is to make use of
    it on x86 too.

    - Generic IOMMU domain support for the Intel VT-d driver. This driver
    now makes more use of common IOMMU code to allocate default domains
    for the devices it handles.

    - An IOMMU fault reporting API to userspace. With that the IOMMU fault
    handling can be done in user-space, for example to forward the faults
    to a VM.

    - Better handling for reserved regions requested by the firmware. These
    can be 'relaxed' now, meaning that those don't prevent a device being
    attached to a VM.

    - Suspend/Resume support for the Renesas IOMMU driver.

    - Added support for dumping SVA related fields of the DMAR table in the
    Intel VT-d driver via debugfs.

    - A pile of smaller fixes and cleanups.

    * tag 'iommu-updates-v5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: (90 commits)
    iommu/omap: No need to check return value of debugfs_create functions
    iommu/arm-smmu-v3: Invalidate ATC when detaching a device
    iommu/arm-smmu-v3: Fix compilation when CONFIG_CMA=n
    iommu/vt-d: Cleanup unused variable
    iommu/amd: Flush not present cache in iommu_map_page
    iommu/amd: Only free resources once on init error
    iommu/amd: Move gart fallback to amd_iommu_init
    iommu/amd: Make iommu_disable safer
    iommu/io-pgtable: Support non-coherent page tables
    iommu/io-pgtable: Replace IO_PGTABLE_QUIRK_NO_DMA with specific flag
    iommu/io-pgtable-arm: Add support to use system cache
    iommu/arm-smmu-v3: Increase maximum size of queues
    iommu/vt-d: Silence a variable set but not used
    iommu/vt-d: Remove an unused variable "length"
    iommu: Fix integer truncation
    iommu: Add padding to struct iommu_fault
    iommu/vt-d: Consolidate domain_init() to avoid duplication
    iommu/vt-d: Cleanup after delegating DMA domain to generic iommu
    iommu/vt-d: Fix suspicious RCU usage in probe_acpi_namespace_devices()
    iommu/vt-d: Allow DMA domain attaching to rmrr locked device
    ...

    Linus Torvalds
     
  • Pull spi updates from Mark Brown:
    "For the most part this is a quiet release for SPI, though there's
    several of the more widely used drivers that have had some fairly
    substantial development done on them, mainly improving performance and
    adding support for some more obscure use cases.

    Summary:

    - Support for configuring a minimum time for chip select to be
    deasserted between transfers from Martin Sperl.

    - A rework of the ACPI device instantiation code from Ard Biesheuvel.

    - Fairly substantial development on the AT91 USART, BCM2835 and
    Tegra114 drivers.

    - New driver for Socionext SynQuacer"

    * tag 'spi-v5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi: (58 commits)
    spi: pxa2xx: Add support for Intel Elkhart Lake
    spi: atmel-quadspi: fix resume call
    spi: atmel-quadspi: void return type for atmel_qspi_init()
    spi: pxa2xx: Set minimum transfer speed
    spi: stm32-qspi: remove signal sensitive on completion
    dt-bindings: spi: stm32-qspi: add dma properties
    spi: uniphier: fix zero-length transfer
    spi: uniphier: fix timeout error
    spi/acpi: avoid spurious matches during slave enumeration
    spi: spi-stm32-qspi: Remove CR_FTHRES_MASK usage
    spi: fix ctrl->num_chipselect constraint
    spi: spi-synquacer: Fixed build on architectures missing readsl/writesl series
    spi/acpi: fix incorrect ACPI parent check
    spi: don't open code list_for_each_entry_safe_reverse()
    spi: No need to assign dummy value in spi_unregister_controller()
    spi: Add a prototype for exported spi_set_cs_timing()
    spi/acpi: enumerate all SPI slaves in the namespace
    spi: qup: fix PIO/DMA transfers.
    spi: Use struct_size() helper
    spi: mediatek: add SPI_LSB_FIRST support
    ...

    Linus Torvalds
     
  • Pull regulator updates from Mark Brown:
    "A couple of new features in the core, the most interesting one being
    support for complex regulator coupling configurations initially
    targeted at nVidia Tegra SoCs, and some new drivers but otherwise
    quite a quiet release.

    Summary:

    - Core support for gradual ramping of voltages for devices that can't
    manage large changes in hardware from Bartosz Golaszewski.

    - Core support for systems that have complex coupling requirements
    best described via code, contributed by Dmitry Osipenko.

    - New drivers for Dialog SLG51000, Qualcomm PM8005 and ST
    Microelectronics STM32-Booster"

    * tag 'regulator-v5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator: (52 commits)
    regulator: max77650: use vsel_step
    regulator: implement selector stepping
    regulator: max77650: add MODULE_ALIAS()
    regulator: max77620: remove redundant assignment to variable ret
    dt-bindings: regulator: add support for the stm32-booster
    regulator: add support for the stm32-booster
    regulator: s2mps11: Adjust supported buck voltages to real values
    regulator: s2mps11: Fix buck7 and buck8 wrong voltages
    gpio: Fix return value mismatch of function gpiod_get_from_of_node()
    regulator: core: Expose some of core functions needed by couplers
    regulator: core: Introduce API for regulators coupling customization
    regulator: s2mps11: Add support for disabling S2MPS11 regulators in suspend
    regulator: s2mps11: Reduce number of rdev_get_id() calls
    regulator: qcom_spmi: Do NULL check for lvs
    regulator: qcom_spmi: Fix math of spmi_regulator_set_voltage_time_sel
    regulator: da9061/62: Adjust LDO voltage selection minimum value
    regulator: s2mps11: Fix ERR_PTR dereference on GPIO lookup failure
    regulator: qcom_spmi: add PMS405 SPMI regulator
    dt-bindings: qcom_spmi: Document pms405 support
    arm64: dts: msm8998-mtp: Add pm8005_s1 regulator
    ...

    Linus Torvalds
     
  • Pull regmap updates from Mark Brown:
    "This is a relatively busy release for regmap, though not busy in the
    grand scheme of things, with the addition of support for I3C from
    Vitor Soares and a few small fixes and cleanups"

    * tag 'regmap-v5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap:
    regmap: select CONFIG_REGMAP while REGMAP_SCCB is set
    regmap: lzo: Switch to bitmap_zalloc()
    regmap: fix bulk writes on paged registers
    regmap: add i3c bus support
    regmap: debugfs: Fix memory leak in regmap_debugfs_init

    Linus Torvalds
     
  • Pull GPIO updates from Linus Walleij:
    "This is the big slew of GPIO changes for the v5.3 kernel cycle. This
    is mostly incremental work this time.

    Three important things:

    - The FMC subsystem is deleted through my tree. This happens through
    GPIO as its demise was discussed in relation to a patch decoupling
    its GPIO implementation from the standard way of handling GPIO. As
    it turns out, that is not the only subsystem it reimplements and
    the authors think it is better do scratch it and start over using
    the proper kernel subsystems than try to polish the rust shiny. See
    the commit (ACKed by the maintainers) for details.

    - Arnd made a small devres patch that was ACKed by Greg and goes into
    the device core.

    - SPDX header change colissions may happen, because at times I've
    seen that quite a lot changed during the -rc:s in regards to SPDX.
    (It is good stuff, tglx has me convinced, and it is worth the
    occasional pain.)

    Apart from this is is nothing controversial or problematic.

    Summary:

    Core:

    - When a gpio_chip request GPIOs from itself, it can now fully
    control the line characteristics, both machine and consumer flags.
    This makes a lot of sense, but took some time before I figured out
    that this is how it has to work.

    - Several smallish documentation fixes.

    New drivers:

    - The PCA953x driver now supports the TI TCA9539.

    - The DaVinci driver now supports the K3 AM654 SoCs.

    Driver improvements:

    - Major overhaul and hardening of the OMAP driver by Russell King.

    - Starting to move some drivers to the new API passing irq_chip along
    with the gpio_chip when adding the gpio_chip instead of adding it
    separately.

    Unrelated:

    - Delete the FMC subsystem"

    * tag 'gpio-v5.3-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio: (87 commits)
    Revert "gpio: tegra: Clean-up debugfs initialisation"
    gpiolib: Use spinlock_t instead of struct spinlock
    gpio: stp-xway: allow compile-testing
    gpio: stp-xway: get rid of the #include dependency
    gpio: stp-xway: improve module clock error handling
    gpio: stp-xway: simplify error handling in xway_stp_probe()
    gpiolib: Clarify use of non-sleeping functions
    gpiolib: Fix references to gpiod_[gs]et_*value_cansleep() variants
    gpiolib: Document new gpio_chip.init_valid_mask field
    Documentation: gpio: Fix reference to gpiod_get_array()
    gpio: pl061: drop duplicate printing of device name
    gpio: altera: Pass irqchip when adding gpiochip
    gpio: siox: Use devm_ managed gpiochip
    gpio: siox: Add struct device *dev helper variable
    gpio: siox: Pass irqchip when adding gpiochip
    drivers: gpio: amd-fch: make resource struct const
    devres: allow const resource arguments
    gpio: ath79: Pass irqchip when adding gpiochip
    gpio: tegra: Clean-up debugfs initialisation
    gpio: siox: Switch to IRQ_TYPE_NONE
    ...

    Linus Torvalds
     
  • Pull ic3 updates from Boris Brezillon:

    - Drop support for 10-bit I2C addresses

    - Add support for limited bus mode

    - Fix the Cadence DT binding doc

    - Use struct_size() to allocate a DEFSLVS packet

    * tag 'i3c/for-5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/i3c/linux:
    i3c: master: Use struct_size() helper
    dt-bindings: i3c: cdns: Use correct cells for I2C device
    i3c: dw: add limited bus mode support
    i3c: add mixed limited bus mode
    i3c: fix i2c and i3c scl rate by bus mode
    dt-bindings: i3c: Document dropped support for I2C 10 bit devices
    i3c: Drop support for I2C 10 bit addresing

    Linus Torvalds
     

09 Jul, 2019

18 commits

  • …anaszewski/linux-leds

    Pull LED updates from Jacek Anaszewski:

    - Add a new LED common module for ti-lmu driver family

    - Modify MFD ti-lmu bindings
    - add ti,brightness-resolution
    - add the ramp up/down property

    - Add regulator support for LM36274 driver to lm363x-regulator.c

    - New LED class drivers with DT bindings:
    - leds-spi-byte
    - leds-lm36274
    - leds-lm3697 (move the support from MFD to LED subsystem)

    - Simplify getting the I2C adapter of a client:
    - leds-tca6507
    - leds-pca955x

    - Convert LED documentation to ReST

    * tag 'leds-for-5.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds:
    dt: leds-lm36274.txt: fix a broken reference to ti-lmu.txt
    docs: leds: convert to ReST
    leds: leds-tca6507: simplify getting the adapter of a client
    leds: leds-pca955x: simplify getting the adapter of a client
    leds: lm36274: Introduce the TI LM36274 LED driver
    dt-bindings: leds: Add LED bindings for the LM36274
    regulator: lm363x: Add support for LM36274
    mfd: ti-lmu: Add LM36274 support to the ti-lmu
    dt-bindings: mfd: Add lm36274 bindings to ti-lmu
    leds: max77650: Remove set but not used variable 'parent'
    leds: avoid flush_work in atomic context
    leds: lm3697: Introduce the lm3697 driver
    mfd: ti-lmu: Remove support for LM3697
    dt-bindings: ti-lmu: Modify dt bindings for the LM3697
    leds: TI LMU: Add common code for TI LMU devices
    leds: spi-byte: add single byte SPI LED driver
    dt-bindings: leds: Add binding for spi-byte LED.
    dt-bindings: mfd: LMU: Add ti,brightness-resolution
    dt-bindings: mfd: LMU: Add the ramp up/down property

    Linus Torvalds
     
  • …erry.reding/linux-pwm

    Pull pwm updates from Thierry Reding:
    "This set of changes contains a new driver for SiFive SoCs as well as
    enhancements to the core (device links are used to track dependencies
    between PWM providers and consumers, support for PWM controllers via
    ACPI, sysfs will now suspend/resume PWMs that it has claimed) and
    various existing drivers"

    * tag 'pwm/for-5.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm: (37 commits)
    pwm: fsl-ftm: Make sure to unlock mutex on failure
    pwm: fsl-ftm: Use write protection for prescaler & polarity
    pwm: fsl-ftm: More relaxed permissions for updating period
    pwm: atmel-hlcdc: Add compatible for SAM9X60 HLCDC's PWM
    pwm: bcm2835: Improve precision of PWM
    leds: pwm: Support ACPI via firmware-node framework
    pwm: Add support referencing PWMs from ACPI
    pwm: rcar: Remove suspend/resume support
    pwm: sysfs: Add suspend/resume support
    pwm: Add power management descriptions
    pwm: meson: Add documentation to the driver
    pwm: meson: Add support PWM_POLARITY_INVERSED when disabling
    pwm: meson: Don't cache struct pwm_state internally
    pwm: meson: Read the full hardware state in meson_pwm_get_state()
    pwm: meson: Simplify the calculation of the pre-divider and count
    pwm: meson: Move pwm_set_chip_data() to meson_pwm_request()
    pwm: meson: Add the per-channel register offsets and bits in a struct
    pwm: meson: Add the meson_pwm_channel data to struct meson_pwm
    pwm: meson: Pass struct pwm_device to meson_pwm_calc()
    pwm: meson: Don't duplicate the polarity internally
    ...

    Linus Torvalds
     
  • …iederm/user-namespace

    Pull force_sig() argument change from Eric Biederman:
    "A source of error over the years has been that force_sig has taken a
    task parameter when it is only safe to use force_sig with the current
    task.

    The force_sig function is built for delivering synchronous signals
    such as SIGSEGV where the userspace application caused a synchronous
    fault (such as a page fault) and the kernel responded with a signal.

    Because the name force_sig does not make this clear, and because the
    force_sig takes a task parameter the function force_sig has been
    abused for sending other kinds of signals over the years. Slowly those
    have been fixed when the oopses have been tracked down.

    This set of changes fixes the remaining abusers of force_sig and
    carefully rips out the task parameter from force_sig and friends
    making this kind of error almost impossible in the future"

    * 'siginfo-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace: (27 commits)
    signal/x86: Move tsk inside of CONFIG_MEMORY_FAILURE in do_sigbus
    signal: Remove the signal number and task parameters from force_sig_info
    signal: Factor force_sig_info_to_task out of force_sig_info
    signal: Generate the siginfo in force_sig
    signal: Move the computation of force into send_signal and correct it.
    signal: Properly set TRACE_SIGNAL_LOSE_INFO in __send_signal
    signal: Remove the task parameter from force_sig_fault
    signal: Use force_sig_fault_to_task for the two calls that don't deliver to current
    signal: Explicitly call force_sig_fault on current
    signal/unicore32: Remove tsk parameter from __do_user_fault
    signal/arm: Remove tsk parameter from __do_user_fault
    signal/arm: Remove tsk parameter from ptrace_break
    signal/nds32: Remove tsk parameter from send_sigtrap
    signal/riscv: Remove tsk parameter from do_trap
    signal/sh: Remove tsk parameter from force_sig_info_fault
    signal/um: Remove task parameter from send_sigtrap
    signal/x86: Remove task parameter from send_sigtrap
    signal: Remove task parameter from force_sig_mceerr
    signal: Remove task parameter from force_sig
    signal: Remove task parameter from force_sigsegv
    ...

    Linus Torvalds
     
  • Pull crypto updates from Herbert Xu:
    "Here is the crypto update for 5.3:

    API:
    - Test shash interface directly in testmgr
    - cra_driver_name is now mandatory

    Algorithms:
    - Replace arc4 crypto_cipher with library helper
    - Implement 5 way interleave for ECB, CBC and CTR on arm64
    - Add xxhash
    - Add continuous self-test on noise source to drbg
    - Update jitter RNG

    Drivers:
    - Add support for SHA204A random number generator
    - Add support for 7211 in iproc-rng200
    - Fix fuzz test failures in inside-secure
    - Fix fuzz test failures in talitos
    - Fix fuzz test failures in qat"

    * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (143 commits)
    crypto: stm32/hash - remove interruptible condition for dma
    crypto: stm32/hash - Fix hmac issue more than 256 bytes
    crypto: stm32/crc32 - rename driver file
    crypto: amcc - remove memset after dma_alloc_coherent
    crypto: ccp - Switch to SPDX license identifiers
    crypto: ccp - Validate the the error value used to index error messages
    crypto: doc - Fix formatting of new crypto engine content
    crypto: doc - Add parameter documentation
    crypto: arm64/aes-ce - implement 5 way interleave for ECB, CBC and CTR
    crypto: arm64/aes-ce - add 5 way interleave routines
    crypto: talitos - drop icv_ool
    crypto: talitos - fix hash on SEC1.
    crypto: talitos - move struct talitos_edesc into talitos.h
    lib/scatterlist: Fix mapping iterator when sg->offset is greater than PAGE_SIZE
    crypto/NX: Set receive window credits to max number of CRBs in RxFIFO
    crypto: asymmetric_keys - select CRYPTO_HASH where needed
    crypto: serpent - mark __serpent_setkey_sbox noinline
    crypto: testmgr - dynamically allocate crypto_shash
    crypto: testmgr - dynamically allocate testvec_config
    crypto: talitos - eliminate unneeded 'done' functions at build time
    ...

    Linus Torvalds
     
  • Pull integrity updates from Mimi Zohar:
    "Bug fixes, code clean up, and new features:

    - IMA policy rules can be defined in terms of LSM labels, making the
    IMA policy dependent on LSM policy label changes, in particular LSM
    label deletions. The new environment, in which IMA-appraisal is
    being used, frequently updates the LSM policy and permits LSM label
    deletions.

    - Prevent an mmap'ed shared file opened for write from also being
    mmap'ed execute. In the long term, making this and other similar
    changes at the VFS layer would be preferable.

    - The IMA per policy rule template format support is needed for a
    couple of new/proposed features (eg. kexec boot command line
    measurement, appended signatures, and VFS provided file hashes).

    - Other than the "boot-aggregate" record in the IMA measuremeent
    list, all other measurements are of file data. Measuring and
    storing the kexec boot command line in the IMA measurement list is
    the first buffer based measurement included in the measurement
    list"

    * 'next-integrity' of git://git.kernel.org/pub/scm/linux/kernel/git/zohar/linux-integrity:
    integrity: Introduce struct evm_xattr
    ima: Update MAX_TEMPLATE_NAME_LEN to fit largest reasonable definition
    KEXEC: Call ima_kexec_cmdline to measure the boot command line args
    IMA: Define a new template field buf
    IMA: Define a new hook to measure the kexec boot command line arguments
    IMA: support for per policy rule template formats
    integrity: Fix __integrity_init_keyring() section mismatch
    ima: Use designated initializers for struct ima_event_data
    ima: use the lsm policy update notifier
    LSM: switch to blocking policy update notifiers
    x86/ima: fix the Kconfig dependency for IMA_ARCH_POLICY
    ima: Make arch_policy_entry static
    ima: prevent a file already mmap'ed write to be mmap'ed execute
    x86/ima: check EFI SetupMode too

    Linus Torvalds
     
  • Pull keyring ACL support from David Howells:
    "This changes the permissions model used by keys and keyrings to be
    based on an internal ACL by the following means:

    - Replace the permissions mask internally with an ACL that contains a
    list of ACEs, each with a specific subject with a permissions mask.
    Potted default ACLs are available for new keys and keyrings.

    ACE subjects can be macroised to indicate the UID and GID specified
    on the key (which remain). Future commits will be able to add
    additional subject types, such as specific UIDs or domain
    tags/namespaces.

    Also split a number of permissions to give finer control. Examples
    include splitting the revocation permit from the change-attributes
    permit, thereby allowing someone to be granted permission to revoke
    a key without allowing them to change the owner; also the ability
    to join a keyring is split from the ability to link to it, thereby
    stopping a process accessing a keyring by joining it and thus
    acquiring use of possessor permits.

    - Provide a keyctl to allow the granting or denial of one or more
    permits to a specific subject. Direct access to the ACL is not
    granted, and the ACL cannot be viewed"

    * tag 'keys-acl-20190703' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs:
    keys: Provide KEYCTL_GRANT_PERMISSION
    keys: Replace uid/gid/perm permissions checking with an ACL

    Linus Torvalds
     
  • Pull tpm updates from Jarkko Sakkinen:
    "This contains two critical bug fixes and support for obtaining TPM
    events triggered by ExitBootServices().

    For the latter I have to give a quite verbose explanation not least
    because I had to revisit all the details myself to remember what was
    going on in Matthew's patches.

    The preboot software stack maintains an event log that gets entries
    every time something gets hashed to any of the PCR registers. What
    gets hashed could be a component to be run or perhaps log of some
    actions taken just to give couple of coarse examples. In general,
    anything relevant for the boot process that the preboot software does
    gets hashed and a log entry with a specific event type [1].

    The main application for this is remote attestation and the reason why
    it is useful is nicely put in the very first section of [1]:

    "Attestation is used to provide information about the platform’s
    state to a challenger. However, PCR contents are difficult to
    interpret; therefore, attestation is typically more useful when
    the PCR contents are accompanied by a measurement log. While not
    trusted on their own, the measurement log contains a richer set of
    information than do the PCR contents. The PCR contents are used to
    provide the validation of the measurement log."

    Because EFI_TCG2_PROTOCOL.GetEventLog() is not available after calling
    ExitBootServices(), Linux EFI stub copies the event log to a custom
    configuration table. Unfortunately, ExitBootServices() also generates
    events and obviously these events do not get copied to that table.
    Luckily firmware does this for us by providing a configuration table
    identified by EFI_TCG2_FINAL_EVENTS_TABLE_GUID.

    This essentially contains necessary changes to provide the full event
    log for the use the user space that is concatenated from these two
    partial event logs [2]"

    [1] https://trustedcomputinggroup.org/resource/pc-client-specific-platform-firmware-profile-specification/
    [2] The final concatenation is done in drivers/char/tpm/eventlog/efi.c

    * tag 'tpmdd-next-20190625' of git://git.infradead.org/users/jjs/linux-tpmdd:
    tpm: Don't duplicate events from the final event log in the TCG2 log
    Abstract out support for locating an EFI config table
    tpm: Fix TPM 1.2 Shutdown sequence to prevent future TPM operations
    efi: Attempt to get the TCG2 event log in the boot stub
    tpm: Append the final event log to the TPM event log
    tpm: Reserve the TPM final events table
    tpm: Abstract crypto agile event size calculations
    tpm: Actually fail on TPM errors during "get random"

    Linus Torvalds
     
  • Pull x86 topology updates from Ingo Molnar:
    "Implement multi-die topology support on Intel CPUs and expose the die
    topology to user-space tooling, by Len Brown, Kan Liang and Zhang Rui.

    These changes should have no effect on the kernel's existing
    understanding of topologies, i.e. there should be no behavioral impact
    on cache, NUMA, scheduler, perf and other topologies and overall
    system performance"

    * 'x86-topology-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    perf/x86/intel/rapl: Cosmetic rename internal variables in response to multi-die/pkg support
    perf/x86/intel/uncore: Cosmetic renames in response to multi-die/pkg support
    hwmon/coretemp: Cosmetic: Rename internal variables to zones from packages
    thermal/x86_pkg_temp_thermal: Cosmetic: Rename internal variables to zones from packages
    perf/x86/intel/cstate: Support multi-die/package
    perf/x86/intel/rapl: Support multi-die/package
    perf/x86/intel/uncore: Support multi-die/package
    topology: Create core_cpus and die_cpus sysfs attributes
    topology: Create package_cpus sysfs attribute
    hwmon/coretemp: Support multi-die/package
    powercap/intel_rapl: Update RAPL domain name and debug messages
    thermal/x86_pkg_temp_thermal: Support multi-die/package
    powercap/intel_rapl: Support multi-die/package
    powercap/intel_rapl: Simplify rapl_find_package()
    x86/topology: Define topology_logical_die_id()
    x86/topology: Define topology_die_id()
    cpu/topology: Export die_id
    x86/topology: Create topology_max_die_per_package()
    x86/topology: Add CPUID.1F multi-die/package support

    Linus Torvalds
     
  • Pull x86 platform updayes from Ingo Molnar:
    "Most of the commits add ACRN hypervisor guest support, plus two
    cleanups"

    * 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/jailhouse: Mark jailhouse_x2apic_available() as __init
    x86/platform/geode: Drop includes
    x86/acrn: Use HYPERVISOR_CALLBACK_VECTOR for ACRN guest upcall vector
    x86: Add support for Linux guests on an ACRN hypervisor
    x86/Kconfig: Add new X86_HV_CALLBACK_VECTOR config symbol

    Linus Torvalds
     
  • Pull scheduler updates from Ingo Molnar:

    - Remove the unused per rq load array and all its infrastructure, by
    Dietmar Eggemann.

    - Add utilization clamping support by Patrick Bellasi. This is a
    refinement of the energy aware scheduling framework with support for
    boosting of interactive and capping of background workloads: to make
    sure critical GUI threads get maximum frequency ASAP, and to make
    sure background processing doesn't unnecessarily move to cpufreq
    governor to higher frequencies and less energy efficient CPU modes.

    - Add the bare minimum of tracepoints required for LISA EAS regression
    testing, by Qais Yousef - which allows automated testing of various
    power management features, including energy aware scheduling.

    - Restructure the former tsk_nr_cpus_allowed() facility that the -rt
    kernel used to modify the scheduler's CPU affinity logic such as
    migrate_disable() - introduce the task->cpus_ptr value instead of
    taking the address of &task->cpus_allowed directly - by Sebastian
    Andrzej Siewior.

    - Misc optimizations, fixes, cleanups and small enhancements - see the
    Git log for details.

    * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (33 commits)
    sched/uclamp: Add uclamp support to energy_compute()
    sched/uclamp: Add uclamp_util_with()
    sched/cpufreq, sched/uclamp: Add clamps for FAIR and RT tasks
    sched/uclamp: Set default clamps for RT tasks
    sched/uclamp: Reset uclamp values on RESET_ON_FORK
    sched/uclamp: Extend sched_setattr() to support utilization clamping
    sched/core: Allow sched_setattr() to use the current policy
    sched/uclamp: Add system default clamps
    sched/uclamp: Enforce last task's UCLAMP_MAX
    sched/uclamp: Add bucket local max tracking
    sched/uclamp: Add CPU's clamp buckets refcounting
    sched/fair: Rename weighted_cpuload() to cpu_runnable_load()
    sched/debug: Export the newly added tracepoints
    sched/debug: Add sched_overutilized tracepoint
    sched/debug: Add new tracepoint to track PELT at se level
    sched/debug: Add new tracepoints to track PELT at rq level
    sched/debug: Add a new sched_trace_*() helper functions
    sched/autogroup: Make autogroup_path() always available
    sched/wait: Deduplicate code with do-while
    sched/topology: Remove unused 'sd' parameter from arch_scale_cpu_capacity()
    ...

    Linus Torvalds
     
  • Pull RAS updates from Ingo Molnar:
    "Boris is on vacation so I'm sending the RAS bits this time. The main
    changes were:

    - Various RAS/CEC improvements and fixes by Borislav Petkov:
    - error insertion fixes
    - offlining latency fix
    - memory leak fix
    - additional sanity checks
    - cleanups
    - debug output improvements

    - More SMCA enhancements by Yazen Ghannam:
    - make banks truly per-CPU which they are in the hardware
    - don't over-cache certain registers
    - make the number of MCA banks per-CPU variable

    The long term goal with these changes is to support future
    heterogenous SMCA extensions.

    - Misc fixes and improvements"

    * 'ras-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/mce: Do not check return value of debugfs_create functions
    x86/MCE: Determine MCA banks' init state properly
    x86/MCE: Make the number of MCA banks a per-CPU variable
    x86/MCE/AMD: Don't cache block addresses on SMCA systems
    x86/MCE: Make mce_banks a per-CPU array
    x86/MCE: Make struct mce_banks[] static
    RAS/CEC: Add copyright
    RAS/CEC: Add CONFIG_RAS_CEC_DEBUG and move CEC debug features there
    RAS/CEC: Dump the different array element sections
    RAS/CEC: Rename count_threshold to action_threshold
    RAS/CEC: Sanity-check array on every insertion
    RAS/CEC: Fix potential memory leak
    RAS/CEC: Do not set decay value on error
    RAS/CEC: Check count_threshold unconditionally
    RAS/CEC: Fix pfn insertion

    Linus Torvalds
     
  • Pull locking updates from Ingo Molnar:
    "The main changes in this cycle are:

    - rwsem scalability improvements, phase #2, by Waiman Long, which are
    rather impressive:

    "On a 2-socket 40-core 80-thread Skylake system with 40 reader
    and writer locking threads, the min/mean/max locking operations
    done in a 5-second testing window before the patchset were:

    40 readers, Iterations Min/Mean/Max = 1,807/1,808/1,810
    40 writers, Iterations Min/Mean/Max = 1,807/50,344/151,255

    After the patchset, they became:

    40 readers, Iterations Min/Mean/Max = 30,057/31,359/32,741
    40 writers, Iterations Min/Mean/Max = 94,466/95,845/97,098"

    There's a lot of changes to the locking implementation that makes
    it similar to qrwlock, including owner handoff for more fair
    locking.

    Another microbenchmark shows how across the spectrum the
    improvements are:

    "With a locking microbenchmark running on 5.1 based kernel, the
    total locking rates (in kops/s) on a 2-socket Skylake system
    with equal numbers of readers and writers (mixed) before and
    after this patchset were:

    # of Threads Before Patch After Patch
    ------------ ------------ -----------
    2 2,618 4,193
    4 1,202 3,726
    8 802 3,622
    16 729 3,359
    32 319 2,826
    64 102 2,744"

    The changes are extensive and the patch-set has been through
    several iterations addressing various locking workloads. There
    might be more regressions, but unless they are pathological I
    believe we want to use this new implementation as the baseline
    going forward.

    - jump-label optimizations by Daniel Bristot de Oliveira: the primary
    motivation was to remove IPI disturbance of isolated RT-workload
    CPUs, which resulted in the implementation of batched jump-label
    updates. Beyond the improvement of the real-time characteristics
    kernel, in one test this patchset improved static key update
    overhead from 57 msecs to just 1.4 msecs - which is a nice speedup
    as well.

    - atomic64_t cross-arch type cleanups by Mark Rutland: over the last
    ~10 years of atomic64_t existence the various types used by the
    APIs only had to be self-consistent within each architecture -
    which means they became wildly inconsistent across architectures.
    Mark puts and end to this by reworking all the atomic64
    implementations to use 's64' as the base type for atomic64_t, and
    to ensure that this type is consistently used for parameters and
    return values in the API, avoiding further problems in this area.

    - A large set of small improvements to lockdep by Yuyang Du: type
    cleanups, output cleanups, function return type and othr cleanups
    all around the place.

    - A set of percpu ops cleanups and fixes by Peter Zijlstra.

    - Misc other changes - please see the Git log for more details"

    * 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (82 commits)
    locking/lockdep: increase size of counters for lockdep statistics
    locking/atomics: Use sed(1) instead of non-standard head(1) option
    locking/lockdep: Move mark_lock() inside CONFIG_TRACE_IRQFLAGS && CONFIG_PROVE_LOCKING
    x86/jump_label: Make tp_vec_nr static
    x86/percpu: Optimize raw_cpu_xchg()
    x86/percpu, sched/fair: Avoid local_clock()
    x86/percpu, x86/irq: Relax {set,get}_irq_regs()
    x86/percpu: Relax smp_processor_id()
    x86/percpu: Differentiate this_cpu_{}() and __this_cpu_{}()
    locking/rwsem: Guard against making count negative
    locking/rwsem: Adaptive disabling of reader optimistic spinning
    locking/rwsem: Enable time-based spinning on reader-owned rwsem
    locking/rwsem: Make rwsem->owner an atomic_long_t
    locking/rwsem: Enable readers spinning on writer
    locking/rwsem: Clarify usage of owner's nonspinaable bit
    locking/rwsem: Wake up almost all readers in wait queue
    locking/rwsem: More optimal RT task handling of null owner
    locking/rwsem: Always release wait_lock before waking up tasks
    locking/rwsem: Implement lock handoff to prevent lock starvation
    locking/rwsem: Make rwsem_spin_on_owner() return owner state
    ...

    Linus Torvalds
     
  • Pull x86 CPU feature updates from Thomas Gleixner:
    "Updates for x86 CPU features:

    - Support for UMWAIT/UMONITOR, which allows to use MWAIT and MONITOR
    instructions in user space to save power e.g. in HPC workloads
    which spin wait on synchronization points.

    The maximum time a MWAIT can halt in userspace is controlled by the
    kernel and can be adjusted by the sysadmin.

    - Speed up the MTRR handling code on CPUs which support cache
    self-snooping correctly.

    On those CPUs the wbinvd() invocations can be omitted which speeds
    up the MTRR setup by a factor of 50.

    - Support for the new x86 vendor Zhaoxin who develops processors
    based on the VIA Centaur technology.

    - Prevent 'cat /proc/cpuinfo' from affecting isolated NOHZ_FULL CPUs
    by sending IPIs to retrieve the CPU frequency and use the cached
    values instead.

    - The addition and late revert of the FSGSBASE support. The revert
    was required as it turned out that the code still has hard to
    diagnose issues. Yet another engineering trainwreck...

    - Small fixes, cleanups, improvements and the usual new Intel CPU
    family/model addons"

    * 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (41 commits)
    x86/fsgsbase: Revert FSGSBASE support
    selftests/x86/fsgsbase: Fix some test case bugs
    x86/entry/64: Fix and clean up paranoid_exit
    x86/entry/64: Don't compile ignore_sysret if 32-bit emulation is enabled
    selftests/x86: Test SYSCALL and SYSENTER manually with TF set
    x86/mtrr: Skip cache flushes on CPUs with cache self-snooping
    x86/cpu/intel: Clear cache self-snoop capability in CPUs with known errata
    Documentation/ABI: Document umwait control sysfs interfaces
    x86/umwait: Add sysfs interface to control umwait maximum time
    x86/umwait: Add sysfs interface to control umwait C0.2 state
    x86/umwait: Initialize umwait control values
    x86/cpufeatures: Enumerate user wait instructions
    x86/cpu: Disable frequency requests via aperfmperf IPI for nohz_full CPUs
    x86/acpi/cstate: Add Zhaoxin processors support for cache flush policy in C3
    ACPI, x86: Add Zhaoxin processors support for NONSTOP TSC
    x86/cpu: Create Zhaoxin processors architecture support file
    x86/cpu: Split Tremont based Atoms from the rest
    Documentation/x86/64: Add documentation for GS/FS addressing mode
    x86/elf: Enumerate kernel FSGSBASE capability in AT_HWCAP2
    x86/cpu: Enable FSGSBASE on 64bit by default and add a chicken bit
    ...

    Linus Torvalds
     
  • Pull timer updates from Thomas Gleixner:
    "The timer and timekeeping departement delivers:

    Core:

    - The consolidation of the VDSO code into a generic library including
    the conversion of x86 and ARM64. Conversion of ARM and MIPS are en
    route through the relevant maintainer trees and should end up in
    5.4.

    This gets rid of the unnecessary different copies of the same code
    and brings all architectures on the same level of VDSO
    functionality.

    - Make the NTP user space interface more robust by restricting the
    TAI offset to prevent undefined behaviour. Includes a selftest.

    - Validate user input in the compat settimeofday() syscall to catch
    invalid values which would be turned into valid values by a
    multiplication overflow

    - Consolidate the time accessors

    - Small fixes, improvements and cleanups all over the place

    Drivers:

    - Support for the NXP system counter, TI davinci timer

    - Move the Microsoft HyperV clocksource/events code into the
    drivers/clocksource directory so it can be shared between x86 and
    ARM64.

    - Overhaul of the Tegra driver

    - Delay timer support for IXP4xx

    - Small fixes, improvements and cleanups as usual"

    * 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (71 commits)
    time: Validate user input in compat_settimeofday()
    timer: Document TIMER_PINNED
    clocksource/drivers: Continue making Hyper-V clocksource ISA agnostic
    clocksource/drivers: Make Hyper-V clocksource ISA agnostic
    MAINTAINERS: Fix Andy's surname and the directory entries of VDSO
    hrtimer: Use a bullet for the returns bullet list
    arm64: vdso: Fix compilation with clang older than 8
    arm64: compat: Fix __arch_get_hw_counter() implementation
    arm64: Fix __arch_get_hw_counter() implementation
    lib/vdso: Make delta calculation work correctly
    MAINTAINERS: Add entry for the generic VDSO library
    arm64: compat: No need for pre-ARMv7 barriers on an ARMv8 system
    arm64: vdso: Remove unnecessary asm-offsets.c definitions
    vdso: Remove superfluous #ifdef __KERNEL__ in vdso/datapage.h
    clocksource/drivers/davinci: Add support for clocksource
    clocksource/drivers/davinci: Add support for clockevents
    clocksource/drivers/tegra: Set up maximum-ticks limit properly
    clocksource/drivers/tegra: Cycles can't be 0
    clocksource/drivers/tegra: Restore base address before cleanup
    clocksource/drivers/tegra: Add verbose definition for 1MHz constant
    ...

    Linus Torvalds
     
  • Pull irq updates from Thomas Gleixner:
    "The irq departement provides the usual mixed bag:

    Core:

    - Further improvements to the irq timings code which aims to predict
    the next interrupt for power state selection to achieve better
    latency/power balance

    - Add interrupt statistics to the core NMI handlers

    - The usual small fixes and cleanups

    Drivers:

    - Support for Renesas RZ/A1, Annapurna Labs FIC, Meson-G12A SoC and
    Amazon Gravition AMR/GIC interrupt controllers.

    - Rework of the Renesas INTC controller driver

    - ACPI support for Socionext SoCs

    - Enhancements to the CSKY interrupt controller

    - The usual small fixes and cleanups"

    * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (39 commits)
    irq/irqdomain: Fix comment typo
    genirq: Update irq stats from NMI handlers
    irqchip/gic-pm: Remove PM_CLK dependency
    irqchip/al-fic: Introduce Amazon's Annapurna Labs Fabric Interrupt Controller Driver
    dt-bindings: interrupt-controller: Add Amazon's Annapurna Labs FIC
    softirq: Use __this_cpu_write() in takeover_tasklets()
    irqchip/mbigen: Stop printing kernel addresses
    irqchip/gic: Add dependency for ARM_GIC_MAX_NR
    genirq/affinity: Remove unused argument from [__]irq_build_affinity_masks()
    genirq/timings: Add selftest for next event computation
    genirq/timings: Add selftest for irqs circular buffer
    genirq/timings: Add selftest for circular array
    genirq/timings: Encapsulate storing function
    genirq/timings: Encapsulate timings push
    genirq/timings: Optimize the period detection speed
    genirq/timings: Fix timings buffer inspection
    genirq/timings: Fix next event index function
    irqchip/qcom: Use struct_size() in devm_kzalloc()
    irqchip/irq-csky-mpintc: Remove unnecessary loop in interrupt handler
    dt-bindings: interrupt-controller: Update csky mpintc
    ...

    Linus Torvalds
     
  • Pull SMP/hotplug updates from Thomas Gleixner:
    "A small set of updates for SMP and CPU hotplug:

    - Abort disabling secondary CPUs in the freezer when a wakeup is
    pending instead of evaluating it only after all CPUs have been
    offlined.

    - Remove the shared annotation for the strict per CPU cfd_data in the
    smp function call core code.

    - Remove the return values of smp_call_function() and on_each_cpu()
    as they are unconditionally 0. Fixup the few callers which actually
    bothered to check the return value"

    * 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    smp: Remove smp_call_function() and on_each_cpu() return values
    smp: Do not mark call_function_data as shared
    cpu/hotplug: Abort disabling secondary CPUs if wakeup is pending
    cpu/hotplug: Fix notify_cpu_starting() reference in bringup_wait_for_ap()

    Linus Torvalds
     
  • Pull s390 updates from Vasily Gorbik:

    - Improve stop_machine wait logic: replace cpu_relax_yield call in
    generic stop_machine function with a weak stop_machine_yield
    function. This is overridden on s390, which yields the current cpu to
    the neighbouring cpu after a couple of retries, instead of blindly
    giving up the cpu to the hipervisor. This significantly improves
    stop_machine performance on s390 in overcommitted scenarios.

    This includes common code changes which have been Acked by Peter
    Zijlstra and Thomas Gleixner.

    - Improve jump label transformation speed: transform jump labels
    without using stop_machine.

    - Refactoring of the vfio-ccw cp handling, simplifying the code and
    avoiding unneeded allocating/copying.

    - Various vfio-ccw fixes (ccw translation, state machine).

    - Add support for vfio-ap queue interrupt control in the guest. This
    includes s390 kvm changes which have been Acked by Christian
    Borntraeger.

    - Add protected virtualization support for virtio-ccw.

    - Enforce both CONFIG_SMP and CONFIG_HOTPLUG_CPU, which allows to
    remove some code which most likely isn't working at all, besides that
    s390 didn't even compile for !CONFIG_SMP.

    - Support for special flagged EP11 CPRBs for zcrypt.

    - Handle PCI devices with no support for new MIO instructions.

    - Avoid KASAN false positives in reworked stack unwinder.

    - Couple of fixes for the QDIO layer.

    - Convert s390 specific documentation to ReST format.

    - Let s390 crypto modules return -ENODEV instead of -EOPNOTSUPP if
    hardware is missing. This way our modules behave like most other
    modules and which is also what systemd's systemd-modules-load.service
    expects.

    - Replace defconfig with performance_defconfig, so there is one config
    file less to maintain.

    - Remove the SCLP call home device driver, which was never useful.

    - Cleanups all over the place.

    * tag 's390-5.3-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (83 commits)
    docs: s390: s390dbf: typos and formatting, update crash command
    docs: s390: unify and update s390dbf kdocs at debug.c
    docs: s390: restore important non-kdoc parts of s390dbf.rst
    vfio-ccw: Fix the conversion of Format-0 CCWs to Format-1
    s390/pci: correctly handle MIO opt-out
    s390/pci: deal with devices that have no support for MIO instructions
    s390: ap: kvm: Enable PQAP/AQIC facility for the guest
    s390: ap: implement PAPQ AQIC interception in kernel
    vfio: ap: register IOMMU VFIO notifier
    s390: ap: kvm: add PQAP interception for AQIC
    s390/unwind: cleanup unused READ_ONCE_TASK_STACK
    s390/kasan: avoid false positives during stack unwind
    s390/qdio: don't touch the dsci in tiqdio_add_input_queues()
    s390/qdio: (re-)initialize tiqdio list entries
    s390/dasd: Fix a precision vs width bug in dasd_feature_list()
    s390/cio: introduce driver_override on the css bus
    vfio-ccw: make convert_ccw0_to_ccw1 static
    vfio-ccw: Remove copy_ccw_from_iova()
    vfio-ccw: Factor out the ccw0-to-ccw1 transition
    vfio-ccw: Copy CCW data outside length calculation
    ...

    Linus Torvalds
     
  • Pull arm64 updates from Catalin Marinas:

    - arm64 support for syscall emulation via PTRACE_SYSEMU{,_SINGLESTEP}

    - Wire up VM_FLUSH_RESET_PERMS for arm64, allowing the core code to
    manage the permissions of executable vmalloc regions more strictly

    - Slight performance improvement by keeping softirqs enabled while
    touching the FPSIMD/SVE state (kernel_neon_begin/end)

    - Expose a couple of ARMv8.5 features to user (HWCAP): CondM (new
    XAFLAG and AXFLAG instructions for floating point comparison flags
    manipulation) and FRINT (rounding floating point numbers to integers)

    - Re-instate ARM64_PSEUDO_NMI support which was previously marked as
    BROKEN due to some bugs (now fixed)

    - Improve parking of stopped CPUs and implement an arm64-specific
    panic_smp_self_stop() to avoid warning on not being able to stop
    secondary CPUs during panic

    - perf: enable the ARM Statistical Profiling Extensions (SPE) on ACPI
    platforms

    - perf: DDR performance monitor support for iMX8QXP

    - cache_line_size() can now be set from DT or ACPI/PPTT if provided to
    cope with a system cache info not exposed via the CPUID registers

    - Avoid warning on hardware cache line size greater than
    ARCH_DMA_MINALIGN if the system is fully coherent

    - arm64 do_page_fault() and hugetlb cleanups

    - Refactor set_pte_at() to avoid redundant READ_ONCE(*ptep)

    - Ignore ACPI 5.1 FADTs reported as 5.0 (infer from the
    'arm_boot_flags' introduced in 5.1)

    - CONFIG_RANDOMIZE_BASE now enabled in defconfig

    - Allow the selection of ARM64_MODULE_PLTS, currently only done via
    RANDOMIZE_BASE (and an erratum workaround), allowing modules to spill
    over into the vmalloc area

    - Make ZONE_DMA32 configurable

    * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (54 commits)
    perf: arm_spe: Enable ACPI/Platform automatic module loading
    arm_pmu: acpi: spe: Add initial MADT/SPE probing
    ACPI/PPTT: Add function to return ACPI 6.3 Identical tokens
    ACPI/PPTT: Modify node flag detection to find last IDENTICAL
    x86/entry: Simplify _TIF_SYSCALL_EMU handling
    arm64: rename dump_instr as dump_kernel_instr
    arm64/mm: Drop [PTE|PMD]_TYPE_FAULT
    arm64: Implement panic_smp_self_stop()
    arm64: Improve parking of stopped CPUs
    arm64: Expose FRINT capabilities to userspace
    arm64: Expose ARMv8.5 CondM capability to userspace
    arm64: defconfig: enable CONFIG_RANDOMIZE_BASE
    arm64: ARM64_MODULES_PLTS must depend on MODULES
    arm64: bpf: do not allocate executable memory
    arm64/kprobes: set VM_FLUSH_RESET_PERMS on kprobe instruction pages
    arm64/mm: wire up CONFIG_ARCH_HAS_SET_DIRECT_MAP
    arm64: module: create module allocations without exec permissions
    arm64: Allow user selection of ARM64_MODULE_PLTS
    acpi/arm64: ignore 5.1 FADTs that are reported as 5.0
    arm64: Allow selecting Pseudo-NMI again
    ...

    Linus Torvalds
     

08 Jul, 2019

1 commit

  • * pm-cpufreq:
    cpufreq: Avoid calling cpufreq_verify_current_freq() from handle_update()
    cpufreq: Consolidate cpufreq_update_current_freq() and __cpufreq_get()
    cpufreq: Don't skip frequency validation for has_target() drivers
    cpufreq: Use has_target() instead of !setpolicy
    cpufreq: Remove redundant !setpolicy check
    cpufreq: Move the IS_ENABLED(CPU_THERMAL) macro into a stub
    cpufreq: s5pv210: Don't flood kernel log after cpufreq change
    cpufreq: pcc-cpufreq: Fail initialization if driver cannot be registered
    cpufreq: add driver for Raspberry Pi
    cpufreq: Switch imx7d to imx-cpufreq-dt for speed grading
    cpufreq: imx-cpufreq-dt: Remove global platform match list
    cpufreq: brcmstb-avs-cpufreq: Fix types for voltage/frequency
    cpufreq: brcmstb-avs-cpufreq: Fix initial command check
    cpufreq: armada-37xx: Remove set but not used variable 'freq'
    cpufreq: imx-cpufreq-dt: Fix no OPPs available on unfused parts
    dt-bindings: imx-cpufreq-dt: Document opp-supported-hw usage
    cpufreq: Add imx-cpufreq-dt driver

    Rafael J. Wysocki