linux_dsm_epyc7002/drivers/video
Kay Sievers ce880cb860 udlfb: remove sysfs framebuffer device with USB .disconnect()
The USB graphics card driver delays the unregistering of the framebuffer
device to a workqueue, which breaks the userspace visible remove uevent
sequence. Recent userspace tools started to support USB graphics card
hotplug out-of-the-box and rely on proper events sent by the kernel.

The framebuffer device is a direct child of the USB interface which is
removed immediately after the USB .disconnect() callback. But the fb device
in /sys stays around until its final cleanup, at a time where all the parent
devices have been removed already.

To work around that, we remove the sysfs fb device directly in the USB
.disconnect() callback and leave only the cleanup of the internal fb
data to the delayed work.

Before:
 add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2 (usb)
 add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0 (usb)
 add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/graphics/fb0 (graphics)
 remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0 (usb)
 remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2 (usb)
 remove   /2-1.2:1.0/graphics/fb0 (graphics)

After:
 add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2 (usb)
 add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0 (usb)
 add      /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/graphics/fb1 (graphics)
 remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/graphics/fb1 (graphics)
 remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0 (usb)
 remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2 (usb)

Cc: stable@vger.kernel.org
Tested-by: Bernie Thompson <bernie@plugable.com>
Acked-by: Bernie Thompson <bernie@plugable.com>
Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
2012-03-15 13:35:22 +00:00
..
aty module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
backlight drivers/video/backlight/l4f00242t03.c: return proper error in l4f00242t03_probe if regulator_get() fails 2012-01-23 08:38:48 -08:00
console Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2012-01-14 13:05:21 -08:00
geode
i810 module_param: make bool parameters really bool (drivers/video/i810) 2012-01-12 23:28:59 +00:00
intelfb fbdev fixes for 3.3 2012-02-07 15:54:02 -08:00
kyro
logo module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
matrox fbdev: matroxfb: Fix compilation after fb_var_screeninfo change 2011-12-21 02:26:11 +00:00
mb862xx video: Add module.h to drivers/video files who really use it. 2011-10-31 19:31:33 -04:00
mbx video: convert mbxfb to use module_platform_driver() 2011-12-19 20:21:43 +00:00
msm video: Add export.h for THIS_MODULE/EXPORT_SYMBOL to drivers/video 2011-10-31 19:31:33 -04:00
nvidia drivers/video/nvidia/nvidia.c: fix warning 2012-01-12 20:13:03 -08:00
omap Merge branch 'fbdev-next' of git://github.com/schandinat/linux-2.6 2012-01-14 15:11:19 -08:00
omap2 OMAPDSS: APPLY: make ovl_enable/disable synchronous 2012-02-29 22:42:28 +00:00
pnx4008 video: pnx4008: convert drivers/video/pnx4008/* to use module_platform_driver() 2011-12-19 20:21:43 +00:00
riva module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
savage video: Add module.h to drivers/video files who really use it. 2011-10-31 19:31:33 -04:00
sis sisfb: use display information in info not in var for panning 2011-08-19 10:34:52 +02:00
vermilion
via viafb: fix IGA1 modesetting on VX900 2012-02-24 00:38:14 +00:00
68328fb.c 68328fb: use display information in info not in var for panning 2011-08-19 10:28:58 +02:00
acornfb.c acornfb: use display information in info not in var for panning 2011-08-19 10:29:34 +02:00
acornfb.h
amba-clcd.c fbdev: amba: Enable module alias autogeneration for AMBA drivers 2011-11-22 10:58:33 +00:00
amifb.c fbdev/amifb: Use framebuffer_alloc() 2011-12-03 22:03:32 +00:00
arcfb.c
arkfb.c arkfb: use display information in info not in var for panning 2011-08-19 10:29:44 +02:00
asiliantfb.c
atafb_iplan2p2.c
atafb_iplan2p4.c
atafb_iplan2p8.c
atafb_mfb.c
atafb_utils.h
atafb.c
atafb.h
atmel_lcdfb.c atmel_lcdfb: fix usage of CONTRAST_CTR in suspend/resume 2012-01-28 19:50:22 +00:00
au1100fb.c MIPS: Alchemy: one kernel for DB1000/DB1500/DB1100 2011-12-07 22:02:07 +00:00
au1100fb.h fb: fix au1100fb bitrot. 2011-10-03 15:52:38 +00:00
au1200fb.c MIPS: Alchemy: move au1200fb global functions to platform data 2011-12-07 22:02:07 +00:00
au1200fb.h
bf54x-lq043fb.c treewide: Fix comment and string typo 'bufer' 2011-12-06 09:53:40 +01:00
bf537-lq035.c
bfin_adv7393fb.c video: irq: Remove IRQF_DISABLED 2011-10-03 15:52:22 +00:00
bfin_adv7393fb.h
bfin-lq035q1-fb.c video: irq: Remove IRQF_DISABLED 2011-10-03 15:52:22 +00:00
bfin-t350mcqb-fb.c treewide: Fix comment and string typo 'bufer' 2011-12-06 09:53:40 +01:00
broadsheetfb.c
bt431.h
bt455.h
bw2.c
c2p_core.h
c2p_iplan2.c
c2p_planar.c
c2p.h
carminefb_regs.h
carminefb.c video: Add module.h to drivers/video files who really use it. 2011-10-31 19:31:33 -04:00
carminefb.h
cfbcopyarea.c
cfbfillrect.c
cfbimgblt.c
cg3.c
cg6.c
cg14.c
chipsfb.c
cirrusfb.c Merge branch 'fbdev-next' of git://github.com/schandinat/linux-2.6 2012-01-14 15:11:19 -08:00
clps711xfb.c
cobalt_lcdfb.c video: Add module.h to drivers/video files who really use it. 2011-10-31 19:31:33 -04:00
controlfb.c Drivers: video: controlfb: fixed a brace coding style issue 2011-11-22 01:00:16 +00:00
controlfb.h
cyber2000fb.c
cyber2000fb.h
da8xx-fb.c video:da8xx-fb: Disable and reset sequence on version2 of LCDC 2011-11-22 00:55:53 +00:00
dnfb.c
edid.h
efifb.c
ep93xx-fb.c video: Add module.h to drivers/video files who really use it. 2011-10-31 19:31:33 -04:00
epson1355fb.c
fb_ddc.c video: Add module.h to drivers/video files who really use it. 2011-10-31 19:31:33 -04:00
fb_defio.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/fbdev-3.x into fbdev-next 2011-08-29 09:14:30 +00:00
fb_draw.h
fb_notify.c video: Add export.h for THIS_MODULE/EXPORT_SYMBOL to drivers/video 2011-10-31 19:31:33 -04:00
fb_sys_fops.c
fb-puv3.c fbdev: unicore32: use display information in info not in var for panning 2011-08-19 10:31:01 +02:00
fbcmap.c
fbcvt.c
fbmem.c udlfb: remove sysfs framebuffer device with USB .disconnect() 2012-03-15 13:35:22 +00:00
fbmon.c fbdev: fix parsing of standard timings 2011-09-01 00:31:05 +00:00
fbsysfs.c fb: avoid possible deadlock caused by fb_set_suspend 2011-09-02 17:58:29 +00:00
ffb.c
fm2fb.c
fsl-diu-fb.c drivers/video: compile fixes for fsl-diu-fb.c 2012-01-28 19:35:24 +00:00
g364fb.c g364fb: use display information in info not in var for panning 2011-08-19 10:31:09 +02:00
gbefb.c
grvga.c grvga: fix section mismatch warnings 2012-01-03 16:02:55 +00:00
gxt4500.c gxt4500: use display information in info not in var for panning 2011-08-19 10:31:17 +02:00
hecubafb.c
hgafb.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
hitfb.c
hpfb.c
igafb.c doc: fix broken references 2011-09-27 18:08:04 +02:00
imsttfb.c imsttfb: use display information in info not in var for panning 2011-08-19 10:31:39 +02:00
imxfb.c
jz4740_fb.c
Kconfig Merge branch 'fbdev-next' of git://github.com/schandinat/linux-2.6 2012-01-14 15:11:19 -08:00
leo.c
macfb.c macfb: fix black and white modes 2012-01-22 14:50:02 +01:00
macmodes.c
macmodes.h
Makefile fbdev: remove display subsystem 2011-11-11 16:46:18 +00:00
maxinefb.c
metronomefb.c
modedb.c fbdev: fix indentation in modedb.c 2011-09-14 16:40:52 +00:00
mx3fb.c video i.MX IPU: Fix display connections 2011-12-08 12:59:03 +05:30
mxsfb.c Merge branch 'fbdev-next' of git://github.com/schandinat/linux-2.6 2012-01-14 15:11:19 -08:00
n411.c
neofb.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
nuc900fb.c video: convert drivers/video/* to use module_platform_driver() 2011-12-03 22:08:42 +00:00
nuc900fb.h
offb.c offb: Fix setting of the pseudo-palette for >8bpp 2012-01-03 12:09:25 +11:00
output.c
p9100.c
platinumfb.c video: platinumfb: Add __devexit_p at necessary place 2011-10-15 00:19:58 +00:00
platinumfb.h
pm2fb.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
pm3fb.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
pmag-aa-fb.c
pmag-ba-fb.c
pmagb-b-fb.c
ps3fb.c video: irq: Remove IRQF_DISABLED 2011-10-03 15:52:22 +00:00
pvr2fb.c video: pvr2fb: Fix up spurious section mismatch warnings. 2012-01-13 16:42:50 +09:00
pxa3xx-gcu.c video: convert drivers/video/* to use module_platform_driver() 2011-12-03 22:08:42 +00:00
pxa3xx-gcu.h
pxa168fb.c video: convert drivers/video/* to use module_platform_driver() 2011-12-03 22:08:42 +00:00
pxa168fb.h
pxafb.c Merge branch 'next/fixes' of git://git.linaro.org/people/arnd/arm-soc 2011-11-01 19:55:06 -07:00
pxafb.h
q40fb.c
s1d13xxxfb.c
s3c2410fb.c video: s3c2410: fix checkpatch error and warnings 2011-12-03 22:10:43 +00:00
s3c2410fb.h
s3c-fb.c video: s3c-fb: Don't keep device runtime active when open 2012-01-03 16:00:05 +00:00
s3fb.c s3fb: fix Virge/VX 2011-12-21 02:25:21 +00:00
sa1100fb.c video: irq: Remove IRQF_DISABLED 2011-10-03 15:52:22 +00:00
sa1100fb.h
sbuslib.c Drivers: video: sbuslib: fixed a brace coding style issue 2011-11-22 01:00:24 +00:00
sbuslib.h
sgivwfb.c
sh7760fb.c video: convert drivers/video/* to use module_platform_driver() 2011-12-03 22:08:42 +00:00
sh_mipi_dsi.c fbdev: sh_mipi_dsi: fixup setup timing DSICTRL 2011-11-21 23:43:22 +00:00
sh_mobile_hdmi.c fb: sh-mobile: Fix deadlock risk between lock_fb_info() and console_lock() 2011-09-02 18:21:21 +00:00
sh_mobile_lcdcfb.c fbdev: sh_mobile_lcdc: Support FOURCC-based format API 2011-12-19 20:07:13 +00:00
sh_mobile_lcdcfb.h fbdev: sh_mobile_lcdc: Restart LCDC in runtime PM resume handler 2011-08-19 08:22:41 +02:00
sh_mobile_meram.c video: convert drivers/video/* to use module_platform_driver() 2011-12-03 22:08:42 +00:00
skeletonfb.c
sm501fb.c video: convert drivers/video/* to use module_platform_driver() 2011-12-03 22:08:42 +00:00
smscufx.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
sstfb.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
sticore.h
stifb.c
sunxvr500.c
sunxvr1000.c
sunxvr2500.c
svgalib.c
syscopyarea.c
sysfillrect.c
sysimgblt.c
tcx.c
tdfxfb.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
tgafb.c
tmiofb.c video: irq: Remove IRQF_DISABLED 2011-10-03 15:52:22 +00:00
tridentfb.c tridentfb: use display information in info not in var for panning 2011-08-19 10:35:18 +02:00
udlfb.c udlfb: remove sysfs framebuffer device with USB .disconnect() 2012-03-15 13:35:22 +00:00
uvesafb.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
valkyriefb.c
valkyriefb.h
vesafb.c
vfb.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
vga16fb.c vga16fb: use display information in info not in var for panning 2011-08-19 10:35:34 +02:00
vgastate.c
vt8500lcdfb.c video: convert drivers/video/* to use module_platform_driver() 2011-12-03 22:08:42 +00:00
vt8500lcdfb.h
vt8623fb.c vt8623fb: use display information in info not in var for panning 2011-08-19 10:36:20 +02:00
w100fb.c video: convert drivers/video/* to use module_platform_driver() 2011-12-03 22:08:42 +00:00
w100fb.h
wm8505fb_regs.h
wm8505fb.c video: convert drivers/video/* to use module_platform_driver() 2011-12-03 22:08:42 +00:00
wmt_ge_rops.c video: convert drivers/video/* to use module_platform_driver() 2011-12-03 22:08:42 +00:00
wmt_ge_rops.h
xen-fbfront.c Xen: consolidate and simplify struct xenbus_driver instantiation 2012-01-04 17:01:17 -05:00
xilinxfb.c video: convert drivers/video/* to use module_platform_driver() 2011-12-03 22:08:42 +00:00