Commit 84bbfe6b authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'platform-drivers-x86-v6.12-1' of...

Merge tag 'platform-drivers-x86-v6.12-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86

Pull x86 platform drivers updates from Hans de Goede:

 - asus-wmi: Add support for vivobook fan profiles

 - dell-laptop: Add knobs to change battery charge settings

 - lg-laptop: Add operation region support

 - intel-uncore-freq: Add support for efficiency latency control

 - intel/ifs: Add SBAF test support

 - intel/pmc: Ignore all LTRs during suspend

 - platform/surface: Support for arm64 based Surface devices

 - wmi: Pass event data directly to legacy notify handlers

 - x86/platform/geode: switch GPIO buttons and LEDs to software
   properties

 - bunch of small cleanups, fixes, hw-id additions, etc.

* tag 'platform-drivers-x86-v6.12-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86: (65 commits)
  MAINTAINERS: adjust file entry in INTEL MID PLATFORM
  platform/x86: x86-android-tablets: Adjust Xiaomi Pad 2 bottom bezel touch buttons LED
  platform/mellanox: mlxbf-pmc: fix lockdep warning
  platform/x86/amd: pmf: Add quirk for TUF Gaming A14
  platform/x86: touchscreen_dmi: add nanote-next quirk
  platform/x86: asus-wmi: don't fail if platform_profile already registered
  platform/x86: asus-wmi: add debug print in more key places
  platform/x86: intel_scu_wdt: Move intel_scu_wdt.h to x86 subfolder
  platform/x86: intel_scu_ipc: Move intel_scu_ipc.h out of arch/x86/include/asm
  MAINTAINERS: Add Intel MID section
  platform/x86: panasonic-laptop: Add support for programmable buttons
  platform/olpc: Remove redundant null pointer checks in olpc_ec_setup_debugfs()
  platform/x86: intel/pmc: Ignore all LTRs during suspend
  platform/x86: wmi: Call both legacy and WMI driver notify handlers
  platform/x86: wmi: Merge get_event_data() with wmi_get_notify_data()
  platform/x86: wmi: Remove wmi_get_event_data()
  platform/x86: wmi: Pass event data directly to legacy notify handlers
  platform/x86: thinkpad_acpi: Fix uninitialized symbol 's' warning
  platform/x86: x86-android-tablets: Fix spelling in the comments
  platform/x86: ideapad-laptop: Make the scope_guard() clear of its scope
  ...
parents 2a17bb8c 837acb69
Loading
Loading
Loading
Loading
+59 −0
Original line number Diff line number Diff line
@@ -113,3 +113,62 @@ to apply at each uncore* level.

Support for "current_freq_khz" is available only at each fabric cluster
level (i.e., in uncore* directory).

Efficiency vs. Latency Tradeoff
-------------------------------

The Efficiency Latency Control (ELC) feature improves performance
per watt. With this feature hardware power management algorithms
optimize trade-off between latency and power consumption. For some
latency sensitive workloads further tuning can be done by SW to
get desired performance.

The hardware monitors the average CPU utilization across all cores
in a power domain at regular intervals and decides an uncore frequency.
While this may result in the best performance per watt, workload may be
expecting higher performance at the expense of power. Consider an
application that intermittently wakes up to perform memory reads on an
otherwise idle system. In such cases, if hardware lowers uncore
frequency, then there may be delay in ramp up of frequency to meet
target performance.

The ELC control defines some parameters which can be changed from SW.
If the average CPU utilization is below a user-defined threshold
(elc_low_threshold_percent attribute below), the user-defined uncore
floor frequency will be used (elc_floor_freq_khz attribute below)
instead of hardware calculated minimum.

Similarly in high load scenario where the CPU utilization goes above
the high threshold value (elc_high_threshold_percent attribute below)
instead of jumping to maximum uncore frequency, frequency is increased
in 100MHz steps. This avoids consuming unnecessarily high power
immediately with CPU utilization spikes.

Attributes for efficiency latency control:

``elc_floor_freq_khz``
	This attribute is used to get/set the efficiency latency floor frequency.
	If this variable is lower than the 'min_freq_khz', it is ignored by
	the firmware.

``elc_low_threshold_percent``
	This attribute is used to get/set the efficiency latency control low
	threshold. This attribute is in percentages of CPU utilization.

``elc_high_threshold_percent``
	This attribute is used to get/set the efficiency latency control high
	threshold. This attribute is in percentages of CPU utilization.

``elc_high_threshold_enable``
	This attribute is used to enable/disable the efficiency latency control
	high threshold. Write '1' to enable, '0' to disable.

Example system configuration below, which does following:
  * when CPU utilization is less than 10%: sets uncore frequency to 800MHz
  * when CPU utilization is higher than 95%: increases uncore frequency in
    100MHz steps, until power limit is reached

  elc_floor_freq_khz:800000
  elc_high_threshold_percent:95
  elc_high_threshold_enable:1
  elc_low_threshold_percent:10
+47 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/platform/microsoft,surface-sam.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Surface System Aggregator Module (SAM, SSAM)

maintainers:
  - Konrad Dybcio <konradybcio@kernel.org>

description: |
  Surface devices use a standardized embedded controller to let the
  operating system interface with various hardware functions. The
  specific functionalities are modeled as subdevices and matched on
  five levels: domain, category, target, instance and function.

properties:
  compatible:
    const: microsoft,surface-sam

  interrupts:
    maxItems: 1

  current-speed: true

required:
  - compatible
  - interrupts

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>
    uart {
        embedded-controller {
            compatible = "microsoft,surface-sam";

            interrupts-extended = <&tlmm 91 IRQ_TYPE_EDGE_RISING>;

            pinctrl-0 = <&ssam_state>;
            pinctrl-names = "default";

            current-speed = <4000000>;
        };
    };
+1 −1
Original line number Diff line number Diff line
@@ -88,7 +88,7 @@ properties:
      TX FIFO threshold configuration (in bytes).

patternProperties:
  "^(bluetooth|bluetooth-gnss|gnss|gps|mcu|onewire)$":
  "^(bluetooth|bluetooth-gnss|embedded-controller|gnss|gps|mcu|onewire)$":
    if:
      type: object
    then:
+21 −2
Original line number Diff line number Diff line
@@ -11552,6 +11552,24 @@ S: Maintained
F:	Documentation/ABI/testing/sysfs-driver-intel-m10-bmc-sec-update
F:	drivers/fpga/intel-m10-bmc-sec-update.c
INTEL MID (Mobile Internet Device) PLATFORM
M:	Andy Shevchenko <andy@kernel.org>
L:	linux-kernel@vger.kernel.org
S:	Supported
F:	arch/x86/include/asm/intel-mid.h
F:	arch/x86/pci/intel_mid_pci.c
F:	arch/x86/platform/intel-mid/
F:	drivers/extcon/extcon-intel-mrfld.c
F:	drivers/iio/adc/intel_mrfld_adc.c
F:	drivers/mfd/intel_soc_pmic_mrfld.c
F:	drivers/platform/x86/intel/mrfld_pwrbtn.c
F:	drivers/platform/x86/intel_scu_*
F:	drivers/staging/media/atomisp/
F:	drivers/watchdog/intel-mid_wdt.c
F:	include/linux/mfd/intel_soc_pmic_mrfld.h
F:	include/linux/platform_data/x86/intel-mid_wdt.h
F:	include/linux/platform_data/x86/intel_scu_ipc.h
INTEL P-Unit IPC DRIVER
M:	Zha Qipeng <qipeng.zha@intel.com>
L:	platform-driver-x86@vger.kernel.org
@@ -11614,8 +11632,8 @@ F: drivers/counter/intel-qep.c
INTEL SCU DRIVERS
M:	Mika Westerberg <mika.westerberg@linux.intel.com>
S:	Maintained
F:	arch/x86/include/asm/intel_scu_ipc.h
F:	drivers/platform/x86/intel_scu_*
F:	include/linux/platform_data/x86/intel_scu_ipc.h
INTEL SDSI DRIVER
M:	David E. Box <david.e.box@linux.intel.com>
@@ -11690,7 +11708,8 @@ F: drivers/platform/x86/intel/uncore-frequency/
INTEL VENDOR SPECIFIC EXTENDED CAPABILITIES DRIVER
M:	David E. Box <david.e.box@linux.intel.com>
S:	Supported
F:	drivers/platform/x86/intel/vsec.*
F:	drivers/platform/x86/intel/vsec.c
F:	include/linux/intel_vsec.h
INTEL VIRTUAL BUTTON DRIVER
M:	AceLan Kao <acelan.kao@canonical.com>
+6 −0
Original line number Diff line number Diff line
@@ -3076,9 +3076,13 @@ config OLPC_XO15_SCI
	   - AC adapter status updates
	   - Battery status updates

config GEODE_COMMON
	bool

config ALIX
	bool "PCEngines ALIX System Support (LED setup)"
	select GPIOLIB
	select GEODE_COMMON
	help
	  This option enables system support for the PCEngines ALIX.
	  At present this just sets up LEDs for GPIO control on
@@ -3093,12 +3097,14 @@ config ALIX
config NET5501
	bool "Soekris Engineering net5501 System Support (LEDS, GPIO, etc)"
	select GPIOLIB
	select GEODE_COMMON
	help
	  This option enables system support for the Soekris Engineering net5501.

config GEOS
	bool "Traverse Technologies GEOS System Support (LEDS, GPIO, etc)"
	select GPIOLIB
	select GEODE_COMMON
	depends on DMI
	help
	  This option enables system support for the Traverse Technologies GEOS.
Loading