STRUCT IPS_RESIDENCY_INFO(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’œ struct ips_residency_info β€” okay bestie, let's talk

So this page lives in the Kernel API Manual (section 9, the big-kid kernel API section, iykyk), and it's literally all about struct ips_residency_info β€” the little struct that's holding all the info that comes from dmub_ips_residency_stats. It's giving "stats container main character energy" fr fr.


✨ SYNOPSIS ✨

Here's the whole vibe, copied exactly so you can't mess it up:

struct ips_residency_info {
    enum ips_residency_mode ips_mode;
    unsigned int residency_percent;
    unsigned int entry_counter;
    unsigned int total_active_time_us[2];
    unsigned int total_inactive_time_us[2];
    unsigned int histogram[16];
 };

Like… six fields, one enum, two arrays of length 2, one array of 16. That's the whole squad. 🫢


πŸŽ€ Members πŸŽ€

Okay so let's go field by field, because every single one of these matters and I'm not about to skip anyone (that would be so rude).

  • ips_mode β€” the mode of IPS that the follow stats appertain to. Like, which IPS mode all the stats after this one are talking about. The ✨ context✨ field, basically.
  • residency_percent β€” the percentage of time spent in the given IPS mode, measured in millipercent. Yes. Millipercent. Not percent. Millipercent. Keep that in mind or your math will be off and you'll be sad. 😭
  • entry_counter β€” the number of entries made in to this IPS state. Literally just counting how many times we hopped into this state. A tally. A little counter. Cute.
  • total_active_time_us β€” a uint32_t array of length 2 representing time in the given IPS mode, in microseconds. Index 0 is the lower 32 bits, index 1 is the upper 32 bits. So it's a 64-bit number wearing a two-piece outfit πŸ’… β€” don't read just one half and think you're done.
  • total_inactive_time_us β€” same deal, a uint32_t array of length 2 representing time outside the given IPS mode, in microseconds. Index 0 is lower 32 bits, index 1 is upper 32 bits. Again: two halves, one number. Do not ignore the upper half, bestie, I'm begging.
  • histogram β€” histogram of given IPS state durations. Bucket definitions live in dmub_ips.c β€” so if you're wondering what each of those 16 slots means, that's where you go. Not here. Go look. πŸ‘€

🌈 SEE ALSO 🌈

The kernel file this all hangs out in:

./drivers/gpu/drm/amd/display/dc/dc_dmub_srv.h

And the whole friend group of related functions, no cap:


Lowkey a reminder: those _us[2] fields are split 32-bit halves, and residency_percent is in millipercent. Get those two wrong and your residency math is gonna eat itself. πŸ™ˆ

⭐ Okay that's the whole page, bestie β€” sourced from ./drivers/gpu/drm/amd/display/dc, dated October 2026, and filed under struct ips_residency_info(9). Slay, go read your stats. πŸ’–πŸ¦‹

πŸ“¦ where this page comes from