summaryrefslogtreecommitdiffstats
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
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()
13 13
14# Separate PMU and APU arguments 14# Separate PMU and APU arguments
15APU_args = sys.argv[1:] 15APU_args = sys.argv[1:]
16PMU_args = APU_args[APU_args.index('-pmu-args')+1] 16mbtype=''
17APU_args.remove('-pmu-args')
18APU_args.remove(PMU_args)
19PMU_args = PMU_args.split()
20 17
21PMU_rom = PMU_args[PMU_args.index('-kernel')+1] 18if '-pmu-args' in APU_args:
22error_msg = None 19 MB_args = APU_args[APU_args.index('-pmu-args')+1]
20 APU_args.remove('-pmu-args')
21 APU_args.remove(MB_args)
22 MB_args = MB_args.split()
23 PMU_rom = MB_args[MB_args.index('-kernel')+1]
24 mbtype='PMU'
25elif '-plm-args' in APU_args:
26 MB_args = APU_args[APU_args.index('-plm-args')+1]
27 APU_args.remove('-plm-args')
28 APU_args.remove(MB_args)
29 MB_args = MB_args.split()
30 mbtype='PLM'
31else:
32 error_msg = '\nMultiarch not setup properly.'
33 sys.exit(error_msg)
23 34
24if os.path.exists(PMU_rom): 35error_msg = None
36if (mbtype == 'PMU' and os.path.exists(PMU_rom)) or mbtype == 'PLM':
25 37
26 # We need to switch tcp serial arguments (if they exist, e.g. qemurunner) to get the output correctly 38 # We need to switch tcp serial arguments (if they exist, e.g. qemurunner) to get the output correctly
27 tcp_serial_ports = [i for i, s in enumerate(APU_args) if 'tcp:127.0.0.1:' in s] 39 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):
30 if len(tcp_serial_ports) == 2: 42 if len(tcp_serial_ports) == 2:
31 APU_args[tcp_serial_ports[0]],APU_args[tcp_serial_ports[1]] = APU_args[tcp_serial_ports[1]],APU_args[tcp_serial_ports[0]] 43 APU_args[tcp_serial_ports[0]],APU_args[tcp_serial_ports[1]] = APU_args[tcp_serial_ports[1]],APU_args[tcp_serial_ports[0]]
32 44
33 pmu_cmd = binpath + '/qemu-system-microblazeel ' + ' '.join(PMU_args) + ' -machine-path ' + mach_path 45 mb_cmd = binpath + '/qemu-system-microblazeel ' + ' '.join(MB_args) + ' -machine-path ' + mach_path
34 apu_cmd = binpath + '/qemu-system-aarch64 ' + ' '.join(APU_args) + ' -machine-path ' + mach_path 46 apu_cmd = binpath + '/qemu-system-aarch64 ' + ' '.join(APU_args) + ' -machine-path ' + mach_path
35 47
36 # Debug prints 48 # Debug prints
37 print('\nPMU instance cmd: %s\n' % pmu_cmd) 49 print('\n%s instance cmd: %s\n' % (mbtype, mb_cmd))
38 print('APU instance cmd: %s\n' % apu_cmd) 50 print('APU instance cmd: %s\n' % apu_cmd)
39 51
40 52
41 # Invoke QEMU pmu instance 53 # Invoke QEMU pmu instance
42 process_pmu = subprocess.Popen(pmu_cmd, shell=True, stderr=subprocess.PIPE) 54 process_pmu = subprocess.Popen(mb_cmd, shell=True, stderr=subprocess.PIPE)
43 55
44 # Invoke QEMU APU instance 56 # Invoke QEMU APU instance
45 process_apu = subprocess.Popen(apu_cmd, shell=True, stderr=subprocess.PIPE) 57 process_apu = subprocess.Popen(apu_cmd, shell=True, stderr=subprocess.PIPE)
@@ -47,8 +59,9 @@ if os.path.exists(PMU_rom):
47 error_msg = '\nQEMU APU instance failed:\n%s' % process_apu.stderr.read().decode() 59 error_msg = '\nQEMU APU instance failed:\n%s' % process_apu.stderr.read().decode()
48 60
49else: 61else:
50 error_msg = '\nError: Missing PMU ROM: %s' % PMU_rom 62 if mbtype == 'PMU':
51 error_msg += '\nSee "meta-xilinx/README.qemu.md" for more information on accquiring the PMU ROM.\n' 63 error_msg = '\nError: Missing PMU ROM: %s' % PMU_rom
64 error_msg += '\nSee "meta-xilinx/README.qemu.md" for more information on accquiring the PMU ROM.\n'
52 65
53shutil.rmtree(mach_path) 66shutil.rmtree(mach_path)
54sys.exit(error_msg) 67sys.exit(error_msg)