iPXE discussion forum
How to detect ARM architecture from iPXE script? - Printable Version

+- iPXE discussion forum (http://forum.ipxe.org)
+-- Forum: iPXE user forums (/forumdisplay.php?fid=1)
+--- Forum: General (/forumdisplay.php?fid=2)
+--- Thread: How to detect ARM architecture from iPXE script? (/showthread.php?tid=14907)



How to detect ARM architecture from iPXE script? - korekhov - 2018-10-25 19:16

Hi, folks!

I'm adding AMR64 systems to our environment and would love to use the same existing iPXE scripts for our tasks, just need to be able to determine the architecture from within iPXE to define a proper kernel/initrd paths to pass.

Something of a mix between "platform" and "cpuid" commands, I presume.

I'd love to be more precise than running this, if possible, as it is not exactly a bulletproof "solution":

cpuid --ext 29 && set arch x86_64 || set arch arm64

Any suggestions?

Thanks!


RE: How to detect ARM architecture from iPXE script? - NiKiZe - 2018-10-25 19:19

Linked from the platform settings page is http://ipxe.org/cfg/buildarch


RE: How to detect ARM architecture from iPXE script? - korekhov - 2018-10-26 21:38

Well, just as that page says, "buildarch" is not a running arch, but where it was built. Not what I'm looking for. I need to detect actual platform where my iPXE script runs.
Is that possible?


RE: How to detect ARM architecture from iPXE script? - NiKiZe - 2018-10-26 22:05

(2018-10-26 21:38)korekhov Wrote:  Well, just as that page says, "buildarch" is not a running arch, but where it was built. Not what I'm looking for. I need to detect actual platform where my iPXE script runs.
Is that possible?

"CPU architecture for which this version of iPXE was compiled" not "where it was built" - what makes you say this?

It matches the arch part of the build command, as described in ipxe.org/appnote/buildtargets

If your iPXE is built for arm64 - it will be running on arm64 since it can't run on arm32, I'm not sure if you can run arm32 code on arm64, if you can then you will need to resort to cpu checks for that one case.

For x86, just as that page says, you will need to check cpuid if you have an i386 build to see if it is running on 64-bit hardware.

Code:
set arch ${buildarch}
# if running 64-bit builds then the CPU must be 64bit capable.
# so only check cpu capability on 32-bit builds
iseq ${arch} i386 && cpuid --ext 29 && set arch x86_64 ||
iseq ${arch} arm32 && (something magic here) && set arm64 ||

I do not know what is needed to detect arm64, so that needs some expertise from elsewhere.


RE: How to detect ARM architecture from iPXE script? - MultimediaMan - 2018-10-28 00:39

I don't have any ARM hardware (yet), but does the ${platform} variable offer up any clues on the running hardware?


RE: How to detect ARM architecture from iPXE script? - NiKiZe - 2018-10-28 04:50

(2018-10-28 00:39)MultimediaMan Wrote:  I don't have any ARM hardware (yet), but does the ${platform} variable offer up any clues on the running hardware?

http://ipxe.org/cfg/platform - it has 3 possible values, it is set as build time just as buildarch. But builds are limited on what they can run on as described above, for example, it is not possible for an x86_64 build to run on i386. or for an efi build to run in pcbios mode.


RE: How to detect ARM architecture from iPXE script? - korekhov - 2018-10-29 18:54

(2018-10-26 22:05)NiKiZe Wrote:  If your iPXE is built for arm64 - it will be running on arm64 since it can't run on arm32, I'm not sure if you can run arm32 code on arm64, if you can then you will need to resort to cpu checks for that one case.

For x86, just as that page says, you will need to check cpuid if you have an i386 build to see if it is running on 64-bit hardware.

On a second thought - I understand now what you're saying. I guess, I did not realize that I couldn't build say ARM iPXE on x86 system and so thought I could not use the ${buildarch}.

Thanks!


RE: How to detect ARM architecture from iPXE script? - NiKiZe - 2018-10-29 19:04

(2018-10-29 18:54)korekhov Wrote:  On a second thought - I understand now what you're saying. I guess, I did not realize that I couldn't build say ARM iPXE on x86 system and so thought I could not use the ${buildarch}.

Just to be clear. You can crosscompile iPXE for ARM on x86 no problem.
The buildarch is still what it is "built for" not what it is "built on"

take the build command:
Code:
make bin-${buildarch}-${platform}/snp.efi
the above would fail if platform is not set to efi - but otherwise the parts of the build command is exactly what is put into those settings. No matter what you build it on.

so make bin-arm32-efi/snp.efi
will have platform set to efi,
and buildarch set to arm32.

again see http://ipxe.org/appnote/buildtargets


RE: How to detect ARM architecture from iPXE script? - korekhov - 2018-10-30 01:59

Yep, all clear now.

But, I noticed that iPXE on ARM64 does not have several built-in vars any more:

iPXE> echo ${manufacturer}

iPXE> echo ${product}

iPXE> echo ${buildarch}
arm64
iPXE> echo ${platform}
efi
iPXE>

Is this expected? Any ways around that?


RE: How to detect ARM architecture from iPXE script? - NiKiZe - 2018-10-30 05:45

${manufacturer} and ${product} comes from smbios data, what is the smbios data on the device, and is smbios structures even supported on ARM?
If you start linux on the device and run dmidecode, what do you get then?


RE: How to detect ARM architecture from iPXE script? - MultimediaMan - 2018-10-30 13:41

(2018-10-30 05:45)NiKiZe Wrote:  ${manufacturer} and ${product} comes from smbios data, what is the smbios data on the device, and is smbios structures even supported on ARM?
If you start linux on the device and run dmidecode, what do you get then?

IIRC, dmidecode is an x86 Binary only. ARM, ARM64 and PPC have no analogue.


RE: How to detect ARM architecture from iPXE script? - ktran - 2018-10-30 17:59

Hi all,
In a shell script, the ARM64 architecture can be detected by the following command 'uname -p' as in sh shell "if (`uname -p` == aarch64).
I hope this helps.


RE: How to detect ARM architecture from iPXE script? - NiKiZe - 2018-10-30 21:36

(2018-10-30 13:41)MultimediaMan Wrote:  
(2018-10-30 05:45)NiKiZe Wrote:  ${manufacturer} and ${product} comes from smbios data, what is the smbios data on the device, and is smbios structures even supported on ARM?
If you start linux on the device and run dmidecode, what do you get then?

IIRC, dmidecode is an x86 Binary only. ARM, ARM64 and PPC have no analogue.
It seems that dmidecode "works" on ARM, but there is generally no dmi data to decode - and as such there is also no data for iPXE to decode - and that was my point.


RE: How to detect ARM architecture from iPXE script? - ktran - 2018-10-30 21:49

I am sending a sample of dmidecode using a TX2 board. Hope this helps.
Kiet

# ./dmidecode.sh
+ dmidecode -t bios
# dmidecode 3.0
Getting SMBIOS data from sysfs.
SMBIOS 3.1.1 present.
# SMBIOS implementations newer than version 3.0 are not
# fully supported by this version of dmidecode.

Handle 0x0000, DMI type 0, 26 bytes
BIOS Information
Vendor: EDK II
Version: 0ACKL024
Release Date: 09/26/2018
Address: 0xF0000
Runtime Size: 64 kB
ROM Size: 16384 kB
Characteristics:
PCI is supported
BIOS is upgradeable
BIOS shadowing is allowed
Boot from CD is supported
Selectable boot is supported
BIOS ROM is socketed
ACPI is supported
BIOS boot specification is supported
Targeted content distribution is supported
UEFI is supported
BIOS Revision: 7.1

Handle 0x0007, DMI type 13, 22 bytes
BIOS Language Information
Language Description Format: Long
Installable Languages: 1
en|US|iso8859-1
Currently Installed Language: en|US|iso8859-1

Handle 0x0024, DMI type 13, 22 bytes
BIOS Language Information
Language Description Format: Abbreviated
Installable Languages: 1
enUS
Currently Installed Language: enUS

+ dmidecode -t system
# dmidecode 3.0
Getting SMBIOS data from sysfs.
SMBIOS 3.1.1 present.
# SMBIOS implementations newer than version 3.0 are not
# fully supported by this version of dmidecode.

Handle 0x0001, DMI type 1, 27 bytes
System Information
Manufacturer: To be filled by O.E.M.
Product Name: Saber
Version: 1.0
Serial Number: To be filled by O.E.M.
UUID: 03000200-0400-0500-0006-000700080009
Wake-up Type: Power Switch
SKU Number: SABER SKU
Family: CN99XX

Handle 0x0006, DMI type 12, 5 bytes
System Configuration Options
Option 1: Default string

Handle 0x0009, DMI type 32, 11 bytes
System Boot Information
Status: No errors detected

Handle 0x0019, DMI type 15, 73 bytes
System Event Log
Area Length: 0 bytes
Header Start Offset: 0x0000
Header Length: 16 bytes
Data Start Offset: 0x0010
Access Method: Memory-mapped physical 32-bit address
Access Address: 0xC0CB0000
Status: Valid, Not Full
Change Token: 0x00000002
Header Format: Type 1
Supported Log Type Descriptors: 25
Descriptor 1: Single-bit ECC memory error
Data Format 1: Multiple-event handle
Descriptor 2: Multi-bit ECC memory error
Data Format 2: Multiple-event handle
Descriptor 3: Parity memory error
Data Format 3: None
Descriptor 4: Bus timeout
Data Format 4: None
Descriptor 5: I/O channel block
Data Format 5: None
Descriptor 6: Software NMI
Data Format 6: None
Descriptor 7: POST memory resize
Data Format 7: None
Descriptor 8: POST error
Data Format 8: POST results bitmap
Descriptor 9: PCI parity error
Data Format 9: Multiple-event handle
Descriptor 10: PCI system error
Data Format 10: Multiple-event handle
Descriptor 11: CPU failure
Data Format 11: None
Descriptor 12: EISA failsafe timer timeout
Data Format 12: None
Descriptor 13: Correctable memory log disabled
Data Format 13: None
Descriptor 14: Logging disabled
Data Format 14: None
Descriptor 15: System limit exceeded
Data Format 15: None
Descriptor 16: Asynchronous hardware timer expired
Data Format 16: None
Descriptor 17: System configuration information
Data Format 17: None
Descriptor 18: Hard disk information
Data Format 18: None
Descriptor 19: System reconfigured
Data Format 19: None
Descriptor 20: Uncorrectable CPU-complex error
Data Format 20: None
Descriptor 21: Log area reset/cleared
Data Format 21: None
Descriptor 22: System boot
Data Format 22: None
Descriptor 23: End of log
Data Format 23: None
Descriptor 24: OEM-specific
Data Format 24: OEM-specific
Descriptor 25: OEM-specific
Data Format 25: OEM-specific

+ dmidecode -t baseboard
# dmidecode 3.0
Getting SMBIOS data from sysfs.
SMBIOS 3.1.1 present.
# SMBIOS implementations newer than version 3.0 are not
# fully supported by this version of dmidecode.

Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
Manufacturer: GIGABYTE
Product Name: Saber
Version: 1.0
Serial Number: 2.0G1752-GBS000015
Asset Tag: To be filled by O.E.M.
Features:
Board is a hosting board
Board is replaceable
Location In Chassis: Default string
Chassis Handle: 0x0003
Type: Motherboard
Contained Object Handles: 0

Handle 0x0004, DMI type 10, 6 bytes
On Board Device Information
Type: Unknown
Status: Enabled
Description: Device 1

+ dmidecode -t chassis
# dmidecode 3.0
Getting SMBIOS data from sysfs.
SMBIOS 3.1.1 present.
# SMBIOS implementations newer than version 3.0 are not
# fully supported by this version of dmidecode.

Handle 0x0003, DMI type 3, 22 bytes
Chassis Information
Manufacturer: To be filled by O.E.M.
Type: Rack Mount Chassis
Lock: Not Present
Version: 1.0
Serial Number: GIG1PA612A0015
Asset Tag: To be filled by O.E.M.
Boot-up State: Safe
Power Supply State: Safe
Thermal State: Safe
Security Status: None
OEM Information: 0x00000000
Height: Unspecified
Number Of Power Cords: 1
Contained Elements: 0
SKU Number: Default string

+ dmidecode -t processor
# dmidecode 3.0
Getting SMBIOS data from sysfs.
SMBIOS 3.1.1 present.
# SMBIOS implementations newer than version 3.0 are not
# fully supported by this version of dmidecode.

Handle 0x0025, DMI type 4, 48 bytes
Processor Information
Socket Designation: Socket 0
Type: Central Processor
Family: ARM
Manufacturer: Cavium Inc.
ID: F1 0A 1F 43 00 00 00 00
Version: Cavium ThunderX2® CPU CN9980 v2.1 @ 2.20GHz
Voltage: 0.8 V
External Clock: 33 MHz
Max Speed: 2500 MHz
Current Speed: 2200 MHz
Status: Populated, Enabled
Upgrade: Other
L1 Cache Handle: 0x0026
L2 Cache Handle: 0x0028
L3 Cache Handle: 0x0029
Serial Number: 000011DF-2A0A3312
Asset Tag: Not Specified
Part Number: CN9980-2200LG4077-Y21-G
Core Count: 32
Core Enabled: 32
Thread Count: 128
Characteristics:
64-bit capable
Multi-Core
Hardware Thread
Execute Protection
Enhanced Virtualization
Power/Performance Control

Handle 0x0043, DMI type 4, 48 bytes
Processor Information
Socket Designation: Socket 1
Type: Central Processor
Family: ARM
Manufacturer: Cavium Inc.
ID: F1 0A 1F 43 00 00 00 00
Version: Cavium ThunderX2® CPU CN9980 v2.1 @ 2.20GHz
Voltage: 0.8 V
External Clock: 33 MHz
Max Speed: 2500 MHz
Current Speed: 2200 MHz
Status: Populated, Enabled
Upgrade: Other
L1 Cache Handle: 0x0044
L2 Cache Handle: 0x0046
L3 Cache Handle: 0x0047
Serial Number: 000011DF-3A0A3235
Asset Tag: Not Specified
Part Number: CN9980-2200LG4077-Y21-G
Core Count: 32
Core Enabled: 32
Thread Count: 128
Characteristics:
64-bit capable
Multi-Core
Hardware Thread
Execute Protection
Enhanced Virtualization
Power/Performance Control

+ dmidecode -t memory
# dmidecode 3.0
Getting SMBIOS data from sysfs.
SMBIOS 3.1.1 present.
# SMBIOS implementations newer than version 3.0 are not
# fully supported by this version of dmidecode.

Handle 0x0037, DMI type 16, 23 bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: Other
Maximum Capacity: 2 TB
Error Information Handle: Not Provided
Number Of Devices: 8

Handle 0x0038, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0037
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: None
Locator: DIMM_A0
Bank Locator: N0
Type: DDR4
Type Detail: Registered (Buffered)
Speed: 2666 MHz
Manufacturer: Micron Technology
Serial Number: 420983499
Asset Tag: Not Specified
Part Number: 18ASF2G72PDZ-2G6H1
Rank: 2
Configured Clock Speed: 2666 MHz
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V

Handle 0x0039, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0037
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: None
Locator: DIMM_B0
Bank Locator: N0
Type: DDR4
Type Detail: Registered (Buffered)
Speed: 2666 MHz
Manufacturer: Micron Technology
Serial Number: 420983632
Asset Tag: Not Specified
Part Number: 18ASF2G72PDZ-2G6H1
Rank: 2
Configured Clock Speed: 2666 MHz
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V

Handle 0x003A, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0037
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: None
Locator: DIMM_C0
Bank Locator: N0
Type: DDR4
Type Detail: Registered (Buffered)
Speed: 2666 MHz
Manufacturer: Micron Technology
Serial Number: 420983836
Asset Tag: Not Specified
Part Number: 18ASF2G72PDZ-2G6H1
Rank: 2
Configured Clock Speed: 2666 MHz
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V

Handle 0x003B, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0037
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: None
Locator: DIMM_D0
Bank Locator: N0
Type: DDR4
Type Detail: Registered (Buffered)
Speed: 2666 MHz
Manufacturer: Micron Technology
Serial Number: 420983856
Asset Tag: Not Specified
Part Number: 18ASF2G72PDZ-2G6H1
Rank: 2
Configured Clock Speed: 2666 MHz
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V

Handle 0x003C, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0037
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: None
Locator: DIMM_E0
Bank Locator: N0
Type: DDR4
Type Detail: Registered (Buffered)
Speed: 2666 MHz
Manufacturer: Micron Technology
Serial Number: 420983372
Asset Tag: Not Specified
Part Number: 18ASF2G72PDZ-2G6H1
Rank: 2
Configured Clock Speed: 2666 MHz
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V

Handle 0x003D, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0037
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: None
Locator: DIMM_F0
Bank Locator: N0
Type: DDR4
Type Detail: Registered (Buffered)
Speed: 2666 MHz
Manufacturer: Micron Technology
Serial Number: 420983320
Asset Tag: Not Specified
Part Number: 18ASF2G72PDZ-2G6H1
Rank: 2
Configured Clock Speed: 2666 MHz
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V

Handle 0x003E, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0037
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: None
Locator: DIMM_G0
Bank Locator: N0
Type: DDR4
Type Detail: Registered (Buffered)
Speed: 2666 MHz
Manufacturer: Micron Technology
Serial Number: 420983313
Asset Tag: Not Specified
Part Number: 18ASF2G72PDZ-2G6H1
Rank: 2
Configured Clock Speed: 2666 MHz
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V

Handle 0x003F, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0037
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: None
Locator: DIMM_H0
Bank Locator: N0
Type: DDR4
Type Detail: Registered (Buffered)
Speed: 2666 MHz
Manufacturer: Micron Technology
Serial Number: 420983279
Asset Tag: Not Specified
Part Number: 18ASF2G72PDZ-2G6H1
Rank: 2
Configured Clock Speed: 2666 MHz
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V

Handle 0x004E, DMI type 16, 23 bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: Other
Maximum Capacity: 2 TB
Error Information Handle: Not Provided
Number Of Devices: 8

Handle 0x004F, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x004E
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: None
Locator: DIMM_I0
Bank Locator: N1
Type: DDR4
Type Detail: Registered (Buffered)
Speed: 2666 MHz
Manufacturer: Micron Technology
Serial Number: 420983901
Asset Tag: Not Specified
Part Number: 18ASF2G72PDZ-2G6H1
Rank: 2
Configured Clock Speed: 2666 MHz
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V

Handle 0x0050, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x004E
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: None
Locator: DIMM_J0
Bank Locator: N1
Type: DDR4
Type Detail: Registered (Buffered)
Speed: 2666 MHz
Manufacturer: Micron Technology
Serial Number: 420983515
Asset Tag: Not Specified
Part Number: 18ASF2G72PDZ-2G6H1
Rank: 2
Configured Clock Speed: 2666 MHz
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V

Handle 0x0051, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x004E
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: None
Locator: DIMM_K0
Bank Locator: N1
Type: DDR4
Type Detail: Registered (Buffered)
Speed: 2666 MHz
Manufacturer: Micron Technology
Serial Number: 420983622
Asset Tag: Not Specified
Part Number: 18ASF2G72PDZ-2G6H1
Rank: 2
Configured Clock Speed: 2666 MHz
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V

Handle 0x0052, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x004E
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: None
Locator: DIMM_L0
Bank Locator: N1
Type: DDR4
Type Detail: Registered (Buffered)
Speed: 2666 MHz
Manufacturer: Micron Technology
Serial Number: 420983725
Asset Tag: Not Specified
Part Number: 18ASF2G72PDZ-2G6H1
Rank: 2
Configured Clock Speed: 2666 MHz
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V

Handle 0x0053, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x004E
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: None
Locator: DIMM_M0
Bank Locator: N1
Type: DDR4
Type Detail: Registered (Buffered)
Speed: 2666 MHz
Manufacturer: Micron Technology
Serial Number: 420983869
Asset Tag: Not Specified
Part Number: 18ASF2G72PDZ-2G6H1
Rank: 2
Configured Clock Speed: 2666 MHz
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V

Handle 0x0054, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x004E
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: None
Locator: DIMM_N0
Bank Locator: N1
Type: DDR4
Type Detail: Registered (Buffered)
Speed: 2666 MHz
Manufacturer: Micron Technology
Serial Number: 420983306
Asset Tag: Not Specified
Part Number: 18ASF2G72PDZ-2G6H1
Rank: 2
Configured Clock Speed: 2666 MHz
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V

Handle 0x0055, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x004E
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: None
Locator: DIMM_O0
Bank Locator: N1
Type: DDR4
Type Detail: Registered (Buffered)
Speed: 2666 MHz
Manufacturer: Micron Technology
Serial Number: 420983552
Asset Tag: Not Specified
Part Number: 18ASF2G72PDZ-2G6H1
Rank: 2
Configured Clock Speed: 2666 MHz
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V

Handle 0x0056, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x004E
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 16384 MB
Form Factor: DIMM
Set: None
Locator: DIMM_P0
Bank Locator: N1
Type: DDR4
Type Detail: Registered (Buffered)
Speed: 2666 MHz
Manufacturer: Micron Technology
Serial Number: 420983218
Asset Tag: Not Specified
Part Number: 18ASF2G72PDZ-2G6H1
Rank: 2
Configured Clock Speed: 2666 MHz
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V

+ dmidecode -t cache
# dmidecode 3.0
Getting SMBIOS data from sysfs.
SMBIOS 3.1.1 present.
# SMBIOS implementations newer than version 3.0 are not
# fully supported by this version of dmidecode.

Handle 0x0026, DMI type 7, 27 bytes
Cache Information
Socket Designation: Socket 0 Cache L1I
Configuration: Enabled, Not Socketed, Level 1
Operational Mode: Write Back
Location: Internal
Installed Size: 1024 kB
Maximum Size: 1024 kB
Supported SRAM Types:
Other
Installed SRAM Type: Other
Speed: Unknown
Error Correction Type: None
System Type: Instruction
Associativity: 8-way Set-associative

Handle 0x0027, DMI type 7, 27 bytes
Cache Information
Socket Designation: Socket 0 Cache L1D
Configuration: Enabled, Not Socketed, Level 1
Operational Mode: Write Back
Location: Internal
Installed Size: 1024 kB
Maximum Size: 1024 kB
Supported SRAM Types:
Other
Installed SRAM Type: Other
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Data
Associativity: 8-way Set-associative

Handle 0x0028, DMI type 7, 27 bytes
Cache Information
Socket Designation: Socket 0 Cache L2
Configuration: Enabled, Not Socketed, Level 2
Operational Mode: Write Back
Location: Internal
Installed Size: 8192 kB
Maximum Size: 8192 kB
Supported SRAM Types:
Other
Installed SRAM Type: Other
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Data
Associativity: 8-way Set-associative

Handle 0x0029, DMI type 7, 27 bytes
Cache Information
Socket Designation: Socket 0 Cache L3
Configuration: Enabled, Not Socketed, Level 3
Operational Mode: Write Back
Location: Internal
Installed Size: 32768 kB
Maximum Size: 32768 kB
Supported SRAM Types:
Other
Installed SRAM Type: Other
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Data
Associativity: 32-way Set-associative

Handle 0x0044, DMI type 7, 27 bytes
Cache Information
Socket Designation: Socket 1 Cache L1I
Configuration: Enabled, Not Socketed, Level 1
Operational Mode: Write Back
Location: Internal
Installed Size: 1024 kB
Maximum Size: 1024 kB
Supported SRAM Types:
Other
Installed SRAM Type: Other
Speed: Unknown
Error Correction Type: None
System Type: Instruction
Associativity: 8-way Set-associative

Handle 0x0045, DMI type 7, 27 bytes
Cache Information
Socket Designation: Socket 1 Cache L1D
Configuration: Enabled, Not Socketed, Level 1
Operational Mode: Write Back
Location: Internal
Installed Size: 1024 kB
Maximum Size: 1024 kB
Supported SRAM Types:
Other
Installed SRAM Type: Other
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Data
Associativity: 8-way Set-associative

Handle 0x0046, DMI type 7, 27 bytes
Cache Information
Socket Designation: Socket 1 Cache L2
Configuration: Enabled, Not Socketed, Level 2
Operational Mode: Write Back
Location: Internal
Installed Size: 8192 kB
Maximum Size: 8192 kB
Supported SRAM Types:
Other
Installed SRAM Type: Other
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Data
Associativity: 8-way Set-associative

Handle 0x0047, DMI type 7, 27 bytes
Cache Information
Socket Designation: Socket 1 Cache L3
Configuration: Enabled, Not Socketed, Level 3
Operational Mode: Write Back
Location: Internal
Installed Size: 32768 kB
Maximum Size: 32768 kB
Supported SRAM Types:
Other
Installed SRAM Type: Other
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Data
Associativity: 32-way Set-associative

+ dmidecode -t connector
# dmidecode 3.0
Getting SMBIOS data from sysfs.
SMBIOS 3.1.1 present.
# SMBIOS implementations newer than version 3.0 are not
# fully supported by this version of dmidecode.

Handle 0x002A, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: 0:SATA_0
Internal Connector Type: SAS/SATA Plug Receptacle
External Reference Designator: Not Specified
External Connector Type: None
Port Type: SATA

Handle 0x002B, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: 0:SATA_1
Internal Connector Type: SAS/SATA Plug Receptacle
External Reference Designator: Not Specified
External Connector Type: None
Port Type: SATA

Handle 0x002C, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: Not Specified
Internal Connector Type: None
External Reference Designator: USB1
External Connector Type: Access Bus (USB)
Port Type: USB

Handle 0x002D, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: Not Specified
Internal Connector Type: None
External Reference Designator: USB2
External Connector Type: Access Bus (USB)
Port Type: USB

Handle 0x002E, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: COM
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: 8251 Compatible

Handle 0x002F, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: DBG_COM
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: 8251 Compatible

Handle 0x0030, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: Not Specified
Internal Connector Type: None
External Reference Designator: 0:ETH_0
External Connector Type: RJ-45
Port Type: Network Port

Handle 0x0031, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: Not Specified
Internal Connector Type: None
External Reference Designator: BMC
External Connector Type: RJ-45
Port Type: Network Port

Handle 0x0048, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: Not Specified
Internal Connector Type: None
External Reference Designator: 1:ETH_0
External Connector Type: RJ-45
Port Type: Network Port

+ dmidecode -t slot
# dmidecode 3.0
Getting SMBIOS data from sysfs.
SMBIOS 3.1.1 present.
# SMBIOS implementations newer than version 3.0 are not
# fully supported by this version of dmidecode.

Handle 0x0032, DMI type 9, 17 bytes
System Slot Information
Designation: PCIe Slot 0
Type: x8 PCI Express 3
Current Usage: Available
Length: Short
ID: 0
Characteristics:
3.3 V is provided
PME signal is supported
Bus Address: 0000:01:00.0

Handle 0x0033, DMI type 9, 17 bytes
System Slot Information
Designation: PCIe Slot 8
Type: x16 PCI Express 3
Current Usage: In Use
Length: Long
ID: 8
Characteristics:
3.3 V is provided
PME signal is supported
Bus Address: 0000:09:00.0

Handle 0x0034, DMI type 9, 17 bytes
System Slot Information
Designation: PCIe Slot 2
Type: x4 PCI Express 3
Current Usage: Available
Length: Short
ID: 2
Characteristics:
3.3 V is provided
PME signal is supported
Bus Address: 0000:03:00.0

Handle 0x0035, DMI type 9, 17 bytes
System Slot Information
Designation: PCIe Slot 3
Type: x4 PCI Express 3
Current Usage: Available
Length: Short
ID: 3
Characteristics:
3.3 V is provided
PME signal is supported
Bus Address: 0000:04:00.0

Handle 0x0036, DMI type 9, 17 bytes
System Slot Information
Designation: PCIe Slot 4
Type: x16 PCI Express 3
Current Usage: In Use
Length: Short
ID: 4
Characteristics:
3.3 V is provided
PME signal is supported
Bus Address: 0000:05:00.0

Handle 0x0049, DMI type 9, 17 bytes
System Slot Information
Designation: PCIe Slot 16
Type: x4 PCI Express 3
Current Usage: Available
Length: Short
ID: 16
Characteristics:
3.3 V is provided
PME signal is supported
Bus Address: 0000:83:00.0

Handle 0x004A, DMI type 9, 17 bytes
System Slot Information
Designation: PCIe Slot 17
Type: x4 PCI Express 3
Current Usage: Available
Length: Short
ID: 17
Characteristics:
3.3 V is provided
PME signal is supported
Bus Address: 0000:84:00.0

Handle 0x004B, DMI type 9, 17 bytes
System Slot Information
Designation: PCIe Slot 18
Type: x16 PCI Express 3
Current Usage: Available
Length: Short
ID: 18
Characteristics:
3.3 V is provided
PME signal is supported
Bus Address: 0000:85:00.0

Handle 0x004C, DMI type 9, 17 bytes
System Slot Information
Designation: PCIe Slot 22
Type: x16 PCI Express 3
Current Usage: Available
Length: Long
ID: 22
Characteristics:
3.3 V is provided
PME signal is supported
Bus Address: 0000:89:00.0

Handle 0x004D, DMI type 9, 17 bytes
System Slot Information
Designation: PCIe Slot 26
Type: x8 PCI Express 3
Current Usage: In Use
Length: Short
ID: 26
Characteristics:
3.3 V is provided
PME signal is supported
Bus Address: 0000:8d:00.0


RE: How to detect ARM architecture from iPXE script? - korekhov - 2018-10-31 20:35

Another question - why iPXE is complaining about kernel not being EFI while stock grubaa64.efi (from Ubuntu 18.04) has no problem with it? Am I missing something in iPXE setup?


>>Checking Media Presence......
Downloading NBP file...

Succeed to download NBP file.
iPXE initialising devices...ok

iPXE 1.0.0+ (975120) -- Open Source Network Boot Firmware -- http://ipxe.org
Features: DNS HTTP HTTPS iSCSI TFTP VLAN AoE EFI Menu
iPXE 2018-10-25 running on arm64 architecture.
Configuring (net0 d4:5dBig Grinf:1d:ef:f0)...........
....... ok
tftp://10.20.109.97/pxelinux.cfg/01-d4-5d-df-1d-ef-f0.ipxe... No such file or directory (http://ipxe.org/2d12608e)
tftp://10.20.109.97/pxelinux.cfg/default.ipxe... ok
overrides.ipxe... ok
MiniOS version u18.04.1-arm64 on machine (arm64).
http://10.43.184.12/ims/os-profiles/minios/u18.04.1-arm64/casper/vmlinuz... ok
Could not select: Exec format error (http://ipxe.org/2e008081)
Could not boot: Exec format error (http://ipxe.org/2e008081)
iPXE>

According to http://ipxe.org/err/2e0080, iPXE is most probably tripping over this:

Quote:If you are trying to load a Linux kernel, make sure it is build with CONFIG_EFI_STUB and that it is a working EFI binary.

But again, the same vmlinuz works with grub2 w/o any issues. Is iPXE missing some features that grub2 posses that allows it not to care if the kernel is EFI or not?
If so, any pointers on how exactly to rebuild vmlinuz with CONFIG_EFI_STUB? Strangely enough, I'm having hard time figuring this mostly because grub2 just does not seem to care so nobody needs to rebuild their kernel, I guess.

Thanks!
Thanks!


RE: How to detect ARM architecture from iPXE script? - NiKiZe - 2018-10-31 21:20

(2018-10-31 20:35)korekhov Wrote:  Another question - why iPXE is complaining about kernel not being EFI while stock grubaa64.efi (from Ubuntu 18.04) has no problem with it?
Because grub has support for booting it as non EFI kernel - which might result in that EFI features are not available inside of your OS.

(2018-10-31 20:35)korekhov Wrote:  Could not boot: Exec format error (http://ipxe.org/2e008081)
iPXE>

According to http://ipxe.org/err/2e0080, iPXE is most probably tripping over this:

Quote:If you are trying to load a Linux kernel, make sure it is build with CONFIG_EFI_STUB and that it is a working EFI binary.
Yep, And thanks for properly including the error message with URL, also thanks for reading that page properly before asking.

(2018-10-31 20:35)korekhov Wrote:  But again, the same vmlinuz works with grub2 w/o any issues. Is iPXE missing some features that grub2 posses that allows it not to care if the kernel is EFI or not?
Again this is because grub runs it as an kernel, instead of an EFI.
This is not a "missing" feature in iPXE, but rather an security consideration, and so far a selected choice to not support execution of anything in EFI mode, other then via the firmware load_image function.
You can see the source code for this in the error url

(2018-10-31 20:35)korekhov Wrote:  If so, any pointers on how exactly to rebuild vmlinuz with CONFIG_EFI_STUB? Strangely enough, I'm having hard time figuring this mostly because grub2 just does not seem to care so nobody needs to rebuild their kernel, I guess.
Where is the kernel from? Ask the source to build it properly, or maybe there already is a kernel that is more suitable to use already.
If not then modify your kernel config file and set CONFIG_EFI_STUB=Y is the easiest way, but searching for the config option gives several pages with great information, one example is https://wiki.archlinux.org/index.php/EFISTUB

One possible reason for this issue is also that you have an EFI capable kernel, but the 64/32 bit does not match between kernel and firmware mode, they must match the firmware. (CPU support is not relevant here)


RE: How to detect ARM architecture from iPXE script? - korekhov - 2018-10-31 22:05

Quote:One possible reason for this issue is also that you have an EFI capable kernel, but the 64/32 bit does not match between kernel and firmware mode, they must match the firmware. (CPU support is not relevant here)

Let me do the same steps for x86 and if resulting vmlinuz will work in iPXE, then I can take this to Cavium to fix.

Thanks!