<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/acpi/platform_profile.c, branch linux-6.10.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-6.10.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-6.10.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2024-04-15T13:46:56Z</updated>
<entry>
<title>ACPI: platform-profile: add platform_profile_cycle()</title>
<updated>2024-04-15T13:46:56Z</updated>
<author>
<name>Gergo Koteles</name>
</author>
<published>2024-04-08T17:35:10Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ba95eb44676d68049490af617049a7bf68946527'/>
<id>urn:sha1:ba95eb44676d68049490af617049a7bf68946527</id>
<content type='text'>
Some laptops have a key to switch platform profiles.

Add a platform_profile_cycle() function to cycle between the enabled
profiles.

Signed-off-by: Gergo Koteles &lt;soyer@irl.hu&gt;
Acked-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
Link: https://lore.kernel.org/r/5a97deddf72aa5e764d881eb39a7ba35c01a903e.1712597199.git.soyer@irl.hu
Reviewed-by: Hans de Goede &lt;hdegoede@redhat.com&gt;
Signed-off-by: Hans de Goede &lt;hdegoede@redhat.com&gt;
</content>
</entry>
<entry>
<title>ACPI: platform-profile: call sysfs_notify() from platform_profile_store()</title>
<updated>2021-08-16T16:32:02Z</updated>
<author>
<name>Hans de Goede</name>
</author>
<published>2021-08-16T11:30:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b25d5a1cd19896bb87b399d6e24896cf6f854d44'/>
<id>urn:sha1:b25d5a1cd19896bb87b399d6e24896cf6f854d44</id>
<content type='text'>
Drivers like thinkpad_acpi and ideapad_laptop call the
platform_profile_notify() helper when the profile is changed by hardware
(the embedded-controller/EC) in response to an EC handled hotkey.

This allows userspace to monitor for such changes by polling for POLLPRI
on the platform_profile sysfs file. But the profile can also be changed
underneath a userspace program monitoring it by anonther userspace program
storing a new value.

Add a sysfs_notify() call to platform_profile_store(), so that userspace
programs monitoring for changes also get notified in this case.

Also update the documentation to document that POLLPRI polling can be
used to watch for changes.

Signed-off-by: Hans de Goede &lt;hdegoede@redhat.com&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
<entry>
<title>ACPI: platform: Add balanced-performance platform profile</title>
<updated>2021-02-24T13:52:41Z</updated>
<author>
<name>Maximilian Luz</name>
</author>
<published>2021-02-11T20:17:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6c0b5e3fc6b536b125a66dfee103f3bc26d386f6'/>
<id>urn:sha1:6c0b5e3fc6b536b125a66dfee103f3bc26d386f6</id>
<content type='text'>
Some devices, including most Microsoft Surface devices, have a platform
profile somewhere inbetween balanced and performance. More specifically,
adding this profile allows the following mapping on Surface devices:

  Vendor Name           Platform Profile
  ------------------------------------------
  Battery Saver         low-power
  Recommended           balanced
  Better Performance    balanced-performance
  Best Performance      performance

Suggested-by: Hans de Goede &lt;hdegoede@redhat.com&gt;
Signed-off-by: Maximilian Luz &lt;luzmaximilian@gmail.com&gt;
Reviewed-by: Hans de Goede &lt;hdegoede@redhat.com&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
<entry>
<title>ACPI: platform-profile: Fix possible deadlock in platform_profile_remove()</title>
<updated>2021-01-27T17:48:12Z</updated>
<author>
<name>Hans de Goede</name>
</author>
<published>2021-01-25T19:09:09Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=041142d7d25294c17d39552ae51c1d8d89434010'/>
<id>urn:sha1:041142d7d25294c17d39552ae51c1d8d89434010</id>
<content type='text'>
After a rmmod thinkpad_acpi, lockdep pointed out this possible deadlock:

Our _show and _store sysfs attr functions get called with the kn-&gt;active
lock held for the sysfs attr and then take the profile_lock.
sysfs_remove_group() also takes the kn-&gt;active lock for the sysfs attr,
so if we call it with the profile_lock held, then we get an ABBA deadlock.

platform_profile_remove() must only be called by drivers which have
first *successfully* called platform_profile_register(). Anything else
is a driver bug. So the check for cur_profile being set before calling
sysfs_remove_group() is not necessary and it can be dropped.

It is safe to call sysfs_remove_group() without holding the profile_lock
since the attr-group group cannot be re-added until after we clear
cur_profile.

Change platform_profile_remove() to only hold the profile_lock while
clearing the cur_profile, fixing the deadlock.

Signed-off-by: Hans de Goede &lt;hdegoede@redhat.com&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
<entry>
<title>ACPI: platform-profile: Introduce object pointers to callbacks</title>
<updated>2021-01-27T17:45:29Z</updated>
<author>
<name>Jiaxun Yang</name>
</author>
<published>2021-01-25T11:59:57Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=84f9017c37c479c4f70456a645d24d2296ad2208'/>
<id>urn:sha1:84f9017c37c479c4f70456a645d24d2296ad2208</id>
<content type='text'>
Add an object pointer to handler callbacks to avoid the need for
drivers to have a global variable to get to their driver-data
struct.

Link: https://lore.kernel.org/linux-acpi/6a29f338-d9e4-150c-81dd-2ffb54f5bc35@redhat.com/
Link: https://lore.kernel.org/r/20210114073429.176462-3-jiaxun.yang@flygoat.com
Signed-off-by: Jiaxun Yang &lt;jiaxun.yang@flygoat.com&gt;
Suggested-by: Hans de Goede &lt;hdegoede@redhat.com&gt;
Signed-off-by: Hans de Goede &lt;hdegoede@redhat.com&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
<entry>
<title>ACPI: platform-profile: Drop const qualifier for cur_profile</title>
<updated>2021-01-25T16:30:10Z</updated>
<author>
<name>Jiaxun Yang</name>
</author>
<published>2021-01-25T11:59:56Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=9d56653d14cd5e545599cd9e3013daa17df50cd4'/>
<id>urn:sha1:9d56653d14cd5e545599cd9e3013daa17df50cd4</id>
<content type='text'>
Drop the const qualifier from the static global cur_profile
pointer declaration.

This is a preparation patch for passing the cur_profile pointer as
parameter to the profile_get() and profile_set() callbacks so that
drivers dynamically allocating their driver-data struct, with their
platform_profile_handler struct embedded, can use this pointer to
get to their driver-data.

Note this also requires dropping the const from the pprof
platform_profile_register() function argument. Dropping this
const is not a problem, non of the queued up consumers of
platform_profile_register() actually pass in a const pointer.

Link: https://lore.kernel.org/linux-acpi/5e7a4d87-52ef-e487-9cc2-8e7094beaa08@redhat.com/
Link: https://lore.kernel.org/r/20210114073429.176462-2-jiaxun.yang@flygoat.com
Suggested-by: Hans de Goede &lt;hdegoede@redhat.com&gt;
Signed-off-by: Jiaxun Yang &lt;jiaxun.yang@flygoat.com&gt;
[ hdegoede@redhat.com: Also remove const from platform_profile_register() ]
Signed-off-by: Hans de Goede &lt;hdegoede@redhat.com&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
<entry>
<title>ACPI: platform: Add platform profile support</title>
<updated>2020-12-30T17:34:53Z</updated>
<author>
<name>Mark Pearson</name>
</author>
<published>2020-12-30T00:18:26Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a2ff95e018f1d2bc816f3078d5110a655e355f18'/>
<id>urn:sha1:a2ff95e018f1d2bc816f3078d5110a655e355f18</id>
<content type='text'>
This is the initial implementation of the platform-profile feature.
It provides the details discussed and outlined in the
sysfs-platform_profile document.

Many modern systems have the ability to modify the operating profile to
control aspects like fan speed, temperature and power levels. This
module provides a common sysfs interface that platform modules can register
against to control their individual profile options.

Signed-off-by: Mark Pearson &lt;markpearson@lenovo.com&gt;
Reviewed-by: Hans de Goede &lt;hdegoede@redhat.com&gt;
[ rjw: Use full words in enum values names ]
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
</feed>
