aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManjukumar Matha <manjukumar.harthikote-matha@xilinx.com>2018-11-28 22:44:38 -0800
committerManjukumar Matha <manjukumar.harthikote-matha@xilinx.com>2019-06-28 14:58:31 -0700
commit725f0b0ffb49ba8f07f6ca5a6bcc36c83eb4162c (patch)
tree3d6c89d9d1e9bf78a8636c5000b48941d98fa53a
parent22d9e2a8e00a029be125178ddddd1bbf653eb002 (diff)
downloadmeta-xilinx-725f0b0ffb49ba8f07f6ca5a6bcc36c83eb4162c.tar.gz
meta-xilinx-725f0b0ffb49ba8f07f6ca5a6bcc36c83eb4162c.tar.bz2
meta-xilinx-725f0b0ffb49ba8f07f6ca5a6bcc36c83eb4162c.zip
qemu-system-aarch64-multiarch: Enable plm argument in runqemu
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@xilinx.com> Signed-off-by: Manjukumar Matha <manjukumar.harthikote-matha@xilinx.com>
-rw-r--r--meta-xilinx-bsp/recipes-devtools/qemu/files/qemu-system-aarch64-multiarch37
1 files 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 2c92c686..ba0e2743 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)