NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
bin/59989: Compiler abort when using -O0 optimization on building
>Number: 59989
>Category: bin
>Synopsis: Compiler abort when using -O0 optimization on building
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: bin-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Mon Feb 09 10:30:00 +0000 2026
>Originator: Georg Kühberger
>Release: 10.1
>Organization:
Robert Bosch
>Environment:
Linux 6.14.0-37-generic #37~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 20 10:25:38 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
>Description:
When trying to build NetBSD 10.1 without optimization -O0 (for debugging purpose). An abort is happening in intel_dp.c.
In file included from /home/scripts/netbsd/usr/src/sys/external/bsd/drm2/dist/drm/i915/display/intel_dp.c:30:
/home/scripts/netbsd/usr/src/sys/external/bsd/drm2/dist/drm/i915/display/intel_dp.c: In function 'intel_dp_aux_wait_done':
/home/scripts/netbsd/usr/src/sys/external/bsd/common/include/linux/build_bug.h:36:2: error: negative width in bit-field '__ctassert62'
36 | CTASSERT(__builtin_choose_expr(__builtin_constant_p(EXPR), !(EXPR), 1))
| ^~~~~~~~
/home/scripts/netbsd/usr/src/sys/external/bsd/drm2/dist/drm/i915/i915_utils.h:435:2: note: in expansion of macro 'BUILD_BUG_ON'
435 | BUILD_BUG_ON(!__builtin_constant_p(US)); \
| ^~~~~~~~~~~~
/home/scripts/netbsd/usr/src/sys/external/bsd/drm2/dist/drm/i915/i915_utils.h:440:35: note: in expansion of macro 'wait_for_atomic_us'
440 | #define wait_for_atomic(COND, MS) wait_for_atomic_us((COND), (MS) * 1000)
| ^~~~~~~~~~~~~~~~~~
/home/scripts/netbsd/usr/src/sys/external/bsd/drm2/dist/drm/i915/display/intel_dp.c:1208:10: note: in expansion of macro 'wait_for_atomic'
1208 | done = wait_for_atomic(C, timeout_ms) == 0;
| ^~~~~~~~~~~~~~~
This is due to to the definition of timeout_ms as const unsigned int which is not optimized to a constant expression like in default build option.
>How-To-Repeat:
Build netbsd 10.1 with the following command:
./build.sh -m amd64 -U -r -V "CFLAGS=-O0" -O ../obj.chimaera7.amd64/ -T ../obj.chimaera7.amd64/tooldir -j8 distribution
>Fix:
Patch that fixes the Problem:
From: "Kuehberger Georg (XC-HWP/EEB4)" <Georg.Kuehberger%at.bosch.com@localhost>
Date: Wed, 10 Dec 2025 17:03:53 +0100
Subject:[PATCH] Add -O0 support
---
.../bsd/drm2/dist/drm/i915/display/intel_dp.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/sys/external/bsd/drm2/dist/drm/i915/display/intel_dp.c b/sys/external/bsd/drm2/dist/drm/i915/display/intel_dp.c
index f3a8b7aa1648..72698b08aaf5 100644
--- a/sys/external/bsd/drm2/dist/drm/i915/display/intel_dp.c
+++ b/sys/external/bsd/drm2/dist/drm/i915/display/intel_dp.c
@@ -1184,10 +1184,10 @@ intel_dp_aux_wait_done(struct intel_dp *intel_dp)
{
struct drm_i915_private *i915 = dp_to_i915(intel_dp);
i915_reg_t ch_ctl = intel_dp->aux_ch_ctl_reg(intel_dp);
- const unsigned int timeout_ms = 10;
u32 status;
bool done;
+#define TIMEOUT_MS 10
#define C (((status = intel_uncore_read_notrace(&i915->uncore, ch_ctl)) & DP_AUX_CH_CTL_SEND_BUSY) == 0)
#ifdef __NetBSD__
if (!cold) {
@@ -1195,7 +1195,7 @@ intel_dp_aux_wait_done(struct intel_dp *intel_dp)
spin_lock(&i915->gmbus_wait_lock);
DRM_SPIN_TIMED_WAIT_NOINTR_UNTIL(ret,
&i915->gmbus_wait_queue, &i915->gmbus_wait_lock,
- msecs_to_jiffies_timeout(timeout_ms),
+ msecs_to_jiffies_timeout(TIMEOUT_MS),
C);
/*
* ret<0 on error (-ERESTARTSYS, interrupt); ret=0 on
@@ -1205,11 +1205,11 @@ intel_dp_aux_wait_done(struct intel_dp *intel_dp)
done = (ret > 0);
spin_unlock(&i915->gmbus_wait_lock);
} else {
- done = wait_for_atomic(C, timeout_ms) == 0;
+ done = wait_for_atomic(C, TIMEOUT_MS) == 0;
}
#else
done = wait_event_timeout(i915->gmbus_wait_queue, C,
- msecs_to_jiffies_timeout(timeout_ms));
+ msecs_to_jiffies_timeout(TIMEOUT_MS));
#endif
@@ -1218,8 +1218,9 @@ intel_dp_aux_wait_done(struct intel_dp *intel_dp)
if (!done)
DRM_ERROR("%s did not complete or timeout within %ums (status 0x%08x)\n",
- intel_dp->aux.name, timeout_ms, status);
+ intel_dp->aux.name, TIMEOUT_MS, status);
#undef C
+#undef TIMEOUT_MS
return status;
}
--
2.43.0
Home |
Main Index |
Thread Index |
Old Index