MPSoC Power Management
MPSoC Power Management
Table of Contents
Zynq UltraScale+ MPSoC Power Management
This page describes how to build and run PMU Firmware on QEMU.
Software Tools and System Requirements
- Xilinx Vivado 2016.3
- Xilinx Petalinux 2016.3
Building PMU Firmware
1) Create a HW design in Vivado and export it to SDK2) Open Xilinx SDK
3) Create a new workspace
4) Select *File->New->Application Project*
5) Select *psu_microblaze_0* from Processors List
6) Click *Next*
7) Select *ZynqMP PMU Firmware* App and click *Finish*
Now you should have a PMUFW_ELF generated.
Creating a SelfSuspend App for A53/R5
1. Open SDK and create a BSP for A53/R5 (File->New->Board Support Package)2. From the BSP settings dialogue, select xilpm library
3. Click Finish and let the library build complete
4. Now Open the mss file and scroll down to library section
5. Select "Import Examples" link beside xilpm
6. Select xilpm_selfsuspend_example from the list and click OK to Import
7. You should have an test App elf built under the Debug section.
Running on QEMU
PMU Firmware can be executed in a QEMU MultiArch environment with two separate QEMU Instances (machines).Following are the instructions to run PMU Firmware on QEMU.
1. Source settings.sh from the Petalinux installation
$source settings.sh
INFO: Checking free disk space INFO: Checking installed tools INFO: Checking installed development libraries INFO: Checking network and other services WARNING: No tftp server found - please refer to "PetaLinux SDK Installation Guide" for its impact and solution
$ petalinux-create -t project -s Xilinx-ZynqMP-QEMU-2016.3.bsp
INFO: Create project: INFO: Projects: INFO: * Xilinx-ZynqMP-QEMU-2016.3 INFO: has been successfully installed to <current directory> INFO: New project successfully created in <current directory>
ARM_DTB: pre-built/linux/images/zynqmp-qemu-arm.dtb PMU_DTB: pre-built/linux/images/zynqmp-qemu-pmu.dtb PMU_ROM_ELF: pre-built/linux/images/pmu_rom_sha3.elf
4. Create a qemu-tmp directory; This is used by the QEMU machines
$ mkdir qemu-tmp
5. Open two terminals, One for ARM_QEMU machine and the other for PMU_QEMU Machine
6. On PMU_QEMU, execute the following command to start PMU machine:
$qemu-system-microblazeel -M microblaze-fdt -hw-dtb <path_to_pmu_dtb> -kernel <path_to_pmu_rom_elf> -nographic -machine-path qemu-tmp
---- Xilinx QEMU Aug 20 2015 11:55:43. ---- qemu-system-microblazeel: Failed to connect socket: No such file or directory QEMU waiting for connection on: disconnected:unix:./qemu-tmp/qemu-rport-_pmu@0,server Warning: path not on HugeTLBFS: ././qemu-tmp Warning: path not on HugeTLBFS: ././qemu-tmp Warning: path not on HugeTLBFS: ././qemu-tmp Warning: path not on HugeTLBFS: ././qemu-tmp Warning: path not on HugeTLBFS: ././qemu-tmp Warning: path not on HugeTLBFS: ././qemu-tmp Warning: path not on HugeTLBFS: ././qemu-tmp Warning: path not on HugeTLBFS: ././qemu-tmp Warning: path not on HugeTLBFS: ././qemu-tmp Warning: path not on HugeTLBFS: ././qemu-tmp Warning: path not on HugeTLBFS: ././qemu-tmp QEMU 2.2.50 monitor - type 'help' for more information (qemu) QEMU 2.2.50 monitor - type 'help' for more information (qemu)
$qemu-system-aarch64 -M arm-generic-fdt -hw-dtb <path_to_ARM_DTB> -gdb tcp::6667 -nographic -machine-path qemu-tmp -tftp <path_to_PETALINUX_IMAGES>
---- Xilinx QEMU Aug 20 2015 11:55:43. ---- Warning: path not on HugeTLBFS: qemu-tmp/qemu-memory-_memory@00000000 Warning: path not on HugeTLBFS: qemu-tmp/qemu-memory-_pmu_ram@ffdc0000 Warning: path not on HugeTLBFS: qemu-tmp/qemu-memory-_ipibuf@ff990000 Warning: path not on HugeTLBFS: qemu-tmp/qemu-memory-_memory0@0xFFFC0000 Warning: path not on HugeTLBFS: qemu-tmp/qemu-memory-_memory1@0xFFFD0000 Warning: path not on HugeTLBFS: qemu-tmp/qemu-memory-_memory2@0xFFFE0000 Warning: path not on HugeTLBFS: qemu-tmp/qemu-memory-_memory3@0xFFFF0000 Warning: path not on HugeTLBFS: qemu-tmp/qemu-memory-_memory0@0x00000 Warning: path not on HugeTLBFS: qemu-tmp/qemu-memory-_memory0@0x20000 Warning: path not on HugeTLBFS: qemu-tmp/qemu-memory-_memory1@0x00000 Warning: path not on HugeTLBFS: qemu-tmp/qemu-memory-_memory1@0x20000
$device_add loader,file=<path_to_pmufw_elf>,cpu=0
After executing this command, you should see a PMU-FW banner message on STDOUT:
PMU Firmware rc1-00006-gdc6ab46 EM (MOD-0): Initialized. PMU-PM: Power Management Init
$gdbremote connect localhost:6667
attempting to launch tcfgdbclient xsdb% Info: Cortex-A53 #0 (target 3) Stopped at 0x0 (Suspended) xsdb% Info: Cortex-A53 #1 (target 4) Stopped at 0x0 (Suspended) xsdb% Info: Cortex-A53 #2 (target 5) Stopped at 0x0 (Suspended) xsdb% Info: Cortex-A53 #3 (target 6) Stopped at 0x0 (Suspended) xsdb% Info: Cortex-R5 #0 (target 8) Stopped at 0x0 (Suspended) xsdb% Info: Cortex-R5 #1 (target 9) Stopped at 0x0 (Suspended)
10a. Load and run the test app on A53 using xsdb:
$targets -set -filter {name =~ "Cortex-A53 #0"}
$dow <path_to_standalone_selfsuspend_app_a53_elf
Downloading Program -- /home/pmu_bsp_xilpm_selfsuspend_example_1.elf section, .text: 0x00000000 - 0x0000447b section, .init: 0x00004480 - 0x000044b3 section, .fini: 0x000044c0 - 0x000044f3 section, .note.gnu.build-id: 0x000044f4 - 0x00004517 section, .rodata: 0x00004518 - 0x00004b1f section, .rodata1: 0x00004b20 - 0x00004b3f section, .data: 0x00004b40 - 0x00006107 section, .data1: 0x00006108 - 0x0000613f section, .eh_frame: 0x00006140 - 0x00006143 section, .mmu_tbl0: 0x00007000 - 0x0000700f section, .mmu_tbl1: 0x00008000 - 0x00009fff section, .mmu_tbl2: 0x0000a000 - 0x0000dfff section, .init_array: 0x0000e000 - 0x0000e007 section, .fini_array: 0x0000e008 - 0x0000e047 section, .sdata: 0x0000e048 - 0x0000e07f section, .bss: 0x0000e080 - 0x0000e0ff section, .heap: 0x0000e100 - 0x000100ff section, .stack: 0x00010100 - 0x000130ff 100% 0MB 1.3MB/s 00:00 Setting PC to Program Start Address 0x00000000 Successfully downloaded /home/pmu_bsp_xilpm_selfsuspend_example_1.elf
$con
Info: Cortex-A53 #0 (target 3) Running Info: Cortex-A53 #1 (target 4) Running Info: Cortex-A53 #2 (target 5) Running Info: Cortex-A53 #3 (target 6) Running Info: Cortex-R5 #0 (target 8) Running Info: Cortex-R5 #1 (target 9) Running
10b.Load and run the test app on R5 using xsdb:
$targets -set -filter {name =~ "Cortex-R5 #0"}
$dow <path_to_standalone_selfsuspend_app_a53_elf>
mask_write 0xff5e023c [expr ~2] 0
con
11. You should now see the Test App output STDOUT.
APU: Main APU: INITIAL BOOT APU: OK, configured timer APU: Waiting for ticks... APU: Timer0 interrupt handler, tick_count = 1 APU: Timer0 interrupt handler, tick_count = 2 APU: Timer0 interrupt handler, tick_count = 3 APU: Saved context (tick_count = 3) APU: XPm_SelfSuspend(2, -1, 0, 0) Received IPI Mask:0x00000001 PMUFW: PmSelfSuspend: (NODE_APU_0, -1, 0) PMUFW: PmProcTrActiveToSuspend: ACTIVE->SUSPENDING NODE_APU_0 APU: XPm_SetRequirement(11, 2, 0, 1) Received IPI Mask:0x00000001 PMUFW: PmSetRequirement: (NODE_OCM_BANK_0, 2, 0, REQAUPEUS:T _XAPCmK__SNeOt)R equirement(12, 2, 0, 1) Received IPI Mask:0x00000001 PMUFW: PmSetRequirement: (NODE_OCM_BANK_1, 2, 0, REQUEST_ACK_NO) APU: XPm_SetRequirement(13, 2, 0, 1) Received IPI Mask:0x00000001 PMUFW: PmSetRequirement: (NODE_OCM_BANK_2, 2, 0, REQUEST_AAPCUK:_ NXOP)m _SetRequirement(14, 2, 0, 1) Received IPI Mask:0x00000001 PMUFW: PmSetRequirement: (NODE_OCM_BANK_3, 2, 0, REQUEST_ACK_NO) APU: Going to WFI... PMUFW: PmProcTrSuspendToSleep: SUSPENDING->SLEEP NODE_APU_0 PMUFW: PmRequirementUpdateScheduled: NODE_APU_0 PMUFW: PmSlaveChangeState: NODE_OCM_BANK_0 2->1 PMUFW: PmSlaveChangeState: NODE_OCM_BANK_1 2->1 PMUFW: PmSlaveChangeState: NODE_OCM_BANK_2 2->1 PMUFW: PmOpportunisticSuspend: Opportunistic suspend attempt for NODE_APU PMUFW: PmPwrDnHandler: NODE_APU PMUFW: PmOpportunisticSuspend: Opportunistic suspend attempt for NODE_FPD PMUFW: PmHasAwakeChild: NODE_L2 PMUFW: PmWakeUpDisableAll: for NODE_APU_0 PMUFW: PmRequirementUpdateScheduled: NODE_APU_0 PMUFW: PmSlaveChangeState: NODE_OCM_BANK_0 1->2 PMUFW: PmSlaveChangeState: NODE_OCM_BANK_1 1->2 PMUFW: PmSlaveChangeState: NODE_OCM_BANK_2 1->2 PMUFW: PmProcTrSleepToActive: SLEEP->ACTIVE NODE_APU_0 PMUFW: PmPwrUpHandler: NODE_APU APU: Main APU: RESUMED . . . . APU: Restored context (tick_count = 263) APU: Timer0 interrupt handler, tick_count = 264 APU: Waiting for ticks... APU: Timer0 interrupt handler, tick_count = 265 APU: Timer0 interrupt handler, tick_count = 266 APU: Timer0 interrupt handler, tick_count = 267 APU: Saved context (tick_count = 267) APU: XPm_SelfSuspend(2, -1, 0, 0) Received IPI Mask:0x00000001 PMUFW: PmSelfSuspend: (NODE_APU_0, -1, 0) PMUFW: PmProcTrActiveToSuspend: ACTIVE->SUSPENDING NODE_APU_0 APU: XPm_SetRequirement(11, 2, 0, 1) Received IPI Mask:0x00000001 PMUFW: PmSetRequirement: (NODE_OCM_BANK_0, 2, 0, REQUEST_ACK_NO) APU: XPm_SetRequirement(12, 2, 0, 1) Received IPI Mask:0x00000001 PMUFW: PmSetRequirement: (NODE_OCM_BANK_1, 2, 0, REQUEST_ACK_NO) APU: XPm_SetRequirement(13, 2, 0, 1) Received IPI Mask:0x00000001 PMUFW: PmSetRequirement: (NODE_OCM_BANK_2, 2, 0, REQUEST_ACK_NO) APU: XPm_SetRequirement(14, 2, 0, 1) Received IPI Mask:0x00000001 PMUFW: PmSetRequirement: (NODE_OCM_BANK_3, 2, 0, REQUEST_ACKA_PNUO:)
CPU hotplug:
Follow Steps 1 to 9 from above instructions for loading the PMU Firmware on PMU_QEMU.
Instructions to load and run petalinux on ARM_QEMU using xsdb:
1. Execute the following to load U-Boot, ATF (bl31.elf), Linux (Image) and device tree (system.dtb):
$targets -set -filter {name =~ "Cortex-A53 #0"}
$dow <path_to_U-BOOT_ELF>
Downloading Program -- /home/u-boot.elf section, .data: 0x08000000 - 0x08080b37 100% 0MB 8.7MB/s 00:00 Setting PC to Program Start Address 0x08000000 Successfully downloaded /home/u-boot.elf
Downloading Program -- /home/bl31.elf section, ro: 0xfffe4000 - 0xfffe9fff section, .data: 0xfffea000 - 0xfffea017 section, stacks: 0xfffea040 - 0xfffeb03f section, .bss: 0xfffeb040 - 0xfffec237 section, xlat_table: 0xfffed000 - 0xffff2fff section, coherent_ram: 0xffff3000 - 0xffff3fff 100% 0MB 13.0MB/s 00:00 Setting PC to Program Start Address 0xfffe4000 Successfully downloaded /home/bl31.elf
con
Info: Cortex-A53 #0 (target 3) Running Info: Cortex-A53 #1 (target 4) Running Info: Cortex-A53 #2 (target 5) Running Info: Cortex-A53 #3 (target 6) Running Info: Cortex-R5 #0 (target 8) Running Info: Cortex-R5 #1 (target 9) Running
After executing these, you should see a ATF banner message on ARM_QEMU and u-boot process. Let the timeout
expire and U-Boot will load Image and device tree via tftp and boot Linux as shown below.
NOTICE: ATF running on QEMU/RTL4.0 NOTICE: BL3-1: Secure code at 0xfffc0000 NOTICE: BL3-1: Non secure code at 0x8000000 NOTICE: BL3-1: v1.1(release): NOTICE: BL3-1: Built : 13:22:44, Aug 20 2015 U-Boot 2015.07 (Aug 20 2015 - 13:25:29 +0530) Xilinx ZynqMP, Build: jenkins-Petalinux_2015.3_build_new-Petalinux_Build_reference_Design_bsp_2015.3_64bit-39 I2C: ready DRAM: 1 GiB Enabling Caches... EL Level: EL2 NAND: 4096 MiB MMC: zynq_sdhci: 0 Using default environment In: serial Out: serial Err: serial SCSI: SATA link 0 timeout. AHCI 0001.0000 32 slots 2 ports 1.5 Gbps 0x3 impl SATA mode flags: ncq only scanning bus for devices... Found 0 device(s). Net: Gem.ff0b0000 Hit any key to stop autoboot: 0 Using Gem.ff0b0000 device TFTP from server 10.0.2.2; our IP address is 10.0.2.15 Filename 'Image'. Load address: 0x80000 Loading: ################################################################# #################### 2.1 MiB/s done Bytes transferred = 24061440 (16f2600 hex) Gem.ff0b0000:7 is connected to Gem.ff0b0000. Reconnecting to Gem.ff0b0000 Using Gem.ff0b0000 device TFTP from server 10.0.2.2; our IP address is 10.0.2.15 Filename 'system.dtb'. Load address: 0x7000000 Loading: #### 32.2 KiB/s done Bytes transferred = 20027 (4e3b hex) ## Flattened Device Tree blob at 07000000 Booting using the fdt blob at 0x7000000 reserving fdt memory region: addr=3f000000 size=1000000 Loading Device Tree to 000000000fff8000, end 000000000ffffe3a ... OK Starting kernel ... [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 4.0.0 (xbrbbot@xhdl3853) (gcc version 4.8.2 20131014 (prerelease) (crosstool-NG linaro-1.13.1-4.8-2013.10 - Linaro GCC 2013.10) ) #2 SMP Thu Aug 20 13:28:31 IST 2015 [ 0.000000] CPU: AArch64 Processor [410fd032] revision 2 [ 0.000000] Detected VIPT I-cache on CPU0 [ 0.000000] alternatives: enabling workaround for ARM errata 826319, 827319, 824069 [ 0.000000] alternatives: enabling workaround for ARM erratum 845719 [ 0.000000] Early serial console at MMIO 0xff000000 (options '115200n8') [ 0.000000] bootconsole [uart0] enabled [ 0.000000] efi: Getting EFI parameters from FDT: [ 0.000000] efi: UEFI not found. [ 0.000000] psci: probing for conduit method from DT. [ 0.000000] psci: Using PSCI v0.1 Function IDs from DT [ 0.000000] PERCPU: Embedded 15 pages/cpu @ffffffc03efa4000 s24448 r8192 d28800 u61440 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 258560 [ 0.000000] Kernel command line: console=ttyPS0,115200 earlycon=cdns,mmio,0xff000000,115200n8 [ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) [ 0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes) [ 0.000000] software IO TLB [mem 0x39e00000-0x3de00000] (64MB) mapped at [ffffffc039e00000-ffffffc03ddfffff] [ 0.000000] Memory: 925952K/1048576K available (6516K kernel code, 521K rwdata, 2492K rodata, 13944K init, 484K bss, 122624K reserved, 0K cma-reserved) [ 0.000000] Virtual kernel memory layout: [ 0.000000] vmalloc : 0xffffff8000000000 - 0xffffffbdffff0000 ( 247 GB) [ 0.000000] vmemmap : 0xffffffbe00000000 - 0xffffffbfc0000000 ( 7 GB maximum) [ 0.000000] 0xffffffbe00000000 - 0xffffffbe00e00000 ( 14 MB actual) [ 0.000000] fixed : 0xffffffbffabfe000 - 0xffffffbffac00000 ( 8 KB) [ 0.000000] PCI I/O : 0xffffffbffae00000 - 0xffffffbffbe00000 ( 16 MB) [ 0.000000] modules : 0xffffffbffc000000 - 0xffffffc000000000 ( 64 MB) [ 0.000000] memory : 0xffffffc000000000 - 0xffffffc040000000 ( 1024 MB) [ 0.000000] .init : 0xffffffc00094f000 - 0xffffffc0016ed000 ( 13944 KB) [ 0.000000] .text : 0xffffffc000080000 - 0xffffffc00094e0c4 ( 9017 KB) [ 0.000000] .data : 0xffffffc0016f0000 - 0xffffffc001772600 ( 522 KB) [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4. [ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4 [ 0.000000] NR_IRQS:64 nr_irqs:64 0 [ 0.000000] Architected cp15 timer(s) running at 50.00MHz (phys). [ 0.000314] sched_clock: 56 bits at 50MHz, resolution 20ns, wraps every 2748779069440ns [ 0.620014] Calibrating delay loop (skipped), value calculated using timer frequency.. 100.00 BogoMIPS (lpj=500000) [ 0.679623] pid_max: default: 32768 minimum: 301 [ 1.206299] Security Framework initialized [ 1.341221] AppArmor: AppArmor initialized [ 1.389545] Mount-cache hash table entries: 2048 (order: 2, 16384 bytes) [ 1.390495] Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes) [ 3.789850] hw perfevents: no hardware support available [ 3.790580] EFI services will not be available. [ 10.512631] CPU1: failed to come online Received IPI Mask:0x00000001 PMUFW: PmRequestWakeup: (NODE_APU_1, REQUEST_ACK_NO) PMUFW: PmProcTrSleepToActive: SLEEP->ACTIVE NODE_APU_1 Received IPI Mask:0x00000001 PMUFW: PmRequestWakeup: (NODE_APU_2, REQUEST_ACK_NO) PMUFW: PmProcTrSleepToActive: SLEEP->ACTIVE NODE_APU_2 [ 16.050961] ---[ end Kernel panic - not syncing: Attempted to kill the idle task! [ 16.053398] Unable to handle kernel paging request at virtual address ffffffffffffffd0 [ 16.053453] pgd = ffffffc0017ee000 [ 16.053563] [ffffffffffffffd0] *pgd=0000000000000000, *pud=0000000000000000 [ 16.053623] Internal error: Oops: 97820005 [#2] SMP [ 16.053658] Modules linked in: [ 16.053790] CPU: 2 PID: 0 Comm: swapper/2 Tainted: G D 4.0.0 #2 [ 16.053809] Hardware name: ZynqMP EP108 (DT) [ 16.053839] task: ffffffc039926cc0 ti: ffffffc039928000 task.ti: ffffffc039928000 [ 16.111910] swapper/2[0]: undefined instruction: pc=ffffffc03992bb70 [ 16.112010] Code: 00887070 ffffffc0 3992bcb0 ffffffc0 (ffffffd0) [ 16.112381] swapper/2[0]: undefined instruction: pc=ffffffc001701878 [ 16.112428] Code: 00000000 00000000 00000000 00000000 (01701878) [ 17.108584] CPU2: failed to come online Received IPI Mask:0x00000001 PMUFW: PmRequestWakeup: (NODE_APU_3, REQUEST_ACK_NO) PMUFW: PmProcTrSleepToActive: SLEEP->ACTIVE NODE_APU_3 [ 17.755877] CPU3: Booted secondary processor [ 17.756990] Detected VIPT I-cache on CPU3 [ 18.738945] CPU3: failed to come online [ 18.743938] Brought up 1 CPUs [ 18.744277] SMP: Total of 1 processors activated. [ 18.798529] alternatives: patching kernel code [ 19.521503] devtmpfs: initialized [ 21.007121] DMI not present or invalid. [ 21.615927] xor: measuring software checksum speed [ 21.716482] 8regs : 1106.800 MB/sec [ 21.818155] 8regs_prefetch: 1073.600 MB/sec [ 21.919814] 32regs : 1020.400 MB/sec [ 22.021615] 32regs_prefetch: 902.000 MB/sec [ 22.022137] xor: using function: 8regs (1106.800 MB/sec) [ 22.216142] NET: Registered protocol family 16 [ 22.471694] cpuidle: using governor ladder [ 22.472302] cpuidle: using governor menu [ 22.473089] vdso: 2 pages (1 code @ ffffffc0016f5000, 1 data @ ffffffc0016f4000) [ 22.474195] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers. [ 22.477467] DMA: preallocated 256 KiB pool for atomic allocations [ 24.824334] raid6: int64x1 438 MB/s [ 24.997341] raid6: int64x2 172 MB/s [ 25.170003] raid6: int64x4 790 MB/s [ 25.343787] raid6: int64x8 346 MB/s [ 25.686015] raid6: neonx1 120 MB/s [ 25.859937] raid6: neonx2 151 MB/s [ 26.033488] raid6: neonx4 155 MB/s [ 26.206273] raid6: neonx8 105 MB/s [ 26.206688] raid6: using algorithm int64x4 (790 MB/s) [ 26.207231] raid6: using intx1 recovery algorithm [ 26.211865] SCSI subsystem initialized [ 26.269548] libata version 3.00 loaded. [ 26.391634] usbcore: registered new interface driver usbfs [ 26.393819] usbcore: registered new interface driver hub [ 26.394807] usbcore: registered new device driver usb [ 26.433911] NetLabel: Initializing [ 26.434553] NetLabel: domain hash size = 128 [ 26.434943] NetLabel: protocols = UNLABELED CIPSOv4 [ 26.437219] NetLabel: unlabeled traffic allowed by default [ 26.446868] Switched to clocksource arch_sys_counter [ 27.054434] AppArmor: AppArmor Filesystem Enabled [ 27.159903] NET: Registered protocol family 2 [ 27.385424] TCP established hash table entries: 8192 (order: 4, 65536 bytes) [ 27.386545] TCP bind hash table entries: 8192 (order: 5, 131072 bytes) [ 27.387774] TCP: Hash tables configured (established 8192 bind 8192) [ 27.447826] TCP: reno registered [ 27.448488] UDP hash table entries: 512 (order: 2, 16384 bytes) [ 27.449603] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes) [ 27.626109] NET: Registered protocol family 1 [ 27.820610] RPC: Registered named UNIX socket transport module. [ 27.821226] RPC: Registered udp transport module. [ 27.821665] RPC: Registered tcp transport module. [ 27.822088] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 49.469860] kvm [1]: Using HYP init bounce page @39098000 [ 50.072852] kvm [1]: interrupt-controller@f9040000 IRQ5 [ 51.163537] kvm [1]: timer IRQ3 [ 51.164079] kvm [1]: Hyp mode initialized successfully [ 52.420560] futex hash table entries: 1024 (order: 4, 65536 bytes) [ 52.462744] audit: initializing netlink subsys (disabled) [ 52.573266] audit: type=2000 audit(32.590:1): initialized [ 52.792874] HugeTLB registered 2 MB page size, pre-allocated 0 pages [ 52.882059] VFS: Disk quotas dquot_6.5.2 [ 52.953724] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 53.327310] NFS: Registering the id_resolver key type [ 53.329116] Key type id_resolver registered [ 53.329540] Key type id_legacy registered [ 53.391085] jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc. [ 53.718350] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254) [ 53.767404] io scheduler noop registered [ 53.767858] io scheduler deadline registered [ 53.768625] io scheduler cfq registered (default) [ 54.492145] xilinx-zynqmp-dma fd500000.dma: ZynqMP DMA driver Probe success [ 54.551784] xilinx-zynqmp-dma fd510000.dma: ZynqMP DMA driver Probe success [ 54.740110] xilinx-zynqmp-dma fd520000.dma: ZynqMP DMA driver Probe success [ 54.910164] xilinx-zynqmp-dma fd530000.dma: ZynqMP DMA driver Probe success [ 55.141847] xilinx-zynqmp-dma fd540000.dma: ZynqMP DMA driver Probe success [ 55.206339] xilinx-zynqmp-dma fd550000.dma: ZynqMP DMA driver Probe success [ 55.414598] xilinx-zynqmp-dma fd560000.dma: ZynqMP DMA driver Probe success [ 55.461215] xilinx-zynqmp-dma fd570000.dma: ZynqMP DMA driver Probe success [ 55.462099] xenfs: not registering filesystem on non-xen platform [ 64.227708] ff000000.serial: ttyPS0 at MMIO 0xff000000 (irq = 203, base_baud = 1562500) is a xuartps [ 64.230783] console [ttyPS0] enabled [ 64.230783] console [ttyPS0] enabled [ 64.231590] bootconsole [uart0] disabled [ 64.231590] bootconsole [uart0] disabled [ 65.453030] brd: module loaded [ 65.557028] loop: module loaded [ 66.211249] ahci-ceva fd0c0000.ahci: AHCI 0001.0000 32 slots 2 ports 1.5 Gbps 0x3 impl platform mode [ 66.212501] ahci-ceva fd0c0000.ahci: flags: ncq only [ 66.625314] scsi host0: ahci-ceva [ 66.630323] scsi host1: ahci-ceva [ 66.632362] ata1: SATA max UDMA/133 mmio [mem 0xfd0c0000-0xfd0c1fff] port 0x100 irq 196 [ 66.633114] ata2: SATA max UDMA/133 mmio [mem 0xfd0c0000-0xfd0c1fff] port 0x180 irq 196 [ 66.635828] mtdoops: mtd device (mtddev=name/number) must be supplied [ 67.193455] nand: device found, Manufacturer ID: 0x2c, Chip ID: 0x44 [ 67.194088] nand: Micron MT29F32G08ABCDBJ4 [ 67.194501] nand: 4096 MiB, SLC, erase size: 4096 KiB, page size: 16384, OOB size: 1216 [ 67.650842] Bad block table not found for chip 0 [ 67.663414] Bad block table not found for chip 0 [ 67.664025] Scanning device for bad blocks [ 113.853494] Bad block table written to 0x0000ffc00000, version 0x01 [ 114.080312] Bad block table written to 0x0000ff800000, version 0x01 [ 115.219174] 5 ofpart partitions found on MTD device arasan_nfc [ 115.219488] Creating 5 MTD partitions on "arasan_nfc": [ 115.250993] 0x000000000000-0x000000400000 : "nand-fsbl-uboot" [ 117.329739] ata2: SATA link down (SStatus 0 SControl 300) [ 117.477603] ata1: SATA link down (SStatus 0 SControl 300) [ 119.949421] 0x000000400000-0x000001800000 : "nand-linux" [ 120.230621] 0x000001800000-0x000001c00000 : "nand-device-tree" [ 120.427208] 0x000001c00000-0x000003000000 : "nand-rootfs" [ 120.580845] 0x000003000000-0x000003400000 : "nand-bitstream" [ 134.944898] m25p80 spi32766.0: found sst25wf080, expected m25p80 [ 134.946359] m25p80 spi32766.0: sst25wf080 (1024 Kbytes) [ 135.067396] 1 ofpart partitions found on MTD device spi32766.0 [ 135.067940] Creating 1 MTD partitions on "spi32766.0": [ 135.068527] 0x000000000000-0x000000100000 : "spi0_flash0" [ 137.892311] m25p80 spi32765.0: found sst25wf080, expected m25p80 [ 137.893095] m25p80 spi32765.0: sst25wf080 (1024 Kbytes) [ 137.893628] 1 ofpart partitions found on MTD device spi32765.0 [ 137.894140] Creating 1 MTD partitions on "spi32765.0": [ 137.894632] 0x000000000000-0x000000100000 : "spi1_flash0" [ 139.310793] m25p80: probe of spi32764.0 failed with error -2 [ 139.518156] libphy: Fixed MDIO Bus: probed [ 139.582308] CAN device driver interface [ 140.985296] libphy: MACB_mii_bus: probed [ 142.072700] macb ff0b0000.ethernet eth0: Cadence GEM rev 0x00020118 at 0xff0b0000 irq 193 (00:0a:35:00:02:01) [ 142.073672] macb ff0b0000.ethernet eth0: attached PHY driver [Marvell 88E1111] (mii_bus:phy_addr=ff0b0000.etherne:00, irq=-1) [ 142.223359] dwc3 fe200000.usb: this is not a DesignWare USB3 DRD Core [ 142.224011] dwc3 fe200000.usb: failed to initialize core [ 142.225233] dwc3 fe300000.usb: this is not a DesignWare USB3 DRD Core [ 142.225818] dwc3 fe300000.usb: failed to initialize core [ 142.295414] usbcore: registered new interface driver uas [ 142.296368] usbcore: registered new interface driver usb-storage [ 142.897864] mousedev: PS/2 mouse device common for all mice [ 142.965240] at24 0-0054: 8192 byte 24c64 EEPROM, writable, 1 bytes/write [ 142.966193] cdns-i2c ff020000.i2c: 400 kHz mmio ff020000 irq 15 [ 142.968262] at24 1-0055: 8192 byte 24c64 EEPROM, writable, 1 bytes/write [ 142.969480] cdns-i2c ff030000.i2c: 400 kHz mmio ff030000 irq 16 [ 142.974992] device-mapper: ioctl: 4.30.0-ioctl (2014-12-22) initialised: dm-devel@redhat.com [ 142.976019] Driver 'mmcblk' needs updating - please use bus_type methods [ 142.976877] sdhci: Secure Digital Host Controller Interface driver [ 142.977424] sdhci: Copyright(c) Pierre Ossman [ 142.977855] sdhci-pltfm: SDHCI platform and OF driver helper [ 143.243384] sdhci-arasan ff160000.sdhci: No vmmc regulator found [ 143.243761] sdhci-arasan ff160000.sdhci: No vqmmc regulator found [ 143.339339] mmc0: SDHCI controller on ff160000.sdhci [ff160000.sdhci] using ADMA [ 143.469164] sdhci-arasan ff170000.sdhci: No vmmc regulator found [ 143.469743] sdhci-arasan ff170000.sdhci: No vqmmc regulator found [ 143.519154] mmc1: SDHCI controller on ff170000.sdhci [ff170000.sdhci] using ADMA [ 143.521487] usbcore: registered new interface driver usbhid [ 143.522007] usbhid: USB HID core driver [ 143.660102] TCP: cubic registered [ 143.660504] Initializing XFRM netlink socket [ 143.729472] NET: Registered protocol family 10 [ 143.955054] sit: IPv6 over IPv4 tunneling driver [ 143.960463] NET: Registered protocol family 17 [ 143.961266] NET: Registered protocol family 15 [ 143.961749] can: controller area network core (rev 20120528 abi 9) [ 143.962820] NET: Registered protocol family 29 [ 143.963491] can: raw protocol (rev 20120528) [ 143.964025] can: broadcast manager protocol (rev 20120528 t) [ 143.964645] can: netlink gateway (rev 20130117) max_hops=1 [ 144.010911] Key type dns_resolver registered [ 145.480170] Btrfs loaded [ 145.482397] AppArmor: AppArmor sha1 policy hashing enabled [ 157.206142] Freeing unused kernel memory: 13944K (ffffffc00094f000 - ffffffc0016ed000) [ 157.270586] Freeing alternatives memory: 8K (ffffffc0016ed000 - ffffffc0016ef000) INIT: version 2.88 booting Starting Bootlog daemon: bootlogd. Creating /dev/flash/* device nodes [ 194.607432] random: dd urandom read with 57 bits of entropy available starting Busybox inet Daemon: inetd... done. update-rc.d: /etc/init.d/run-postinsts exists during rc.d purge (continuing) Removing any system startup links for run-postinsts ... /etc/rcS.d/S99run-postinsts INIT: Entering runlevel: 5 Configuring network interfaces... [ 203.942218] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready udhcpc (v1.22.1) started [ 205.115356] macb ff0b0000.ethernet eth0: link up (100/Full) [ 205.123087] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready Sending discover... Sending discover... Sending select for 10.0.2.15... Lease of 10.0.2.15 obtained, lease time 86400 /etc/udhcpc.d/50default: Adding DNS 10.0.2.3 done. Stopping Bootlog daemon: bootlogd. Running dynamic getty on ttyPS0/115200 Built with PetaLinux v2015.3 (Yocto 1.8) Xilinx-ZynqMP-QEMU-2015_3 /dev/ttyPS0 Xilinx-ZynqMP-QEMU-2015_3 login: root Password: login[1328]: root login on 'ttyPS0' root@Xilinx-ZynqMP-QEMU-2015_3:~#
2. Execute the following to power off a core (example: CPU 1):
$echo 0 > /sys/devices/system/cpu/cpu1/online
You should see output from PMU-FW and kernel similar to the following:
Received IPI Mask:0x00000001 PMU-PM: PmSelfSuspend(NODE_APU_1, -1, 0) PMU-PM: ACTIVE->SUSPENDING NODE_APU_1 PMU-PM: SUSPENDING->SLEEP NODE_APU_1 [ 163.970515] kvm: disabling virtualization on CPU1 [ 163.998010] CPU1: shutdown
3. Execute the following to power on a core (example: CPU 1):
$echo 1 > /sys/devices/system/cpu/cpu1/online
You should see output from PMU-FW and kernel similar to the following:
Received IPI Mask:0x00000001 PMU-PM: PmRequestWakeup(NODE_APU_1, REQUEST_ACK_NO) PMU-PM: SLEEP->ACTIVE NODE_APU_1 [ 320.238064] CPU1: Booted secondary processor [ 320.242599] Detected VIPT I-cache on CPU1 [ 320.301651] kvm: enabling virtualization on CPU1
4. Execute the following to check currently powered on cores:
$cat /sys/devices/system/cpu/online
Related Links
MPSoC Software Development Flow© Copyright 2019 - 2022 Xilinx Inc. Privacy Policy