On Thu, Jan 22, 2026 at 05:49:06PM +0900, Koichiro Den wrote: > Some endpoint platforms have only a small number of usable BARs. At the > same time, EPF drivers (e.g. vNTB) may need multiple independent inbound > regions (control/scratchpad, one or more memory windows, and optionally > MSI or other feature-related regions). Subrange mapping allows these to > share a single BAR without consuming additional BARs that may not be > available, or forcing a fragile layout by aggressively packing into a > single contiguous memory range. > > Extend the PCI endpoint core to support mapping subranges within a BAR. > Add an optional 'submap' field in struct pci_epf_bar so an endpoint > function driver can request inbound mappings that fully cover the BAR. > > Introduce a new EPC feature bit, subrange_mapping, and reject submap > requests from pci_epc_set_bar() unless the controller advertises both > subrange_mapping and dynamic_inbound_mapping features. > > The submap array describes the complete BAR layout (no overlaps and no > gaps are allowed to avoid exposing untranslated address ranges). This > provides the generic infrastructure needed to map multiple logical > regions into a single BAR at different offsets, without assuming a > controller-specific inbound address translation mechanism. > > Signed-off-by: Koichiro Den <[email protected]> > ---
Reviewed-by: Niklas Cassel <[email protected]>
