This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DRA726: SGX issues with kernel 4.19

Part Number: DRA726

I am working from home because of the Coronavirus, so I am using my home login instead of the one I use at ACTIA Corp.

That way I can see messages on my Mac. I cannot access the ACTIA Web mail from Safari.

I have created a yocto build using recipes from SDK 6 (Automotive) . Everything seems to work fine except weston.

I thought that I might have messed up with my Poky based yocto so I use the TI SDK to compile the kernel and u-boot.

I then created a boot disk with the TI rootfs with my u-boot and kernel. I got identical results as I got with my own yocto build.

My next try was to use the Industrial SGX code to see if I get different results. I had to do a few changes to match the handling of mesa since the new code now supports mesa.

The results are a little similar except for the use of mesa

/var/log/weston.log

Date: 2020-03-24 UTC
[16:57:34.627] weston 5.0.0
               wayland.freedesktop.org
               Bug reports to: gitlab.freedesktop.org/.../
               Build: unknown (not built from git or tarball)
[16:57:34.627] Command line: weston --idle-time=0
[16:57:34.627] OS: Linux, 4.19.73-actia-g31275c05a1, #1 SMP PREEMPT Mon Mar 30 20:09:42 UTC 2020, armv7l
[16:57:34.633] Using config file '/etc//weston.ini'
[16:57:34.634] Output repaint window is 7 ms maximum.
[16:57:34.636] Loading module '/usr/lib/libweston-5/drm-backend.so'
[16:57:34.651] initializing drm backend
[16:57:34.685] using /dev/dri/card0
[16:57:34.685] DRM: supports universal planes
[16:57:34.685] DRM: supports atomic modesetting
[16:57:34.685] DRM: supports picture aspect ratio
[16:57:34.691] Loading module '/usr/lib/libweston-5/gl-renderer.so'
MESA-LOADER: failed to open kms_swrast (search paths /usr/lib/dri)
failed to load driver: kms_swrast
MESA-LOADER: failed to open swrast (search paths /usr/lib/dri)
failed to load swrast driver
[16:57:34.919] failed to initialize egl
[16:57:34.999] fatal: failed to create compositor backend
[16:57:34.999] Internal warning: debug scope 'drm-backend' has not been destroyed.
PVR:(Error): OpenServices: PVRDRMOpenRender failed [0, ]
PVR:(Error): PVRSRVConnect: Unable to open connection. [0, ]
PVR:(Error): Couldn't connect to services [0, ]
PVR:(Error): PVRDRIEGLGlobalDataInit: PVR Services initialisation failed [0, ]
PVR:(Error): PVRDRICreateScreenImpl: Couldn't create EGL global data [0, ]

I unloaded the module and reloaded it

root@actia-gd:/etc/init.d# ./rc.pvr stop
Unloaded PowerVR consumer services.
root@actia-gd:/etc/init.d# ./rc.pvr start
PVR:(Error): OpenServices: PVRDRMOpenRender failed [0, ]
PVR:(Error): PVRSRVInitSrvConnect: PVRSRVConnect failed [0, ]
PVR:(Error): SrvInit: PVRSRVInitSrvConnect failed (4) [0, ]
/usr/bin/pvrsrvctl: SrvInit failed (already initialized?) (err=PVRSRV_ERROR_INIT_FAILURE)

As previously I see the module is loaded

root@actia-gd:/etc/init.d# lsmod | grep pvr
pvrsrvkm              401408  0

root@actia-gd:/etc/init.d# modinfo pvrsrvkm
filename:       /lib/modules/4.19.73-actia-g31275c05a1/extra/pvrsrvkm.ko
license:        Dual MIT/GPL
author:         Imagination Technologies Ltd. <gpl-support@imgtec.com>
license:        Dual MIT/GPL
author:         Imagination Technologies Ltd. <gpl-support@imgtec.com>
srcversion:     533BB7E5866E52F63B9ACCB
alias:          of:N*T*Cti,am3352-sgx530C*
alias:          of:N*T*Cti,am3352-sgx530
alias:          of:N*T*Cti,am4376-sgx530C*
alias:          of:N*T*Cti,am4376-sgx530
alias:          of:N*T*Cti,dra7-sgx544C*
alias:          of:N*T*Cti,dra7-sgx544
alias:          of:N*T*Cti,am654-sgx544C*
alias:          of:N*T*Cti,am654-sgx544
depends:
name:           pvrsrvkm
vermagic:       4.19.73-actia-g31275c05a1 SMP preempt mod_unload modversions ARMv7 p2v8
parm:           gPVRDebugLevel:Sets the level of debug output (default 0x7) (uint)

kmstest works fine

root@actia-gd:/etc/init.d# kmstest
Connector 0/@54: DPI-1
  Crtc 0/@55: 1920x720 93.689 1920/115/5/20/- 720/32/3/3/- 60 (60.00) 0xa 0x48
  Plane 0/@35: 0,0-1920x720
    Fb 60 1920x720-XR24
press enter to exit


modeprint  modetest
root@actia-gd:/etc/init.d# modetest
trying to open device 'i915'...failed
trying to open device 'amdgpu'...failed
trying to open device 'radeon'...failed
trying to open device 'nouveau'...failed
trying to open device 'vmwgfx'...failed
trying to open device 'omapdrm'...done
Encoders:
id      crtc    type    possible crtcs  possible clones
53      55      TMDS    0x00000001      0x00000000

Connectors:
id      encoder status          name            size (mm)       modes   encoders
54      53      connected       DPI-1           1920x720                1       53
  modes:
        name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
  1920x720 60 1920 2035 2040 2060 720 752 755 758 93689 flags: nhsync, nvsync; type: preferred, driver
  props:
        1 EDID:
                flags: immutable blob
                blobs:

                value:
        2 DPMS:
                flags: enum
                enums: On=0 Standby=1 Suspend=2 Off=3
                value: 0
        5 link-status:
                flags: enum
                enums: Good=0 Bad=1
                value: 0
        6 non-desktop:
                flags: immutable range
                values: 0 1
                value: 0
        19 CRTC_ID:
                flags: object
                value: 55

CRTCs:
id      fb      pos     size
55      58      (0,0)   (1920x720)
  1920x720 60 1920 2035 2040 2060 720 752 755 758 93689 flags: nhsync, nvsync; type: preferred, driver
  props:
        20 ACTIVE:
                flags: range
                values: 0 1
                value: 1
        21 MODE_ID:
                flags: blob
                blobs:

                value:
                        f96d01008007f307f8070c080000d002
                        f002f302f60200003c0000000a000000
                        48000000313932307837323000000000
                        00000000000000000000000000000000
                        00000000
        18 OUT_FENCE_PTR:
                flags: range
                values: 0 18446744073709551615
                value: 0
        24 CTM:
                flags: blob
                blobs:

                value:
        25 GAMMA_LUT:
                flags: blob
                blobs:

                value:
        26 GAMMA_LUT_SIZE:
                flags: immutable range
                values: 0 4294967295
                value: 256
        31 background:
                flags: range
                values: 0 16777215
                value: 0
        32 trans-key-mode:
                flags: enum
                enums: disable=0 gfx-dst=1 vid-src=2
                value: 0
        33 trans-key:
                flags: range
                values: 0 16777215
                value: 0
        34 alpha_blender:
                flags: range
                values: 0 1
                value: 0
        36 rotation:
                flags: bitmask
                values: rotate-0=0x1 rotate-90=0x2 rotate-180=0x4 rotate-270=0x8 reflect-x=0x10 reflect-y=0x20
                value: 1
        28 zorder:
                flags: range
                values: 0 3
                value: 0

Planes:
id      crtc    fb      CRTC x,y        x,y     gamma size      possible crtcs
35      55      58      0,0             0,0     0               0x00000001
  formats: RX12 AR12 RG16 XR24 RG24 AR24 RA24 RX24 AR15 XR12 RA12 XR15
  props:
        7 type:
                flags: immutable enum
                enums: Overlay=0 Primary=1 Cursor=2
                value: 1
        16 FB_ID:
                flags: object
                value: 58
        17 IN_FENCE_FD:
                flags: signed range
                values: -1 2147483647
                value: -1
        19 CRTC_ID:
                flags: object
                value: 55
        12 CRTC_X:
                flags: signed range
                values: -2147483648 2147483647
                value: 0
        13 CRTC_Y:
                flags: signed range
                values: -2147483648 2147483647
                value: 0
        14 CRTC_W:
                flags: range
                values: 0 2147483647
                value: 1920
        15 CRTC_H:
                flags: range
                values: 0 2147483647
                value: 720
        8 SRC_X:
                flags: range
                values: 0 4294967295
                value: 0
        9 SRC_Y:
                flags: range
                values: 0 4294967295
                value: 0
        10 SRC_W:
                flags: range
                values: 0 4294967295
                value: 125829120
        11 SRC_H:
                flags: range
                values: 0 4294967295
                value: 47185920
        36 rotation:
                flags: bitmask
                values: rotate-0=0x1 rotate-90=0x2 rotate-180=0x4 rotate-270=0x8 reflect-x=0x10 reflect-y=0x20
                value: 1
        28 zorder:
                flags: range
                values: 0 3
                value: 0
        37 zpos:
                flags: range
                values: 0 3
                value: 0
        29 global_alpha:
                flags: range
                values: 0 255
                value: 255
        30 pre_mult_alpha:
                flags: range
                values: 0 1
                value: 0
38      0       0       0,0             0,0     0               0x00000001
  formats: RG16 RX12 YUYV AR15 RA24 NV12 RA12 XR24 RG24 UYVY AR12 XR15 AR24 XR12 RX24
  props:
        7 type:
                flags: immutable enum
                enums: Overlay=0 Primary=1 Cursor=2
                value: 0
        16 FB_ID:
                flags: object
                value: 0
        17 IN_FENCE_FD:
                flags: signed range
                values: -1 2147483647
                value: -1
        19 CRTC_ID:
                flags: object
                value: 0
        12 CRTC_X:
                flags: signed range
                values: -2147483648 2147483647
                value: 0
        13 CRTC_Y:
                flags: signed range
                values: -2147483648 2147483647
                value: 0
        14 CRTC_W:
                flags: range
                values: 0 2147483647
                value: 0
        15 CRTC_H:
                flags: range
                values: 0 2147483647
                value: 0
        8 SRC_X:
                flags: range
                values: 0 4294967295
                value: 0
        9 SRC_Y:
                flags: range
                values: 0 4294967295
                value: 0
        10 SRC_W:
                flags: range
                values: 0 4294967295
                value: 0
        11 SRC_H:
                flags: range
                values: 0 4294967295
                value: 0
        39 rotation:
                flags: bitmask
                values: rotate-0=0x1 rotate-90=0x2 rotate-180=0x4 rotate-270=0x8 reflect-x=0x10 reflect-y=0x20
                value: 1
        28 zorder:
                flags: range
                values: 0 3
                value: 1
        40 zpos:
                flags: range
                values: 0 3
                value: 1
        41 COLOR_ENCODING:
                flags: enum
                enums: ITU-R BT.601 YCbCr=0 ITU-R BT.709 YCbCr=1
                value: 0
        42 COLOR_RANGE:
                flags: enum
                enums: YCbCr limited range=0 YCbCr full range=1
                value: 1
        29 global_alpha:
                flags: range
                values: 0 255
                value: 255
        30 pre_mult_alpha:
                flags: range
                values: 0 1
                value: 0
43      0       0       0,0             0,0     0               0x00000001
  formats: RG16 RX12 YUYV AR15 RA24 NV12 RA12 XR24 RG24 UYVY AR12 XR15 AR24 XR12 RX24
  props:
        7 type:
                flags: immutable enum
                enums: Overlay=0 Primary=1 Cursor=2
                value: 0
        16 FB_ID:
                flags: object
                value: 0
        17 IN_FENCE_FD:
                flags: signed range
                values: -1 2147483647
                value: -1
        19 CRTC_ID:
                flags: object
                value: 0
        12 CRTC_X:
                flags: signed range
                values: -2147483648 2147483647
                value: 0
        13 CRTC_Y:
                flags: signed range
                values: -2147483648 2147483647
                value: 0
        14 CRTC_W:
                flags: range
                values: 0 2147483647
                value: 0
        15 CRTC_H:
                flags: range
                values: 0 2147483647
                value: 0
        8 SRC_X:
                flags: range
                values: 0 4294967295
                value: 0
        9 SRC_Y:
                flags: range
                values: 0 4294967295
                value: 0
        10 SRC_W:
                flags: range
                values: 0 4294967295
                value: 0
        11 SRC_H:
                flags: range
                values: 0 4294967295
                value: 0
        44 rotation:
                flags: bitmask
                values: rotate-0=0x1 rotate-90=0x2 rotate-180=0x4 rotate-270=0x8 reflect-x=0x10 reflect-y=0x20
                value: 1
        28 zorder:
                flags: range
                values: 0 3
                value: 2
        45 zpos:
                flags: range
                values: 0 3
                value: 2
        46 COLOR_ENCODING:
                flags: enum
                enums: ITU-R BT.601 YCbCr=0 ITU-R BT.709 YCbCr=1
                value: 0
        47 COLOR_RANGE:
                flags: enum
                enums: YCbCr limited range=0 YCbCr full range=1
                value: 1
        29 global_alpha:
                flags: range
                values: 0 255
                value: 255
        30 pre_mult_alpha:
                flags: range
                values: 0 1
                value: 0
48      0       0       0,0             0,0     0               0x00000001
  formats: RG16 RX12 YUYV AR15 RA24 NV12 RA12 XR24 RG24 UYVY AR12 XR15 AR24 XR12 RX24
  props:
        7 type:
                flags: immutable enum
                enums: Overlay=0 Primary=1 Cursor=2
                value: 0
        16 FB_ID:
                flags: object
                value: 0
        17 IN_FENCE_FD:
                flags: signed range
                values: -1 2147483647
                value: -1
        19 CRTC_ID:
                flags: object
                value: 0
        12 CRTC_X:
                flags: signed range
                values: -2147483648 2147483647
                value: 0
        13 CRTC_Y:
                flags: signed range
                values: -2147483648 2147483647
                value: 0
        14 CRTC_W:
                flags: range
                values: 0 2147483647
                value: 0
        15 CRTC_H:
                flags: range
                values: 0 2147483647
                value: 0
        8 SRC_X:
                flags: range
                values: 0 4294967295
                value: 0
        9 SRC_Y:
                flags: range
                values: 0 4294967295
                value: 0
        10 SRC_W:
                flags: range
                values: 0 4294967295
                value: 0
        11 SRC_H:
                flags: range
                values: 0 4294967295
                value: 0
        49 rotation:
                flags: bitmask
                values: rotate-0=0x1 rotate-90=0x2 rotate-180=0x4 rotate-270=0x8 reflect-x=0x10 reflect-y=0x20
                value: 1
        28 zorder:
                flags: range
                values: 0 3
                value: 3
        50 zpos:
                flags: range
                values: 0 3
                value: 3
        51 COLOR_ENCODING:
                flags: enum
                enums: ITU-R BT.601 YCbCr=0 ITU-R BT.709 YCbCr=1
                value: 0
        52 COLOR_RANGE:
                flags: enum
                enums: YCbCr limited range=0 YCbCr full range=1
                value: 1
        29 global_alpha:
                flags: range
                values: 0 255
                value: 255
        30 pre_mult_alpha:
                flags: range
                values: 0 1
                value: 0

Frame buffers:
id      size    pitch

Entry in devicetree for the 12 inch display

        lcd0: display {
                status = "okay";
                compatible = "actiagd,gd12inch", "panel-dpi";

                label = "lcd0";

                backlight = <&lcd_bl>;

                panel-timing {
                        clock-frequency = <93688800>;
                        hactive = <1920>;
                        vactive = <720>;
                        hfront-porch = <115>;
                        hback-porch = <20>;
                        hsync-len = <5>;
                        vback-porch = <3>;
                        vfront-porch = <32>;
                        vsync-len = <3>;
                        hsync-active = <0>;
                        vsync-active = <0>;
                        de-active = <1>;
                        pixelclk-active = <1>;
                };

                port {
                        lcd_in: endpoint {
                                remote-endpoint = <&dpi_lcd_out>;
                        };
                };
        };

7 inch display

        lcd0: display {
                status = "okay";
                compatible = "actiagd,gd7inch","panel-dpi";

                label = "lcd0";

                backlight = <&lcd_bl>;

                panel-timing {
                        clock-frequency = <66800000>;
                        hactive = <800>;
                        vactive = <1280>;
                        hfront-porch = <51>;
                        hback-porch = <10>;
                        hsync-len = <3>;
                        vback-porch = <2>;
                        vfront-porch = <4>;
                        vsync-len = <2>;
                        hsync-active = <0>;
                        vsync-active = <0>;
                        de-active = <1>;
                        pixelclk-active = <1>;
                };

                port {
                        lcd_in: endpoint {
                                remote-endpoint = <&dpi_lcd_out>;
                        };
                };
        };

In panel-simple.c

static const struct drm_display_mode actiagd_gd7inch_mode = {
        .clock = 66770,
        .hdisplay = 800,
        .hsync_start = 800 + 51,
        .hsync_end = 800 + 51 + 3,
        .htotal = 800 + 51 + 3 + 10,
        .vdisplay = 1280,
        .vsync_start = 1280 + 4,
        .vsync_end = 1280 + 4 + 2,
        .vtotal = 1280 + 4 + 2 + 2,
        .vrefresh = 60,
        .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC,
};

static const struct panel_desc actiagd_gd7inch = {
        .modes = &actiagd_gd7inch_mode,
        .num_modes = 1,
        .bpc = 8,
        .size = {
                .width = 800,
                .height = 1280,
        },
        .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
        .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE |
                     DRM_BUS_FLAG_PIXDATA_SAMPLE_NEGEDGE,
};

static const struct drm_display_mode actiagd_gd12inch_mode = {
        .clock = 93689,
        .hdisplay = 1920,
        .hsync_start = 1920 + 115,
        .hsync_end = 1920 + 115 + 5,
        .htotal = 1920 + 115 + 5 + 20,
        .vdisplay = 720,
        .vsync_start = 720 + 32,
        .vsync_end = 720 + 32 + 3,
        .vtotal = 720 + 32 + 3 + 3,
        .vrefresh = 60,
        .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC,
};

static const struct panel_desc actiagd_gd12inch = {
        .modes = &actiagd_gd12inch_mode,
        .num_modes = 1,
        .bpc = 8,
        .size = {
                .width = 1920,
                .height = 720,
        },
        .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
        .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE |
                     DRM_BUS_FLAG_PIXDATA_SAMPLE_NEGEDGE,
};

static const struct of_device_id platform_of_match[] = {
        {
                .compatible = "actiagd,gd7inch",
                .data = &actiagd_gd7inch,
        }, {
                .compatible = "actiagd,gd12inch",
                .data = &actiagd_gd12inch,
        }, {

What could be wrong?

Michel Catudal

ACTIA Corp