Message ID | 1522953580.3977.10.camel@synopsys.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, Apr 05, 2018 at 06:39:41PM +0000, Alexey Brodkin wrote: > Hi Daniel, all, > > On Thu, 2018-04-05 at 15:44 +0200, Daniel Vetter wrote: > > On Thu, Apr 05, 2018 at 11:10:03AM +0000, Alexey Brodkin wrote: > > > Hi Daniel, Lucas, > > > > > > On Thu, 2018-04-05 at 12:59 +0200, Daniel Vetter wrote: > > > > On Thu, Apr 5, 2018 at 12:29 PM, Lucas Stach <l.stach@pengutronix.de> wrote: > > > > > Am Donnerstag, den 05.04.2018, 11:32 +0200 schrieb Daniel Vetter: > > > > > > On Thu, Apr 5, 2018 at 9:16 AM, Alexey Brodkin > > > > > > <Alexey.Brodkin@synopsys.com> wrote: > > > > > > > Hi Daniel, > > > > > > > > > > > > > > On Thu, 2018-04-05 at 08:18 +0200, Daniel Vetter wrote: > > > > > > > > On Wed, Apr 4, 2018 at 10:06 PM, Alexey Brodkin > > > > > > > > <Alexey.Brodkin@synopsys.com> wrote: > > > > > > > > > Hello, > > > > > > > > > > > > > > > > > > We're trying to use DisplayLink USB2-to-HDMI adapter to render > > > > > > > > > GPU-accelerated graphics. > > > > > > > > > Hardware setup is as simple as a devboard + DisplayLink > > > > > > > > > adapter. > > > > > > > > > Devboards we use for this experiment are: > > > > > > > > > * Wandboard Quad (based on IMX6 SoC with Vivante GPU) or > > > > > > > > > * HSDK (based on Synopsys ARC HS38 SoC with Vivante GPU as > > > > > > > > > well) > > > > > > > > > > > > > > > > > > I'm sure any other board with DRM supported GPU will work, > > > > > > > > > those we just used > > > > > > > > > as the very recent Linux kernels could be easily run on them > > > > > > > > > both. > > > > > > > > > > > > > > > > > > Basically the problem is UDL needs to be explicitly notified > > > > > > > > > about new data > > > > > > > > > to be rendered on the screen compared to typical bit-streamers > > > > > > > > > that infinitely > > > > > > > > > scan a dedicated buffer in memory. > > > > > > > > > > > > > > > > > > In case of UDL there're just 2 ways for this notification: > > > > > > > > > 1) DRM_IOCTL_MODE_PAGE_FLIP that calls drm_crtc_funcs- > > > > > > > > > > page_flip() > > > > > > > > > > > > > > > > > > 2) DRM_IOCTL_MODE_DIRTYFB that calls drm_framebuffer_funcs- > > > > > > > > > > dirty() > > > > > > > > > > > > > > > > > > But neither of IOCTLs happen when we run Xserver with xf86- > > > > > > > > > video-armada driver > > > > > > > > > (see https://urldefense.proofpoint.com/v2/url?u=http-3A__git.ar > > > > > > > > > m.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh- > > > > > > > > > 3Dunstable-2Ddevel&d=DwIBaQ&; > > > > > > > > > c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkh > > > > > > > > > pk5R81I&m=oEAlP64L9vkuUs_k3kGwwwlN1WJbDMJbCo0uDhwKwwk&s=3ZHj- > > > > > > > > > 6JXZBLSTWg_4KMnL0VNi7z8c0RxHzj2U5ywVIw&e=). > > > > > > > > > > > > > > > > > > Is it something missing in Xserver or in UDL driver? > > > > > > > > > > > > > > > > Use the -modesetting driverr for UDL, that one works correctly. > > > > > > > > > > > > > > If you're talking about "modesetting" driver of Xserver [1] then > > > > > > > indeed > > > > > > > picture is displayed on the screen. But there I guess won't be any > > > > > > > 3D acceleration. > > > > > > > > > > > > > > At least that's what was suggested to me earlier here [2] by Lucas: > > > > > > > ---------------------------->8--------------------------- > > > > > > > For 3D acceleration to work under X you need the etnaviv specific > > > > > > > DDX > > > > > > > driver, which can be found here: > > > > > > > > > > > > > > https://urldefense.proofpoint.com/v2/url?u=http-3A__git.arm.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_log_-3Fh-3Dunsta&d=DwIBaQ&c=DPL6_X > > > > > > > _6Jk > > > > > > > XFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=FleDFAQb2lBcZk5DMld7qpeSrB5Srsb4XPQecA5BPvU&s=YUzMQWe3lpC_pjGqRjb4MvRYh16ZBbe > > > > > > > alqf > > > > > > > rywlqjKE&e= > > > > > > > ble-devel > > > > > > > > > > > > You definitely want to use -modesetting for UDL. And I thought with > > > > > > glamour and the corresponding mesa work you should also get > > > > > > accelaration. Insisting that you must use a driver-specific ddx is > > > > > > broken, the world doesn't work like that anymore. > > > > > > > > > > On etnaviv the world definitely still works like this. The etnaviv DDX > > > > > uses the dedicated 2D hardware of the Vivante GPUs, which is much > > > > > faster and efficient than going through Glamor. > > > > > Especially since almost all X accel operations are done on linear > > > > > buffers, while the 3D GPU can only ever do tiled on both sampler and > > > > > render, where some multi-pipe 3D cores can't even read the tiling they > > > > > write out. So Glamor is an endless copy fest using the resolve engine > > > > > on those. > > > > > > > > Ah right, I've forgotten about the vivante 2d cores again. > > > > > > > > > If using etnaviv with UDL is a use-case that need to be supported, one > > > > > would need to port the UDL specifics from -modesetting to the -armada > > > > > DDX. > > > > > > > > I don't think this makes sense. > > > > > > I'm not really sure it has something to do with Etnaviv in particular. > > > Given UDL might be attached to any board with any GPU that would mean we'd > > > need to add those "UDL specifics from -modesetting" in all xf86-video-drivers, > > > right? > > > > X server supports multiple drivers (for different devices) in parallel. > > You should be using armada for the imx-drm thing, and modesetting for udl. > > And through the magic of prime it should even figure out that the device > > > > > > > > Lucas, can you pls clarify? Also, why does -armada bind against all > > > > > > kms drivers, that's probaly too much. > > > > > > > > > > I think that's a local modification done by Alexey. The armada driver > > > > > only binds to armada and imx-drm by default. > > > > > > Actually it all magically works without any modifications. > > > I just start X with the following xorg.conf [1]: > > > ------------------------>8-------------------------- > > > Section "Device" > > > Identifier "Driver0" > > > Screen 0 > > > Driver "armada" > > > EndSection > > > ------------------------>8-------------------------- > > Ok it was quite some time ago so I forgot about that completely. > I really made one trivial change in xf86-video-armada: > ------------------------>8-------------------------- > --- a/src/armada_module.c > +++ b/src/armada_module.c > @@ -26,7 +26,7 @@ > #define ARMADA_NAME "armada" > #define ARMADA_DRIVER_NAME "armada" > > -#define DRM_MODULE_NAMES "armada-drm", "imx-drm" > +#define DRM_MODULE_NAMES "armada-drm", "imx-drm", "udl" > #define DRM_DEFAULT_BUS_ID NULL > ------------------------>8-------------------------- > > Otherwise Xserver fails on start which is expected given "imx-drm" is intentionally removed. You need to keep imx-drm around. And then light up the udl display using prime. Afaiui it should all just work (but with maybe a few disconnected outputs from imx-drm around that you don't need, but that's not a problem). -Daniel > > > > In fact in case of "kmscube" I had to trick Mesa like that: > > > ------------------------>8-------------------------- > > > export MESA_LOADER_DRIVER_OVERRIDE=imx-drm > > > > Yeah this shouldn't be necessary at all. > > > > > ------------------------>8-------------------------- > > > And then UDL out works perfectly fine (that's because "kmscube" > > > explicitly calls drmModePageFlip()). > > > > > > As for Xserver nothing special was done. > > > > > > [1] https://urldefense.proofpoint.com/v2/url?u=http-3A__git.arm.linux.org.uk_cgit_xf86-2Dvideo-2Darmada.git_tree_conf_xorg-2Dsample.conf-3Fh-3Duns > > > table- > > > 2Ddevel&d=DwIBAg&c=DPL6_X_6JkXFx7AXWqB0tg&r=lqdeeSSEes0GFDDl656eViXO7breS55ytWkhpk5R81I&m=PGNfmLiN38EmKHzRyuZpX3Lsc9grXsJBx2tkJubl4t0&s=IUChhhP3eD > > > PEiH3QdN6CxhfFaBCZIya0KEWDbCcDtGI&e= > > > > xorg.log is probably more interesting. No idea whether your Xorg.conf > > snippet is needed for armada or not. > > Below is my full Xorg.log output with change above in place: > ------------------------>8-------------------------- > [ 8.941] > X.Org X Server 1.19.6 > Release Date: 2017-12-20 > [ 8.941] X Protocol Version 11, Revision 0 > [ 8.941] Build Operating System: Linux 3.10.0-514.el7.x86_64 x86_64 > [ 8.941] Current Operating System: Linux buildroot 4.16.0 #3 SMP PREEMPT Thu Apr 5 21:28:25 MSK 2018 arc > [ 8.941] Kernel command line: earlycon=uart8250,mmio32,0xf0005000,115200n8 console=ttyS0,115200n8 debug print-fatal-signals=1 drm.debug=0x3f > [ 8.942] Build Date: 05 April 2018 06:48:58PM > [ 8.942] > [ 8.942] Current version of pixman: 0.34.0 > [ 8.942] Before reporting problems, check http://wiki.x.org > to make sure that you have the latest version. > [ 8.942] Markers: (--) probed, (**) from config file, (==) default setting, > (++) from command line, (!!) notice, (II) informational, > (WW) warning, (EE) error, (NI) not implemented, (??) unknown. > [ 8.942] (==) Log file: "/var/log/Xorg.0.log", Time: Thu Jan 1 00:00:08 1970 > [ 8.942] (==) Using config file: "/etc/X11/xorg.conf" > [ 8.942] (==) No Layout section. Using the first Screen section. > [ 8.942] (==) No screen section available. Using defaults. > [ 8.942] (**) |-->Screen "Default Screen Section" (0) > [ 8.942] (**) | |-->Monitor "<default monitor>" > [ 8.944] (==) No device specified for screen "Default Screen Section". > Using the first device section listed. > [ 8.944] (**) | |-->Device "Driver0" > [ 8.944] (==) No monitor specified for screen "Default Screen Section". > Using a default monitor configuration. > [ 8.944] (==) Not automatically adding devices > [ 8.944] (==) Not automatically enabling devices > [ 8.944] (==) Not automatically adding GPU devices > [ 8.944] (==) Max clients allowed: 256, resource mask: 0x1fffff > [ 8.944] (WW) The directory "/usr/share/fonts/X11//TTF/" does not exist. > [ 8.944] Entry deleted from font path. > [ 8.944] (WW) The directory "/usr/share/fonts/X11//OTF/" does not exist. > [ 8.944] Entry deleted from font path. > [ 8.944] (WW) The directory "/usr/share/fonts/X11//Type1/" does not exist. > [ 8.944] Entry deleted from font path. > [ 8.944] (WW) `fonts.dir' not found (or not valid) in "/usr/share/fonts/X11//100dpi/". > [ 8.944] Entry deleted from font path. > [ 8.945] (Run 'mkfontdir' on "/usr/share/fonts/X11//100dpi/"). > [ 8.945] (WW) `fonts.dir' not found (or not valid) in "/usr/share/fonts/X11//75dpi/". > [ 8.945] Entry deleted from font path. > [ 8.945] (Run 'mkfontdir' on "/usr/share/fonts/X11//75dpi/"). > [ 8.945] (==) FontPath set to: > /usr/share/fonts/X11//misc/ > [ 8.945] (==) ModulePath set to "/usr/lib/xorg/modules" > [ 8.945] (==) |-->Input Device "<default pointer>" > [ 8.945] (==) |-->Input Device "<default keyboard>" > [ 8.945] (==) No Layout section. Using the default mouse configuration. > [ 8.945] (==) No Layout section. Using the default keyboard configuration. > [ 8.945] (II) Loader magic: 0x16c510 > [ 8.945] (II) Module ABI versions: > [ 8.945] X.Org ANSI C Emulation: 0.4 > [ 8.945] X.Org Video Driver: 23.0 > [ 8.945] X.Org XInput driver : 24.1 > [ 8.945] X.Org Server Extension : 10.0 > [ 8.945] (II) LoadModule: "armada" > [ 8.946] (II) Loading /usr/lib/xorg/modules/drivers/armada_drv.so > [ 8.947] (II) Module armada: vendor="X.Org Foundation" > [ 8.947] compiled for 1.19.6, module version = 0.0.0 > [ 8.947] Module class: X.Org Video Driver > [ 8.947] ABI class: X.Org Video Driver, version 23.0 > [ 8.947] (II) LoadModule: "mouse" > [ 8.948] (WW) Warning, couldn't open module mouse > [ 8.948] (II) UnloadModule: "mouse" > [ 8.948] (II) Unloading mouse > [ 8.948] (EE) Failed to load module "mouse" (module does not exist, 0) > [ 8.948] (II) LoadModule: "kbd" > [ 8.948] (WW) Warning, couldn't open module kbd > [ 8.948] (II) UnloadModule: "kbd" > [ 8.948] (II) Unloading kbd > [ 8.948] (EE) Failed to load module "kbd" (module does not exist, 0) > [ 8.948] (II) armada: Support for Marvell LCD Controller: 88AP510 > [ 8.948] (II) armada: Support for Freescale IPU: i.MX6 > [ 8.949] (--) using VT number 2 > [ 8.949] (WW) Falling back to old probe method for armada > [ 9.415] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support > [ 9.438] (II) armada(0): hardware: udl > [ 9.438] (II) armada(0): Creating default Display subsection in Screen section > "Default Screen Section" for depth/fbbpp 24/32 > [ 9.438] (==) armada(0): Depth 24, (--) framebuffer bpp 32 > [ 9.438] (==) armada(0): RGB weight 888 > [ 9.438] (==) armada(0): Default visual is TrueColor > [ 9.438] (II) Loading sub module "etnadrm_gpu" > [ 9.438] (II) LoadModule: "etnadrm_gpu" > [ 9.439] (II) Loading /usr/lib/xorg/modules/drivers/etnadrm_gpu.so > [ 9.439] (II) Module Etnaviv GPU driver (DRM): vendor="X.Org Foundation" > [ 9.439] compiled for 1.19.6, module version = 0.0.0 > [ 9.440] ABI class: X.Org ANSI C Emulation, version 0.4 > [ 9.774] (II) armada(0): Output DVI1 has no monitor section > [ 10.069] (II) armada(0): EDID for output DVI1 > [ 10.069] (II) armada(0): Manufacturer: SAM Model: 1bb Serial#: 1212231993 > [ 10.070] (II) armada(0): Year: 2005 Week: 50 > [ 10.070] (II) armada(0): EDID Version: 1.3 > [ 10.070] (II) armada(0): Digital Display Input > [ 10.070] (II) armada(0): Max Image Size [cm]: horiz.: 38 vert.: 30 > [ 10.070] (II) armada(0): Gamma: 2.20 > [ 10.070] (II) armada(0): DPMS capabilities: Off > [ 10.070] (II) armada(0): Supported color encodings: RGB 4:4:4 YCrCb 4:4:4 > [ 10.070] (II) armada(0): First detailed timing is preferred mode > [ 10.070] (II) armada(0): redX: 0.640 redY: 0.329 greenX: 0.300 greenY: 0.600 > [ 10.070] (II) armada(0): blueX: 0.150 blueY: 0.060 whiteX: 0.313 whiteY: 0.329 > [ 10.070] (II) armada(0): Supported established timings: > [ 10.070] (II) armada(0): 720x400@70Hz > [ 10.070] (II) armada(0): 640x480@60Hz > [ 10.070] (II) armada(0): 640x480@67Hz > [ 10.070] (II) armada(0): 640x480@72Hz > [ 10.070] (II) armada(0): 640x480@75Hz > [ 10.070] (II) armada(0): 800x600@56Hz > [ 10.070] (II) armada(0): 800x600@60Hz > [ 10.071] (II) armada(0): 800x600@72Hz > [ 10.071] (II) armada(0): 800x600@75Hz > [ 10.071] (II) armada(0): 832x624@75Hz > [ 10.071] (II) armada(0): 1024x768@60Hz > [ 10.071] (II) armada(0): 1024x768@70Hz > [ 10.071] (II) armada(0): 1024x768@75Hz > [ 10.071] (II) armada(0): 1280x1024@75Hz > [ 10.071] (II) armada(0): 1152x864@75Hz > [ 10.071] (II) armada(0): Manufacturer's mask: 0 > [ 10.071] (II) armada(0): Supported standard timings: > [ 10.071] (II) armada(0): #0: hsize: 1280 vsize 1024 refresh: 60 vid: 32897 > [ 10.071] (II) armada(0): #1: hsize: 1280 vsize 960 refresh: 60 vid: 16513 > [ 10.071] (II) armada(0): #2: hsize: 1152 vsize 864 refresh: 75 vid: 20337 > [ 10.071] (II) armada(0): Supported detailed timing: > [ 10.071] (II) armada(0): clock: 108.0 MHz Image Size: 376 x 301 mm > [ 10.071] (II) armada(0): h_active: 1280 h_sync: 1328 h_sync_end 1440 h_blank_end 1688 h_border: 0 > [ 10.071] (II) armada(0): v_active: 1024 v_sync: 1025 v_sync_end 1028 v_blanking: 1066 v_border: 0 > [ 10.071] (II) armada(0): Ranges: V min: 56 V max: 75 Hz, H min: 30 H max: 81 kHz, PixClock max 145 MHz > [ 10.071] (II) armada(0): Monitor name: SyncMaster > [ 10.071] (II) armada(0): Serial No: HSGYC00767 > [ 10.072] (II) armada(0): EDID (in hex): > [ 10.072] (II) armada(0): 00ffffffffffff004c2dbb0139314148 > [ 10.072] (II) armada(0): 320f010380261e782ade95a3544c9926 > [ 10.072] (II) armada(0): 0f5054bfef8081808140714f01010101 > [ 10.072] (II) armada(0): 010101010101302a009851002a403070 > [ 10.072] (II) armada(0): 1300782d1100001e000000fd00384b1e > [ 10.072] (II) armada(0): 510e000a202020202020000000fc0053 > [ 10.072] (II) armada(0): 796e634d61737465720a2020000000ff > [ 10.072] (II) armada(0): 00485347594330303736370a2020003c > [ 10.072] (II) armada(0): Printing probed modes for output DVI1 > [ 10.072] (II) armada(0): Modeline "1280x1024"x60.0 108.00 1280 1328 1440 1688 1024 1025 1028 1066 +hsync +vsync (64.0 kHz eP) > [ 10.073] (II) armada(0): Modeline "1280x1024"x75.0 135.00 1280 1296 1440 1688 1024 1025 1028 1066 +hsync +vsync (80.0 kHz e) > [ 10.073] (II) armada(0): Modeline "1280x960"x60.0 108.00 1280 1376 1488 1800 960 961 964 1000 +hsync +vsync (60.0 kHz e) > [ 10.073] (II) armada(0): Modeline "1152x864"x75.0 108.00 1152 1216 1344 1600 864 865 868 900 +hsync +vsync (67.5 kHz e) > [ 10.073] (II) armada(0): Modeline "1024x768"x75.0 78.75 1024 1040 1136 1312 768 769 772 800 +hsync +vsync (60.0 kHz e) > [ 10.073] (II) armada(0): Modeline "1024x768"x70.1 75.00 1024 1048 1184 1328 768 771 777 806 -hsync -vsync (56.5 kHz e) > [ 10.073] (II) armada(0): Modeline "1024x768"x60.0 65.00 1024 1048 1184 1344 768 771 777 806 -hsync -vsync (48.4 kHz e) > [ 10.073] (II) armada(0): Modeline "832x624"x74.6 57.28 832 864 928 1152 624 625 628 667 -hsync -vsync (49.7 kHz e) > [ 10.073] (II) armada(0): Modeline "800x600"x72.2 50.00 800 856 976 1040 600 637 643 666 +hsync +vsync (48.1 kHz e) > [ 10.073] (II) armada(0): Modeline "800x600"x75.0 49.50 800 816 896 1056 600 601 604 625 +hsync +vsync (46.9 kHz e) > [ 10.074] (II) armada(0): Modeline "800x600"x60.3 40.00 800 840 968 1056 600 601 605 628 +hsync +vsync (37.9 kHz e) > [ 10.074] (II) armada(0): Modeline "800x600"x56.3 36.00 800 824 896 1024 600 601 603 625 +hsync +vsync (35.2 kHz e) > [ 10.074] (II) armada(0): Modeline "640x480"x75.0 31.50 640 656 720 840 480 481 484 500 -hsync -vsync (37.5 kHz e) > [ 10.074] (II) armada(0): Modeline "640x480"x72.8 31.50 640 664 704 832 480 489 492 520 -hsync -vsync (37.9 kHz e) > [ 10.074] (II) armada(0): Modeline "640x480"x66.7 30.24 640 704 768 864 480 483 486 525 -hsync -vsync (35.0 kHz e) > [ 10.074] (II) armada(0): Modeline "640x480"x59.9 25.18 640 656 752 800 480 490 492 525 -hsync -vsync (31.5 kHz e) > [ 10.074] (II) armada(0): Modeline "720x400"x70.1 28.32 720 738 846 900 400 412 414 449 -hsync +vsync (31.5 kHz e) > [ 10.074] (II) armada(0): Output DVI1 connected > [ 10.074] (II) armada(0): Using exact sizes for initial modes > [ 10.074] (II) armada(0): Output DVI1 using initial mode 1280x1024 +0+0 > [ 10.074] (==) armada(0): Using gamma correction (1.0, 1.0, 1.0) > [ 10.074] (==) armada(0): DPI set to (96, 96) > [ 10.075] (II) Loading sub module "fb" > [ 10.075] (II) LoadModule: "fb" > [ 10.075] (II) Loading /usr/lib/xorg/modules/libfb.so > [ 10.076] (II) Module fb: vendor="X.Org Foundation" > [ 10.076] compiled for 1.19.6, module version = 1.0.0 > [ 10.076] ABI class: X.Org ANSI C Emulation, version 0.4 > [ 10.083] (==) Depth 24 pixmap format is 32 bpp > [ 10.125] (==) armada(0): Backing store disabled > [ 10.125] (==) armada(0): Silken mouse enabled > [ 10.243] (--) armada(0): Vivante GC880 GPU revision 5124 (etnaviv) 2d PE2.0 > [ 10.254] (II) armada(0): [DRI2] Setup complete > [ 10.254] (II) armada(0): [DRI2] DRI driver: etnaviv > [ 10.254] (II) armada(0): direct rendering: DRI2 enabled > [ 10.255] (II) armada(0): RandR 1.2 enabled, ignore the following RandR disabled message. > [ 10.306] (==) armada(0): DPMS enabled > [ 10.309] (II) armada(0): etnaviv: Xv: using YUY2 format intermediate YUV target > [ 10.585] (--) RandR disabled > [ 10.618] (II) armada(0): etnaviv: A8 target not supported > [ 10.624] (II) armada(0): Setting screen physical size to 338 x 270 > [ 10.843] (II) LoadModule: "mouse" > [ 10.843] (WW) Warning, couldn't open module mouse > [ 10.843] (II) UnloadModule: "mouse" > [ 10.843] (II) Unloading mouse > [ 10.843] (EE) Failed to load module "mouse" (module does not exist, 0) > [ 10.843] (EE) No input driver matching `mouse' > [ 10.843] (II) Falling back to input driver `libinput' > [ 10.844] (II) LoadModule: "libinput" > [ 10.844] (WW) Warning, couldn't open module libinput > [ 10.844] (II) UnloadModule: "libinput" > [ 10.844] (II) Unloading libinput > [ 10.844] (EE) Failed to load module "libinput" (module does not exist, 0) > [ 10.844] (II) LoadModule: "kbd" > [ 10.845] (WW) Warning, couldn't open module kbd > [ 10.845] (II) UnloadModule: "kbd" > [ 10.845] (II) Unloading kbd > [ 10.845] (EE) Failed to load module "kbd" (module does not exist, 0) > [ 10.845] (EE) No input driver matching `kbd' > [ 10.845] (II) Falling back to input driver `libinput' > [ 10.845] (II) LoadModule: "libinput" > [ 10.845] (WW) Warning, couldn't open module libinput > [ 10.846] (II) UnloadModule: "libinput" > [ 10.846] (II) Unloading libinput > [ 10.846] (EE) Failed to load module "libinput" (module does not exist, 0) > ------------------------>8-------------------------- > > -Alexey
Hi Daniel, On Mon, 2018-04-09 at 10:31 +0200, Daniel Vetter wrote: > On Thu, Apr 05, 2018 at 06:39:41PM +0000, Alexey Brodkin wrote: > > Hi Daniel, all, [snip] > > Ok it was quite some time ago so I forgot about that completely. > > I really made one trivial change in xf86-video-armada: > > ------------------------>8-------------------------- > > --- a/src/armada_module.c > > +++ b/src/armada_module.c > > @@ -26,7 +26,7 @@ > > #define ARMADA_NAME "armada" > > #define ARMADA_DRIVER_NAME "armada" > > > > -#define DRM_MODULE_NAMES "armada-drm", "imx-drm" > > +#define DRM_MODULE_NAMES "armada-drm", "imx-drm", "udl" > > #define DRM_DEFAULT_BUS_ID NULL > > ------------------------>8-------------------------- > > > > Otherwise Xserver fails on start which is expected given "imx-drm" is intentionally removed. Here I meant I explicitly disabled DRM_IMX in the kernel configuraion so that it is not used in run-time. > You need to keep imx-drm around. And then light up the udl display using > prime. Afaiui it should all just work (but with maybe a few disconnected > outputs from imx-drm around that you don't need, but that's not a > problem). And given my comment above I don't really see any difference between DRM_IMX and DRM_UDL (except their HW implmentation which I guess should not bother upper layers) so why do wee need to treat them differently? Most probably I'm missing something but my thought was if we have 2 equally well supported KMS devices we may easily swap them and still have resulting setup functional. -Alexey
On Mon, Apr 09, 2018 at 08:55:36AM +0000, Alexey Brodkin wrote: > Hi Daniel, > > On Mon, 2018-04-09 at 10:31 +0200, Daniel Vetter wrote: > > On Thu, Apr 05, 2018 at 06:39:41PM +0000, Alexey Brodkin wrote: > > > Hi Daniel, all, > > [snip] > > > > Ok it was quite some time ago so I forgot about that completely. > > > I really made one trivial change in xf86-video-armada: > > > ------------------------>8-------------------------- > > > --- a/src/armada_module.c > > > +++ b/src/armada_module.c > > > @@ -26,7 +26,7 @@ > > > #define ARMADA_NAME "armada" > > > #define ARMADA_DRIVER_NAME "armada" > > > > > > -#define DRM_MODULE_NAMES "armada-drm", "imx-drm" > > > +#define DRM_MODULE_NAMES "armada-drm", "imx-drm", "udl" > > > #define DRM_DEFAULT_BUS_ID NULL > > > ------------------------>8-------------------------- > > > > > > Otherwise Xserver fails on start which is expected given "imx-drm" is intentionally removed. > > Here I meant I explicitly disabled DRM_IMX in the kernel configuraion > so that it is not used in run-time. > > > You need to keep imx-drm around. And then light up the udl display using > > prime. Afaiui it should all just work (but with maybe a few disconnected > > outputs from imx-drm around that you don't need, but that's not a > > problem). > > And given my comment above I don't really see any difference between > DRM_IMX and DRM_UDL (except their HW implmentation which I guess should > not bother upper layers) so why do wee need to treat them differently? > > Most probably I'm missing something but my thought was if we have > 2 equally well supported KMS devices we may easily swap them and still > have resulting setup functional. armada is not a generic drm driver, but can only be used for armada-drm and imx-drm. You can't just use it with any drm device, for that you need a generic driver like -modesetting. Just enable all the drivers you have for your hw, and it should work. Hacking on drivers without knowing what they expect tends to not work so well. -Daniel
Hi Daniel, On Mon, 2018-04-09 at 11:17 +0200, Daniel Vetter wrote: > On Mon, Apr 09, 2018 at 08:55:36AM +0000, Alexey Brodkin wrote: > > Hi Daniel, > > > > On Mon, 2018-04-09 at 10:31 +0200, Daniel Vetter wrote: > > > On Thu, Apr 05, 2018 at 06:39:41PM +0000, Alexey Brodkin wrote: > > > > Hi Daniel, all, > > > > [snip] > > > > > > Ok it was quite some time ago so I forgot about that completely. > > > > I really made one trivial change in xf86-video-armada: > > > > ------------------------>8-------------------------- > > > > --- a/src/armada_module.c > > > > +++ b/src/armada_module.c > > > > @@ -26,7 +26,7 @@ > > > > #define ARMADA_NAME "armada" > > > > #define ARMADA_DRIVER_NAME "armada" > > > > > > > > -#define DRM_MODULE_NAMES "armada-drm", "imx-drm" > > > > +#define DRM_MODULE_NAMES "armada-drm", "imx-drm", "udl" > > > > #define DRM_DEFAULT_BUS_ID NULL > > > > ------------------------>8-------------------------- > > > > > > > > Otherwise Xserver fails on start which is expected given "imx-drm" is intentionally removed. > > > > Here I meant I explicitly disabled DRM_IMX in the kernel configuraion > > so that it is not used in run-time. > > > > > You need to keep imx-drm around. And then light up the udl display using > > > prime. Afaiui it should all just work (but with maybe a few disconnected > > > outputs from imx-drm around that you don't need, but that's not a > > > problem). > > > > And given my comment above I don't really see any difference between > > DRM_IMX and DRM_UDL (except their HW implmentation which I guess should > > not bother upper layers) so why do wee need to treat them differently? > > > > Most probably I'm missing something but my thought was if we have > > 2 equally well supported KMS devices we may easily swap them and still > > have resulting setup functional. > > armada is not a generic drm driver, but can only be used for armada-drm > and imx-drm. You can't just use it with any drm device, for that you need > a generic driver like -modesetting. But "armada" is the name of xf86 "driver" only which then uses true DRM_ETNAVIV kernel driver. That's why I'm a bit confused. And from what I see DRM_ETNAVIV happily works with either DRM_xxx frame-buffer device be it DRM_IMX or DRM_UDL. -Alexey
On Mon, Apr 09, 2018 at 09:45:51AM +0000, Alexey Brodkin wrote: > Hi Daniel, > > On Mon, 2018-04-09 at 11:17 +0200, Daniel Vetter wrote: > > On Mon, Apr 09, 2018 at 08:55:36AM +0000, Alexey Brodkin wrote: > > > Hi Daniel, > > > > > > On Mon, 2018-04-09 at 10:31 +0200, Daniel Vetter wrote: > > > > On Thu, Apr 05, 2018 at 06:39:41PM +0000, Alexey Brodkin wrote: > > > > > Hi Daniel, all, > > > > > > [snip] > > > > > > > > Ok it was quite some time ago so I forgot about that completely. > > > > > I really made one trivial change in xf86-video-armada: > > > > > ------------------------>8-------------------------- > > > > > --- a/src/armada_module.c > > > > > +++ b/src/armada_module.c > > > > > @@ -26,7 +26,7 @@ > > > > > #define ARMADA_NAME "armada" > > > > > #define ARMADA_DRIVER_NAME "armada" > > > > > > > > > > -#define DRM_MODULE_NAMES "armada-drm", "imx-drm" > > > > > +#define DRM_MODULE_NAMES "armada-drm", "imx-drm", "udl" > > > > > #define DRM_DEFAULT_BUS_ID NULL > > > > > ------------------------>8-------------------------- > > > > > > > > > > Otherwise Xserver fails on start which is expected given "imx-drm" is intentionally removed. > > > > > > Here I meant I explicitly disabled DRM_IMX in the kernel configuraion > > > so that it is not used in run-time. > > > > > > > You need to keep imx-drm around. And then light up the udl display using > > > > prime. Afaiui it should all just work (but with maybe a few disconnected > > > > outputs from imx-drm around that you don't need, but that's not a > > > > problem). > > > > > > And given my comment above I don't really see any difference between > > > DRM_IMX and DRM_UDL (except their HW implmentation which I guess should > > > not bother upper layers) so why do wee need to treat them differently? > > > > > > Most probably I'm missing something but my thought was if we have > > > 2 equally well supported KMS devices we may easily swap them and still > > > have resulting setup functional. > > > > armada is not a generic drm driver, but can only be used for armada-drm > > and imx-drm. You can't just use it with any drm device, for that you need > > a generic driver like -modesetting. > > But "armada" is the name of xf86 "driver" only which then uses true DRM_ETNAVIV > kernel driver. That's why I'm a bit confused. > > And from what I see DRM_ETNAVIV happily works with either DRM_xxx frame-buffer > device be it DRM_IMX or DRM_UDL. Names are irrelevant and often just historical accidents. Armada was origianlly only for armada, but then extended to support etnaviv 2d core, then extended to IMX. That the kernel properly share buffers between all of them is kinda orthogonal to what armada-the-X11-driver supports. Yes graphics is complicated, that's why touching and changing random stuff you don't fully understand is not a good idea :-) -Daniel
--- a/src/armada_module.c +++ b/src/armada_module.c @@ -26,7 +26,7 @@ #define ARMADA_NAME "armada" #define ARMADA_DRIVER_NAME "armada" -#define DRM_MODULE_NAMES "armada-drm", "imx-drm" +#define DRM_MODULE_NAMES "armada-drm", "imx-drm", "udl" #define DRM_DEFAULT_BUS_ID NULL ------------------------>8-------------------------- Otherwise Xserver fails on start which is expected given "imx-drm" is intentionally removed.