Page MenuHomeFreeBSD

D26836.1785651183.diff
No OneTemporary

Size
2 KB
Referenced Files
None
Subscribers
None

D26836.1785651183.diff

diff --git a/sys/compat/linsysfs/linsysfs.c b/sys/compat/linsysfs/linsysfs.c
--- a/sys/compat/linsysfs/linsysfs.c
+++ b/sys/compat/linsysfs/linsysfs.c
@@ -347,10 +347,10 @@
}
/*
- * Filler function for drm uevent file
+ * Filler function for drm card uevent file
*/
static int
-linsysfs_fill_uevent_drm(PFS_FILL_ARGS)
+linsysfs_fill_uevent_drm_card(PFS_FILL_ARGS)
{
device_t dev;
int unit;
@@ -358,7 +358,24 @@
dev = (device_t)pn->pn_data;
unit = device_get_unit(dev);
sbuf_printf(sb,
- "MAJOR=226\nMINOR=%d\nDEVNAME=dri/card%d\nDEVTYPE=dri_minor\n",
+ "MAJOR=226\nMINOR=%d\nDEVNAME=dri/card%d\nDEVTYPE=drm_minor\n",
+ unit, unit);
+ return (0);
+}
+
+/*
+ * Filler function for drm render node uevent file
+ */
+static int
+linsysfs_fill_uevent_drm_render(PFS_FILL_ARGS)
+{
+ device_t dev;
+ int unit;
+
+ dev = (device_t)pn->pn_data;
+ unit = device_get_unit(dev) + 128;
+ sbuf_printf(sb,
+ "MAJOR=226\nMINOR=%d\nDEVNAME=dri/renderD%d\nDEVTYPE=drm_minor\n",
unit, unit);
return (0);
}
@@ -521,6 +538,8 @@
dinfo = device_get_ivars(parent);
if (dinfo != NULL && dinfo->cfg.baseclass == PCIC_DISPLAY) {
pfs_create_dir(dir, "drm", NULL, NULL, NULL, 0);
+
+ /* card, e.g. dev/char/226:0 for /dev/dri/card0 */
sprintf(devname, "226:%d",
device_get_unit(dev));
sub_dir = pfs_create_dir(chardev,
@@ -530,7 +549,7 @@
NULL, NULL, PFS_RD);
cur_file->pn_data = (void*)dir;
cur_file = pfs_create_file(sub_dir,
- "uevent", &linsysfs_fill_uevent_drm, NULL,
+ "uevent", &linsysfs_fill_uevent_drm_card, NULL,
NULL, NULL, PFS_RD);
cur_file->pn_data = (void*)dev;
sprintf(devname, "card%d",
@@ -541,6 +560,28 @@
"device", &linsysfs_fill_vgapci, NULL,
NULL, NULL, PFS_RD);
cur_file->pn_data = (void*)dir;
+
+ /* render node, e.g. dev/char/226:128 for /dev/dri/renderD128 */
+ sprintf(devname, "226:%d",
+ device_get_unit(dev) + 128);
+ sub_dir = pfs_create_dir(chardev,
+ devname, NULL, NULL, NULL, 0);
+ cur_file = pfs_create_link(sub_dir,
+ "device", &linsysfs_fill_vgapci, NULL,
+ NULL, NULL, PFS_RD);
+ cur_file->pn_data = (void*)dir;
+ cur_file = pfs_create_file(sub_dir,
+ "uevent", &linsysfs_fill_uevent_drm_render, NULL,
+ NULL, NULL, PFS_RD);
+ cur_file->pn_data = (void*)dev;
+ sprintf(devname, "renderD%d",
+ device_get_unit(dev) + 128);
+ sub_dir = pfs_create_dir(drm,
+ devname, NULL, NULL, NULL, 0);
+ cur_file = pfs_create_link(sub_dir,
+ "device", &linsysfs_fill_vgapci, NULL,
+ NULL, NULL, PFS_RD);
+ cur_file->pn_data = (void*)dir;
}
}
}

File Metadata

Mime Type
text/plain
Expires
Sun, Aug 2, 6:13 AM (7 h, 50 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29333566
Default Alt Text
D26836.1785651183.diff (2 KB)

Event Timeline