drivers/gpu/drm/gma500/opregion.c:324:20: sparse: sparse: incorrect type in argument 1 (different address spaces)

From: kernel test robot

Date: Mon Mar 23 2026 - 23:01:04 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: c369299895a591d96745d6492d4888259b004a9e
commit: d70da12453ac3797e0c54884305ccc894e8c817b hardening: Enable i386 FORTIFY_SOURCE on Clang 16+
date: 1 year ago
config: i386-randconfig-062-20260324 (https://download.01.org/0day-ci/archive/20260324/202603241049.fAX6rSes-lkp@xxxxxxxxx/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260324/202603241049.fAX6rSes-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/202603241049.fAX6rSes-lkp@xxxxxxxxx/

sparse warnings: (new ones prefixed by >>)
drivers/gpu/drm/gma500/opregion.c:294:25: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got struct opregion_header *header @@
drivers/gpu/drm/gma500/opregion.c:294:25: sparse: expected void volatile [noderef] __iomem *addr
drivers/gpu/drm/gma500/opregion.c:294:25: sparse: got struct opregion_header *header
>> drivers/gpu/drm/gma500/opregion.c:324:20: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const *const p @@ got void [noderef] __iomem *[assigned] base @@
drivers/gpu/drm/gma500/opregion.c:324:20: sparse: expected void const *const p
drivers/gpu/drm/gma500/opregion.c:324:20: sparse: got void [noderef] __iomem *[assigned] base
drivers/gpu/drm/gma500/opregion.c:330:26: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct opregion_header *header @@ got void [noderef] __iomem *[assigned] base @@
drivers/gpu/drm/gma500/opregion.c:330:26: sparse: expected struct opregion_header *header
drivers/gpu/drm/gma500/opregion.c:330:26: sparse: got void [noderef] __iomem *[assigned] base
drivers/gpu/drm/gma500/opregion.c:331:23: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void *vbt @@ got void [noderef] __iomem * @@
drivers/gpu/drm/gma500/opregion.c:331:23: sparse: expected void *vbt
drivers/gpu/drm/gma500/opregion.c:331:23: sparse: got void [noderef] __iomem *
drivers/gpu/drm/gma500/opregion.c:338:32: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct opregion_acpi *acpi @@ got void [noderef] __iomem * @@
drivers/gpu/drm/gma500/opregion.c:338:32: sparse: expected struct opregion_acpi *acpi
drivers/gpu/drm/gma500/opregion.c:338:32: sparse: got void [noderef] __iomem *
drivers/gpu/drm/gma500/opregion.c:343:32: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct opregion_asle *asle @@ got void [noderef] __iomem * @@
drivers/gpu/drm/gma500/opregion.c:343:32: sparse: expected struct opregion_asle *asle
drivers/gpu/drm/gma500/opregion.c:343:32: sparse: got void [noderef] __iomem *

vim +324 drivers/gpu/drm/gma500/opregion.c

d839ede47a56ff5 Alan Cox 2012-05-03 275
d839ede47a56ff5 Alan Cox 2012-05-03 276 void psb_intel_opregion_fini(struct drm_device *dev)
d839ede47a56ff5 Alan Cox 2012-05-03 277 {
f71635e893c3832 Thomas Zimmermann 2021-09-20 278 struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
d839ede47a56ff5 Alan Cox 2012-05-03 279 struct psb_intel_opregion *opregion = &dev_priv->opregion;
d839ede47a56ff5 Alan Cox 2012-05-03 280
d839ede47a56ff5 Alan Cox 2012-05-03 281 if (!opregion->header)
d839ede47a56ff5 Alan Cox 2012-05-03 282 return;
d839ede47a56ff5 Alan Cox 2012-05-03 283
d839ede47a56ff5 Alan Cox 2012-05-03 284 if (opregion->acpi) {
d839ede47a56ff5 Alan Cox 2012-05-03 285 opregion->acpi->drdy = 0;
d839ede47a56ff5 Alan Cox 2012-05-03 286
d839ede47a56ff5 Alan Cox 2012-05-03 287 system_opregion = NULL;
d839ede47a56ff5 Alan Cox 2012-05-03 288 unregister_acpi_notifier(&psb_intel_opregion_notifier);
d839ede47a56ff5 Alan Cox 2012-05-03 289 }
d839ede47a56ff5 Alan Cox 2012-05-03 290
778e26dee5e6b3b Patrik Jakobsson 2014-03-11 291 cancel_work_sync(&opregion->asle_work);
778e26dee5e6b3b Patrik Jakobsson 2014-03-11 292
d839ede47a56ff5 Alan Cox 2012-05-03 293 /* just clear all opregion memory pointers now */
d839ede47a56ff5 Alan Cox 2012-05-03 @294 iounmap(opregion->header);
d839ede47a56ff5 Alan Cox 2012-05-03 295 opregion->header = NULL;
d839ede47a56ff5 Alan Cox 2012-05-03 296 opregion->acpi = NULL;
d839ede47a56ff5 Alan Cox 2012-05-03 297 opregion->swsci = NULL;
d839ede47a56ff5 Alan Cox 2012-05-03 298 opregion->asle = NULL;
d839ede47a56ff5 Alan Cox 2012-05-03 299 opregion->vbt = NULL;
d839ede47a56ff5 Alan Cox 2012-05-03 300 }
d839ede47a56ff5 Alan Cox 2012-05-03 301
d839ede47a56ff5 Alan Cox 2012-05-03 302 int psb_intel_opregion_setup(struct drm_device *dev)
d839ede47a56ff5 Alan Cox 2012-05-03 303 {
f71635e893c3832 Thomas Zimmermann 2021-09-20 304 struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
a2c68495b579862 Thomas Zimmermann 2020-12-01 305 struct pci_dev *pdev = to_pci_dev(dev->dev);
d839ede47a56ff5 Alan Cox 2012-05-03 306 struct psb_intel_opregion *opregion = &dev_priv->opregion;
d839ede47a56ff5 Alan Cox 2012-05-03 307 u32 opregion_phy, mboxes;
d64363c7557959c Kirill A. Shutemov 2012-05-03 308 void __iomem *base;
d839ede47a56ff5 Alan Cox 2012-05-03 309 int err = 0;
d839ede47a56ff5 Alan Cox 2012-05-03 310
a2c68495b579862 Thomas Zimmermann 2020-12-01 311 pci_read_config_dword(pdev, PCI_ASLS, &opregion_phy);
d839ede47a56ff5 Alan Cox 2012-05-03 312 if (opregion_phy == 0) {
d839ede47a56ff5 Alan Cox 2012-05-03 313 DRM_DEBUG_DRIVER("ACPI Opregion not supported\n");
d839ede47a56ff5 Alan Cox 2012-05-03 314 return -ENOTSUPP;
d839ede47a56ff5 Alan Cox 2012-05-03 315 }
778e26dee5e6b3b Patrik Jakobsson 2014-03-11 316
778e26dee5e6b3b Patrik Jakobsson 2014-03-11 317 INIT_WORK(&opregion->asle_work, psb_intel_opregion_asle_work);
778e26dee5e6b3b Patrik Jakobsson 2014-03-11 318
d839ede47a56ff5 Alan Cox 2012-05-03 319 DRM_DEBUG("OpRegion detected at 0x%8x\n", opregion_phy);
d839ede47a56ff5 Alan Cox 2012-05-03 320 base = acpi_os_ioremap(opregion_phy, 8*1024);
d839ede47a56ff5 Alan Cox 2012-05-03 321 if (!base)
d839ede47a56ff5 Alan Cox 2012-05-03 322 return -ENOMEM;
d839ede47a56ff5 Alan Cox 2012-05-03 323
d839ede47a56ff5 Alan Cox 2012-05-03 @324 if (memcmp(base, OPREGION_SIGNATURE, 16)) {
d839ede47a56ff5 Alan Cox 2012-05-03 325 DRM_DEBUG_DRIVER("opregion signature mismatch\n");
d839ede47a56ff5 Alan Cox 2012-05-03 326 err = -EINVAL;
d839ede47a56ff5 Alan Cox 2012-05-03 327 goto err_out;
d839ede47a56ff5 Alan Cox 2012-05-03 328 }
d839ede47a56ff5 Alan Cox 2012-05-03 329
d839ede47a56ff5 Alan Cox 2012-05-03 330 opregion->header = base;
d839ede47a56ff5 Alan Cox 2012-05-03 331 opregion->vbt = base + OPREGION_VBT_OFFSET;
d839ede47a56ff5 Alan Cox 2012-05-03 332
d839ede47a56ff5 Alan Cox 2012-05-03 333 opregion->lid_state = base + ACPI_CLID;
d839ede47a56ff5 Alan Cox 2012-05-03 334
d839ede47a56ff5 Alan Cox 2012-05-03 335 mboxes = opregion->header->mboxes;
d839ede47a56ff5 Alan Cox 2012-05-03 336 if (mboxes & MBOX_ACPI) {
d839ede47a56ff5 Alan Cox 2012-05-03 337 DRM_DEBUG_DRIVER("Public ACPI methods supported\n");
d839ede47a56ff5 Alan Cox 2012-05-03 338 opregion->acpi = base + OPREGION_ACPI_OFFSET;
d839ede47a56ff5 Alan Cox 2012-05-03 339 }
d839ede47a56ff5 Alan Cox 2012-05-03 340
d839ede47a56ff5 Alan Cox 2012-05-03 341 if (mboxes & MBOX_ASLE) {
d839ede47a56ff5 Alan Cox 2012-05-03 342 DRM_DEBUG_DRIVER("ASLE supported\n");
d839ede47a56ff5 Alan Cox 2012-05-03 343 opregion->asle = base + OPREGION_ASLE_OFFSET;
d839ede47a56ff5 Alan Cox 2012-05-03 344 }
d839ede47a56ff5 Alan Cox 2012-05-03 345
d839ede47a56ff5 Alan Cox 2012-05-03 346 return 0;
d839ede47a56ff5 Alan Cox 2012-05-03 347
d839ede47a56ff5 Alan Cox 2012-05-03 348 err_out:
d839ede47a56ff5 Alan Cox 2012-05-03 349 iounmap(base);
d839ede47a56ff5 Alan Cox 2012-05-03 350 return err;
d839ede47a56ff5 Alan Cox 2012-05-03 351 }
d839ede47a56ff5 Alan Cox 2012-05-03 352

:::::: The code at line 324 was first introduced by commit
:::::: d839ede47a56ff5f316c88391818488f8e5913af gma500: opregion and ACPI

:::::: TO: Alan Cox <alan@xxxxxxxxxxxxxxx>
:::::: CC: Dave Airlie <airlied@xxxxxxxxxx>

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