lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:   Mon, 24 Oct 2022 08:42:28 +0800
From:   kernel test robot <lkp@...el.com>
To:     Janne Grunau <j@...nau.net>
Cc:     kbuild-all@...ts.01.org, linux-kernel@...r.kernel.org
Subject: [asahilinux:gpu/rust-wip 1755/2027]
 drivers/gpu/drm/apple/dcp.c:240:9: warning: this 'if' clause does not
 guard...

tree:   https://github.com/AsahiLinux/linux gpu/rust-wip
head:   b7b1866d75e6b48630820b15ccc67dc198f8666f
commit: 312c2d94cd4212b2bb5b74f12ace9af01642ea4b [1755/2027] gpu: drm: apple: Fix DCP initialisation
config: arm64-allyesconfig
compiler: aarch64-linux-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/AsahiLinux/linux/commit/312c2d94cd4212b2bb5b74f12ace9af01642ea4b
        git remote add asahilinux https://github.com/AsahiLinux/linux
        git fetch --no-tags asahilinux gpu/rust-wip
        git checkout 312c2d94cd4212b2bb5b74f12ace9af01642ea4b
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash drivers/gpu/drm/apple/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@...el.com>

All warnings (new ones prefixed by >>):

   drivers/gpu/drm/apple/dcp.c:82:6: warning: no previous prototype for 'dcp_delayed_vblank' [-Wmissing-prototypes]
      82 | void dcp_delayed_vblank(struct work_struct *work)
         |      ^~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/apple/dcp.c: In function 'dcp_crtc_atomic_check':
   drivers/gpu/drm/apple/dcp.c:189:45: warning: variable 'old_state' set but not used [-Wunused-but-set-variable]
     189 |         struct drm_plane_state *new_state, *old_state;
         |                                             ^~~~~~~~~
   drivers/gpu/drm/apple/dcp.c: In function 'dcp_start':
>> drivers/gpu/drm/apple/dcp.c:240:9: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
     240 |         if (ret)
         |         ^~
   drivers/gpu/drm/apple/dcp.c:242:17: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
     242 |                 return ret;
         |                 ^~~~~~
   In file included from drivers/gpu/drm/apple/dcp.c:23:
   drivers/gpu/drm/apple/dcp.h: At top level:
   drivers/gpu/drm/apple/dcp.h:49:18: warning: 'dcp_formats' defined but not used [-Wunused-const-variable=]
      49 | static const u32 dcp_formats[] = {
         |                  ^~~~~~~~~~~


vim +/if +240 drivers/gpu/drm/apple/dcp.c

    76	
    77	/*
    78	 * Helper to send a DRM vblank event. We do not know how call swap_submit_dcp
    79	 * without surfaces. To avoid timeouts in drm_atomic_helper_wait_for_vblanks
    80	 * send a vblank event via a workqueue.
    81	 */
  > 82	void dcp_delayed_vblank(struct work_struct *work)
    83	{
    84		struct apple_dcp *dcp;
    85	
    86		dcp = container_of(work, struct apple_dcp, vblank_wq);
    87		mdelay(5);
    88		dcp_drm_crtc_vblank(dcp->crtc);
    89	}
    90	
    91	static void dcp_recv_msg(void *cookie, u8 endpoint, u64 message)
    92	{
    93		struct apple_dcp *dcp = cookie;
    94	
    95		trace_dcp_recv_msg(dcp, endpoint, message);
    96	
    97		switch (endpoint) {
    98		case IOMFB_ENDPOINT:
    99			return iomfb_recv_msg(dcp, message);
   100		default:
   101			WARN(endpoint, "unknown DCP endpoint %hhu", endpoint);
   102		}
   103	}
   104	
   105	static void dcp_rtk_crashed(void *cookie)
   106	{
   107		struct apple_dcp *dcp = cookie;
   108	
   109		dcp->crashed = true;
   110		dev_err(dcp->dev, "DCP has crashed");
   111		if (dcp->connector) {
   112			dcp->connector->connected = 0;
   113			schedule_work(&dcp->connector->hotplug_wq);
   114		}
   115	}
   116	
   117	static int dcp_rtk_shmem_setup(void *cookie, struct apple_rtkit_shmem *bfr)
   118	{
   119		struct apple_dcp *dcp = cookie;
   120	
   121		if (bfr->iova) {
   122			struct iommu_domain *domain =
   123				iommu_get_domain_for_dev(dcp->dev);
   124			phys_addr_t phy_addr;
   125	
   126			if (!domain)
   127				return -ENOMEM;
   128	
   129			// TODO: get map from device-tree
   130			phy_addr = iommu_iova_to_phys(domain,
   131						      bfr->iova & ~dcp->asc_dram_mask);
   132			if (!phy_addr)
   133				return -ENOMEM;
   134	
   135			// TODO: verify phy_addr, cache attribute
   136			bfr->buffer = memremap(phy_addr, bfr->size, MEMREMAP_WB);
   137			if (!bfr->buffer)
   138				return -ENOMEM;
   139	
   140			bfr->is_mapped = true;
   141			dev_info(dcp->dev,
   142				 "shmem_setup: iova: %lx -> pa: %lx -> iomem: %lx",
   143				 (uintptr_t)bfr->iova, (uintptr_t)phy_addr,
   144				 (uintptr_t)bfr->buffer);
   145		} else {
   146			bfr->buffer = dma_alloc_coherent(dcp->dev, bfr->size,
   147							 &bfr->iova, GFP_KERNEL);
   148			if (!bfr->buffer)
   149				return -ENOMEM;
   150	
   151			bfr->iova |= dcp->asc_dram_mask;
   152	
   153			dev_info(dcp->dev, "shmem_setup: iova: %lx, buffer: %lx",
   154				 (uintptr_t)bfr->iova, (uintptr_t)bfr->buffer);
   155		}
   156	
   157		return 0;
   158	}
   159	
   160	static void dcp_rtk_shmem_destroy(void *cookie, struct apple_rtkit_shmem *bfr)
   161	{
   162		struct apple_dcp *dcp = cookie;
   163	
   164		if (bfr->is_mapped)
   165			memunmap(bfr->buffer);
   166		else
   167			dma_free_coherent(dcp->dev, bfr->size, bfr->buffer,
   168					  bfr->iova & ~dcp->asc_dram_mask);
   169	}
   170	
   171	static struct apple_rtkit_ops rtkit_ops = {
   172		.crashed = dcp_rtk_crashed,
   173		.recv_message = dcp_recv_msg,
   174		.shmem_setup = dcp_rtk_shmem_setup,
   175		.shmem_destroy = dcp_rtk_shmem_destroy,
   176	};
   177	
   178	
   179	void dcp_send_message(struct apple_dcp *dcp, u8 endpoint, u64 message)
   180	{
   181		trace_dcp_send_msg(dcp, endpoint, message);
   182		apple_rtkit_send_message(dcp->rtk, endpoint, message, NULL,
   183					 false);
   184	}
   185	int dcp_crtc_atomic_check(struct drm_crtc *crtc, struct drm_atomic_state *state)
   186	{
   187		struct platform_device *pdev = to_apple_crtc(crtc)->dcp;
   188		struct apple_dcp *dcp = platform_get_drvdata(pdev);
   189		struct drm_plane_state *new_state, *old_state;
   190		struct drm_plane *plane;
   191		struct drm_crtc_state *crtc_state;
   192		int plane_idx, plane_count = 0;
   193		bool needs_modeset;
   194	
   195		if (dcp->crashed)
   196			return -EINVAL;
   197	
   198		crtc_state = drm_atomic_get_new_crtc_state(state, crtc);
   199	
   200		needs_modeset = drm_atomic_crtc_needs_modeset(crtc_state) || !dcp->valid_mode;
   201		if (!needs_modeset && !dcp->connector->connected) {
   202			dev_err(dcp->dev, "crtc_atomic_check: disconnected but no modeset");
   203			return -EINVAL;
   204		}
   205	
   206		for_each_oldnew_plane_in_state(state, plane, old_state, new_state, plane_idx) {
   207			/* skip planes not for this crtc */
   208			if (new_state->crtc != crtc)
   209				continue;
   210	
   211			plane_count += 1;
   212		}
   213	
   214		if (plane_count > DCP_MAX_PLANES) {
   215			dev_err(dcp->dev, "crtc_atomic_check: Blend supports only 2 layers!");
   216			return -EINVAL;
   217		}
   218	
   219		return 0;
   220	}
   221	EXPORT_SYMBOL_GPL(dcp_crtc_atomic_check);
   222	
   223	void dcp_link(struct platform_device *pdev, struct apple_crtc *crtc,
   224		      struct apple_connector *connector)
   225	{
   226		struct apple_dcp *dcp = platform_get_drvdata(pdev);
   227	
   228		dcp->crtc = crtc;
   229		dcp->connector = connector;
   230	}
   231	EXPORT_SYMBOL_GPL(dcp_link);
   232	
   233	int dcp_start(struct platform_device *pdev)
   234	{
   235		struct apple_dcp *dcp = platform_get_drvdata(pdev);
   236		int ret;
   237	
   238		/* start RTKit endpoints */
   239		ret = iomfb_start_rtkit(dcp);
 > 240		if (ret)
   241			dev_err(dcp->dev, "Failed to start IOMFB endpoint: %d", ret);
   242			return ret;
   243	
   244		return 0;
   245	}
   246	EXPORT_SYMBOL(dcp_start);
   247	

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

View attachment "config" of type "text/plain" (363092 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ