/linux/drivers/net/ethernet/pensando/ionic/ |
H A D | ionic_bus_pci.c | 50 struct ionic_dev_bar *bars; in ionic_map_bars() local 53 bars = ionic->bars; in ionic_map_bars() 59 bars[j].len = pci_resource_len(pdev, i); in ionic_map_bars() 63 bars[j].vaddr = NULL; in ionic_map_bars() 65 bars[j].vaddr = pci_iomap(pdev, i, bars[j].len); in ionic_map_bars() 66 if (!bars[j].vaddr) { in ionic_map_bars() 74 bars[j].bus_addr = pci_resource_start(pdev, i); in ionic_map_bars() 75 bars[j].res_index = i; in ionic_map_bars() 85 struct ionic_dev_bar *bars = ionic->bars; in ionic_unmap_bars() local 89 if (bars[i].vaddr) { in ionic_unmap_bars() [all …]
|
/linux/drivers/net/ethernet/amd/pds_core/ |
H A D | main.c | 37 struct pdsc_dev_bar *bars = pdsc->bars; in pdsc_unmap_bars() local 46 if (bars[i].vaddr) in pdsc_unmap_bars() 47 pci_iounmap(pdsc->pdev, bars[i].vaddr); in pdsc_unmap_bars() 48 bars[i].vaddr = NULL; in pdsc_unmap_bars() 54 struct pdsc_dev_bar *bar = pdsc->bars; in pdsc_map_bars() 57 struct pdsc_dev_bar *bars; in pdsc_map_bars() local 63 bars = pdsc->bars; in pdsc_map_bars() 66 * we need to poke into all the bars to find the set we're in pdsc_map_bars() 73 bars[j].len = pci_resource_len(pdev, i); in pdsc_map_bars() 74 bars[j].bus_addr = pci_resource_start(pdev, i); in pdsc_map_bars() [all …]
|
/linux/Documentation/arch/powerpc/ |
H A D | pci_iov_resource_on_powernv.rst | 107 scheme where individual function BARs can be "grouped" to fit in one or 127 for large BARs in 64-bit space: 156 PE" mode to overlay over specific BARs to work around some of that, for 157 example for devices with very large BARs, e.g., GPUs. It would make 170 PCI devices, but the BARs in VF config space headers are unusual. For 171 a non-VF device, software uses BARs in the config space header to 174 discover sizes and assign addresses. The BARs in the VF's config space 178 base address for all the corresponding VF(n) BARs. For example, if the 190 window with 1MB segments. VF BARs that are 1MB or larger could be 193 flexible, but it works best when all the VF BARs are the same size. If [all …]
|
/linux/drivers/mfd/ |
H A D | sta2x11-mfd.c | 520 struct sta2x11_mfd_bar_setup_data bars[2]; member 529 .bars = { 542 .bars = { 559 for (i = 0; i < ARRAY_SIZE(sd->bars); i++) in sta2x11_mfd_setup() 560 for (j = 0; j < sd->bars[i].ncells; j++) { in sta2x11_mfd_setup() 561 sd->bars[i].cells[j].pdata_size = sizeof(pdev); in sta2x11_mfd_setup() 562 sd->bars[i].cells[j].platform_data = &pdev; in sta2x11_mfd_setup() 595 /* Just 2 bars for all mfd's at present */ in sta2x11_mfd_probe() 598 setup_data->bars[i].cells, in sta2x11_mfd_probe() 599 setup_data->bars[i].ncells, in sta2x11_mfd_probe()
|
/linux/drivers/scsi/csiostor/ |
H A D | csio_init.c | 184 * @bars: Bitmask of bars to be requested. 190 csio_pci_init(struct pci_dev *pdev, int *bars) in csio_pci_init() argument 194 *bars = pci_select_bars(pdev, IORESOURCE_MEM); in csio_pci_init() 199 if (pci_request_selected_regions(pdev, *bars, KBUILD_MODNAME)) in csio_pci_init() 217 pci_release_selected_regions(pdev, *bars); in csio_pci_init() 228 * @bars: Bars to be released. 232 csio_pci_exit(struct pci_dev *pdev, int *bars) in csio_pci_exit() argument 234 pci_release_selected_regions(pdev, *bars); in csio_pci_exit() 512 * Allocates HW structure, DMA, memory resources, maps BARS to 930 * - Allocates HW structure, DMA, memory resources, maps BARS to [all …]
|
/linux/drivers/accel/habanalabs/common/pci/ |
H A D | pci.c | 23 * hl_pci_bars_map() - Map PCI BARs. 45 bar = i * 2; /* 64-bit BARs */ in hl_pci_bars_map() 61 bar = i * 2; /* 64-bit BARs */ in hl_pci_bars_map() 72 * hl_pci_bars_unmap() - Unmap PCI BARS. 75 * Release all PCI BARs and unmap their virtual addresses. 83 bar = i * 2; /* 64-bit BARs */ in hl_pci_bars_unmap() 374 * Set DMA masks, initialize the PCI controller and map the PCI BARs. 432 * Unmap PCI bars and disable PCI device.
|
/linux/drivers/net/ethernet/netronome/nfp/nfpcore/ |
H A D | nfp6000_pcie.c | 10 * Multiplexes the NFP BARs between NFP internal resources and 13 * The BARs are managed with refcounts and are allocated/acquired 106 /* The number of explicit BARs to reserve. 149 int bars; member 347 /* We don't match explicit bars through the area interface */ in matching_bar() 372 for (n = 0; n < nfp->bars; n++) { in find_matching_bar() 390 for (n = 0; n < nfp->bars; n++) { in find_unused_bar_noblock() 519 /* Map all PCI bars and fetch the actual BAR configurations from the 566 snprintf(status_msg, sizeof(status_msg) - 1, "RESERVED BARs: "); in enable_bars() 575 /* Skip over BARs that are not IORESOURCE_MEM */ in enable_bars() [all …]
|
/linux/arch/powerpc/platforms/powernv/ |
H A D | pci-sriov.c | 21 * For conventional PCI devices this isn't really an issue since PCI device BARs 29 * allocate the SR-IOV BARs in a way that lets us map them using the MBT. 45 * (num-vfs * num-sriov-bars) in total. To use a) we need the size of each segment 56 * At this point the device has been probed and the device's BARs are sized, 57 * but no resource allocations have been done. The SR-IOV BARs are sized 63 * sorts the BARs on a bus by their required alignment, which is calculated 109 * it only usable for devices with very large per-VF BARs. Such devices are 123 * us to support SR-IOV BARs in the 32bit MMIO window. This is useful since 215 /* Save ourselves some MMIO space by disabling the unusable BARs */ in pnv_pci_ioda_fixup_iov_resources() 258 * BARs would not be placed in the correct PE. in pnv_pci_iov_resource_alignment() [all …]
|
H A D | pci.h | 229 /* Did we map the VF BAR with single-PE IODA BARs? */ 241 * SR-IOV BARs for this device. 246 * If we map the SR-IOV BARs with a segmented window then
|
/linux/Documentation/accel/amdxdna/ |
H A D | amdnpu.rst | 81 NPU is visible to the x86 host CPU as a PCIe device with multiple BARs and some 86 The number of PCIe BARs varies depending on the specific device. Based on their 87 functions, PCIe BARs can generally be categorized into the following types. 97 single physical PCIe BAR. Or a module might require two physical PCIe BARs to 100 * On AMD Phoenix device, PSP, SMU, Public Register BARs are on PCIe BAR index 0. 101 * On AMD Strix Point device, Mailbox and Public Register BARs are on PCIe BAR
|
/linux/Documentation/PCI/endpoint/ |
H A D | pci-ntb-function.rst | 12 machine, expose memory ranges as BARs, and perform DMA. They also support 230 one is permitted. All these regions should be mapped to BARs for hosts to 248 be enough BARs for all the regions in a platform that supports only 64-bit 249 BARs. 252 packed and mapped to BARs in a way that provides NTB functionality and 269 With this scheme, for the basic NTB functionality 3 BARs should be sufficient. 339 space. Allocating and configuring BARs for doorbell and memory window1 348 is mapped to separate BARs.
|
H A D | pci-vntb-function.rst | 103 32-bit BARs. 116 64-bit BARs.
|
/linux/drivers/ntb/hw/idt/ |
H A D | Kconfig | 18 and SWPORTxCTL registers). Then all NT-function BARs must be enabled 19 with chosen valid aperture. For memory windows related BARs the
|
H A D | ntb_hw_idt.h | 972 * @IDT_BAR_CNT: Number of BARs of each port 1184 * @bars: BARs related registers 1188 struct idt_ntb_bar bars[IDT_BAR_CNT]; member 1201 * @bars: BARs related registers 1211 struct idt_ntb_bar bars[IDT_BAR_CNT]; member
|
/linux/drivers/vdpa/solidrun/ |
H A D | snet_vdpa.h | 143 /* PCI BARs */ 144 void __iomem *bars[PCI_STD_NUM_BARS]; member 170 return ioread32(psnet->bars[psnet->barno] + off); in psnet_read32()
|
/linux/arch/sparc/kernel/ |
H A D | leon_pci_grpci2.c | 31 * - barcfgs : Custom Configuration of Host's 6 target BARs 79 unsigned int bars[6]; /* 0x20 read-only PCI BARs */ member 605 /* Setup the Host's PCI Target BARs for other peripherals to access, in grpci2_hw_init() 606 * and do DMA to the host's memory. The target BARs can be sized and in grpci2_hw_init() 609 * User may set custom target BARs, but default is: in grpci2_hw_init() 610 * The first BARs is used to map kernel low (DMA is part of normal in grpci2_hw_init() 612 * PCI bus, the other BARs are disabled. We assume that the first BAR in grpci2_hw_init() 617 /* Target BARs must have the proper alignment */ in grpci2_hw_init()
|
/linux/drivers/accel/qaic/ |
H A D | qaic_drv.c | 431 int bars; in init_pci() local 434 bars = pci_select_bars(pdev, IORESOURCE_MEM); in init_pci() 436 /* make sure the device has the expected BARs */ in init_pci() 437 if (bars != (BIT(0) | BIT(2) | BIT(4))) { in init_pci() 438 pci_dbg(pdev, "%s: expected BARs 0, 2, and 4 not found in device. Found 0x%x\n", in init_pci() 439 __func__, bars); in init_pci()
|
/linux/Documentation/devicetree/bindings/i2c/ |
H A D | i2c-pxa-pci-ce4100.txt | 5 PCI device has three PCI-bars, each bar contains a complete I2C 20 1:1 mapped to the BARs, and the second is the
|
/linux/drivers/pci/endpoint/functions/ |
H A D | pci-epf-ntb.c | 223 * BAR_MW4 for rest of the BARs of epf_ntb_epc that is connected to HOST1. This 231 * mapped to a single BAR (BAR2) above for 32-bit BARs. The exact BAR that's 726 * other BARs for peer scratchpad (because of 64-bit BARs or reserved BARs). 771 * other BARs for peer scratchpad (because of 64-bit BARs or reserved BARs). 842 * the default self scratchpad BAR, an NTB could have other BARs for self 843 * scratchpad (because of reserved BARs). This function can get the exact BAR 887 * NTB could have other BARs for self scratchpad (because of reserved BARs). 1219 * Clear doorbell and memory BARs (remove inbound ATU configuration). In the above 1422 * epf_ntb_db_mw_bar_init() - Configure Doorbell and Memory window BARs 1631 * epf_ntb_init_epc_bar_interface() - Identify BARs to be used for each of [all …]
|
H A D | pci-epf-vntb.c | 330 * the default self scratchpad BAR, an NTB could have other BARs for self 331 * scratchpad (because of reserved BARs). This function can get the exact BAR 522 * epf_ntb_db_bar_init() - Configure Doorbell window BARs 584 * epf_ntb_mw_bar_init() - Configure Memory window BARs 642 * epf_ntb_mw_bar_clear() - Clear Memory window BARs 644 * @num_mws: the number of Memory window BARs that to be cleared 678 * epf_ntb_init_epc_bar() - Identify BARs to be used for each of the NTB 698 /* These are required BARs which are mandatory for NTB functionality */ in epf_ntb_init_epc_bar() 708 /* These are optional BARs which don't impact NTB functionality */ in epf_ntb_init_epc_bar()
|
/linux/drivers/gpu/drm/i915/gvt/ |
H A D | cfg_space.c | 189 struct intel_vgpu_pci_bar *bars = vgpu->cfg_space.bar; in emulate_pci_bar_write() local 202 size = ~(bars[INTEL_GVT_PCI_BAR_GTTMMIO].size -1); in emulate_pci_bar_write() 213 size = ~(bars[INTEL_GVT_PCI_BAR_APERTURE].size -1); in emulate_pci_bar_write() 219 /* Unimplemented BARs */ in emulate_pci_bar_write()
|
/linux/drivers/pci/ |
H A D | pci.c | 832 * Goes over standard PCI resources (BARs) and checks if the given resource 1103 * @dev: PCI device to have its BARs restored 1345 * restore the device's BARs subsequently (1 is returned in that case). 1411 * to confirm the state change, restore its BARs if they might be lost and 1447 * restore at least the BARs so that the device will be in pci_set_full_power_state() 1851 /* Restore BARs before the command register. */ in pci_restore_config_space() 2028 int __weak pcibios_enable_device(struct pci_dev *dev, int bars) in pcibios_enable_device() argument 2030 return pci_enable_resources(dev, bars); in pcibios_enable_device() 2055 static int do_pci_enable_device(struct pci_dev *dev, int bars) in do_pci_enable_device() argument 2074 err = pcibios_enable_device(dev, bars); in do_pci_enable_device() [all …]
|
/linux/drivers/pci/hotplug/ |
H A D | ibmphp_pci.c | 136 /* We need to do this in case some other BARs were properly inserted */ in ibmphp_configure_card() 149 /* We need to do this in case some other BARs were properly inserted */ in ibmphp_configure_card() 181 /* We need to do this in case some other BARs were properly inserted */ in ibmphp_configure_card() 250 /* We need to do this in case some other BARs were properly inserted */ in ibmphp_configure_card() 283 /* We need to do this in case some other BARs were properly inserted */ in ibmphp_configure_card() 325 * This function configures the pci BARs of a single device. 355 for (count = 0; address[count]; count++) { /* for 6 BARs */ in configure_device() 631 for (count = 0; address[count]; count++) { /* for 2 BARs */ in configure_bridge() 786 /* for 2 BARs */ in configure_bridge() 1025 for (i = 0; i < 2; i++) { /* for 2 BARs */ in configure_bridge() [all …]
|
/linux/drivers/accel/amdxdna/ |
H A D | aie2_pci.c | 451 unsigned long bars = 0; in aie2_init() local 475 set_bit(PSP_REG_BAR(ndev, i), &bars); in aie2_init() 477 set_bit(xdna->dev_info->sram_bar, &bars); in aie2_init() 478 set_bit(xdna->dev_info->smu_bar, &bars); in aie2_init() 479 set_bit(xdna->dev_info->mbox_bar, &bars); in aie2_init() 482 if (!test_bit(i, &bars)) in aie2_init()
|
/linux/drivers/vfio/pci/ |
H A D | vfio_pci_rdwr.c | 133 * leftover space for ROM BARs. 254 * filling large ROM BARs much faster. in vfio_pci_bar_rw() 428 /* Only support ioeventfds into BARs */ in vfio_pci_ioeventfd()
|