Hi Koichiro,

kernel test robot noticed the following build errors:

[auto build test ERROR on pci/next]
[also build test ERROR on next-20260205]
[cannot apply to vkoul-dmaengine/next pci/for-linus linus/master v6.19-rc8]
[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/Koichiro-Den/dmaengine-dw-edma-Add-per-channel-interrupt-routing-control/20260207-013042
base:   https://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git next
patch link:    
https://lore.kernel.org/r/20260206172646.1556847-8-den%40valinux.co.jp
patch subject: [PATCH v4 7/9] PCI: endpoint: pci-epf-test: Add embedded 
doorbell variant
config: um-randconfig-002-20260208 
(https://download.01.org/0day-ci/archive/20260208/[email protected]/config)
compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project 
9b8addffa70cee5b2acc5454712d9cf78ce45710)
reproduce (this is a W=1 build): 
(https://download.01.org/0day-ci/archive/20260208/[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 >>):

   In file included from drivers/pci/endpoint/functions/pci-epf-test.c:12:
   In file included from include/linux/dmaengine.h:12:
   In file included from include/linux/scatterlist.h:9:
   In file included from arch/um/include/asm/io.h:24:
   include/asm-generic/io.h:1209:55: warning: performing pointer arithmetic on 
a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
    1209 |         return (port > MMIO_UPPER_LIMIT) ? NULL : PCI_IOBASE + port;
         |                                                   ~~~~~~~~~~ ^
>> drivers/pci/endpoint/functions/pci-epf-test.c:858:3: error: cannot jump from 
>> this goto statement to its label
     858 |                 goto set_status_err;
         |                 ^
   drivers/pci/endpoint/functions/pci-epf-test.c:861:34: note: jump bypasses 
initialization of variable with __attribute__((cleanup))
     861 |         struct pci_epc_remote_resource *resources __free(kfree) =
         |                                         ^
   1 warning and 1 error generated.


vim +858 drivers/pci/endpoint/functions/pci-epf-test.c

   838  
   839  static void pci_epf_test_enable_doorbell_embedded(struct pci_epf_test 
*epf_test,
   840                                                    struct 
pci_epf_test_reg *reg)
   841  {
   842          struct pci_epc_remote_resource *dma_ctrl = NULL, *chan0 = NULL;
   843          const char *irq_name = "pci-ep-test-doorbell-embedded";
   844          u32 status = le32_to_cpu(reg->status);
   845          struct pci_epf *epf = epf_test->epf;
   846          struct pci_epc *epc = epf->epc;
   847          struct device *dev = &epf->dev;
   848          enum pci_barno bar;
   849          size_t align_off;
   850          unsigned int i;
   851          int cnt, ret;
   852          u32 db_off;
   853  
   854          cnt = pci_epc_get_remote_resources(epc, epf->func_no, 
epf->vfunc_no,
   855                                             NULL, 0);
   856          if (cnt <= 0) {
   857                  dev_err(dev, "No remote resources available for 
embedded doorbell\n");
 > 858                  goto set_status_err;
   859          }
   860  
   861          struct pci_epc_remote_resource *resources __free(kfree) =
   862                                  kcalloc(cnt, sizeof(*resources), 
GFP_KERNEL);
   863          if (!resources)
   864                  goto set_status_err;
   865  
   866          ret = pci_epc_get_remote_resources(epc, epf->func_no, 
epf->vfunc_no,
   867                                             resources, cnt);
   868          if (ret < 0) {
   869                  dev_err(dev, "Failed to get remote resources: %d\n", 
ret);
   870                  goto set_status_err;
   871          }
   872          cnt = ret;
   873  
   874          for (i = 0; i < cnt; i++) {
   875                  if (resources[i].type == PCI_EPC_RR_DMA_CTRL_MMIO)
   876                          dma_ctrl = &resources[i];
   877                  else if (resources[i].type == PCI_EPC_RR_DMA_CHAN_DESC 
&&
   878                           !chan0)
   879                          chan0 = &resources[i];
   880          }
   881  
   882          if (!dma_ctrl || !chan0) {
   883                  dev_err(dev, "Missing DMA ctrl MMIO or channel #0 
info\n");
   884                  goto set_status_err;
   885          }
   886  
   887          bar = pci_epc_get_next_free_bar(epf_test->epc_features,
   888                                          epf_test->test_reg_bar + 1);
   889          if (bar < BAR_0) {
   890                  dev_err(dev, "No free BAR for embedded doorbell\n");
   891                  goto set_status_err;
   892          }
   893  
   894          ret = pci_epf_align_inbound_addr(epf, bar, dma_ctrl->phys_addr,
   895                                           &epf_test->db_bar.phys_addr,
   896                                           &align_off);
   897          if (ret)
   898                  goto set_status_err;
   899  
   900          db_off = chan0->u.dma_chan_desc.db_offset;
   901          if (db_off >= dma_ctrl->size ||
   902              align_off + db_off >= epf->bar[bar].size) {
   903                  dev_err(dev, "BAR%d too small for embedded doorbell 
(off %#zx + %#x)\n",
   904                          bar, align_off, db_off);
   905                  goto set_status_err;
   906          }
   907  
   908          epf_test->db_variant = PCI_EPF_TEST_DB_EMBEDDED;
   909  
   910          ret = request_irq(chan0->u.dma_chan_desc.irq,
   911                            pci_epf_test_doorbell_embedded_irq_handler,
   912                            IRQF_SHARED, irq_name, epf_test);
   913          if (ret) {
   914                  dev_err(dev, "Failed to request embedded doorbell IRQ: 
%d\n",
   915                          chan0->u.dma_chan_desc.irq);
   916                  goto err_cleanup;
   917          }
   918          epf_test->db_irq = chan0->u.dma_chan_desc.irq;
   919  
   920          reg->doorbell_data = cpu_to_le32(0);
   921          reg->doorbell_bar = cpu_to_le32(bar);
   922          reg->doorbell_offset = cpu_to_le32(align_off + db_off);
   923  
   924          epf_test->db_bar.barno = bar;
   925          epf_test->db_bar.size = epf->bar[bar].size;
   926          epf_test->db_bar.flags = epf->bar[bar].flags;
   927  
   928          ret = pci_epc_set_bar(epc, epf->func_no, epf->vfunc_no, 
&epf_test->db_bar);
   929          if (ret)
   930                  goto err_cleanup;
   931  
   932          status |= STATUS_DOORBELL_ENABLE_SUCCESS;
   933          reg->status = cpu_to_le32(status);
   934          return;
   935  
   936  err_cleanup:
   937          pci_epf_test_doorbell_cleanup(epf_test);
   938  set_status_err:
   939          status |= STATUS_DOORBELL_ENABLE_FAIL;
   940          reg->status = cpu_to_le32(status);
   941  }
   942  

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

Reply via email to