On Fri, 2025-02-21 at 15:52 +0800, bingbu.cao@xxxxxxxxx wrote: > + [SNIP] > +static int ipu7_pci_probe(struct pci_dev *pdev, const struct > pci_device_id *id) > +{ > + struct ipu_buttress_ctrl *isys_ctrl = NULL, *psys_ctrl = > NULL; > + struct fwnode_handle *fwnode = dev_fwnode(&pdev->dev); > + const struct ipu_buttress_ctrl *isys_buttress_ctrl; > + const struct ipu_buttress_ctrl *psys_buttress_ctrl; > + struct ipu_isys_internal_pdata *isys_ipdata; > + struct ipu_psys_internal_pdata *psys_ipdata; > + unsigned int dma_mask = IPU_DMA_MASK; > + struct device *dev = &pdev->dev; > + void __iomem *isys_base = NULL; > + void __iomem *psys_base = NULL; > + void __iomem *const *iomap; > + phys_addr_t phys, pb_phys; > + struct ipu7_device *isp; > + u32 is_es; > + int ret; > + > + if (!fwnode || fwnode_property_read_u32(fwnode, "is_es", > &is_es)) > + is_es = 0; > + > + isp = devm_kzalloc(dev, sizeof(*isp), GFP_KERNEL); > + if (!isp) > + return -ENOMEM; > + > + dev_set_name(dev, "intel-ipu7"); > + isp->pdev = pdev; > + INIT_LIST_HEAD(&isp->devices); > + > + ret = pcim_enable_device(pdev); > + if (ret) > + return dev_err_probe(dev, ret, "Enable PCI device > failed\n"); > + > + dev_info(dev, "Device 0x%x (rev: 0x%x)\n", > + pdev->device, pdev->revision); > + > + phys = pci_resource_start(pdev, IPU_PCI_BAR); > + pb_phys = pci_resource_start(pdev, IPU_PCI_PBBAR); > + dev_info(dev, "IPU7 PCI BAR0 base %llx BAR2 base %llx\n", > + phys, pb_phys); > + > + ret = pcim_iomap_regions(pdev, BIT(IPU_PCI_BAR) | > BIT(IPU_PCI_PBBAR), > + pci_name(pdev)); Oh and btw, since I just recognized this: PCI request functions must always get the *driver's* name as their last parameter. This string will be printed if there is a collision, i.e., when another driver tries to request the same resource. The output is only useful when the print contains the name of the party who actually stole your PCI region. Saying on which PCI device the region is won't be helpful. btw, did you watch my Fosdem talk before or after I answered to this RFC? ;) Thx P. > + if (ret) > + return dev_err_probe(dev, ret, > + "Failed to I/O memory remapping > (%d)\n", > + ret); > + > + iomap = pcim_iomap_table(pdev); > + if (!iomap) > + return dev_err_probe(dev, -ENODEV, "Failed to iomap > table\n"); > +