Re: [PATCH pciutils 3/4] libpci: Add support for filling bridge resources

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sunday 26 December 2021 23:13:11 Martin Mareš wrote:
> Hi!
> 
> > +      else if (i < 7+6+4)
> > +        {
> > +          /*
> > +           * If kernel was compiled without CONFIG_PCI_IOV option then after
> > +           * the ROM line for configured bridge device (that which had set
> > +           * subordinary bus number to non-zero value) are four additional lines
> > +           * which describe resources behind bridge. For PCI-to-PCI bridges they
> > +           * are: IO, MEM, PREFMEM and empty. For CardBus bridges they are: IO0,
> > +           * IO1, MEM0 and MEM1. For unconfigured bridges and other devices
> > +           * there is no additional line after the ROM line. If kernel was
> > +           * compiled with CONFIG_PCI_IOV option then after the ROM line and
> > +           * before the first bridge resource line are six additional lines
> > +           * which describe IOV resources. Read all remaining lines in resource
> > +           * file and based on the number of remaining lines (0, 4, 6, 10) parse
> > +           * resources behind bridge.
> > +           */
> > +          lines[i-7].flags = flags;
> > +          lines[i-7].base_addr = start;
> > +          lines[i-7].size = size;
> > +        }
> > +    }
> > +  if (i == 7+4 || i == 7+6+4)
> 
> This looks crazy: is there any other way how to tell what the bridge entries mean?
> Checking the number of entries looks very brittle.

I do not know any other way. Just for reference, here is a link to the
function resource_show() and DEVICE_COUNT_RESOURCE enum:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/pci/pci-sysfs.c?h=v5.15#n136
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/linux/pci.h?h=v5.15#n94



[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux