On 12/1/23 20:27, Volodymyr Babchuk wrote: > diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c > index 43216429d9..7c84cee5d1 100644 > --- a/xen/drivers/vpci/header.c > +++ b/xen/drivers/vpci/header.c > @@ -598,6 +675,18 @@ static void cf_check rom_write( > rom->addr = val & PCI_ROM_ADDRESS_MASK; > } > > +static int bar_add_rangeset(const struct pci_dev *pdev, struct vpci_bar *bar, > + unsigned int i) > +{ > + char str[32]; > + > + snprintf(str, sizeof(str), "%pp:BAR%u", &pdev->sbdf, i); > + > + bar->mem = rangeset_new(pdev->domain, str, RANGESETF_no_print); > + > + return !bar->mem ? -ENOMEM : 0; > +} > + > static int cf_check init_bars(struct pci_dev *pdev) > { > uint16_t cmd; > @@ -679,6 +768,10 @@ static int cf_check init_bars(struct pci_dev *pdev) > else > bars[i].type = VPCI_BAR_MEM32; > > + rc = bar_add_rangeset(pdev, &bars[i], i); > + if ( rc ) > + goto fail; > + > rc = pci_size_mem_bar(pdev->sbdf, reg, &addr, &size, > (i == num_bars - 1) ? PCI_BAR_LAST : 0); > if ( rc < 0 ) > @@ -728,6 +821,12 @@ static int cf_check init_bars(struct pci_dev *pdev) > rom_reg, 4, rom); > if ( rc ) > rom->type = VPCI_BAR_EMPTY; > + else > + { > + rc = bar_add_rangeset(pdev, rom, i);
Although purely cosmetic, it looks like this should use num_bars, not i. > + if ( rc ) > + goto fail; > + } > } > } > else