powercap: intel_rapl: Fix a sparse warning in TPMI interface
authorZhang Rui <rui.zhang@intel.com>
Tue, 25 Jul 2023 05:39:12 +0000 (13:39 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 1 Aug 2023 11:45:08 +0000 (13:45 +0200)
commit16e95a62eed18864aecac404f1e4eed764c363f2
tree70d77f724539bb5a1ca8163dacc97bd6713f1876
parent5d0c230f1de8c7515b6567d9afba1f196fb4e2f4
powercap: intel_rapl: Fix a sparse warning in TPMI interface

Depends on the interface used, the RAPL registers can be either MSR
indexes or memory mapped IO addresses. Current RAPL common code uses u64
to save both MSR and memory mapped IO registers. With this, when
handling register address with an __iomem annotation, it triggers a
sparse warning like below:

sparse warnings: (new ones prefixed by >>)
>> drivers/powercap/intel_rapl_tpmi.c:141:41: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected unsigned long long [usertype] *tpmi_rapl_regs @@     got void [noderef] __iomem * @@
   drivers/powercap/intel_rapl_tpmi.c:141:41: sparse:     expected unsigned long long [usertype] *tpmi_rapl_regs
   drivers/powercap/intel_rapl_tpmi.c:141:41: sparse:     got void [noderef] __iomem *

Fix the problem by using a union to save the registers instead.

Suggested-by: David Laight <David.Laight@ACULAB.COM>
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202307031405.dy3druuy-lkp@intel.com/
Tested-by: Wang Wendy <wendy.wang@intel.com>
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
[ rjw: Subject and changelog edits ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/powercap/intel_rapl_common.c
drivers/powercap/intel_rapl_msr.c
drivers/powercap/intel_rapl_tpmi.c
drivers/thermal/intel/int340x_thermal/processor_thermal_rapl.c
include/linux/intel_rapl.h