* [android-common:android15-6.6 0/1] drivers/iommu/io-pgtable-arm-common.c:263:5: warning: no previous prototype for 'arm_lpae_map_pages'
@ 2025-08-11 18:15 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2025-08-11 18:15 UTC (permalink / raw)
To: cros-kernel-buildreports; +Cc: oe-kbuild-all
tree: https://android.googlesource.com/kernel/common android15-6.6
head: 3b6fab0ff24f7108c71a4d9c12567455cb2a5a81
commit: 13eaf12ed57eb62de2eb52ae870f5b94ad4e5ba0 [0/1] BACKPORT: FROMLIST: iommu/io-pgtable-arm: Split initialization
config: i386-buildonly-randconfig-2004-20250811 (https://download.01.org/0day-ci/archive/20250811/202508112005.zFMhDMJR-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14+deb12u1) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250811/202508112005.zFMhDMJR-lkp@intel.com/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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202508112005.zFMhDMJR-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/iommu/io-pgtable-arm-common.c:142:5: warning: no previous prototype for '__arm_lpae_map' [-Wmissing-prototypes]
142 | int __arm_lpae_map(struct arm_lpae_io_pgtable *data, unsigned long iova,
| ^~~~~~~~~~~~~~
>> drivers/iommu/io-pgtable-arm-common.c:263:5: warning: no previous prototype for 'arm_lpae_map_pages' [-Wmissing-prototypes]
263 | int arm_lpae_map_pages(struct io_pgtable_ops *ops, unsigned long iova,
| ^~~~~~~~~~~~~~~~~~
>> drivers/iommu/io-pgtable-arm-common.c:448:8: warning: no previous prototype for 'arm_lpae_unmap_pages' [-Wmissing-prototypes]
448 | size_t arm_lpae_unmap_pages(struct io_pgtable_ops *ops, unsigned long iova,
| ^~~~~~~~~~~~~~~~~~~~
>> drivers/iommu/io-pgtable-arm-common.c:469:13: warning: no previous prototype for 'arm_lpae_iova_to_phys' [-Wmissing-prototypes]
469 | phys_addr_t arm_lpae_iova_to_phys(struct io_pgtable_ops *ops,
| ^~~~~~~~~~~~~~~~~~~~~
vim +/arm_lpae_map_pages +263 drivers/iommu/io-pgtable-arm-common.c
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 262
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 @263 int arm_lpae_map_pages(struct io_pgtable_ops *ops, unsigned long iova,
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 264 phys_addr_t paddr, size_t pgsize, size_t pgcount,
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 265 int iommu_prot, gfp_t gfp, size_t *mapped)
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 266 {
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 267 struct arm_lpae_io_pgtable *data = io_pgtable_ops_to_data(ops);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 268 struct io_pgtable_cfg *cfg = &data->iop.cfg;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 269 arm_lpae_iopte *ptep = data->pgd;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 270 int ret, lvl = data->start_level;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 271 arm_lpae_iopte prot;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 272 long iaext = (s64)iova >> cfg->ias;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 273
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 274 if (WARN_ON(!pgsize || (pgsize & cfg->pgsize_bitmap) != pgsize))
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 275 return -EINVAL;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 276
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 277 if (cfg->quirks & IO_PGTABLE_QUIRK_ARM_TTBR1)
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 278 iaext = ~iaext;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 279 if (WARN_ON(iaext || paddr >> cfg->oas))
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 280 return -ERANGE;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 281
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 282 /* If no access, then nothing to do */
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 283 if (!(iommu_prot & (IOMMU_READ | IOMMU_WRITE)))
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 284 return 0;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 285
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 286 prot = arm_lpae_prot_to_pte(data, iommu_prot);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 287 ret = __arm_lpae_map(data, iova, paddr, pgsize, pgcount, prot, lvl,
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 288 ptep, gfp, mapped);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 289 /*
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 290 * Synchronise all PTE updates for the new mapping before there's
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 291 * a chance for anything to kick off a table walk for the new iova.
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 292 */
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 293 wmb();
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 294
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 295 return ret;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 296 }
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 297
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 298 void __arm_lpae_free_pgtable(struct arm_lpae_io_pgtable *data, int lvl,
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 299 arm_lpae_iopte *ptep)
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 300 {
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 301 arm_lpae_iopte *start, *end;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 302 unsigned long table_size;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 303
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 304 if (lvl == data->start_level)
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 305 table_size = ARM_LPAE_PGD_SIZE(data);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 306 else
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 307 table_size = ARM_LPAE_GRANULE(data);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 308
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 309 start = ptep;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 310
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 311 /* Only leaf entries at the last level */
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 312 if (lvl == ARM_LPAE_MAX_LEVELS - 1)
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 313 end = ptep;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 314 else
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 315 end = (void *)ptep + table_size;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 316
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 317 while (ptep != end) {
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 318 arm_lpae_iopte pte = *ptep++;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 319
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 320 if (!pte || iopte_leaf(pte, lvl, data->iop.fmt))
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 321 continue;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 322
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 323 __arm_lpae_free_pgtable(data, lvl + 1, iopte_deref(pte, data));
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 324 }
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 325
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 326 __arm_lpae_free_pages(start, table_size, &data->iop.cfg);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 327 }
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 328
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 329 static size_t arm_lpae_split_blk_unmap(struct arm_lpae_io_pgtable *data,
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 330 struct iommu_iotlb_gather *gather,
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 331 unsigned long iova, size_t size,
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 332 arm_lpae_iopte blk_pte, int lvl,
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 333 arm_lpae_iopte *ptep, size_t pgcount)
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 334 {
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 335 struct io_pgtable_cfg *cfg = &data->iop.cfg;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 336 arm_lpae_iopte pte, *tablep;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 337 phys_addr_t blk_paddr;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 338 size_t tablesz = ARM_LPAE_GRANULE(data);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 339 size_t split_sz = ARM_LPAE_BLOCK_SIZE(lvl, data);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 340 int ptes_per_table = ARM_LPAE_PTES_PER_TABLE(data);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 341 int i, unmap_idx_start = -1, num_entries = 0, max_entries;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 342
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 343 if (WARN_ON(lvl == ARM_LPAE_MAX_LEVELS))
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 344 return 0;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 345
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 346 tablep = __arm_lpae_alloc_pages(tablesz, GFP_ATOMIC, cfg);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 347 if (!tablep)
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 348 return 0; /* Bytes unmapped */
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 349
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 350 if (size == split_sz) {
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 351 unmap_idx_start = ARM_LPAE_LVL_IDX(iova, lvl, data);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 352 max_entries = ptes_per_table - unmap_idx_start;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 353 num_entries = min_t(int, pgcount, max_entries);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 354 }
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 355
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 356 blk_paddr = iopte_to_paddr(blk_pte, data);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 357 pte = iopte_prot(blk_pte);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 358
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 359 for (i = 0; i < ptes_per_table; i++, blk_paddr += split_sz) {
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 360 /* Unmap! */
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 361 if (i >= unmap_idx_start && i < (unmap_idx_start + num_entries))
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 362 continue;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 363
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 364 __arm_lpae_init_pte(data, blk_paddr, pte, lvl, 1, &tablep[i]);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 365 }
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 366
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 367 pte = arm_lpae_install_table(tablep, ptep, blk_pte, data);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 368 if (pte != blk_pte) {
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 369 __arm_lpae_free_pages(tablep, tablesz, cfg);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 370 /*
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 371 * We may race against someone unmapping another part of this
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 372 * block, but anything else is invalid. We can't misinterpret
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 373 * a page entry here since we're never at the last level.
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 374 */
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 375 if (iopte_type(pte) != ARM_LPAE_PTE_TYPE_TABLE)
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 376 return 0;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 377
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 378 tablep = iopte_deref(pte, data);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 379 } else if (unmap_idx_start >= 0) {
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 380 for (i = 0; i < num_entries; i++)
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 381 io_pgtable_tlb_add_page(&data->iop, gather, iova + i * size, size);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 382
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 383 return num_entries * size;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 384 }
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 385
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 386 return __arm_lpae_unmap(data, gather, iova, size, pgcount, lvl, tablep);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 387 }
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 388
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 389 static size_t __arm_lpae_unmap(struct arm_lpae_io_pgtable *data,
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 390 struct iommu_iotlb_gather *gather,
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 391 unsigned long iova, size_t size, size_t pgcount,
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 392 int lvl, arm_lpae_iopte *ptep)
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 393 {
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 394 arm_lpae_iopte pte;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 395 struct io_pgtable *iop = &data->iop;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 396 int i = 0, num_entries, max_entries, unmap_idx_start;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 397
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 398 /* Something went horribly wrong and we ran out of page table */
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 399 if (WARN_ON(lvl == ARM_LPAE_MAX_LEVELS))
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 400 return 0;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 401
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 402 unmap_idx_start = ARM_LPAE_LVL_IDX(iova, lvl, data);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 403 ptep += unmap_idx_start;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 404 pte = READ_ONCE(*ptep);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 405 if (WARN_ON(!pte))
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 406 return 0;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 407
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 408 /* If the size matches this level, we're in the right place */
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 409 if (size == ARM_LPAE_BLOCK_SIZE(lvl, data)) {
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 410 max_entries = ARM_LPAE_PTES_PER_TABLE(data) - unmap_idx_start;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 411 num_entries = min_t(int, pgcount, max_entries);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 412
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 413 while (i < num_entries) {
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 414 pte = READ_ONCE(*ptep);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 415 if (WARN_ON(!pte))
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 416 break;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 417
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 418 __arm_lpae_clear_pte(ptep, &iop->cfg);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 419
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 420 if (!iopte_leaf(pte, lvl, iop->fmt)) {
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 421 /* Also flush any partial walks */
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 422 io_pgtable_tlb_flush_walk(iop, iova + i * size, size,
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 423 ARM_LPAE_GRANULE(data));
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 424 __arm_lpae_free_pgtable(data, lvl + 1, iopte_deref(pte, data));
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 425 } else if (!iommu_iotlb_gather_queued(gather)) {
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 426 io_pgtable_tlb_add_page(iop, gather, iova + i * size, size);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 427 }
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 428
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 429 ptep++;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 430 i++;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 431 }
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 432
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 433 return i * size;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 434 } else if (iopte_leaf(pte, lvl, iop->fmt)) {
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 435 /*
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 436 * Insert a table at the next level to map the old region,
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 437 * minus the part we want to unmap
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 438 */
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 439 return arm_lpae_split_blk_unmap(data, gather, iova, size, pte,
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 440 lvl + 1, ptep, pgcount);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 441 }
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 442
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 443 /* Keep on walkin' */
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 444 ptep = iopte_deref(pte, data);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 445 return __arm_lpae_unmap(data, gather, iova, size, pgcount, lvl + 1, ptep);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 446 }
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 447
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 @448 size_t arm_lpae_unmap_pages(struct io_pgtable_ops *ops, unsigned long iova,
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 449 size_t pgsize, size_t pgcount,
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 450 struct iommu_iotlb_gather *gather)
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 451 {
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 452 struct arm_lpae_io_pgtable *data = io_pgtable_ops_to_data(ops);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 453 struct io_pgtable_cfg *cfg = &data->iop.cfg;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 454 arm_lpae_iopte *ptep = data->pgd;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 455 long iaext = (s64)iova >> cfg->ias;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 456
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 457 if (WARN_ON(!pgsize || (pgsize & cfg->pgsize_bitmap) != pgsize || !pgcount))
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 458 return 0;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 459
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 460 if (cfg->quirks & IO_PGTABLE_QUIRK_ARM_TTBR1)
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 461 iaext = ~iaext;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 462 if (WARN_ON(iaext))
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 463 return 0;
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 464
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 465 return __arm_lpae_unmap(data, gather, iova, pgsize, pgcount,
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 466 data->start_level, ptep);
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 467 }
cf616fc76f2555 Jean-Philippe Brucker 2022-11-18 468
:::::: The code at line 263 was first introduced by commit
:::::: cf616fc76f2555d91fc88a543badc8a051f749c9 BACKPORT: FROMLIST: iommu/io-pgtable-arm: Split the page table driver
:::::: TO: Jean-Philippe Brucker <jean-philippe@linaro.org>
:::::: CC: Mostafa Saleh <smostafa@google.com>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2025-08-11 18:16 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-11 18:15 [android-common:android15-6.6 0/1] drivers/iommu/io-pgtable-arm-common.c:263:5: warning: no previous prototype for 'arm_lpae_map_pages' kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.