Dear Linux-PCI Maintainers, I have a few questions regarding PCI configuration space and Base Address Register (BAR) programming: PCI Configuration Space Mapping: PCI devices have standard registers (Device ID, Vendor ID, Status, Command, etc.) in their configuration space. These registers are mapped to memory locations. How can we determine the exact memory location where these configuration space registers are mapped? Base Address Registers (BARs) Programming: How are BAR registers programmed, and what ensures they do not conflict with other devices mapped memory in the system? If a BAR mapping clashes with another device’s memory range, how does the system handle this? Does the BIOS/firmware allocate BAR addresses, or does the OS have a role in reconfiguring them during device initialization? If you could provide any source code references from the Linux kernel that handle these aspects, it would be greatly appreciated. Looking forward to your insights. -- Thanks, Sekhar