Custom file system - startx delay

Hi,

I’m creating a custom filesystem for the tx1 using buildroot, I have tried to stick to the same versions of libraries and binaries as what is used in the ubuntu rootfs and I’m using the stock tx1 kernel. The drivers and libraries have been taken from Tegra210_Linux_R24.2.1_aarch64.tbz2

The tx1 boots up, the problem I have is that there is rather (~1000s) long delay when starting X windows, the log file show the delay to be at point of “Enabling 2D acceleration”, I guess I’m either using the wrong version of something or I’m not enabling something beforehand, any pointers would be gratefully received. 2D acceleration does work after X has eventually started.

Thanks

Kyle.

The complete Xorg log:

X.Org X Server 1.18.3
Release Date: 2016-04-04
[3014328.624] X Protocol Version 11, Revision 0
[3014328.627] Build Operating System: Linux 4.4.0-64-generic x86_64
[3014328.629] Current Operating System: Linux DELTA 3.10.96-tegra #1 SMP PREEMPT Wed Nov 9 19:42:57 PST 2016 aarch64
[3014328.630] Kernel command line: fbcon=map:0 console=tty0 console=ttyS0,115200n8 androidboot.modem=none androidboot.serialno=P2180A00P00940c003fd androidboot.security=non-secure tegraid=21.1.2.0.0 ddr_die=2048M@2048M ddr_die=2048M@4096M section=256M memtype=0 usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 debug_uartport=lsport,0 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=0x1000@0xff2bf000 nvdumper_reserved=0xff23f000 core_edp_mv=1125 core_edp_ma=4000 gpt android.kerneltype=normal androidboot.touch_vendor_id=0 androidboot.touch_panel_id=63 androidboot.touch_feature=0 androidboot.bootreason=pmc:software_reset,pmic:0x0 net.ifnames=0
[3014328.644] Build Date: 01 March 2017 09:21:38AM
[3014328.647]
[3014328.650] Current version of pixman: 0.32.8
[3014328.656] Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
[3014328.656] Markers: (–) probed, () from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[3014328.669] (==) Log file: “/home/Manager/.local/share/xorg/Xorg.0.log”, Time: Thu Mar 9 15:23:33 2017
[3014328.672] (==) Using config file: “/etc/X11/xorg.conf”
[3014328.675] (==) Using system config directory “/usr/share/X11/xorg.conf.d”
[3014328.676] (==) No Layout section. Using the first Screen section.
[3014328.676] (==) No screen section available. Using defaults.
[3014328.676] (
) |–>Screen “Default Screen Section” (0)
[3014328.676] () | |–>Monitor “”
[3014328.676] (==) No device specified for screen “Default Screen Section”.
Using the first device section listed.
[3014328.676] (
) | |–>Device “Tegra0”
[3014328.676] (==) No monitor specified for screen “Default Screen Section”.
Using a default monitor configuration.
[3014328.676] (==) Automatically adding devices
[3014328.676] (==) Automatically enabling devices
[3014328.676] (==) Automatically adding GPU devices
[3014328.676] (==) Max clients allowed: 256, resource mask: 0x1fffff
[3014328.676] (WW) The directory “/usr/share/fonts/X11//TTF/” does not exist.
[3014328.676] Entry deleted from font path.
[3014328.676] (WW) The directory “/usr/share/fonts/X11//OTF/” does not exist.
[3014328.676] Entry deleted from font path.
[3014328.676] (WW) The directory “/usr/share/fonts/X11//Type1/” does not exist.
[3014328.676] Entry deleted from font path.
[3014328.676] (WW) fonts.dir' not found (or not valid) in "/usr/share/fonts/X11//100dpi/". [3014328.676] Entry deleted from font path. [3014328.676] (Run 'mkfontdir' on "/usr/share/fonts/X11//100dpi/"). [3014328.676] (WW) fonts.dir’ not found (or not valid) in “/usr/share/fonts/X11//75dpi/”.
[3014328.676] Entry deleted from font path.
[3014328.676] (Run ‘mkfontdir’ on “/usr/share/fonts/X11//75dpi/”).
[3014328.676] (==) FontPath set to:
/usr/share/fonts/X11//misc/
[3014328.676] (==) ModulePath set to “/usr/lib/xorg/modules”
[3014328.676] (II) The server relies on udev to provide the list of input devices.
If no devices become available, reconfigure udev or disable AutoAddDevices.
[3014328.676] (II) Loader magic: 0x5cb2e0
[3014328.676] (II) Module ABI versions:
[3014328.676] X.Org ANSI C Emulation: 0.4
[3014328.676] X.Org Video Driver: 20.0
[3014328.676] X.Org XInput driver : 22.1
[3014328.676] X.Org Server Extension : 9.0
[3014328.677] (II) no primary bus or device found
[3014328.677] (WW) “dri” will not be loaded unless you’ve specified it to be loaded elsewhere.
[3014328.677] (II) “glx” will be loaded by default.
[3014328.677] (II) LoadModule: “extmod”
[3014328.677] (II) Module “extmod” already built-in
[3014328.677] (II) LoadModule: “glx”
[3014328.677] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[3014328.685] (II) Module glx: vendor=“NVIDIA Corporation”
[3014328.685] compiled for 4.0.2, module version = 1.0.0
[3014328.685] Module class: X.Org Server Extension
[3014328.685] (II) NVIDIA GLX Module 24.2.1 Release Build (integ_stage_rel) (buildbrain@mobile-u64-1072) Wed Nov 9 19:45:00 PST 2016
[3014328.685] (II) LoadModule: “nvidia”
[3014328.685] (II) Loading /usr/lib/xorg/modules/drivers/nvidia_drv.so
[3014328.686] (II) Module nvidia: vendor=“NVIDIA Corporation”
[3014328.686] compiled for 4.0.2, module version = 1.0.0
[3014328.686] Module class: X.Org Video Driver
[3014328.686] (II) NVIDIA dlloader X Driver 24.2.1 Release Build (integ_stage_rel) (buildbrain@mobile-u64-1072) Wed Nov 9 19:46:25 PST 2016
[3014328.686] (II) NVIDIA Unified Driver for all Supported NVIDIA GPUs
[3014328.686] (++) using VT number 1

[3014328.686] (–) controlling tty is VT number 1, auto-enabling KeepTty
[3014328.686] (WW) Falling back to old probe method for NVIDIA
[3014328.686] (II) Loading sub module “fb”
[3014328.686] (II) LoadModule: “fb”
[3014328.687] (II) Loading /usr/lib/xorg/modules/libfb.so
[3014328.687] (II) Module fb: vendor=“X.Org Foundation”
[3014328.687] compiled for 1.18.3, module version = 1.0.0
[3014328.687] ABI class: X.Org ANSI C Emulation, version 0.4
[3014328.687] (II) Loading sub module “wfb”
[3014328.687] (II) LoadModule: “wfb”
[3014328.687] (II) Loading /usr/lib/xorg/modules/libwfb.so
[3014328.688] (II) Module wfb: vendor=“X.Org Foundation”
[3014328.688] compiled for 1.18.3, module version = 1.0.0
[3014328.688] ABI class: X.Org ANSI C Emulation, version 0.4
[3014328.688] (II) Loading sub module “ramdac”
[3014328.688] (II) LoadModule: “ramdac”
[3014328.688] (II) Module “ramdac” already built-in
[3014328.688] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support
[3014328.689] (II) NVIDIA(0): Creating default Display subsection in Screen section
“Default Screen Section” for depth/fbbpp 24/32
[3014328.689] (==) NVIDIA(0): Depth 24, (==) framebuffer bpp 32
[3014328.689] (==) NVIDIA(0): RGB weight 888
[3014328.689] (==) NVIDIA(0): Default visual is TrueColor
[3014328.689] (==) NVIDIA(0): Using gamma correction (1.0, 1.0, 1.0)
[3014328.689] () NVIDIA(0): Option “AllowEmptyInitialConfiguration” “true”
[3014328.689] (
) NVIDIA(0): Enabling 2D acceleration
[3015695.409] (–) NVIDIA(0): Valid display device(s) on GPU-0 at SoC
[3015695.409] (–) NVIDIA(0): DFP-0
[3015695.409] (–) NVIDIA(0): Idek Iiyama PL2377 (DFP-0): connected
[3015695.409] (–) NVIDIA(0): Idek Iiyama PL2377 (DFP-0): External TMDS
[3015695.409] (II) NVIDIA(GPU-0): Found DRM driver drm-nvdc (0)
[3015695.409] (WW) NVIDIA(GPU-0): Unexpected DRM driver drm-nvdc found: ignoring
[3015695.410] (II) NVIDIA(0): NVIDIA GPU NVIDIA Tegra X1 (nvgpu) (NVIDIA Tegra X1) at SoC
[3015695.410] (II) NVIDIA(0): (GPU-0)
[3015695.410] (–) NVIDIA(0): Memory: 4090604 kBytes
[3015695.410] (–) NVIDIA(0): VideoBIOS:
[3015695.410] () NVIDIA(0): Using HorizSync/VertRefresh ranges from the EDID for display
[3015695.410] (
) NVIDIA(0): device Idek Iiyama PL2377 (DFP-0) (Using EDID frequencies
[3015695.410] () NVIDIA(0): has been enabled on all display devices.)
[3015695.410] (==) NVIDIA(0):
[3015695.410] (==) NVIDIA(0): No modes were requested; the default mode “nvidia-auto-select”
[3015695.410] (==) NVIDIA(0): will be used as the requested mode.
[3015695.410] (==) NVIDIA(0):
[3015695.410] (II) NVIDIA(0): Validated MetaModes:
[3015695.410] (II) NVIDIA(0): “DFP-0:nvidia-auto-select”
[3015695.410] (II) NVIDIA(0): Virtual screen size determined to be 1920 x 1080
[3015695.412] (–) NVIDIA(0): DPI set to (95, 94); computed from “UseEdidDpi” X config
[3015695.412] (–) NVIDIA(0): option
[3015695.412] (–) Depth 24 pixmap format is 32 bpp
[3015695.414] (II) NVIDIA: Reserving 3072.00 MB of virtual memory for indirect memory
[3015695.414] (II) NVIDIA: access.
[3015695.414] (WW) NVIDIA(GPU-0): Failed to enter interactive mode.
[3015695.417] (EE) NVIDIA(0): Failed to allocate NVIDIA Error Handler
[3015695.417] (II) NVIDIA(0): ACPI: failed to connect to the ACPI event daemon; the daemon
[3015695.417] (II) NVIDIA(0): may not be running or the “AcpidSocketPath” X
[3015695.417] (II) NVIDIA(0): configuration option may not be set correctly. When the
[3015695.417] (II) NVIDIA(0): ACPI event daemon is available, the NVIDIA X driver will
[3015695.417] (II) NVIDIA(0): try to use it to receive ACPI event notifications. For
[3015695.417] (II) NVIDIA(0): details, please see the “ConnectToAcpid” and
[3015695.417] (II) NVIDIA(0): “AcpidSocketPath” X configuration options in Appendix B: X
[3015695.417] (II) NVIDIA(0): Config Options in the README.
[3015695.486] (II) NVIDIA(0): Setting mode “DFP-0:nvidia-auto-select”
[3015695.942] (==) NVIDIA(0): Disabling shared memory pixmaps
[3015695.942] (==) NVIDIA(0): Backing store enabled
[3015695.942] (==) NVIDIA(0): Silken mouse enabled
[3015695.951] (==) NVIDIA(0): DPMS enabled
[3015695.952] (EE) NVIDIA(0): Failed to allocate NVIDIA Damage Manager
[3015695.952] (II) Loading sub module “dri2”
[3015695.952] (II) LoadModule: “dri2”
[3015695.952] (II) Module “dri2” already built-in
[3015695.952] (II) NVIDIA(0): [DRI2] Setup complete
[3015695.952] (II) NVIDIA(0): [DRI2] VDPAU driver: nvidia
[3015695.952] (–) RandR disabled
[3015695.952] (II) Initializing extension GLX
[3015695.952] (II) Indirect GLX disabled.
[3015696.007] (II) config/udev: Adding input device gpio-keys (/dev/input/event2)
[3015696.007] (
) gpio-keys: Applying InputClass “evdev keyboard catchall”
[3015696.007] (II) LoadModule: “evdev”
[3015696.007] (II) Loading /usr/lib/xorg/modules/input/evdev_drv.so
[3015696.031] (II) Module evdev: vendor=“X.Org Foundation”
[3015696.031] compiled for 1.18.3, module version = 2.10.1
[3015696.031] Module class: X.Org XInput Driver
[3015696.031] ABI class: X.Org XInput driver, version 22.1
[3015696.031] (II) Using input driver ‘evdev’ for ‘gpio-keys’
[3015696.031] () gpio-keys: always reports core events
[3015696.031] (
) evdev: gpio-keys: Device: “/dev/input/event2”
[3015696.031] (–) evdev: gpio-keys: Vendor 0x1 Product 0x1
[3015696.031] (–) evdev: gpio-keys: Found keys
[3015696.031] (II) evdev: gpio-keys: Configuring as keyboard
[3015696.031] () Option “config_info” “udev:/sys/devices/platform/gpio-keys.47/input/input2/event2”
[3015696.031] (II) XINPUT: Adding extended input device “gpio-keys” (type: KEYBOARD, id 6)
[3015696.031] (
) Option “xkb_rules” “evdev”
[3015696.032] (II) config/udev: Adding input device tegra-snd-t210ref-mobile-rt565x Headphone Jack (/dev/input/event1)
[3015696.032] () tegra-snd-t210ref-mobile-rt565x Headphone Jack: Applying InputClass “evdev keyboard catchall”
[3015696.032] (II) Using input driver ‘evdev’ for ‘tegra-snd-t210ref-mobile-rt565x Headphone Jack’
[3015696.032] (
) tegra-snd-t210ref-mobile-rt565x Headphone Jack: always reports core events
[3015696.032] () evdev: tegra-snd-t210ref-mobile-rt565x Headphone Jack: Device: “/dev/input/event1”
[3015696.032] (–) evdev: tegra-snd-t210ref-mobile-rt565x Headphone Jack: Vendor 0 Product 0
[3015696.032] (–) evdev: tegra-snd-t210ref-mobile-rt565x Headphone Jack: Found keys
[3015696.032] (II) evdev: tegra-snd-t210ref-mobile-rt565x Headphone Jack: Configuring as keyboard
[3015696.032] (
) Option “config_info” “udev:/sys/devices/platform/sound.27/sound/card1/input1/event1”
[3015696.032] (II) XINPUT: Adding extended input device “tegra-snd-t210ref-mobile-rt565x Headphone Jack” (type: KEYBOARD, id 7)
[3015696.032] () Option “xkb_rules” “evdev”
[3015696.034] (II) config/udev: Adding input device Logitech Unifying Device. Wireless PID:4024 (/dev/input/event0)
[3015696.034] (
) Logitech Unifying Device. Wireless PID:4024: Applying InputClass “evdev pointer catchall”
[3015696.034] () Logitech Unifying Device. Wireless PID:4024: Applying InputClass “evdev keyboard catchall”
[3015696.034] (II) Using input driver ‘evdev’ for ‘Logitech Unifying Device. Wireless PID:4024’
[3015696.034] (
) Logitech Unifying Device. Wireless PID:4024: always reports core events
[3015696.034] () evdev: Logitech Unifying Device. Wireless PID:4024: Device: “/dev/input/event0”
[3015696.034] (–) evdev: Logitech Unifying Device. Wireless PID:4024: Vendor 0x46d Product 0xc52b
[3015696.034] (–) evdev: Logitech Unifying Device. Wireless PID:4024: Found 20 mouse buttons
[3015696.034] (–) evdev: Logitech Unifying Device. Wireless PID:4024: Found scroll wheel(s)
[3015696.034] (–) evdev: Logitech Unifying Device. Wireless PID:4024: Found relative axes
[3015696.034] (–) evdev: Logitech Unifying Device. Wireless PID:4024: Found x and y relative axes
[3015696.034] (–) evdev: Logitech Unifying Device. Wireless PID:4024: Found absolute axes
[3015696.034] (II) evdev: Logitech Unifying Device. Wireless PID:4024: Forcing absolute x/y axes to exist.
[3015696.034] (–) evdev: Logitech Unifying Device. Wireless PID:4024: Found keys
[3015696.034] (II) evdev: Logitech Unifying Device. Wireless PID:4024: Configuring as mouse
[3015696.034] (II) evdev: Logitech Unifying Device. Wireless PID:4024: Configuring as keyboard
[3015696.034] (II) evdev: Logitech Unifying Device. Wireless PID:4024: Adding scrollwheel support
[3015696.034] (
) evdev: Logitech Unifying Device. Wireless PID:4024: YAxisMapping: buttons 4 and 5
[3015696.034] () evdev: Logitech Unifying Device. Wireless PID:4024: EmulateWheelButton: 4, EmulateWheelInertia: 10, EmulateWheelTimeout: 200
[3015696.034] (
) Option “config_info” “udev:/sys/devices/platform/tegra-xhci/usb1/1-3/1-3.4/1-3.4:1.2/0003:046D:C52B.0003/input/input0/event0”
[3015696.034] (II) XINPUT: Adding extended input device “Logitech Unifying Device. Wireless PID:4024” (type: KEYBOARD, id 8)
[3015696.034] () Option “xkb_rules” “evdev”
[3015696.034] (II) evdev: Logitech Unifying Device. Wireless PID:4024: initialized for relative axes.
[3015696.034] (WW) evdev: Logitech Unifying Device. Wireless PID:4024: ignoring absolute axes.
[3015696.034] (
) Logitech Unifying Device. Wireless PID:4024: (accel) keeping acceleration scheme 1
[3015696.034] () Logitech Unifying Device. Wireless PID:4024: (accel) acceleration profile 0
[3015696.034] (
) Logitech Unifying Device. Wireless PID:4024: (accel) acceleration factor: 2.000
[3015696.034] (**) Logitech Unifying Device. Wireless PID:4024: (accel) acceleration threshold: 4

So 1000s is many hours…is this really 1000s, or are we talking milliseconds? Either way it looks like what follows is correct, and that the next part of startup involves detecting devices. Just a thought that if devices from any port other than the desired port are configured to not probe via “/etc/X11/xorg.conf” configuration, then there will be no timeouts waiting for probe of empty ports you don’t use (I forget the syntax, but there is a simple block of text you could add to disable a particular port).

Yes, in this example 1367 seconds which is 22 minutes, I’ll have a look at disabling the other ports.

So it turns out to be a delay caused by this udev rule not being present:

stub for immediately telling the kernel that userspace firmware loading

failed; necessary to avoid long timeouts with CONFIG_FW_LOADER_USER_HELPER=y

SUBSYSTEM==“firmware”, ACTION==“add”, ATTR{loading}=“-1”