| /xen/xen/arch/x86/x86_64/ |
| A D | pci.c | 11 #define PCI_CONF_ADDRESS(sbdf, reg) \ argument 18 if ( sbdf.seg || reg > 255 ) in pci_conf_read8() 20 pci_mmcfg_read(sbdf.seg, sbdf.bus, sbdf.devfn, reg, 1, &value); in pci_conf_read8() 29 if ( sbdf.seg || reg > 255 ) in pci_conf_read16() 33 pci_mmcfg_read(sbdf.seg, sbdf.bus, sbdf.devfn, reg, 2, &value); in pci_conf_read16() 42 if ( sbdf.seg || reg > 255 ) in pci_conf_read32() 46 pci_mmcfg_read(sbdf.seg, sbdf.bus, sbdf.devfn, reg, 4, &value); in pci_conf_read32() 55 if ( sbdf.seg || reg > 255 ) in pci_conf_write8() 56 pci_mmcfg_write(sbdf.seg, sbdf.bus, sbdf.devfn, reg, 1, data); in pci_conf_write8() 64 pci_mmcfg_write(sbdf.seg, sbdf.bus, sbdf.devfn, reg, 2, data); in pci_conf_write16() [all …]
|
| /xen/xen/arch/arm/pci/ |
| A D | pci-access.c | 24 void __iomem *addr = bridge->ops->map_bus(bridge, sbdf, reg); in pci_generic_config_read() 53 void __iomem *addr = bridge->ops->map_bus(bridge, sbdf, reg); in pci_generic_config_write() 80 struct pci_host_bridge *bridge = pci_find_host_bridge(sbdf.seg, sbdf.bus); in pci_config_read() 88 bridge->ops->read(bridge, sbdf, reg, len, &val); in pci_config_read() 93 static void pci_config_write(pci_sbdf_t sbdf, unsigned int reg, in pci_config_write() argument 96 struct pci_host_bridge *bridge = pci_find_host_bridge(sbdf.seg, sbdf.bus); in pci_config_write() 104 bridge->ops->write(bridge, sbdf, reg, len, val); in pci_config_write() 112 void pci_conf_write##size(pci_sbdf_t sbdf, \ 115 pci_config_write(sbdf, reg, size / 8, val); \ 119 type pci_conf_read##size(pci_sbdf_t sbdf, \ [all …]
|
| A D | ecam.c | 24 pci_sbdf_t sbdf, uint32_t where) in pci_ecam_map_bus() argument 31 unsigned int busn = sbdf.bus; in pci_ecam_map_bus() 39 return base + (sbdf.devfn << devfn_shift) + where; in pci_ecam_map_bus()
|
| /xen/xen/drivers/passthrough/vtd/ |
| A D | quirks.c | 110 pci_sbdf_t sbdf; in is_azalia_tlb_enabled() local 118 sbdf = PCI_SBDF(drhd->segment, drhd->scope.devices[0]); in is_azalia_tlb_enabled() 120 pci_conf_read16(sbdf, PCI_DEVICE_ID) != 0x3a3e ) in is_azalia_tlb_enabled() 124 sbdf = PCI_SBDF(drhd->segment, 0, 0x14, 0); in is_azalia_tlb_enabled() 126 pci_conf_read16(sbdf, PCI_DEVICE_ID) != 0x342e ) in is_azalia_tlb_enabled() 129 vtisochctrl = pci_conf_read32(sbdf, 0x188); in is_azalia_tlb_enabled() 519 val = pci_conf_read32(pdev->sbdf, 0x1AC); in pci_vtd_quirk() 574 val = pci_conf_read32(pdev->sbdf, 0x20c); in pci_vtd_quirk() 590 bar = pci_conf_read32(pdev->sbdf, 0x6c); in pci_vtd_quirk() 606 pa, &pdev->sbdf); in pci_vtd_quirk() [all …]
|
| A D | dmar.c | 934 u32 sbdf[MAX_USER_RMRR_DEV]; member 948 uint32_t *sbdf) in add_one_user_rmrr() argument 958 dev_count, sbdf[0], ERMRRU_ARG); in add_one_user_rmrr() 1017 rmrr->scope.devices[idx] = sbdf[idx]; in add_one_user_rmrr() 1018 seg |= PCI_SEG(sbdf[idx]); in add_one_user_rmrr() 1020 if ( seg != PCI_SEG(sbdf[0]) ) in add_one_user_rmrr() 1058 user_rmrrs[i].sbdf); in add_user_rmrr() 1170 PCI_SBDF(rmrr->segment, bdf).sbdf, ctxt); in intel_iommu_get_reserved_device_memory() 1243 seg = PCI_SEG(user_rmrrs[nr_rmrr].sbdf[0]); in parse_rmrr_param() 1247 user_rmrrs[nr_rmrr].sbdf[dev_count] = in parse_rmrr_param() [all …]
|
| /xen/xen/drivers/pci/ |
| A D | pci.c | 11 unsigned int pci_find_cap_offset(pci_sbdf_t sbdf, unsigned int cap) in pci_find_cap_offset() argument 18 status = pci_conf_read16(sbdf, PCI_STATUS); in pci_find_cap_offset() 24 pos = pci_conf_read8(sbdf, pos); in pci_find_cap_offset() 29 id = pci_conf_read8(sbdf, pos + PCI_CAP_LIST_ID); in pci_find_cap_offset() 50 pos = pci_conf_read8(sbdf, pos); in pci_find_next_cap_ttl() 54 id = pci_conf_read8(sbdf, (pos & ~3) + PCI_CAP_LIST_ID); in pci_find_next_cap_ttl() 89 return pci_find_next_ext_capability(sbdf, 0, cap); in pci_find_ext_capability() 109 header = pci_conf_read32(sbdf, pos); in pci_find_next_ext_capability() 125 header = pci_conf_read32(sbdf, pos); in pci_find_next_ext_capability() 132 uint16_t cmd = pci_conf_read16(pdev->sbdf, PCI_COMMAND); in pci_intx() [all …]
|
| /xen/xen/drivers/vpci/ |
| A D | vpci.c | 58 if ( pdev->sbdf.fn ) in assign_virtual_sbdf() 61 &pdev->sbdf); in assign_virtual_sbdf() 96 if ( pdev->vpci->guest_sbdf.sbdf != ~0 ) in vpci_deassign_device() 214 return pci_conf_read8(pdev->sbdf, reg); in vpci_hw_read8() 339 data = pci_conf_read32(sbdf, reg); in vpci_read_hw() 360 data = pci_conf_read16(sbdf, reg); in vpci_read_hw() 364 data = pci_conf_read8(sbdf, reg); in vpci_read_hw() 386 pci_conf_write32(sbdf, reg, data); in vpci_write_hw() 411 pci_conf_write8(sbdf, reg, data); in vpci_write_hw() 456 pdev = pci_get_pdev(d, sbdf); in vpci_read() [all …]
|
| A D | header.c | 156 pci_conf_write32(pdev->sbdf, rom_pos, val); in modify_decoding() 169 pci_conf_write16(pdev->sbdf, PCI_COMMAND, cmd); in modify_decoding() 353 &pdev->sbdf, start, end); in modify_bars() 418 &pdev->sbdf, start, end, rc); in modify_bars() 552 pci_conf_write16(pdev->sbdf, reg, cmd); in cmd_write() 612 pci_conf_write32(pdev->sbdf, reg, val); in bar_write() 694 &pdev->sbdf); in rom_write() 712 pci_conf_write32(pdev->sbdf, reg, val); in rom_write() 873 cmd = pci_conf_read16(pdev->sbdf, PCI_COMMAND); in init_header() 911 val = pci_conf_read32(pdev->sbdf, reg); in init_header() [all …]
|
| A D | msix.c | 55 &pdev->sbdf, nr, rc); in update_entry() 65 &pdev->sbdf, nr, rc); in update_entry() 132 &pdev->sbdf, i, rc); in control_write() 150 pci_conf_write16(pdev->sbdf, reg, val); in control_write() 310 &msix->pdev->sbdf); in adjacent_read() 343 &msix->pdev->sbdf); in adjacent_read() 471 &msix->pdev->sbdf); in adjacent_write() 491 &msix->pdev->sbdf); in adjacent_write() 674 &pdev->sbdf, mfn_x(mfn), t, start); in vpci_make_msix_hole() 712 msix_offset = pci_find_cap_offset(pdev->sbdf, PCI_CAP_ID_MSIX); in init_msix() [all …]
|
| A D | msi.c | 89 pci_conf_write16(pdev->sbdf, reg, control_read(pdev, reg, data)); in control_write() 198 unsigned int pos = pci_find_cap_offset(pdev->sbdf, PCI_CAP_ID_MSI); in init_msi() 220 control = pci_conf_read16(pdev->sbdf, msi_control_reg(pos)); in init_msi() 303 printk("%pp MSI\n", &pdev->sbdf); in vpci_dump_msi() 320 printk("%pp MSI-X\n", &pdev->sbdf); in vpci_dump_msi()
|
| /xen/xen/arch/arm/ |
| A D | vpci.c | 13 pci_sbdf_t sbdf; in vpci_sbdf_from_gpa() local 17 sbdf.sbdf = VPCI_ECAM_BDF(gpa - bridge->cfg->phys_addr); in vpci_sbdf_from_gpa() 18 sbdf.seg = bridge->segment; in vpci_sbdf_from_gpa() 19 sbdf.bus += bridge->cfg->busn_start; in vpci_sbdf_from_gpa() 22 sbdf.sbdf = VPCI_ECAM_BDF(gpa - GUEST_VPCI_ECAM_BASE); in vpci_sbdf_from_gpa() 24 return sbdf; in vpci_sbdf_from_gpa() 31 pci_sbdf_t sbdf = vpci_sbdf_from_gpa(bridge, info->gpa); in vpci_mmio_read() local 37 if ( vpci_ecam_read(sbdf, ECAM_REG_OFFSET(info->gpa), in vpci_mmio_read() 53 pci_sbdf_t sbdf = vpci_sbdf_from_gpa(bridge, info->gpa); in vpci_mmio_write() local 55 return vpci_ecam_write(sbdf, ECAM_REG_OFFSET(info->gpa), in vpci_mmio_write()
|
| /xen/xen/include/xen/ |
| A D | pci.h | 28 #define PCI_SEG(sbdf) (((sbdf) >> 16) & 0xffff) argument 36 ((pci_sbdf_t){ .sbdf = (((s) & 0xffff) << 16) | PCI_BDF(b, d, ##f) }) 39 ((pci_sbdf_t){ .sbdf = (((s) & 0xffff) << 16) | ((bdf) & 0xffff) }) 51 uint32_t sbdf; member 113 pci_sbdf_t sbdf; member 210 struct pci_dev *pci_get_real_pdev(pci_sbdf_t sbdf); 213 uint8_t pci_conf_read8(pci_sbdf_t sbdf, unsigned int reg); 214 uint16_t pci_conf_read16(pci_sbdf_t sbdf, unsigned int reg); 215 uint32_t pci_conf_read32(pci_sbdf_t sbdf, unsigned int reg); 229 unsigned int pci_find_next_cap(pci_sbdf_t sbdf, unsigned int pos, [all …]
|
| A D | vpci.h | 64 uint32_t vpci_read(pci_sbdf_t sbdf, unsigned int reg, unsigned int size); 65 void vpci_write(pci_sbdf_t sbdf, unsigned int reg, unsigned int size, 188 #define INVALID_GUEST_SBDF ((pci_sbdf_t){ .sbdf = ~0U }) 267 bool vpci_ecam_write(pci_sbdf_t sbdf, unsigned int reg, unsigned int len, 270 bool vpci_ecam_read(pci_sbdf_t sbdf, unsigned int reg, unsigned int len, 287 static inline uint32_t vpci_read(pci_sbdf_t sbdf, unsigned int reg, in vpci_read() argument 294 static inline void vpci_write(pci_sbdf_t sbdf, unsigned int reg, in vpci_write() argument
|
| /xen/xen/drivers/passthrough/ |
| A D | ats.c | 29 pos = pci_find_ext_capability(pdev->sbdf, PCI_EXT_CAP_ID_ATS); in enable_ats_device() 33 dprintk(XENLOG_INFO, "%pp: ATS capability found\n", &pdev->sbdf); in enable_ats_device() 35 value = pci_conf_read16(pdev->sbdf, pos + ATS_REG_CTL); in enable_ats_device() 51 pci_conf_write16(pdev->sbdf, pos + ATS_REG_CTL, value); in enable_ats_device() 57 value = pci_conf_read16(pdev->sbdf, pos + ATS_REG_CAP); in enable_ats_device() 65 &pdev->sbdf, pos ? "is" : "was"); in enable_ats_device() 76 value = pci_conf_read16(pdev->sbdf, pdev->ats.cap_pos + ATS_REG_CTL); in disable_ats_device() 78 pci_conf_write16(pdev->sbdf, pdev->ats.cap_pos + ATS_REG_CTL, value); in disable_ats_device() 83 dprintk(XENLOG_INFO, "%pp: ATS is disabled\n", &pdev->sbdf); in disable_ats_device()
|
| A D | pci.c | 385 pci_sbdf_t sbdf = pdev->sbdf; in alloc_pdev() local 399 sbdf = pdev->sbdf; in alloc_pdev() 520 if ( !(sbdf.devfn & stride) ) in pci_get_real_pdev() 522 sbdf.devfn &= ~stride; in pci_get_real_pdev() 523 pdev = pci_get_pdev(NULL, sbdf); in pci_get_real_pdev() 551 if ( pdev->sbdf.bdf == sbdf.bdf && in pci_get_pdev() 557 if ( pdev->sbdf.sbdf == sbdf.sbdf ) in pci_get_pdev() 615 pci_conf_write32(sbdf, pos, ~0); in pci_size_mem_bar() 638 pci_conf_write32(sbdf, pos, bar); in pci_size_mem_bar() 729 &pdev->sbdf, i); in pci_add_device() [all …]
|
| A D | msi.c | 27 pos = pci_find_cap_offset(pdev->sbdf, PCI_CAP_ID_MSI); in pdev_msi_init() 30 uint16_t ctrl = pci_conf_read16(pdev->sbdf, msi_control_reg(pos)); in pdev_msi_init() 35 pos = pci_find_cap_offset(pdev->sbdf, PCI_CAP_ID_MSIX); in pdev_msi_init() 46 ctrl = pci_conf_read16(pdev->sbdf, msix_control_reg(pos)); in pdev_msi_init() 57 &pdev->sbdf, in pdev_msi_init() 61 pci_conf_write16(pdev->sbdf, msix_control_reg(pos), ctrl); in pdev_msi_init()
|
| /xen/xen/arch/x86/ |
| A D | msi.c | 130 pci_sbdf_t sbdf = dev->sbdf; in memory_decoded() local 134 sbdf.bus = dev->info.physfn.bus; in memory_decoded() 135 sbdf.devfn = dev->info.physfn.devfn; in memory_decoded() 345 pci_conf_write16(pdev->sbdf, in msi_set_mask_bit() 376 pci_conf_write16(pdev->sbdf, in msi_set_mask_bit() 829 vf = dev->sbdf.bdf; in msix_capability_init() 974 &dev->sbdf, d); in msix_capability_init() 1029 msi->irq, &pdev->sbdf); in __pci_enable_msi() 1090 msi->irq, &pdev->sbdf); in __pci_enable_msix() 1156 entry->irq, &dev->sbdf); in __pci_disable_msix() [all …]
|
| /xen/xen/arch/x86/hvm/ |
| A D | io.c | 244 sbdf->bdf = CF8_BDF(cf8); in hvm_pci_decode_addr() 245 sbdf->seg = 0; in hvm_pci_decode_addr() 266 pci_sbdf_t sbdf; in vpci_portio_read() local 288 *data = vpci_read(sbdf, reg, size); in vpci_portio_read() 299 pci_sbdf_t sbdf; in vpci_portio_write() local 319 vpci_write(sbdf, reg, size, data); in vpci_portio_write() 386 sbdf->bdf = VPCI_ECAM_BDF(addr); in vpci_mmcfg_decode_addr() 387 sbdf->bus += mmcfg->start_bus; in vpci_mmcfg_decode_addr() 388 sbdf->seg = mmcfg->segment; in vpci_mmcfg_decode_addr() 411 pci_sbdf_t sbdf; in vpci_mmcfg_read() local [all …]
|
| A D | ioreq.c | 277 pci_sbdf_t sbdf; in arch_ioreq_server_get_type_addr() local 279 reg = hvm_pci_decode_addr(cf8, p->addr, &sbdf); in arch_ioreq_server_get_type_addr() 283 *addr = ((uint64_t)sbdf.sbdf << 32) | reg; in arch_ioreq_server_get_type_addr()
|
| /xen/xen/drivers/char/ |
| A D | xhci-dbc.c | 253 pci_sbdf_t sbdf; member 299 if ( dbc->sbdf.sbdf == 0 ) in dbc_init_xhc() 317 dbc->sbdf = sbdf; in dbc_init_xhc() 328 dbc->sbdf.sbdf = 0; in dbc_init_xhc() 331 if ( !dbc->sbdf.sbdf ) in dbc_init_xhc() 353 cmd = pci_conf_read16(dbc->sbdf, PCI_COMMAND); in dbc_init_xhc() 1203 if ( pci_ro_device(0, uart->dbc.sbdf.bus, uart->dbc.sbdf.devfn) ) in dbc_uart_init_postirq() 1206 &uart->dbc.sbdf); in dbc_uart_init_postirq() 1209 if ( pci_hide_device(0, uart->dbc.sbdf.bus, uart->dbc.sbdf.devfn) ) in dbc_uart_init_postirq() 1212 &uart->dbc.sbdf); in dbc_uart_init_postirq() [all …]
|
| /xen/xen/arch/arm/include/asm/ |
| A D | pci.h | 72 void __iomem *(*map_bus)(struct pci_host_bridge *bridge, pci_sbdf_t sbdf, 74 int (*read)(struct pci_host_bridge *bridge, pci_sbdf_t sbdf, 76 int (*write)(struct pci_host_bridge *bridge, pci_sbdf_t sbdf, 99 int pci_generic_config_read(struct pci_host_bridge *bridge, pci_sbdf_t sbdf, 101 int pci_generic_config_write(struct pci_host_bridge *bridge, pci_sbdf_t sbdf, 104 pci_sbdf_t sbdf, uint32_t where);
|
| /xen/tools/flask/utils/ |
| A D | label-pci.c | 40 uint32_t sbdf; in main() local 65 sbdf = (seg << 16) | (bus << 8) | (dev << 3) | fn; in main() 78 ret = xc_flask_add_device(xch, sbdf, argv[2]); in main() 81 argv[1], sbdf, argv[2], ret); in main()
|
| /xen/tools/python/xen/lowlevel/xc/ |
| A D | xc.c | 544 int32_t sbdf = 0; in pyxc_test_assign_device() local 554 sbdf = seg << 16; in pyxc_test_assign_device() 565 sbdf = 0; in pyxc_test_assign_device() 577 int32_t sbdf = 0; in pyxc_assign_device() local 587 sbdf = seg << 16; in pyxc_assign_device() 598 sbdf = 0; in pyxc_assign_device() 610 int32_t sbdf = 0; in pyxc_deassign_device() local 620 sbdf = seg << 16; in pyxc_deassign_device() 631 sbdf = 0; in pyxc_deassign_device() 640 uint32_t sbdf; in pyxc_get_device_group() local [all …]
|
| /xen/xen/drivers/passthrough/vtd/x86/ |
| A D | ats.c | 56 pos = pci_find_cap_offset(pdev->sbdf, PCI_CAP_ID_EXP); in ats_device() 58 expfl = pci_conf_read16(pdev->sbdf, pos + PCI_EXP_FLAGS); in ats_device() 65 pos = pci_find_ext_capability(pdev->sbdf, PCI_EXT_CAP_ID_ATS); in ats_device()
|
| /xen/xen/drivers/passthrough/amd/ |
| A D | iommu_map.c | 718 pci_sbdf_t sbdf = PCI_SBDF(seg, bdf); in amd_iommu_get_reserved_device_memory() local 730 pdev = pci_get_pdev(NULL, sbdf); in amd_iommu_get_reserved_device_memory() 739 if ( func(0, 0, sbdf.sbdf, ctxt) ) in amd_iommu_get_reserved_device_memory() 747 func(0, 0, PCI_SBDF(seg, req).sbdf, ctxt) ) in amd_iommu_get_reserved_device_memory() 761 PFN_DOWN(iommu->exclusion_base), sbdf.sbdf, ctxt); in amd_iommu_get_reserved_device_memory() 772 sbdf.sbdf, ctxt); in amd_iommu_get_reserved_device_memory() 841 unsigned int req_id = get_dma_requestor_id(pdev->seg, pdev->sbdf.bdf); in amd_iommu_quarantine_init() 875 AMD_IOMMU_WARN("%pp: quarantine unity mapping failed\n", &pdev->sbdf); in amd_iommu_quarantine_init()
|