drivers/pci/pci.h:343:17: sparse: sparse: cast from restricted pci_channel_state_t

From: kernel test robot
Date: Fri Dec 01 2023 - 03:55:15 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 994d5c58e50e91bb02c7be4a91d5186292a895c8
commit: c82458101d5490230d735caecce14c9c27b1010c PCI/PM: Mark devices disconnected if upstream PCIe link is down on resume
date: 9 weeks ago
config: loongarch-randconfig-r025-20230627 (https://download.01.org/0day-ci/archive/20231201/202312011656.e05BXvlx-lkp@xxxxxxxxx/config)
compiler: loongarch64-linux-gcc (GCC) 12.3.0
reproduce: (https://download.01.org/0day-ci/archive/20231201/202312011656.e05BXvlx-lkp@xxxxxxxxx/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 <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202312011656.e05BXvlx-lkp@xxxxxxxxx/

sparse warnings: (new ones prefixed by >>)
drivers/pci/pci-driver.c:522:42: sparse: sparse: restricted pci_power_t degrades to integer
drivers/pci/pci-driver.c:522:61: sparse: sparse: restricted pci_power_t degrades to integer
drivers/pci/pci-driver.c:757:28: sparse: sparse: restricted pci_power_t degrades to integer
drivers/pci/pci-driver.c:757:46: sparse: sparse: restricted pci_power_t degrades to integer
drivers/pci/pci-driver.c: note: in included file (through include/linux/mmzone.h, include/linux/gfp.h, include/linux/xarray.h, ...):
include/linux/page-flags.h:242:46: sparse: sparse: self-comparison always evaluates to false
drivers/pci/pci-driver.c:389:19: sparse: sparse: self-comparison always evaluates to false
drivers/pci/pci-driver.c: note: in included file:
>> drivers/pci/pci.h:343:17: sparse: sparse: cast from restricted pci_channel_state_t
>> drivers/pci/pci.h:343:17: sparse: sparse: cast to restricted pci_channel_state_t
drivers/pci/pci.h:346:23: sparse: sparse: cast from restricted pci_channel_state_t
drivers/pci/pci.h:346:23: sparse: sparse: cast from restricted pci_channel_state_t
drivers/pci/pci.h:346:23: sparse: sparse: cast to restricted pci_channel_state_t
drivers/pci/pci.h:350:23: sparse: sparse: cast from restricted pci_channel_state_t
drivers/pci/pci.h:350:23: sparse: sparse: cast from restricted pci_channel_state_t
drivers/pci/pci.h:350:23: sparse: sparse: cast to restricted pci_channel_state_t

vim +343 drivers/pci/pci.h

ac04840350e2c2 Lukas Wunner 2023-03-11 324
a6bd101b8f84f9 Keith Busch 2018-09-20 325 /**
a6bd101b8f84f9 Keith Busch 2018-09-20 326 * pci_dev_set_io_state - Set the new error state if possible.
a6bd101b8f84f9 Keith Busch 2018-09-20 327 *
347269c113f10f Krzysztof Wilczyński 2021-07-03 328 * @dev: PCI device to set new error_state
347269c113f10f Krzysztof Wilczyński 2021-07-03 329 * @new: the state we want dev to be in
a6bd101b8f84f9 Keith Busch 2018-09-20 330 *
74ff8864cc842b Lukas Wunner 2023-01-20 331 * If the device is experiencing perm_failure, it has to remain in that state.
74ff8864cc842b Lukas Wunner 2023-01-20 332 * Any other transition is allowed.
a6bd101b8f84f9 Keith Busch 2018-09-20 333 *
a6bd101b8f84f9 Keith Busch 2018-09-20 334 * Returns true if state has been changed to the requested state.
a6bd101b8f84f9 Keith Busch 2018-09-20 335 */
a6bd101b8f84f9 Keith Busch 2018-09-20 336 static inline bool pci_dev_set_io_state(struct pci_dev *dev,
a6bd101b8f84f9 Keith Busch 2018-09-20 337 pci_channel_state_t new)
a6bd101b8f84f9 Keith Busch 2018-09-20 338 {
74ff8864cc842b Lukas Wunner 2023-01-20 339 pci_channel_state_t old;
a6bd101b8f84f9 Keith Busch 2018-09-20 340
a6bd101b8f84f9 Keith Busch 2018-09-20 341 switch (new) {
a6bd101b8f84f9 Keith Busch 2018-09-20 342 case pci_channel_io_perm_failure:
74ff8864cc842b Lukas Wunner 2023-01-20 @343 xchg(&dev->error_state, pci_channel_io_perm_failure);
74ff8864cc842b Lukas Wunner 2023-01-20 344 return true;
a6bd101b8f84f9 Keith Busch 2018-09-20 345 case pci_channel_io_frozen:
74ff8864cc842b Lukas Wunner 2023-01-20 346 old = cmpxchg(&dev->error_state, pci_channel_io_normal,
74ff8864cc842b Lukas Wunner 2023-01-20 347 pci_channel_io_frozen);
74ff8864cc842b Lukas Wunner 2023-01-20 348 return old != pci_channel_io_perm_failure;
a6bd101b8f84f9 Keith Busch 2018-09-20 349 case pci_channel_io_normal:
74ff8864cc842b Lukas Wunner 2023-01-20 350 old = cmpxchg(&dev->error_state, pci_channel_io_frozen,
74ff8864cc842b Lukas Wunner 2023-01-20 351 pci_channel_io_normal);
74ff8864cc842b Lukas Wunner 2023-01-20 352 return old != pci_channel_io_perm_failure;
74ff8864cc842b Lukas Wunner 2023-01-20 353 default:
74ff8864cc842b Lukas Wunner 2023-01-20 354 return false;
a6bd101b8f84f9 Keith Busch 2018-09-20 355 }
a6bd101b8f84f9 Keith Busch 2018-09-20 356 }
89ee9f7680031d Keith Busch 2017-03-29 357

:::::: The code at line 343 was first introduced by commit
:::::: 74ff8864cc842be994853095dba6db48e716400a PCI: hotplug: Allow marking devices as disconnected during bind/unbind

:::::: TO: Lukas Wunner <lukas@xxxxxxxxx>
:::::: CC: Bjorn Helgaas <bhelgaas@xxxxxxxxxx>

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki