Lines Matching refs:info

331 static void kvmgt_protect_table_init(struct intel_vgpu *info)
333 hash_init(info->ptable);
336 static void kvmgt_protect_table_destroy(struct intel_vgpu *info)
342 hash_for_each_safe(info->ptable, i, tmp, p, hnode) {
349 __kvmgt_protect_table_find(struct intel_vgpu *info, gfn_t gfn)
353 lockdep_assert_held(&info->vgpu_lock);
355 hash_for_each_possible(info->ptable, p, hnode, gfn) {
365 static bool kvmgt_gfn_is_write_protected(struct intel_vgpu *info, gfn_t gfn)
369 p = __kvmgt_protect_table_find(info, gfn);
373 static void kvmgt_protect_table_add(struct intel_vgpu *info, gfn_t gfn)
377 if (kvmgt_gfn_is_write_protected(info, gfn))
385 hash_add(info->ptable, &p->hnode, gfn);
388 static void kvmgt_protect_table_del(struct intel_vgpu *info, gfn_t gfn)
392 p = __kvmgt_protect_table_find(info, gfn);
1144 struct vfio_device_info info;
1148 if (copy_from_user(&info, (void __user *)arg, minsz))
1151 if (info.argsz < minsz)
1154 info.flags = VFIO_DEVICE_FLAGS_PCI;
1155 info.flags |= VFIO_DEVICE_FLAGS_RESET;
1156 info.num_regions = VFIO_PCI_NUM_REGIONS +
1158 info.num_irqs = VFIO_PCI_NUM_IRQS;
1160 return copy_to_user((void __user *)arg, &info, minsz) ?
1164 struct vfio_region_info info;
1174 if (copy_from_user(&info, (void __user *)arg, minsz))
1177 if (info.argsz < minsz)
1180 switch (info.index) {
1182 info.offset = VFIO_PCI_INDEX_TO_OFFSET(info.index);
1183 info.size = vgpu->gvt->device_info.cfg_space_size;
1184 info.flags = VFIO_REGION_INFO_FLAG_READ |
1188 info.offset = VFIO_PCI_INDEX_TO_OFFSET(info.index);
1189 info.size = vgpu->cfg_space.bar[info.index].size;
1190 if (!info.size) {
1191 info.flags = 0;
1195 info.flags = VFIO_REGION_INFO_FLAG_READ |
1199 info.offset = VFIO_PCI_INDEX_TO_OFFSET(info.index);
1200 info.size = 0;
1201 info.flags = 0;
1204 info.offset = VFIO_PCI_INDEX_TO_OFFSET(info.index);
1205 info.flags = VFIO_REGION_INFO_FLAG_CAPS |
1209 info.size = gvt_aperture_sz(vgpu->gvt);
1226 info.offset = VFIO_PCI_INDEX_TO_OFFSET(info.index);
1227 info.size = 0;
1228 info.flags = 0;
1230 gvt_dbg_core("get region info bar:%d\n", info.index);
1235 info.offset = VFIO_PCI_INDEX_TO_OFFSET(info.index);
1236 info.size = 0;
1237 info.flags = 0;
1239 gvt_dbg_core("get region info index:%d\n", info.index);
1247 if (info.index >= VFIO_PCI_NUM_REGIONS +
1250 info.index =
1251 array_index_nospec(info.index,
1255 i = info.index - VFIO_PCI_NUM_REGIONS;
1257 info.offset =
1258 VFIO_PCI_INDEX_TO_OFFSET(info.index);
1259 info.size = vgpu->region[i].size;
1260 info.flags = vgpu->region[i].flags;
1273 if ((info.flags & VFIO_REGION_INFO_FLAG_CAPS) && sparse) {
1292 info.flags |= VFIO_REGION_INFO_FLAG_CAPS;
1293 if (info.argsz < sizeof(info) + caps.size) {
1294 info.argsz = sizeof(info) + caps.size;
1295 info.cap_offset = 0;
1297 vfio_info_cap_shift(&caps, sizeof(info));
1299 sizeof(info), caps.buf,
1305 info.cap_offset = sizeof(info);
1312 return copy_to_user((void __user *)arg, &info, minsz) ?
1315 struct vfio_irq_info info;
1319 if (copy_from_user(&info, (void __user *)arg, minsz))
1322 if (info.argsz < minsz || info.index >= VFIO_PCI_NUM_IRQS)
1325 switch (info.index) {
1333 info.flags = VFIO_IRQ_INFO_EVENTFD;
1335 info.count = intel_vgpu_get_irq_count(vgpu, info.index);
1337 if (info.index == VFIO_PCI_INTX_IRQ_INDEX)
1338 info.flags |= (VFIO_IRQ_INFO_MASKABLE |
1341 info.flags |= VFIO_IRQ_INFO_NORESIZE;
1343 return copy_to_user((void __user *)arg, &info, minsz) ?
1545 int intel_gvt_page_track_add(struct intel_vgpu *info, u64 gfn)
1549 if (!test_bit(INTEL_VGPU_STATUS_ATTACHED, info->status))
1552 if (kvmgt_gfn_is_write_protected(info, gfn))
1555 r = kvm_write_track_add_gfn(info->vfio_device.kvm, gfn);
1559 kvmgt_protect_table_add(info, gfn);
1563 int intel_gvt_page_track_remove(struct intel_vgpu *info, u64 gfn)
1567 if (!test_bit(INTEL_VGPU_STATUS_ATTACHED, info->status))
1570 if (!kvmgt_gfn_is_write_protected(info, gfn))
1573 r = kvm_write_track_remove_gfn(info->vfio_device.kvm, gfn);
1577 kvmgt_protect_table_del(info, gfn);
1584 struct intel_vgpu *info =
1587 mutex_lock(&info->vgpu_lock);
1589 if (kvmgt_gfn_is_write_protected(info, gpa >> PAGE_SHIFT))
1590 intel_vgpu_page_track_handler(info, gpa,
1593 mutex_unlock(&info->vgpu_lock);
1600 struct intel_vgpu *info =
1603 mutex_lock(&info->vgpu_lock);
1606 if (kvmgt_gfn_is_write_protected(info, gfn + i))
1607 kvmgt_protect_table_del(info, gfn + i);
1610 mutex_unlock(&info->vgpu_lock);
1721 struct intel_gvt_device_info *info = &gvt->device_info;
1724 info->max_support_vgpus = 8;
1725 info->cfg_space_size = PCI_CFG_SPACE_EXP_SIZE;
1726 info->mmio_size = 2 * 1024 * 1024;
1727 info->mmio_bar = 0;
1728 info->gtt_start_offset = 8 * 1024 * 1024;
1729 info->gtt_entry_size = 8;
1730 info->gtt_entry_size_shift = 3;
1731 info->gmadr_bytes_in_cmd = 8;
1732 info->max_surface_size = 36 * 1024 * 1024;
1733 info->msi_cap_offset = pdev->msi_cap;