[chrome-os:chromeos-6.6 29/29] drivers/gpu/drm/mediatek/mtk_crtc.c:2029:27: error: 'struct mtk_crtc' has no member named 'fast_modeset_done'
kernel test robot <[email protected]> Wed, 05 Aug 2026 12:36:23 +0800
| Newsgroups | dev.linux.lists.oe-kbuild-all |
|---|---|
| Message-ID | <[email protected]> |
tree: https://chromium.googlesource.com/chromiumos/third_party/kernel chromeos-6.6 head: 1213fba9236ab86f264ce386ca98c8c671f6cb55 commit: d987a15a211de927eda62988be34f608ebeed65e [29/29] CHROMIUM: drm/mediatek: Fix spurious wakeup causing black screen config: arm64-randconfig-002-20260805 (https://download.01.org/0day-ci/archive/20260805/[email protected]/config) compiler: aarch64-linux-gcc (GCC) 8.5.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260805/[email protected]/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <[email protected]> | Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/ All errors (new ones prefixed by >>): drivers/gpu/drm/mediatek/mtk_crtc.c: In function 'mtk_crtc_update_srt_state': drivers/gpu/drm/mediatek/mtk_crtc.c:597:25: warning: variable 'state' set but not used [-Wunused-but-set-variable] struct mtk_crtc_state *state; ^~~~~ drivers/gpu/drm/mediatek/mtk_crtc.c: In function 'mtk_crtc_atomic_flush': drivers/gpu/drm/mediatek/mtk_crtc.c:1649:17: error: 'struct mtk_crtc' has no member named 'cmdq_client' if (!mtk_crtc->cmdq_client.chan) ^~ drivers/gpu/drm/mediatek/mtk_crtc.c: At top level: drivers/gpu/drm/mediatek/mtk_crtc.c:1656:5: warning: no previous prototype for 'mtk_crtc_atomic_check' [-Wmissing-prototypes] int mtk_crtc_atomic_check(struct drm_crtc *crtc, struct drm_atomic_state *state) ^~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/mediatek/mtk_crtc.c: In function 'mtk_crtc_create': >> drivers/gpu/drm/mediatek/mtk_crtc.c:2029:27: error: 'struct mtk_crtc' has no member named 'fast_modeset_done' init_completion(&mtk_crtc->fast_modeset_done); ^~ At top level: drivers/gpu/drm/mediatek/mtk_crtc.c:557:13: warning: 'mtk_crtc_post_update_hrt_state' defined but not used [-Wunused-function] static void mtk_crtc_post_update_hrt_state(struct mtk_crtc *mtk_crtc) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vim +2029 drivers/gpu/drm/mediatek/mtk_crtc.c 1813 1814 int mtk_crtc_create(struct drm_device *drm_dev, enum mtk_crtc_path path_sel) 1815 { 1816 struct mtk_drm_private *priv = drm_dev->dev_private; 1817 struct device *dev = drm_dev->dev; 1818 struct mtk_crtc *mtk_crtc; 1819 unsigned int num_comp_planes = 0; 1820 int ret; 1821 int i, j, k; 1822 bool has_ctm = false; 1823 uint gamma_lut_size = 0; 1824 struct drm_crtc *tmp; 1825 int crtc_i = 0; 1826 struct mtk_drm_private *subsys_priv; 1827 struct mtk_crtc_comp_info path[DDP_COMPONENT_ID_MAX]; 1828 unsigned int path_len = 0; 1829 const struct mtk_drm_route *conn_routes = NULL; 1830 unsigned int num_conn_routes = 0; 1831 enum mtk_drm_mmsys conn_mmsys; 1832 1833 drm_for_each_crtc(tmp, drm_dev) 1834 crtc_i++; 1835 1836 for (j = 0; j < priv->data->mmsys_dev_num; j++) { 1837 for (k = 0; k < MAX_MMSYS; k++) { 1838 const unsigned int *subsys_path; 1839 unsigned int subsys_path_len = 0; 1840 unsigned int order = 0; 1841 1842 subsys_priv = priv->all_drm_private[k]; 1843 if (!subsys_priv) 1844 continue; 1845 1846 if (path_sel == CRTC_MAIN) { 1847 subsys_path = subsys_priv->data->main_path; 1848 subsys_path_len = subsys_priv->data->main_len; 1849 order = subsys_priv->data->main_order; 1850 } else if (path_sel == CRTC_EXT) { 1851 subsys_path = subsys_priv->data->ext_path; 1852 subsys_path_len = subsys_priv->data->ext_len; 1853 order = subsys_priv->data->ext_order; 1854 } else if (path_sel == CRTC_THIRD) { 1855 subsys_path = subsys_priv->data->third_path; 1856 subsys_path_len = subsys_priv->data->third_len; 1857 order = subsys_priv->data->third_order; 1858 } 1859 1860 if (subsys_priv->data->num_conn_routes) { 1861 conn_routes = subsys_priv->data->conn_routes; 1862 num_conn_routes = subsys_priv->data->num_conn_routes; 1863 conn_mmsys = subsys_priv->data->mmsys_id; 1864 } 1865 1866 if (j != order) 1867 continue; 1868 if (!subsys_path_len) 1869 continue; 1870 1871 for (i = 0; i < subsys_path_len; i++) { 1872 path[path_len].sys = subsys_priv->data->mmsys_id; 1873 path[path_len].comp_id = subsys_path[i]; 1874 path_len++; 1875 } 1876 } 1877 } 1878 1879 if (!path_len) 1880 return 0; 1881 1882 if (num_conn_routes) { 1883 for (i = 0; i < num_conn_routes; i++) 1884 if (conn_routes->crtc_id == crtc_i) 1885 break; 1886 if (i == num_conn_routes) { 1887 num_conn_routes = 0; 1888 conn_routes = NULL; 1889 } 1890 } 1891 1892 for (i = 0; i < path_len; i++) { 1893 enum mtk_ddp_comp_id comp_id = path[i].comp_id; 1894 struct device_node *node; 1895 struct mtk_ddp_comp *comp; 1896 1897 priv = priv->all_drm_private[path[i].sys]; 1898 node = priv->comp_node[comp_id]; 1899 comp = &priv->ddp_comp[comp_id]; 1900 1901 /* Not all drm components have a DTS device node, such as ovl_adaptor, 1902 * which is the drm bring up sub driver 1903 */ 1904 if (!node && comp_id != DDP_COMPONENT_DRM_OVL_ADAPTOR && 1905 comp_id != DDP_COMPONENT_DRM_OVLSYS_ADAPTOR0 && 1906 comp_id != DDP_COMPONENT_DRM_OVLSYS_ADAPTOR1 && 1907 comp_id != DDP_COMPONENT_DRM_OVLSYS_ADAPTOR2 && 1908 mtk_ddp_comp_get_type(comp_id) != MTK_DISP_VIRTUAL) { 1909 dev_info(dev, 1910 "Not creating crtc %d because component %d is disabled or missing\n", 1911 crtc_i, comp_id); 1912 return 0; 1913 } 1914 1915 if (!comp->dev && mtk_ddp_comp_get_type(comp_id) != MTK_DISP_VIRTUAL) { 1916 dev_err(dev, "Component %pOF not initialized\n", node); 1917 return -ENODEV; 1918 } 1919 } 1920 1921 mtk_crtc = devm_kzalloc(dev, sizeof(*mtk_crtc), GFP_KERNEL); 1922 if (!mtk_crtc) 1923 return -ENOMEM; 1924 1925 mtk_crtc->qos_ctx = devm_kzalloc(dev, sizeof(struct mtk_crtc_qos_ctx), GFP_KERNEL); 1926 if (!mtk_crtc->qos_ctx) 1927 return -ENOMEM; 1928 1929 for (i = 0; i < MAX_MMSYS; i++) 1930 if (priv->all_drm_private[i]) 1931 mtk_crtc->mmsys_dev[i] = priv->all_drm_private[i]->mmsys_dev; 1932 mtk_crtc->ddp_comp_nr = path_len; 1933 mtk_crtc->ddp_comp = devm_kcalloc(dev, 1934 mtk_crtc->ddp_comp_nr + (conn_routes ? 1 : 0), 1935 sizeof(*mtk_crtc->ddp_comp), 1936 GFP_KERNEL); 1937 if (!mtk_crtc->ddp_comp) 1938 return -ENOMEM; 1939 1940 mtk_crtc->ddp_comp_sys = devm_kmalloc_array(dev, mtk_crtc->ddp_comp_nr + 1941 (conn_routes ? 1 : 0), 1942 sizeof(*mtk_crtc->ddp_comp_sys), GFP_KERNEL); 1943 if (!mtk_crtc->ddp_comp_sys) 1944 return -ENOMEM; 1945 1946 for (i = 0; i < MAX_MMSYS; i++) { 1947 if (!priv->all_drm_private[i]) 1948 continue; 1949 1950 priv = priv->all_drm_private[i]; 1951 mtk_crtc->mutex[i] = mtk_mutex_get(priv->mutex_dev); 1952 if (IS_ERR(mtk_crtc->mutex[i])) { 1953 ret = PTR_ERR(mtk_crtc->mutex[i]); 1954 dev_err(dev, "Failed to get mutex: %d\n", ret); 1955 return ret; 1956 } 1957 } 1958 1959 for (i = 0; i < mtk_crtc->ddp_comp_nr; i++) { 1960 unsigned int comp_id = path[i].comp_id; 1961 struct mtk_ddp_comp *comp; 1962 1963 priv = priv->all_drm_private[path[i].sys]; 1964 comp = &priv->ddp_comp[comp_id]; 1965 if (mtk_ddp_comp_get_type(comp_id) == MTK_DISP_VIRTUAL) 1966 comp->id = comp_id; 1967 mtk_crtc->ddp_comp[i] = comp; 1968 mtk_crtc->ddp_comp_sys[i] = path[i].sys; 1969 mtk_crtc->exist[path[i].sys] = true; 1970 1971 if (comp->funcs) { 1972 if (comp->funcs->gamma_set && comp->funcs->gamma_get_lut_size) { 1973 unsigned int lut_sz = mtk_ddp_gamma_get_lut_size(comp); 1974 1975 if (lut_sz) 1976 gamma_lut_size = lut_sz; 1977 } 1978 1979 if (comp->funcs->ctm_set) 1980 has_ctm = true; 1981 1982 1983 if (comp->funcs->crc_cnt && comp->funcs->crc_cnt(comp->dev) && 1984 !mtk_crtc->crc_provider) { 1985 mtk_crtc->crc_provider = comp; 1986 comp->funcs->crc_attach(comp->dev, mtk_crtc); 1987 } 1988 1989 } 1990 1991 mtk_ddp_comp_register_vblank_cb(comp, mtk_crtc_ddp_irq, 1992 &mtk_crtc->base); 1993 } 1994 1995 for (i = 0; i < mtk_crtc->ddp_comp_nr; i++) 1996 num_comp_planes += mtk_crtc_num_comp_planes(mtk_crtc, i); 1997 1998 mtk_crtc->planes = devm_kcalloc(dev, num_comp_planes, 1999 sizeof(struct drm_plane), GFP_KERNEL); 2000 if (!mtk_crtc->planes) 2001 return -ENOMEM; 2002 2003 for (i = 0; i < mtk_crtc->ddp_comp_nr; i++) { 2004 ret = mtk_crtc_init_comp_planes(drm_dev, mtk_crtc, i, crtc_i); 2005 if (ret) 2006 return ret; 2007 } 2008 2009 /* 2010 * Default to use the first component as the dma dev. 2011 * In the case of ovl_adaptor sub driver, it needs to use the 2012 * dma_dev_get function to get representative dma dev. 2013 */ 2014 priv = priv->all_drm_private[path[0].sys]; 2015 mtk_crtc->dma_dev = mtk_ddp_comp_dma_dev_get(&priv->ddp_comp[path[0].comp_id]); 2016 2017 mtk_crtc->vdisp_ao_dev = priv->vdisp_ao_dev; 2018 mtk_crtc->dpc_dev = priv->dpc_dev; 2019 mtk_crtc->pmqos_dev = priv->pmqos_dev; 2020 ret = mtk_crtc_init(drm_dev, mtk_crtc, crtc_i); 2021 if (ret < 0) 2022 return ret; 2023 2024 if (gamma_lut_size) 2025 drm_mode_crtc_set_gamma_size(&mtk_crtc->base, gamma_lut_size); 2026 drm_crtc_enable_color_mgmt(&mtk_crtc->base, 0, has_ctm, gamma_lut_size); 2027 mutex_init(&mtk_crtc->hw_lock); 2028 spin_lock_init(&mtk_crtc->config_lock); > 2029 init_completion(&mtk_crtc->fast_modeset_done); 2030 2031 if (mtk_crtc->layer_nr) { 2032 for (i = 0; i < mtk_crtc->layer_nr; i++) 2033 mtk_ddp_comp_channel_id_get(&priv->ddp_comp[path[0].comp_id], i, 2034 &mtk_crtc->qos_ctx->plane_channel_id[i]); 2035 } 2036 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki