Hi Jiqian,

kernel test robot noticed the following build errors:

[auto build test ERROR on linus/master]
[also build test ERROR on v6.12-rc6 next-20241105]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    
https://github.com/intel-lab-lkp/linux/commits/Jiqian-Chen/drm-amdgpu-set-passthrough-mode-for-xen-pvh-hvm/20241105-141716
base:   linus/master
patch link:    
https://lore.kernel.org/r/20241105060531.3503788-3-Jiqian.Chen%40amd.com
patch subject: [PATCH 2/2] drm/amdgpu: Bypass resizing bars for PVH dom0
config: arc-randconfig-002-20241105 
(https://download.01.org/0day-ci/archive/20241105/202411051924.dzp9mxdh-...@intel.com/config)
compiler: arceb-elf-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): 
(https://download.01.org/0day-ci/archive/20241105/202411051924.dzp9mxdh-...@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 <l...@intel.com>
| Closes: 
https://lore.kernel.org/oe-kbuild-all/202411051924.dzp9mxdh-...@intel.com/

All errors (new ones prefixed by >>):

   In file included from include/linux/dev_printk.h:14,
                    from include/linux/device.h:15,
                    from include/linux/power_supply.h:15,
                    from drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:28:
   drivers/gpu/drm/amd/amdgpu/amdgpu_device.c: In function 
'amdgpu_device_resize_fb_bar':
>> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:1542:13: error: implicit 
>> declaration of function 'xen_initial_domain' 
>> [-Werror=implicit-function-declaration]
    1542 |         if (xen_initial_domain() && xen_pvh_domain())
         |             ^~~~~~~~~~~~~~~~~~
   include/linux/compiler.h:57:52: note: in definition of macro '__trace_if_var'
      57 | #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : 
__trace_if_value(cond))
         |                                                    ^~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:1542:9: note: in expansion of 
macro 'if'
    1542 |         if (xen_initial_domain() && xen_pvh_domain())
         |         ^~
>> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:1542:37: error: implicit 
>> declaration of function 'xen_pvh_domain' 
>> [-Werror=implicit-function-declaration]
    1542 |         if (xen_initial_domain() && xen_pvh_domain())
         |                                     ^~~~~~~~~~~~~~
   include/linux/compiler.h:57:52: note: in definition of macro '__trace_if_var'
      57 | #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : 
__trace_if_value(cond))
         |                                                    ^~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:1542:9: note: in expansion of 
macro 'if'
    1542 |         if (xen_initial_domain() && xen_pvh_domain())
         |         ^~
   cc1: some warnings being treated as errors


vim +/xen_initial_domain +1542 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c

  1519  
  1520  /**
  1521   * amdgpu_device_resize_fb_bar - try to resize FB BAR
  1522   *
  1523   * @adev: amdgpu_device pointer
  1524   *
  1525   * Try to resize FB BAR to make all VRAM CPU accessible. We try very 
hard not
  1526   * to fail, but if any of the BARs is not accessible after the size we 
abort
  1527   * driver loading by returning -ENODEV.
  1528   */
  1529  int amdgpu_device_resize_fb_bar(struct amdgpu_device *adev)
  1530  {
  1531          int rbar_size = 
pci_rebar_bytes_to_size(adev->gmc.real_vram_size);
  1532          struct pci_bus *root;
  1533          struct resource *res;
  1534          unsigned int i;
  1535          u16 cmd;
  1536          int r;
  1537  
  1538          if (!IS_ENABLED(CONFIG_PHYS_ADDR_T_64BIT))
  1539                  return 0;
  1540  
  1541          /* Bypass for PVH dom0 which doesn't support resizable bar */
> 1542          if (xen_initial_domain() && xen_pvh_domain())
  1543                  return 0;
  1544  
  1545          /* Bypass for VF */
  1546          if (amdgpu_sriov_vf(adev))
  1547                  return 0;
  1548  
  1549          /* PCI_EXT_CAP_ID_VNDR extended capability is located at 0x100 
*/
  1550          if (!pci_find_ext_capability(adev->pdev, PCI_EXT_CAP_ID_VNDR))
  1551                  DRM_WARN("System can't access extended configuration 
space, please check!!\n");
  1552  
  1553          /* skip if the bios has already enabled large BAR */
  1554          if (adev->gmc.real_vram_size &&
  1555              (pci_resource_len(adev->pdev, 0) >= 
adev->gmc.real_vram_size))
  1556                  return 0;
  1557  
  1558          /* Check if the root BUS has 64bit memory resources */
  1559          root = adev->pdev->bus;
  1560          while (root->parent)
  1561                  root = root->parent;
  1562  
  1563          pci_bus_for_each_resource(root, res, i) {
  1564                  if (res && res->flags & (IORESOURCE_MEM | 
IORESOURCE_MEM_64) &&
  1565                      res->start > 0x100000000ull)
  1566                          break;
  1567          }
  1568  
  1569          /* Trying to resize is pointless without a root hub window 
above 4GB */
  1570          if (!res)
  1571                  return 0;
  1572  
  1573          /* Limit the BAR size to what is available */
  1574          rbar_size = min(fls(pci_rebar_get_possible_sizes(adev->pdev, 
0)) - 1,
  1575                          rbar_size);
  1576  
  1577          /* Disable memory decoding while we change the BAR addresses 
and size */
  1578          pci_read_config_word(adev->pdev, PCI_COMMAND, &cmd);
  1579          pci_write_config_word(adev->pdev, PCI_COMMAND,
  1580                                cmd & ~PCI_COMMAND_MEMORY);
  1581  
  1582          /* Free the VRAM and doorbell BAR, we most likely need to move 
both. */
  1583          amdgpu_doorbell_fini(adev);
  1584          if (adev->asic_type >= CHIP_BONAIRE)
  1585                  pci_release_resource(adev->pdev, 2);
  1586  
  1587          pci_release_resource(adev->pdev, 0);
  1588  
  1589          r = pci_resize_resource(adev->pdev, 0, rbar_size);
  1590          if (r == -ENOSPC)
  1591                  DRM_INFO("Not enough PCI address space for a large 
BAR.");
  1592          else if (r && r != -ENOTSUPP)
  1593                  DRM_ERROR("Problem resizing BAR0 (%d).", r);
  1594  
  1595          pci_assign_unassigned_bus_resources(adev->pdev->bus);
  1596  
  1597          /* When the doorbell or fb BAR isn't available we have no 
chance of
  1598           * using the device.
  1599           */
  1600          r = amdgpu_doorbell_init(adev);
  1601          if (r || (pci_resource_flags(adev->pdev, 0) & IORESOURCE_UNSET))
  1602                  return -ENODEV;
  1603  
  1604          pci_write_config_word(adev->pdev, PCI_COMMAND, cmd);
  1605  
  1606          return 0;
  1607  }
  1608  

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

Reply via email to