Hi Mario, kernel test robot noticed the following build errors:
[auto build test ERROR on rafael-pm/linux-next] [also build test ERROR on rafael-pm/bleeding-edge linus/master v6.18-rc2 next-20251023] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Mario-Limonciello/PM-Allow-device-drivers-to-manage-the-frozen-state-of-a-device/20251022-235319 base: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git linux-next patch link: https://lore.kernel.org/r/20251022155114.48418-2-mario.limonciello%40amd.com patch subject: [PATCH 1/2] PM: Allow device drivers to manage the frozen state of a device config: riscv-randconfig-001-20251023 (https://download.01.org/0day-ci/archive/20251023/[email protected]/config) compiler: riscv32-linux-gcc (GCC) 8.5.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251023/[email protected]/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <[email protected]> | Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/ All errors (new ones prefixed by >>): drivers/base/power/main.c: In function 'device_resume': >> drivers/base/power/main.c:1114:25: error: 'struct dev_pm_info' has no member >> named 'is_frozen' if (error && dev->power.is_frozen) { ^ vim +1114 drivers/base/power/main.c 1026 1027 /** 1028 * device_resume - Execute "resume" callbacks for given device. 1029 * @dev: Device to handle. 1030 * @state: PM transition of the system being carried out. 1031 * @async: If true, the device is being resumed asynchronously. 1032 */ 1033 static void device_resume(struct device *dev, pm_message_t state, bool async) 1034 { 1035 pm_callback_t callback = NULL; 1036 const char *info = NULL; 1037 int error = 0; 1038 DECLARE_DPM_WATCHDOG_ON_STACK(wd); 1039 1040 TRACE_DEVICE(dev); 1041 TRACE_RESUME(0); 1042 1043 if (dev->power.syscore) 1044 goto Complete; 1045 1046 if (!dev->power.is_suspended) 1047 goto Complete; 1048 1049 dev->power.is_suspended = false; 1050 1051 if (dev->power.direct_complete) { 1052 /* 1053 * Allow new children to be added under the device after this 1054 * point if it has no PM callbacks. 1055 */ 1056 if (dev->power.no_pm_callbacks) 1057 dev->power.is_prepared = false; 1058 1059 /* Match the pm_runtime_disable() in device_suspend(). */ 1060 pm_runtime_enable(dev); 1061 goto Complete; 1062 } 1063 1064 if (!dpm_wait_for_superior(dev, async)) 1065 goto Complete; 1066 1067 dpm_watchdog_set(&wd, dev); 1068 device_lock(dev); 1069 1070 /* 1071 * This is a fib. But we'll allow new children to be added below 1072 * a resumed device, even if the device hasn't been completed yet. 1073 */ 1074 dev->power.is_prepared = false; 1075 1076 if (dev->pm_domain) { 1077 info = "power domain "; 1078 callback = pm_op(&dev->pm_domain->ops, state); 1079 goto Driver; 1080 } 1081 1082 if (dev->type && dev->type->pm) { 1083 info = "type "; 1084 callback = pm_op(dev->type->pm, state); 1085 goto Driver; 1086 } 1087 1088 if (dev->class && dev->class->pm) { 1089 info = "class "; 1090 callback = pm_op(dev->class->pm, state); 1091 goto Driver; 1092 } 1093 1094 if (dev->bus) { 1095 if (dev->bus->pm) { 1096 info = "bus "; 1097 callback = pm_op(dev->bus->pm, state); 1098 } else if (dev->bus->resume) { 1099 info = "legacy bus "; 1100 callback = dev->bus->resume; 1101 goto End; 1102 } 1103 } 1104 1105 Driver: 1106 if (!callback && dev->driver && dev->driver->pm) { 1107 info = "driver "; 1108 callback = pm_op(dev->driver->pm, state); 1109 } 1110 1111 End: 1112 error = dpm_run_callback(callback, dev, state, info); 1113 /* device manages frozen state */ > 1114 if (error && dev->power.is_frozen) { 1115 dev->power.is_suspended = true; 1116 error = 0; 1117 } 1118 1119 device_unlock(dev); 1120 dpm_watchdog_clear(&wd); 1121 1122 Complete: 1123 complete_all(&dev->power.completion); 1124 1125 TRACE_RESUME(error); 1126 1127 if (error) { 1128 WRITE_ONCE(async_error, error); 1129 dpm_save_failed_dev(dev_name(dev)); 1130 pm_dev_err(dev, state, async ? " async" : "", error); 1131 } 1132 1133 dpm_async_resume_subordinate(dev, async_resume); 1134 } 1135 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
