Skip to content

Multiple fixes and man page update#112

Open
maciejwieczorretman wants to merge 11 commits intointel:mainfrom
maciejwieczorretman:public_fixes
Open

Multiple fixes and man page update#112
maciejwieczorretman wants to merge 11 commits intointel:mainfrom
maciejwieczorretman:public_fixes

Conversation

@maciejwieczorretman
Copy link
Copy Markdown

Bugs fixed:

  • Proxy not working when regular polling is enabled
  • Proxy not working when entering a power profile with DEFAULT_OFF state
  • Isolated mode not working due to nothing written into cpuset.exclusive file
  • ITMT not working after the sysfs file was moved to debugfs
  • 16 core PTL config file (M204) specified 4 cores too many in the ActiveCPUs settings

Man pages update:

  • Emphasize what's expected from the user when it comes to LPMD configuration
  • Update generic information with things that changed since the man pages were last edited
  • Move currently unused config options description to a separate section in the config man page.
  • General formatting cleanup so the source code is easier to browse and edit

cgroup isolation mode doesn't work in LPMD because when writing
'isolated' to cpuset.cpus.partition file the expectation is that
cpuset.cpus will be a subset of cpuset.cpus.exclusive of that cgroup.

The simple fix is to write the same content to cpuset.cpus and
cpuset.cpus.exclusive when switching into the isolated mode.

However a problem can appear if there are any other cgroups on the
system that have exclusive cpus claimed. For one LPMD will just shut
down if it can't set affinity into any cpu it wants during core type
discovery phase. Aside from that using this simple version of the fix
will later result in creating an invalid cgroup partition.

Signed-off-by: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
…val writes

When WLT proxy is enabled it's supposed to set it's own polling timeout.
The problem is in the state machine an early return happens - that
disables polling timeout - when the non-proxy polling is disabled. Given
that it has nothing to do with the proxy polling it should not interfere
in the proxy setting it's own timeouts.

Change order of the early returns so that it happens after the WLT proxy
check - thereby not overwriting the interval assigned by the proxy code.

Signed-off-by: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
If one profile, let's say the balanced one, is set to enable AUTO LPMD,
and another one like the performance one, has LPMD OFF, then a deadlock
might happen when using the wlt proxy system. Basically when going into
the OFF state, polling gets disabled and there is no specific code flow
to get it enabled again after switching back to an AUTO state.

This only affects the wlt proxy as other polling and non-polling systems
seem to be able to get themselves back up again.

Reinitialize the polling interval when switching power profiles.

Signed-off-by: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
ITMT became broken when the enabling file was moved to the debugfs. The
data in the file also changed from printing out 0 or 1 to printing out N
or Y characters. However 0 and 1 are still accepted for writing.

Change the file that's being accesses to the debugfs and add helpers for
the Y/N format.

Signed-off-by: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
The cpu name in the config file is described as having 16 cores while
the specific tags in the config file try to enable higher core indices
than 16.

Correct the indices.

Signed-off-by: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
Get the readme source to a readable format for editing.

Signed-off-by: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
Make clear how to start the program to avoid confusion around the
default behavior.

Signed-off-by: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
Update the main man page with new informations about LPMD. Mention what
are the expectation towards the user, clear up intel_lpmd_control
section since it has it's own man page and add how to enable the system
service persistently in the examples section.

Signed-off-by: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
Cleanup the long lines and link in the config man page at the end.

Signed-off-by: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
Cleanup some topics that expanded since they were written. Make general
cleanups and small corrections to typos or style.

Signed-off-by: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
Some options are not currently doing anything. Move them out of the
proper part of the man page to avoid confusing users.

Signed-off-by: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
Run intel_lpmd as a service with logs directed to system journal

.TP
.B sudo systemctl enable intel_lpmd.service --now
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this not be:
sudo systemctl enable --now intel_lpmd.service

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think both work, for some reason I've always put '--now' at the end when configuring anything on arch linux. If there will be any changes to make I'll change it so it's a bit more tidy. Otherwise I'll fix it when I'll be updating man pages the next time

@ptr1337
Copy link
Copy Markdown

ptr1337 commented Apr 9, 2026

Looked a bit over and looking good! Ill deploy it to the CachyOS fork (with the profile changes) and will do some testing.

Thanks for working on this.

@maciejwieczorretman
Copy link
Copy Markdown
Author

Looked a bit over and looking good! Ill deploy it to the CachyOS fork (with the profile changes) and will do some testing.

Thanks for working on this.

Thanks for checking it out and testing!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants