UEFI with Jetson NX Xavier - v1.1.0-26613629

After reading Feedback on Experimental UEFI Firmware I’ve decided to give it a try on what seems to be the lastest version of the firmware: Jetson UEFI firmware (version v1.1.0-26613629 built on 03/16/21-07:37:41)

I’ve flashed the board using the “jetson-xavier-nx-uefi-acpi” config, and decided to get Fedora 34 booted on the machine, and here’s what I could first notice:

  • The noise coming from the fan is something I’ve never seen before, and it’ll only calm down when the graphics are up and running.
  • I couldn’t get graphics to work with ACPI, at all.
  • Graphics do work with Device Tree, but I can see a pink stripe on the left corner of my screen.
  • ACPI won’t find my SD card, thus won’t boot, when using 5.12.7-300.fc34.aarch64
  • ACPI won’t find my NVMe disk when using 5.11.12-300.fc34.aarch64
    • Samsung SSD 970 PRO 512GB MZ-V7P512BW

What kind of information would be useful for NVIDIA folks to improve the situation, mainly related to the last two bullets?

Are you talking about the fan running for a few seconds then stopping for a few seconds and repeating? I see that and I think it’s due to the temperature at idle being right close to the lower trip points then going up when the GPU kicks in. I think the trip points need to be tweaked.

Odd about the SD card. I do see mine in both ACPI and DeviceTree mode. This is the SD card on the NX module right? Or are you using a production module with an external SD card? Technically you don’t need it to boot since the UEFI will boot from the NVMe (assuming you can get that to work). Actually, I never tried booting from the SD card so I’m not sure the UEFI will actually find it.

As for the NVMe, try this…

  • Reboot to the UEFI menu.
  • Select Device Manager.
  • Select O/S Hardware Description Selection.
  • Choose ACPI for O/S Hardware Description. I know it’s probably already set but I’m just making sure.
  • Press F10 to save and answer Yes.
  • Now completely power off the NX, wait a few seconds and power it on again.
  • Get back into the UEFI menu.
  • Select Device Manager.
  • Select NVIDIA Resource Configuration.
  • Set Enable UEFI Quick Boot to Disabled. The wording for this option is a little misleading. You want full device enumeration so you have to disable Quick Boot.
  • Now select PCIe Configuration.
  • Set Enable PCIe in OS to Enabled.
  • Press F10 to save and answer Yes.
  • Now completely power off the NX, wait a few seconds and power it on again.
  • Once again, get back into the UEFI menu.
  • Select Boot Manager. If everything’s working, you should see something like this…
Boot Manager Menu                               
                                                
Fedora                                          
UEFI Samsung SSD 950 PRO 256GB S2GLNX0H609245N 1
UEFI PXEv4 (MAC:48B02D0775DC)                   
UEFI PXEv6 (MAC:48B02D0775DC)                   
UEFI HTTPv4 (MAC:48B02D0775DC)                  
UEFI HTTPv6 (MAC:48B02D0775DC)                  
UEFI Shell                                      

If not, does the NVMe show up at all?

Oh, what’s your kernel command like look like?

Are you talking about the fan running for a few seconds then stopping for a few seconds and repeating? I see that and I think it’s due to the temperature at idle being right close to the lower trip points then going up when the GPU kicks in. I think the trip points need to be tweaked.

No, no. When booting using ACPI it doesn’t stop, never ever.

Odd about the SD card. I do see mine in both ACPI and DeviceTree mode. This is the SD card on the NX module right? Or are you using a production module with an external SD card? Technically you don’t need it to boot since the UEFI will boot from the NVMe (assuming you can get that to work). Actually, I never tried booting from the SD card so I’m not sure the UEFI will actually find it.

This is the SDCard on the NX module, yes. I think it’s a regression on kernel as I had no issues with this when using 5.11.12-300.fc34.aarch64, but no luck with 5.12.7-300.fc34.aarch64.

Which kernel are you using, by the way?

Okay, now, let’s take a look in the configuration:

ACPI is set:

/------------------------------------------------------------------------------\
|                     O/S Hardware Description Selection                       |
\------------------------------------------------------------------------------/
                                                                                
   O/S Hardware Description   <ACPI>                     Select the hardware    
                                                         description that will  
                                                         be exposed to the O/S. 
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
/------------------------------------------------------------------------------\
|                         F9=Reset to Defaults      F10=Save                   |
| ^v=Move Highlight       <Enter>=Select Entry      Esc=Exit                   |
\------------------------------------------------------------------------------/

UEFI Quick Boot is Disabled.

/------------------------------------------------------------------------------\
|                        NVIDIA Resource Configuration                         |
\------------------------------------------------------------------------------/
                                                                                
                                                         Enable/Disable UEFI    
   Enable UEFI Quick Boot     <Disabled>                 full device            
 > PCIe Configuration                                    enumeration.           
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
/------------------------------------------------------------------------------\
|                         F9=Reset to Defaults      F10=Save                   |
| ^v=Move Highlight       <Enter>=Select Entry      Esc=Exit                   |
\------------------------------------------------------------------------------/

And PCIe is Enabled:

/------------------------------------------------------------------------------\
|                             PCIe Configuration                               |
\------------------------------------------------------------------------------/
                                                                                
                                                         Enable/Disable PCIe's  
   Enable PCIe in OS          <Enabled>                  ACPI Entry to be       
                                                         exposed to the O/S.    
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
/------------------------------------------------------------------------------\
|                         F9=Reset to Defaults      F10=Save                   |
| ^v=Move Highlight       <Enter>=Select Entry      Esc=Exit                   |
\------------------------------------------------------------------------------/

NX has been turned off and when turned on again, the very same sad menu:

/------------------------------------------------------------------------------\
|                                Boot Manager                                  |
\------------------------------------------------------------------------------/
                                                                                
                                                         Device Path :          
   Boot Manager Menu                                     HD(1,MBR,0x327DB5C6,0x 
                                                         800,0x12C000)/\EFI\fed 
   Fedora                                                ora\shimaa64.efi       
   UEFI PXEv4 (MAC:48B02D2F7BD0)                                                
   UEFI PXEv6 (MAC:48B02D2F7BD0)                                                
   UEFI HTTPv4 (MAC:48B02D2F7BD0)                                               
   UEFI HTTPv6 (MAC:48B02D2F7BD0)                                               
   UEFI Shell                                                                   
   UEFI SD Device                                                               
                                                                                
   Use the <^> and <v> keys to choose a boot option,                            
   the <Enter> key to select a boot option, and the                             
   <Esc> key to exit the Boot Manager Menu.                                     
                                                                                
                                                                                
/------------------------------------------------------------------------------\
|                                                                              |
| ^v=Move Highlight       <Enter>=Select Entry      Esc=Exit                   |
\------------------------------------------------------------------------------/
                                                                                

Seems that everything is in a way it’s supposed to work, right? Not sure what may be the difference here that makes it not work on my case.

Oh, what’s your kernel command like look like?

Bootable:

[fidencio@fedora ~]$ cat /proc/cmdline 
BOOT_IMAGE=(hd0,msdos2)/vmlinuz-5.11.12-300.fc34.aarch64 root=UUID=13846802-672b-4a5d-9f0a-22d13957add3 ro rootflags=subvol=root rhgb quiet console=tty0

Non Bootable:

sh-5.1# cat /proc/cmdline 
BOOT_IMAGE=(hd0,msdos2)/vmlinuz-5.12.7-300.fc34.aarch64 root=UUID=13846802-672b-4a5d-9f0a-22d13957add3 ro rootflags=subvol=root rhgb quiet console=tty0 earlycon=uart8250,mmio32,0x3100000

So, I’ve decided to unplug and re-plug the NVMe drive and here’s what I see now:

/------------------------------------------------------------------------------\
|                                Boot Manager                                  |
\------------------------------------------------------------------------------/
                                                                                
                                                         Device Path :          
   Boot Manager Menu                                     HD(1,MBR,0x327DB5C6,0x 
                                                         800,0x12C000)/\EFI\fed 
   Fedora                                                ora\shimaa64.efi       
   UEFI PXEv4 (MAC:48B02D2F7BD0)                                                
   UEFI PXEv6 (MAC:48B02D2F7BD0)                                                
   UEFI HTTPv4 (MAC:48B02D2F7BD0)                                               
   UEFI HTTPv6 (MAC:48B02D2F7BD0)                                               
   UEFI Shell                                                                   
   UEFI SD Device                                                               
   UEFI Samsung SSD 970 PRO 512GB S463NF0KC21884L 1                             
                                                                                
   Use the <^> and <v> keys to choose a boot option,                            
   the <Enter> key to select a boot option, and the                             
   <Esc> key to exit the Boot Manager Menu.                                     
                                                                                
/------------------------------------------------------------------------------\
|                                                                              |
| ^v=Move Highlight       <Enter>=Select Entry      Esc=Exit                   |
\------------------------------------------------------------------------------/

Let me try to get it working now, but it’s weird that I had to do the unplug / replug dance.

Oh, interesting. Not sure about that then.

Hmmm. I do know that if an sd card isn’t inserted before the device is booted, it won’t be recognized later. Also, if it is inserted on boot, removing it won’t remove the device nodes.

Still on 5.11.14-300.fc34.aarch64. Was planing to do an update today. I’ll let you know if I have the same SD card issue after upgrading.

Yeah. You should just be able to select Fedora on the boot menu and get the Grub menu. What happens when you do? How far do you get before it stops working?

Your command lines look fine. You’re using btrfs for your root filesystem I take it? Neither one works with ACPI or does the first one work but the second one not?

Sometimes it’s the simplest things. :)

Yeah. You should just be able to select Fedora on the boot menu and get the Grub menu. What happens when you do? How far do you get before it stops working?

Fedora maps to what’s on the SD Card.

Your command lines look fine. You’re using btrfs for your root filesystem I take it?

Yep, that’s the default on Fedora 34 image, I didn’t bother to do any changes on that.

Neither one works with ACPI or does the first one work but the second one not?

The first command line gives me a console, but not a graphical session at all.
The second command line doesn’t even start as the system is on the SD Card.

@gtj, are you using the NX headless or did you try graphics on it?

Ah, so you’ve been booting to the SD card all along. The NVMe hasn’t been formatted yet, is that it?

It’s headless now but I’m pretty sure I had an X session going at one point. Let me try right now.

Ah, so you’ve been booting to the SD card all along. The NVMe hasn’t been formatted yet, is that it?

Yep, this is the next step now, and I’ll provide you some updates on this.

Thanks a lot for the help so far!

I guess I did NOT have an X session going at one point. Using the device tree, I get a text console but when I start lightdm, I get a blank screen. With ACPI, The kernel load hangs trying to deal with the display.

I’ve got time this upcoming week so I may play with it a bit and see if I can get it working.

I guess I did NOT have an X session going at one point. Using the device tree, I get a text console but when I start lightdm, I get a blank screen.

Aha. I got GNOME up and running using DeviceTree.
Colours are quite off (way too dark that it should be), and happen to have a pink stripe on my screen after GNOME is up.

With ACPI, The kernel load hangs trying to deal with the display.

With ACPI, no success.

I’ve got time this upcoming week so I may play with it a bit and see if I can get it working.

Cool, please, feel free to mark me anywhere you post the udpate. I’m looking forward to get it working, or as close as possible to usable.

Will do!

Hello!

This is expected with ACPI because currently there is no thermal support. With device-tree there is thermal support and so it should work.

This is expected because currently there is no graphics/display support with ACPI. For Jetson the main focus is device-tree and so if you want display you will need device-tree. For ACPI we have been testing basic boot enablement, but not much beyond that.

If you are booting with Fedora on the SD card, then my first guess would be if the ‘sdhci-acpi’ driver is present in the ramfs? You can use ‘lsinitramfs’ to view the contents of the ramfs on the host.

Please note that the UEFI bootloader is very much experimental software at this stage and so yes support for some features are limited or missing. Nonetheless we welcome all feedback.

Regards,
Jon