[meta-xilinx] [meta-xilinx-bsp][PATCH] qemu-system-aarch64-multiarch: Enable plm argument in runqemu

Manjukumar Matha manjukumar.harthikote-matha at xilinx.com
Mon Apr 29 11:23:14 PDT 2019


Adding plm args to enable plm in runqemu for Versal devices

The PLM (Platform Loader/Manager) is responsible for:
•   System Initialization
•   Boot and Configuration of various devices in system
•   Secure boot
•   Platform Management
•   Error Management
•   Partial Reconfiguration
•   Subsystem restart
•   Health monitoring

With the addition of plm args in the machine configurations (and
appending -multiarch to QB_SYSTEM_NAME), runqemu will support multiarch
emulation and will spin up one instance for the APU and one instance
for the PLM.

Signed-off-by: Jaewon Lee <jaewon.lee at xilinx.com>
Signed-off-by: Manjukumar Matha <manjukumar.harthikote-matha at xilinx.com>
---
 .../qemu/files/qemu-system-aarch64-multiarch       | 37 +++++++++++++++-------
 1 file changed, 25 insertions(+), 12 deletions(-)

diff --git a/meta-xilinx-bsp/recipes-devtools/qemu/files/qemu-system-aarch64-multiarch b/meta-xilinx-bsp/recipes-devtools/qemu/files/qemu-system-aarch64-multiarch
index 2c92c68..ba0e274 100644
--- a/meta-xilinx-bsp/recipes-devtools/qemu/files/qemu-system-aarch64-multiarch
+++ b/meta-xilinx-bsp/recipes-devtools/qemu/files/qemu-system-aarch64-multiarch
@@ -13,15 +13,27 @@ mach_path = tempfile.mkdtemp()
 
 # Separate PMU and APU arguments
 APU_args = sys.argv[1:]
-PMU_args = APU_args[APU_args.index('-pmu-args')+1]
-APU_args.remove('-pmu-args')
-APU_args.remove(PMU_args)
-PMU_args = PMU_args.split()
+mbtype=''
 
-PMU_rom = PMU_args[PMU_args.index('-kernel')+1]
-error_msg = None
+if '-pmu-args' in APU_args:
+    MB_args = APU_args[APU_args.index('-pmu-args')+1]
+    APU_args.remove('-pmu-args')
+    APU_args.remove(MB_args)
+    MB_args = MB_args.split()
+    PMU_rom = MB_args[MB_args.index('-kernel')+1]
+    mbtype='PMU'
+elif '-plm-args' in APU_args:
+    MB_args = APU_args[APU_args.index('-plm-args')+1]
+    APU_args.remove('-plm-args')
+    APU_args.remove(MB_args)
+    MB_args = MB_args.split()
+    mbtype='PLM'
+else:
+    error_msg = '\nMultiarch not setup properly.'
+    sys.exit(error_msg)
 
-if os.path.exists(PMU_rom):
+error_msg = None
+if (mbtype == 'PMU' and os.path.exists(PMU_rom)) or mbtype == 'PLM':
 
     # We need to switch tcp serial arguments (if they exist, e.g. qemurunner) to get the output correctly
     tcp_serial_ports = [i for i, s in enumerate(APU_args) if 'tcp:127.0.0.1:' in s]
@@ -30,16 +42,16 @@ if os.path.exists(PMU_rom):
     if len(tcp_serial_ports) == 2:
         APU_args[tcp_serial_ports[0]],APU_args[tcp_serial_ports[1]] = APU_args[tcp_serial_ports[1]],APU_args[tcp_serial_ports[0]]
 
-    pmu_cmd =  binpath + '/qemu-system-microblazeel ' + ' '.join(PMU_args) + ' -machine-path ' + mach_path
+    mb_cmd =  binpath + '/qemu-system-microblazeel ' + ' '.join(MB_args) + ' -machine-path ' + mach_path
     apu_cmd =  binpath + '/qemu-system-aarch64 ' + ' '.join(APU_args) + ' -machine-path ' + mach_path
 
     # Debug prints
-    print('\nPMU instance cmd: %s\n' % pmu_cmd)
+    print('\n%s instance cmd: %s\n' % (mbtype, mb_cmd))
     print('APU instance cmd: %s\n' % apu_cmd)
 
 
     # Invoke QEMU pmu instance
-    process_pmu = subprocess.Popen(pmu_cmd, shell=True, stderr=subprocess.PIPE)
+    process_pmu = subprocess.Popen(mb_cmd, shell=True, stderr=subprocess.PIPE)
 
     # Invoke QEMU APU instance
     process_apu = subprocess.Popen(apu_cmd, shell=True, stderr=subprocess.PIPE)
@@ -47,8 +59,9 @@ if os.path.exists(PMU_rom):
         error_msg = '\nQEMU APU instance failed:\n%s' % process_apu.stderr.read().decode()
 
 else:
-    error_msg = '\nError: Missing PMU ROM: %s' % PMU_rom
-    error_msg += '\nSee "meta-xilinx/README.qemu.md" for more information on accquiring the PMU ROM.\n'
+    if mbtype == 'PMU':
+        error_msg = '\nError: Missing PMU ROM: %s' % PMU_rom
+        error_msg += '\nSee "meta-xilinx/README.qemu.md" for more information on accquiring the PMU ROM.\n'
 
 shutil.rmtree(mach_path)
 sys.exit(error_msg)
-- 
2.7.4



More information about the meta-xilinx mailing list