[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