Skip to content

Commit c57dd66

Browse files
committed
Merge remote-tracking branch 'linux-pm/linux-next' into sound/upstream-20250708
2 parents b2a427e + 3a1096a commit c57dd66

42 files changed

Lines changed: 780 additions & 249 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Documentation/admin-guide/pm/cpufreq.rst

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,9 @@ policy limits change after that.
398398

399399
This governor does not do anything by itself. Instead, it allows user space
400400
to set the CPU frequency for the policy it is attached to by writing to the
401-
``scaling_setspeed`` attribute of that policy.
401+
``scaling_setspeed`` attribute of that policy. Though the intention may be to
402+
set an exact frequency for the policy, the actual frequency may vary depending
403+
on hardware coordination, thermal and power limits, and other factors.
402404

403405
``schedutil``
404406
-------------

Documentation/driver-api/thermal/intel_dptf.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,15 @@ All these controls needs admin privilege to update.
206206
Update a new temperature target in milli degree celsius for hardware to
207207
use for the temperature control.
208208

209+
``thermal_tolerance`` (RW)
210+
This attribute ranges from 0 to 7, where 0 represents
211+
the most aggressive control to avoid any temperature overshoots, and
212+
7 represents a more graceful approach, favoring performance even at
213+
the expense of temperature overshoots.
214+
Note: This level may not scale linearly. For example, a value of 3 does
215+
not necessarily imply a 50% improvement in performance compared to a
216+
value of 0.
217+
209218
Given that this is platform temperature control, it is expected that a
210219
single user-level manager owns and manages the controls. If multiple
211220
user-level software applications attempt to write different targets, it

Documentation/firmware-guide/acpi/apei/einj.rst

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ The following files belong to it:
5959
0x00000200 Platform Correctable
6060
0x00000400 Platform Uncorrectable non-fatal
6161
0x00000800 Platform Uncorrectable fatal
62+
V2_0x00000001 EINJV2 Processor Error
63+
V2_0x00000002 EINJV2 Memory Error
64+
V2_0x00000004 EINJV2 PCI Express Error
6265
================ ===================================
6366

6467
The format of the file contents are as above, except present are only
@@ -88,6 +91,8 @@ The following files belong to it:
8891
Memory address and mask valid (param1 and param2).
8992
Bit 2
9093
PCIe (seg,bus,dev,fn) valid (see param4 below).
94+
Bit 3
95+
EINJv2 extension structure is valid
9196

9297
If set to zero, legacy behavior is mimicked where the type of
9398
injection specifies just one bit set, and param1 is multiplexed.
@@ -122,6 +127,13 @@ The following files belong to it:
122127
this actually works depends on what operations the BIOS actually
123128
includes in the trigger phase.
124129

130+
- component_id0 .. component_idN, component_syndrome0 .. component_syndromeN
131+
132+
These files are used to set the "Component Array" field
133+
of the EINJv2 Extension Structure. Each holds a 128-bit
134+
hex value. Writing just a newline to any of these files
135+
sets an invalid (all-ones) value.
136+
125137
CXL error types are supported from ACPI 6.5 onwards (given a CXL port
126138
is present). The EINJ user interface for CXL error types is at
127139
<debugfs mount point>/cxl. The following files belong to it:
@@ -194,6 +206,27 @@ An error injection example::
194206
# echo 0x8 > error_type # Choose correctable memory error
195207
# echo 1 > error_inject # Inject now
196208

209+
An EINJv2 error injection example::
210+
211+
# cd /sys/kernel/debug/apei/einj
212+
# cat available_error_type # See which errors can be injected
213+
0x00000002 Processor Uncorrectable non-fatal
214+
0x00000008 Memory Correctable
215+
0x00000010 Memory Uncorrectable non-fatal
216+
V2_0x00000001 EINJV2 Processor Error
217+
V2_0x00000002 EINJV2 Memory Error
218+
219+
# echo 0x12345000 > param1 # Set memory address for injection
220+
# echo 0xfffffffffffff000 > param2 # Range - anywhere in this page
221+
# echo 0x1 > component_id0 # First device ID
222+
# echo 0x4 > component_syndrome0 # First error syndrome
223+
# echo 0x2 > component_id1 # Second device ID
224+
# echo 0x4 > component_syndrome1 # Second error syndrome
225+
# echo '' > component_id2 # Mark id2 invalid to terminate list
226+
# echo V2_0x2 > error_type # Choose EINJv2 memory error
227+
# echo 0xa > flags # set flags to indicate EINJv2
228+
# echo 1 > error_inject # Inject now
229+
197230
You should see something like this in dmesg::
198231

199232
[22715.830801] EDAC sbridge MC3: HANDLING MCE MEMORY ERROR

Documentation/firmware-guide/acpi/gpio-properties.rst

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ _DSD Device Properties Related to GPIO
66

77
With the release of ACPI 5.1, the _DSD configuration object finally
88
allows names to be given to GPIOs (and other things as well) returned
9-
by _CRS. Previously, we were only able to use an integer index to find
9+
by _CRS. Previously we were only able to use an integer index to find
1010
the corresponding GPIO, which is pretty error prone (it depends on
1111
the _CRS output ordering, for example).
1212

@@ -49,11 +49,11 @@ index
4949
pin
5050
Pin in the GpioIo()/GpioInt() resource. Typically this is zero.
5151
active_low
52-
If 1, the GPIO is marked as active_low.
52+
If 1, the GPIO is marked as active-low.
5353

5454
Since ACPI GpioIo() resource does not have a field saying whether it is
55-
active low or high, the "active_low" argument can be used here. Setting
56-
it to 1 marks the GPIO as active low.
55+
active-low or active-high, the "active_low" argument can be used here.
56+
Setting it to 1 marks the GPIO as active-low.
5757

5858
Note, active_low in _DSD does not make sense for GpioInt() resource and
5959
must be 0. GpioInt() resource has its own means of defining it.
@@ -231,8 +231,8 @@ In those cases ACPI device identification objects, _HID, _CID, _CLS, _SUB, _HRV,
231231
available to the driver can be used to identify the device and that is supposed
232232
to be sufficient to determine the meaning and purpose of all of the GPIO lines
233233
listed by the GpioIo()/GpioInt() resources returned by _CRS. In other words,
234-
the driver is supposed to know what to use the GpioIo()/GpioInt() resources for
235-
once it has identified the device. Having done that, it can simply assign names
234+
the driver is supposed to know what to use from the GpioIo()/GpioInt() resources
235+
for once it has identified the device. Having done that, it can simply assign names
236236
to the GPIO lines it is going to use and provide the GPIO subsystem with a
237237
mapping between those names and the ACPI GPIO resources corresponding to them.
238238

@@ -252,9 +252,9 @@ question would look like this::
252252
static const struct acpi_gpio_params shutdown_gpio = { 0, 0, false };
253253

254254
static const struct acpi_gpio_mapping bluetooth_acpi_gpios[] = {
255-
{ "reset-gpios", &reset_gpio, 1 },
256-
{ "shutdown-gpios", &shutdown_gpio, 1 },
257-
{ }
255+
{ "reset-gpios", &reset_gpio, 1 },
256+
{ "shutdown-gpios", &shutdown_gpio, 1 },
257+
{ }
258258
};
259259

260260
Next, the mapping table needs to be passed as the second argument to
@@ -270,7 +270,7 @@ Using the _CRS fallback
270270

271271
If a device does not have _DSD or the driver does not create ACPI GPIO
272272
mapping, the Linux GPIO framework refuses to return any GPIOs. This is
273-
because the driver does not know what it actually gets. For example if we
273+
because the driver does not know what it actually gets. For example, if we
274274
have a device like below::
275275

276276
Device (BTH)
@@ -292,7 +292,7 @@ The driver might expect to get the right GPIO when it does::
292292
...error handling...
293293

294294
but since there is no way to know the mapping between "reset" and
295-
the GpioIo() in _CRS desc will hold ERR_PTR(-ENOENT).
295+
the GpioIo() in _CRS the desc will hold ERR_PTR(-ENOENT).
296296

297297
The driver author can solve this by passing the mapping explicitly
298298
(this is the recommended way and it's documented in the above chapter).
@@ -318,15 +318,15 @@ Case 1::
318318
desc = gpiod_get(dev, "non-null-connection-id", flags);
319319
desc = gpiod_get_index(dev, "non-null-connection-id", index, flags);
320320

321+
Case 1 assumes that corresponding ACPI device description must have
322+
defined device properties and will prevent from getting any GPIO resources
323+
otherwise.
324+
321325
Case 2::
322326

323327
desc = gpiod_get(dev, NULL, flags);
324328
desc = gpiod_get_index(dev, NULL, index, flags);
325329

326-
Case 1 assumes that corresponding ACPI device description must have
327-
defined device properties and will prevent to getting any GPIO resources
328-
otherwise.
329-
330330
Case 2 explicitly tells GPIO core to look for resources in _CRS.
331331

332332
Be aware that gpiod_get_index() in cases 1 and 2, assuming that there

drivers/acpi/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,7 @@ config ACPI_TABLE_OVERRIDE_VIA_BUILTIN_INITRD
394394

395395
config ACPI_DEBUG
396396
bool "Debug Statements"
397+
default y
397398
help
398399
The ACPI subsystem can produce debug output. Saying Y enables this
399400
output and increases the kernel size by around 50K.

drivers/acpi/acpi_processor.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ static inline int acpi_processor_hotadd_init(struct acpi_processor *pr,
275275

276276
static int acpi_processor_get_info(struct acpi_device *device)
277277
{
278-
union acpi_object object = { 0 };
278+
union acpi_object object = { .processor = { 0 } };
279279
struct acpi_buffer buffer = { sizeof(union acpi_object), &object };
280280
struct acpi_processor *pr = acpi_driver_data(device);
281281
int device_declaration = 0;

drivers/acpi/acpica/extrace.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,9 @@ acpi_ex_trace_point(acpi_trace_event_type type,
136136

137137
if (pathname) {
138138
ACPI_DEBUG_PRINT((ACPI_DB_TRACE_POINT,
139-
"%s %s [0x%p:%s] execution.\n",
139+
"%s %s [%s] execution.\n",
140140
acpi_ex_get_trace_event_name(type),
141-
begin ? "Begin" : "End", aml, pathname));
141+
begin ? "Begin" : "End", pathname));
142142
} else {
143143
ACPI_DEBUG_PRINT((ACPI_DB_TRACE_POINT,
144144
"%s %s [0x%p] execution.\n",

drivers/acpi/apei/apei-internal.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ static inline u32 cper_estatus_len(struct acpi_hest_generic_status *estatus)
131131

132132
int apei_osc_setup(void);
133133

134-
int einj_get_available_error_type(u32 *type);
134+
int einj_get_available_error_type(u32 *type, int einj_action);
135135
int einj_error_inject(u32 type, u32 flags, u64 param1, u64 param2, u64 param3,
136136
u64 param4);
137137
int einj_cxl_rch_error_inject(u32 type, u32 flags, u64 param1, u64 param2,

0 commit comments

Comments
 (0)