* [PATCH] fbdev: udlfb: make CONFIG_FB_DEVICE optional
@ 2025-09-24 17:57 Sukrut Heroorkar
2025-09-26 20:58 ` kernel test robot
2025-09-27 16:12 ` kernel test robot
0 siblings, 2 replies; 12+ messages in thread
From: Sukrut Heroorkar @ 2025-09-24 17:57 UTC (permalink / raw)
To: Helge Deller, Bernie Thompson, Thomas Zimmermann, Arnd Bergmann,
Randy Dunlap, Bartosz Golaszewski, Sukrut Heroorkar, Zsolt Kajtar,
Gonzalo Silvalde Blanco, open list:FRAMEBUFFER LAYER,
open list:FRAMEBUFFER LAYER, open list
Cc: skhan, david.hunter.linux
The udlfb driver exposes sysfs attributes thus depends upon
CONFIG_FB_DEVICE. This patch work wraps relavent code blocks
with #ifdef CONFIG_FB_DEVICE so that the driver can still be
built even when CONFIG_FB_DEVICE is not selected.
This addresses an item in Documentation/gpu/TODO.rst.
Signed-off-by: Sukrut Heroorkar <hsukrut3@gmail.com>
---
Note: this change has only been compile-tested.
drivers/video/fbdev/Kconfig | 1 -
drivers/video/fbdev/udlfb.c | 8 ++++++++
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig
index 1500dca8c416..40442b80de17 100644
--- a/drivers/video/fbdev/Kconfig
+++ b/drivers/video/fbdev/Kconfig
@@ -1596,7 +1596,6 @@ config FB_SMSCUFX
config FB_UDL
tristate "Displaylink USB Framebuffer support"
depends on FB && USB
- depends on FB_DEVICE
select FB_MODE_HELPERS
select FB_SYSMEM_HELPERS_DEFERRED
help
diff --git a/drivers/video/fbdev/udlfb.c b/drivers/video/fbdev/udlfb.c
index ccede85df1e1..de2e310054d4 100644
--- a/drivers/video/fbdev/udlfb.c
+++ b/drivers/video/fbdev/udlfb.c
@@ -1382,6 +1382,7 @@ static int dlfb_setup_modes(struct dlfb_data *dlfb,
return result;
}
+#ifdef CONFIG_FB_DEVICE
static ssize_t metrics_bytes_rendered_show(struct device *fbdev,
struct device_attribute *a, char *buf) {
struct fb_info *fb_info = dev_get_drvdata(fbdev);
@@ -1413,6 +1414,7 @@ static ssize_t metrics_cpu_kcycles_used_show(struct device *fbdev,
return sysfs_emit(buf, "%u\n",
atomic_read(&dlfb->cpu_kcycles_used));
}
+#endif
static ssize_t edid_show(
struct file *filp,
@@ -1486,6 +1488,7 @@ static const struct bin_attribute edid_attr = {
.write = edid_store
};
+#ifdef CONFIG_FB_DEVICE
static const struct device_attribute fb_device_attrs[] = {
__ATTR_RO(metrics_bytes_rendered),
__ATTR_RO(metrics_bytes_identical),
@@ -1493,6 +1496,7 @@ static const struct device_attribute fb_device_attrs[] = {
__ATTR_RO(metrics_cpu_kcycles_used),
__ATTR(metrics_reset, S_IWUSR, NULL, metrics_reset_store),
};
+#endif
/*
* This is necessary before we can communicate with the display controller.
@@ -1702,6 +1706,7 @@ static int dlfb_usb_probe(struct usb_interface *intf,
goto error;
}
+#ifdef CONFIG_FB_DEVICE
for (i = 0; i < ARRAY_SIZE(fb_device_attrs); i++) {
attr = &fb_device_attrs[i];
retval = device_create_file(info->dev, attr);
@@ -1710,6 +1715,7 @@ static int dlfb_usb_probe(struct usb_interface *intf,
"failed to create '%s' attribute: %d\n",
attr->attr.name, retval);
}
+#endif
retval = device_create_bin_file(info->dev, &edid_attr);
if (retval)
@@ -1753,9 +1759,11 @@ static void dlfb_usb_disconnect(struct usb_interface *intf)
/* this function will wait for all in-flight urbs to complete */
dlfb_free_urb_list(dlfb);
+#ifdef CONFIG_FB_DEVICE
/* remove udlfb's sysfs interfaces */
for (i = 0; i < ARRAY_SIZE(fb_device_attrs); i++)
device_remove_file(info->dev, &fb_device_attrs[i]);
+#endif
device_remove_bin_file(info->dev, &edid_attr);
unregister_framebuffer(info);
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH] fbdev: udlfb: make CONFIG_FB_DEVICE optional
2025-09-24 17:57 [PATCH] fbdev: udlfb: make CONFIG_FB_DEVICE optional Sukrut Heroorkar
@ 2025-09-26 20:58 ` kernel test robot
2025-09-27 16:12 ` kernel test robot
1 sibling, 0 replies; 12+ messages in thread
From: kernel test robot @ 2025-09-26 20:58 UTC (permalink / raw)
To: Sukrut Heroorkar, Helge Deller, Bernie Thompson,
Thomas Zimmermann, Arnd Bergmann, Randy Dunlap,
Bartosz Golaszewski, Zsolt Kajtar, Gonzalo Silvalde Blanco,
linux-fbdev, dri-devel, linux-kernel
Cc: oe-kbuild-all, skhan, david.hunter.linux
Hi Sukrut,
kernel test robot noticed the following build warnings:
[auto build test WARNING on drm-misc/drm-misc-next]
[also build test WARNING on linus/master v6.17-rc7 next-20250926]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Sukrut-Heroorkar/fbdev-udlfb-make-CONFIG_FB_DEVICE-optional/20250925-015939
base: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link: https://lore.kernel.org/r/20250924175743.6790-1-hsukrut3%40gmail.com
patch subject: [PATCH] fbdev: udlfb: make CONFIG_FB_DEVICE optional
config: x86_64-randconfig-075-20250927 (https://download.01.org/0day-ci/archive/20250927/202509270454.lBuADO4l-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250927/202509270454.lBuADO4l-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202509270454.lBuADO4l-lkp@intel.com/
All warnings (new ones prefixed by >>):
933 | dev_dbg(info->dev, "open, user=%d fb_info=%p count=%d\n",
| ^~
include/linux/dynamic_debug.h:224:29: note: in definition of macro '__dynamic_func_call_cls'
224 | func(&id, ##__VA_ARGS__); \
| ^~~~~~~~~~~
include/linux/dynamic_debug.h:250:9: note: in expansion of macro '_dynamic_func_call_cls'
250 | _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__)
| ^~~~~~~~~~~~~~~~~~~~~~
include/linux/dynamic_debug.h:273:9: note: in expansion of macro '_dynamic_func_call'
273 | _dynamic_func_call(fmt, __dynamic_dev_dbg, \
| ^~~~~~~~~~~~~~~~~~
include/linux/dev_printk.h:165:9: note: in expansion of macro 'dynamic_dev_dbg'
165 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~~~~~~~~~
drivers/video/fbdev/udlfb.c:933:9: note: in expansion of macro 'dev_dbg'
933 | dev_dbg(info->dev, "open, user=%d fb_info=%p count=%d\n",
| ^~~~~~~
drivers/video/fbdev/udlfb.c: In function 'dlfb_ops_release':
drivers/video/fbdev/udlfb.c:986:21: error: 'struct fb_info' has no member named 'dev'
986 | dev_dbg(info->dev, "release, user=%d count=%d\n", user, dlfb->fb_count);
| ^~
include/linux/dynamic_debug.h:224:29: note: in definition of macro '__dynamic_func_call_cls'
224 | func(&id, ##__VA_ARGS__); \
| ^~~~~~~~~~~
include/linux/dynamic_debug.h:250:9: note: in expansion of macro '_dynamic_func_call_cls'
250 | _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__)
| ^~~~~~~~~~~~~~~~~~~~~~
include/linux/dynamic_debug.h:273:9: note: in expansion of macro '_dynamic_func_call'
273 | _dynamic_func_call(fmt, __dynamic_dev_dbg, \
| ^~~~~~~~~~~~~~~~~~
include/linux/dev_printk.h:165:9: note: in expansion of macro 'dynamic_dev_dbg'
165 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~~~~~~~~~
drivers/video/fbdev/udlfb.c:986:9: note: in expansion of macro 'dev_dbg'
986 | dev_dbg(info->dev, "release, user=%d count=%d\n", user, dlfb->fb_count);
| ^~~~~~~
drivers/video/fbdev/udlfb.c: In function 'dlfb_ops_blank':
drivers/video/fbdev/udlfb.c:1099:21: error: 'struct fb_info' has no member named 'dev'
1099 | dev_dbg(info->dev, "blank, mode %d --> %d\n",
| ^~
include/linux/dynamic_debug.h:224:29: note: in definition of macro '__dynamic_func_call_cls'
224 | func(&id, ##__VA_ARGS__); \
| ^~~~~~~~~~~
include/linux/dynamic_debug.h:250:9: note: in expansion of macro '_dynamic_func_call_cls'
250 | _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__)
| ^~~~~~~~~~~~~~~~~~~~~~
include/linux/dynamic_debug.h:273:9: note: in expansion of macro '_dynamic_func_call'
273 | _dynamic_func_call(fmt, __dynamic_dev_dbg, \
| ^~~~~~~~~~~~~~~~~~
include/linux/dev_printk.h:165:9: note: in expansion of macro 'dynamic_dev_dbg'
165 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~~~~~~~~~
drivers/video/fbdev/udlfb.c:1099:9: note: in expansion of macro 'dev_dbg'
1099 | dev_dbg(info->dev, "blank, mode %d --> %d\n",
| ^~~~~~~
In file included from include/linux/device.h:15,
from include/linux/usb.h:19,
from drivers/video/fbdev/udlfb.c:19:
drivers/video/fbdev/udlfb.c: In function 'dlfb_realloc_framebuffer':
drivers/video/fbdev/udlfb.c:1193:37: error: 'struct fb_info' has no member named 'dev'
1193 | dev_err(info->dev, "Virtual framebuffer alloc failed\n");
| ^~
include/linux/dev_printk.h:110:25: note: in definition of macro 'dev_printk_index_wrap'
110 | _p_func(dev, fmt, ##__VA_ARGS__); \
| ^~~
drivers/video/fbdev/udlfb.c:1193:25: note: in expansion of macro 'dev_err'
1193 | dev_err(info->dev, "Virtual framebuffer alloc failed\n");
| ^~~~~~~
drivers/video/fbdev/udlfb.c:1217:38: error: 'struct fb_info' has no member named 'dev'
1217 | dev_info(info->dev,
| ^~
include/linux/dev_printk.h:110:25: note: in definition of macro 'dev_printk_index_wrap'
110 | _p_func(dev, fmt, ##__VA_ARGS__); \
| ^~~
drivers/video/fbdev/udlfb.c:1217:25: note: in expansion of macro 'dev_info'
1217 | dev_info(info->dev,
| ^~~~~~~~
drivers/video/fbdev/udlfb.c: In function 'dlfb_setup_modes':
drivers/video/fbdev/udlfb.c:1251:17: error: 'struct fb_info' has no member named 'dev'
1251 | if (info->dev) {
| ^~
drivers/video/fbdev/udlfb.c:1255:27: error: 'struct fb_info' has no member named 'dev'
1255 | dev = info->dev;
| ^~
drivers/video/fbdev/udlfb.c:1379:17: error: 'struct fb_info' has no member named 'dev'
1379 | if (info->dev)
| ^~
drivers/video/fbdev/udlfb.c: In function 'dlfb_usb_probe':
drivers/video/fbdev/udlfb.c:1720:45: error: 'struct fb_info' has no member named 'dev'
1720 | retval = device_create_bin_file(info->dev, &edid_attr);
| ^~
drivers/video/fbdev/udlfb.c:1727:31: error: 'struct fb_info' has no member named 'dev'
1727 | dev_name(info->dev), info->var.xres, info->var.yres,
| ^~
include/linux/dev_printk.h:110:37: note: in definition of macro 'dev_printk_index_wrap'
110 | _p_func(dev, fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~~
drivers/video/fbdev/udlfb.c:1725:9: note: in expansion of macro 'dev_info'
1725 | dev_info(info->device,
| ^~~~~~~~
>> drivers/video/fbdev/udlfb.c:1605:40: warning: unused variable 'attr' [-Wunused-variable]
1605 | const struct device_attribute *attr;
| ^~~~
>> drivers/video/fbdev/udlfb.c:1604:13: warning: unused variable 'i' [-Wunused-variable]
1604 | int i;
| ^
drivers/video/fbdev/udlfb.c: In function 'dlfb_usb_disconnect':
drivers/video/fbdev/udlfb.c:1767:36: error: 'struct fb_info' has no member named 'dev'
1767 | device_remove_bin_file(info->dev, &edid_attr);
| ^~
drivers/video/fbdev/udlfb.c:1746:13: warning: unused variable 'i' [-Wunused-variable]
1746 | int i;
| ^
drivers/video/fbdev/udlfb.c: At top level:
>> drivers/video/fbdev/udlfb.c:1468:16: warning: 'metrics_reset_store' defined but not used [-Wunused-function]
1468 | static ssize_t metrics_reset_store(struct device *fbdev,
| ^~~~~~~~~~~~~~~~~~~
vim +/attr +1605 drivers/video/fbdev/udlfb.c
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1467
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 @1468 static ssize_t metrics_reset_store(struct device *fbdev,
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1469 struct device_attribute *attr,
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1470 const char *buf, size_t count)
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1471 {
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1472 struct fb_info *fb_info = dev_get_drvdata(fbdev);
7ea46206d1706b drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-15 1473 struct dlfb_data *dlfb = fb_info->par;
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1474
7ea46206d1706b drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-15 1475 atomic_set(&dlfb->bytes_rendered, 0);
7ea46206d1706b drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-15 1476 atomic_set(&dlfb->bytes_identical, 0);
7ea46206d1706b drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-15 1477 atomic_set(&dlfb->bytes_sent, 0);
7ea46206d1706b drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-15 1478 atomic_set(&dlfb->cpu_kcycles_used, 0);
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1479
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1480 return count;
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1481 }
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1482
598b2eedfc3fbe drivers/video/fbdev/udlfb.c Bhumika Goyal 2017-08-18 1483 static const struct bin_attribute edid_attr = {
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1484 .attr.name = "edid",
8ef8cc4fca4a92 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1485 .attr.mode = 0666,
b9f03a3cd06c6f drivers/video/udlfb.c Paul Mundt 2011-01-06 1486 .size = EDID_LENGTH,
2fbe82037ab251 drivers/video/fbdev/udlfb.c Thomas Weißschuh 2025-05-30 1487 .read = edid_show,
2fbe82037ab251 drivers/video/fbdev/udlfb.c Thomas Weißschuh 2025-05-30 1488 .write = edid_store
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1489 };
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1490
00bab805c21a22 drivers/video/fbdev/udlfb.c Sukrut Heroorkar 2025-09-24 1491 #ifdef CONFIG_FB_DEVICE
fa738a5c4b2a6b drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1492 static const struct device_attribute fb_device_attrs[] = {
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1493 __ATTR_RO(metrics_bytes_rendered),
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1494 __ATTR_RO(metrics_bytes_identical),
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1495 __ATTR_RO(metrics_bytes_sent),
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1496 __ATTR_RO(metrics_cpu_kcycles_used),
926c11151e3b82 drivers/staging/udlfb/udlfb.c Greg Kroah-Hartman 2010-11-18 1497 __ATTR(metrics_reset, S_IWUSR, NULL, metrics_reset_store),
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1498 };
00bab805c21a22 drivers/video/fbdev/udlfb.c Sukrut Heroorkar 2025-09-24 1499 #endif
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1500
cc403dc67d10b8 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1501 /*
cc403dc67d10b8 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1502 * This is necessary before we can communicate with the display controller.
cc403dc67d10b8 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1503 */
7ea46206d1706b drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-15 1504 static int dlfb_select_std_channel(struct dlfb_data *dlfb)
cc403dc67d10b8 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1505 {
cc403dc67d10b8 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1506 int ret;
45f580c42e5c12 drivers/video/fbdev/udlfb.c Maksim Salau 2017-05-02 1507 static const u8 set_def_chn[] = {
45f580c42e5c12 drivers/video/fbdev/udlfb.c Maksim Salau 2017-05-02 1508 0x57, 0xCD, 0xDC, 0xA7,
cc403dc67d10b8 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1509 0x1C, 0x88, 0x5E, 0x15,
cc403dc67d10b8 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1510 0x60, 0xFE, 0xC6, 0x97,
cc403dc67d10b8 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1511 0x16, 0x3D, 0x47, 0xF2 };
cc403dc67d10b8 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1512
537adba4083ed8 drivers/video/fbdev/udlfb.c Helge Deller 2023-05-19 1513 ret = usb_control_msg_send(dlfb->udev, 0, NR_USB_REQUEST_CHANNEL,
cc403dc67d10b8 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1514 (USB_DIR_OUT | USB_TYPE_VENDOR), 0, 0,
537adba4083ed8 drivers/video/fbdev/udlfb.c Helge Deller 2023-05-19 1515 &set_def_chn, sizeof(set_def_chn), USB_CTRL_SET_TIMEOUT,
537adba4083ed8 drivers/video/fbdev/udlfb.c Helge Deller 2023-05-19 1516 GFP_KERNEL);
45f580c42e5c12 drivers/video/fbdev/udlfb.c Maksim Salau 2017-05-02 1517
cc403dc67d10b8 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1518 return ret;
cc403dc67d10b8 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1519 }
cc403dc67d10b8 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1520
7ea46206d1706b drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-15 1521 static int dlfb_parse_vendor_descriptor(struct dlfb_data *dlfb,
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1522 struct usb_interface *intf)
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1523 {
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1524 char *desc;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1525 char *buf;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1526 char *desc_end;
f63cb8d7aa31e7 drivers/video/fbdev/udlfb.c Alexey Klimov 2015-06-08 1527 int total_len;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1528
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1529 buf = kzalloc(MAX_VENDOR_DESCRIPTOR_SIZE, GFP_KERNEL);
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1530 if (!buf)
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1531 return false;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1532 desc = buf;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1533
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1534 total_len = usb_get_descriptor(interface_to_usbdev(intf),
f2e1fc9d5d12fb drivers/video/udlfb.c Andrew Kephart 2011-08-21 1535 0x5f, /* vendor specific */
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1536 0, desc, MAX_VENDOR_DESCRIPTOR_SIZE);
f2e1fc9d5d12fb drivers/video/udlfb.c Andrew Kephart 2011-08-21 1537
f2e1fc9d5d12fb drivers/video/udlfb.c Andrew Kephart 2011-08-21 1538 /* if not found, look in configuration descriptor */
f2e1fc9d5d12fb drivers/video/udlfb.c Andrew Kephart 2011-08-21 1539 if (total_len < 0) {
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1540 if (0 == usb_get_extra_descriptor(intf->cur_altsetting,
f2e1fc9d5d12fb drivers/video/udlfb.c Andrew Kephart 2011-08-21 1541 0x5f, &desc))
f2e1fc9d5d12fb drivers/video/udlfb.c Andrew Kephart 2011-08-21 1542 total_len = (int) desc[0];
f2e1fc9d5d12fb drivers/video/udlfb.c Andrew Kephart 2011-08-21 1543 }
f2e1fc9d5d12fb drivers/video/udlfb.c Andrew Kephart 2011-08-21 1544
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1545 if (total_len > 5) {
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1546 dev_info(&intf->dev,
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1547 "vendor descriptor length: %d data: %11ph\n",
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1548 total_len, desc);
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1549
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1550 if ((desc[0] != total_len) || /* descriptor length */
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1551 (desc[1] != 0x5f) || /* vendor descriptor type */
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1552 (desc[2] != 0x01) || /* version (2 bytes) */
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1553 (desc[3] != 0x00) ||
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1554 (desc[4] != total_len - 2)) /* length after type */
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1555 goto unrecognized;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1556
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1557 desc_end = desc + total_len;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1558 desc += 5; /* the fixed header we've already parsed */
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1559
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1560 while (desc < desc_end) {
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1561 u8 length;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1562 u16 key;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1563
115e77597efcc9 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-03-12 1564 key = *desc++;
115e77597efcc9 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-03-12 1565 key |= (u16)*desc++ << 8;
115e77597efcc9 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-03-12 1566 length = *desc++;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1567
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1568 switch (key) {
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1569 case 0x0200: { /* max_area */
115e77597efcc9 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-03-12 1570 u32 max_area = *desc++;
115e77597efcc9 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-03-12 1571 max_area |= (u32)*desc++ << 8;
115e77597efcc9 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-03-12 1572 max_area |= (u32)*desc++ << 16;
115e77597efcc9 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-03-12 1573 max_area |= (u32)*desc++ << 24;
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1574 dev_warn(&intf->dev,
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1575 "DL chip limited to %d pixel modes\n",
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1576 max_area);
7ea46206d1706b drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-15 1577 dlfb->sku_pixel_limit = max_area;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1578 break;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1579 }
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1580 default:
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1581 break;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1582 }
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1583 desc += length;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1584 }
f2e1fc9d5d12fb drivers/video/udlfb.c Andrew Kephart 2011-08-21 1585 } else {
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1586 dev_info(&intf->dev, "vendor descriptor not available (%d)\n",
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1587 total_len);
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1588 }
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1589
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1590 goto success;
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1591
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1592 unrecognized:
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1593 /* allow udlfb to load for now even if firmware unrecognized */
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1594 dev_err(&intf->dev, "Unrecognized vendor firmware descriptor\n");
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1595
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1596 success:
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1597 kfree(buf);
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1598 return true;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1599 }
8d21547d3c9c3b drivers/video/udlfb.c Bernie Thompson 2012-03-01 1600
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1601 static int dlfb_usb_probe(struct usb_interface *intf,
59277b679f8b5c drivers/staging/udlfb/udlfb.c Bernie Thompson 2009-11-24 1602 const struct usb_device_id *id)
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 1603 {
68a958a915ca91 drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-10-08 @1604 int i;
68a958a915ca91 drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-10-08 @1605 const struct device_attribute *attr;
7ea46206d1706b drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-15 1606 struct dlfb_data *dlfb;
68a958a915ca91 drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-10-08 1607 struct fb_info *info;
aaf7dbe07385e0 drivers/video/fbdev/udlfb.c Pavel Skripkin 2022-03-22 1608 int retval;
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1609 struct usb_device *usbdev = interface_to_usbdev(intf);
ed9de4ed398757 drivers/video/fbdev/udlfb.c Alan Stern 2023-05-19 1610 static u8 out_ep[] = {OUT_EP_NUM + USB_DIR_OUT, 0};
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 1611
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1612 /* usb initialization */
7ea46206d1706b drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-15 1613 dlfb = kzalloc(sizeof(*dlfb), GFP_KERNEL);
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1614 if (!dlfb) {
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1615 dev_err(&intf->dev, "%s: failed to allocate dlfb\n", __func__);
c143a559b073ae drivers/video/fbdev/udlfb.c Dan Carpenter 2018-12-20 1616 return -ENOMEM;
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 1617 }
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 1618
7433914efd584b drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-07-25 1619 INIT_LIST_HEAD(&dlfb->deferred_free);
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1620
68a958a915ca91 drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-10-08 1621 dlfb->udev = usb_get_dev(usbdev);
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1622 usb_set_intfdata(intf, dlfb);
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1623
ed9de4ed398757 drivers/video/fbdev/udlfb.c Alan Stern 2023-05-19 1624 if (!usb_check_bulk_endpoints(intf, out_ep)) {
ed9de4ed398757 drivers/video/fbdev/udlfb.c Alan Stern 2023-05-19 1625 dev_err(&intf->dev, "Invalid DisplayLink device!\n");
ed9de4ed398757 drivers/video/fbdev/udlfb.c Alan Stern 2023-05-19 1626 retval = -EINVAL;
aaf7dbe07385e0 drivers/video/fbdev/udlfb.c Pavel Skripkin 2022-03-22 1627 goto error;
aaf7dbe07385e0 drivers/video/fbdev/udlfb.c Pavel Skripkin 2022-03-22 1628 }
aaf7dbe07385e0 drivers/video/fbdev/udlfb.c Pavel Skripkin 2022-03-22 1629
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1630 dev_dbg(&intf->dev, "console enable=%d\n", console);
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1631 dev_dbg(&intf->dev, "fb_defio enable=%d\n", fb_defio);
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1632 dev_dbg(&intf->dev, "shadow enable=%d\n", shadow);
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1633
7ea46206d1706b drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-15 1634 dlfb->sku_pixel_limit = 2048 * 1152; /* default to maximum */
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1635
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1636 if (!dlfb_parse_vendor_descriptor(dlfb, intf)) {
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1637 dev_err(&intf->dev,
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1638 "firmware not recognized, incompatible device?\n");
aaf7dbe07385e0 drivers/video/fbdev/udlfb.c Pavel Skripkin 2022-03-22 1639 retval = -ENODEV;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1640 goto error;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1641 }
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1642
664c5f18490f25 drivers/video/udlfb.c Ben Collins 2012-03-03 1643 if (pixel_limit) {
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1644 dev_warn(&intf->dev,
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1645 "DL chip limit of %d overridden to %d\n",
7ea46206d1706b drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-15 1646 dlfb->sku_pixel_limit, pixel_limit);
7ea46206d1706b drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-15 1647 dlfb->sku_pixel_limit = pixel_limit;
664c5f18490f25 drivers/video/udlfb.c Ben Collins 2012-03-03 1648 }
664c5f18490f25 drivers/video/udlfb.c Ben Collins 2012-03-03 1649
664c5f18490f25 drivers/video/udlfb.c Ben Collins 2012-03-03 1650
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1651 /* allocates framebuffer driver structure, not framebuffer memory */
7ea46206d1706b drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-15 1652 info = framebuffer_alloc(0, &dlfb->udev->dev);
aaf7dbe07385e0 drivers/video/fbdev/udlfb.c Pavel Skripkin 2022-03-22 1653 if (!info) {
aaf7dbe07385e0 drivers/video/fbdev/udlfb.c Pavel Skripkin 2022-03-22 1654 retval = -ENOMEM;
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1655 goto error;
aaf7dbe07385e0 drivers/video/fbdev/udlfb.c Pavel Skripkin 2022-03-22 1656 }
33077b8d3042e0 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1657
7ea46206d1706b drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-15 1658 dlfb->info = info;
7ea46206d1706b drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-15 1659 info->par = dlfb;
7ea46206d1706b drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-15 1660 info->pseudo_palette = dlfb->pseudo_palette;
2c29cfc3eaf117 drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-07-25 1661 dlfb->ops = dlfb_ops;
2c29cfc3eaf117 drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-07-25 1662 info->fbops = &dlfb->ops;
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 1663
babc250e278eac drivers/video/fbdev/udlfb.c Mikulas Patocka 2019-04-01 1664 mutex_init(&dlfb->render_mutex);
6b11f9d8433b47 drivers/video/fbdev/udlfb.c Mikulas Patocka 2019-04-01 1665 dlfb_init_damage(dlfb);
6b11f9d8433b47 drivers/video/fbdev/udlfb.c Mikulas Patocka 2019-04-01 1666 spin_lock_init(&dlfb->damage_lock);
6b11f9d8433b47 drivers/video/fbdev/udlfb.c Mikulas Patocka 2019-04-01 1667 INIT_WORK(&dlfb->damage_work, dlfb_damage_work);
6b11f9d8433b47 drivers/video/fbdev/udlfb.c Mikulas Patocka 2019-04-01 1668
68a958a915ca91 drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-10-08 1669 INIT_LIST_HEAD(&info->modelist);
68a958a915ca91 drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-10-08 1670
68a958a915ca91 drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-10-08 1671 if (!dlfb_alloc_urb_list(dlfb, WRITES_IN_FLIGHT, MAX_TRANSFER)) {
68a958a915ca91 drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-10-08 1672 retval = -ENOMEM;
68a958a915ca91 drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-10-08 1673 dev_err(&intf->dev, "unable to allocate urb list\n");
68a958a915ca91 drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-10-08 1674 goto error;
68a958a915ca91 drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-10-08 1675 }
68a958a915ca91 drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-10-08 1676
68a958a915ca91 drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-10-08 1677 /* We don't register a new USB class. Our client interface is dlfbev */
68a958a915ca91 drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-10-08 1678
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1679 retval = fb_alloc_cmap(&info->cmap, 256, 0);
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1680 if (retval < 0) {
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1681 dev_err(info->device, "cmap allocation failed: %d\n", retval);
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1682 goto error;
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1683 }
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 1684
7ea46206d1706b drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-15 1685 retval = dlfb_setup_modes(dlfb, info, NULL, 0);
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1686 if (retval != 0) {
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1687 dev_err(info->device,
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1688 "unable to find common mode for display and adapter\n");
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1689 goto error;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1690 }
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1691
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1692 /* ready to begin using device */
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 1693
7ea46206d1706b drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-15 1694 atomic_set(&dlfb->usb_active, 1);
7ea46206d1706b drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-15 1695 dlfb_select_std_channel(dlfb);
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 1696
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1697 dlfb_ops_check_var(&info->var, info);
7433914efd584b drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-07-25 1698 retval = dlfb_ops_set_par(info);
7433914efd584b drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-07-25 1699 if (retval)
7433914efd584b drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-07-25 1700 goto error;
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 1701
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1702 retval = register_framebuffer(info);
59277b679f8b5c drivers/staging/udlfb/udlfb.c Bernie Thompson 2009-11-24 1703 if (retval < 0) {
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1704 dev_err(info->device, "unable to register framebuffer: %d\n",
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1705 retval);
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1706 goto error;
7316bc55ed20c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-10 1707 }
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 1708
00bab805c21a22 drivers/video/fbdev/udlfb.c Sukrut Heroorkar 2025-09-24 1709 #ifdef CONFIG_FB_DEVICE
94cd1ae2fd251f drivers/video/udlfb.c Liu Yuan 2011-04-18 1710 for (i = 0; i < ARRAY_SIZE(fb_device_attrs); i++) {
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1711 attr = &fb_device_attrs[i];
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1712 retval = device_create_file(info->dev, attr);
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1713 if (retval)
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1714 dev_warn(info->device,
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1715 "failed to create '%s' attribute: %d\n",
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1716 attr->attr.name, retval);
94cd1ae2fd251f drivers/video/udlfb.c Liu Yuan 2011-04-18 1717 }
00bab805c21a22 drivers/video/fbdev/udlfb.c Sukrut Heroorkar 2025-09-24 1718 #endif
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 1719
94cd1ae2fd251f drivers/video/udlfb.c Liu Yuan 2011-04-18 1720 retval = device_create_bin_file(info->dev, &edid_attr);
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1721 if (retval)
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1722 dev_warn(info->device, "failed to create '%s' attribute: %d\n",
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1723 edid_attr.attr.name, retval);
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 1724
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 @1725 dev_info(info->device,
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1726 "%s is DisplayLink USB device (%dx%d, %dK framebuffer memory)\n",
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 @1727 dev_name(info->dev), info->var.xres, info->var.yres,
7ea46206d1706b drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-15 1728 ((dlfb->backing_buffer) ?
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1729 info->fix.smem_len * 2 : info->fix.smem_len) >> 10);
68a958a915ca91 drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-10-08 1730 return 0;
94cd1ae2fd251f drivers/video/udlfb.c Liu Yuan 2011-04-18 1731
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1732 error:
68a958a915ca91 drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-10-08 1733 if (dlfb->info) {
68a958a915ca91 drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-10-08 1734 dlfb_ops_destroy(dlfb->info);
c143a559b073ae drivers/video/fbdev/udlfb.c Dan Carpenter 2018-12-20 1735 } else {
68a958a915ca91 drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-10-08 1736 usb_put_dev(dlfb->udev);
68a958a915ca91 drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-10-08 1737 kfree(dlfb);
68a958a915ca91 drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-10-08 1738 }
68a958a915ca91 drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-10-08 1739 return retval;
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 1740 }
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 1741
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1742 static void dlfb_usb_disconnect(struct usb_interface *intf)
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 1743 {
7ea46206d1706b drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-15 1744 struct dlfb_data *dlfb;
59277b679f8b5c drivers/staging/udlfb/udlfb.c Bernie Thompson 2009-11-24 1745 struct fb_info *info;
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1746 int i;
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 1747
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1748 dlfb = usb_get_intfdata(intf);
7ea46206d1706b drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-15 1749 info = dlfb->info;
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1750
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 1751 dev_dbg(&intf->dev, "USB disconnect starting\n");
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1752
33077b8d3042e0 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1753 /* we virtualize until all fb clients release. Then we free */
7ea46206d1706b drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-15 1754 dlfb->virtualized = true;
33077b8d3042e0 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1755
33077b8d3042e0 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1756 /* When non-active we'll update virtual framebuffer, but no new urbs */
7ea46206d1706b drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-15 1757 atomic_set(&dlfb->usb_active, 0);
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 1758
8d21547d3c9c3b drivers/video/udlfb.c Bernie Thompson 2012-03-01 1759 /* this function will wait for all in-flight urbs to complete */
7ea46206d1706b drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-15 1760 dlfb_free_urb_list(dlfb);
8d21547d3c9c3b drivers/video/udlfb.c Bernie Thompson 2012-03-01 1761
00bab805c21a22 drivers/video/fbdev/udlfb.c Sukrut Heroorkar 2025-09-24 1762 #ifdef CONFIG_FB_DEVICE
33077b8d3042e0 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 1763 /* remove udlfb's sysfs interfaces */
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1764 for (i = 0; i < ARRAY_SIZE(fb_device_attrs); i++)
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 1765 device_remove_file(info->dev, &fb_device_attrs[i]);
00bab805c21a22 drivers/video/fbdev/udlfb.c Sukrut Heroorkar 2025-09-24 1766 #endif
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 @1767 device_remove_bin_file(info->dev, &edid_attr);
8d21547d3c9c3b drivers/video/udlfb.c Bernie Thompson 2012-03-01 1768
68a958a915ca91 drivers/video/fbdev/udlfb.c Mikulas Patocka 2018-10-08 1769 unregister_framebuffer(info);
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 1770 }
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 1771
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] fbdev: udlfb: make CONFIG_FB_DEVICE optional
2025-09-24 17:57 [PATCH] fbdev: udlfb: make CONFIG_FB_DEVICE optional Sukrut Heroorkar
2025-09-26 20:58 ` kernel test robot
@ 2025-09-27 16:12 ` kernel test robot
2025-09-28 23:29 ` David Hunter
1 sibling, 1 reply; 12+ messages in thread
From: kernel test robot @ 2025-09-27 16:12 UTC (permalink / raw)
To: Sukrut Heroorkar, Helge Deller, Bernie Thompson,
Thomas Zimmermann, Arnd Bergmann, Randy Dunlap,
Bartosz Golaszewski, Zsolt Kajtar, Gonzalo Silvalde Blanco,
linux-fbdev, dri-devel, linux-kernel
Cc: llvm, oe-kbuild-all, skhan, david.hunter.linux
Hi Sukrut,
kernel test robot noticed the following build errors:
[auto build test ERROR on drm-misc/drm-misc-next]
[also build test ERROR on linus/master v6.17-rc7 next-20250926]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Sukrut-Heroorkar/fbdev-udlfb-make-CONFIG_FB_DEVICE-optional/20250925-015939
base: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link: https://lore.kernel.org/r/20250924175743.6790-1-hsukrut3%40gmail.com
patch subject: [PATCH] fbdev: udlfb: make CONFIG_FB_DEVICE optional
config: x86_64-randconfig-001-20250927 (https://download.01.org/0day-ci/archive/20250927/202509272320.3K8kdDCw-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250927/202509272320.3K8kdDCw-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202509272320.3K8kdDCw-lkp@intel.com/
All errors (new ones prefixed by >>):
>> drivers/video/fbdev/udlfb.c:345:16: error: no member named 'dev' in 'struct fb_info'
345 | dev_dbg(info->dev, "mmap() framebuffer addr:%lu size:%lu\n",
| ~~~~ ^
include/linux/dev_printk.h:171:28: note: expanded from macro 'dev_dbg'
171 | dev_no_printk(KERN_DEBUG, dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~
include/linux/dev_printk.h:139:23: note: expanded from macro 'dev_no_printk'
139 | _dev_printk(level, dev, fmt, ##__VA_ARGS__); \
| ^~~
drivers/video/fbdev/udlfb.c:933:16: error: no member named 'dev' in 'struct fb_info'
933 | dev_dbg(info->dev, "open, user=%d fb_info=%p count=%d\n",
| ~~~~ ^
include/linux/dev_printk.h:171:28: note: expanded from macro 'dev_dbg'
171 | dev_no_printk(KERN_DEBUG, dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~
include/linux/dev_printk.h:139:23: note: expanded from macro 'dev_no_printk'
139 | _dev_printk(level, dev, fmt, ##__VA_ARGS__); \
| ^~~
drivers/video/fbdev/udlfb.c:986:16: error: no member named 'dev' in 'struct fb_info'
986 | dev_dbg(info->dev, "release, user=%d count=%d\n", user, dlfb->fb_count);
| ~~~~ ^
include/linux/dev_printk.h:171:28: note: expanded from macro 'dev_dbg'
171 | dev_no_printk(KERN_DEBUG, dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~
include/linux/dev_printk.h:139:23: note: expanded from macro 'dev_no_printk'
139 | _dev_printk(level, dev, fmt, ##__VA_ARGS__); \
| ^~~
drivers/video/fbdev/udlfb.c:1099:16: error: no member named 'dev' in 'struct fb_info'
1099 | dev_dbg(info->dev, "blank, mode %d --> %d\n",
| ~~~~ ^
include/linux/dev_printk.h:171:28: note: expanded from macro 'dev_dbg'
171 | dev_no_printk(KERN_DEBUG, dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~
include/linux/dev_printk.h:139:23: note: expanded from macro 'dev_no_printk'
139 | _dev_printk(level, dev, fmt, ##__VA_ARGS__); \
| ^~~
drivers/video/fbdev/udlfb.c:1193:18: error: no member named 'dev' in 'struct fb_info'
1193 | dev_err(info->dev, "Virtual framebuffer alloc failed\n");
| ~~~~ ^
include/linux/dev_printk.h:154:44: note: expanded from macro 'dev_err'
154 | dev_printk_index_wrap(_dev_err, KERN_ERR, dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~
include/linux/dev_printk.h:110:11: note: expanded from macro 'dev_printk_index_wrap'
110 | _p_func(dev, fmt, ##__VA_ARGS__); \
| ^~~
drivers/video/fbdev/udlfb.c:1217:19: error: no member named 'dev' in 'struct fb_info'
1217 | dev_info(info->dev,
| ~~~~ ^
include/linux/dev_printk.h:160:46: note: expanded from macro 'dev_info'
160 | dev_printk_index_wrap(_dev_info, KERN_INFO, dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~
include/linux/dev_printk.h:110:11: note: expanded from macro 'dev_printk_index_wrap'
110 | _p_func(dev, fmt, ##__VA_ARGS__); \
| ^~~
drivers/video/fbdev/udlfb.c:1251:12: error: no member named 'dev' in 'struct fb_info'
1251 | if (info->dev) {
| ~~~~ ^
drivers/video/fbdev/udlfb.c:1255:15: error: no member named 'dev' in 'struct fb_info'
1255 | dev = info->dev;
| ~~~~ ^
drivers/video/fbdev/udlfb.c:1379:12: error: no member named 'dev' in 'struct fb_info'
1379 | if (info->dev)
| ~~~~ ^
drivers/video/fbdev/udlfb.c:1720:40: error: no member named 'dev' in 'struct fb_info'
1720 | retval = device_create_bin_file(info->dev, &edid_attr);
| ~~~~ ^
drivers/video/fbdev/udlfb.c:1727:19: error: no member named 'dev' in 'struct fb_info'
1727 | dev_name(info->dev), info->var.xres, info->var.yres,
| ~~~~ ^
include/linux/dev_printk.h:160:67: note: expanded from macro 'dev_info'
160 | dev_printk_index_wrap(_dev_info, KERN_INFO, dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~~~~~
include/linux/dev_printk.h:110:23: note: expanded from macro 'dev_printk_index_wrap'
110 | _p_func(dev, fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~~
drivers/video/fbdev/udlfb.c:1767:31: error: no member named 'dev' in 'struct fb_info'
1767 | device_remove_bin_file(info->dev, &edid_attr);
| ~~~~ ^
12 errors generated.
vim +345 drivers/video/fbdev/udlfb.c
59277b679f8b5c drivers/staging/udlfb/udlfb.c Bernie Thompson 2009-11-24 323
4574203f45eb26 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-02-15 324 static int dlfb_ops_mmap(struct fb_info *info, struct vm_area_struct *vma)
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 325 {
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 326 unsigned long start = vma->vm_start;
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 327 unsigned long size = vma->vm_end - vma->vm_start;
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 328 unsigned long offset = vma->vm_pgoff << PAGE_SHIFT;
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 329 unsigned long page, pos;
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 330
5905585103276b drivers/video/fbdev/udlfb.c Thomas Zimmermann 2022-04-29 331 if (info->fbdefio)
5905585103276b drivers/video/fbdev/udlfb.c Thomas Zimmermann 2022-04-29 332 return fb_deferred_io_mmap(info, vma);
5905585103276b drivers/video/fbdev/udlfb.c Thomas Zimmermann 2022-04-29 333
76f92201b821dd drivers/video/fbdev/udlfb.c Thomas Zimmermann 2023-11-27 334 vma->vm_page_prot = pgprot_decrypted(vma->vm_page_prot);
76f92201b821dd drivers/video/fbdev/udlfb.c Thomas Zimmermann 2023-11-27 335
04f8afbec37f63 drivers/video/udlfb.c Tomi Valkeinen 2013-04-18 336 if (vma->vm_pgoff > (~0UL >> PAGE_SHIFT))
04f8afbec37f63 drivers/video/udlfb.c Tomi Valkeinen 2013-04-18 337 return -EINVAL;
04f8afbec37f63 drivers/video/udlfb.c Tomi Valkeinen 2013-04-18 338 if (size > info->fix.smem_len)
04f8afbec37f63 drivers/video/udlfb.c Tomi Valkeinen 2013-04-18 339 return -EINVAL;
04f8afbec37f63 drivers/video/udlfb.c Tomi Valkeinen 2013-04-18 340 if (offset > info->fix.smem_len - size)
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 341 return -EINVAL;
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 342
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 343 pos = (unsigned long)info->fix.smem_start + offset;
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 344
5865889fe43194 drivers/video/fbdev/udlfb.c Ladislav Michl 2018-01-16 @345 dev_dbg(info->dev, "mmap() framebuffer addr:%lu size:%lu\n",
2685cffa9e7992 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 346 pos, size);
2685cffa9e7992 drivers/staging/udlfb/udlfb.c Bernie Thompson 2010-09-05 347
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 348 while (size > 0) {
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 349 page = vmalloc_to_pfn((void *)pos);
f05e0575ed334a drivers/staging/udlfb/udlfb.c Greg Kroah-Hartman 2009-06-03 350 if (remap_pfn_range(vma, start, page, PAGE_SIZE, PAGE_SHARED))
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 351 return -EAGAIN;
f05e0575ed334a drivers/staging/udlfb/udlfb.c Greg Kroah-Hartman 2009-06-03 352
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 353 start += PAGE_SIZE;
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 354 pos += PAGE_SIZE;
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 355 if (size > PAGE_SIZE)
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 356 size -= PAGE_SIZE;
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 357 else
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 358 size = 0;
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 359 }
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 360
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 361 return 0;
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 362 }
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris 2009-06-03 363
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] fbdev: udlfb: make CONFIG_FB_DEVICE optional
2025-09-27 16:12 ` kernel test robot
@ 2025-09-28 23:29 ` David Hunter
2025-10-02 6:35 ` sukrut heroorkar
0 siblings, 1 reply; 12+ messages in thread
From: David Hunter @ 2025-09-28 23:29 UTC (permalink / raw)
To: kernel test robot, Sukrut Heroorkar, Helge Deller,
Bernie Thompson, Thomas Zimmermann, Arnd Bergmann, Randy Dunlap,
Bartosz Golaszewski, Zsolt Kajtar, Gonzalo Silvalde Blanco,
linux-fbdev, dri-devel, linux-kernel
Cc: llvm, oe-kbuild-all, skhan
On 9/27/25 12:12, kernel test robot wrote:
> Hi Sukrut,
>
> kernel test robot noticed the following build errors:
>
Did you compile and test this code before submitting this patch?
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] fbdev: udlfb: make CONFIG_FB_DEVICE optional
2025-09-28 23:29 ` David Hunter
@ 2025-10-02 6:35 ` sukrut heroorkar
2025-10-02 6:41 ` Helge Deller
2025-10-06 13:49 ` David Hunter
0 siblings, 2 replies; 12+ messages in thread
From: sukrut heroorkar @ 2025-10-02 6:35 UTC (permalink / raw)
To: David Hunter
Cc: kernel test robot, Helge Deller, Bernie Thompson,
Thomas Zimmermann, Arnd Bergmann, Randy Dunlap,
Bartosz Golaszewski, Zsolt Kajtar, Gonzalo Silvalde Blanco,
linux-fbdev, dri-devel, linux-kernel, llvm, oe-kbuild-all, skhan
Hi David,
Apologies for the late reply,
On Mon, Sep 29, 2025 at 1:29 AM David Hunter
<david.hunter.linux@gmail.com> wrote:
>
> On 9/27/25 12:12, kernel test robot wrote:
> > Hi Sukrut,
> >
> > kernel test robot noticed the following build errors:
> >
>
> Did you compile and test this code before submitting this patch?
>
>
Yes, I had compiled & loaded the udlfb module with no errors. Please
let me know how to proceed
in this case.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] fbdev: udlfb: make CONFIG_FB_DEVICE optional
2025-10-02 6:35 ` sukrut heroorkar
@ 2025-10-02 6:41 ` Helge Deller
2025-10-02 6:52 ` Thomas Zimmermann
2025-10-06 13:49 ` David Hunter
1 sibling, 1 reply; 12+ messages in thread
From: Helge Deller @ 2025-10-02 6:41 UTC (permalink / raw)
To: sukrut heroorkar, David Hunter
Cc: kernel test robot, Bernie Thompson, Thomas Zimmermann,
Arnd Bergmann, Randy Dunlap, Bartosz Golaszewski, Zsolt Kajtar,
Gonzalo Silvalde Blanco, linux-fbdev, dri-devel, linux-kernel,
llvm, oe-kbuild-all, skhan
>>> kernel test robot noticed the following build errors:
>>
>> Did you compile and test this code before submitting this patch?
>
> Yes, I had compiled & loaded the udlfb module with no errors. Please
> let me know how to proceed in this case.
Look at the reported build error, which seems to happen in dev_dbg().
So, maybe in your testing you did not have debugging enabled?
The report contains the .config file with which you can test.
Helge
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] fbdev: udlfb: make CONFIG_FB_DEVICE optional
2025-10-02 6:41 ` Helge Deller
@ 2025-10-02 6:52 ` Thomas Zimmermann
2025-10-03 18:43 ` sukrut heroorkar
0 siblings, 1 reply; 12+ messages in thread
From: Thomas Zimmermann @ 2025-10-02 6:52 UTC (permalink / raw)
To: Helge Deller, sukrut heroorkar, David Hunter
Cc: kernel test robot, Bernie Thompson, Arnd Bergmann, Randy Dunlap,
Bartosz Golaszewski, Zsolt Kajtar, Gonzalo Silvalde Blanco,
linux-fbdev, dri-devel, linux-kernel, llvm, oe-kbuild-all, skhan
Hi
Am 02.10.25 um 08:41 schrieb Helge Deller:
>>>> kernel test robot noticed the following build errors:
>>>
>>> Did you compile and test this code before submitting this patch?
>>
>> Yes, I had compiled & loaded the udlfb module with no errors. Please
>> let me know how to proceed in this case.
>
> Look at the reported build error, which seems to happen in dev_dbg().
> So, maybe in your testing you did not have debugging enabled?
> The report contains the .config file with which you can test.
Can we rather make an effort to remove the udlfb driver entirely? A few
years back, there was one user who was still using it because of some
problems with the DRM udl driver. But I think we've addressed them. The
discussion is at [1].
[1]
https://lore.kernel.org/dri-devel/20201130125200.10416-1-tzimmermann@suse.de/
Best regards
Thomas
>
> Helge
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] fbdev: udlfb: make CONFIG_FB_DEVICE optional
2025-10-02 6:52 ` Thomas Zimmermann
@ 2025-10-03 18:43 ` sukrut heroorkar
2025-10-03 19:50 ` Helge Deller
0 siblings, 1 reply; 12+ messages in thread
From: sukrut heroorkar @ 2025-10-03 18:43 UTC (permalink / raw)
To: Thomas Zimmermann, Helge Deller
Cc: David Hunter, kernel test robot, Bernie Thompson, Arnd Bergmann,
Randy Dunlap, Bartosz Golaszewski, Zsolt Kajtar,
Gonzalo Silvalde Blanco, linux-fbdev, dri-devel, linux-kernel,
llvm, oe-kbuild-all, skhan
Hi
On Thu, Oct 2, 2025 at 8:52 AM Thomas Zimmermann <tzimmermann@suse.de> wrote:
>
> Hi
>
> Am 02.10.25 um 08:41 schrieb Helge Deller:
> >>>> kernel test robot noticed the following build errors:
> >>>
> >>> Did you compile and test this code before submitting this patch?
> >>
> >> Yes, I had compiled & loaded the udlfb module with no errors. Please
> >> let me know how to proceed in this case.
> >
> > Look at the reported build error, which seems to happen in dev_dbg().
> > So, maybe in your testing you did not have debugging enabled?
> > The report contains the .config file with which you can test.
>
> Can we rather make an effort to remove the udlfb driver entirely? A few
> years back, there was one user who was still using it because of some
> problems with the DRM udl driver. But I think we've addressed them. The
> discussion is at [1].
Should I send a patch series to completely remove udlfb, since [1] echoed that
DRM udl driver is good enough?
>
> [1]
> https://lore.kernel.org/dri-devel/20201130125200.10416-1-tzimmermann@suse.de/
>
> Best regards
> Thomas
>
> >
> > Helge
>
> --
> --
> Thomas Zimmermann
> Graphics Driver Developer
> SUSE Software Solutions Germany GmbH
> Frankenstrasse 146, 90461 Nuernberg, Germany
> GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
> HRB 36809 (AG Nuernberg)
>
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] fbdev: udlfb: make CONFIG_FB_DEVICE optional
2025-10-03 18:43 ` sukrut heroorkar
@ 2025-10-03 19:50 ` Helge Deller
2025-10-07 7:35 ` Thomas Zimmermann
0 siblings, 1 reply; 12+ messages in thread
From: Helge Deller @ 2025-10-03 19:50 UTC (permalink / raw)
To: sukrut heroorkar, Thomas Zimmermann, Mikulas Patocka
Cc: David Hunter, kernel test robot, Bernie Thompson, Arnd Bergmann,
Randy Dunlap, Bartosz Golaszewski, Zsolt Kajtar,
Gonzalo Silvalde Blanco, linux-fbdev, dri-devel, linux-kernel,
llvm, oe-kbuild-all, skhan
On 10/3/25 20:43, sukrut heroorkar wrote:
> On Thu, Oct 2, 2025 at 8:52 AM Thomas Zimmermann <tzimmermann@suse.de> wrote:
>> Am 02.10.25 um 08:41 schrieb Helge Deller:
>>>>>> kernel test robot noticed the following build errors:
>>>>>
>>>>> Did you compile and test this code before submitting this patch?
>>>>
>>>> Yes, I had compiled & loaded the udlfb module with no errors. Please
>>>> let me know how to proceed in this case.
>>>
>>> Look at the reported build error, which seems to happen in dev_dbg().
>>> So, maybe in your testing you did not have debugging enabled?
>>> The report contains the .config file with which you can test.
>>
>> Can we rather make an effort to remove the udlfb driver entirely? A few
>> years back, there was one user who was still using it because of some
>> problems with the DRM udl driver. But I think we've addressed them. The
>> discussion is at [1].
Would be good to know if they issues/crashes really have been solved.
In [1] it seems the crashes still happened with DRM.
> Should I send a patch series to completely remove udlfb,
No. (at least not yet)
> since [1] echoed that DRM udl driver is good enough?
>> [1] https://lore.kernel.org/dri-devel/20201130125200.10416-1-tzimmermann@suse.de/
Well, some people who do *NOT* actively use fbdev with the old
cards say the DRM replacements are "good enough".
For tThose people who really depend on fbdev and the speed it has
over DRM, the DRM "basic-drivers" are simply a nice-to-have-but-not-really-useable
type of drivers.
So, unless the really affected people say the DRM replacement
is fully usable, we need to keep the fbdev driver.
Helge
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] fbdev: udlfb: make CONFIG_FB_DEVICE optional
2025-10-02 6:35 ` sukrut heroorkar
2025-10-02 6:41 ` Helge Deller
@ 2025-10-06 13:49 ` David Hunter
1 sibling, 0 replies; 12+ messages in thread
From: David Hunter @ 2025-10-06 13:49 UTC (permalink / raw)
To: sukrut heroorkar
Cc: kernel test robot, Helge Deller, Bernie Thompson,
Thomas Zimmermann, Arnd Bergmann, Randy Dunlap,
Bartosz Golaszewski, Zsolt Kajtar, Gonzalo Silvalde Blanco,
linux-fbdev, dri-devel, linux-kernel, llvm, oe-kbuild-all, skhan
On 10/2/25 02:35, sukrut heroorkar wrote:
>>> kernel test robot noticed the following build errors:
>>>
>> Did you compile and test this code before submitting this patch?
>>
>>
> Yes, I had compiled & loaded the udlfb module with no errors. Please
> let me know how to proceed
> in this case.
Hey Sukrut,
When you make code that deletes something from the kernel, you need to
make sure that all other code that references that code will still
function properly.
When you surround things in the #ifdev, depending on the config file,
the compiler strips those things out and compiles without them. That
means that you actually need to compile and test under two conditions.
Once when CONFIG_FB_DEVICE=y and another time when CONFIG_FB_DEVICE=n.
The test robot gave you a sample config file that you can use. Please
ensure that you have the proper version of Clang on your Host machine
for that particular config file, if you choose to use it.
Also, I strongly recommend that you run the code on a sufficient
hardware or emulator after you test it so that you can verify that the
code does what you think it does.
Thanks,
David Hunter
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] fbdev: udlfb: make CONFIG_FB_DEVICE optional
2025-10-03 19:50 ` Helge Deller
@ 2025-10-07 7:35 ` Thomas Zimmermann
2025-10-10 15:11 ` Mikulas Patocka
0 siblings, 1 reply; 12+ messages in thread
From: Thomas Zimmermann @ 2025-10-07 7:35 UTC (permalink / raw)
To: Helge Deller, sukrut heroorkar, Mikulas Patocka
Cc: David Hunter, kernel test robot, Bernie Thompson, Arnd Bergmann,
Randy Dunlap, Bartosz Golaszewski, Zsolt Kajtar,
Gonzalo Silvalde Blanco, linux-fbdev, dri-devel, linux-kernel,
llvm, oe-kbuild-all, skhan
Hi
Am 03.10.25 um 21:50 schrieb Helge Deller:
> On 10/3/25 20:43, sukrut heroorkar wrote:
>> On Thu, Oct 2, 2025 at 8:52 AM Thomas Zimmermann
>> <tzimmermann@suse.de> wrote:
>>> Am 02.10.25 um 08:41 schrieb Helge Deller:
>>>>>>> kernel test robot noticed the following build errors:
>>>>>>
>>>>>> Did you compile and test this code before submitting this patch?
>>>>>
>>>>> Yes, I had compiled & loaded the udlfb module with no errors. Please
>>>>> let me know how to proceed in this case.
>>>>
>>>> Look at the reported build error, which seems to happen in dev_dbg().
>>>> So, maybe in your testing you did not have debugging enabled?
>>>> The report contains the .config file with which you can test.
>>>
>>> Can we rather make an effort to remove the udlfb driver entirely? A few
>>> years back, there was one user who was still using it because of some
>>> problems with the DRM udl driver. But I think we've addressed them. The
>>> discussion is at [1].
>
> Would be good to know if they issues/crashes really have been solved.
> In [1] it seems the crashes still happened with DRM.
The thread at [1] was the original removal attempt. And that was 5 years
ago. I think we could retry and take the reporter (Mikulas) into cc.
Best regards
Thomas
>
>> Should I send a patch series to completely remove udlfb,
>
> No. (at least not yet)
>
>> since [1] echoed that DRM udl driver is good enough?
>>> [1]
>>> https://lore.kernel.org/dri-devel/20201130125200.10416-1-tzimmermann@suse.de/
>
> Well, some people who do *NOT* actively use fbdev with the old
> cards say the DRM replacements are "good enough".
> For tThose people who really depend on fbdev and the speed it has
> over DRM, the DRM "basic-drivers" are simply a
> nice-to-have-but-not-really-useable
> type of drivers.
> So, unless the really affected people say the DRM replacement
> is fully usable, we need to keep the fbdev driver.
>
> Helge
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] fbdev: udlfb: make CONFIG_FB_DEVICE optional
2025-10-07 7:35 ` Thomas Zimmermann
@ 2025-10-10 15:11 ` Mikulas Patocka
0 siblings, 0 replies; 12+ messages in thread
From: Mikulas Patocka @ 2025-10-10 15:11 UTC (permalink / raw)
To: Thomas Zimmermann
Cc: Helge Deller, sukrut heroorkar, David Hunter, kernel test robot,
Bernie Thompson, Arnd Bergmann, Randy Dunlap, Bartosz Golaszewski,
Zsolt Kajtar, Gonzalo Silvalde Blanco, linux-fbdev, dri-devel,
linux-kernel, llvm, oe-kbuild-all, skhan
[-- Attachment #1: Type: text/plain, Size: 1666 bytes --]
On Tue, 7 Oct 2025, Thomas Zimmermann wrote:
> Hi
>
> Am 03.10.25 um 21:50 schrieb Helge Deller:
> > On 10/3/25 20:43, sukrut heroorkar wrote:
> > > On Thu, Oct 2, 2025 at 8:52 AM Thomas Zimmermann <tzimmermann@suse.de>
> > > wrote:
> > > > Am 02.10.25 um 08:41 schrieb Helge Deller:
> > > > > > > > kernel test robot noticed the following build errors:
> > > > > > >
> > > > > > > Did you compile and test this code before submitting this patch?
> > > > > >
> > > > > > Yes, I had compiled & loaded the udlfb module with no errors. Please
> > > > > > let me know how to proceed in this case.
> > > > >
> > > > > Look at the reported build error, which seems to happen in dev_dbg().
> > > > > So, maybe in your testing you did not have debugging enabled?
> > > > > The report contains the .config file with which you can test.
> > > >
> > > > Can we rather make an effort to remove the udlfb driver entirely? A few
> > > > years back, there was one user who was still using it because of some
> > > > problems with the DRM udl driver. But I think we've addressed them. The
> > > > discussion is at [1].
It was me - and I am still using it on an ARM64 MacchiatoBIN board because
the board doesn't have graphics output.
The problems with the UDL DRM driver were:
* crashes with full-screen framebuffer applications, such as "links2 -g",
"fbi" or "fbgs". On UDLFB, there are no crashes.
* worse performance - the UDL DRM driver updates everything in a given
rectangle, while the UDLFB driver keeps back-buffer and front-buffer and
updates only differences between them.
* crash when you unplug the card while Xorg was running (already fixed)
Mikulas
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2025-10-10 15:12 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-24 17:57 [PATCH] fbdev: udlfb: make CONFIG_FB_DEVICE optional Sukrut Heroorkar
2025-09-26 20:58 ` kernel test robot
2025-09-27 16:12 ` kernel test robot
2025-09-28 23:29 ` David Hunter
2025-10-02 6:35 ` sukrut heroorkar
2025-10-02 6:41 ` Helge Deller
2025-10-02 6:52 ` Thomas Zimmermann
2025-10-03 18:43 ` sukrut heroorkar
2025-10-03 19:50 ` Helge Deller
2025-10-07 7:35 ` Thomas Zimmermann
2025-10-10 15:11 ` Mikulas Patocka
2025-10-06 13:49 ` David Hunter
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).