UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 71028

2018.1-2018.3 Zynq UltraScale+ MPSoC: PetaLinux Warm-Restart BSP fails to wake up Ethernet

Description

In 2018.1-2018.3 PetaLinux, warm-restart BSP fails to wake up Ethernet. 

Wakeup on LAN (WOL) requires an RX BD scratch area that is accessible to the DMA, and it should be set up with a tie off descriptor.

OCM is used for this purpose, but it is not possible in the isolation design because OCM is secure.

As a result, wakeup on LAN does not work with the below design configurations because non-secure GEM cannot access secure OCM:


  1. Isolation is enabled.
  2. OCM is TZ secure and OCM_XMPU protection is enabled.
  3. GEM is TZ non-secure.

Solution

The following are possible work-arounds:

  1. Disable OCM_XMPU protection (make OCM non-secure).
  2. Make GEM TZ secure with the below configurations using Vivado design suite:
    • Add a Secure GEM master in the APU secure subsystem.
    • Add a GEM peripheral (non-secure) and OCM (secure) in the PMU Subsystem
  3. Make GEM TZ secure and add a GEM master in the OCM XMPU region during suspend when Ethernet is set as the wakeup source in the PMUFW (See the Attached patch 0001-pmufw-Changes-for-wakeup-on-LAN-for-isolation-design.patch)


Steps to make WOL work using 0001-pmufw-Changes-for-wakeup-on-LAN-for-isolation-design.patch:

a) Create an isolation design with the below configuration:

  1. Enable isolation
  2. Add OCM TZ secure to the APU Secure subsystem
  3. Add GEM peripheral (secure/non-secure) and OCM (Size: 256KB) TZ secure to the PMU subsystem
  4. Generate HDF with the above configurations

b) Copy the attached patch to the pmu-firmware directory. 

If this directory does not exist, create one in the meta-user layer:

$ cp 0001-pmufw-Changes-for-wakeup-on-LAN-for-isolation-design.patch <plnx-proj-root>/project-spec/meta-user/recipes-bsp/pmu-firmware/files


c) Add the patch to the pmu-firmware_%.bbappend recipe and build the images.


SRC_URI_append = " \
        file://0001-pmufw-Changes-for-wakeup-on-LAN-for-isolation-design.patch \
        "
 
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"

# Note: for 2018.3 release onwards you don't belwo variables.

EXTERNALXSCTSRC = ""
EXTERNALXSCTSRC_BUILD = ""

d) Use the PMUFW and FSBL generated in step c to boot Linux

e) Perform the steps described on the Wake on LAN page.

Note:

  • Changing the XMPU/XPPU configurations runtime can cause improper behavior if any other subsystem is running while suspending one subsystem with Ethernet as the wakeup source.
  • 0001-pmufw-Changes-for-wakeup-on-LAN-for-isolation-design.patch does not take care of ongoing transactions and it is tested and verified only while the APU subsystem is running.
  • 0001-pmufw-Changes-for-wakeup-on-LAN-for-isolation-design.patch is not part of the embeddedsw git repo.

Attachments

Associated Attachments

Name File Size File Type
AR71028-patch.zip 3 KB ZIP
AR# 71028
Date 12/10/2018
Status Active
Type General Article
Devices
  • Zynq UltraScale+ MPSoC
Tools
  • Linux
  • PetaLinux - 2018.1
  • PetaLinux - 2018.2
  • PetaLinux - 2018.3
Boards & Kits
  • Zynq UltraScale+ MPSoC Boards and Kits
Page Bookmarked