Porting Guide

This section describes requirements and general guidelines to follow when porting ONIE to a new platform. Also, the Unit Testing guide must be used to validate the ONIE implementation.

Porting U-Boot

When porting U-Boot, the following items should be checked and verified:

  • Ethernet management PHY LEDs should function correctly.
  • Front panel status LEDs are set appropriately - check power, fans and set any corresponding LEDs.
  • Fan speeds set to 100% duty cycle.
  • Verify MAC address and serial number are exported as environment variables.
  • Confirm CONFIG_SYS_CLK_FREQ and CONFIG_DDR_CLK_FREQ oscillators by visual inspection. For example, if an oscillator is 66.666MHz use 66666000 not 66666666, as the latter will lead to skew.
  • Issue “INFO” message if a PSU is not detected or is in a failed state.
  • Verify the “INSTALL” instructions from the machine directory work. These are the instructions used to install ONIE from the U-Boot prompt. If the INSTALL instructions need updating, fix them.

ONIE DTS (Device Tree)

When porting the ONIE kernel the following .dts (device tree) entries should be checked and verified:

  • The RTC is in the .dts file and works correctly.
  • The MDIO/PHY interrupts are correct in .dts.
  • Disable unused serial consoles in .dts.
  • Verify all EEPROMs (including SPDs) are accessible via sysfs using hexdump. Set the “label” property accordingly:
    • board_eeprom – for the board EEPROM
    • psu1_eeprom / psu2_eeprom – for the power supply unit (PSU) eeproms
    • port1, port2, … port52 – for the SFP+/QSFP eeproms
  • For PCA95xx I2C muxes, use the “deselect-on-exit” property.
  • I2C nodes use the “fsl,preserve-clocking” property.

ONIE Kernel

  • Inspect the boot log and dmesg output, looking for any errors or anything unusual.
  • Inspect cat /proc/interrupts – are the expected interrupts enabled?
  • If the platform has CPLDs, try accessing some registers using the iorw command. Can you read a version register?
  • Verify the demo NOS compiles and installs OK.
  • If the box has USB ports, plug in a USB stick and see if you can mount a partition.
  • Verify the onie-nos-install <demo NOS installer URL> command works from rescue mode.
  • Verify the onie-self-update <ONIE updater URL> command works from rescue mode.

Machine Configuration: machine.make

The machine.make Makefile fragment defines a number of aspects about the machine. Some of the configuration parameters are required, while others have reasonable defaults.

The required parameters:

machine.make required parameters
Parameter Meaning
ONIE_ARCH CPU architecture for the machine type: x86_64, armv7a, powerpc-softfloat
VENDOR_REV Machine hardware revision. “0” is a good choice for a machine
SWITCH_ASIC_VENDOR used to further differentiate the platform in the ONIE waterfall. This string should be the stock ticker symbol of the ASIC vendor, in lower case.
VENDOR_ID Vendor ID – IANA Private Enterprise Number: http://www.iana.org/assignments/enterprise-numbers

Optional Parameters:

machine.make optional parameters
Parameter Meaning Default
FIRMWARE_UPDATE_ENABLE Build a vendor supplied firmware update no
CONSOLE_SPEED Serial console baud rate 115200
SERIAL_CONSOLE_ENABLE Use serial line for console output, otherwise use VGA yes
CONSOLE_DEV serial TTY instance to use for console ttyS0
EXTRA_CMDLINE_LINUX Extra kernel command line parameters to pass to the ONIE Linux kenrel none
RECOVERY_DEFAULT_ENTRY Default menu option when booting a recovery image (rescue or embed) rescue
SKIP_ETHMGMT_MACS Should ONIE skip programming the Ethernet management interface MAC addresses? no
VENDOR_VERSION Optional string to append to the ONIE version string empty

Optional Utilities and Features to Include:

machine.make optional features
Utility / Feature Meaning Default
MTDUTILS_ENABLE MTD flash utilities yes, for U-Boot platforms
GPT_ENABLE GUID Partition Table (GPT) disk partitions yes
LVM2_ENABLE Logical Volume Manager support yes
PARTED_ENABLE parted disk partitioning tool yes
GRUB_ENABLE GRUB boot loader support yes, for x86_64 platforms
UEFI_ENABLE Build ONIE for a UEFI machine no
I2CTOOLS_ENABLE I2C peek/poke utilites yes
DMIDECODE_ENABLE dmidecode (SMBIOS information) utility yes, for x86_64 platforms
ETHTOOL_ENABLE ethtool utility yes
ACPI_ENABLE Support for ACPI and related utilities yes, for x86_64 platforms
KEXEC_ENABLE kexec utility yes
FLASHROM_ENABLE flashrom BIOS programming utility yes, for x86_64 platforms
IPMITOOL_ENABLE IPMI utility no