[<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