Lines Matching refs:perm

118 			  struct perm_bits *perm, int offset, __le32 *val);
120 struct perm_bits *perm, int offset, __le32 val);
181 int count, struct perm_bits *perm, in vfio_default_config_read() argument
188 memcpy(&virt, perm->virt + offset, count); in vfio_default_config_read()
207 int count, struct perm_bits *perm, in vfio_default_config_write() argument
212 memcpy(&write, perm->write + offset, count); in vfio_default_config_write()
217 memcpy(&virt, perm->virt + offset, count); in vfio_default_config_write()
254 int count, struct perm_bits *perm, in vfio_direct_config_read() argument
279 int count, struct perm_bits *perm, in vfio_raw_config_write() argument
292 int count, struct perm_bits *perm, in vfio_raw_config_read() argument
322 static void free_perm_bits(struct perm_bits *perm) in free_perm_bits() argument
324 kfree(perm->virt); in free_perm_bits()
325 kfree(perm->write); in free_perm_bits()
326 perm->virt = NULL; in free_perm_bits()
327 perm->write = NULL; in free_perm_bits()
330 static int alloc_perm_bits(struct perm_bits *perm, int size) in alloc_perm_bits() argument
346 perm->virt = kzalloc(size, GFP_KERNEL); in alloc_perm_bits()
347 perm->write = kzalloc(size, GFP_KERNEL); in alloc_perm_bits()
348 if (!perm->virt || !perm->write) { in alloc_perm_bits()
349 free_perm_bits(perm); in alloc_perm_bits()
353 perm->readfn = vfio_default_config_read; in alloc_perm_bits()
354 perm->writefn = vfio_default_config_write; in alloc_perm_bits()
472 int count, struct perm_bits *perm, in vfio_basic_config_read() argument
478 count = vfio_default_config_read(vdev, pos, count, perm, offset, val); in vfio_basic_config_read()
493 int count, struct perm_bits *perm, in vfio_basic_config_write() argument
534 count = vfio_default_config_write(vdev, pos, count, perm, offset, val); in vfio_basic_config_write()
572 static int __init init_pci_cap_basic_perm(struct perm_bits *perm) in init_pci_cap_basic_perm() argument
574 if (alloc_perm_bits(perm, PCI_STD_HEADER_SIZEOF)) in init_pci_cap_basic_perm()
577 perm->readfn = vfio_basic_config_read; in init_pci_cap_basic_perm()
578 perm->writefn = vfio_basic_config_write; in init_pci_cap_basic_perm()
581 p_setw(perm, PCI_VENDOR_ID, (u16)ALL_VIRT, NO_WRITE); in init_pci_cap_basic_perm()
582 p_setw(perm, PCI_DEVICE_ID, (u16)ALL_VIRT, NO_WRITE); in init_pci_cap_basic_perm()
588 p_setw(perm, PCI_COMMAND, PCI_COMMAND_INTX_DISABLE, (u16)ALL_WRITE); in init_pci_cap_basic_perm()
591 p_setw(perm, PCI_STATUS, PCI_STATUS_CAP_LIST, NO_WRITE); in init_pci_cap_basic_perm()
594 p_setb(perm, PCI_CACHE_LINE_SIZE, NO_VIRT, (u8)ALL_WRITE); in init_pci_cap_basic_perm()
595 p_setb(perm, PCI_LATENCY_TIMER, NO_VIRT, (u8)ALL_WRITE); in init_pci_cap_basic_perm()
596 p_setb(perm, PCI_BIST, NO_VIRT, (u8)ALL_WRITE); in init_pci_cap_basic_perm()
599 p_setd(perm, PCI_BASE_ADDRESS_0, ALL_VIRT, ALL_WRITE); in init_pci_cap_basic_perm()
600 p_setd(perm, PCI_BASE_ADDRESS_1, ALL_VIRT, ALL_WRITE); in init_pci_cap_basic_perm()
601 p_setd(perm, PCI_BASE_ADDRESS_2, ALL_VIRT, ALL_WRITE); in init_pci_cap_basic_perm()
602 p_setd(perm, PCI_BASE_ADDRESS_3, ALL_VIRT, ALL_WRITE); in init_pci_cap_basic_perm()
603 p_setd(perm, PCI_BASE_ADDRESS_4, ALL_VIRT, ALL_WRITE); in init_pci_cap_basic_perm()
604 p_setd(perm, PCI_BASE_ADDRESS_5, ALL_VIRT, ALL_WRITE); in init_pci_cap_basic_perm()
605 p_setd(perm, PCI_ROM_ADDRESS, ALL_VIRT, ALL_WRITE); in init_pci_cap_basic_perm()
608 p_setb(perm, PCI_CAPABILITY_LIST, (u8)ALL_VIRT, NO_WRITE); in init_pci_cap_basic_perm()
611 p_setb(perm, PCI_INTERRUPT_LINE, (u8)ALL_VIRT, (u8)ALL_WRITE); in init_pci_cap_basic_perm()
614 p_setb(perm, PCI_INTERRUPT_PIN, (u8)ALL_VIRT, (u8)NO_WRITE); in init_pci_cap_basic_perm()
620 int count, struct perm_bits *perm, in vfio_pm_config_write() argument
623 count = vfio_default_config_write(vdev, pos, count, perm, offset, val); in vfio_pm_config_write()
652 static int __init init_pci_cap_pm_perm(struct perm_bits *perm) in init_pci_cap_pm_perm() argument
654 if (alloc_perm_bits(perm, pci_cap_length[PCI_CAP_ID_PM])) in init_pci_cap_pm_perm()
657 perm->writefn = vfio_pm_config_write; in init_pci_cap_pm_perm()
663 p_setb(perm, PCI_CAP_LIST_NEXT, (u8)ALL_VIRT, NO_WRITE); in init_pci_cap_pm_perm()
670 p_setd(perm, PCI_PM_CTRL, NO_VIRT, ~PCI_PM_CTRL_STATE_MASK); in init_pci_cap_pm_perm()
675 int count, struct perm_bits *perm, in vfio_vpd_config_write() argument
689 count = vfio_default_config_write(vdev, pos, count, perm, offset, val); in vfio_vpd_config_write()
718 static int __init init_pci_cap_vpd_perm(struct perm_bits *perm) in init_pci_cap_vpd_perm() argument
720 if (alloc_perm_bits(perm, pci_cap_length[PCI_CAP_ID_VPD])) in init_pci_cap_vpd_perm()
723 perm->writefn = vfio_vpd_config_write; in init_pci_cap_vpd_perm()
729 p_setb(perm, PCI_CAP_LIST_NEXT, (u8)ALL_VIRT, NO_WRITE); in init_pci_cap_vpd_perm()
735 p_setw(perm, PCI_VPD_ADDR, (u16)ALL_VIRT, (u16)ALL_WRITE); in init_pci_cap_vpd_perm()
736 p_setd(perm, PCI_VPD_DATA, ALL_VIRT, ALL_WRITE); in init_pci_cap_vpd_perm()
742 static int __init init_pci_cap_pcix_perm(struct perm_bits *perm) in init_pci_cap_pcix_perm() argument
745 if (alloc_perm_bits(perm, PCI_CAP_PCIX_SIZEOF_V2)) in init_pci_cap_pcix_perm()
748 p_setb(perm, PCI_CAP_LIST_NEXT, (u8)ALL_VIRT, NO_WRITE); in init_pci_cap_pcix_perm()
750 p_setw(perm, PCI_X_CMD, NO_VIRT, (u16)ALL_WRITE); in init_pci_cap_pcix_perm()
751 p_setd(perm, PCI_X_ECC_CSR, NO_VIRT, ALL_WRITE); in init_pci_cap_pcix_perm()
756 static int __init init_pci_cap_exp_perm(struct perm_bits *perm) in init_pci_cap_exp_perm() argument
759 if (alloc_perm_bits(perm, PCI_CAP_EXP_ENDPOINT_SIZEOF_V2)) in init_pci_cap_exp_perm()
762 p_setb(perm, PCI_CAP_LIST_NEXT, (u8)ALL_VIRT, NO_WRITE); in init_pci_cap_exp_perm()
769 p_setw(perm, PCI_EXP_DEVCTL, NO_VIRT, ~PCI_EXP_DEVCTL_PHANTOM); in init_pci_cap_exp_perm()
770 p_setw(perm, PCI_EXP_DEVCTL2, NO_VIRT, ~PCI_EXP_DEVCTL2_ARI); in init_pci_cap_exp_perm()
775 static int __init init_pci_cap_af_perm(struct perm_bits *perm) in init_pci_cap_af_perm() argument
777 if (alloc_perm_bits(perm, pci_cap_length[PCI_CAP_ID_AF])) in init_pci_cap_af_perm()
780 p_setb(perm, PCI_CAP_LIST_NEXT, (u8)ALL_VIRT, NO_WRITE); in init_pci_cap_af_perm()
781 p_setb(perm, PCI_AF_CTRL, NO_VIRT, PCI_AF_CTRL_FLR); in init_pci_cap_af_perm()
786 static int __init init_pci_ext_cap_err_perm(struct perm_bits *perm) in init_pci_ext_cap_err_perm() argument
790 if (alloc_perm_bits(perm, pci_ext_cap_length[PCI_EXT_CAP_ID_ERR])) in init_pci_ext_cap_err_perm()
798 p_setd(perm, 0, ALL_VIRT, NO_WRITE); in init_pci_ext_cap_err_perm()
818 p_setd(perm, PCI_ERR_UNCOR_STATUS, NO_VIRT, mask); in init_pci_ext_cap_err_perm()
819 p_setd(perm, PCI_ERR_UNCOR_MASK, NO_VIRT, mask); in init_pci_ext_cap_err_perm()
820 p_setd(perm, PCI_ERR_UNCOR_SEVER, NO_VIRT, mask); in init_pci_ext_cap_err_perm()
830 p_setd(perm, PCI_ERR_COR_STATUS, NO_VIRT, mask); in init_pci_ext_cap_err_perm()
831 p_setd(perm, PCI_ERR_COR_MASK, NO_VIRT, mask); in init_pci_ext_cap_err_perm()
835 p_setd(perm, PCI_ERR_CAP, NO_VIRT, mask); in init_pci_ext_cap_err_perm()
840 static int __init init_pci_ext_cap_pwr_perm(struct perm_bits *perm) in init_pci_ext_cap_pwr_perm() argument
842 if (alloc_perm_bits(perm, pci_ext_cap_length[PCI_EXT_CAP_ID_PWR])) in init_pci_ext_cap_pwr_perm()
845 p_setd(perm, 0, ALL_VIRT, NO_WRITE); in init_pci_ext_cap_pwr_perm()
848 p_setb(perm, PCI_PWR_DATA, NO_VIRT, (u8)ALL_WRITE); in init_pci_ext_cap_pwr_perm()
913 int count, struct perm_bits *perm, in vfio_msi_config_read() argument
929 return vfio_default_config_read(vdev, pos, count, perm, offset, val); in vfio_msi_config_read()
933 int count, struct perm_bits *perm, in vfio_msi_config_write() argument
936 count = vfio_default_config_write(vdev, pos, count, perm, offset, val); in vfio_msi_config_write()
978 static int init_pci_cap_msi_perm(struct perm_bits *perm, int len, u16 flags) in init_pci_cap_msi_perm() argument
980 if (alloc_perm_bits(perm, len)) in init_pci_cap_msi_perm()
983 perm->readfn = vfio_msi_config_read; in init_pci_cap_msi_perm()
984 perm->writefn = vfio_msi_config_write; in init_pci_cap_msi_perm()
986 p_setb(perm, PCI_CAP_LIST_NEXT, (u8)ALL_VIRT, NO_WRITE); in init_pci_cap_msi_perm()
992 p_setb(perm, PCI_MSI_FLAGS, (u8)ALL_VIRT, (u8)ALL_WRITE); in init_pci_cap_msi_perm()
993 p_setd(perm, PCI_MSI_ADDRESS_LO, ALL_VIRT, ALL_WRITE); in init_pci_cap_msi_perm()
995 p_setd(perm, PCI_MSI_ADDRESS_HI, ALL_VIRT, ALL_WRITE); in init_pci_cap_msi_perm()
996 p_setw(perm, PCI_MSI_DATA_64, (u16)ALL_VIRT, (u16)ALL_WRITE); in init_pci_cap_msi_perm()
998 p_setd(perm, PCI_MSI_MASK_64, NO_VIRT, ALL_WRITE); in init_pci_cap_msi_perm()
999 p_setd(perm, PCI_MSI_PENDING_64, NO_VIRT, ALL_WRITE); in init_pci_cap_msi_perm()
1002 p_setw(perm, PCI_MSI_DATA_32, (u16)ALL_VIRT, (u16)ALL_WRITE); in init_pci_cap_msi_perm()
1004 p_setd(perm, PCI_MSI_MASK_32, NO_VIRT, ALL_WRITE); in init_pci_cap_msi_perm()
1005 p_setd(perm, PCI_MSI_PENDING_32, NO_VIRT, ALL_WRITE); in init_pci_cap_msi_perm()
1571 struct perm_bits *perm; in vfio_config_do_rw() local
1598 perm = &unassigned_perms; in vfio_config_do_rw()
1604 perm = &ecap_perms[cap_id]; in vfio_config_do_rw()
1609 perm = &cap_perms[cap_id]; in vfio_config_do_rw()
1612 perm = vdev->msi_perm; in vfio_config_do_rw()
1625 if (!perm->writefn) in vfio_config_do_rw()
1631 ret = perm->writefn(vdev, *ppos, count, perm, offset, val); in vfio_config_do_rw()
1633 if (perm->readfn) { in vfio_config_do_rw()
1634 ret = perm->readfn(vdev, *ppos, count, in vfio_config_do_rw()
1635 perm, offset, &val); in vfio_config_do_rw()