From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: Re: [PATCH v2] drm/bridge: display-connector: implement the error path of .probe()
Date: Sat, 21 Dec 2024 21:49:19 +0800 [thread overview]
Message-ID: <202412212129.OT9Bt8p0-lkp@intel.com> (raw)
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20241214012652.2104807-1-joe@pf.is.s.u-tokyo.ac.jp>
References: <20241214012652.2104807-1-joe@pf.is.s.u-tokyo.ac.jp>
TO: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
TO: andrzej.hajda@intel.com
TO: neil.armstrong@linaro.org
TO: rfoss@kernel.org
TO: Laurent.pinchart@ideasonboard.com
TO: jonas@kwiboo.se
TO: jernej.skrabec@gmail.com
TO: maarten.lankhorst@linux.intel.com
TO: mripard@kernel.org
TO: tzimmermann@suse.de
TO: airlied@gmail.com
TO: simona@ffwll.ch
CC: dri-devel@lists.freedesktop.org
CC: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
Hi Joe,
kernel test robot noticed the following build warnings:
[auto build test WARNING on linus/master]
[also build test WARNING on drm-misc/drm-misc-next v6.13-rc3 next-20241220]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Joe-Hattori/drm-bridge-display-connector-implement-the-error-path-of-probe/20241214-230605
base: linus/master
patch link: https://lore.kernel.org/r/20241214012652.2104807-1-joe%40pf.is.s.u-tokyo.ac.jp
patch subject: [PATCH v2] drm/bridge: display-connector: implement the error path of .probe()
:::::: branch date: 7 days ago
:::::: commit date: 7 days ago
config: x86_64-randconfig-161-20241220 (https://download.01.org/0day-ci/archive/20241221/202412212129.OT9Bt8p0-lkp@intel.com/config)
compiler: clang version 19.1.3 (https://github.com/llvm/llvm-project ab51eccf88f5321e7c60591c5546b254b6afab99)
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 <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202412212129.OT9Bt8p0-lkp@intel.com/
smatch warnings:
drivers/gpu/drm/bridge/display-connector.c:397 display_connector_probe() error: uninitialized symbol 'ret'.
vim +/ret +397 drivers/gpu/drm/bridge/display-connector.c
6eb6b6f0a012993 Dmitry Baryshkov 2023-05-31 204
0c275c30176b2e7 Laurent Pinchart 2020-02-26 205 static int display_connector_probe(struct platform_device *pdev)
0c275c30176b2e7 Laurent Pinchart 2020-02-26 206 {
0c275c30176b2e7 Laurent Pinchart 2020-02-26 207 struct display_connector *conn;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 208 unsigned int type;
189723fbe9aca18 Dan Carpenter 2021-10-13 209 const char *label = NULL;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 210 int ret;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 211
0c275c30176b2e7 Laurent Pinchart 2020-02-26 212 conn = devm_kzalloc(&pdev->dev, sizeof(*conn), GFP_KERNEL);
0c275c30176b2e7 Laurent Pinchart 2020-02-26 213 if (!conn)
0c275c30176b2e7 Laurent Pinchart 2020-02-26 214 return -ENOMEM;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 215
0c275c30176b2e7 Laurent Pinchart 2020-02-26 216 platform_set_drvdata(pdev, conn);
0c275c30176b2e7 Laurent Pinchart 2020-02-26 217
0c275c30176b2e7 Laurent Pinchart 2020-02-26 218 type = (uintptr_t)of_device_get_match_data(&pdev->dev);
0c275c30176b2e7 Laurent Pinchart 2020-02-26 219
0c275c30176b2e7 Laurent Pinchart 2020-02-26 220 /* Get the exact connector type. */
0c275c30176b2e7 Laurent Pinchart 2020-02-26 221 switch (type) {
0c275c30176b2e7 Laurent Pinchart 2020-02-26 222 case DRM_MODE_CONNECTOR_DVII: {
0c275c30176b2e7 Laurent Pinchart 2020-02-26 223 bool analog, digital;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 224
0c275c30176b2e7 Laurent Pinchart 2020-02-26 225 analog = of_property_read_bool(pdev->dev.of_node, "analog");
0c275c30176b2e7 Laurent Pinchart 2020-02-26 226 digital = of_property_read_bool(pdev->dev.of_node, "digital");
0c275c30176b2e7 Laurent Pinchart 2020-02-26 227 if (analog && !digital) {
0c275c30176b2e7 Laurent Pinchart 2020-02-26 228 conn->bridge.type = DRM_MODE_CONNECTOR_DVIA;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 229 } else if (!analog && digital) {
0c275c30176b2e7 Laurent Pinchart 2020-02-26 230 conn->bridge.type = DRM_MODE_CONNECTOR_DVID;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 231 } else if (analog && digital) {
0c275c30176b2e7 Laurent Pinchart 2020-02-26 232 conn->bridge.type = DRM_MODE_CONNECTOR_DVII;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 233 } else {
0c275c30176b2e7 Laurent Pinchart 2020-02-26 234 dev_err(&pdev->dev, "DVI connector with no type\n");
0c275c30176b2e7 Laurent Pinchart 2020-02-26 235 return -EINVAL;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 236 }
0c275c30176b2e7 Laurent Pinchart 2020-02-26 237 break;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 238 }
0c275c30176b2e7 Laurent Pinchart 2020-02-26 239
0c275c30176b2e7 Laurent Pinchart 2020-02-26 240 case DRM_MODE_CONNECTOR_HDMIA: {
0c275c30176b2e7 Laurent Pinchart 2020-02-26 241 const char *hdmi_type;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 242
0c275c30176b2e7 Laurent Pinchart 2020-02-26 243 ret = of_property_read_string(pdev->dev.of_node, "type",
0c275c30176b2e7 Laurent Pinchart 2020-02-26 244 &hdmi_type);
0c275c30176b2e7 Laurent Pinchart 2020-02-26 245 if (ret < 0) {
0c275c30176b2e7 Laurent Pinchart 2020-02-26 246 dev_err(&pdev->dev, "HDMI connector with no type\n");
0c275c30176b2e7 Laurent Pinchart 2020-02-26 247 return -EINVAL;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 248 }
0c275c30176b2e7 Laurent Pinchart 2020-02-26 249
0c275c30176b2e7 Laurent Pinchart 2020-02-26 250 if (!strcmp(hdmi_type, "a") || !strcmp(hdmi_type, "c") ||
0c275c30176b2e7 Laurent Pinchart 2020-02-26 251 !strcmp(hdmi_type, "d") || !strcmp(hdmi_type, "e")) {
0c275c30176b2e7 Laurent Pinchart 2020-02-26 252 conn->bridge.type = DRM_MODE_CONNECTOR_HDMIA;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 253 } else if (!strcmp(hdmi_type, "b")) {
0c275c30176b2e7 Laurent Pinchart 2020-02-26 254 conn->bridge.type = DRM_MODE_CONNECTOR_HDMIB;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 255 } else {
0c275c30176b2e7 Laurent Pinchart 2020-02-26 256 dev_err(&pdev->dev,
0c275c30176b2e7 Laurent Pinchart 2020-02-26 257 "Unsupported HDMI connector type '%s'\n",
0c275c30176b2e7 Laurent Pinchart 2020-02-26 258 hdmi_type);
0c275c30176b2e7 Laurent Pinchart 2020-02-26 259 return -EINVAL;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 260 }
0c275c30176b2e7 Laurent Pinchart 2020-02-26 261
0c275c30176b2e7 Laurent Pinchart 2020-02-26 262 break;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 263 }
0c275c30176b2e7 Laurent Pinchart 2020-02-26 264
0c275c30176b2e7 Laurent Pinchart 2020-02-26 265 default:
0c275c30176b2e7 Laurent Pinchart 2020-02-26 266 conn->bridge.type = type;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 267 break;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 268 }
0c275c30176b2e7 Laurent Pinchart 2020-02-26 269
0c275c30176b2e7 Laurent Pinchart 2020-02-26 270 /* All the supported connector types support interlaced modes. */
0c275c30176b2e7 Laurent Pinchart 2020-02-26 271 conn->bridge.interlace_allowed = true;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 272
d5cd8280c52bad4 Dmitry Baryshkov 2024-10-19 273 if (type == DRM_MODE_CONNECTOR_HDMIA ||
d5cd8280c52bad4 Dmitry Baryshkov 2024-10-19 274 type == DRM_MODE_CONNECTOR_DisplayPort)
d5cd8280c52bad4 Dmitry Baryshkov 2024-10-19 275 conn->bridge.ycbcr_420_allowed = true;
d5cd8280c52bad4 Dmitry Baryshkov 2024-10-19 276
0c275c30176b2e7 Laurent Pinchart 2020-02-26 277 /* Get the optional connector label. */
0c275c30176b2e7 Laurent Pinchart 2020-02-26 278 of_property_read_string(pdev->dev.of_node, "label", &label);
0c275c30176b2e7 Laurent Pinchart 2020-02-26 279
0c275c30176b2e7 Laurent Pinchart 2020-02-26 280 /*
2e2bf3a5584de24 Tomi Valkeinen 2020-11-30 281 * Get the HPD GPIO for DVI, HDMI and DP connectors. If the GPIO can provide
0c275c30176b2e7 Laurent Pinchart 2020-02-26 282 * edge interrupts, register an interrupt handler.
0c275c30176b2e7 Laurent Pinchart 2020-02-26 283 */
0c275c30176b2e7 Laurent Pinchart 2020-02-26 284 if (type == DRM_MODE_CONNECTOR_DVII ||
2e2bf3a5584de24 Tomi Valkeinen 2020-11-30 285 type == DRM_MODE_CONNECTOR_HDMIA ||
2e2bf3a5584de24 Tomi Valkeinen 2020-11-30 286 type == DRM_MODE_CONNECTOR_DisplayPort) {
0c275c30176b2e7 Laurent Pinchart 2020-02-26 287 conn->hpd_gpio = devm_gpiod_get_optional(&pdev->dev, "hpd",
0c275c30176b2e7 Laurent Pinchart 2020-02-26 288 GPIOD_IN);
ed8f4e1002781c4 Ye Xingchen 2023-03-22 289 if (IS_ERR(conn->hpd_gpio))
ed8f4e1002781c4 Ye Xingchen 2023-03-22 290 return dev_err_probe(&pdev->dev, PTR_ERR(conn->hpd_gpio),
0c275c30176b2e7 Laurent Pinchart 2020-02-26 291 "Unable to retrieve HPD GPIO\n");
0c275c30176b2e7 Laurent Pinchart 2020-02-26 292
0c275c30176b2e7 Laurent Pinchart 2020-02-26 293 conn->hpd_irq = gpiod_to_irq(conn->hpd_gpio);
0c275c30176b2e7 Laurent Pinchart 2020-02-26 294 } else {
0c275c30176b2e7 Laurent Pinchart 2020-02-26 295 conn->hpd_irq = -EINVAL;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 296 }
0c275c30176b2e7 Laurent Pinchart 2020-02-26 297
0c275c30176b2e7 Laurent Pinchart 2020-02-26 298 if (conn->hpd_irq >= 0) {
0c275c30176b2e7 Laurent Pinchart 2020-02-26 299 ret = devm_request_threaded_irq(&pdev->dev, conn->hpd_irq,
0c275c30176b2e7 Laurent Pinchart 2020-02-26 300 NULL, display_connector_hpd_irq,
0c275c30176b2e7 Laurent Pinchart 2020-02-26 301 IRQF_TRIGGER_RISING |
0c275c30176b2e7 Laurent Pinchart 2020-02-26 302 IRQF_TRIGGER_FALLING |
0c275c30176b2e7 Laurent Pinchart 2020-02-26 303 IRQF_ONESHOT,
0c275c30176b2e7 Laurent Pinchart 2020-02-26 304 "HPD", conn);
0c275c30176b2e7 Laurent Pinchart 2020-02-26 305 if (ret) {
0c275c30176b2e7 Laurent Pinchart 2020-02-26 306 dev_info(&pdev->dev,
0c275c30176b2e7 Laurent Pinchart 2020-02-26 307 "Failed to request HPD edge interrupt, falling back to polling\n");
0c275c30176b2e7 Laurent Pinchart 2020-02-26 308 conn->hpd_irq = -EINVAL;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 309 }
0c275c30176b2e7 Laurent Pinchart 2020-02-26 310 }
0c275c30176b2e7 Laurent Pinchart 2020-02-26 311
0c275c30176b2e7 Laurent Pinchart 2020-02-26 312 /* Retrieve the DDC I2C adapter for DVI, HDMI and VGA connectors. */
0c275c30176b2e7 Laurent Pinchart 2020-02-26 313 if (type == DRM_MODE_CONNECTOR_DVII ||
0c275c30176b2e7 Laurent Pinchart 2020-02-26 314 type == DRM_MODE_CONNECTOR_HDMIA ||
0c275c30176b2e7 Laurent Pinchart 2020-02-26 315 type == DRM_MODE_CONNECTOR_VGA) {
0c275c30176b2e7 Laurent Pinchart 2020-02-26 316 struct device_node *phandle;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 317
0c275c30176b2e7 Laurent Pinchart 2020-02-26 318 phandle = of_parse_phandle(pdev->dev.of_node, "ddc-i2c-bus", 0);
0c275c30176b2e7 Laurent Pinchart 2020-02-26 319 if (phandle) {
0c275c30176b2e7 Laurent Pinchart 2020-02-26 320 conn->bridge.ddc = of_get_i2c_adapter_by_node(phandle);
0c275c30176b2e7 Laurent Pinchart 2020-02-26 321 of_node_put(phandle);
0c275c30176b2e7 Laurent Pinchart 2020-02-26 322 if (!conn->bridge.ddc)
0c275c30176b2e7 Laurent Pinchart 2020-02-26 323 return -EPROBE_DEFER;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 324 } else {
0c275c30176b2e7 Laurent Pinchart 2020-02-26 325 dev_dbg(&pdev->dev,
0c275c30176b2e7 Laurent Pinchart 2020-02-26 326 "No I2C bus specified, disabling EDID readout\n");
0c275c30176b2e7 Laurent Pinchart 2020-02-26 327 }
0c275c30176b2e7 Laurent Pinchart 2020-02-26 328 }
0c275c30176b2e7 Laurent Pinchart 2020-02-26 329
2e2bf3a5584de24 Tomi Valkeinen 2020-11-30 330 /* Get the DP PWR for DP connector. */
2e2bf3a5584de24 Tomi Valkeinen 2020-11-30 331 if (type == DRM_MODE_CONNECTOR_DisplayPort) {
2e2bf3a5584de24 Tomi Valkeinen 2020-11-30 332 int ret;
2e2bf3a5584de24 Tomi Valkeinen 2020-11-30 333
6eb6b6f0a012993 Dmitry Baryshkov 2023-05-31 334 ret = display_connector_get_supply(pdev, conn, "dp-pwr");
a7afd1756ad7c06 Joe Hattori 2024-12-14 335 if (ret < 0) {
a7afd1756ad7c06 Joe Hattori 2024-12-14 336 ret = dev_err_probe(&pdev->dev, ret,
a7afd1756ad7c06 Joe Hattori 2024-12-14 337 "failed to get DP PWR regulator\n");
a7afd1756ad7c06 Joe Hattori 2024-12-14 338 goto err_put;
a7afd1756ad7c06 Joe Hattori 2024-12-14 339 }
2e2bf3a5584de24 Tomi Valkeinen 2020-11-30 340 }
2e2bf3a5584de24 Tomi Valkeinen 2020-11-30 341
6de79dd3a920a13 H. Nikolaus Schaller 2022-04-07 342 /* enable DDC */
6de79dd3a920a13 H. Nikolaus Schaller 2022-04-07 343 if (type == DRM_MODE_CONNECTOR_HDMIA) {
6eb6b6f0a012993 Dmitry Baryshkov 2023-05-31 344 int ret;
6eb6b6f0a012993 Dmitry Baryshkov 2023-05-31 345
6de79dd3a920a13 H. Nikolaus Schaller 2022-04-07 346 conn->ddc_en = devm_gpiod_get_optional(&pdev->dev, "ddc-en",
6de79dd3a920a13 H. Nikolaus Schaller 2022-04-07 347 GPIOD_OUT_HIGH);
6de79dd3a920a13 H. Nikolaus Schaller 2022-04-07 348
6de79dd3a920a13 H. Nikolaus Schaller 2022-04-07 349 if (IS_ERR(conn->ddc_en)) {
6de79dd3a920a13 H. Nikolaus Schaller 2022-04-07 350 dev_err(&pdev->dev, "Couldn't get ddc-en gpio\n");
a7afd1756ad7c06 Joe Hattori 2024-12-14 351 ret = PTR_ERR(conn->ddc_en);
a7afd1756ad7c06 Joe Hattori 2024-12-14 352 goto err_put;
6de79dd3a920a13 H. Nikolaus Schaller 2022-04-07 353 }
6eb6b6f0a012993 Dmitry Baryshkov 2023-05-31 354
6eb6b6f0a012993 Dmitry Baryshkov 2023-05-31 355 ret = display_connector_get_supply(pdev, conn, "hdmi-pwr");
a7afd1756ad7c06 Joe Hattori 2024-12-14 356 if (ret < 0) {
a7afd1756ad7c06 Joe Hattori 2024-12-14 357 ret = dev_err_probe(
a7afd1756ad7c06 Joe Hattori 2024-12-14 358 &pdev->dev, ret,
a7afd1756ad7c06 Joe Hattori 2024-12-14 359 "failed to get HDMI +5V Power regulator\n");
a7afd1756ad7c06 Joe Hattori 2024-12-14 360 goto err_put;
a7afd1756ad7c06 Joe Hattori 2024-12-14 361 }
6eb6b6f0a012993 Dmitry Baryshkov 2023-05-31 362 }
6eb6b6f0a012993 Dmitry Baryshkov 2023-05-31 363
6eb6b6f0a012993 Dmitry Baryshkov 2023-05-31 364 if (conn->supply) {
6eb6b6f0a012993 Dmitry Baryshkov 2023-05-31 365 ret = regulator_enable(conn->supply);
6eb6b6f0a012993 Dmitry Baryshkov 2023-05-31 366 if (ret) {
6eb6b6f0a012993 Dmitry Baryshkov 2023-05-31 367 dev_err(&pdev->dev, "failed to enable PWR regulator: %d\n", ret);
a7afd1756ad7c06 Joe Hattori 2024-12-14 368 goto err_put;
6eb6b6f0a012993 Dmitry Baryshkov 2023-05-31 369 }
6de79dd3a920a13 H. Nikolaus Schaller 2022-04-07 370 }
6de79dd3a920a13 H. Nikolaus Schaller 2022-04-07 371
0c275c30176b2e7 Laurent Pinchart 2020-02-26 372 conn->bridge.funcs = &display_connector_bridge_funcs;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 373 conn->bridge.of_node = pdev->dev.of_node;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 374
0c275c30176b2e7 Laurent Pinchart 2020-02-26 375 if (conn->bridge.ddc)
0c275c30176b2e7 Laurent Pinchart 2020-02-26 376 conn->bridge.ops |= DRM_BRIDGE_OP_EDID
0c275c30176b2e7 Laurent Pinchart 2020-02-26 377 | DRM_BRIDGE_OP_DETECT;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 378 if (conn->hpd_gpio)
0c275c30176b2e7 Laurent Pinchart 2020-02-26 379 conn->bridge.ops |= DRM_BRIDGE_OP_DETECT;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 380 if (conn->hpd_irq >= 0)
0c275c30176b2e7 Laurent Pinchart 2020-02-26 381 conn->bridge.ops |= DRM_BRIDGE_OP_HPD;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 382
0c275c30176b2e7 Laurent Pinchart 2020-02-26 383 dev_dbg(&pdev->dev,
0c275c30176b2e7 Laurent Pinchart 2020-02-26 384 "Found %s display connector '%s' %s DDC bus and %s HPD GPIO (ops 0x%x)\n",
0c275c30176b2e7 Laurent Pinchart 2020-02-26 385 drm_get_connector_type_name(conn->bridge.type),
0c275c30176b2e7 Laurent Pinchart 2020-02-26 386 label ? label : "<unlabelled>",
0c275c30176b2e7 Laurent Pinchart 2020-02-26 387 conn->bridge.ddc ? "with" : "without",
0c275c30176b2e7 Laurent Pinchart 2020-02-26 388 conn->hpd_gpio ? "with" : "without",
0c275c30176b2e7 Laurent Pinchart 2020-02-26 389 conn->bridge.ops);
0c275c30176b2e7 Laurent Pinchart 2020-02-26 390
0c275c30176b2e7 Laurent Pinchart 2020-02-26 391 drm_bridge_add(&conn->bridge);
0c275c30176b2e7 Laurent Pinchart 2020-02-26 392
0c275c30176b2e7 Laurent Pinchart 2020-02-26 393 return 0;
a7afd1756ad7c06 Joe Hattori 2024-12-14 394
a7afd1756ad7c06 Joe Hattori 2024-12-14 395 err_put:
a7afd1756ad7c06 Joe Hattori 2024-12-14 396 i2c_put_adapter(conn->bridge.ddc);
a7afd1756ad7c06 Joe Hattori 2024-12-14 @397 return ret;
0c275c30176b2e7 Laurent Pinchart 2020-02-26 398 }
0c275c30176b2e7 Laurent Pinchart 2020-02-26 399
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next reply other threads:[~2024-12-21 13:49 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-21 13:49 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2024-12-21 3:39 [PATCH v2] drm/bridge: display-connector: implement the error path of .probe() kernel test robot
2024-12-14 1:26 Joe Hattori
2024-12-14 15:22 ` Dmitry Baryshkov
2024-12-14 20:39 ` Laurent Pinchart
2025-01-06 9:02 ` Dan Carpenter
2025-01-31 5:21 ` Joe Hattori
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202412212129.OT9Bt8p0-lkp@intel.com \
--to=lkp@intel.com \
--cc=error27@gmail.com \
--cc=oe-kbuild@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.