[SRU][N:aws/Q:aws/R:aws][PATCH 0/1] UBUNTU: [Config] Change ENA to be a built in driver on AWS
Leah Goldberg
leah.goldberg at canonical.com
Mon Apr 6 14:04:38 UTC 2026
BugLink: https://bugs.launchpad.net/bugs/2144694
[ Impact ]
* On AWS Minimal EC2 instances, cloud-init may fail to detect the
correct datasource during the local init stage if the kernel hasn’t
initialized the NIC in time. This can prevent metadata fetching and
block SSH on first boot.
* Users of these instances may be unable to log in immediately after first
boot, breaking automated deployments, cloud-init-based provisioning, and
scripts relying on metadata.
* Including `ENA_ETHERNET` as built-in on the AWS kernel would minimize the
race condition between cloud-init local and the kernel initilizing the NIC,
allowing the NIC to come up early enough for cloud-init local to be able to
successfully detect the correct datasource.
[ Test Plan ]
* 1. Launch an Ubuntu 24.04 Noble Minimal EC2 AMI. Use an EC2 instance type
where network interfaces may not be immediately available at early boot
(e.g.hpc7a.96xlarge reproduces consistently).
* 2. Wait several minutes after the instance reaches running, then attempt to
SSH into the instance. You will see this error:
Permission denied (publickey).
* 3. Apply the patch with ENA_ETHERNET built-in.
* 4. Clean cloud-init logs with
`sudo cloud-init clean --logs --config all`
* 5. Reboot the machine and check the following:
* SSH works immediately
* Check the journal logs with the following command:
journalctl -b 0 -o short-monotonic |
grep -E "cloud-init|ena|enp34s0|wait-online"
* In the journal logs, the NIC should come up before
cloud-init local finishes running
* In the journal logs, the NIC should have LINK UP,
gained carrier, and DCHP aquired before Net device
info is printed
* `cloud-init status --long` should show the
correct datasource (DataSourceEc2Local)
[ Where problems could occur ]
* Making `ENA_ETHERNET` does not address the underlying race condition
between cloud-init local and the kernel finishing NIC initialization.
It simply minimizes it enough to "fix" the issue as a temporary workaround.
* Problems may occur if `ENA_ETHERNET` needs to support features
that rely on loadable drivers, such as RDMA.
[ Other Info ]
* See related bug in cloud-init:
https://github.com/canonical/cloud-init/issues/6697
* We can try and revisit modularization once the cloud-init first-boot races
are fully resolved.
Leah Goldberg (1):
Enable ENA_ETHERNET as built-in to avoid race
debian.master/config/annotations | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--
2.43.0
More information about the kernel-team
mailing list