75 lines
2.4 KiB
Diff
75 lines
2.4 KiB
Diff
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||
|
From: Junming Liu <junming.liu@intel.com>
|
||
|
Date: Fri, 8 Nov 2019 15:45:06 +0000
|
||
|
Subject: [PATCH] drm/i915/gvt:Expose vgpu bar0 and bar2 information
|
||
|
|
||
|
Expose vgpu bar0 and bar2 information. In the next design,
|
||
|
ACRN-DM will need vgpu bar information.
|
||
|
|
||
|
/sys/kernel/gvt/vmx/vgpu_bar_info expose vgpu bar info.
|
||
|
If the value is:
|
||
|
0x00000000de000000 0x0000000001000000
|
||
|
0x00000000c0000000 0x0000000010000000
|
||
|
then:
|
||
|
bar0 start addr: 0x00000000de000000
|
||
|
bar0 size: 0x0000000001000000
|
||
|
bar2 start addr: 0x00000000c0000000
|
||
|
bar2 size: 0x0000000010000000
|
||
|
|
||
|
Tracked-On: projectacrn/acrn-hypervisor#4005
|
||
|
|
||
|
Signed-off-by: Junming Liu <junming.liu@intel.com>
|
||
|
Reviewed-by: Zhao Yakui <yakui.zhao@intel.com>
|
||
|
Reviewed-by: Liu XinYun <xinyun.liu@intel.com>
|
||
|
Signed-off-by: Junxiao Chang <junxiao.chang@intel.com>
|
||
|
---
|
||
|
drivers/gpu/drm/i915/gvt/acrngt.c | 26 ++++++++++++++++++++++++++
|
||
|
1 file changed, 26 insertions(+)
|
||
|
|
||
|
diff --git a/drivers/gpu/drm/i915/gvt/acrngt.c b/drivers/gpu/drm/i915/gvt/acrngt.c
|
||
|
index 80b4df4e16dd..bdec6b7daa29 100644
|
||
|
--- a/drivers/gpu/drm/i915/gvt/acrngt.c
|
||
|
+++ b/drivers/gpu/drm/i915/gvt/acrngt.c
|
||
|
@@ -415,12 +415,38 @@ static ssize_t acrngt_sysfs_vgpu_id(struct kobject *kobj,
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
+static ssize_t acrngt_sysfs_vgpu_bar_info(struct kobject *kobj,
|
||
|
+ struct kobj_attribute *attr, char *buf)
|
||
|
+{
|
||
|
+ u64 bar0_start, bar0_len, bar2_start, bar2_len;
|
||
|
+ u64 mask;
|
||
|
+ struct acrngt_hvm_dev *info;
|
||
|
+ struct intel_vgpu *vgpu;
|
||
|
+
|
||
|
+ info = container_of(kobj, struct acrngt_hvm_dev, kobj);
|
||
|
+ if (!info || !info->vgpu)
|
||
|
+ return 0;
|
||
|
+ vgpu = info->vgpu;
|
||
|
+ mask = ~(0xf);
|
||
|
+ /* clear last four bits according to PCI spec */
|
||
|
+ bar0_start = *(u64 *)(vgpu_cfg_space(vgpu) + PCI_BASE_ADDRESS_0) & mask;
|
||
|
+ bar0_len = vgpu->cfg_space.bar[0].size;
|
||
|
+ bar2_start = *(u64 *)(vgpu_cfg_space(vgpu) + PCI_BASE_ADDRESS_2) & mask;
|
||
|
+ bar2_len = vgpu->cfg_space.bar[1].size;
|
||
|
+ return sprintf(buf, "0x%016llx 0x%016llx\n0x%016llx 0x%016llx\n",
|
||
|
+ bar0_start, bar0_len, bar2_start, bar2_len);
|
||
|
+}
|
||
|
+
|
||
|
static struct kobj_attribute acrngt_vm_attr =
|
||
|
__ATTR(vgpu_id, 0440, acrngt_sysfs_vgpu_id, NULL);
|
||
|
|
||
|
+static struct kobj_attribute acrngt_vgpu_bar_info =
|
||
|
+__ATTR(vgpu_bar_info, 0440, acrngt_sysfs_vgpu_bar_info, NULL);
|
||
|
+
|
||
|
|
||
|
static struct attribute *acrngt_vm_attrs[] = {
|
||
|
&acrngt_vm_attr.attr,
|
||
|
+ &acrngt_vgpu_bar_info.attr,
|
||
|
NULL, /* need to NULL terminate the list of attributes */
|
||
|
};
|
||
|
|
||
|
--
|
||
|
https://clearlinux.org
|
||
|
|