AnsweredAssumed Answered

Ignoring GPU with VG and FE2.0 message in etnaviv_gpu driver

Question asked by Ken Lin on May 25, 2016
Latest reply on Aug 26, 2016 by Boris Bignumb

Hi,

I used kernel 4.6 running on iMx6 dual core platform and  found some etnavi drivers error messages like “etnaviv-gpu 2204000.gpu: hw init failed: -6”, “etnaviv-gpu 2204000.gpu: Ignoring GPU with VG and FE2.0”.

Please see the related commit info below.

http://kernel.suse.com/cgit/kernel/commit/?h=v4.5-rc2&id=b98c66887ee1aec661dcb88fe17399d5d112ed98

 

Is there's anyone can comment on this ?

 

 

[    1.948713] [drm] Initialized drm 1.1.0 20060810

[    1.967629] etnaviv gpu-subsystem: bound 134000.gpu (ops gpu_ops)

[    1.973886] etnaviv gpu-subsystem: bound 130000.gpu (ops gpu_ops)

[    1.980077] etnaviv gpu-subsystem: bound 2204000.gpu (ops gpu_ops)

[    1.986307] etnaviv-gpu 134000.gpu: model: GC320, revision: 5007

[    2.025242] etnaviv-gpu 130000.gpu: model: GC2000, revision: 5108

[    2.067795] etnaviv-gpu 2204000.gpu: model: GC355, revision: 1215

[    2.073942] etnaviv-gpu 2204000.gpu: Ignoring GPU with VG and FE2.0

[    2.080230] etnaviv-gpu 2204000.gpu: hw init failed: -6

 

 

drivers/gpu/drm/etnaviv/etnaviv_gpu.c

int etnaviv_gpu_init(struct etnaviv_gpu *gpu)

{

        int ret, i;

        struct iommu_domain *iommu;

       enum etnaviv_iommu_version version;

        bool mmuv2;

 

        ret = pm_runtime_get_sync(gpu->dev);

        if (ret < 0)

return ret;

 

etnaviv_hw_identify(gpu);

 

        if (gpu->identity.model == 0) {

dev_err(gpu->dev, "Unknown GPU model\n");

ret = -ENXIO;

goto fail;

        }

 

        /* Exclude VG cores with FE2.0 */

        if (gpu->identity.features & chipFeatures_PIPE_VG &&

gpu->identity.features & chipFeatures_FE20) {

dev_info(gpu->dev, "Ignoring GPU with VG and FE2.0\n");

ret = -ENXIO;

goto fail;

        }

 

}

 

drivers/gpu/drm/etnaviv/etnaviv_drv.c

static void load_gpu(struct drm_device *dev)

{

        struct etnaviv_drm_private *priv = dev->dev_private;

        unsigned int i;

 

        for (i = 0; i < ETNA_MAX_PIPES; i++) {

struct etnaviv_gpu *g = priv->gpu[i];

 

if (g) {

int ret;

 

ret = etnaviv_gpu_init(g);

if (ret) {

dev_err(g->dev, "hw init failed: %d\n", ret);

priv->gpu[i] = NULL;

}

}

        }

}

Outcomes