Re: [PATCH] x86/Hyper-V: Support for free page reporting

From: kbuild test robot
Date: Wed May 20 2020 - 18:34:02 EST


Hi Sunil,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on next-20200519]
[cannot apply to tip/auto-latest linus/master tip/x86/core asm-generic/master linux/master v5.7-rc6 v5.7-rc5 v5.7-rc4 v5.7-rc6]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url: https://github.com/0day-ci/linux/commits/Sunil-Muthuswamy/x86-Hyper-V-Support-for-free-page-reporting/20200520-024140
base: fb57b1fabcb28f358901b2df90abd2b48abc1ca8
config: x86_64-allmodconfig (attached as .config)
compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.1-193-gb8fad4bc-dirty
# save the attached .config to linux build tree
make C=1 ARCH=x86_64 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@xxxxxxxxx>


sparse warnings: (new ones prefixed by >>)

>> drivers/hv/hv_balloon.c:1585:43: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] <asn:3> *__vpp_verify @@ got const [noderef] <asn:3> *__vpp_verify @@
>> drivers/hv/hv_balloon.c:1585:43: sparse: expected void const [noderef] <asn:3> *__vpp_verify
>> drivers/hv/hv_balloon.c:1585:43: sparse: got void [noderef] <asn:3> **

vim +1585 drivers/hv/hv_balloon.c

1572
1573 #ifdef CONFIG_PAGE_REPORTING
1574 static int hv_free_page_report(struct page_reporting_dev_info *pr_dev_info,
1575 struct scatterlist *sgl, unsigned int nents)
1576 {
1577 unsigned long flags;
1578 struct hv_memory_hint *hint;
1579 int i;
1580 u64 status;
1581 struct scatterlist *sg;
1582
1583 WARN_ON(nents > HV_MAX_GPA_PAGE_RANGES);
1584 local_irq_save(flags);
> 1585 hint = *(struct hv_memory_hint **)this_cpu_ptr(hyperv_pcpu_input_arg);
1586 if (!hint) {
1587 local_irq_restore(flags);
1588 return -ENOSPC;
1589 }
1590
1591 hint->type = HV_EXT_MEMORY_HEAT_HINT_TYPE_COLD_DISCARD;
1592 hint->reserved = 0;
1593 for (i = 0, sg = sgl; sg; sg = sg_next(sg), i++) {
1594 int order;
1595 union hv_gpa_page_range *range;
1596
1597 order = get_order(sg->length);
1598 range = &hint->ranges[i];
1599 range->address_space = 0;
1600 range->page.largepage = 1;
1601 range->page.additional_pages = (1ull << (order - 9)) - 1;
1602 range->base_large_pfn = page_to_pfn(sg_page(sg)) >> 9;
1603 }
1604
1605 status = hv_do_rep_hypercall(HV_EXT_CALL_MEMORY_HEAT_HINT, nents, 0,
1606 hint, NULL);
1607 local_irq_restore(flags);
1608 status &= HV_HYPERCALL_RESULT_MASK;
1609 if (status != HV_STATUS_SUCCESS) {
1610 pr_err("Cold memory discard hypercall failed with status %llx\n",
1611 status);
1612 return -1;
1613 }
1614
1615 return 0;
1616 }
1617

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip