Hi Geramy,

kernel test robot noticed the following build errors:

[auto build test ERROR on pci/next]
[also build test ERROR on pci/for-linus linus/master next-20260826]
[cannot apply to drm-misc/drm-misc-next v7.2]
[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/Geramy-Loveless/How-to-correctly-reserve-prefetchable-bridge-windows-for-large-resizable-BARs-behind-PCIe-switches-8x-GPU-PEX890xx-seeki/20260826-132218
base:   https://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git next
patch link:    
https://lore.kernel.org/r/a2292dfb-2ee5-4988-ac67-c75dd3e97a4c%40jqluv.com
patch subject: How to correctly reserve prefetchable bridge windows for large, 
resizable BARs behind PCIe switches (8x GPU, PEX890xx) - seeking guidance on 
upstreamable approach.
config: i386-randconfig-015-20260827 
(https://download.01.org/0day-ci/archive/20260828/[email protected]/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): 
(https://download.01.org/0day-ci/archive/20260828/[email protected]/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 <[email protected]>
| Closes: 
https://lore.kernel.org/oe-kbuild-all/[email protected]/

All errors (new ones prefixed by >>):

   ld: drivers/pci/setup-res.o: in function `pci_align_resource':
>> drivers/pci/setup-res.c:289:(.text+0x92a): undefined reference to `__udivdi3'
>> ld: drivers/pci/setup-res.c:289:(.text+0x939): undefined reference to 
>> `__udivdi3'
   ld: 
drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_utm_soc_bb/dml2_utm_soc_bb_dcn6.o:
 in function `dchub_v2_get_sop_total_available_bandwidth_KBps':
   
drivers/gpu/drm/amd/amdgpu/../display/dc/dml2_0/dml21/inc/bounding_boxes/utm_qos_model_dchub_v2.h:71:(.text+0x61):
 undefined reference to `__udivdi3'
   ld: 
drivers/gpu/drm/amd/amdgpu/../display/dc/dml2_0/dml21/inc/bounding_boxes/utm_qos_model_dchub_v2.h:79:(.text+0x9d):
 undefined reference to `__udivdi3'
   ld: 
drivers/gpu/drm/amd/amdgpu/../display/dc/dml2_0/dml21/inc/bounding_boxes/utm_qos_model_dchub_v2.h:66:(.text+0xc0):
 undefined reference to `__udivdi3'
   ld: 
drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_utm_soc_bb/dml2_utm_soc_bb_dcn6.o:drivers/gpu/drm/amd/amdgpu/../display/dc/dml2_0/dml21/inc/bounding_boxes/utm_qos_model_dchub_v2.h:76:
 more undefined references to `__udivdi3' follow


vim +289 drivers/pci/setup-res.c

   262  
   263  /*
   264   * For mem bridge windows, try to relocate tail remainder space to space
   265   * before res->start if there's enough free space there. This enables
   266   * tighter packing for resources.
   267   */
   268  resource_size_t pci_align_resource(struct pci_dev *dev,
   269                                     const struct resource *res,
   270                                     const struct resource *empty_res,
   271                                     resource_size_t size,
   272                                     resource_size_t align)
   273  {
   274          resource_size_t remainder, start_addr;
   275  
   276          if (!(res->flags & IORESOURCE_MEM))
   277                  return res->start;
   278  
   279          if (IS_ALIGNED(size, align))
   280                  return res->start;
   281  
   282          remainder = size - ALIGN_DOWN(size, align);
   283          /*
   284           * A window holding several align-sized resources has one tail 
per
   285           * resource, but only the lowest can tuck below the first 
aligned
   286           * boundary; the rest sit above it. Relocate a single tail's 
worth.
   287           */
   288          if (ALIGN_DOWN(size, align) > align)
 > 289                  remainder /= ALIGN_DOWN(size, align) / align;
   290          /* Don't mess with size that doesn't align with window size 
granularity */
   291          if (!IS_ALIGNED(remainder, pci_min_window_alignment(dev->bus, 
res->flags)))
   292                  return res->start;
   293          /* Try to place remainder that doesn't fill align before */
   294          if (res->start < remainder)
   295                  return res->start;
   296          start_addr = res->start - remainder;
   297          if (empty_res->start > start_addr)
   298                  return res->start;
   299  
   300          pci_dbg(dev, "%pR: moving candidate start address below align 
to %llx\n",
   301                  res, (unsigned long long)start_addr);
   302          return start_addr;
   303  }
   304  

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

Reply via email to