From: Thierry Herbelot <thierry.herbelot@6wind.com>
To: dev@dpdk.org
Cc: Thierry Herbelot <thierry.herbelot@6wind.com>,
Thomas Monjalon <thomas@monjalon.net>,
Bruce Richardson <bruce.richardson@intel.com>,
David Marchand <david.marchand@redhat.com>,
Stephen Hemminger <stephen@networkplumber.org>,
Olivier Matz <olivier.matz@6wind.com>
Subject: [V2] net/intel/e1000: reduce the optimization level for gcc > 11
Date: Mon, 6 Oct 2025 15:02:57 +0200 [thread overview]
Message-ID: <20251006130257.391200-1-thierry.herbelot@6wind.com> (raw)
In-Reply-To: <20251006124506.388456-1-thierry.herbelot@6wind.com>
The e1000 PMD stopped working under Ubuntu-24.04 (using gcc-13) when
compiled with -O3 (default level for all DPDK code). There is a crash
when starting testpmd:
> (gdb) bt
> #0 rte_read32_relaxed (addr=0x1100800e00) at ../sources/lib/eal/include/generic/rte_io.h:290
> #1 rte_read32 (addr=0x1100800e00) at ../sources/lib/eal/include/generic/rte_io.h:345
> #2 e1000_read_addr (addr=0x1100800e00) at ../sources/drivers/net/intel/e1000/base/e1000_osdep.h:106
> #3 e1000_id_led_init_generic (hw=0x1586788c0) at ../sources/drivers/net/intel/e1000/base/e1000_mac.c:1844
> #4 0x000062aaf653c85f in e1000_init_hw_82540 (hw=0x1586788c0)
> at ../sources/drivers/net/intel/e1000/base/e1000_82540.c:308
> #5 0x000062aaf6db8227 in em_hardware_init (hw=hw@entry=0x1586788c0)
> at ../sources/drivers/net/intel/e1000/em_ethdev.c:920
> #6 0x000062aaf65340ff in em_hw_init (hw=0x1586788c0) at ../sources/drivers/net/intel/e1000/em_ethdev.c:445
> #7 eth_em_dev_init (eth_dev=eth_dev@entry=0x62aaff346000 <rte_eth_devices>)
> at ../sources/drivers/net/intel/e1000/em_ethdev.c:314
> #8 0x000062aaf6db8b71 in rte_eth_dev_pci_generic_probe (private_data_size=11240,
> dev_init=0x62aaf6db8310 <eth_em_dev_init>, pci_dev=0x62ab2853dd90) at ../sources/lib/ethdev/ethdev_pci.h:150
> #9 eth_em_pci_probe (pci_drv=<optimized out>, pci_dev=0x62ab2853dd90)
> at ../sources/drivers/net/intel/e1000/em_ethdev.c:365
> #10 0x000062aaf646adf5 in rte_pci_probe_one_driver (dr=dr@entry=0x62aaf82d8020 <rte_em_pmd>,
> dev=dev@entry=0x62ab2853dd90) at ../sources/drivers/bus/pci/pci_common.c:299
> #11 0x000062aaf6a15f7d in pci_probe_all_drivers (dev=0x62ab2853dd90) at ../sources/drivers/bus/pci/pci_common.c:383
> #12 pci_probe () at ../sources/drivers/bus/pci/pci_common.c:410
> #13 0x000062aaf7a485f3 in rte_bus_probe () at ../sources/lib/eal/common/eal_common_bus.c:84
> #14 0x000062aaf670585d in rte_eal_init (argc=argc@entry=146, argv=argv@entry=0x7fffca468898)
> at ../sources/lib/eal/linux/eal.c:1253
The crash is linked to the use of gcc-13: under Ubuntu-24.04 testpmd
compiled with gcc-11 from the same DPDK tree works as expected.
The perfect solution would be for someone to investigate why the
PMD crashes. However, this depends on Maintainer availability.
A less-perfect solution is to reduce the optimization level
(like another proposal for net/qede: see Link).
Note: if more regressions are seen in less-frequently used PMDs,
maybe we should switch the default optimization level to -O1,
(tree-wide) and only rise the optimization level for actively
maintained PMDs, which are proven to work as expected with
higher optimization levels.
Link: http://patches.dpdk.org/project/dpdk/patch/20250909054023.3263401-1-thierry.herbelot@6wind.com/
Signed-off-by: Thierry Herbelot <thierry.herbelot@6wind.com>
---
V2: fix typo in the commit log
quote long error messages
---
drivers/net/intel/e1000/base/meson.build | 4 ++++
drivers/net/intel/e1000/meson.build | 5 +++++
2 files changed, 9 insertions(+)
diff --git a/drivers/net/intel/e1000/base/meson.build b/drivers/net/intel/e1000/base/meson.build
index 4fe86dc6df34..e3631f1adc27 100644
--- a/drivers/net/intel/e1000/base/meson.build
+++ b/drivers/net/intel/e1000/base/meson.build
@@ -22,3 +22,7 @@ base_sources = files(
'e1000_phy.c',
'e1000_vf.c',
)
+# testpmd crashes with gcc > 11 with compiling with default -O3 or -O2
+if (cc.get_id() == 'gcc' and cc.version().version_compare('>=12.0'))
+ base_cflags += '-O1'
+endif
diff --git a/drivers/net/intel/e1000/meson.build b/drivers/net/intel/e1000/meson.build
index 924fe4ecaef5..3a875d1555c2 100644
--- a/drivers/net/intel/e1000/meson.build
+++ b/drivers/net/intel/e1000/meson.build
@@ -23,3 +23,8 @@ if not is_windows
'igc_txrx.c',
)
endif
+
+# testpmd crashes with gcc > 11 with compiling with default -O3 or -O2
+if (cc.get_id() == 'gcc' and cc.version().version_compare('>=12.0'))
+ cflags += '-O1'
+endif
--
2.39.2
next prev parent reply other threads:[~2025-10-06 13:03 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-06 12:45 [PATCH] " Thierry Herbelot
2025-10-06 12:55 ` David Marchand
2025-10-06 13:01 ` Thierry Herbelot
2025-10-06 13:03 ` David Marchand
2025-10-06 13:02 ` Thierry Herbelot [this message]
2025-10-08 8:38 ` [V2] " Bruce Richardson
2025-10-08 10:10 ` Thomas Monjalon
2025-10-08 11:25 ` Thierry Herbelot
2025-10-10 13:20 ` Bruce Richardson
2025-10-10 13:23 ` Thierry Herbelot
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=20251006130257.391200-1-thierry.herbelot@6wind.com \
--to=thierry.herbelot@6wind.com \
--cc=bruce.richardson@intel.com \
--cc=david.marchand@redhat.com \
--cc=dev@dpdk.org \
--cc=olivier.matz@6wind.com \
--cc=stephen@networkplumber.org \
--cc=thomas@monjalon.net \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).