[<prev] [next>] [day] [month] [year] [list]
Message-ID: <202202041807.DLd23Ex7-lkp@intel.com>
Date: Fri, 4 Feb 2022 18:31:40 +0800
From: kernel test robot <lkp@...el.com>
To: Nicolas Saenz Julienne <nsaenzju@...hat.com>
Cc: kbuild-all@...ts.01.org, linux-kernel@...r.kernel.org
Subject: [nsaenz-rpi:pcplists-rcu-drain-v1 1/2] mm/page_alloc.c:1481:30:
sparse: sparse: incorrect type in assignment (different modifiers)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/nsaenz/linux-rpi.git pcplists-rcu-drain-v1
head: 01b58921eae8d67b3ad6b05e73c2a1dd7106ae28
commit: eb4d0c9ef79083312513bfbbf26d6ef7defcc6b3 [1/2] mm/page_alloc: Access lists in 'struct per_cpu_pages' indirectly
config: h8300-randconfig-s032-20220201 (https://download.01.org/0day-ci/archive/20220204/202202041807.DLd23Ex7-lkp@intel.com/config)
compiler: h8300-linux-gcc (GCC) 11.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.4-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/nsaenz/linux-rpi.git/commit/?id=eb4d0c9ef79083312513bfbbf26d6ef7defcc6b3
git remote add nsaenz-rpi https://git.kernel.org/pub/scm/linux/kernel/git/nsaenz/linux-rpi.git
git fetch --no-tags nsaenz-rpi pcplists-rcu-drain-v1
git checkout eb4d0c9ef79083312513bfbbf26d6ef7defcc6b3
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=h8300 SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@...el.com>
sparse warnings: (new ones prefixed by >>)
>> mm/page_alloc.c:1481:30: sparse: sparse: incorrect type in assignment (different modifiers) @@ expected struct list_head *list @@ got struct list_head [noderef] * @@
mm/page_alloc.c:1481:30: sparse: expected struct list_head *list
mm/page_alloc.c:1481:30: sparse: got struct list_head [noderef] *
>> mm/page_alloc.c:3442:40: sparse: sparse: incorrect type in argument 2 (different modifiers) @@ expected struct list_head *head @@ got struct list_head [noderef] * @@
mm/page_alloc.c:3442:40: sparse: expected struct list_head *head
mm/page_alloc.c:3442:40: sparse: got struct list_head [noderef] *
mm/page_alloc.c:3733:14: sparse: sparse: incorrect type in assignment (different modifiers) @@ expected struct list_head *list @@ got struct list_head [noderef] * @@
mm/page_alloc.c:3733:14: sparse: expected struct list_head *list
mm/page_alloc.c:3733:14: sparse: got struct list_head [noderef] *
>> mm/page_alloc.c:3734:15: sparse: sparse: incorrect type in assignment (different modifiers) @@ expected int *count @@ got int [noderef] * @@
mm/page_alloc.c:3734:15: sparse: expected int *count
mm/page_alloc.c:3734:15: sparse: got int [noderef] *
>> mm/page_alloc.c:5356:18: sparse: sparse: incorrect type in assignment (different modifiers) @@ expected struct list_head *pcp_list @@ got struct list_head [noderef] * @@
mm/page_alloc.c:5356:18: sparse: expected struct list_head *pcp_list
mm/page_alloc.c:5356:18: sparse: got struct list_head [noderef] *
mm/page_alloc.c:5357:15: sparse: sparse: incorrect type in assignment (different modifiers) @@ expected int *count @@ got int [noderef] * @@
mm/page_alloc.c:5357:15: sparse: expected int *count
mm/page_alloc.c:5357:15: sparse: got int [noderef] *
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
mm/page_alloc.c:6068:17: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got struct per_cpu_pages [noderef] __percpu ** @@
mm/page_alloc.c:6068:17: sparse: expected void const [noderef] __percpu *__vpp_verify
mm/page_alloc.c:6068:17: sparse: got struct per_cpu_pages [noderef] __percpu **
>> mm/page_alloc.c:7022:47: sparse: sparse: incorrect type in argument 1 (different modifiers) @@ expected struct list_head *list @@ got struct list_head [noderef] * @@
mm/page_alloc.c:7022:47: sparse: expected struct list_head *list
mm/page_alloc.c:7022:47: sparse: got struct list_head [noderef] *
>> mm/page_alloc.c:1466:17: sparse: sparse: dereference of noderef expression
mm/page_alloc.c:1521:9: sparse: sparse: dereference of noderef expression
mm/page_alloc.c:3163:13: sparse: sparse: dereference of noderef expression
mm/page_alloc.c:3164:42: sparse: sparse: dereference of noderef expression
mm/page_alloc.c:3277:29: sparse: sparse: dereference of noderef expression
mm/page_alloc.c:3282:37: sparse: sparse: dereference of noderef expression
mm/page_alloc.c:3443:9: sparse: sparse: dereference of noderef expression
mm/page_alloc.c:3445:13: sparse: sparse: dereference of noderef expression
mm/page_alloc.c: note: in included file (through include/linux/mm.h):
include/linux/gfp.h:368:27: sparse: sparse: restricted gfp_t degrades to integer
include/linux/gfp.h:368:27: sparse: sparse: restricted gfp_t degrades to integer
mm/page_alloc.c:5971:76: sparse: sparse: dereference of noderef expression
mm/page_alloc.c:6065:76: sparse: sparse: dereference of noderef expression
mm/page_alloc.c:6068:17: sparse: sparse: dereference of noderef expression
mm/page_alloc.c:6068:17: sparse: sparse: dereference of noderef expression
vim +1481 mm/page_alloc.c
1445
1446 /*
1447 * Frees a number of pages from the PCP lists
1448 * Assumes all pages on list are in same zone.
1449 * count is the number of pages to free.
1450 */
1451 static void free_pcppages_bulk(struct zone *zone, int count,
1452 int batch, struct pcplists *lp)
1453 {
1454 int pindex = 0;
1455 int batch_free = 0;
1456 int nr_freed = 0;
1457 unsigned int order;
1458 bool isolated_pageblocks;
1459 struct page *page, *tmp;
1460 LIST_HEAD(head);
1461
1462 /*
1463 * Ensure proper count is passed which otherwise would stuck in the
1464 * below while (list_empty(list)) loop.
1465 */
> 1466 count = min(lp->count, count);
1467 while (count > 0) {
1468 struct list_head *list;
1469
1470 /*
1471 * Remove pages from lists in a round-robin fashion. A
1472 * batch_free count is maintained that is incremented when an
1473 * empty list is encountered. This is so more pages are freed
1474 * off fuller lists instead of spinning excessively around empty
1475 * lists
1476 */
1477 do {
1478 batch_free++;
1479 if (++pindex == NR_PCP_LISTS)
1480 pindex = 0;
> 1481 list = &lp->lists[pindex];
1482 } while (list_empty(list));
1483
1484 /* This is the only non-empty list. Free them all. */
1485 if (batch_free == NR_PCP_LISTS)
1486 batch_free = count;
1487
1488 order = pindex_to_order(pindex);
1489 BUILD_BUG_ON(MAX_ORDER >= (1<<NR_PCP_ORDER_WIDTH));
1490 do {
1491 page = list_last_entry(list, struct page, lru);
1492 /* must delete to avoid corrupting pcp list */
1493 list_del(&page->lru);
1494 nr_freed += 1 << order;
1495 count -= 1 << order;
1496
1497 if (bulkfree_pcp_prepare(page))
1498 continue;
1499
1500 /* Encode order with the migratetype */
1501 page->index <<= NR_PCP_ORDER_WIDTH;
1502 page->index |= order;
1503
1504 list_add_tail(&page->lru, &head);
1505
1506 /*
1507 * We are going to put the page back to the global
1508 * pool, prefetch its buddy to speed up later access
1509 * under zone->lock. It is believed the overhead of
1510 * an additional test and calculating buddy_pfn here
1511 * can be offset by reduced memory latency later. To
1512 * avoid excessive prefetching due to large count, only
1513 * prefetch buddy for the first pcp->batch nr of pages.
1514 */
1515 if (batch) {
1516 prefetch_buddy(page);
1517 batch--;
1518 }
1519 } while (count > 0 && --batch_free && !list_empty(list));
1520 }
1521 lp->count -= nr_freed;
1522
1523 /*
1524 * local_lock_irq held so equivalent to spin_lock_irqsave for
1525 * both PREEMPT_RT and non-PREEMPT_RT configurations.
1526 */
1527 spin_lock(&zone->lock);
1528 isolated_pageblocks = has_isolate_pageblock(zone);
1529
1530 /*
1531 * Use safe version since after __free_one_page(),
1532 * page->lru.next will not point to original list.
1533 */
1534 list_for_each_entry_safe(page, tmp, &head, lru) {
1535 int mt = get_pcppage_migratetype(page);
1536
1537 /* mt has been encoded with the order (see above) */
1538 order = mt & NR_PCP_ORDER_MASK;
1539 mt >>= NR_PCP_ORDER_WIDTH;
1540
1541 /* MIGRATE_ISOLATE page should not go to pcplists */
1542 VM_BUG_ON_PAGE(is_migrate_isolate(mt), page);
1543 /* Pageblock could have been isolated meanwhile */
1544 if (unlikely(isolated_pageblocks))
1545 mt = get_pageblock_migratetype(page);
1546
1547 __free_one_page(page, page_to_pfn(page), zone, order, mt, FPI_NONE);
1548 trace_mm_page_pcpu_drain(page, order, mt);
1549 }
1550 spin_unlock(&zone->lock);
1551 }
1552
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Powered by blists - more mailing lists