All of lore.kernel.org
 help / color / mirror / Atom feed
* Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
@ 2020-05-01  2:20 Roman Shaposhnik
  2020-05-01 11:42 ` Corey Minyard
  2020-05-02  0:05 ` Stefano Stabellini
  0 siblings, 2 replies; 45+ messages in thread
From: Roman Shaposhnik @ 2020-05-01  2:20 UTC (permalink / raw)
  To: xen-devel
  Cc: Stefano Stabellini, Julien Grall, minyard, Roman Shaposhnik,
	jeff.kubascik, Julien Grall, Stefano Stabellini

[-- Attachment #1: Type: text/plain, Size: 1196 bytes --]

Hi!

I'm trying to run Xen on Raspberry Pi 4 with 5.6.1 stock,
upstream kernel. The kernel itself works perfectly well
on the board. When I try booting it as Dom0 under Xen,
it goes into a stacktrace (attached).

Looking at what nice folks over at Dornerworks have previously
done to make RPi kernels boot as Dom0 I've come across these
3 patches:
    https://github.com/dornerworks/xen-rpi4-builder/tree/master/patches/linux

The first patch seems irrelevant (unless I'm missing something
really basic here). The 2nd patch applied with no issue (but
I don't think it is related) but the 3d patch failed to apply on
account of 5.6.1 kernel no longer having:
    dev->archdata.dev_dma_ops
E.g.
    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/arch/arm64/mm/dma-mapping.c?h=v5.6.1#n55

I've tried to emulate the effect of the patch by simply introducing
a static variable that would signal that we already initialized
dev->dma_ops -- but that didn't help at all.

I'm CCing Jeff Kubascik to see if the original authors of that Corey Minyard
to see if may be they have any suggestions on how this may be dealt
with.

Any advice would be greatly appreciated!

Thanks,
Roman.

[-- Attachment #2: xen.rpi.txt --]
[-- Type: text/plain, Size: 20216 bytes --]

grub> xen_hypervisor (hd0,gpt1)/xen dom0_mem=1024M,max:1024M dom0_max_vcpus=1
grub> xen_module (hd0,gpt1)/kernel console=hvc0 earlyprintk=xen nomodeset
grub> devicetree (hd0,gpt1)/bcm2711-rpi-4-b.dtb
grub> boot
Using modules provided by bootloader in FDT
Xen 4.13.0 (c/s Tue Dec 17 14:19:49 2019 +0000 git:a2e84d8e42-dirty) EFI loader
Warning: Could not query variable store: 0x8000000000000003
- UART enabled -
- Boot CPU booting -
- Current EL 00000008 -
- Initialize CPU -
- Turning on paging -
- Ready -
(XEN) Checking for initrd in /chosen
(XEN) RAM: 0000000000001000 - 0000000007ef1fff
(XEN) RAM: 0000000007ef2000 - 0000000007f0dfff
(XEN) RAM: 0000000007f0e000 - 000000002bc4dfff
(XEN) RAM: 000000003cb10000 - 000000003cb10fff
(XEN) RAM: 000000003cb12000 - 000000003cb13fff
(XEN) RAM: 000000003cb1b000 - 000000003cb1cfff
(XEN) RAM: 0000000040000000 - 00000000fbffffff
(XEN)
(XEN) MODULE[0]: 000000002bc5d000 - 000000002bd978f0 Xen
(XEN) MODULE[1]: 000000002bc4f000 - 000000002bc5d000 Device Tree
(XEN) MODULE[2]: 000000002bda5000 - 000000002d684200 Kernel
(XEN)
(XEN) CMDLINE[000000002bda5000]:chosen console=hvc0 earlyprintk=xen nomodeset
(XEN)
(XEN) Command line: dom0_mem=1024M,max:1024M dom0_max_vcpus=1
(XEN) parameter "dom0_mem" has invalid value "1024M,max:1024M", rc=-22!
(XEN) Domain heap initialised
(XEN) Booting using Device Tree
(XEN) Platform: Raspberry Pi 4
(XEN) No dtuart path configured
(XEN) Bad console= option 'dtuart'
 Xen 4.13.0
(XEN) Xen version 4.13.0 (@) (aarch64-linux-gnu-gcc (Ubuntu 9.3.0-10ubuntu2) 9.3.0) debug=y  Thu Apr 30 17:06:40 PDT 2020
(XEN) Latest ChangeSet: Tue Dec 17 14:19:49 2019 +0000 git:a2e84d8e42-dirty
(XEN) build-id: 7efa3c5cb27a98e9eb2e750fa71c8a065b9b5cb6
(XEN) Processor: 410fd083: "ARM Limited", variant: 0x0, part 0xd08, rev 0x3
(XEN) 64-bit Execution:
(XEN)   Processor Features: 0000000000002222 0000000000000000
(XEN)     Exception Levels: EL3:64+32 EL2:64+32 EL1:64+32 EL0:64+32
(XEN)     Extensions: FloatingPoint AdvancedSIMD
(XEN)   Debug Features: 0000000010305106 0000000000000000
(XEN)   Auxiliary Features: 0000000000000000 0000000000000000
(XEN)   Memory Model Features: 0000000000001124 0000000000000000
(XEN)   ISA Features:  0000000000010000 0000000000000000
(XEN) 32-bit Execution:
(XEN)   Processor Features: 00000131:00011011
(XEN)     Instruction Sets: AArch32 A32 Thumb Thumb-2 Jazelle
(XEN)     Extensions: GenericTimer Security
(XEN)   Debug Features: 03010066
(XEN)   Auxiliary Features: 00000000
(XEN)   Memory Model Features: 10201105 40000000 01260000 02102211
(XEN)  ISA Features: 02101110 13112111 21232042 01112131 00011142 00010001
(XEN) SMP: Allowing 4 CPUs
(XEN) enabled workaround for: ARM erratum 1319537
(XEN) Generic Timer IRQ: phys=30 hyp=26 virt=27 Freq: 54000 KHz
(XEN) GICv2 initialization:
(XEN)         gic_dist_addr=00000000ff841000
(XEN)         gic_cpu_addr=00000000ff842000
(XEN)         gic_hyp_addr=00000000ff844000
(XEN)         gic_vcpu_addr=00000000ff846000
(XEN)         gic_maintenance_irq=25
(XEN) GICv2: 256 lines, 4 cpus, secure (IID 0200143b).
(XEN) XSM Framework v1.0.0 initialized
(XEN) Initialising XSM SILO mode
(XEN) Using scheduler: SMP Credit Scheduler rev2 (credit2)
(XEN) Initializing Credit2 scheduler
(XEN)  load_precision_shift: 18
(XEN)  load_window_shift: 30
(XEN)  underload_balance_tolerance: 0
(XEN)  overload_balance_tolerance: -3
(XEN)  runqueues arrangement: socket
(XEN)  cap enforcement granularity: 10ms
(XEN) load tracking window length 1073741824 ns
(XEN) Allocated console ring of 32 KiB.
(XEN) CPU0: Guest atomics will try 6 times before pausing the domain
(XEN) Bringing up CPU1
- CPU 00000001 booting -
- Current EL 00000008 -
- Initialize CPU -
- Turning on paging -
- Ready -
(XEN) CPU1: Guest atomics will try 5 times before pausing the domain
(XEN) CPU 1 booted.
(XEN) Bringing up CPU2
- CPU 00000002 booting -
- Current EL 00000008 -
- Initialize CPU -
- Turning on paging -
- Ready -
(XEN) CPU2: Guest atomics will try 5 times before pausing the domain
(XEN) CPU 2 booted.
(XEN) Bringing up CPU3
- CPU 00000003 booting -
- Current EL 00000008 -
- Initialize CPU -
- Turning on paging -
- Ready -
(XEN) CPU3: Guest atomics will try 5 times before pausing the domain
(XEN) CPU 3 booted.
(XEN) Brought up 4 CPUs
(XEN) I/O virtualisation disabled
(XEN) P2M: 44-bit IPA with 44-bit PA and 8-bit VMID
(XEN) P2M: 4 levels with order-0 root, VTCR 0x80043594
(XEN) Adding cpu 0 to runqueue 0
(XEN)  First cpu on runqueue, activating
(XEN) Adding cpu 1 to runqueue 0
(XEN) Adding cpu 2 to runqueue 0
(XEN) Adding cpu 3 to runqueue 0
(XEN) alternatives: Patching with alt table 00000000002cc0b8 -> 00000000002cc7cc
(XEN) *** LOADING DOMAIN 0 ***
(XEN) Loading d0 kernel from boot module @ 000000002bda5000
(XEN) Allocating 1:1 mappings totalling 1024MB for dom0:
(XEN) BANK[0] 0x00000040000000-0x00000080000000 (1024MB)
(XEN) Grant table range: 0x0000002bc5d000-0x0000002bc9d000
(XEN) Allocating PPI 16 for event channel interrupt
(XEN) Loading zImage from 000000002bda5000 to 0000000040080000-000000004195f200
(XEN) Loading d0 DTB to 0x0000000048000000-0x000000004800a45d
(XEN) Initial low memory virq threshold set at 0x4000 pages.
(XEN) Scrubbing Free RAM in background
(XEN) Std. Loglevel: All
(XEN) Guest Loglevel: All
(XEN) ***************************************************
(XEN) No support for ARM_SMCCC_ARCH_WORKAROUND_1.
(XEN) Please update your firmware.
(XEN) ***************************************************
(XEN) No support for ARM_SMCCC_ARCH_WORKAROUND_1.
(XEN) Please update your firmware.
(XEN) ***************************************************
(XEN) No support for ARM_SMCCC_ARCH_WORKAROUND_1.
(XEN) Please update your firmware.
(XEN) ***************************************************
(XEN) 3... 2... 1...
(XEN) *** Serial input to DOM0 (type 'CTRL-a' three times to switch input)
(XEN) Freed 336kB init memory.
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER4
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER8
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER12
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER16
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER20
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER24
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER28
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd083]
[    0.000000] Linux version 5.6.1-default (root@0fd6d133dd12) (gcc version 8.3.0 (Alpine 8.3.0)) #1 SMP Fri May 1 00:57:26 UTC 2020
[    0.000000] Machine model: Raspberry Pi 4 Model B
[    0.000000] Xen 4.13 support found
[    0.000000] efi: Getting EFI parameters from FDT:
[    0.000000] efi: UEFI not found.
[    0.000000] NUMA: No NUMA configuration found
[    0.000000] NUMA: Faking a node at [mem 0x0000000040000000-0x000000007fffffff]
[    0.000000] NUMA: NODE_DATA [mem 0x7fdc62c0-0x7fdc9fff]
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000040000000-0x000000007fffffff]
[    0.000000]   DMA32    empty
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000040000000-0x000000007fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000040000000-0x000000007fffffff]
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.1 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: Trusted OS migration not required
[    0.000000] psci: SMC Calling Convention v1.1
[    0.000000] percpu: Embedded 23 pages/cpu s54232 r8192 d31784 u94208
[    0.000000] Detected PIPT I-cache on CPU0
[    0.000000] CPU features: detected: EL2 vector hardening
[    0.000000] CPU features: detected: Speculative Store Bypass Disable
[    0.000000] CPU features: detected: ARM erratum 1319367
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 258048
[    0.000000] Policy zone: DMA
[    0.000000] Kernel command line: console=hvc0 earlyprintk=xen nomodeset
[    0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
[    0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 1001988K/1048576K available (12732K kernel code, 1852K rwdata, 6184K rodata, 4672K init, 758K bss, 46588K reserved, 0K cma-reserved)
[    0.000000] random: get_random_u64 called from __kmem_cache_create+0x40/0x578 with crng_init=0
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=480 to nr_cpu_ids=1.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] arch_timer: cp15 timer(s) running at 54.00MHz (virt).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0xc743ce346, max_idle_ns: 440795203123 ns
[    0.000006] sched_clock: 56 bits at 54MHz, resolution 18ns, wraps every 4398046511102ns
[    0.000407] Console: colour dummy device 80x25
[    0.270969] printk: console [hvc0] enabled
[    0.275256] Calibrating delay loop (skipped), value calculated using timer frequency.. 108.00 BogoMIPS (lpj=540000)
[    0.285812] pid_max: default: 32768 minimum: 301
[    0.290656] LSM: Security Framework initializing
[    0.295354] Mount-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
[    0.302862] Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
[    0.313372] xen:grant_table: Grant tables using version 1 layout
[    0.318858] Grant table initialized
[    0.322458] xen:events: Using FIFO-based ABI
[    0.326906] Xen: initializing cpu0
[    0.330509] rcu: Hierarchical SRCU implementation.
[    0.339497] EFI services will not be available.
[    0.343644] smp: Bringing up secondary CPUs ...
[    0.348157] smp: Brought up 1 node, 1 CPU
[    0.352255] SMP: Total of 1 processors activated.
[    0.357090] CPU features: detected: 32-bit EL0 Support
[    0.362370] CPU features: detected: CRC32 instructions
[    0.396969] CPU: All CPU(s) started at EL1
[    0.400556] alternatives: patching kernel code
[    0.406538] devtmpfs: initialized
[    0.415913] Registered cp15_barrier emulation handler
[    0.420448] Registered setend emulation handler
[    0.425075] KASLR disabled due to lack of seed
[    0.430042] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.439701] futex hash table entries: 256 (order: 2, 16384 bytes, linear)
[    0.446817] pinctrl core: initialized pinctrl subsystem
[    0.453132] thermal_sys: Registered thermal governor 'fair_share'
[    0.453135] thermal_sys: Registered thermal governor 'bang_bang'
[    0.458685] thermal_sys: Registered thermal governor 'step_wise'
[    0.464876] thermal_sys: Registered thermal governor 'user_space'
[    0.471103] DMI not present or invalid.
[    0.481720] NET: Registered protocol family 16
[    0.486012] DMA: preallocated 256 KiB pool for atomic allocations
[    0.491985] audit: initializing netlink subsys (disabled)
[    0.498698] audit: type=2000 audit(0.380:1): state=initialized audit_enabled=0 res=1
[    0.506554] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    0.512934] ASID allocator initialised with 65536 entries
[    0.518458] xen:swiotlb_xen: Warning: only able to allocate 4 MB for software IO TLB
[    0.528189] software IO TLB: mapped [mem 0x7f000000-0x7f400000] (4MB)
[    0.535335] Serial: AMBA PL011 UART driver
[    0.558051] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
[    0.564260] HugeTLB registered 32.0 MiB page size, pre-allocated 0 pages
[    0.571085] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[    0.577937] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages
[    0.589021] cryptd: max_cpu_qlen set to 1000
[    0.599047] ACPI: Interpreter disabled.
[    0.602732] xen:balloon: Initialising balloon driver
[    0.608655] iommu: Default domain type: Translated
[    0.613276] vgaarb: loaded
[    0.616165] SCSI subsystem initialized
[    0.620387] usbcore: registered new interface driver usbfs
[    0.625355] usbcore: registered new interface driver hub
[    0.630873] usbcore: registered new device driver usb
[    0.636092] usb_phy_generic phy: phy supply vcc not found, using dummy regulator
[    0.643895] pps_core: LinuxPPS API ver. 1 registered
[    0.648588] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.657925] PTP clock support registered
[    0.662062] EDAC MC: Ver: 3.0.0
[    0.666429] NetLabel: Initializing
[    0.669282] NetLabel:  domain hash size = 128
[    0.673736] NetLabel:  protocols = UNLABELED CIPSOv4 CALIPSO
[    0.679613] NetLabel:  unlabeled traffic allowed by default
[    0.685781] clocksource: Switched to clocksource arch_sys_counter
[    0.691755] VFS: Disk quotas dquot_6.6.0
[    0.695574] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.702750] pnp: PnP ACPI: disabled
[    0.712964] NET: Registered protocol family 2
[    0.717281] tcp_listen_portaddr_hash hash table entries: 512 (order: 1, 8192 bytes, linear)
[    0.725295] TCP established hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    0.733251] TCP bind hash table entries: 8192 (order: 5, 131072 bytes, linear)
[    0.740681] TCP: Hash tables configured (established 8192 bind 8192)
[    0.747237] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
[    0.753829] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
[    0.761207] NET: Registered protocol family 1
[    0.765514] PCI: CLS 0 bytes, default 64
[    0.770055] kvm [1]: HYP mode not available
[    0.781176] Initialise system trusted keyrings
[    0.785193] workingset: timestamp_bits=40 max_order=18 bucket_order=0
[    0.798000] zbud: loaded
[    0.801467] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.807330] 9p: Installing v9fs 9p2000 file system support
[    0.836097] Key type asymmetric registered
[    0.839630] Asymmetric key parser 'x509' registered
[    0.844666] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
[    0.852346] io scheduler mq-deadline registered
[    0.856864] io scheduler kyber registered
[    0.861133] io scheduler bfq registered
[    0.869795] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
[    0.877226] brcm-pcie fd500000.pcie: host bridge /scb/pcie@7d500000 ranges:
[    0.883677] brcm-pcie fd500000.pcie:      MEM 0x0600000000..0x0603ffffff -> 0x00f8000000
[    0.891977] brcm-pcie fd500000.pcie:   IB MEM 0x0000000000..0x00bfffffff -> 0x0000000000
[    0.955808] brcm-pcie fd500000.pcie: link up, 5 GT/s x1 (!SSC)
[    0.961312] brcm-pcie fd500000.pcie: PCI host bridge to bus 0000:00
[    0.967524] pci_bus 0000:00: root bus resource [bus 00-01]
[    0.973126] pci_bus 0000:00: root bus resource [mem 0x600000000-0x603ffffff] (bus address [0xf8000000-0xfbffffff])
[    0.983696] pci 0000:00:00.0: [14e4:2711] type 01 class 0x060400
[    0.989897] pci 0000:00:00.0: PME# supported from D0 D3hot
(XEN) physdev.c:16:d0v0 PHYSDEVOP cmd=25: not implemented
(XEN) physdev.c:16:d0v0 PHYSDEVOP cmd=15: not implemented
[    1.005812] pci 0000:00:00.0: Failed to add - passthrough or MSI/MSI-X might fail!
[    1.016400] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    1.023993] pci 0000:01:00.0: [1106:3483] type 00 class 0x0c0330
[    1.030073] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00000fff 64bit]
[    1.037089] pci 0000:01:00.0: PME# supported from D0 D3cold
(XEN) physdev.c:16:d0v0 PHYSDEVOP cmd=15: not implemented
[    1.047883] pci 0000:01:00.0: Failed to add - passthrough or MSI/MSI-X might fail!
[    1.058420] pci_bus 0000:01: busn_res: [bus 01] end is updated to 01
[    1.064252] pci 0000:00:00.0: BAR 14: assigned [mem 0x600000000-0x6000fffff]
[    1.071453] pci 0000:01:00.0: BAR 0: assigned [mem 0x600000000-0x600000fff 64bit]
[    1.079094] pci 0000:00:00.0: PCI bridge to [bus 01]
[    1.084165] pci 0000:00:00.0:   bridge window [mem 0x600000000-0x6000fffff]
[    1.091426] pcieport 0000:00:00.0: enabling device (0000 -> 0002)
[    1.097659] pcieport 0000:00:00.0: PME: Signaling with IRQ 36
[    1.103675] pcieport 0000:00:00.0: AER: enabled with IRQ 36
[    1.109273] pci 0000:01:00.0: enabling device (0000 -> 0002)
(XEN) traps.c:1972:d0v0 HSR=0x93800005 pc=0xffff8000108e3564 gva=0xffff80001001d010 gpa=0x00000600000010
[    1.124234] Unhandled fault at 0xffff80001001d010
[    1.129039] Mem abort info:
[    1.131926]   ESR = 0x96000000
[    1.135089]   EC = 0x25: DABT (current EL), IL = 32 bits
[    1.140542]   SET = 0, FnV = 0
[    1.143691]   EA = 0, S1PTW = 0
[    1.146950] Data abort info:
[    1.149926]   ISV = 0, ISS = 0x00000000
[    1.153877]   CM = 0, WnR = 0
[    1.156965] swapper pgtable: 4k pages, 48-bit VAs, pgdp=00000000412fe000
[    1.163800] [ffff80001001d010] pgd=000000007ffff003, pud=000000007fffe003, pmd=000000007fffd003, pte=0068000600000707
[    1.174614] Internal error: ttbr address size fault: 96000000 [#1] SMP
[    1.181272] Modules linked in:
[    1.184438] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.6.1-default #1
[    1.191106] Hardware name: Raspberry Pi 4 Model B (DT)
[    1.196386] pstate: 60000005 (nZCv daif -PAN -UAO)
[    1.201307] pc : quirk_usb_early_handoff+0x4fc/0x870
[    1.206398] lr : quirk_usb_early_handoff+0x4ec/0x870
[    1.211476] sp : ffff8000100139f0
[    1.214901] x29: ffff8000100139f0 x28: ffff00003dd8c080
[    1.220345] x27: ffff00003fdf4c70 x26: ffff8000108e3068
[    1.225797] x25: ffff800011964050 x24: 00000000396dfbf8
[    1.231232] x23: 000000000000ffff x22: ffff80001001d000
[    1.236684] x21: 0000000000001000 x20: ffff80001179b548
[    1.242119] x19: ffff00003dcac000 x18: ffff8000111dba48
[    1.247564] x17: 0000000000000001 x16: 00000000deadbeef
[    1.253007] x15: 0000000600000000 x14: ffff800010025000
[    1.258451] x13: ffff80001001d000 x12: ffff00003f804440
[    1.263895] x11: ffff800011461928 x10: ffff800010013510
[    1.269339] x9 : 0000000000001000 x8 : ffff8000117b2d58
[    1.274782] x7 : 0000000000000000 x6 : ffff80001001d000
[    1.280226] x5 : ffff00003ffff000 x4 : ffff00003fffe400
[    1.285670] x3 : 0068000000000707 x2 : 0140000000000000
[    1.291114] x1 : 00008005effe3000 x0 : ffff80001001d010
[    1.296567] Call trace:
[    1.299111]  quirk_usb_early_handoff+0x4fc/0x870
[    1.303850]  pci_do_fixups+0xe0/0x138
[    1.307625]  pci_fixup_device+0x4c/0x130
[    1.311664]  pci_bus_add_device+0x20/0xb8
[    1.315799]  pci_bus_add_devices+0x38/0x88
[    1.320004]  pci_bus_add_devices+0x68/0x88
[    1.324220]  brcm_pcie_probe+0x768/0xb28
[    1.328259]  platform_drv_probe+0x50/0xa0
[    1.332387]  really_probe+0xd8/0x438
[    1.336083]  driver_probe_device+0xdc/0x130
[    1.340376]  device_driver_attach+0x6c/0x78
[    1.344679]  __driver_attach+0x9c/0x168
[    1.348630]  bus_for_each_dev+0x70/0xc0
[    1.352581]  driver_attach+0x20/0x28
[    1.356278]  bus_add_driver+0x190/0x220
[    1.360220]  driver_register+0x60/0x110
[    1.364169]  __platform_driver_register+0x44/0x50
[    1.369001]  brcm_pcie_driver_init+0x18/0x20
[    1.373391]  do_one_initcall+0x74/0x1b0
[    1.377342]  kernel_init_freeable+0x214/0x2b0
[    1.381820]  kernel_init+0x10/0x100
[    1.385418]  ret_from_fork+0x10/0x18
[    1.389112] Code: aa0003f6 b4ffdce0 91004000 a90363f7 (b9400000)
[    1.395351] ---[ end trace 8a644ac18423f457 ]---
[    1.400143] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[    1.407898] Kernel Offset: disabled
[    1.411496] CPU features: 0x10002,61006000
[    1.415717] Memory Limit: none
[    1.418874] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b ]---

^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-01  2:20 Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU Roman Shaposhnik
@ 2020-05-01 11:42 ` Corey Minyard
  2020-05-02  1:06   ` Roman Shaposhnik
  2020-05-02  0:05 ` Stefano Stabellini
  1 sibling, 1 reply; 45+ messages in thread
From: Corey Minyard @ 2020-05-01 11:42 UTC (permalink / raw)
  To: Roman Shaposhnik
  Cc: Stefano Stabellini, Julien Grall, jeff.kubascik, Julien Grall,
	xen-devel, Stefano Stabellini

On Thu, Apr 30, 2020 at 07:20:05PM -0700, Roman Shaposhnik wrote:
> Hi!
> 
> I'm trying to run Xen on Raspberry Pi 4 with 5.6.1 stock,
> upstream kernel. The kernel itself works perfectly well
> on the board. When I try booting it as Dom0 under Xen,
> it goes into a stacktrace (attached).

Getting Xen working on the Pi4 requires a lot of moving parts, and they
all have to be right.

> 
> Looking at what nice folks over at Dornerworks have previously
> done to make RPi kernels boot as Dom0 I've come across these
> 3 patches:
>     https://github.com/dornerworks/xen-rpi4-builder/tree/master/patches/linux
> 
> The first patch seems irrelevant (unless I'm missing something
> really basic here). 

It might be irrelevant for your configuration, assuming that Xen gets
the right information from EFI.  I haven't tried EFI booting.

> The 2nd patch applied with no issue (but
> I don't think it is related) but the 3d patch failed to apply on
> account of 5.6.1 kernel no longer having:
>     dev->archdata.dev_dma_ops
> E.g.
>     https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/arch/arm64/mm/dma-mapping.c?h=v5.6.1#n55
> 
> I've tried to emulate the effect of the patch by simply introducing
> a static variable that would signal that we already initialized
> dev->dma_ops -- but that didn't help at all.
> 
> I'm CCing Jeff Kubascik to see if the original authors of that Corey Minyard
> to see if may be they have any suggestions on how this may be dealt
> with.
> 
> Any advice would be greatly appreciated!

What's your Pi4 config.txt file look like?  The GIC is not being handled
correctly, and I'm guessing that configuration is wrong.  You can't use
the stock config.txt file with Xen, you have to modify the configuration a
bit. 

I think just adding:

enable_gic=1
total_mem=1024

might get it working, or at least solve one problem.  It's required either
way.  That might get rid of the GIC errors at the beginning.  I see a
few of those, but not that many.

My kernel command line is:

coherent_pool=1M 8250.nr_uarts=1 cma=64M cma=256M  smsc95xx.macaddr=DC:A6:32:4F:3A:CD vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000  console=hvc0 clk_ignore_unused root=/dev/mmcblk0p2 rootwait

A lot of that configuration gets pulled from the initialization done by
the GPU at startup which it put into the device tree.  I'm not sure what a
lot of it means.  Some of it is added by Xen, too.

I can verify the DMA patch is important.  I'm not sure how to apply it
to a 5.6 kernel, though.

Keep us informed when you get it working.

-corey

> 
> Thanks,
> Roman.

> grub> xen_hypervisor (hd0,gpt1)/xen dom0_mem=1024M,max:1024M dom0_max_vcpus=1
> grub> xen_module (hd0,gpt1)/kernel console=hvc0 earlyprintk=xen nomodeset
> grub> devicetree (hd0,gpt1)/bcm2711-rpi-4-b.dtb
> grub> boot
> Using modules provided by bootloader in FDT
> Xen 4.13.0 (c/s Tue Dec 17 14:19:49 2019 +0000 git:a2e84d8e42-dirty) EFI loader
> Warning: Could not query variable store: 0x8000000000000003
> - UART enabled -
> - Boot CPU booting -
> - Current EL 00000008 -
> - Initialize CPU -
> - Turning on paging -
> - Ready -
> (XEN) Checking for initrd in /chosen
> (XEN) RAM: 0000000000001000 - 0000000007ef1fff
> (XEN) RAM: 0000000007ef2000 - 0000000007f0dfff
> (XEN) RAM: 0000000007f0e000 - 000000002bc4dfff
> (XEN) RAM: 000000003cb10000 - 000000003cb10fff
> (XEN) RAM: 000000003cb12000 - 000000003cb13fff
> (XEN) RAM: 000000003cb1b000 - 000000003cb1cfff
> (XEN) RAM: 0000000040000000 - 00000000fbffffff
> (XEN)
> (XEN) MODULE[0]: 000000002bc5d000 - 000000002bd978f0 Xen
> (XEN) MODULE[1]: 000000002bc4f000 - 000000002bc5d000 Device Tree
> (XEN) MODULE[2]: 000000002bda5000 - 000000002d684200 Kernel
> (XEN)
> (XEN) CMDLINE[000000002bda5000]:chosen console=hvc0 earlyprintk=xen nomodeset
> (XEN)
> (XEN) Command line: dom0_mem=1024M,max:1024M dom0_max_vcpus=1
> (XEN) parameter "dom0_mem" has invalid value "1024M,max:1024M", rc=-22!
> (XEN) Domain heap initialised
> (XEN) Booting using Device Tree
> (XEN) Platform: Raspberry Pi 4
> (XEN) No dtuart path configured
> (XEN) Bad console= option 'dtuart'
>  Xen 4.13.0
> (XEN) Xen version 4.13.0 (@) (aarch64-linux-gnu-gcc (Ubuntu 9.3.0-10ubuntu2) 9.3.0) debug=y  Thu Apr 30 17:06:40 PDT 2020
> (XEN) Latest ChangeSet: Tue Dec 17 14:19:49 2019 +0000 git:a2e84d8e42-dirty
> (XEN) build-id: 7efa3c5cb27a98e9eb2e750fa71c8a065b9b5cb6
> (XEN) Processor: 410fd083: "ARM Limited", variant: 0x0, part 0xd08, rev 0x3
> (XEN) 64-bit Execution:
> (XEN)   Processor Features: 0000000000002222 0000000000000000
> (XEN)     Exception Levels: EL3:64+32 EL2:64+32 EL1:64+32 EL0:64+32
> (XEN)     Extensions: FloatingPoint AdvancedSIMD
> (XEN)   Debug Features: 0000000010305106 0000000000000000
> (XEN)   Auxiliary Features: 0000000000000000 0000000000000000
> (XEN)   Memory Model Features: 0000000000001124 0000000000000000
> (XEN)   ISA Features:  0000000000010000 0000000000000000
> (XEN) 32-bit Execution:
> (XEN)   Processor Features: 00000131:00011011
> (XEN)     Instruction Sets: AArch32 A32 Thumb Thumb-2 Jazelle
> (XEN)     Extensions: GenericTimer Security
> (XEN)   Debug Features: 03010066
> (XEN)   Auxiliary Features: 00000000
> (XEN)   Memory Model Features: 10201105 40000000 01260000 02102211
> (XEN)  ISA Features: 02101110 13112111 21232042 01112131 00011142 00010001
> (XEN) SMP: Allowing 4 CPUs
> (XEN) enabled workaround for: ARM erratum 1319537
> (XEN) Generic Timer IRQ: phys=30 hyp=26 virt=27 Freq: 54000 KHz
> (XEN) GICv2 initialization:
> (XEN)         gic_dist_addr=00000000ff841000
> (XEN)         gic_cpu_addr=00000000ff842000
> (XEN)         gic_hyp_addr=00000000ff844000
> (XEN)         gic_vcpu_addr=00000000ff846000
> (XEN)         gic_maintenance_irq=25
> (XEN) GICv2: 256 lines, 4 cpus, secure (IID 0200143b).
> (XEN) XSM Framework v1.0.0 initialized
> (XEN) Initialising XSM SILO mode
> (XEN) Using scheduler: SMP Credit Scheduler rev2 (credit2)
> (XEN) Initializing Credit2 scheduler
> (XEN)  load_precision_shift: 18
> (XEN)  load_window_shift: 30
> (XEN)  underload_balance_tolerance: 0
> (XEN)  overload_balance_tolerance: -3
> (XEN)  runqueues arrangement: socket
> (XEN)  cap enforcement granularity: 10ms
> (XEN) load tracking window length 1073741824 ns
> (XEN) Allocated console ring of 32 KiB.
> (XEN) CPU0: Guest atomics will try 6 times before pausing the domain
> (XEN) Bringing up CPU1
> - CPU 00000001 booting -
> - Current EL 00000008 -
> - Initialize CPU -
> - Turning on paging -
> - Ready -
> (XEN) CPU1: Guest atomics will try 5 times before pausing the domain
> (XEN) CPU 1 booted.
> (XEN) Bringing up CPU2
> - CPU 00000002 booting -
> - Current EL 00000008 -
> - Initialize CPU -
> - Turning on paging -
> - Ready -
> (XEN) CPU2: Guest atomics will try 5 times before pausing the domain
> (XEN) CPU 2 booted.
> (XEN) Bringing up CPU3
> - CPU 00000003 booting -
> - Current EL 00000008 -
> - Initialize CPU -
> - Turning on paging -
> - Ready -
> (XEN) CPU3: Guest atomics will try 5 times before pausing the domain
> (XEN) CPU 3 booted.
> (XEN) Brought up 4 CPUs
> (XEN) I/O virtualisation disabled
> (XEN) P2M: 44-bit IPA with 44-bit PA and 8-bit VMID
> (XEN) P2M: 4 levels with order-0 root, VTCR 0x80043594
> (XEN) Adding cpu 0 to runqueue 0
> (XEN)  First cpu on runqueue, activating
> (XEN) Adding cpu 1 to runqueue 0
> (XEN) Adding cpu 2 to runqueue 0
> (XEN) Adding cpu 3 to runqueue 0
> (XEN) alternatives: Patching with alt table 00000000002cc0b8 -> 00000000002cc7cc
> (XEN) *** LOADING DOMAIN 0 ***
> (XEN) Loading d0 kernel from boot module @ 000000002bda5000
> (XEN) Allocating 1:1 mappings totalling 1024MB for dom0:
> (XEN) BANK[0] 0x00000040000000-0x00000080000000 (1024MB)
> (XEN) Grant table range: 0x0000002bc5d000-0x0000002bc9d000
> (XEN) Allocating PPI 16 for event channel interrupt
> (XEN) Loading zImage from 000000002bda5000 to 0000000040080000-000000004195f200
> (XEN) Loading d0 DTB to 0x0000000048000000-0x000000004800a45d
> (XEN) Initial low memory virq threshold set at 0x4000 pages.
> (XEN) Scrubbing Free RAM in background
> (XEN) Std. Loglevel: All
> (XEN) Guest Loglevel: All
> (XEN) ***************************************************
> (XEN) No support for ARM_SMCCC_ARCH_WORKAROUND_1.
> (XEN) Please update your firmware.
> (XEN) ***************************************************
> (XEN) No support for ARM_SMCCC_ARCH_WORKAROUND_1.
> (XEN) Please update your firmware.
> (XEN) ***************************************************
> (XEN) No support for ARM_SMCCC_ARCH_WORKAROUND_1.
> (XEN) Please update your firmware.
> (XEN) ***************************************************
> (XEN) 3... 2... 1...
> (XEN) *** Serial input to DOM0 (type 'CTRL-a' three times to switch input)
> (XEN) Freed 336kB init memory.
> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER4
> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER8
> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER12
> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER16
> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER20
> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER24
> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER28
> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
> [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd083]
> [    0.000000] Linux version 5.6.1-default (root@0fd6d133dd12) (gcc version 8.3.0 (Alpine 8.3.0)) #1 SMP Fri May 1 00:57:26 UTC 2020
> [    0.000000] Machine model: Raspberry Pi 4 Model B
> [    0.000000] Xen 4.13 support found
> [    0.000000] efi: Getting EFI parameters from FDT:
> [    0.000000] efi: UEFI not found.
> [    0.000000] NUMA: No NUMA configuration found
> [    0.000000] NUMA: Faking a node at [mem 0x0000000040000000-0x000000007fffffff]
> [    0.000000] NUMA: NODE_DATA [mem 0x7fdc62c0-0x7fdc9fff]
> [    0.000000] Zone ranges:
> [    0.000000]   DMA      [mem 0x0000000040000000-0x000000007fffffff]
> [    0.000000]   DMA32    empty
> [    0.000000]   Normal   empty
> [    0.000000] Movable zone start for each node
> [    0.000000] Early memory node ranges
> [    0.000000]   node   0: [mem 0x0000000040000000-0x000000007fffffff]
> [    0.000000] Initmem setup node 0 [mem 0x0000000040000000-0x000000007fffffff]
> [    0.000000] psci: probing for conduit method from DT.
> [    0.000000] psci: PSCIv1.1 detected in firmware.
> [    0.000000] psci: Using standard PSCI v0.2 function IDs
> [    0.000000] psci: Trusted OS migration not required
> [    0.000000] psci: SMC Calling Convention v1.1
> [    0.000000] percpu: Embedded 23 pages/cpu s54232 r8192 d31784 u94208
> [    0.000000] Detected PIPT I-cache on CPU0
> [    0.000000] CPU features: detected: EL2 vector hardening
> [    0.000000] CPU features: detected: Speculative Store Bypass Disable
> [    0.000000] CPU features: detected: ARM erratum 1319367
> [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 258048
> [    0.000000] Policy zone: DMA
> [    0.000000] Kernel command line: console=hvc0 earlyprintk=xen nomodeset
> [    0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
> [    0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
> [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
> [    0.000000] Memory: 1001988K/1048576K available (12732K kernel code, 1852K rwdata, 6184K rodata, 4672K init, 758K bss, 46588K reserved, 0K cma-reserved)
> [    0.000000] random: get_random_u64 called from __kmem_cache_create+0x40/0x578 with crng_init=0
> [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
> [    0.000000] rcu: Hierarchical RCU implementation.
> [    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=480 to nr_cpu_ids=1.
> [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
> [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
> [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
> [    0.000000] arch_timer: cp15 timer(s) running at 54.00MHz (virt).
> [    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0xc743ce346, max_idle_ns: 440795203123 ns
> [    0.000006] sched_clock: 56 bits at 54MHz, resolution 18ns, wraps every 4398046511102ns
> [    0.000407] Console: colour dummy device 80x25
> [    0.270969] printk: console [hvc0] enabled
> [    0.275256] Calibrating delay loop (skipped), value calculated using timer frequency.. 108.00 BogoMIPS (lpj=540000)
> [    0.285812] pid_max: default: 32768 minimum: 301
> [    0.290656] LSM: Security Framework initializing
> [    0.295354] Mount-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
> [    0.302862] Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
> [    0.313372] xen:grant_table: Grant tables using version 1 layout
> [    0.318858] Grant table initialized
> [    0.322458] xen:events: Using FIFO-based ABI
> [    0.326906] Xen: initializing cpu0
> [    0.330509] rcu: Hierarchical SRCU implementation.
> [    0.339497] EFI services will not be available.
> [    0.343644] smp: Bringing up secondary CPUs ...
> [    0.348157] smp: Brought up 1 node, 1 CPU
> [    0.352255] SMP: Total of 1 processors activated.
> [    0.357090] CPU features: detected: 32-bit EL0 Support
> [    0.362370] CPU features: detected: CRC32 instructions
> [    0.396969] CPU: All CPU(s) started at EL1
> [    0.400556] alternatives: patching kernel code
> [    0.406538] devtmpfs: initialized
> [    0.415913] Registered cp15_barrier emulation handler
> [    0.420448] Registered setend emulation handler
> [    0.425075] KASLR disabled due to lack of seed
> [    0.430042] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
> [    0.439701] futex hash table entries: 256 (order: 2, 16384 bytes, linear)
> [    0.446817] pinctrl core: initialized pinctrl subsystem
> [    0.453132] thermal_sys: Registered thermal governor 'fair_share'
> [    0.453135] thermal_sys: Registered thermal governor 'bang_bang'
> [    0.458685] thermal_sys: Registered thermal governor 'step_wise'
> [    0.464876] thermal_sys: Registered thermal governor 'user_space'
> [    0.471103] DMI not present or invalid.
> [    0.481720] NET: Registered protocol family 16
> [    0.486012] DMA: preallocated 256 KiB pool for atomic allocations
> [    0.491985] audit: initializing netlink subsys (disabled)
> [    0.498698] audit: type=2000 audit(0.380:1): state=initialized audit_enabled=0 res=1
> [    0.506554] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
> [    0.512934] ASID allocator initialised with 65536 entries
> [    0.518458] xen:swiotlb_xen: Warning: only able to allocate 4 MB for software IO TLB
> [    0.528189] software IO TLB: mapped [mem 0x7f000000-0x7f400000] (4MB)
> [    0.535335] Serial: AMBA PL011 UART driver
> [    0.558051] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
> [    0.564260] HugeTLB registered 32.0 MiB page size, pre-allocated 0 pages
> [    0.571085] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
> [    0.577937] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages
> [    0.589021] cryptd: max_cpu_qlen set to 1000
> [    0.599047] ACPI: Interpreter disabled.
> [    0.602732] xen:balloon: Initialising balloon driver
> [    0.608655] iommu: Default domain type: Translated
> [    0.613276] vgaarb: loaded
> [    0.616165] SCSI subsystem initialized
> [    0.620387] usbcore: registered new interface driver usbfs
> [    0.625355] usbcore: registered new interface driver hub
> [    0.630873] usbcore: registered new device driver usb
> [    0.636092] usb_phy_generic phy: phy supply vcc not found, using dummy regulator
> [    0.643895] pps_core: LinuxPPS API ver. 1 registered
> [    0.648588] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
> [    0.657925] PTP clock support registered
> [    0.662062] EDAC MC: Ver: 3.0.0
> [    0.666429] NetLabel: Initializing
> [    0.669282] NetLabel:  domain hash size = 128
> [    0.673736] NetLabel:  protocols = UNLABELED CIPSOv4 CALIPSO
> [    0.679613] NetLabel:  unlabeled traffic allowed by default
> [    0.685781] clocksource: Switched to clocksource arch_sys_counter
> [    0.691755] VFS: Disk quotas dquot_6.6.0
> [    0.695574] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
> [    0.702750] pnp: PnP ACPI: disabled
> [    0.712964] NET: Registered protocol family 2
> [    0.717281] tcp_listen_portaddr_hash hash table entries: 512 (order: 1, 8192 bytes, linear)
> [    0.725295] TCP established hash table entries: 8192 (order: 4, 65536 bytes, linear)
> [    0.733251] TCP bind hash table entries: 8192 (order: 5, 131072 bytes, linear)
> [    0.740681] TCP: Hash tables configured (established 8192 bind 8192)
> [    0.747237] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
> [    0.753829] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
> [    0.761207] NET: Registered protocol family 1
> [    0.765514] PCI: CLS 0 bytes, default 64
> [    0.770055] kvm [1]: HYP mode not available
> [    0.781176] Initialise system trusted keyrings
> [    0.785193] workingset: timestamp_bits=40 max_order=18 bucket_order=0
> [    0.798000] zbud: loaded
> [    0.801467] squashfs: version 4.0 (2009/01/31) Phillip Lougher
> [    0.807330] 9p: Installing v9fs 9p2000 file system support
> [    0.836097] Key type asymmetric registered
> [    0.839630] Asymmetric key parser 'x509' registered
> [    0.844666] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
> [    0.852346] io scheduler mq-deadline registered
> [    0.856864] io scheduler kyber registered
> [    0.861133] io scheduler bfq registered
> [    0.869795] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
> [    0.877226] brcm-pcie fd500000.pcie: host bridge /scb/pcie@7d500000 ranges:
> [    0.883677] brcm-pcie fd500000.pcie:      MEM 0x0600000000..0x0603ffffff -> 0x00f8000000
> [    0.891977] brcm-pcie fd500000.pcie:   IB MEM 0x0000000000..0x00bfffffff -> 0x0000000000
> [    0.955808] brcm-pcie fd500000.pcie: link up, 5 GT/s x1 (!SSC)
> [    0.961312] brcm-pcie fd500000.pcie: PCI host bridge to bus 0000:00
> [    0.967524] pci_bus 0000:00: root bus resource [bus 00-01]
> [    0.973126] pci_bus 0000:00: root bus resource [mem 0x600000000-0x603ffffff] (bus address [0xf8000000-0xfbffffff])
> [    0.983696] pci 0000:00:00.0: [14e4:2711] type 01 class 0x060400
> [    0.989897] pci 0000:00:00.0: PME# supported from D0 D3hot
> (XEN) physdev.c:16:d0v0 PHYSDEVOP cmd=25: not implemented
> (XEN) physdev.c:16:d0v0 PHYSDEVOP cmd=15: not implemented
> [    1.005812] pci 0000:00:00.0: Failed to add - passthrough or MSI/MSI-X might fail!
> [    1.016400] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
> [    1.023993] pci 0000:01:00.0: [1106:3483] type 00 class 0x0c0330
> [    1.030073] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00000fff 64bit]
> [    1.037089] pci 0000:01:00.0: PME# supported from D0 D3cold
> (XEN) physdev.c:16:d0v0 PHYSDEVOP cmd=15: not implemented
> [    1.047883] pci 0000:01:00.0: Failed to add - passthrough or MSI/MSI-X might fail!
> [    1.058420] pci_bus 0000:01: busn_res: [bus 01] end is updated to 01
> [    1.064252] pci 0000:00:00.0: BAR 14: assigned [mem 0x600000000-0x6000fffff]
> [    1.071453] pci 0000:01:00.0: BAR 0: assigned [mem 0x600000000-0x600000fff 64bit]
> [    1.079094] pci 0000:00:00.0: PCI bridge to [bus 01]
> [    1.084165] pci 0000:00:00.0:   bridge window [mem 0x600000000-0x6000fffff]
> [    1.091426] pcieport 0000:00:00.0: enabling device (0000 -> 0002)
> [    1.097659] pcieport 0000:00:00.0: PME: Signaling with IRQ 36
> [    1.103675] pcieport 0000:00:00.0: AER: enabled with IRQ 36
> [    1.109273] pci 0000:01:00.0: enabling device (0000 -> 0002)
> (XEN) traps.c:1972:d0v0 HSR=0x93800005 pc=0xffff8000108e3564 gva=0xffff80001001d010 gpa=0x00000600000010
> [    1.124234] Unhandled fault at 0xffff80001001d010
> [    1.129039] Mem abort info:
> [    1.131926]   ESR = 0x96000000
> [    1.135089]   EC = 0x25: DABT (current EL), IL = 32 bits
> [    1.140542]   SET = 0, FnV = 0
> [    1.143691]   EA = 0, S1PTW = 0
> [    1.146950] Data abort info:
> [    1.149926]   ISV = 0, ISS = 0x00000000
> [    1.153877]   CM = 0, WnR = 0
> [    1.156965] swapper pgtable: 4k pages, 48-bit VAs, pgdp=00000000412fe000
> [    1.163800] [ffff80001001d010] pgd=000000007ffff003, pud=000000007fffe003, pmd=000000007fffd003, pte=0068000600000707
> [    1.174614] Internal error: ttbr address size fault: 96000000 [#1] SMP
> [    1.181272] Modules linked in:
> [    1.184438] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.6.1-default #1
> [    1.191106] Hardware name: Raspberry Pi 4 Model B (DT)
> [    1.196386] pstate: 60000005 (nZCv daif -PAN -UAO)
> [    1.201307] pc : quirk_usb_early_handoff+0x4fc/0x870
> [    1.206398] lr : quirk_usb_early_handoff+0x4ec/0x870
> [    1.211476] sp : ffff8000100139f0
> [    1.214901] x29: ffff8000100139f0 x28: ffff00003dd8c080
> [    1.220345] x27: ffff00003fdf4c70 x26: ffff8000108e3068
> [    1.225797] x25: ffff800011964050 x24: 00000000396dfbf8
> [    1.231232] x23: 000000000000ffff x22: ffff80001001d000
> [    1.236684] x21: 0000000000001000 x20: ffff80001179b548
> [    1.242119] x19: ffff00003dcac000 x18: ffff8000111dba48
> [    1.247564] x17: 0000000000000001 x16: 00000000deadbeef
> [    1.253007] x15: 0000000600000000 x14: ffff800010025000
> [    1.258451] x13: ffff80001001d000 x12: ffff00003f804440
> [    1.263895] x11: ffff800011461928 x10: ffff800010013510
> [    1.269339] x9 : 0000000000001000 x8 : ffff8000117b2d58
> [    1.274782] x7 : 0000000000000000 x6 : ffff80001001d000
> [    1.280226] x5 : ffff00003ffff000 x4 : ffff00003fffe400
> [    1.285670] x3 : 0068000000000707 x2 : 0140000000000000
> [    1.291114] x1 : 00008005effe3000 x0 : ffff80001001d010
> [    1.296567] Call trace:
> [    1.299111]  quirk_usb_early_handoff+0x4fc/0x870
> [    1.303850]  pci_do_fixups+0xe0/0x138
> [    1.307625]  pci_fixup_device+0x4c/0x130
> [    1.311664]  pci_bus_add_device+0x20/0xb8
> [    1.315799]  pci_bus_add_devices+0x38/0x88
> [    1.320004]  pci_bus_add_devices+0x68/0x88
> [    1.324220]  brcm_pcie_probe+0x768/0xb28
> [    1.328259]  platform_drv_probe+0x50/0xa0
> [    1.332387]  really_probe+0xd8/0x438
> [    1.336083]  driver_probe_device+0xdc/0x130
> [    1.340376]  device_driver_attach+0x6c/0x78
> [    1.344679]  __driver_attach+0x9c/0x168
> [    1.348630]  bus_for_each_dev+0x70/0xc0
> [    1.352581]  driver_attach+0x20/0x28
> [    1.356278]  bus_add_driver+0x190/0x220
> [    1.360220]  driver_register+0x60/0x110
> [    1.364169]  __platform_driver_register+0x44/0x50
> [    1.369001]  brcm_pcie_driver_init+0x18/0x20
> [    1.373391]  do_one_initcall+0x74/0x1b0
> [    1.377342]  kernel_init_freeable+0x214/0x2b0
> [    1.381820]  kernel_init+0x10/0x100
> [    1.385418]  ret_from_fork+0x10/0x18
> [    1.389112] Code: aa0003f6 b4ffdce0 91004000 a90363f7 (b9400000)
> [    1.395351] ---[ end trace 8a644ac18423f457 ]---
> [    1.400143] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
> [    1.407898] Kernel Offset: disabled
> [    1.411496] CPU features: 0x10002,61006000
> [    1.415717] Memory Limit: none
> [    1.418874] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b ]---



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-01  2:20 Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU Roman Shaposhnik
  2020-05-01 11:42 ` Corey Minyard
@ 2020-05-02  0:05 ` Stefano Stabellini
  2020-05-02  1:12   ` Roman Shaposhnik
  1 sibling, 1 reply; 45+ messages in thread
From: Stefano Stabellini @ 2020-05-02  0:05 UTC (permalink / raw)
  To: Roman Shaposhnik
  Cc: Stefano Stabellini, Julien Grall, minyard, jeff.kubascik,
	Julien Grall, xen-devel, Stefano Stabellini

Hi Roman,


In regards to the attached stack trace, nothing rings a bell
unfortunately. I don't know why quirk_usb_early_handoff causes a crash.
It would be useful to add a few printk in quirk_usb_early_handoff to
know where the crash is happening exactly.


In regards to Dornerworks's third patch, it doesn't look like it is
related to the quirk_usb_early_handoff crash. The third patch is
probably not useful anymore because dev->archdata.dev_dma_ops is gone
completely. However, just in case, something like the following would
help recognize if the original bug still persists in newer kernels
somehow:


diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c
index 6c45350e33aa..61af12d79add 100644
--- a/arch/arm64/mm/dma-mapping.c
+++ b/arch/arm64/mm/dma-mapping.c
@@ -53,7 +53,9 @@ void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size,
 		iommu_setup_dma_ops(dev, dma_base, size);
 
 #ifdef CONFIG_XEN
-	if (xen_initial_domain())
+	if (xen_initial_domain()) {
+		WARN_ON(dev->dma_ops != NULL);
 		dev->dma_ops = &xen_swiotlb_dma_ops;
+	}
 #endif
 }


On Thu, 30 Apr 2020, Roman Shaposhnik wrote:
> Hi!
> 
> I'm trying to run Xen on Raspberry Pi 4 with 5.6.1 stock,
> upstream kernel. The kernel itself works perfectly well
> on the board. When I try booting it as Dom0 under Xen,
> it goes into a stacktrace (attached).
> 
> Looking at what nice folks over at Dornerworks have previously
> done to make RPi kernels boot as Dom0 I've come across these
> 3 patches:
>     https://github.com/dornerworks/xen-rpi4-builder/tree/master/patches/linux
> 
> The first patch seems irrelevant (unless I'm missing something
> really basic here). The 2nd patch applied with no issue (but
> I don't think it is related) but the 3d patch failed to apply on
> account of 5.6.1 kernel no longer having:
>     dev->archdata.dev_dma_ops
> E.g.
>     https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/arch/arm64/mm/dma-mapping.c?h=v5.6.1#n55
> 
> I've tried to emulate the effect of the patch by simply introducing
> a static variable that would signal that we already initialized
> dev->dma_ops -- but that didn't help at all.
> 
> I'm CCing Jeff Kubascik to see if the original authors of that Corey Minyard
> to see if may be they have any suggestions on how this may be dealt
> with.
> 
> Any advice would be greatly appreciated!
> 
> Thanks,
> Roman.
> 


^ permalink raw reply related	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-01 11:42 ` Corey Minyard
@ 2020-05-02  1:06   ` Roman Shaposhnik
  2020-05-02  2:16     ` Corey Minyard
  0 siblings, 1 reply; 45+ messages in thread
From: Roman Shaposhnik @ 2020-05-02  1:06 UTC (permalink / raw)
  To: minyard
  Cc: Stefano Stabellini, Julien Grall, jeff.kubascik, Julien Grall,
	xen-devel, Stefano Stabellini

[-- Attachment #1: Type: text/plain, Size: 5009 bytes --]

On Fri, May 1, 2020 at 4:42 AM Corey Minyard <minyard@acm.org> wrote:
>
> On Thu, Apr 30, 2020 at 07:20:05PM -0700, Roman Shaposhnik wrote:
> > Hi!
> >
> > I'm trying to run Xen on Raspberry Pi 4 with 5.6.1 stock,
> > upstream kernel. The kernel itself works perfectly well
> > on the board. When I try booting it as Dom0 under Xen,
> > it goes into a stacktrace (attached).
>
> Getting Xen working on the Pi4 requires a lot of moving parts, and they
> all have to be right.

Tell me about it! It is a pretty frustrating journey to align
everything just right.
On the other hand -- it seems worth to enable RPi as an ARM development
platform for Xen given how ubiquitous it is.

Hence me trying to combine pristine upstream kernel (5.6.1) with
pristine upstream
Xen to enable 100% upstream developer workflow on RPi.

> > Looking at what nice folks over at Dornerworks have previously
> > done to make RPi kernels boot as Dom0 I've come across these
> > 3 patches:
> >     https://github.com/dornerworks/xen-rpi4-builder/tree/master/patches/linux
> >
> > The first patch seems irrelevant (unless I'm missing something
> > really basic here).
>
> It might be irrelevant for your configuration, assuming that Xen gets
> the right information from EFI.  I haven't tried EFI booting.

I'd doing a bit of belt-and-suspenders strategy really -- I'm actually
using UEFI u-boot implementation that pre-populates device trees
and then I'm also forcing an extra copy of it to be load explicitly
via the GRUB devicetree command (GRUB runs as a UEFI payload).

I also have access to the semi-official TianoCore RPi4 port that seems
to be working pretty well: https://github.com/pftf/RPi4/releases/tag/v1.5
for booting all sort of UEFI payloads on RPi4.

> > The 2nd patch applied with no issue (but
> > I don't think it is related) but the 3d patch failed to apply on
> > account of 5.6.1 kernel no longer having:
> >     dev->archdata.dev_dma_ops
> > E.g.
> >     https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/arch/arm64/mm/dma-mapping.c?h=v5.6.1#n55
> >
> > I've tried to emulate the effect of the patch by simply introducing
> > a static variable that would signal that we already initialized
> > dev->dma_ops -- but that didn't help at all.
> >
> > I'm CCing Jeff Kubascik to see if the original authors of that Corey Minyard
> > to see if may be they have any suggestions on how this may be dealt
> > with.
> >
> > Any advice would be greatly appreciated!
>
> What's your Pi4 config.txt file look like? The GIC is not being handled
> correctly, and I'm guessing that configuration is wrong.  You can't use
> the stock config.txt file with Xen, you have to modify the configuration a
> bit.

Understood. I'm actually using a custom one:
    https://github.com/lf-edge/eve/blob/master/pkg/u-boot/rpi/config.txt

I could swear that I had a GIC setting in it -- but apparently no -- so
I added the following at the top of what you could see at the URL above:

total_mem=4096
enable_gic=1

> I think just adding:
>
> enable_gic=1
> total_mem=1024

Right -- but my board has 4G memory -- so I think what I did above should work.

> might get it working, or at least solve one problem.  It's required either
> way.  That might get rid of the GIC errors at the beginning.  I see a
> few of those, but not that many.
>
> My kernel command line is:
>
> coherent_pool=1M 8250.nr_uarts=1 cma=64M cma=256M  smsc95xx.macaddr=DC:A6:32:4F:3A:CD vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000  console=hvc0 clk_ignore_unused root=/dev/mmcblk0p2 rootwait
>
> A lot of that configuration gets pulled from the initialization done by
> the GPU at startup which it put into the device tree.  I'm not sure what a
> lot of it means.  Some of it is added by Xen, too.

Just to be on the safe side -- I'm now using Device Tree from Dornerworks build.
The file is attached.

> I can verify the DMA patch is important.  I'm not sure how to apply it
> to a 5.6 kernel, though.

OK, after chatting with Stefano it definitely seems that there's some kind of
an issue with DMA. It just seems different to what the original issue with
4.19.x kernel used to be.

Here's the clue. When I disable Xen DMA operations altogether with
the following. I get the Linux kernel that is booting all the way to trying
mounting a root filesystem (which sadly can't be found since eMMC
requires DMA FWIU). I hope this will provide enough of a clue to
figure out what may be wrong with the 5.x kernel. I'm attaching the
boo log with the following patch applied:

diff --git a/arch/arm/xen/mm.c b/arch/arm/xen/mm.c
index d40e9e5fc52b..c25ead822de0 100644
--- a/arch/arm/xen/mm.c
+++ b/arch/arm/xen/mm.c
@@ -137,8 +137,7 @@ void xen_destroy_contiguous_region(phys_addr_t
pstart, unsigned int order)
 static int __init xen_mm_init(void)
 {
        struct gnttab_cache_flush cflush;
-       if (!xen_initial_domain())
-               return 0;
+       return 0;
        xen_swiotlb_init(1, false);

        cflush.op = 0;

Thanks,
Roman.

[-- Attachment #2: log.txt --]
[-- Type: text/plain, Size: 30975 bytes --]

Using modules provided by bootloader in FDT
Xen 4.14-unstable (c/s Mon Apr 20 14:36:53 2020 +0100 git:8065e1b416-dirty) EFI loader
Warning: Could not query variable store: 0x8000000000000003
- UART enabled -
- Boot CPU booting -
- Current EL 00000008 -
- Initialize CPU -
- Turning on paging -
- Ready -
(XEN) Checking for initrd in /chosen
(XEN) RAM: 0000000000001000 - 0000000007ef1fff
(XEN) RAM: 0000000007ef2000 - 0000000007f0dfff
(XEN) RAM: 0000000007f0e000 - 000000002bc45fff
(XEN) RAM: 000000002bc46000 - 000000002bc50fff
(XEN) RAM: 000000002bc51000 - 000000002bd93fff
(XEN) RAM: 000000002bd94000 - 000000002d780fff
(XEN) RAM: 000000002d781000 - 000000003c9f6fff
(XEN) RAM: 000000003c9f7000 - 000000003c9f8fff
(XEN) RAM: 000000003c9fb000 - 000000003c9fdfff
(XEN) RAM: 000000003c9fe000 - 000000003cb08fff
(XEN) RAM: 000000003cb10000 - 000000003cb10fff
(XEN) RAM: 000000003cb12000 - 000000003cb13fff
(XEN) RAM: 000000003cb1b000 - 000000003cb1cfff
(XEN) RAM: 000000003cb1e000 - 000000003df3ffff
(XEN) RAM: 000000003df50000 - 000000003dffffff
(XEN) RAM: 0000000040000000 - 00000000fbffffff
(XEN)
(XEN) MODULE[0]: 000000002bc51000 - 000000002bd930c8 Xen
(XEN) MODULE[1]: 000000002bc47000 - 000000002bc51000 Device Tree
(XEN) MODULE[2]: 000000002bd9d000 - 000000002d67c200 Kernel
(XEN)
(XEN) CMDLINE[000000002bd9d000]:chosen console=hvc0 earlyprintk=xen nomodeset
(XEN)
(XEN) Command line: dom0_mem=1024M,max:1024M dom0_max_vcpus=1
(XEN) parameter "dom0_mem" has invalid value "1024M,max:1024M", rc=-22!
(XEN) Domain heap initialised
(XEN) Booting using Device Tree
(XEN) Platform: Raspberry Pi 4
(XEN) No dtuart path configured
(XEN) Bad console= option 'dtuart'
 Xen 4.14-unstable
(XEN) Xen version 4.14-unstable (@) (aarch64-linux-gnu-gcc (Ubuntu 9.3.0-10ubuntu2) 9.3.0) debug=y  Thu Apr 30 17:43:33 PDT 2020
(XEN) Latest ChangeSet: Mon Apr 20 14:36:53 2020 +0100 git:8065e1b416-dirty
(XEN) build-id: 988ba8f5257c494645df6d5c4c2d5fd9f39e2539
(XEN) Processor: 410fd083: "ARM Limited", variant: 0x0, part 0xd08, rev 0x3
(XEN) 64-bit Execution:
(XEN)   Processor Features: 0000000000002222 0000000000000000
(XEN)     Exception Levels: EL3:64+32 EL2:64+32 EL1:64+32 EL0:64+32
(XEN)     Extensions: FloatingPoint AdvancedSIMD
(XEN)   Debug Features: 0000000010305106 0000000000000000
(XEN)   Auxiliary Features: 0000000000000000 0000000000000000
(XEN)   Memory Model Features: 0000000000001124 0000000000000000
(XEN)   ISA Features:  0000000000010000 0000000000000000
(XEN) 32-bit Execution:
(XEN)   Processor Features: 00000131:00011011
(XEN)     Instruction Sets: AArch32 A32 Thumb Thumb-2 Jazelle
(XEN)     Extensions: GenericTimer Security
(XEN)   Debug Features: 03010066
(XEN)   Auxiliary Features: 00000000
(XEN)   Memory Model Features: 10201105 40000000 01260000 02102211
(XEN)  ISA Features: 02101110 13112111 21232042 01112131 00011142 00010001
(XEN) SMP: Allowing 4 CPUs
(XEN) enabled workaround for: ARM erratum 1319537
(XEN) Generic Timer IRQ: phys=30 hyp=26 virt=27 Freq: 54000 KHz
(XEN) GICv2 initialization:
(XEN)         gic_dist_addr=00000000ff841000
(XEN)         gic_cpu_addr=00000000ff842000
(XEN)         gic_hyp_addr=00000000ff844000
(XEN)         gic_vcpu_addr=00000000ff846000
(XEN)         gic_maintenance_irq=25
(XEN) GICv2: 256 lines, 4 cpus, secure (IID 0200143b).
(XEN) XSM Framework v1.0.0 initialized
(XEN) Initialising XSM SILO mode
(XEN) Using scheduler: SMP Credit Scheduler rev2 (credit2)
(XEN) Initializing Credit2 scheduler
(XEN)  load_precision_shift: 18
(XEN)  load_window_shift: 30
(XEN)  underload_balance_tolerance: 0
(XEN)  overload_balance_tolerance: -3
(XEN)  runqueues arrangement: socket
(XEN)  cap enforcement granularity: 10ms
(XEN) load tracking window length 1073741824 ns
(XEN) Allocated console ring of 32 KiB.
(XEN) CPU0: Guest atomics will try 5 times before pausing the domain
(XEN) Bringing up CPU1
- CPU 00000001 booting -
- Current EL 00000008 -
- Initialize CPU -
- Turning on paging -
- Ready -
(XEN) CPU1: Guest atomics will try 5 times before pausing the domain
(XEN) CPU 1 booted.
(XEN) Bringing up CPU2
- CPU 00000002 booting -
- Current EL 00000008 -
- Initialize CPU -
- Turning on paging -
- Ready -
(XEN) CPU2: Guest atomics will try 5 times before pausing the domain
(XEN) CPU 2 booted.
(XEN) Bringing up CPU3
- CPU 00000003 booting -
- Current EL 00000008 -
- Initialize CPU -
- Turning on paging -
- Ready -
(XEN) CPU3: Guest atomics will try 5 times before pausing the domain
(XEN) CPU 3 booted.
(XEN) Brought up 4 CPUs
(XEN) I/O virtualisation disabled
(XEN) P2M: 44-bit IPA with 44-bit PA and 8-bit VMID
(XEN) P2M: 4 levels with order-0 root, VTCR 0x80043594
(XEN) Adding cpu 0 to runqueue 0
(XEN)  First cpu on runqueue, activating
(XEN) Adding cpu 1 to runqueue 0
(XEN) Adding cpu 2 to runqueue 0
(XEN) Adding cpu 3 to runqueue 0
(XEN) alternatives: Patching with alt table 00000000002d4208 -> 00000000002d491c
(XEN) *** LOADING DOMAIN 0 ***
(XEN) Loading d0 kernel from boot module @ 000000002bd9d000
(XEN) Allocating 1:1 mappings totalling 1024MB for dom0:
(XEN) BANK[0] 0x00000040000000-0x00000080000000 (1024MB)
(XEN) Grant table range: 0x0000002bc51000-0x0000002bc91000
(XEN) Allocating PPI 16 for event channel interrupt
(XEN) Loading zImage from 000000002bd9d000 to 0000000040080000-000000004195f200
(XEN) Loading d0 DTB to 0x0000000048000000-0x0000000048006e0a
(XEN) Initial low memory virq threshold set at 0x4000 pages.
(XEN) Scrubbing Free RAM in background
(XEN) Std. Loglevel: All
(XEN) Guest Loglevel: All
(XEN) ***************************************************
(XEN) No support for ARM_SMCCC_ARCH_WORKAROUND_1.
(XEN) Please update your firmware.
(XEN) ***************************************************
(XEN) No support for ARM_SMCCC_ARCH_WORKAROUND_1.
(XEN) Please update your firmware.
(XEN) ***************************************************
(XEN) No support for ARM_SMCCC_ARCH_WORKAROUND_1.
(XEN) Please update your firmware.
(XEN) ***************************************************
(XEN) 3... 2... 1...
(XEN) *** Serial input to DOM0 (type 'CTRL-a' three times to switch input)
(XEN) Freed 348kB init memory.
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER4
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER8
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER12
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER16
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER20
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER24
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER28
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd083]
[    0.000000] Linux version 5.6.1-default (root@13024eb1d2cf) (gcc version 8.3.0 (Alpine 8.3.0)) #6 SMP Sat May 2 00:10:36 UTC 2020
[    0.000000] Machine model: Raspberry Pi 4 Model B
[    0.000000] Xen 4.14 support found
[    0.000000] efi: Getting EFI parameters from FDT:
[    0.000000] efi: UEFI not found.
[    0.000000] NUMA: No NUMA configuration found
[    0.000000] NUMA: Faking a node at [mem 0x0000000040000000-0x000000007fffffff]
[    0.000000] NUMA: NODE_DATA [mem 0x7fdd42c0-0x7fdd7fff]
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000040000000-0x000000007fffffff]
[    0.000000]   DMA32    empty
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000040000000-0x000000007fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000040000000-0x000000007fffffff]
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.1 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: Trusted OS migration not required
[    0.000000] psci: SMC Calling Convention v1.1
[    0.000000] percpu: Embedded 23 pages/cpu s54232 r8192 d31784 u94208
[    0.000000] Detected PIPT I-cache on CPU0
[    0.000000] CPU features: detected: EL2 vector hardening
[    0.000000] CPU features: detected: Speculative Store Bypass Disable
[    0.000000] CPU features: detected: ARM erratum 1319367
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 258048
[    0.000000] Policy zone: DMA
[    0.000000] Kernel command line: console=hvc0 earlyprintk=xen nomodeset
[    0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
[    0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 1002060K/1048576K available (12732K kernel code, 1852K rwdata, 6184K rodata, 4672K init, 758K bss, 46516K reserved, 0K cma-reserved)
[    0.000000] random: get_random_u64 called from __kmem_cache_create+0x40/0x578 with crng_init=0
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=480 to nr_cpu_ids=1.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] arch_timer: cp15 timer(s) running at 54.00MHz (virt).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0xc743ce346, max_idle_ns: 440795203123 ns
[    0.000005] sched_clock: 56 bits at 54MHz, resolution 18ns, wraps every 4398046511102ns
[    0.000273] Console: colour dummy device 80x25
[    0.270836] printk: console [hvc0] enabled
[    0.275124] Calibrating delay loop (skipped), value calculated using timer frequency.. 108.00 BogoMIPS (lpj=540000)
[    0.285678] pid_max: default: 32768 minimum: 301
[    0.290511] LSM: Security Framework initializing
[    0.295221] Mount-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
[    0.302730] Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
[    0.313228] xen:grant_table: Grant tables using version 1 layout
[    0.318714] Grant table initialized
[    0.322312] xen:events: Using FIFO-based ABI
[    0.326760] Xen: initializing cpu0
[    0.330353] rcu: Hierarchical SRCU implementation.
[    0.338817] EFI services will not be available.
[    0.342959] smp: Bringing up secondary CPUs ...
[    0.347479] smp: Brought up 1 node, 1 CPU
[    0.351575] SMP: Total of 1 processors activated.
[    0.356408] CPU features: detected: 32-bit EL0 Support
[    0.361689] CPU features: detected: CRC32 instructions
[    0.396295] CPU: All CPU(s) started at EL1
[    0.399867] alternatives: patching kernel code
[    0.405872] devtmpfs: initialized
[    0.413580] Registered cp15_barrier emulation handler
[    0.418164] Registered setend emulation handler
[    0.422741] KASLR disabled due to lack of seed
[    0.427659] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.437360] futex hash table entries: 256 (order: 2, 16384 bytes, linear)
[    0.444449] pinctrl core: initialized pinctrl subsystem
[    0.450684] thermal_sys: Registered thermal governor 'fair_share'
[    0.450687] thermal_sys: Registered thermal governor 'bang_bang'
[    0.456235] thermal_sys: Registered thermal governor 'step_wise'
[    0.462423] thermal_sys: Registered thermal governor 'user_space'
[    0.468654] DMI not present or invalid.
[    0.479281] NET: Registered protocol family 16
[    0.483559] DMA: preallocated 256 KiB pool for atomic allocations
[    0.489539] audit: initializing netlink subsys (disabled)
[    0.496103] audit: type=2000 audit(0.370:1): state=initialized audit_enabled=0 res=1
[    0.503951] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    0.510341] ASID allocator initialised with 65536 entries
[    0.516925] Serial: AMBA PL011 UART driver
[    0.539528] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
[    0.545702] HugeTLB registered 32.0 MiB page size, pre-allocated 0 pages
[    0.552578] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[    0.559398] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages
[    0.570438] cryptd: max_cpu_qlen set to 1000
[    0.580347] ACPI: Interpreter disabled.
[    0.584023] xen:balloon: Initialising balloon driver
[    0.590395] iommu: Default domain type: Translated
[    0.595026] vgaarb: loaded
[    0.597933] SCSI subsystem initialized
[    0.601940] usbcore: registered new interface driver usbfs
[    0.607076] usbcore: registered new interface driver hub
[    0.612627] usbcore: registered new device driver usb
[    0.617790] usb_phy_generic phy: phy supply vcc not found, using dummy regulator
[    0.625532] pps_core: LinuxPPS API ver. 1 registered
[    0.630281] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.639665] PTP clock support registered
[    0.643762] EDAC MC: Ver: 3.0.0
[    0.648106] NetLabel: Initializing
[    0.650959] NetLabel:  domain hash size = 128
[    0.655412] NetLabel:  protocols = UNLABELED CIPSOv4 CALIPSO
[    0.661291] NetLabel:  unlabeled traffic allowed by default
[    0.667445] clocksource: Switched to clocksource arch_sys_counter
[    0.673415] VFS: Disk quotas dquot_6.6.0
[    0.677266] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.684429] pnp: PnP ACPI: disabled
[    0.694684] NET: Registered protocol family 2
[    0.699014] tcp_listen_portaddr_hash hash table entries: 512 (order: 1, 8192 bytes, linear)
[    0.707026] TCP established hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    0.714970] TCP bind hash table entries: 8192 (order: 5, 131072 bytes, linear)
[    0.722397] TCP: Hash tables configured (established 8192 bind 8192)
[    0.728962] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
[    0.735547] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
[    0.742928] NET: Registered protocol family 1
[    0.747235] PCI: CLS 0 bytes, default 64
[    0.751794] kvm [1]: HYP mode not available
[    0.762848] Initialise system trusted keyrings
[    0.766865] workingset: timestamp_bits=40 max_order=18 bucket_order=0
[    0.779692] zbud: loaded
[    0.783113] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.788995] 9p: Installing v9fs 9p2000 file system support
[    0.818061] Key type asymmetric registered
[    0.821593] Asymmetric key parser 'x509' registered
[    0.826628] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
[    0.834307] io scheduler mq-deadline registered
[    0.838829] io scheduler kyber registered
[    0.843090] io scheduler bfq registered
[    0.851833] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
[    0.859316] brcm-pcie fd500000.pcie: host bridge /scb/pcie@7d500000 ranges:
[    0.865766] brcm-pcie fd500000.pcie:      MEM 0x0600000000..0x0603ffffff -> 0x00f8000000
[    0.874065] brcm-pcie fd500000.pcie:   IB MEM 0x0000000000..0x00ffffffff -> 0x0000000000
[    0.937473] brcm-pcie fd500000.pcie: link up, 5 GT/s x1 (!SSC)
[    0.942977] brcm-pcie fd500000.pcie: PCI host bridge to bus 0000:00
[    0.949188] pci_bus 0000:00: root bus resource [bus 00-01]
[    0.954793] pci_bus 0000:00: root bus resource [mem 0x600000000-0x603ffffff] (bus address [0xf8000000-0xfbffffff])
[    0.965361] pci 0000:00:00.0: [14e4:2711] type 01 class 0x060400
[    0.971562] pci 0000:00:00.0: PME# supported from D0 D3hot
(XEN) physdev.c:16:d0v0 PHYSDEVOP cmd=25: not implemented
(XEN) physdev.c:16:d0v0 PHYSDEVOP cmd=15: not implemented
[    0.987468] pci 0000:00:00.0: Failed to add - passthrough or MSI/MSI-X might fail!
[    0.997325] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    1.004931] pci 0000:01:00.0: [1106:3483] type 00 class 0x0c0330
[    1.010995] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00000fff 64bit]
[    1.018002] pci 0000:01:00.0: PME# supported from D0 D3cold
(XEN) physdev.c:16:d0v0 PHYSDEVOP cmd=15: not implemented
[    1.028797] pci 0000:01:00.0: Failed to add - passthrough or MSI/MSI-X might fail!
[    1.038631] pci_bus 0000:01: busn_res: [bus 01] end is updated to 01
[    1.044464] pci 0000:00:00.0: BAR 14: assigned [mem 0x600000000-0x6000fffff]
[    1.051664] pci 0000:01:00.0: BAR 0: assigned [mem 0x600000000-0x600000fff 64bit]
[    1.059305] pci 0000:00:00.0: PCI bridge to [bus 01]
[    1.064377] pci 0000:00:00.0:   bridge window [mem 0x600000000-0x6000fffff]
[    1.071642] pcieport 0000:00:00.0: enabling device (0000 -> 0002)
[    1.077882] pcieport 0000:00:00.0: PME: Signaling with IRQ 32
[    1.083871] pcieport 0000:00:00.0: AER: enabled with IRQ 32
[    1.089489] pci 0000:01:00.0: enabling device (0000 -> 0002)
[    1.103732] ------------[ cut here ]------------
[    1.107828] bcm2835-dma fe007000.dma: DMA addr 0x0000000101963000+4096 overflow (mask ffffffff, bus limit fbffffff).
[    1.118549] WARNING: CPU: 0 PID: 1 at kernel/dma/direct.c:364 dma_direct_map_page+0x16c/0x180
[    1.127194] Modules linked in:
[    1.130360] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.6.1-default #6
[    1.137028] Hardware name: Raspberry Pi 4 Model B (DT)
[    1.142309] pstate: 60000005 (nZCv daif -PAN -UAO)
[    1.147217] pc : dma_direct_map_page+0x16c/0x180
[    1.151967] lr : dma_direct_map_page+0x16c/0x180
[    1.156695] sp : ffff800010013ad0
[    1.160121] x29: ffff800010013ad0 x28: 0000000000000000
[    1.165564] x27: ffff80001130044c x26: ffff8000113d3960
[    1.171007] x25: ffff8000112f40a8 x24: 0000000000000000
[    1.176451] x23: ffff80001179b548 x22: ffff00003f9e6c10
[    1.181904] x21: ffff00003f9e6c00 x20: ffff00003f9e6c10
[    1.187339] x19: ffff80001179b548 x18: 0000000000000010
[    1.192792] x17: 0000000000000001 x16: 00000000deadbeef
[    1.198226] x15: ffffffffffffffff x14: 20776f6c66726576
[    1.203671] x13: 6f20363930342b30 x12: 3030333639313031
[    1.209114] x11: 3030303030303078 x10: 3020726464612041
[    1.214558] x9 : 4d44203a616d642e x8 : ffff80001071e900
[    1.220002] x7 : 00000000000000a5 x6 : ffff80001197a6f7
[    1.225446] x5 : ffff800010e19d18 x4 : 0000000000000000
[    1.230889] x3 : 0000000000000000 x2 : 00000000ffffffff
[    1.236333] x1 : 745b439e6d834000 x0 : 0000000000000000
[    1.241778] Call trace:
[    1.244330]  dma_direct_map_page+0x16c/0x180
[    1.248722]  bcm2835_dma_probe+0x4bc/0x558
[    1.252942]  platform_drv_probe+0x50/0xa0
[    1.257061]  really_probe+0xd8/0x438
[    1.260748]  driver_probe_device+0xdc/0x130
[    1.265051]  device_driver_attach+0x6c/0x78
[    1.269352]  __driver_attach+0x9c/0x168
[    1.273303]  bus_for_each_dev+0x70/0xc0
[    1.277254]  driver_attach+0x20/0x28
[    1.280942]  bus_add_driver+0x190/0x220
[    1.284894]  driver_register+0x60/0x110
[    1.288843]  __platform_driver_register+0x44/0x50
[    1.293678]  bcm2835_dma_driver_init+0x18/0x20
[    1.298240]  do_one_initcall+0x74/0x1b0
[    1.302200]  kernel_init_freeable+0x214/0x2b0
[    1.306669]  kernel_init+0x10/0x100
[    1.310267]  ret_from_fork+0x10/0x18
[    1.313960] ---[ end trace 2f723f6ea1e0757e ]---
[    1.318726] bcm2835-dma fe007000.dma: Failed to map zero page
[    1.324687] bcm2835-dma: probe of fe007000.dma failed with error -12
[    1.334169] xen:xen_evtchn: Event-channel device installed
[    1.339414] Initialising Xen pvcalls frontend driver
[    1.345880] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
[    1.359258] bcm2835-aux-uart fe215040.serial: there is not valid maps for state default
[    1.366842] OF: /soc/serial@7e215040: could not find phandle
[    1.372605] bcm2835-aux-uart fe215040.serial: could not get clk: -2
[    1.378998] bcm2835-aux-uart: probe of fe215040.serial failed with error -2
[    1.386564] Serial: AMBA driver
[    1.389877] msm_serial: driver initialized
[    1.394719] cacheinfo: Unable to detect cache hierarchy for CPU 0
[    1.409630] brd: module loaded
[    1.419607] loop: module loaded
[    1.438031] Invalid max_queues (4), will use default max: 1.
[    1.454031] drbd: initialized. Version: 8.4.11 (api:1/proto:86-101)
[    1.459804] drbd: built-in
[    1.462592] drbd: registered as block device major 147
[    1.468739] bcm2835-power bcm2835-power: Broadcom BCM2835 power domains driver
[    1.476559] wireguard: allowedips self-tests: pass
[    1.483341] wireguard: nonce counter self-tests: pass
[    1.908628] wireguard: ratelimiter self-tests: pass
[    1.913030] wireguard: WireGuard 1.0.0 loaded. See www.wireguard.com for information.
[    1.920984] wireguard: Copyright (C) 2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
[    1.932354] libphy: Fixed MDIO Bus: probed
[    1.936408] bcmgenet fd580000.genet: using random Ethernet MAC
[    1.941902] bcmgenet fd580000.genet: failed to get enet clock
[    1.947758] bcmgenet fd580000.genet: GENET 5.0 EPHY: 0x0000
[    1.953455] bcmgenet fd580000.genet: failed to get enet-wol clock
[    1.959700] bcmgenet fd580000.genet: failed to get enet-eee clock
[    1.977496] libphy: bcmgenet MII bus: probed
[    2.057539] unimac-mdio unimac-mdio.-19: Broadcom UniMAC MDIO bus
[    2.063755] xen_netfront: Initialising Xen virtual ethernet driver
[    2.069721] xhci_hcd 0000:01:00.0: xHCI Host Controller
[    2.074800] xhci_hcd 0000:01:00.0: new USB bus registered, assigned bus number 1
[    2.082779] xhci_hcd 0000:01:00.0: hcc params 0x002841eb hci version 0x100 quirks 0x0000000000000090
[    2.092132] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.06
[    2.100076] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.107449] usb usb1: Product: xHCI Host Controller
[    2.112437] usb usb1: Manufacturer: Linux 5.6.1-default xhci-hcd
[    2.118595] usb usb1: SerialNumber: 0000:01:00.0
[    2.123766] hub 1-0:1.0: USB hub found
[    2.127217] hub 1-0:1.0: 1 port detected
[    2.131662] xhci_hcd 0000:01:00.0: xHCI Host Controller
[    2.136591] xhci_hcd 0000:01:00.0: new USB bus registered, assigned bus number 2
[    2.144182] xhci_hcd 0000:01:00.0: Host supports USB 3.0 SuperSpeed
[    2.150673] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
[    2.158916] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 5.06
[    2.167228] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.174618] usb usb2: Product: xHCI Host Controller
[    2.179618] usb usb2: Manufacturer: Linux 5.6.1-default xhci-hcd
[    2.185753] usb usb2: SerialNumber: 0000:01:00.0
[    2.190885] hub 2-0:1.0: USB hub found
[    2.194405] hub 2-0:1.0: 4 ports detected
[    2.199145] usbcore: registered new interface driver usb-storage
[    2.204877] mousedev: PS/2 mouse device common for all mice
[    2.212659] bcm2835-wdt bcm2835-wdt: Broadcom BCM2835 watchdog timer
[    2.219119] xen_wdt xen_wdt: initialized (timeout=60s, nowayout=0)
[    2.225473] sdhci: Secure Digital Host Controller Interface driver
[    2.231146] sdhci: Copyright(c) Pierre Ossman
[    2.235825] sdhci-pltfm: SDHCI platform and OF driver helper
[    2.273506] mmc0: SDHCI controller on fe300000.mmcnr [fe300000.mmcnr] using PIO
[    2.281417] ledtrig-cpu: registered to indicate activity on CPUs
[    2.287786] hid: raw HID events driver (C) Jiri Kosina
[    2.292597] usbcore: registered new interface driver usbhid
[    2.298095] usbhid: USB HID core driver
[    2.302529] bcm2835-mbox fe00b880.mailbox: mailbox enabled
[    2.311675] xt_time: kernel timezone is -0000
[    2.315576] IPVS: Registered protocols ()
[    2.319735] IPVS: Connection hash table configured (size=4096, memory=64Kbytes)
[    2.327337] IPVS: ipvs loaded.
[    2.330487] ipip: IPv4 and MPLS over IPv4 tunneling driver
[    2.336456] gre: GRE over IPv4 demultiplexor driver
[    2.341162] ipt_CLUSTERIP: ClusterIP Version 0.8 loaded successfully
[    2.347888] Initializing XFRM netlink socket
[    2.352567] NET: Registered protocol family 10
[    2.357853] Segment Routing with IPv6
[    2.362140] NET: Registered protocol family 17
[    2.366065] mmc0: queuing unknown CIS tuple 0x80 (2 bytes)
[    2.371775] NET: Registered protocol family 15
[    2.376292] Bridge firewalling registered
[    2.380510] 8021q: 802.1Q VLAN Support v1.8
[    2.384881] 9pnet: Installing 9P2000 support
[    2.389081] Initialising Xen transport for 9pfs
[    2.393833] Key type dns_resolver registered
[    2.398505] registered taskstats version 1
[    2.402322] Loading compiled-in X.509 certificates
[    2.407212] mmc0: queuing unknown CIS tuple 0x80 (3 bytes)
[    2.416914] Loaded X.509 cert 'Build time autogenerated kernel key: ca85232d2e7ebc2af2feaa4812e2d651700446d8'
[    2.426514] zswap: loaded using pool lzo/zbud
[    2.431307] Key type ._fscrypt registered
[    2.434991] mmc0: queuing unknown CIS tuple 0x80 (3 bytes)
[    2.440690] Key type .fscrypt registered
[    2.444619] Key type fscrypt-provisioning registered
[    2.452476] mmc0: queuing unknown CIS tuple 0x80 (7 bytes)
[    2.459548] uart-pl011 fe201000.serial: there is not valid maps for state default
[    2.466774] fe201000.serial: ttyAMA1 at MMIO 0xfe201000 (irq = 18, base_baud = 0) is a PL011 rev2
[    2.476384] mmc0: queuing unknown CIS tuple 0x80 (3 bytes)
[    2.485092] raspberrypi-firmware soc:firmware: Request 0x00000001 returned status 0x00000000
[    2.493157] raspberrypi-firmware soc:firmware: Request 0x00030046 returned status 0x00000000
[    2.501734] usb 1-1: new high-speed USB device number 2 using xhci_hcd
[    2.508813] raspberrypi-firmware soc:firmware: Request 0x00030007 returned status 0x00000000
[    2.516938] raspberrypi-clk raspberrypi-clk: Failed to get pllb min freq: -22
[    2.524205] raspberrypi-clk raspberrypi-clk: Failed to initialize pllb, -22
[    2.531389] raspberrypi-clk: probe of raspberrypi-clk failed with error -22
[    2.540422] raspberrypi-firmware soc:firmware: Request 0x00030043 returned status 0x00000000
[    2.548407] raspberrypi-exp-gpio soc:firmware:gpio: Failed to get GPIO 0 config (-22 80)
[    2.556682] raspberrypi-firmware soc:firmware: Request 0x00030043 returned status 0x00000000
[    2.565255] raspberrypi-exp-gpio soc:firmware:gpio: Failed to get GPIO 1 config (-22 81)
[    2.573574] raspberrypi-firmware soc:firmware: Request 0x00030043 returned status 0x00000000
[    2.582132] raspberrypi-exp-gpio soc:firmware:gpio: Failed to get GPIO 2 config (-22 82)
[    2.590442] raspberrypi-firmware soc:firmware: Request 0x00030043 returned status 0x00000000
[    2.598984] raspberrypi-exp-gpio soc:firmware:gpio: Failed to get GPIO 3 config (-22 83)
[    2.607290] raspberrypi-firmware soc:firmware: Request 0x00030043 returned status 0x00000000
[    2.615847] raspberrypi-exp-gpio soc:firmware:gpio: Failed to get GPIO 4 config (-22 84)
[    2.624141] raspberrypi-firmware soc:firmware: Request 0x00030043 returned status 0x00000000
[    2.632700] raspberrypi-exp-gpio soc:firmware:gpio: Failed to get GPIO 5 config (-22 85)
[    2.641020] raspberrypi-firmware soc:firmware: Request 0x00030043 returned status 0x00000000
[    2.649559] raspberrypi-exp-gpio soc:firmware:gpio: Failed to get GPIO 6 config (-22 86)
[    2.657868] raspberrypi-firmware soc:firmware: Request 0x00030043 returned status 0x00000000
[    2.666409] raspberrypi-exp-gpio soc:firmware:gpio: Failed to get GPIO 7 config (-22 87)
[    2.675053] usb 1-1: New USB device found, idVendor=2109, idProduct=3431, bcdDevice= 4.20
[    2.683004] usb 1-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[    2.690253] usb 1-1: Product: USB2.0 Hub
[    2.694944] raspberrypi-firmware soc:firmware: Request 0x00030030 returned status 0x00000000
[    2.704156] raspberrypi-firmware soc:firmware: Request 0x00030043 returned status 0x00000000
[    2.712138] raspberrypi-exp-gpio soc:firmware:gpio: Failed to get GPIO 6 config (-22 86)
[    2.720869] raspberrypi-firmware soc:firmware: Request 0x00030043 returned status 0x00000000
[    2.729006] raspberrypi-exp-gpio soc:firmware:gpio: Failed to get GPIO 6 config (-22 86)
[    2.737296] reg-fixed-voltage: probe of sd_vcc_reg failed with error -22
[    2.745091] hub 1-1:1.0: USB hub found
[    2.748447] raspberrypi-firmware soc:firmware: Request 0x00030043 returned status 0x00000000
[    2.756917] raspberrypi-exp-gpio soc:firmware:gpio: Failed to get GPIO 4 config (-22 84)
[    2.765256] raspberrypi-firmware soc:firmware: Request 0x00030043 returned status 0x00000000
[    2.773801] raspberrypi-exp-gpio soc:firmware:gpio: Failed to get GPIO 4 config (-22 84)
[    2.782067] hub 1-1:1.0: 4 ports detected
[    2.786222] gpio-regulator: probe of sd_io_1v8_reg failed with error -22
[    2.795347] hctosys: unable to open rtc device (rtc0)
[    2.806267] VFS: Cannot open root device "(null)" or unknown-block(0,0): error -6
[    2.813313] Please append a correct "root=" boot option; here are the available partitions:
[    2.821773] 0100          131072 ram0
[    2.821776]  (driver?)
[    2.828101] 0101          131072 ram1
[    2.828103]  (driver?)
[    2.834393] 0102          131072 ram2
[    2.834395]  (driver?)
[    2.840716] 0103          131072 ram3
[    2.840718]  (driver?)
[    2.847037] 0104          131072 ram4
[    2.847039]  (driver?)
[    2.853359] 0105          131072 ram5
[    2.853361]  (driver?)
[    2.859693] 0106          131072 ram6
[    2.859695]  (driver?)
[    2.866002] 0107          131072 ram7
[    2.866003]  (driver?)
[    2.872325] 0108          131072 ram8
[    2.872327]  (driver?)
[    2.878669] 0109          131072 ram9
[    2.878671]  (driver?)
[    2.884968] 010a          131072 ram10
[    2.884969]  (driver?)
[    2.891378] 010b          131072 ram11
[    2.891380]  (driver?)
[    2.897813] 010c          131072 ram12
[    2.897815]  (driver?)
[    2.904197] 010d          131072 ram13
[    2.904198]  (driver?)
[    2.910607] 010e          131072 ram14
[    2.910609]  (driver?)
[    2.917016] 010f          131072 ram15
[    2.917017]  (driver?)
[    2.923453] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
[    2.931858] CPU: 0 PID: 1 Comm: swapper/0 Tainted: G        W         5.6.1-default #6
[    2.939931] Hardware name: Raspberry Pi 4 Model B (DT)
[    2.945199] Call trace:
[    2.947753]  dump_backtrace+0x0/0x1d0
[    2.951524]  show_stack+0x14/0x20
[    2.954950]  dump_stack+0xbc/0x100
[    2.958472]  panic+0x150/0x324
[    2.961622]  mount_block_root+0x28c/0x32c
[    2.965746]  mount_root+0x7c/0x88
[    2.969171]  prepare_namespace+0x158/0x198
[    2.973385]  kernel_init_freeable+0x264/0x2b0
[    2.977876]  kernel_init+0x10/0x100
[    2.981465]  ret_from_fork+0x10/0x18
[    2.985157] Kernel Offset: disabled
[    2.988751] CPU features: 0x10002,61006000
[    2.992963] Memory Limit: none
[    2.996131] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) ]---

[-- Attachment #3: r.bin --]
[-- Type: application/octet-stream, Size: 29150 bytes --]

^ permalink raw reply related	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-02  0:05 ` Stefano Stabellini
@ 2020-05-02  1:12   ` Roman Shaposhnik
  0 siblings, 0 replies; 45+ messages in thread
From: Roman Shaposhnik @ 2020-05-02  1:12 UTC (permalink / raw)
  To: Stefano Stabellini
  Cc: Julien Grall, minyard, jeff.kubascik, Julien Grall, xen-devel,
	Stefano Stabellini

Hi Stefano!

On Fri, May 1, 2020 at 5:05 PM Stefano Stabellini
<sstabellini@kernel.org> wrote:
>
> Hi Roman,
>
>
> In regards to the attached stack trace, nothing rings a bell
> unfortunately. I don't know why quirk_usb_early_handoff causes a crash.
> It would be useful to add a few printk in quirk_usb_early_handoff to
> know where the crash is happening exactly.

That definitely seems to be a cascading error from our DMA issues.
Basically when I completely disable DMA (as I showed before) this
issue completely goes away.

> In regards to Dornerworks's third patch, it doesn't look like it is
> related to the quirk_usb_early_handoff crash. The third patch is
> probably not useful anymore because dev->archdata.dev_dma_ops is gone
> completely.

Yup. That seems to be correct. Applying your WARN_ON(dev->dma_ops != NULL);
patch didn't show anything on the console -- so at least that is not
an issue anymore.

I think the focus really should be on:
    https://github.com/dornerworks/xen-rpi4-builder/blob/master/patches/linux/0002-Disable-DMA-in-sdhci-driver.patch

But even this patch, I think, is a cascading error from something that is still
somehow broken about DMA handling in Xen. IOW, it may very well be the
case that the reason Dornerworks folks had to add:
    SDHCI_QUIRK_BROKEN_DMA | SDHCI_QUIRK_BROKEN_ADMA
is exactly the same reason we're now seeing DMA issues much earlier.

Do you think this is something that we could tackle? Like I mentioned,
having an upstream, 5.x kernel capable of being a Dom0 on RPi 4
would be really a huge deal to the Xen on ARM development community.

It seems that we're within reach of that -- I just wish I knew in
which direction
to take it.

Thanks,
Roman.

> However, just in case, something like the following would
> help recognize if the original bug still persists in newer kernels
> somehow:
>
>
> diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c
> index 6c45350e33aa..61af12d79add 100644
> --- a/arch/arm64/mm/dma-mapping.c
> +++ b/arch/arm64/mm/dma-mapping.c
> @@ -53,7 +53,9 @@ void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size,
>                 iommu_setup_dma_ops(dev, dma_base, size);
>
>  #ifdef CONFIG_XEN
> -       if (xen_initial_domain())
> +       if (xen_initial_domain()) {
> +               WARN_ON(dev->dma_ops != NULL);
>                 dev->dma_ops = &xen_swiotlb_dma_ops;
> +       }
>  #endif
>  }
>
>
> On Thu, 30 Apr 2020, Roman Shaposhnik wrote:
> > Hi!
> >
> > I'm trying to run Xen on Raspberry Pi 4 with 5.6.1 stock,
> > upstream kernel. The kernel itself works perfectly well
> > on the board. When I try booting it as Dom0 under Xen,
> > it goes into a stacktrace (attached).
> >
> > Looking at what nice folks over at Dornerworks have previously
> > done to make RPi kernels boot as Dom0 I've come across these
> > 3 patches:
> >     https://github.com/dornerworks/xen-rpi4-builder/tree/master/patches/linux
> >
> > The first patch seems irrelevant (unless I'm missing something
> > really basic here). The 2nd patch applied with no issue (but
> > I don't think it is related) but the 3d patch failed to apply on
> > account of 5.6.1 kernel no longer having:
> >     dev->archdata.dev_dma_ops
> > E.g.
> >     https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/arch/arm64/mm/dma-mapping.c?h=v5.6.1#n55
> >
> > I've tried to emulate the effect of the patch by simply introducing
> > a static variable that would signal that we already initialized
> > dev->dma_ops -- but that didn't help at all.
> >
> > I'm CCing Jeff Kubascik to see if the original authors of that Corey Minyard
> > to see if may be they have any suggestions on how this may be dealt
> > with.
> >
> > Any advice would be greatly appreciated!
> >
> > Thanks,
> > Roman.
> >


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-02  1:06   ` Roman Shaposhnik
@ 2020-05-02  2:16     ` Corey Minyard
  2020-05-02 11:46       ` Julien Grall
  0 siblings, 1 reply; 45+ messages in thread
From: Corey Minyard @ 2020-05-02  2:16 UTC (permalink / raw)
  To: Roman Shaposhnik
  Cc: Stefano Stabellini, Julien Grall, jeff.kubascik, Julien Grall,
	xen-devel, Stefano Stabellini

On Fri, May 01, 2020 at 06:06:11PM -0700, Roman Shaposhnik wrote:
> On Fri, May 1, 2020 at 4:42 AM Corey Minyard <minyard@acm.org> wrote:
> >
> > On Thu, Apr 30, 2020 at 07:20:05PM -0700, Roman Shaposhnik wrote:
> > > Hi!
> > >
> > > I'm trying to run Xen on Raspberry Pi 4 with 5.6.1 stock,
> > > upstream kernel. The kernel itself works perfectly well
> > > on the board. When I try booting it as Dom0 under Xen,
> > > it goes into a stacktrace (attached).
> >
> > Getting Xen working on the Pi4 requires a lot of moving parts, and they
> > all have to be right.
> 
> Tell me about it! It is a pretty frustrating journey to align
> everything just right.
> On the other hand -- it seems worth to enable RPi as an ARM development
> platform for Xen given how ubiquitous it is.
> 
> Hence me trying to combine pristine upstream kernel (5.6.1) with
> pristine upstream
> Xen to enable 100% upstream developer workflow on RPi.
> 
> > > Looking at what nice folks over at Dornerworks have previously
> > > done to make RPi kernels boot as Dom0 I've come across these
> > > 3 patches:
> > >     https://github.com/dornerworks/xen-rpi4-builder/tree/master/patches/linux
> > >
> > > The first patch seems irrelevant (unless I'm missing something
> > > really basic here).
> >
> > It might be irrelevant for your configuration, assuming that Xen gets
> > the right information from EFI.  I haven't tried EFI booting.
> 
> I'd doing a bit of belt-and-suspenders strategy really -- I'm actually
> using UEFI u-boot implementation that pre-populates device trees
> and then I'm also forcing an extra copy of it to be load explicitly
> via the GRUB devicetree command (GRUB runs as a UEFI payload).
> 
> I also have access to the semi-official TianoCore RPi4 port that seems
> to be working pretty well: https://github.com/pftf/RPi4/releases/tag/v1.5
> for booting all sort of UEFI payloads on RPi4.
> 
> > > The 2nd patch applied with no issue (but
> > > I don't think it is related) but the 3d patch failed to apply on
> > > account of 5.6.1 kernel no longer having:
> > >     dev->archdata.dev_dma_ops
> > > E.g.
> > >     https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/arch/arm64/mm/dma-mapping.c?h=v5.6.1#n55
> > >
> > > I've tried to emulate the effect of the patch by simply introducing
> > > a static variable that would signal that we already initialized
> > > dev->dma_ops -- but that didn't help at all.
> > >
> > > I'm CCing Jeff Kubascik to see if the original authors of that Corey Minyard
> > > to see if may be they have any suggestions on how this may be dealt
> > > with.
> > >
> > > Any advice would be greatly appreciated!
> >
> > What's your Pi4 config.txt file look like? The GIC is not being handled
> > correctly, and I'm guessing that configuration is wrong.  You can't use
> > the stock config.txt file with Xen, you have to modify the configuration a
> > bit.
> 
> Understood. I'm actually using a custom one:
>     https://github.com/lf-edge/eve/blob/master/pkg/u-boot/rpi/config.txt
> 
> I could swear that I had a GIC setting in it -- but apparently no -- so
> I added the following at the top of what you could see at the URL above:
> 
> total_mem=4096
> enable_gic=1
> 
> > I think just adding:
> >
> > enable_gic=1
> > total_mem=1024
> 
> Right -- but my board has 4G memory -- so I think what I did above should work.

Nope.  If you say 4096M of RAM, your issue is almost certainly DMA, but
it's not (just) the Linux code.  On the Raspberry Pi 4, several devices
cannot DMA to above 1024M of RAM, but Xen does not handle this.  The
1024M of RAM is a limitation you will have to live with until Xen has a
fix.

I know I saw a reference for this, but I can't find it now.  I saw
someone say it booted with 4G, but I was unable to get it to boot with
without setting total_mem=1024.

-corey

> 
> > might get it working, or at least solve one problem.  It's required either
> > way.  That might get rid of the GIC errors at the beginning.  I see a
> > few of those, but not that many.
> >
> > My kernel command line is:
> >
> > coherent_pool=1M 8250.nr_uarts=1 cma=64M cma=256M  smsc95xx.macaddr=DC:A6:32:4F:3A:CD vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000  console=hvc0 clk_ignore_unused root=/dev/mmcblk0p2 rootwait
> >
> > A lot of that configuration gets pulled from the initialization done by
> > the GPU at startup which it put into the device tree.  I'm not sure what a
> > lot of it means.  Some of it is added by Xen, too.
> 
> Just to be on the safe side -- I'm now using Device Tree from Dornerworks build.
> The file is attached.
> 
> > I can verify the DMA patch is important.  I'm not sure how to apply it
> > to a 5.6 kernel, though.
> 
> OK, after chatting with Stefano it definitely seems that there's some kind of
> an issue with DMA. It just seems different to what the original issue with
> 4.19.x kernel used to be.
> 
> Here's the clue. When I disable Xen DMA operations altogether with
> the following. I get the Linux kernel that is booting all the way to trying
> mounting a root filesystem (which sadly can't be found since eMMC
> requires DMA FWIU). I hope this will provide enough of a clue to
> figure out what may be wrong with the 5.x kernel. I'm attaching the
> boo log with the following patch applied:
> 
> diff --git a/arch/arm/xen/mm.c b/arch/arm/xen/mm.c
> index d40e9e5fc52b..c25ead822de0 100644
> --- a/arch/arm/xen/mm.c
> +++ b/arch/arm/xen/mm.c
> @@ -137,8 +137,7 @@ void xen_destroy_contiguous_region(phys_addr_t
> pstart, unsigned int order)
>  static int __init xen_mm_init(void)
>  {
>         struct gnttab_cache_flush cflush;
> -       if (!xen_initial_domain())
> -               return 0;
> +       return 0;
>         xen_swiotlb_init(1, false);
> 
>         cflush.op = 0;
> 
> Thanks,
> Roman.

> Using modules provided by bootloader in FDT
> Xen 4.14-unstable (c/s Mon Apr 20 14:36:53 2020 +0100 git:8065e1b416-dirty) EFI loader
> Warning: Could not query variable store: 0x8000000000000003
> - UART enabled -
> - Boot CPU booting -
> - Current EL 00000008 -
> - Initialize CPU -
> - Turning on paging -
> - Ready -
> (XEN) Checking for initrd in /chosen
> (XEN) RAM: 0000000000001000 - 0000000007ef1fff
> (XEN) RAM: 0000000007ef2000 - 0000000007f0dfff
> (XEN) RAM: 0000000007f0e000 - 000000002bc45fff
> (XEN) RAM: 000000002bc46000 - 000000002bc50fff
> (XEN) RAM: 000000002bc51000 - 000000002bd93fff
> (XEN) RAM: 000000002bd94000 - 000000002d780fff
> (XEN) RAM: 000000002d781000 - 000000003c9f6fff
> (XEN) RAM: 000000003c9f7000 - 000000003c9f8fff
> (XEN) RAM: 000000003c9fb000 - 000000003c9fdfff
> (XEN) RAM: 000000003c9fe000 - 000000003cb08fff
> (XEN) RAM: 000000003cb10000 - 000000003cb10fff
> (XEN) RAM: 000000003cb12000 - 000000003cb13fff
> (XEN) RAM: 000000003cb1b000 - 000000003cb1cfff
> (XEN) RAM: 000000003cb1e000 - 000000003df3ffff
> (XEN) RAM: 000000003df50000 - 000000003dffffff
> (XEN) RAM: 0000000040000000 - 00000000fbffffff
> (XEN)
> (XEN) MODULE[0]: 000000002bc51000 - 000000002bd930c8 Xen
> (XEN) MODULE[1]: 000000002bc47000 - 000000002bc51000 Device Tree
> (XEN) MODULE[2]: 000000002bd9d000 - 000000002d67c200 Kernel
> (XEN)
> (XEN) CMDLINE[000000002bd9d000]:chosen console=hvc0 earlyprintk=xen nomodeset
> (XEN)
> (XEN) Command line: dom0_mem=1024M,max:1024M dom0_max_vcpus=1
> (XEN) parameter "dom0_mem" has invalid value "1024M,max:1024M", rc=-22!
> (XEN) Domain heap initialised
> (XEN) Booting using Device Tree
> (XEN) Platform: Raspberry Pi 4
> (XEN) No dtuart path configured
> (XEN) Bad console= option 'dtuart'
>  Xen 4.14-unstable
> (XEN) Xen version 4.14-unstable (@) (aarch64-linux-gnu-gcc (Ubuntu 9.3.0-10ubuntu2) 9.3.0) debug=y  Thu Apr 30 17:43:33 PDT 2020
> (XEN) Latest ChangeSet: Mon Apr 20 14:36:53 2020 +0100 git:8065e1b416-dirty
> (XEN) build-id: 988ba8f5257c494645df6d5c4c2d5fd9f39e2539
> (XEN) Processor: 410fd083: "ARM Limited", variant: 0x0, part 0xd08, rev 0x3
> (XEN) 64-bit Execution:
> (XEN)   Processor Features: 0000000000002222 0000000000000000
> (XEN)     Exception Levels: EL3:64+32 EL2:64+32 EL1:64+32 EL0:64+32
> (XEN)     Extensions: FloatingPoint AdvancedSIMD
> (XEN)   Debug Features: 0000000010305106 0000000000000000
> (XEN)   Auxiliary Features: 0000000000000000 0000000000000000
> (XEN)   Memory Model Features: 0000000000001124 0000000000000000
> (XEN)   ISA Features:  0000000000010000 0000000000000000
> (XEN) 32-bit Execution:
> (XEN)   Processor Features: 00000131:00011011
> (XEN)     Instruction Sets: AArch32 A32 Thumb Thumb-2 Jazelle
> (XEN)     Extensions: GenericTimer Security
> (XEN)   Debug Features: 03010066
> (XEN)   Auxiliary Features: 00000000
> (XEN)   Memory Model Features: 10201105 40000000 01260000 02102211
> (XEN)  ISA Features: 02101110 13112111 21232042 01112131 00011142 00010001
> (XEN) SMP: Allowing 4 CPUs
> (XEN) enabled workaround for: ARM erratum 1319537
> (XEN) Generic Timer IRQ: phys=30 hyp=26 virt=27 Freq: 54000 KHz
> (XEN) GICv2 initialization:
> (XEN)         gic_dist_addr=00000000ff841000
> (XEN)         gic_cpu_addr=00000000ff842000
> (XEN)         gic_hyp_addr=00000000ff844000
> (XEN)         gic_vcpu_addr=00000000ff846000
> (XEN)         gic_maintenance_irq=25
> (XEN) GICv2: 256 lines, 4 cpus, secure (IID 0200143b).
> (XEN) XSM Framework v1.0.0 initialized
> (XEN) Initialising XSM SILO mode
> (XEN) Using scheduler: SMP Credit Scheduler rev2 (credit2)
> (XEN) Initializing Credit2 scheduler
> (XEN)  load_precision_shift: 18
> (XEN)  load_window_shift: 30
> (XEN)  underload_balance_tolerance: 0
> (XEN)  overload_balance_tolerance: -3
> (XEN)  runqueues arrangement: socket
> (XEN)  cap enforcement granularity: 10ms
> (XEN) load tracking window length 1073741824 ns
> (XEN) Allocated console ring of 32 KiB.
> (XEN) CPU0: Guest atomics will try 5 times before pausing the domain
> (XEN) Bringing up CPU1
> - CPU 00000001 booting -
> - Current EL 00000008 -
> - Initialize CPU -
> - Turning on paging -
> - Ready -
> (XEN) CPU1: Guest atomics will try 5 times before pausing the domain
> (XEN) CPU 1 booted.
> (XEN) Bringing up CPU2
> - CPU 00000002 booting -
> - Current EL 00000008 -
> - Initialize CPU -
> - Turning on paging -
> - Ready -
> (XEN) CPU2: Guest atomics will try 5 times before pausing the domain
> (XEN) CPU 2 booted.
> (XEN) Bringing up CPU3
> - CPU 00000003 booting -
> - Current EL 00000008 -
> - Initialize CPU -
> - Turning on paging -
> - Ready -
> (XEN) CPU3: Guest atomics will try 5 times before pausing the domain
> (XEN) CPU 3 booted.
> (XEN) Brought up 4 CPUs
> (XEN) I/O virtualisation disabled
> (XEN) P2M: 44-bit IPA with 44-bit PA and 8-bit VMID
> (XEN) P2M: 4 levels with order-0 root, VTCR 0x80043594
> (XEN) Adding cpu 0 to runqueue 0
> (XEN)  First cpu on runqueue, activating
> (XEN) Adding cpu 1 to runqueue 0
> (XEN) Adding cpu 2 to runqueue 0
> (XEN) Adding cpu 3 to runqueue 0
> (XEN) alternatives: Patching with alt table 00000000002d4208 -> 00000000002d491c
> (XEN) *** LOADING DOMAIN 0 ***
> (XEN) Loading d0 kernel from boot module @ 000000002bd9d000
> (XEN) Allocating 1:1 mappings totalling 1024MB for dom0:
> (XEN) BANK[0] 0x00000040000000-0x00000080000000 (1024MB)
> (XEN) Grant table range: 0x0000002bc51000-0x0000002bc91000
> (XEN) Allocating PPI 16 for event channel interrupt
> (XEN) Loading zImage from 000000002bd9d000 to 0000000040080000-000000004195f200
> (XEN) Loading d0 DTB to 0x0000000048000000-0x0000000048006e0a
> (XEN) Initial low memory virq threshold set at 0x4000 pages.
> (XEN) Scrubbing Free RAM in background
> (XEN) Std. Loglevel: All
> (XEN) Guest Loglevel: All
> (XEN) ***************************************************
> (XEN) No support for ARM_SMCCC_ARCH_WORKAROUND_1.
> (XEN) Please update your firmware.
> (XEN) ***************************************************
> (XEN) No support for ARM_SMCCC_ARCH_WORKAROUND_1.
> (XEN) Please update your firmware.
> (XEN) ***************************************************
> (XEN) No support for ARM_SMCCC_ARCH_WORKAROUND_1.
> (XEN) Please update your firmware.
> (XEN) ***************************************************
> (XEN) 3... 2... 1...
> (XEN) *** Serial input to DOM0 (type 'CTRL-a' three times to switch input)
> (XEN) Freed 348kB init memory.
> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER4
> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER8
> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER12
> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER16
> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER20
> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER24
> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER28
> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
> [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd083]
> [    0.000000] Linux version 5.6.1-default (root@13024eb1d2cf) (gcc version 8.3.0 (Alpine 8.3.0)) #6 SMP Sat May 2 00:10:36 UTC 2020
> [    0.000000] Machine model: Raspberry Pi 4 Model B
> [    0.000000] Xen 4.14 support found
> [    0.000000] efi: Getting EFI parameters from FDT:
> [    0.000000] efi: UEFI not found.
> [    0.000000] NUMA: No NUMA configuration found
> [    0.000000] NUMA: Faking a node at [mem 0x0000000040000000-0x000000007fffffff]
> [    0.000000] NUMA: NODE_DATA [mem 0x7fdd42c0-0x7fdd7fff]
> [    0.000000] Zone ranges:
> [    0.000000]   DMA      [mem 0x0000000040000000-0x000000007fffffff]
> [    0.000000]   DMA32    empty
> [    0.000000]   Normal   empty
> [    0.000000] Movable zone start for each node
> [    0.000000] Early memory node ranges
> [    0.000000]   node   0: [mem 0x0000000040000000-0x000000007fffffff]
> [    0.000000] Initmem setup node 0 [mem 0x0000000040000000-0x000000007fffffff]
> [    0.000000] psci: probing for conduit method from DT.
> [    0.000000] psci: PSCIv1.1 detected in firmware.
> [    0.000000] psci: Using standard PSCI v0.2 function IDs
> [    0.000000] psci: Trusted OS migration not required
> [    0.000000] psci: SMC Calling Convention v1.1
> [    0.000000] percpu: Embedded 23 pages/cpu s54232 r8192 d31784 u94208
> [    0.000000] Detected PIPT I-cache on CPU0
> [    0.000000] CPU features: detected: EL2 vector hardening
> [    0.000000] CPU features: detected: Speculative Store Bypass Disable
> [    0.000000] CPU features: detected: ARM erratum 1319367
> [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 258048
> [    0.000000] Policy zone: DMA
> [    0.000000] Kernel command line: console=hvc0 earlyprintk=xen nomodeset
> [    0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
> [    0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
> [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
> [    0.000000] Memory: 1002060K/1048576K available (12732K kernel code, 1852K rwdata, 6184K rodata, 4672K init, 758K bss, 46516K reserved, 0K cma-reserved)
> [    0.000000] random: get_random_u64 called from __kmem_cache_create+0x40/0x578 with crng_init=0
> [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
> [    0.000000] rcu: Hierarchical RCU implementation.
> [    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=480 to nr_cpu_ids=1.
> [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
> [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
> [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
> [    0.000000] arch_timer: cp15 timer(s) running at 54.00MHz (virt).
> [    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0xc743ce346, max_idle_ns: 440795203123 ns
> [    0.000005] sched_clock: 56 bits at 54MHz, resolution 18ns, wraps every 4398046511102ns
> [    0.000273] Console: colour dummy device 80x25
> [    0.270836] printk: console [hvc0] enabled
> [    0.275124] Calibrating delay loop (skipped), value calculated using timer frequency.. 108.00 BogoMIPS (lpj=540000)
> [    0.285678] pid_max: default: 32768 minimum: 301
> [    0.290511] LSM: Security Framework initializing
> [    0.295221] Mount-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
> [    0.302730] Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
> [    0.313228] xen:grant_table: Grant tables using version 1 layout
> [    0.318714] Grant table initialized
> [    0.322312] xen:events: Using FIFO-based ABI
> [    0.326760] Xen: initializing cpu0
> [    0.330353] rcu: Hierarchical SRCU implementation.
> [    0.338817] EFI services will not be available.
> [    0.342959] smp: Bringing up secondary CPUs ...
> [    0.347479] smp: Brought up 1 node, 1 CPU
> [    0.351575] SMP: Total of 1 processors activated.
> [    0.356408] CPU features: detected: 32-bit EL0 Support
> [    0.361689] CPU features: detected: CRC32 instructions
> [    0.396295] CPU: All CPU(s) started at EL1
> [    0.399867] alternatives: patching kernel code
> [    0.405872] devtmpfs: initialized
> [    0.413580] Registered cp15_barrier emulation handler
> [    0.418164] Registered setend emulation handler
> [    0.422741] KASLR disabled due to lack of seed
> [    0.427659] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
> [    0.437360] futex hash table entries: 256 (order: 2, 16384 bytes, linear)
> [    0.444449] pinctrl core: initialized pinctrl subsystem
> [    0.450684] thermal_sys: Registered thermal governor 'fair_share'
> [    0.450687] thermal_sys: Registered thermal governor 'bang_bang'
> [    0.456235] thermal_sys: Registered thermal governor 'step_wise'
> [    0.462423] thermal_sys: Registered thermal governor 'user_space'
> [    0.468654] DMI not present or invalid.
> [    0.479281] NET: Registered protocol family 16
> [    0.483559] DMA: preallocated 256 KiB pool for atomic allocations
> [    0.489539] audit: initializing netlink subsys (disabled)
> [    0.496103] audit: type=2000 audit(0.370:1): state=initialized audit_enabled=0 res=1
> [    0.503951] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
> [    0.510341] ASID allocator initialised with 65536 entries
> [    0.516925] Serial: AMBA PL011 UART driver
> [    0.539528] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
> [    0.545702] HugeTLB registered 32.0 MiB page size, pre-allocated 0 pages
> [    0.552578] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
> [    0.559398] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages
> [    0.570438] cryptd: max_cpu_qlen set to 1000
> [    0.580347] ACPI: Interpreter disabled.
> [    0.584023] xen:balloon: Initialising balloon driver
> [    0.590395] iommu: Default domain type: Translated
> [    0.595026] vgaarb: loaded
> [    0.597933] SCSI subsystem initialized
> [    0.601940] usbcore: registered new interface driver usbfs
> [    0.607076] usbcore: registered new interface driver hub
> [    0.612627] usbcore: registered new device driver usb
> [    0.617790] usb_phy_generic phy: phy supply vcc not found, using dummy regulator
> [    0.625532] pps_core: LinuxPPS API ver. 1 registered
> [    0.630281] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
> [    0.639665] PTP clock support registered
> [    0.643762] EDAC MC: Ver: 3.0.0
> [    0.648106] NetLabel: Initializing
> [    0.650959] NetLabel:  domain hash size = 128
> [    0.655412] NetLabel:  protocols = UNLABELED CIPSOv4 CALIPSO
> [    0.661291] NetLabel:  unlabeled traffic allowed by default
> [    0.667445] clocksource: Switched to clocksource arch_sys_counter
> [    0.673415] VFS: Disk quotas dquot_6.6.0
> [    0.677266] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
> [    0.684429] pnp: PnP ACPI: disabled
> [    0.694684] NET: Registered protocol family 2
> [    0.699014] tcp_listen_portaddr_hash hash table entries: 512 (order: 1, 8192 bytes, linear)
> [    0.707026] TCP established hash table entries: 8192 (order: 4, 65536 bytes, linear)
> [    0.714970] TCP bind hash table entries: 8192 (order: 5, 131072 bytes, linear)
> [    0.722397] TCP: Hash tables configured (established 8192 bind 8192)
> [    0.728962] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
> [    0.735547] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
> [    0.742928] NET: Registered protocol family 1
> [    0.747235] PCI: CLS 0 bytes, default 64
> [    0.751794] kvm [1]: HYP mode not available
> [    0.762848] Initialise system trusted keyrings
> [    0.766865] workingset: timestamp_bits=40 max_order=18 bucket_order=0
> [    0.779692] zbud: loaded
> [    0.783113] squashfs: version 4.0 (2009/01/31) Phillip Lougher
> [    0.788995] 9p: Installing v9fs 9p2000 file system support
> [    0.818061] Key type asymmetric registered
> [    0.821593] Asymmetric key parser 'x509' registered
> [    0.826628] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
> [    0.834307] io scheduler mq-deadline registered
> [    0.838829] io scheduler kyber registered
> [    0.843090] io scheduler bfq registered
> [    0.851833] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
> [    0.859316] brcm-pcie fd500000.pcie: host bridge /scb/pcie@7d500000 ranges:
> [    0.865766] brcm-pcie fd500000.pcie:      MEM 0x0600000000..0x0603ffffff -> 0x00f8000000
> [    0.874065] brcm-pcie fd500000.pcie:   IB MEM 0x0000000000..0x00ffffffff -> 0x0000000000
> [    0.937473] brcm-pcie fd500000.pcie: link up, 5 GT/s x1 (!SSC)
> [    0.942977] brcm-pcie fd500000.pcie: PCI host bridge to bus 0000:00
> [    0.949188] pci_bus 0000:00: root bus resource [bus 00-01]
> [    0.954793] pci_bus 0000:00: root bus resource [mem 0x600000000-0x603ffffff] (bus address [0xf8000000-0xfbffffff])
> [    0.965361] pci 0000:00:00.0: [14e4:2711] type 01 class 0x060400
> [    0.971562] pci 0000:00:00.0: PME# supported from D0 D3hot
> (XEN) physdev.c:16:d0v0 PHYSDEVOP cmd=25: not implemented
> (XEN) physdev.c:16:d0v0 PHYSDEVOP cmd=15: not implemented
> [    0.987468] pci 0000:00:00.0: Failed to add - passthrough or MSI/MSI-X might fail!
> [    0.997325] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
> [    1.004931] pci 0000:01:00.0: [1106:3483] type 00 class 0x0c0330
> [    1.010995] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00000fff 64bit]
> [    1.018002] pci 0000:01:00.0: PME# supported from D0 D3cold
> (XEN) physdev.c:16:d0v0 PHYSDEVOP cmd=15: not implemented
> [    1.028797] pci 0000:01:00.0: Failed to add - passthrough or MSI/MSI-X might fail!
> [    1.038631] pci_bus 0000:01: busn_res: [bus 01] end is updated to 01
> [    1.044464] pci 0000:00:00.0: BAR 14: assigned [mem 0x600000000-0x6000fffff]
> [    1.051664] pci 0000:01:00.0: BAR 0: assigned [mem 0x600000000-0x600000fff 64bit]
> [    1.059305] pci 0000:00:00.0: PCI bridge to [bus 01]
> [    1.064377] pci 0000:00:00.0:   bridge window [mem 0x600000000-0x6000fffff]
> [    1.071642] pcieport 0000:00:00.0: enabling device (0000 -> 0002)
> [    1.077882] pcieport 0000:00:00.0: PME: Signaling with IRQ 32
> [    1.083871] pcieport 0000:00:00.0: AER: enabled with IRQ 32
> [    1.089489] pci 0000:01:00.0: enabling device (0000 -> 0002)
> [    1.103732] ------------[ cut here ]------------
> [    1.107828] bcm2835-dma fe007000.dma: DMA addr 0x0000000101963000+4096 overflow (mask ffffffff, bus limit fbffffff).
> [    1.118549] WARNING: CPU: 0 PID: 1 at kernel/dma/direct.c:364 dma_direct_map_page+0x16c/0x180
> [    1.127194] Modules linked in:
> [    1.130360] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.6.1-default #6
> [    1.137028] Hardware name: Raspberry Pi 4 Model B (DT)
> [    1.142309] pstate: 60000005 (nZCv daif -PAN -UAO)
> [    1.147217] pc : dma_direct_map_page+0x16c/0x180
> [    1.151967] lr : dma_direct_map_page+0x16c/0x180
> [    1.156695] sp : ffff800010013ad0
> [    1.160121] x29: ffff800010013ad0 x28: 0000000000000000
> [    1.165564] x27: ffff80001130044c x26: ffff8000113d3960
> [    1.171007] x25: ffff8000112f40a8 x24: 0000000000000000
> [    1.176451] x23: ffff80001179b548 x22: ffff00003f9e6c10
> [    1.181904] x21: ffff00003f9e6c00 x20: ffff00003f9e6c10
> [    1.187339] x19: ffff80001179b548 x18: 0000000000000010
> [    1.192792] x17: 0000000000000001 x16: 00000000deadbeef
> [    1.198226] x15: ffffffffffffffff x14: 20776f6c66726576
> [    1.203671] x13: 6f20363930342b30 x12: 3030333639313031
> [    1.209114] x11: 3030303030303078 x10: 3020726464612041
> [    1.214558] x9 : 4d44203a616d642e x8 : ffff80001071e900
> [    1.220002] x7 : 00000000000000a5 x6 : ffff80001197a6f7
> [    1.225446] x5 : ffff800010e19d18 x4 : 0000000000000000
> [    1.230889] x3 : 0000000000000000 x2 : 00000000ffffffff
> [    1.236333] x1 : 745b439e6d834000 x0 : 0000000000000000
> [    1.241778] Call trace:
> [    1.244330]  dma_direct_map_page+0x16c/0x180
> [    1.248722]  bcm2835_dma_probe+0x4bc/0x558
> [    1.252942]  platform_drv_probe+0x50/0xa0
> [    1.257061]  really_probe+0xd8/0x438
> [    1.260748]  driver_probe_device+0xdc/0x130
> [    1.265051]  device_driver_attach+0x6c/0x78
> [    1.269352]  __driver_attach+0x9c/0x168
> [    1.273303]  bus_for_each_dev+0x70/0xc0
> [    1.277254]  driver_attach+0x20/0x28
> [    1.280942]  bus_add_driver+0x190/0x220
> [    1.284894]  driver_register+0x60/0x110
> [    1.288843]  __platform_driver_register+0x44/0x50
> [    1.293678]  bcm2835_dma_driver_init+0x18/0x20
> [    1.298240]  do_one_initcall+0x74/0x1b0
> [    1.302200]  kernel_init_freeable+0x214/0x2b0
> [    1.306669]  kernel_init+0x10/0x100
> [    1.310267]  ret_from_fork+0x10/0x18
> [    1.313960] ---[ end trace 2f723f6ea1e0757e ]---
> [    1.318726] bcm2835-dma fe007000.dma: Failed to map zero page
> [    1.324687] bcm2835-dma: probe of fe007000.dma failed with error -12
> [    1.334169] xen:xen_evtchn: Event-channel device installed
> [    1.339414] Initialising Xen pvcalls frontend driver
> [    1.345880] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
> [    1.359258] bcm2835-aux-uart fe215040.serial: there is not valid maps for state default
> [    1.366842] OF: /soc/serial@7e215040: could not find phandle
> [    1.372605] bcm2835-aux-uart fe215040.serial: could not get clk: -2
> [    1.378998] bcm2835-aux-uart: probe of fe215040.serial failed with error -2
> [    1.386564] Serial: AMBA driver
> [    1.389877] msm_serial: driver initialized
> [    1.394719] cacheinfo: Unable to detect cache hierarchy for CPU 0
> [    1.409630] brd: module loaded
> [    1.419607] loop: module loaded
> [    1.438031] Invalid max_queues (4), will use default max: 1.
> [    1.454031] drbd: initialized. Version: 8.4.11 (api:1/proto:86-101)
> [    1.459804] drbd: built-in
> [    1.462592] drbd: registered as block device major 147
> [    1.468739] bcm2835-power bcm2835-power: Broadcom BCM2835 power domains driver
> [    1.476559] wireguard: allowedips self-tests: pass
> [    1.483341] wireguard: nonce counter self-tests: pass
> [    1.908628] wireguard: ratelimiter self-tests: pass
> [    1.913030] wireguard: WireGuard 1.0.0 loaded. See www.wireguard.com for information.
> [    1.920984] wireguard: Copyright (C) 2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
> [    1.932354] libphy: Fixed MDIO Bus: probed
> [    1.936408] bcmgenet fd580000.genet: using random Ethernet MAC
> [    1.941902] bcmgenet fd580000.genet: failed to get enet clock
> [    1.947758] bcmgenet fd580000.genet: GENET 5.0 EPHY: 0x0000
> [    1.953455] bcmgenet fd580000.genet: failed to get enet-wol clock
> [    1.959700] bcmgenet fd580000.genet: failed to get enet-eee clock
> [    1.977496] libphy: bcmgenet MII bus: probed
> [    2.057539] unimac-mdio unimac-mdio.-19: Broadcom UniMAC MDIO bus
> [    2.063755] xen_netfront: Initialising Xen virtual ethernet driver
> [    2.069721] xhci_hcd 0000:01:00.0: xHCI Host Controller
> [    2.074800] xhci_hcd 0000:01:00.0: new USB bus registered, assigned bus number 1
> [    2.082779] xhci_hcd 0000:01:00.0: hcc params 0x002841eb hci version 0x100 quirks 0x0000000000000090
> [    2.092132] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.06
> [    2.100076] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
> [    2.107449] usb usb1: Product: xHCI Host Controller
> [    2.112437] usb usb1: Manufacturer: Linux 5.6.1-default xhci-hcd
> [    2.118595] usb usb1: SerialNumber: 0000:01:00.0
> [    2.123766] hub 1-0:1.0: USB hub found
> [    2.127217] hub 1-0:1.0: 1 port detected
> [    2.131662] xhci_hcd 0000:01:00.0: xHCI Host Controller
> [    2.136591] xhci_hcd 0000:01:00.0: new USB bus registered, assigned bus number 2
> [    2.144182] xhci_hcd 0000:01:00.0: Host supports USB 3.0 SuperSpeed
> [    2.150673] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
> [    2.158916] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 5.06
> [    2.167228] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
> [    2.174618] usb usb2: Product: xHCI Host Controller
> [    2.179618] usb usb2: Manufacturer: Linux 5.6.1-default xhci-hcd
> [    2.185753] usb usb2: SerialNumber: 0000:01:00.0
> [    2.190885] hub 2-0:1.0: USB hub found
> [    2.194405] hub 2-0:1.0: 4 ports detected
> [    2.199145] usbcore: registered new interface driver usb-storage
> [    2.204877] mousedev: PS/2 mouse device common for all mice
> [    2.212659] bcm2835-wdt bcm2835-wdt: Broadcom BCM2835 watchdog timer
> [    2.219119] xen_wdt xen_wdt: initialized (timeout=60s, nowayout=0)
> [    2.225473] sdhci: Secure Digital Host Controller Interface driver
> [    2.231146] sdhci: Copyright(c) Pierre Ossman
> [    2.235825] sdhci-pltfm: SDHCI platform and OF driver helper
> [    2.273506] mmc0: SDHCI controller on fe300000.mmcnr [fe300000.mmcnr] using PIO
> [    2.281417] ledtrig-cpu: registered to indicate activity on CPUs
> [    2.287786] hid: raw HID events driver (C) Jiri Kosina
> [    2.292597] usbcore: registered new interface driver usbhid
> [    2.298095] usbhid: USB HID core driver
> [    2.302529] bcm2835-mbox fe00b880.mailbox: mailbox enabled
> [    2.311675] xt_time: kernel timezone is -0000
> [    2.315576] IPVS: Registered protocols ()
> [    2.319735] IPVS: Connection hash table configured (size=4096, memory=64Kbytes)
> [    2.327337] IPVS: ipvs loaded.
> [    2.330487] ipip: IPv4 and MPLS over IPv4 tunneling driver
> [    2.336456] gre: GRE over IPv4 demultiplexor driver
> [    2.341162] ipt_CLUSTERIP: ClusterIP Version 0.8 loaded successfully
> [    2.347888] Initializing XFRM netlink socket
> [    2.352567] NET: Registered protocol family 10
> [    2.357853] Segment Routing with IPv6
> [    2.362140] NET: Registered protocol family 17
> [    2.366065] mmc0: queuing unknown CIS tuple 0x80 (2 bytes)
> [    2.371775] NET: Registered protocol family 15
> [    2.376292] Bridge firewalling registered
> [    2.380510] 8021q: 802.1Q VLAN Support v1.8
> [    2.384881] 9pnet: Installing 9P2000 support
> [    2.389081] Initialising Xen transport for 9pfs
> [    2.393833] Key type dns_resolver registered
> [    2.398505] registered taskstats version 1
> [    2.402322] Loading compiled-in X.509 certificates
> [    2.407212] mmc0: queuing unknown CIS tuple 0x80 (3 bytes)
> [    2.416914] Loaded X.509 cert 'Build time autogenerated kernel key: ca85232d2e7ebc2af2feaa4812e2d651700446d8'
> [    2.426514] zswap: loaded using pool lzo/zbud
> [    2.431307] Key type ._fscrypt registered
> [    2.434991] mmc0: queuing unknown CIS tuple 0x80 (3 bytes)
> [    2.440690] Key type .fscrypt registered
> [    2.444619] Key type fscrypt-provisioning registered
> [    2.452476] mmc0: queuing unknown CIS tuple 0x80 (7 bytes)
> [    2.459548] uart-pl011 fe201000.serial: there is not valid maps for state default
> [    2.466774] fe201000.serial: ttyAMA1 at MMIO 0xfe201000 (irq = 18, base_baud = 0) is a PL011 rev2
> [    2.476384] mmc0: queuing unknown CIS tuple 0x80 (3 bytes)
> [    2.485092] raspberrypi-firmware soc:firmware: Request 0x00000001 returned status 0x00000000
> [    2.493157] raspberrypi-firmware soc:firmware: Request 0x00030046 returned status 0x00000000
> [    2.501734] usb 1-1: new high-speed USB device number 2 using xhci_hcd
> [    2.508813] raspberrypi-firmware soc:firmware: Request 0x00030007 returned status 0x00000000
> [    2.516938] raspberrypi-clk raspberrypi-clk: Failed to get pllb min freq: -22
> [    2.524205] raspberrypi-clk raspberrypi-clk: Failed to initialize pllb, -22
> [    2.531389] raspberrypi-clk: probe of raspberrypi-clk failed with error -22
> [    2.540422] raspberrypi-firmware soc:firmware: Request 0x00030043 returned status 0x00000000
> [    2.548407] raspberrypi-exp-gpio soc:firmware:gpio: Failed to get GPIO 0 config (-22 80)
> [    2.556682] raspberrypi-firmware soc:firmware: Request 0x00030043 returned status 0x00000000
> [    2.565255] raspberrypi-exp-gpio soc:firmware:gpio: Failed to get GPIO 1 config (-22 81)
> [    2.573574] raspberrypi-firmware soc:firmware: Request 0x00030043 returned status 0x00000000
> [    2.582132] raspberrypi-exp-gpio soc:firmware:gpio: Failed to get GPIO 2 config (-22 82)
> [    2.590442] raspberrypi-firmware soc:firmware: Request 0x00030043 returned status 0x00000000
> [    2.598984] raspberrypi-exp-gpio soc:firmware:gpio: Failed to get GPIO 3 config (-22 83)
> [    2.607290] raspberrypi-firmware soc:firmware: Request 0x00030043 returned status 0x00000000
> [    2.615847] raspberrypi-exp-gpio soc:firmware:gpio: Failed to get GPIO 4 config (-22 84)
> [    2.624141] raspberrypi-firmware soc:firmware: Request 0x00030043 returned status 0x00000000
> [    2.632700] raspberrypi-exp-gpio soc:firmware:gpio: Failed to get GPIO 5 config (-22 85)
> [    2.641020] raspberrypi-firmware soc:firmware: Request 0x00030043 returned status 0x00000000
> [    2.649559] raspberrypi-exp-gpio soc:firmware:gpio: Failed to get GPIO 6 config (-22 86)
> [    2.657868] raspberrypi-firmware soc:firmware: Request 0x00030043 returned status 0x00000000
> [    2.666409] raspberrypi-exp-gpio soc:firmware:gpio: Failed to get GPIO 7 config (-22 87)
> [    2.675053] usb 1-1: New USB device found, idVendor=2109, idProduct=3431, bcdDevice= 4.20
> [    2.683004] usb 1-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
> [    2.690253] usb 1-1: Product: USB2.0 Hub
> [    2.694944] raspberrypi-firmware soc:firmware: Request 0x00030030 returned status 0x00000000
> [    2.704156] raspberrypi-firmware soc:firmware: Request 0x00030043 returned status 0x00000000
> [    2.712138] raspberrypi-exp-gpio soc:firmware:gpio: Failed to get GPIO 6 config (-22 86)
> [    2.720869] raspberrypi-firmware soc:firmware: Request 0x00030043 returned status 0x00000000
> [    2.729006] raspberrypi-exp-gpio soc:firmware:gpio: Failed to get GPIO 6 config (-22 86)
> [    2.737296] reg-fixed-voltage: probe of sd_vcc_reg failed with error -22
> [    2.745091] hub 1-1:1.0: USB hub found
> [    2.748447] raspberrypi-firmware soc:firmware: Request 0x00030043 returned status 0x00000000
> [    2.756917] raspberrypi-exp-gpio soc:firmware:gpio: Failed to get GPIO 4 config (-22 84)
> [    2.765256] raspberrypi-firmware soc:firmware: Request 0x00030043 returned status 0x00000000
> [    2.773801] raspberrypi-exp-gpio soc:firmware:gpio: Failed to get GPIO 4 config (-22 84)
> [    2.782067] hub 1-1:1.0: 4 ports detected
> [    2.786222] gpio-regulator: probe of sd_io_1v8_reg failed with error -22
> [    2.795347] hctosys: unable to open rtc device (rtc0)
> [    2.806267] VFS: Cannot open root device "(null)" or unknown-block(0,0): error -6
> [    2.813313] Please append a correct "root=" boot option; here are the available partitions:
> [    2.821773] 0100          131072 ram0
> [    2.821776]  (driver?)
> [    2.828101] 0101          131072 ram1
> [    2.828103]  (driver?)
> [    2.834393] 0102          131072 ram2
> [    2.834395]  (driver?)
> [    2.840716] 0103          131072 ram3
> [    2.840718]  (driver?)
> [    2.847037] 0104          131072 ram4
> [    2.847039]  (driver?)
> [    2.853359] 0105          131072 ram5
> [    2.853361]  (driver?)
> [    2.859693] 0106          131072 ram6
> [    2.859695]  (driver?)
> [    2.866002] 0107          131072 ram7
> [    2.866003]  (driver?)
> [    2.872325] 0108          131072 ram8
> [    2.872327]  (driver?)
> [    2.878669] 0109          131072 ram9
> [    2.878671]  (driver?)
> [    2.884968] 010a          131072 ram10
> [    2.884969]  (driver?)
> [    2.891378] 010b          131072 ram11
> [    2.891380]  (driver?)
> [    2.897813] 010c          131072 ram12
> [    2.897815]  (driver?)
> [    2.904197] 010d          131072 ram13
> [    2.904198]  (driver?)
> [    2.910607] 010e          131072 ram14
> [    2.910609]  (driver?)
> [    2.917016] 010f          131072 ram15
> [    2.917017]  (driver?)
> [    2.923453] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
> [    2.931858] CPU: 0 PID: 1 Comm: swapper/0 Tainted: G        W         5.6.1-default #6
> [    2.939931] Hardware name: Raspberry Pi 4 Model B (DT)
> [    2.945199] Call trace:
> [    2.947753]  dump_backtrace+0x0/0x1d0
> [    2.951524]  show_stack+0x14/0x20
> [    2.954950]  dump_stack+0xbc/0x100
> [    2.958472]  panic+0x150/0x324
> [    2.961622]  mount_block_root+0x28c/0x32c
> [    2.965746]  mount_root+0x7c/0x88
> [    2.969171]  prepare_namespace+0x158/0x198
> [    2.973385]  kernel_init_freeable+0x264/0x2b0
> [    2.977876]  kernel_init+0x10/0x100
> [    2.981465]  ret_from_fork+0x10/0x18
> [    2.985157] Kernel Offset: disabled
> [    2.988751] CPU features: 0x10002,61006000
> [    2.992963] Memory Limit: none
> [    2.996131] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) ]---




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-02  2:16     ` Corey Minyard
@ 2020-05-02 11:46       ` Julien Grall
  2020-05-02 17:35         ` Corey Minyard
  2020-05-06 13:48         ` Corey Minyard
  0 siblings, 2 replies; 45+ messages in thread
From: Julien Grall @ 2020-05-02 11:46 UTC (permalink / raw)
  To: minyard, Roman Shaposhnik
  Cc: xen-devel, Julien Grall, Stefano Stabellini, Stefano Stabellini,
	jeff.kubascik

Hi,

On 02/05/2020 03:16, Corey Minyard wrote:
> On Fri, May 01, 2020 at 06:06:11PM -0700, Roman Shaposhnik wrote:
>> On Fri, May 1, 2020 at 4:42 AM Corey Minyard <minyard@acm.org> wrote:
>>>
>>> On Thu, Apr 30, 2020 at 07:20:05PM -0700, Roman Shaposhnik wrote:
>>>> Hi!
>>>>
>>>> I'm trying to run Xen on Raspberry Pi 4 with 5.6.1 stock,
>>>> upstream kernel. The kernel itself works perfectly well
>>>> on the board. When I try booting it as Dom0 under Xen,
>>>> it goes into a stacktrace (attached).
>>>
>>> Getting Xen working on the Pi4 requires a lot of moving parts, and they
>>> all have to be right.
>>
>> Tell me about it! It is a pretty frustrating journey to align
>> everything just right.
>> On the other hand -- it seems worth to enable RPi as an ARM development
>> platform for Xen given how ubiquitous it is.
>>
>> Hence me trying to combine pristine upstream kernel (5.6.1) with
>> pristine upstream
>> Xen to enable 100% upstream developer workflow on RPi.
>>
>>>> Looking at what nice folks over at Dornerworks have previously
>>>> done to make RPi kernels boot as Dom0 I've come across these
>>>> 3 patches:
>>>>      https://github.com/dornerworks/xen-rpi4-builder/tree/master/patches/linux
>>>>
>>>> The first patch seems irrelevant (unless I'm missing something
>>>> really basic here).
>>>
>>> It might be irrelevant for your configuration, assuming that Xen gets
>>> the right information from EFI.  I haven't tried EFI booting.
>>
>> I'd doing a bit of belt-and-suspenders strategy really -- I'm actually
>> using UEFI u-boot implementation that pre-populates device trees
>> and then I'm also forcing an extra copy of it to be load explicitly
>> via the GRUB devicetree command (GRUB runs as a UEFI payload).
>>
>> I also have access to the semi-official TianoCore RPi4 port that seems
>> to be working pretty well: https://github.com/pftf/RPi4/releases/tag/v1.5
>> for booting all sort of UEFI payloads on RPi4.
>>
>>>> The 2nd patch applied with no issue (but
>>>> I don't think it is related) but the 3d patch failed to apply on
>>>> account of 5.6.1 kernel no longer having:
>>>>      dev->archdata.dev_dma_ops
>>>> E.g.
>>>>      https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/arch/arm64/mm/dma-mapping.c?h=v5.6.1#n55
>>>>
>>>> I've tried to emulate the effect of the patch by simply introducing
>>>> a static variable that would signal that we already initialized
>>>> dev->dma_ops -- but that didn't help at all.
>>>>
>>>> I'm CCing Jeff Kubascik to see if the original authors of that Corey Minyard
>>>> to see if may be they have any suggestions on how this may be dealt
>>>> with.
>>>>
>>>> Any advice would be greatly appreciated!
>>>
>>> What's your Pi4 config.txt file look like? The GIC is not being handled
>>> correctly, and I'm guessing that configuration is wrong.  You can't use
>>> the stock config.txt file with Xen, you have to modify the configuration a
>>> bit.
>>
>> Understood. I'm actually using a custom one:
>>      https://github.com/lf-edge/eve/blob/master/pkg/u-boot/rpi/config.txt
>>
>> I could swear that I had a GIC setting in it -- but apparently no -- so
>> I added the following at the top of what you could see at the URL above:
>>
>> total_mem=4096
>> enable_gic=1
>>
>>> I think just adding:
>>>
>>> enable_gic=1
>>> total_mem=1024
>>
>> Right -- but my board has 4G memory -- so I think what I did above should work.
> 
> Nope.  If you say 4096M of RAM, your issue is almost certainly DMA, but
> it's not (just) the Linux code.  On the Raspberry Pi 4, several devices
> cannot DMA to above 1024M of RAM, but Xen does not handle this.  The
> 1024M of RAM is a limitation you will have to live with until Xen has a
> fix.

IIUC, dom0 would need to have some memory below 1GB for this to work, am 
I correct?

If so could you try the following patch?

diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 430708753642..002f49dba74b 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -282,7 +282,7 @@ static void __init allocate_memory_11(struct domain *d,
       */
      while ( order >= min_low_order )
      {
-        for ( bits = order ; bits <= (lowmem ? 32 : PADDR_BITS); bits++ )
+        for ( bits = order ; bits <= (lowmem ? 30 : PADDR_BITS); bits++ )
          {
              pg = alloc_domheap_pages(d, order, MEMF_bits(bits));
              if ( pg != NULL )
@@ -313,7 +313,7 @@ static void __init allocate_memory_11(struct domain *d,
      order = get_allocation_size(kinfo->unassigned_mem);
      while ( kinfo->unassigned_mem && kinfo->mem.nr_banks < NR_MEM_BANKS )
      {
-        pg = alloc_domheap_pages(d, order, lowmem ? MEMF_bits(32) : 0);
+        pg = alloc_domheap_pages(d, order, lowmem ? MEMF_bits(30) : 0);
          if ( !pg )
          {
              order --;


Cheers,

-- 
Julien Grall


^ permalink raw reply related	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-02 11:46       ` Julien Grall
@ 2020-05-02 17:35         ` Corey Minyard
  2020-05-02 17:48           ` Julien Grall
  2020-05-02 18:48           ` Elliott Mitchell
  2020-05-06 13:48         ` Corey Minyard
  1 sibling, 2 replies; 45+ messages in thread
From: Corey Minyard @ 2020-05-02 17:35 UTC (permalink / raw)
  To: Julien Grall
  Cc: Stefano Stabellini, Roman Shaposhnik, jeff.kubascik,
	Julien Grall, xen-devel, Stefano Stabellini

On Sat, May 02, 2020 at 12:46:14PM +0100, Julien Grall wrote:
> Hi,
> 
> On 02/05/2020 03:16, Corey Minyard wrote:
> > On Fri, May 01, 2020 at 06:06:11PM -0700, Roman Shaposhnik wrote:
> > > On Fri, May 1, 2020 at 4:42 AM Corey Minyard <minyard@acm.org> wrote:
> > > > 
> > > > On Thu, Apr 30, 2020 at 07:20:05PM -0700, Roman Shaposhnik wrote:
> > > > > Hi!
> > > > > 
> > > > > I'm trying to run Xen on Raspberry Pi 4 with 5.6.1 stock,
> > > > > upstream kernel. The kernel itself works perfectly well
> > > > > on the board. When I try booting it as Dom0 under Xen,
> > > > > it goes into a stacktrace (attached).
> > > > 
> > > > Getting Xen working on the Pi4 requires a lot of moving parts, and they
> > > > all have to be right.
> > > 
> > > Tell me about it! It is a pretty frustrating journey to align
> > > everything just right.
> > > On the other hand -- it seems worth to enable RPi as an ARM development
> > > platform for Xen given how ubiquitous it is.
> > > 
> > > Hence me trying to combine pristine upstream kernel (5.6.1) with
> > > pristine upstream
> > > Xen to enable 100% upstream developer workflow on RPi.
> > > 
> > > > > Looking at what nice folks over at Dornerworks have previously
> > > > > done to make RPi kernels boot as Dom0 I've come across these
> > > > > 3 patches:
> > > > >      https://github.com/dornerworks/xen-rpi4-builder/tree/master/patches/linux
> > > > > 
> > > > > The first patch seems irrelevant (unless I'm missing something
> > > > > really basic here).
> > > > 
> > > > It might be irrelevant for your configuration, assuming that Xen gets
> > > > the right information from EFI.  I haven't tried EFI booting.
> > > 
> > > I'd doing a bit of belt-and-suspenders strategy really -- I'm actually
> > > using UEFI u-boot implementation that pre-populates device trees
> > > and then I'm also forcing an extra copy of it to be load explicitly
> > > via the GRUB devicetree command (GRUB runs as a UEFI payload).
> > > 
> > > I also have access to the semi-official TianoCore RPi4 port that seems
> > > to be working pretty well: https://github.com/pftf/RPi4/releases/tag/v1.5
> > > for booting all sort of UEFI payloads on RPi4.
> > > 
> > > > > The 2nd patch applied with no issue (but
> > > > > I don't think it is related) but the 3d patch failed to apply on
> > > > > account of 5.6.1 kernel no longer having:
> > > > >      dev->archdata.dev_dma_ops
> > > > > E.g.
> > > > >      https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/arch/arm64/mm/dma-mapping.c?h=v5.6.1#n55
> > > > > 
> > > > > I've tried to emulate the effect of the patch by simply introducing
> > > > > a static variable that would signal that we already initialized
> > > > > dev->dma_ops -- but that didn't help at all.
> > > > > 
> > > > > I'm CCing Jeff Kubascik to see if the original authors of that Corey Minyard
> > > > > to see if may be they have any suggestions on how this may be dealt
> > > > > with.
> > > > > 
> > > > > Any advice would be greatly appreciated!
> > > > 
> > > > What's your Pi4 config.txt file look like? The GIC is not being handled
> > > > correctly, and I'm guessing that configuration is wrong.  You can't use
> > > > the stock config.txt file with Xen, you have to modify the configuration a
> > > > bit.
> > > 
> > > Understood. I'm actually using a custom one:
> > >      https://github.com/lf-edge/eve/blob/master/pkg/u-boot/rpi/config.txt
> > > 
> > > I could swear that I had a GIC setting in it -- but apparently no -- so
> > > I added the following at the top of what you could see at the URL above:
> > > 
> > > total_mem=4096
> > > enable_gic=1
> > > 
> > > > I think just adding:
> > > > 
> > > > enable_gic=1
> > > > total_mem=1024
> > > 
> > > Right -- but my board has 4G memory -- so I think what I did above should work.
> > 
> > Nope.  If you say 4096M of RAM, your issue is almost certainly DMA, but
> > it's not (just) the Linux code.  On the Raspberry Pi 4, several devices
> > cannot DMA to above 1024M of RAM, but Xen does not handle this.  The
> > 1024M of RAM is a limitation you will have to live with until Xen has a
> > fix.
> 
> IIUC, dom0 would need to have some memory below 1GB for this to work, am I
> correct?

No.  If I am understanding this correctly, all the memory in dom0 below
1GB would have to be physically below 1GB.

The Linux patch set starts at:

https://lore.kernel.org/linux-iommu/20191015174616.GO13874@arrakis.emea.arm.com/t/

There is also an interesting reference at:

https://www.raspberrypi.org/forums/viewtopic.php?t=264975

-corey

> 
> If so could you try the following patch?
> 
> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> index 430708753642..002f49dba74b 100644
> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -282,7 +282,7 @@ static void __init allocate_memory_11(struct domain *d,
>       */
>      while ( order >= min_low_order )
>      {
> -        for ( bits = order ; bits <= (lowmem ? 32 : PADDR_BITS); bits++ )
> +        for ( bits = order ; bits <= (lowmem ? 30 : PADDR_BITS); bits++ )
>          {
>              pg = alloc_domheap_pages(d, order, MEMF_bits(bits));
>              if ( pg != NULL )
> @@ -313,7 +313,7 @@ static void __init allocate_memory_11(struct domain *d,
>      order = get_allocation_size(kinfo->unassigned_mem);
>      while ( kinfo->unassigned_mem && kinfo->mem.nr_banks < NR_MEM_BANKS )
>      {
> -        pg = alloc_domheap_pages(d, order, lowmem ? MEMF_bits(32) : 0);
> +        pg = alloc_domheap_pages(d, order, lowmem ? MEMF_bits(30) : 0);
>          if ( !pg )
>          {
>              order --;
> 
> 
> Cheers,
> 
> -- 
> Julien Grall


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-02 17:35         ` Corey Minyard
@ 2020-05-02 17:48           ` Julien Grall
  2020-05-04 12:44             ` Corey Minyard
  2020-05-02 18:48           ` Elliott Mitchell
  1 sibling, 1 reply; 45+ messages in thread
From: Julien Grall @ 2020-05-02 17:48 UTC (permalink / raw)
  To: minyard
  Cc: Stefano Stabellini, Roman Shaposhnik, jeff.kubascik,
	Julien Grall, xen-devel, Stefano Stabellini



On 02/05/2020 18:35, Corey Minyard wrote:
> On Sat, May 02, 2020 at 12:46:14PM +0100, Julien Grall wrote:
> No.  If I am understanding this correctly, all the memory in dom0 below
> 1GB would have to be physically below 1GB.

Well, dom0 is directly mapped. In other word, dom0 physical address == 
host physical address. So if we allocate memory below 1GB in Xen, then 
it will mapped below 1GB on dom0 as well.

The patch I suggested would try to allocate as much as possible memory 
below 1GB. I believe this should do the trick for you here.

Cheers,

-- 
Julien Grall


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-02 17:35         ` Corey Minyard
  2020-05-02 17:48           ` Julien Grall
@ 2020-05-02 18:48           ` Elliott Mitchell
  2020-05-02 19:43             ` Julien Grall
  1 sibling, 1 reply; 45+ messages in thread
From: Elliott Mitchell @ 2020-05-02 18:48 UTC (permalink / raw)
  To: Corey Minyard
  Cc: Stefano Stabellini, Julien Grall, Roman Shaposhnik,
	jeff.kubascik, Julien Grall, xen-devel, Stefano Stabellini

On Sat, May 02, 2020 at 12:35:29PM -0500, Corey Minyard wrote:
> On Sat, May 02, 2020 at 12:46:14PM +0100, Julien Grall wrote:
> > 
> > On 02/05/2020 03:16, Corey Minyard wrote:
> > > 
> > > Nope.  If you say 4096M of RAM, your issue is almost certainly DMA, but
> > > it's not (just) the Linux code.  On the Raspberry Pi 4, several devices
> > > cannot DMA to above 1024M of RAM, but Xen does not handle this.  The
> > > 1024M of RAM is a limitation you will have to live with until Xen has a
> > > fix.
> > 
> > IIUC, dom0 would need to have some memory below 1GB for this to work, am I
> > correct?
> 
> No.  If I am understanding this correctly, all the memory in dom0 below
> 1GB would have to be physically below 1GB.
> 
> The Linux patch set starts at:
> 
> https://lore.kernel.org/linux-iommu/20191015174616.GO13874@arrakis.emea.arm.com/t/
> 

Actually, things get worse.  What if someone wants to run an X-server in
DomU and have a DomU accessing the graphics hardware?  Really needs to be
a case of allocating DMA-capable memory means talking to Xen.

As pointed out in that discussion different boards are going to have the
DMA-borderline in different places.  There could be enough variation that
it needs to be settable at run time.  Then some boards might have some
DMA devices which can access all memory, and some which cannot (full-DMA
versus limited-DMA?).


-- 
(\___(\___(\______          --=> 8-) EHM <=--          ______/)___/)___/)
 \BS (    |         ehem+sigmsg@m5p.com  PGP 87145445         |    )   /
  \_CS\   |  _____  -O #include <stddisclaimer.h> O-   _____  |   /  _/
8A19\___\_|_/58D2 7E3D DDF4 7BA6 <-PGP-> 41D1 B375 37D0 8714\_|_/___/5445




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-02 18:48           ` Elliott Mitchell
@ 2020-05-02 19:43             ` Julien Grall
  0 siblings, 0 replies; 45+ messages in thread
From: Julien Grall @ 2020-05-02 19:43 UTC (permalink / raw)
  To: Elliott Mitchell, Corey Minyard
  Cc: Stefano Stabellini, Roman Shaposhnik, jeff.kubascik,
	Julien Grall, xen-devel, Stefano Stabellini

Hi Elliott,

On 02/05/2020 19:48, Elliott Mitchell wrote:
> On Sat, May 02, 2020 at 12:35:29PM -0500, Corey Minyard wrote:
>> On Sat, May 02, 2020 at 12:46:14PM +0100, Julien Grall wrote:
>>>
>>> On 02/05/2020 03:16, Corey Minyard wrote:
>>>>
>>>> Nope.  If you say 4096M of RAM, your issue is almost certainly DMA, but
>>>> it's not (just) the Linux code.  On the Raspberry Pi 4, several devices
>>>> cannot DMA to above 1024M of RAM, but Xen does not handle this.  The
>>>> 1024M of RAM is a limitation you will have to live with until Xen has a
>>>> fix.
>>>
>>> IIUC, dom0 would need to have some memory below 1GB for this to work, am I
>>> correct?
>>
>> No.  If I am understanding this correctly, all the memory in dom0 below
>> 1GB would have to be physically below 1GB.
>>
>> The Linux patch set starts at:
>>
>> https://lore.kernel.org/linux-iommu/20191015174616.GO13874@arrakis.emea.arm.com/t/
>>
> 
> Actually, things get worse.  What if someone wants to run an X-server in
> DomU and have a DomU accessing the graphics hardware?  Really needs to be
> a case of allocating DMA-capable memory means talking to Xen.

I am confused, if you passthrough a device to your DomU then you most 
likely going to want to protect using an IOMMU. So are you talking with 
or without IOMMU?

Lets imagine that you want to do without an IOMMU. The easiest way would 
be to direct-map your domain (e.g host physical == guest physical) 
because you require no modification in your guest. Only the toolstack 
and Xen would require modification.

Stefano has been working on a solution in the dom0less case (see [1]). 
The approach is to let the user select the region of RAM to use for a 
given guest.


> As pointed out in that discussion different boards are going to have the
> DMA-borderline in different places.  There could be enough variation that
> it needs to be settable at run time.  Then some boards might have some
> DMA devices which can access all memory, and some which cannot (full-DMA
> versus limited-DMA?).
> 
> 

Cheers,

[1] 
https://lore.kernel.org/xen-devel/91b9d1d9-6e6f-c8b9-55ac-a3477b20a17b@xen.org/T/#t

-- 
Julien Grall


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-02 17:48           ` Julien Grall
@ 2020-05-04 12:44             ` Corey Minyard
  2020-05-04 20:54               ` Roman Shaposhnik
  0 siblings, 1 reply; 45+ messages in thread
From: Corey Minyard @ 2020-05-04 12:44 UTC (permalink / raw)
  To: Julien Grall
  Cc: Stefano Stabellini, Roman Shaposhnik, jeff.kubascik,
	Julien Grall, xen-devel, Stefano Stabellini

On Sat, May 02, 2020 at 06:48:27PM +0100, Julien Grall wrote:
> 
> 
> On 02/05/2020 18:35, Corey Minyard wrote:
> > On Sat, May 02, 2020 at 12:46:14PM +0100, Julien Grall wrote:
> > No.  If I am understanding this correctly, all the memory in dom0 below
> > 1GB would have to be physically below 1GB.
> 
> Well, dom0 is directly mapped. In other word, dom0 physical address == host
> physical address. So if we allocate memory below 1GB in Xen, then it will
> mapped below 1GB on dom0 as well.
> 
> The patch I suggested would try to allocate as much as possible memory below
> 1GB. I believe this should do the trick for you here.

Yes, that does seem to do the trick:

root@raspberrypi4-64-xen:~# xl info
host                   : raspberrypi4-64-xen
release                : 4.19.115-v8
version                : #1 SMP PREEMPT Thu Apr 16 13:53:57 UTC 2020
machine                : aarch64
nr_cpus                : 4
max_cpu_id             : 3
nr_nodes               : 1
cores_per_socket       : 1
threads_per_core       : 1
cpu_mhz                : 54.000
hw_caps                : 00000000:00000000:00000000:00000000:00000000:00000000:00000000:00000000
virt_caps              : hvm hap
total_memory           : 3956
free_memory            : 3634
sharing_freed_memory   : 0
sharing_used_memory    : 0
outstanding_claims     : 0
free_cpus              : 0
xen_major              : 4
xen_minor              : 13
xen_extra              : .0
xen_version            : 4.13.0
xen_caps               : xen-3.0-aarch64 xen-3.0-armv7l
xen_scheduler          : credit2
xen_pagesize           : 4096
platform_params        : virt_start=0x200000
xen_changeset          : Tue Dec 17 14:19:49 2019 +0000 git:a2e84d8e42-dirty
xen_commandline        : console=dtuart dtuart=/soc/serial@7e215040 sync_console dom0_mem=256M bootscrub=0
cc_compiler            : aarch64-montavista-linux-gcc (GCC) 9.3.0
cc_compile_by          : xen-4.13+gitAUT
cc_compile_domain      : mvista-cgx
cc_compile_date        : 2019-12-17
build_id               : b0e9b4af9d83f67953e1640976f0720452a88f6a
xend_config_format     : 4

Thanks for the fix.

-corey

> 
> Cheers,
> 
> -- 
> Julien Grall


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-04 12:44             ` Corey Minyard
@ 2020-05-04 20:54               ` Roman Shaposhnik
  2020-05-05  3:52                 ` Stefano Stabellini
  0 siblings, 1 reply; 45+ messages in thread
From: Roman Shaposhnik @ 2020-05-04 20:54 UTC (permalink / raw)
  To: minyard
  Cc: Stefano Stabellini, Julien Grall, jeff.kubascik, Julien Grall,
	xen-devel, Stefano Stabellini

[-- Attachment #1: Type: text/plain, Size: 6446 bytes --]

Hi Julien,

thank for your patch -- just like Corey I tried it out and it seems to
work fine and gets
me further. At this point, I'm pretty sure I'm past initial
bootstrapping issues and into
what can be basically described as Xen DMA issue of some kind (so I'm
pretty sure
I will need Stefano's help to debug this further). I'm attaching
verbose logs, but the
culprit seems to be:

[    2.534292] Unable to handle kernel paging request at virtual
address 000000000026c340
[    2.542373] Mem abort info:
[    2.545257]   ESR = 0x96000004
[    2.548421]   EC = 0x25: DABT (current EL), IL = 32 bits
[    2.553877]   SET = 0, FnV = 0
[    2.557023]   EA = 0, S1PTW = 0
[    2.560297] Data abort info:
[    2.563258]   ISV = 0, ISS = 0x00000004
[    2.567208]   CM = 0, WnR = 0
[    2.570294] [000000000026c340] user address but active_mm is swapper
[    2.576783] Internal error: Oops: 96000004 [#1] SMP
[    2.581784] Modules linked in:
[    2.584950] CPU: 3 PID: 135 Comm: kworker/3:1 Not tainted 5.6.1-default #9
[    2.591970] Hardware name: Raspberry Pi 4 Model B (DT)
[    2.597256] Workqueue: events deferred_probe_work_func
[    2.602509] pstate: 60000005 (nZCv daif -PAN -UAO)
[    2.607431] pc : xen_swiotlb_free_coherent+0x198/0x1d8
[    2.612696] lr : dma_free_attrs+0x98/0xd0
[    2.616827] sp : ffff800011db3970
[    2.620242] x29: ffff800011db3970 x28: 00000000000f7b00
[    2.625695] x27: 0000000000001000 x26: ffff000037b68410
[    2.631129] x25: 0000000000000001 x24: 00000000f7b00000
[    2.636583] x23: 0000000000000000 x22: 0000000000000000
[    2.642017] x21: ffff800011b0d000 x20: ffff80001179b548
[    2.647461] x19: ffff000037b68410 x18: 0000000000000010
[    2.652905] x17: ffff000035d66a00 x16: 00000000deadbeef
[    2.658348] x15: ffffffffffffffff x14: ffff80001179b548
[    2.663792] x13: ffff800091db37b7 x12: ffff800011db37bf
[    2.669236] x11: ffff8000117c7000 x10: ffff800011db3740
[    2.674680] x9 : 00000000ffffffd0 x8 : ffff80001071e980
[    2.680124] x7 : 0000000000000132 x6 : ffff80001197a6ab
[    2.685568] x5 : 0000000000000000 x4 : 0000000000000000
[    2.691012] x3 : 00000000f7b00000 x2 : fffffdffffe00000
[    2.696465] x1 : 000000000026c340 x0 : 000002000046c340
[    2.701899] Call trace:
[    2.704452]  xen_swiotlb_free_coherent+0x198/0x1d8
[    2.709367]  dma_free_attrs+0x98/0xd0
[    2.713143]  rpi_firmware_property_list+0x1e4/0x240
[    2.718146]  rpi_firmware_property+0x6c/0xb0
[    2.722535]  rpi_firmware_probe+0xf0/0x1e0
[    2.726760]  platform_drv_probe+0x50/0xa0
[    2.730879]  really_probe+0xd8/0x438
[    2.734567]  driver_probe_device+0xdc/0x130
[    2.738870]  __device_attach_driver+0x88/0x108
[    2.743434]  bus_for_each_drv+0x78/0xc8
[    2.747386]  __device_attach+0xd4/0x158
[    2.751337]  device_initial_probe+0x10/0x18
[    2.755649]  bus_probe_device+0x90/0x98
[    2.759590]  deferred_probe_work_func+0x88/0xd8
[    2.764244]  process_one_work+0x1f0/0x3c0
[    2.768369]  worker_thread+0x138/0x570
[    2.772234]  kthread+0x118/0x120
[    2.775571]  ret_from_fork+0x10/0x18
[    2.779263] Code: d34cfc00 f2dfbfe2 d37ae400 8b020001 (f8626800)
[    2.785492] ---[ end trace 4c435212e349f45f ]---
[    2.793340] usb 1-1: New USB device found, idVendor=2109,
idProduct=3431, bcdDevice= 4.20
[    2.801038] usb 1-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[    2.808297] usb 1-1: Product: USB2.0 Hub
[    2.813710] hub 1-1:1.0: USB hub found
[    2.817117] hub 1-1:1.0: 4 ports detected

This is bailing out right here:
     https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/firmware/raspberrypi.c?h=v5.6.1#n125

FYIW (since I modified the source to actually print what was returned
right before it bails) we get:
   buf[1] == 0x800000004
   buf[2] == 0x00000001

Status 0x800000004 is of course suspicious since it is not even listed here:
    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/include/soc/bcm2835/raspberrypi-firmware.h#n14

So it appears that this DMA request path is somehow busted and it
would be really nice to figure out why.

Thanks,
Roman.

On Mon, May 4, 2020 at 5:44 AM Corey Minyard <minyard@acm.org> wrote:
>
> On Sat, May 02, 2020 at 06:48:27PM +0100, Julien Grall wrote:
> >
> >
> > On 02/05/2020 18:35, Corey Minyard wrote:
> > > On Sat, May 02, 2020 at 12:46:14PM +0100, Julien Grall wrote:
> > > No.  If I am understanding this correctly, all the memory in dom0 below
> > > 1GB would have to be physically below 1GB.
> >
> > Well, dom0 is directly mapped. In other word, dom0 physical address == host
> > physical address. So if we allocate memory below 1GB in Xen, then it will
> > mapped below 1GB on dom0 as well.
> >
> > The patch I suggested would try to allocate as much as possible memory below
> > 1GB. I believe this should do the trick for you here.
>
> Yes, that does seem to do the trick:
>
> root@raspberrypi4-64-xen:~# xl info
> host                   : raspberrypi4-64-xen
> release                : 4.19.115-v8
> version                : #1 SMP PREEMPT Thu Apr 16 13:53:57 UTC 2020
> machine                : aarch64
> nr_cpus                : 4
> max_cpu_id             : 3
> nr_nodes               : 1
> cores_per_socket       : 1
> threads_per_core       : 1
> cpu_mhz                : 54.000
> hw_caps                : 00000000:00000000:00000000:00000000:00000000:00000000:00000000:00000000
> virt_caps              : hvm hap
> total_memory           : 3956
> free_memory            : 3634
> sharing_freed_memory   : 0
> sharing_used_memory    : 0
> outstanding_claims     : 0
> free_cpus              : 0
> xen_major              : 4
> xen_minor              : 13
> xen_extra              : .0
> xen_version            : 4.13.0
> xen_caps               : xen-3.0-aarch64 xen-3.0-armv7l
> xen_scheduler          : credit2
> xen_pagesize           : 4096
> platform_params        : virt_start=0x200000
> xen_changeset          : Tue Dec 17 14:19:49 2019 +0000 git:a2e84d8e42-dirty
> xen_commandline        : console=dtuart dtuart=/soc/serial@7e215040 sync_console dom0_mem=256M bootscrub=0
> cc_compiler            : aarch64-montavista-linux-gcc (GCC) 9.3.0
> cc_compile_by          : xen-4.13+gitAUT
> cc_compile_domain      : mvista-cgx
> cc_compile_date        : 2019-12-17
> build_id               : b0e9b4af9d83f67953e1640976f0720452a88f6a
> xend_config_format     : 4
>
> Thanks for the fix.
>
> -corey
>
> >
> > Cheers,
> >
> > --
> > Julien Grall

[-- Attachment #2: xen.verbose.log --]
[-- Type: application/octet-stream, Size: 40672 bytes --]

Using modules provided by bootloader in FDT
Xen 4.14-unstable (c/s Thu Apr 30 10:45:09 2020 +0200 git:0135be8-dirty) EFI loader
Warning: Could not query variable store: 0x8000000000000003
- UART enabled -
- Boot CPU booting -
- Current EL 00000008 -
- Initialize CPU -
- Turning on paging -
- Ready -
(XEN) Checking for initrd in /chosen
(XEN) RAM: 0000000000001000 - 0000000007ef1fff
(XEN) RAM: 0000000007ef2000 - 0000000007f0dfff
(XEN) RAM: 0000000007f0e000 - 000000002bc47fff
(XEN) RAM: 000000002bc48000 - 000000002bc50fff
(XEN) RAM: 000000002bc51000 - 000000002bd95fff
(XEN) RAM: 000000002bd96000 - 000000002d780fff
(XEN) RAM: 000000002d781000 - 000000003c9f6fff
(XEN) RAM: 000000003c9f7000 - 000000003c9f8fff
(XEN) RAM: 000000003c9fb000 - 000000003c9fdfff
(XEN) RAM: 000000003c9fe000 - 000000003cb08fff
(XEN) RAM: 000000003cb10000 - 000000003cb10fff
(XEN) RAM: 000000003cb12000 - 000000003cb13fff
(XEN) RAM: 000000003cb1b000 - 000000003cb1cfff
(XEN) RAM: 000000003cb1e000 - 000000003df3ffff
(XEN) RAM: 000000003df50000 - 000000003dffffff
(XEN) RAM: 0000000040000000 - 00000000fbffffff
(XEN)
(XEN) MODULE[0]: 000000002bc51000 - 000000002bd950d8 Xen
(XEN) MODULE[1]: 000000002bc49000 - 000000002bc51000 Device Tree
(XEN) MODULE[2]: 000000002bd9d000 - 000000002d67c200 Kernel
(XEN)
(XEN) CMDLINE[000000002bd9d000]:chosen earlyprintk=xen console=hvc0 rootdelay=10
(XEN)
(XEN) Command line: dom0_mem=512M
(XEN) Domain heap initialised
(XEN) Booting using Device Tree
(XEN)  -> unflatten_device_tree()
(XEN) Unflattening device tree:
(XEN) magic: 0xd00dfeed
(XEN) size: 0x008000
(XEN) version: 0x000011
(XEN)   size is 0x12300 allocating...
(XEN)   unflattening 8000f7fc0000...
(XEN) fixed up name for  ->
(XEN) fixed up name for aliases -> aliases
(XEN) fixed up name for chosen -> chosen
(XEN) fixed up name for module@2bd9d000 -> module
(XEN) fixed up name for reserved-memory -> reserved-memory
(XEN) fixed up name for linux,cma -> linux,cma
(XEN) fixed up name for thermal-zones -> thermal-zones
(XEN) fixed up name for cpu-thermal -> cpu-thermal
(XEN) fixed up name for trips -> trips
(XEN) fixed up name for cpu-crit -> cpu-crit
(XEN) fixed up name for cooling-maps -> cooling-maps
(XEN) fixed up name for soc -> soc
(XEN) fixed up name for timer@7e003000 -> timer
(XEN) fixed up name for txp@7e004000 -> txp
(XEN) fixed up name for cprman@7e101000 -> cprman
(XEN) fixed up name for mailbox@7e00b880 -> mailbox
(XEN) fixed up name for gpio@7e200000 -> gpio
(XEN) fixed up name for dpi_gpio0 -> dpi_gpio0
(XEN) fixed up name for emmc_gpio22 -> emmc_gpio22
(XEN) fixed up name for emmc_gpio34 -> emmc_gpio34
(XEN) fixed up name for emmc_gpio48 -> emmc_gpio48
(XEN) fixed up name for gpclk0_gpio4 -> gpclk0_gpio4
(XEN) fixed up name for gpclk1_gpio5 -> gpclk1_gpio5
(XEN) fixed up name for gpclk1_gpio42 -> gpclk1_gpio42
(XEN) fixed up name for gpclk1_gpio44 -> gpclk1_gpio44
(XEN) fixed up name for gpclk2_gpio6 -> gpclk2_gpio6
(XEN) fixed up name for gpclk2_gpio43 -> gpclk2_gpio43
(XEN) fixed up name for i2c0_gpio0 -> i2c0_gpio0
(XEN) fixed up name for i2c0_gpio28 -> i2c0_gpio28
(XEN) fixed up name for i2c0_gpio44 -> i2c0_gpio44
(XEN) fixed up name for i2c1_gpio2 -> i2c1_gpio2
(XEN) fixed up name for i2c1_gpio44 -> i2c1_gpio44
(XEN) fixed up name for jtag_gpio22 -> jtag_gpio22
(XEN) fixed up name for pcm_gpio18 -> pcm_gpio18
(XEN) fixed up name for pcm_gpio28 -> pcm_gpio28
(XEN) fixed up name for sdhost_gpio48 -> sdhost_gpio48
(XEN) fixed up name for spi0_gpio7 -> spi0_gpio7
(XEN) fixed up name for spi0_gpio35 -> spi0_gpio35
(XEN) fixed up name for spi1_gpio16 -> spi1_gpio16
(XEN) fixed up name for spi2_gpio40 -> spi2_gpio40
(XEN) fixed up name for uart0_gpio14 -> uart0_gpio14
(XEN) fixed up name for uart0_ctsrts_gpio16 -> uart0_ctsrts_gpio16
(XEN) fixed up name for uart0_ctsrts_gpio30 -> uart0_ctsrts_gpio30
(XEN) fixed up name for uart0_gpio32 -> uart0_gpio32
(XEN) fixed up name for uart0_gpio36 -> uart0_gpio36
(XEN) fixed up name for uart0_ctsrts_gpio38 -> uart0_ctsrts_gpio38
(XEN) fixed up name for uart1_gpio14 -> uart1_gpio14
(XEN) fixed up name for uart1_ctsrts_gpio16 -> uart1_ctsrts_gpio16
(XEN) fixed up name for uart1_gpio32 -> uart1_gpio32
(XEN) fixed up name for uart1_ctsrts_gpio30 -> uart1_ctsrts_gpio30
(XEN) fixed up name for uart1_gpio40 -> uart1_gpio40
(XEN) fixed up name for uart1_ctsrts_gpio42 -> uart1_ctsrts_gpio42
(XEN) fixed up name for gpclk0_gpio49 -> gpclk0_gpio49
(XEN) fixed up name for pin-gpclk -> pin-gpclk
(XEN) fixed up name for gpclk1_gpio50 -> gpclk1_gpio50
(XEN) fixed up name for pin-gpclk -> pin-gpclk
(XEN) fixed up name for gpclk2_gpio51 -> gpclk2_gpio51
(XEN) fixed up name for pin-gpclk -> pin-gpclk
(XEN) fixed up name for i2c0_gpio46 -> i2c0_gpio46
(XEN) fixed up name for pin-sda -> pin-sda
(XEN) fixed up name for pin-scl -> pin-scl
(XEN) fixed up name for i2c1_gpio46 -> i2c1_gpio46
(XEN) fixed up name for pin-sda -> pin-sda
(XEN) fixed up name for pin-scl -> pin-scl
(XEN) fixed up name for i2c3_gpio2 -> i2c3_gpio2
(XEN) fixed up name for pin-sda -> pin-sda
(XEN) fixed up name for pin-scl -> pin-scl
(XEN) fixed up name for i2c3_gpio4 -> i2c3_gpio4
(XEN) fixed up name for pin-sda -> pin-sda
(XEN) fixed up name for pin-scl -> pin-scl
(XEN) fixed up name for i2c4_gpio6 -> i2c4_gpio6
(XEN) fixed up name for pin-sda -> pin-sda
(XEN) fixed up name for pin-scl -> pin-scl
(XEN) fixed up name for i2c4_gpio8 -> i2c4_gpio8
(XEN) fixed up name for pin-sda -> pin-sda
(XEN) fixed up name for pin-scl -> pin-scl
(XEN) fixed up name for i2c5_gpio10 -> i2c5_gpio10
(XEN) fixed up name for pin-sda -> pin-sda
(XEN) fixed up name for pin-scl -> pin-scl
(XEN) fixed up name for i2c5_gpio12 -> i2c5_gpio12
(XEN) fixed up name for pin-sda -> pin-sda
(XEN) fixed up name for pin-scl -> pin-scl
(XEN) fixed up name for i2c6_gpio0 -> i2c6_gpio0
(XEN) fixed up name for pin-sda -> pin-sda
(XEN) fixed up name for pin-scl -> pin-scl
(XEN) fixed up name for i2c6_gpio22 -> i2c6_gpio22
(XEN) fixed up name for pin-sda -> pin-sda
(XEN) fixed up name for pin-scl -> pin-scl
(XEN) fixed up name for i2c_slave_gpio8 -> i2c_slave_gpio8
(XEN) fixed up name for pins-i2c-slave -> pins-i2c-slave
(XEN) fixed up name for jtag_gpio48 -> jtag_gpio48
(XEN) fixed up name for pins-jtag -> pins-jtag
(XEN) fixed up name for mii_gpio28 -> mii_gpio28
(XEN) fixed up name for pins-mii -> pins-mii
(XEN) fixed up name for mii_gpio36 -> mii_gpio36
(XEN) fixed up name for pins-mii -> pins-mii
(XEN) fixed up name for pcm_gpio50 -> pcm_gpio50
(XEN) fixed up name for pins-pcm -> pins-pcm
(XEN) fixed up name for pwm0_0_gpio12 -> pwm0_0_gpio12
(XEN) fixed up name for pin-pwm -> pin-pwm
(XEN) fixed up name for pwm0_0_gpio18 -> pwm0_0_gpio18
(XEN) fixed up name for pin-pwm -> pin-pwm
(XEN) fixed up name for pwm1_0_gpio40 -> pwm1_0_gpio40
(XEN) fixed up name for pin-pwm -> pin-pwm
(XEN) fixed up name for pwm0_1_gpio13 -> pwm0_1_gpio13
(XEN) fixed up name for pin-pwm -> pin-pwm
(XEN) fixed up name for pwm0_1_gpio19 -> pwm0_1_gpio19
(XEN) fixed up name for pin-pwm -> pin-pwm
(XEN) fixed up name for pwm1_1_gpio41 -> pwm1_1_gpio41
(XEN) fixed up name for pin-pwm -> pin-pwm
(XEN) fixed up name for pwm0_1_gpio45 -> pwm0_1_gpio45
(XEN) fixed up name for pin-pwm -> pin-pwm
(XEN) fixed up name for pwm0_0_gpio52 -> pwm0_0_gpio52
(XEN) fixed up name for pin-pwm -> pin-pwm
(XEN) fixed up name for pwm0_1_gpio53 -> pwm0_1_gpio53
(XEN) fixed up name for pin-pwm -> pin-pwm
(XEN) fixed up name for rgmii_gpio35 -> rgmii_gpio35
(XEN) fixed up name for pin-start-stop -> pin-start-stop
(XEN) fixed up name for pin-rx-ok -> pin-rx-ok
(XEN) fixed up name for rgmii_irq_gpio34 -> rgmii_irq_gpio34
(XEN) fixed up name for pin-irq -> pin-irq
(XEN) fixed up name for rgmii_irq_gpio39 -> rgmii_irq_gpio39
(XEN) fixed up name for pin-irq -> pin-irq
(XEN) fixed up name for rgmii_mdio_gpio28 -> rgmii_mdio_gpio28
(XEN) fixed up name for pins-mdio -> pins-mdio
(XEN) fixed up name for rgmii_mdio_gpio37 -> rgmii_mdio_gpio37
(XEN) fixed up name for pins-mdio -> pins-mdio
(XEN) fixed up name for spi0_gpio46 -> spi0_gpio46
(XEN) fixed up name for pins-spi -> pins-spi
(XEN) fixed up name for spi2_gpio46 -> spi2_gpio46
(XEN) fixed up name for pins-spi -> pins-spi
(XEN) fixed up name for spi3_gpio0 -> spi3_gpio0
(XEN) fixed up name for pins-spi -> pins-spi
(XEN) fixed up name for spi4_gpio4 -> spi4_gpio4
(XEN) fixed up name for pins-spi -> pins-spi
(XEN) fixed up name for spi5_gpio12 -> spi5_gpio12
(XEN) fixed up name for pins-spi -> pins-spi
(XEN) fixed up name for spi6_gpio18 -> spi6_gpio18
(XEN) fixed up name for pins-spi -> pins-spi
(XEN) fixed up name for uart2_gpio0 -> uart2_gpio0
(XEN) fixed up name for pin-tx -> pin-tx
(XEN) fixed up name for pin-rx -> pin-rx
(XEN) fixed up name for uart2_ctsrts_gpio2 -> uart2_ctsrts_gpio2
(XEN) fixed up name for pin-cts -> pin-cts
(XEN) fixed up name for pin-rts -> pin-rts
(XEN) fixed up name for uart3_gpio4 -> uart3_gpio4
(XEN) fixed up name for pin-tx -> pin-tx
(XEN) fixed up name for pin-rx -> pin-rx
(XEN) fixed up name for uart3_ctsrts_gpio6 -> uart3_ctsrts_gpio6
(XEN) fixed up name for pin-cts -> pin-cts
(XEN) fixed up name for pin-rts -> pin-rts
(XEN) fixed up name for uart4_gpio8 -> uart4_gpio8
(XEN) fixed up name for pin-tx -> pin-tx
(XEN) fixed up name for pin-rx -> pin-rx
(XEN) fixed up name for uart4_ctsrts_gpio10 -> uart4_ctsrts_gpio10
(XEN) fixed up name for pin-cts -> pin-cts
(XEN) fixed up name for pin-rts -> pin-rts
(XEN) fixed up name for uart5_gpio12 -> uart5_gpio12
(XEN) fixed up name for pin-tx -> pin-tx
(XEN) fixed up name for pin-rx -> pin-rx
(XEN) fixed up name for uart5_ctsrts_gpio14 -> uart5_ctsrts_gpio14
(XEN) fixed up name for pin-cts -> pin-cts
(XEN) fixed up name for pin-rts -> pin-rts
(XEN) fixed up name for gpioout -> gpioout
(XEN) fixed up name for alt0 -> alt0
(XEN) fixed up name for serial@7e201000 -> serial
(XEN) fixed up name for bluetooth -> bluetooth
(XEN) fixed up name for mmc@7e202000 -> mmc
(XEN) fixed up name for i2s@7e203000 -> i2s
(XEN) fixed up name for spi@7e204000 -> spi
(XEN) fixed up name for i2c@7e205000 -> i2c
(XEN) fixed up name for dpi@7e208000 -> dpi
(XEN) fixed up name for dsi@7e209000 -> dsi
(XEN) fixed up name for aux@7e215000 -> aux
(XEN) fixed up name for serial@7e215040 -> serial
(XEN) fixed up name for spi@7e215080 -> spi
(XEN) fixed up name for spi@7e2150c0 -> spi
(XEN) fixed up name for pwm@7e20c000 -> pwm
(XEN) fixed up name for sdhci@7e300000 -> sdhci
(XEN) fixed up name for wifi@1 -> wifi
(XEN) fixed up name for hvs@7e400000 -> hvs
(XEN) fixed up name for dsi@7e700000 -> dsi
(XEN) fixed up name for i2c@7e804000 -> i2c
(XEN) fixed up name for vec@7e806000 -> vec
(XEN) fixed up name for usb@7e980000 -> usb
(XEN) fixed up name for local_intc@40000000 -> local_intc
(XEN) fixed up name for interrupt-controller@40041000 -> interrupt-controller
(XEN) fixed up name for avs-monitor@7d5d2000 -> avs-monitor
(XEN) fixed up name for thermal -> thermal
(XEN) fixed up name for dma@7e007000 -> dma
(XEN) fixed up name for watchdog@7e100000 -> watchdog
(XEN) fixed up name for rng@7e104000 -> rng
(XEN) fixed up name for serial@7e201400 -> serial
(XEN) fixed up name for serial@7e201600 -> serial
(XEN) fixed up name for serial@7e201800 -> serial
(XEN) fixed up name for serial@7e201a00 -> serial
(XEN) fixed up name for spi@7e204600 -> spi
(XEN) fixed up name for spi@7e204800 -> spi
(XEN) fixed up name for spi@7e204a00 -> spi
(XEN) fixed up name for spi@7e204c00 -> spi
(XEN) fixed up name for i2c@7e205600 -> i2c
(XEN) fixed up name for i2c@7e205800 -> i2c
(XEN) fixed up name for i2c@7e205a00 -> i2c
(XEN) fixed up name for i2c@7e205c00 -> i2c
(XEN) fixed up name for pwm@7e20c800 -> pwm
(XEN) fixed up name for emmc2@7e340000 -> emmc2
(XEN) fixed up name for firmware -> firmware
(XEN) fixed up name for gpio -> gpio
(XEN) fixed up name for power -> power
(XEN) fixed up name for mailbox@7e00b840 -> mailbox
(XEN) fixed up name for clocks -> clocks
(XEN) fixed up name for clk-osc -> clk-osc
(XEN) fixed up name for clk-usb -> clk-usb
(XEN) fixed up name for phy -> phy
(XEN) fixed up name for arm-pmu -> arm-pmu
(XEN) fixed up name for timer -> timer
(XEN) fixed up name for cpus -> cpus
(XEN) fixed up name for cpu@0 -> cpu
(XEN) fixed up name for cpu@1 -> cpu
(XEN) fixed up name for cpu@2 -> cpu
(XEN) fixed up name for cpu@3 -> cpu
(XEN) fixed up name for scb -> scb
(XEN) fixed up name for pcie@7d500000 -> pcie
(XEN) fixed up name for ethernet@7d580000 -> ethernet
(XEN) fixed up name for mdio@e14 -> mdio
(XEN) fixed up name for ethernet-phy@1 -> ethernet-phy
(XEN) fixed up name for leds -> leds
(XEN) fixed up name for act -> act
(XEN) fixed up name for pwr -> pwr
(XEN) fixed up name for wifi-pwrseq -> wifi-pwrseq
(XEN) fixed up name for sd_io_1v8_reg -> sd_io_1v8_reg
(XEN)  <- unflatten_device_tree()
(XEN) adding DT alias:serial0: stem=serial id=0 node=/soc/serial@7e201000
(XEN) adding DT alias:serial1: stem=serial id=1 node=/soc/serial@7e215040
(XEN) adding DT alias:ethernet0: stem=ethernet id=0 node=/scb/ethernet@7d580000
(XEN) adding DT alias:pcie0: stem=pcie id=0 node=/scb/pcie@7d500000
(XEN) Platform: Raspberry Pi 4
(XEN) Taking dtuart configuration from /chosen/stdout-path
(XEN) Looking for dtuart at "serial1", options "115200n8"
(XEN) DT: ** translation for device /soc/serial@7e215040 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e215040<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e215040
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 215040
(XEN) DT: one level translation:<3> 00000000<3> fe215040<3>
(XEN) DT: reached root node
(XEN) dt_device_get_raw_irq: dev=/soc/serial@7e215040, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000005d...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got Xen 4.14-unstable
(XEN) Xen version 4.14-unstable (@) (gcc (Alpine 6.4.0) 6.4.0) debug=y  Mon May  4 18:52:27 UTC 2020
(XEN) Latest ChangeSet: Thu Apr 30 10:45:09 2020 +0200 git:0135be8-dirty
(XEN) build-id: 21eda96d52ddc24d0e4988b41bd4e7b7045714a6
(XEN) Processor: 410fd083: "ARM Limited", variant: 0x0, part 0xd08, rev 0x3
(XEN) 64-bit Execution:
(XEN)   Processor Features: 0000000000002222 0000000000000000
(XEN)     Exception Levels: EL3:64+32 EL2:64+32 EL1:64+32 EL0:64+32
(XEN)     Extensions: FloatingPoint AdvancedSIMD
(XEN)   Debug Features: 0000000010305106 0000000000000000
(XEN)   Auxiliary Features: 0000000000000000 0000000000000000
(XEN)   Memory Model Features: 0000000000001124 0000000000000000
(XEN)   ISA Features:  0000000000010000 0000000000000000
(XEN) 32-bit Execution:
(XEN)   Processor Features: 00000131:00011011
(XEN)     Instruction Sets: AArch32 A32 Thumb Thumb-2 Jazelle
(XEN)     Extensions: GenericTimer Security
(XEN)   Debug Features: 03010066
(XEN)   Auxiliary Features: 00000000
(XEN)   Memory Model Features: 10201105 40000000 01260000 02102211
(XEN)  ISA Features: 02101110 13112111 21232042 01112131 00011142 00010001
(XEN) SMP: Allowing 4 CPUs
(XEN) enabled workaround for: ARM erratum 1319537
(XEN) dt_device_get_raw_irq: dev=/timer, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=1 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000001 0x0000000d...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/timer, index=1
(XEN)  using 'interrupts' property
(XEN)  intspec=1 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000001 0x0000000e...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/timer, index=2
(XEN)  using 'interrupts' property
(XEN)  intspec=1 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000001 0x0000000b...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/timer, index=3
(XEN)  using 'interrupts' property
(XEN)  intspec=1 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000001 0x0000000a...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) Generic Timer IRQ: phys=30 hyp=26 virt=27 Freq: 54000 KHz
(XEN) DT: ** translation for device /soc/interrupt-controller@40041000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 40041000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=40041000
(XEN) DT: default map, cp=7c000000, s=2000000, da=40041000
(XEN) DT: default map, cp=40000000, s=800000, da=40041000
(XEN) DT: parent translation for:<3> 00000000<3> ff800000<3>
(XEN) DT: with offset: 41000
(XEN) DT: one level translation:<3> 00000000<3> ff841000<3>
(XEN) DT: reached root node
(XEN) DT: ** translation for device /soc/interrupt-controller@40041000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 40042000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=40042000
(XEN) DT: default map, cp=7c000000, s=2000000, da=40042000
(XEN) DT: default map, cp=40000000, s=800000, da=40042000
(XEN) DT: parent translation for:<3> 00000000<3> ff800000<3>
(XEN) DT: with offset: 42000
(XEN) DT: one level translation:<3> 00000000<3> ff842000<3>
(XEN) DT: reached root node
(XEN) DT: ** translation for device /soc/interrupt-controller@40041000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 40044000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=40044000
(XEN) DT: default map, cp=7c000000, s=2000000, da=40044000
(XEN) DT: default map, cp=40000000, s=800000, da=40044000
(XEN) DT: parent translation for:<3> 00000000<3> ff800000<3>
(XEN) DT: with offset: 44000
(XEN) DT: one level translation:<3> 00000000<3> ff844000<3>
(XEN) DT: reached root node
(XEN) DT: ** translation for device /soc/interrupt-controller@40041000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 40046000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=40046000
(XEN) DT: default map, cp=7c000000, s=2000000, da=40046000
(XEN) DT: default map, cp=40000000, s=800000, da=40046000
(XEN) DT: parent translation for:<3> 00000000<3> ff800000<3>
(XEN) DT: with offset: 46000
(XEN) DT: one level translation:<3> 00000000<3> ff846000<3>
(XEN) DT: reached root node
(XEN) dt_device_get_raw_irq: dev=/soc/interrupt-controller@40041000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=1 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000001 0x00000009...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) GICv2 initialization:
(XEN)         gic_dist_addr=00000000ff841000
(XEN)         gic_cpu_addr=00000000ff842000
(XEN)         gic_hyp_addr=00000000ff844000
(XEN)         gic_vcpu_addr=00000000ff846000
(XEN)         gic_maintenance_irq=25
(XEN) GICv2: 256 lines, 4 cpus, secure (IID 0200143b).
(XEN) XSM Framework v1.0.0 initialized
(XEN) Initialising XSM SILO mode
(XEN) Using scheduler: SMP Credit Scheduler rev2 (credit2)
(XEN) Initializing Credit2 scheduler
(XEN)  load_precision_shift: 18
(XEN)  load_window_shift: 30
(XEN)  underload_balance_tolerance: 0
(XEN)  overload_balance_tolerance: -3
(XEN)  runqueues arrangement: socket
(XEN)  cap enforcement granularity: 10ms
(XEN) load tracking window length 1073741824 ns
(XEN) Allocated console ring of 32 KiB.
(XEN) CPU0: Guest atomics will try 6 times before pausing the domain
(XEN) Bringing up CPU1
- CPU 00000001 booting -
- Current EL 00000008 -
- Initialize CPU -
- Turning on paging -
- Ready -
(XEN) CPU1: Guest atomics will try 5 times before pausing the domain
(XEN) CPU 1 booted.
(XEN) Bringing up CPU2
- CPU 00000002 booting -
- Current EL 00000008 -
- Initialize CPU -
- Turning on paging -
- Ready -
(XEN) CPU2: Guest atomics will try 5 times before pausing the domain
(XEN) CPU 2 booted.
(XEN) Bringing up CPU3
- CPU 00000003 booting -
- Current EL 00000008 -
- Initialize CPU -
- Turning on paging -
- Ready -
(XEN) CPU atomicsy 5 time pausingain
(XE booted.Brought s
(XEN)tualisatbled
(X 44-bit  44-bit -bit VMI P2M: 4 ith orde, VTCR 04
(XEN)cpu 0 toe 0
(XEt cpu one, activXEN) Add1 to run
                                   (XEN) Au 2 to r0
(XEN)cpu 3 toe 0
(XEnatives:g with a 00000008 -> 000d4ccc
( LOADING0 ***
(ding d0 rom boot@ 00000000
rant tab: 0x000000-0x000000o(XEN) BANK[0] 0x000000-0x000000 ((XEN) BA00000030x0000003(128MB)
(XEe /
(XEq_number
           (XEN) /ough = 1 0
(XENif / is he IOMMU it
(XEq_number
           (XEN) hliases
_irq_num=/aliase /aliaserough = = 0
(XE if /alibehind t and addN) dt_ir: dev=/a(XEN) haosen
(Xrq_numbechosen
hosen pah = 1 na
                (XEN) C/chosen d the IOadd it
_irq_num=/chosenhandle /odule@2b(XEN)   (matched handle d-memorydt_irq_nev=/reseory
(XErved-memthrough r = 0
(ck if /rmemory i the IOMdd it
(irq_numb/reserve
(XEN) reservedlinux,cm dt_irq_dev=/resmory/lin(XEN) /rmemory/l passthr naddr =) Check rved-memx,cma isthe IOMMd it
(Xrq_numbereservedlinux,cm handle -zones
_irq_num=/therma
                (XEN) /zones pah = 1 na
                                       (XEN) C/thermals behindMU and aXEN) dt_er: dev=-zones
ndle /thnes/cpu-
                (XEN) dmber: deal-zonesrmal
(Xrmal-zonhermal pgh = 1 n
(XEN)  /thermacpu-therehind thand add ) dt_irq dev=/thnes/cpu-
                                                              (XEN) hhermal-z-thermal(XEN) dtber: devl-zones/mal/trip /thermacpu-thers passth1 naddr N) Checkrmal-zonhermal/tbehind t and addN) dt_ir: dev=/tones/cpu/trips
ndle /thnes/cpu-trips/cp(XEN) dtber: devl-zones/mal/tripit
(XENal-zonesrmal/tririt pass= 1 naddXEN) Chehermal-z-thermalpu-crit d the IOadd it
_irq_num=/thermacpu-thers/cpu-cr) handlel-zones/mal/cool
(XEN) umber: dmal-zoneermal/cops
(XENal-zonesrmal/coos passth1 naddr N) Checkrmal-zonhermal/caps is be IOMMU it
(XEN_number:ermal-zothermal/maps
t_irq_nuv=/soc
oc passt 1 naddrEN) Checc is behIOMMU an
(XEN) umber: d
              (XEN) hoc/timer0
(XEN)number: /timer@7
                     (XEN)  nterruptrty
(XEpec=0 in
           (XEN)  3 intlenN) dt_de_raw_irqoc/timer0, index)  usingupts' pr(XEN)  i intlen=)  intsilen=12
_irq_mapr=/soc/i-control1000,int00000000040...],=3
(XEN_map_rawsoc/intentroller0, size=  -> add
                                            (XEN)  t !
(XEvice_get: dev=/s@7e00300=1
(XEN 'interroperty
ntspec=012
(XENze=3 int(XEN) dt_raw: panterruptler@4004spec=[0x 0x00000ointsize) dt_irq: ipar=/rrupt-co@40041003
-> got iN) dt_de_raw_irqoc/timer0, index)  usingupts' pr(XEN)  i intlen=)  intsilen=12
_irq_mapr=/soc/i-control1000,int00000000042...],=3
(XEN_map_rawsoc/intentroller0, size=  -> add
                                            (XEN)  t !
(XEvice_get: dev=/s@7e00300=3
(XEN 'interroperty
ntspec=012
(XENze=3 int(XEN) dt_raw: panterruptler@4004spec=[0x 0x00000ointsize) dt_irq: ipar=/rrupt-co@40041003
-> got iN) /soc/003000 pgh = 1 n
(XEN)  /soc/ti3000 is he IOMMU it
(XEq_numberoc/timer0
(XEN)'interruperty
(tspec=0 2
(XEN)e=3 intlXEN) dt_et_raw_i/soc/tim000, indEN)  usirrupts'
(XEN) =0 intleEN)  intntlen=12dt_irq_mpar=/socpt-contr041000,i0x00000000040...ze=3
(Xrq_map_r=/soc/incontroll000, sizN)  -> a1
(XEN) it !
(device_grq: dev=er@7e003ex=0
(Xng 'inteproperty intspecn=12
(Xsize=3 i
(XEN) ap_raw: /interruoller@40ntspec=[00 0x000],ointsiEN) dt_iaw: iparterrupt-er@40041e=3
(XEddrsize=  -> gotXEN)   -
(XEN) e_get_raev=/soc/003000,
                              (XEN)  nterruptrty
(XEpec=0 in
t_irq_mapar=/socpt-contr041000, (XEN)  -ze=1upt-co@4004100c=[0x00000000041tsize=3
intsize==12propeN)  intstlen=12@7eindex=1
(XEq_map_rasoc/intentroller0,intspe00000 0x...],oin
                                                   (XEN) dp_raw: i/interruoller@40size=3
> addrsiEN)  ->
(XEN)  97
(XEvice_get: dev=/s@7e00300=2
(XEN 'interroperty
ntspec=012
(XENze=3 int(XEN) dt_raw: panterruptler@4004spec=[0x 0x00000ointsize) dt_irq: ipar=/rrupt-co@40041003
-> got iN) dt_de_raw_irqoc/timer0, index)  usingupts' pr(XEN)  i intlen=)  intsilen=12
_irq_mapr=/soc/i-control1000,int00000000042...],=3
(XEN_map_rawsoc/intentroller0, size=  -> add
                                            (XEN)  t !
(XERQ: 98
_device_irq: devmer@7e00dex=3
(ing 'int propert  intspeen=12
(tsize=3 2
(XEN)map_raw:c/interrroller@4intspec=000 0x00.],ointsXEN) dt_raw: ipanterruptler@4004ze=3
(Xaddrsize)  -> go(XEN) dtget_raw_=/soc/ti3000, inXEN)  userrupts'y
(XEN)c=0 intlXEN)  inintlen=1 dt_irq_ par=/soupt-cont0041000,[0x00000000043..ize=3
(irq_map_r=/soc/i-control1000, siEN)  -> =1
(XENt it !
- IRQ: 9 DT: ** ion for soc/time00 **
( bus is (na=1, n/soc
(Xtranslatess:<3> <3>
(XEarent buault (na) on /
: walkin...
(XEefault me000000,00, da=7
T: reachnode               (XEN) Dt translr:<3> 00> fe0000XEN) DT:fset: 30) DT: ontranslat000000003000<3>
t_irq_nuv=/soc/t000Type=5
intspec==3rroperty
(XENze=3 intXEN) dt_et_raw_i/soc/txp0, index)  usingupts' pr(XEN)  i intlen=  intsizen=3
(Xrq_map_r/soc/intontrolle00,intsp000000 0b...],oi
-> addrsXEN)  ->!nterrroller@4 size=3
(XEN)p@7e0040hrough = = 1
(Xk if /so004000 i the IOMdd it
(irq_numb/soc/txp0
(XEN)'interruperty
(tspec=0
intsize==3ntleN) dt_de_raw_irqoc/txp@7 index=0 using 'ts' propEN)  intntlen=3
(XEN_map_rawoc/intertroller@,intspec0000 0x0..],oint(XEN) dt_raw: ipinterrupller@400ize=3
( addrsizN)  -> g
                 (XEN) d_get_rawv=/soc/t000, indEN)  usirrupts'
(XEN) =0 intleN)  intstlen=3
_irq_mapr=/soc/i-control1000,int0000000004b...],=3
(XEN_map_rawsoc/intentroller0, size=  -> add
                                            (XEN)  t !
T: ** trn for dec/txp@7e*
(XEN) is defa1, ns=1)
(XEN) slating <3> 7e00
                      (XEN) Dt bus is (na=2,  /
(XENlking ra
            (XEN) Dlt map, 000, s=1da=7e004N) DT: panslatio> 000000000000<3 DT: wit: 4000
: one leslation:0000<3> <3>
(XEeached r
(XEN) : 00fe000fe00402e=5
(XEe /soc/c101000
_irq_num=/soc/cp01000
(c/cprman0 passth1 naddr N) Check/cprman@ is behiOMMU and
                                                         (XEN) dmber: deprman@7e(XEN) DTnslationice /soc7e101000N) DT: bfault (n1) on /s) DT: trg addres101000<3 DT: paris defau, ns=1) EN) DT: ranges.. DT: def, cp=7e0=180000001000
( parent ion for:0000<3> <3>
(XEith offs00
(XENe level ion:<3> <3> fe10
                            (XEN) Ded root EN)   - fe10100003000 P2
                                                                   (XEN) hoc/mailb880
(XEq_numberoc/mailb880
intspec==3rroperty
(XENze=3 intXEN) dt_et_raw_i/soc/mai0b880, i(XEN)  uterruptsty
(XENec=0 intXEN)  inintlen=3dt_irq_mpar=/socpt-contr041000,i0x00000000021...ze=3
(Xrq_map_r=/soc/incontroll000, sizN)  -> a1
(XEN) it !
(c/mailbo80 passt 1 naddrEN) Checc/mailbo80 is be IOMMU at
(XEN)number: /mailbox0
(XEN)'interruperty
(tspec=0
(XEN) =3 intleN) dt_de_raw_irqoc/mailb880, indEN)  usirrupts'
(XEN) =0 intleN)  intstlen=3
_irq_mapr=/soc/i-control1000,int00000000021...],=3
(XEN_map_rawsoc/intentroller0, size=  -> add
                                            (XEN)  t !
(XEvice_get: dev=/sox@7e00bex=0
(Xng 'inteproperty intspecn=3
(XEize=3 in(XEN) dt_raw: panterruptler@4004spec=[0x 0x00000ointsize) dt_irq: ipar=/rrupt-co@40041003
-> got iN)   - I(XEN) DTnslationice /soc@7e00b88EN) DT: efault (=1) on /N) DT: tng addree00b880<) DT: pa is defa2, ns=1)XEN) DT: ranges.) DT: dep, cp=7es=18000000b880
: parenttion for00000<3>0<3>
(Xwith off0
(XEN) level ton:<3> 03> fe00b(XEN) DTd root nN)   - Me00b880 b8c0 P2M(XEN) hac/gpio@7
                                                                                     (XEN) dmber: depio@7e20EN)  usirrupts'
(XEN) =0 intleEN)  intntlen=12dt_devicw_irq: dgpio@7e2ndex=0
sing 'in' proper)  intsplen=12
ntsize=312
(XEN_map_rawoc/intertroller@,intspec0000 0x0..],oint(XEN) dt_raw: ipinterrupller@400ize=3
( addrsizN)  -> g
                 (XEN) d_get_rawv=/soc/g0000, inXEN)  userrupts'y
(XEN)c=0 intlXEN)  inintlen=1 dt_irq_ par=/soupt-cont0041000,[0x00000000072..ize=3
(irq_map_r=/soc/i-control1000, siEN)  -> =1
(XENt it !
_device_irq: devio@7e200ex=2
(Xng 'inteproperty intspecn=12
(Xsize=3 i
(XEN) ap_raw: /interruoller@40ntspec=[00 0x000],ointsiEN) dt_iaw: iparterrupt-er@40041e=3
(XEddrsize=  -> gotXEN) dt_et_raw_i/soc/gpi00, indeN)  usinrupts' p
t_irq_maar=/soc/t-contro41000,inx00000000074...]e=3                (XEN)  0 intlenN)  intstlen=12
(XEq_map_ra/soc/intontrolle00, size)  -> ad
(XEN) it !
intsize==12propeN)  intstlen=12 ifio@7e200ehind thand add ) dt_irq dev=/soe200000
(XEvice_get: dev=/s7e2000000
(XEN)'interruperty
(tspec=0 2
(XEN)e=3 intlXEN) dt_raw: parterrupt-er@40041pec=[0x00x000000intsize= dt_irq_ ipar=/srupt-con40041000
(XEN) size=1
> got it) dt_devraw_irq:c/gpio@7 index=0 using 'ts' propEN)  intntlen=12 intsizen=12
(Xrq_map_r/soc/intontrolle00,intsp000000 01...],oi
-> addrsXEN)  ->!nterrroller@4 size=3
(XEN): 145
(device_grq: dev=o@7e2000x=1
intspec==12roperty
(XEize=3 in
           (XEN) dp_raw: pinterrupller@400tspec=[00 0x0000,ointsizN) dt_irw: ipar=2... 1...
(XEN) *** Seriato DOM0 TRL-a' tes to swut)
(XEN) Freed 344kBmory.
(XEN) d0v0: vGICDled wordx000000fto ICACTXEN) d0v: unhand write 0fffffff IVER8
0v0: vGIndled wo 0x00000f to ICAT(XEN) d0D: unhand write ffffffffTIVER16
(XEN) ICD: unhord writ00ffffffACTIVER2 d0v0: vhandled te 0x000fff to I28
(XENvGICD: u word wr0000ffffICACTIVE 0.00000ng Linuxical CPU00000 [03]
[  00] Linun 5.6.1-(root@2f8d) (gcc 8.3.0 (.3.0)) #u Apr 9  UTC 202 0.00000ne modelrry Pi 4
[    ] Xen 4.rt found0.000000etting Eeters fr
[    0 efi: UEound.
00000] Rmemory: CMA memoat 0x00000000, siB
[  00] OF:  mem: ind node l, compatshared-d
[    0 NUMA: Nonfigurand
000000] DE_DATA 3ed92c0-ff]00-0x000fffff]
[ 000] Zon:
[   0]   DMAem 0x00000000-0x37ffffff 0.0000032    em   0.000ormal   [    0.0ovable zt for ea
[    0 Early mde range 0.00000e   0: [00000010x0000000f]
[  00]   no[mem 0x00000000-0037ffff   0.000tmem set0 [mem 001000000000037ff[    0.0sci: pro conduitfrom DT.0.000000PSCIv1.1d in fir
                                                                                                                                   [    0.psci: Usdard PSCunction    0.000i: Trustgration ired
.000000] Embeddees/cpu s192 d3178
[   0] Detec I-cache
[    ] CPU fedetectedctor har
                             [    0.CPU feattected: ive Stor Disable0.000000atures: : ARM er19367
00000] Boneliststy group Total p9024
000000] ache hasentries:order: 7 bytes,
.000000]o-init: f, heap f, heap 262144linear)
[    ] MemoryK/524288ble (127el code,wdata, 6ata, 467 758K bsK reserv6K cma-r
[    ] randomndom_u64from __ke_create578 withit=0
[0000] SLign=64, 3, MinOb CPUs=4,
.000000]CU restrPUs from=480 to ds=4.
00000] rcalculat of schelistments 10 jif[    0.0cu: Adjuometry fanout_ler_cpu_id   0.000IRQS: 64s: 64, pted irqs   0.000h_timer:mer(s) rt 54.00M).
[  00] cloc arch_syr: mask:ffffffffcles: 0x6, max_i44079520
[    0 sched_c bits atresoluti wraps e80465111    0.00nsole: cmmy devi
[    ] printke [hvc0]
[    ] Calibrlay loopd), valuated usi frequen.00 Bogoj=540000 0.00164ax: defa68 minim
[    0 LSM: Serameworkizing
01872] Mhe hash tries: 1er: 1, 8s, linea  0.0019tpoint-ch table  1024 (o 8192 byear)
[4442] xetable: Gles usinn 1 layo  0.0045t table zed
[ 563] xen Using Fd ABI
04648] Xializing[    0.0cu: Hier SRCU imtion.
08326] Eces willavailabl  0.0086 Bringinondary C
009466] tializind writ00ffffffACTIVER0.009320]d PIPT In CPU1
                [    0.CPU1: Boondary p 0x00000x410fd08N) d0v2:unhandlerite 0x0fffff toER0
(XE vGICD: d word w00000fff ICACTIV  0.0104cted PIPe on CPU 0.01052initiali2
[   6] CPU2:secondarsor 0x00 [0x410f[    0.0etected ache on     0.01n: initicpu3
[1433] CPed seconcessor 0003 [0x4
[    ] smp: Bp 1 node
.011799]tures: d 32-bit ort.
[ 828] CPUs: detec32 instr
[    0 CPU: Al started
[    0 alternaatching ode
[ 718] devnitializ  0.0482stered cier emulndler
48363] Rd setendon handl  0.0483R disablo lack o
                                                [    0.clocksoufies: maffffff ms: 0xfffax_idle_26044627
[    ] futex le entri (order:6 bytes,
[    ] pinctrinitialitrl subs[    0.0hermal_sstered tovernor are'
[1917] ths: Regisermal gobang_ban  0.0519mal_sys:red therrnor 'st
.052195] presentlid.el govern_space'
[2879] NEtered pramily 160.054855reallocaKiB poolmic allo
[    0 audit: zing netsys (dis
057478] tlb_xen:: only allocate  softwarit: t audit(0 state=ied audit=0 res=10.056893akpoint: breakpo4 watchpisters.
.079304] registe MiB pagpre-allopages   0.060ial: AMBUART dri   0.079eTLB reg1.00 GiBze, pre-d 0 page 0.07926LB regis.0 MiB p, pre-al0 pages
79337] HegistereiB page e-allocages
[ 021] cry_cpu_qle 1000
00705] Aerpreterd.
[  34] xen: Initiallloon dr    0.10mmu: Defain typeated
02342] voaded
02784] System ind
[   4] usbcostered nface dris
[   0] usbcostered nface dri
[    0 usbcoreered newdriver u  0.1036phy_gene phy supnot foun dummy r
[    ] pps_coxPPS APIregister  0.1040core: Soer. 5.3.right 20Rodolfo  <giomet.it>
[4065] PTsupport ed
.105626]l: Initi.0
[    0 NetLabein hash 28
[  81] NetLrotocolsELED CIPIPSO
[5761] Ne unlabelic allowfault
06486] cce: Switclocksou_sys_cou    0.10S: Disk quot_6.6  0.1068 Dquot-ch table  512 (or096 byte  0.1070 PnP ACPled
.119490]ablishedble entr6 (order68 bytes)inear)
[   7] TCP b table e4096 (or65536 byear)
[9647] TCtables cd (estab096 bind
                                 [    0.UDP hashntries: er: 1, 8s, linea  0.1198Lite hasentries:der: 1, es, line   0.120: Registtocol fa
                                                                                                                                        [    0.PCI: CLS, defaul    0.12m [1]: Hnot avai[    0.1nitialis trusteds
[   4] workiimestamp max_ordcket_ord    0.14ud: load  0.1437shfs: ve0 (2009/hillip L
                                                                                    [    0.9p: Inst9fs 9p20system s
                                                                                                                   [    0.Key typeric regi
.168046]ayer SCSc (bsg) ersion 0d (major[    0.1o schedueadline ed                                                                        [    0.Asymmetrarser 'xistered
[  92] io s kyber rd
[   6] io scbfq regi
174686] e fd5000      ME000000..ffff -> 0000trollerversion:    0.17cm-pcie .pcie: hge /scb/00000 ra[    0.1rcm-pcie0.pcie:  range f /scb/pc000, usi00-ff]
[4744] brfd500000 IB MEM 0000..0xff -> 0x00
[  23] brcm500000.pk up, 5 (SSC)
28888] b fd50000PCI hostto bus 0
                                [    0.pci_bus  root buce [bus
229031] :00:00.02711] tyass 0x06    0.22i 0000:0PME# suprom D0 DXEN) phy6:d0v2 P cmd=25:lementedphysdev.2 PHYSDE15: not ted)
.231562]0:01:00.:3483] tlass 0x0[    0.2ci 0000: reg 0x10x00000000fff 64    0.23i 0000:0PME# suprom D0 D(XEN) ph16:d0v2 P cmd=15plemente0.23197200:01:00ed to adthrough SI-X mig
[    ] pci_bu1: busn_s 01-ff]updated [    0.2ci 0000: BAR 14:d [mem 000-0x600
234096] :00:00.0idge to  [mem 000-0x6064bit]
[    ] pci 00.0:   brdow [mem0000-0x6]
[   8] pciep:00:00.0ng devic-> 0002)0.234489rt 0000: PME: Siwith IRQ   0.234eport 00.0: AER: with IR    0.23i 0000:0enabling(0000 ->
                                                                                                                                    [    0.xen:xen_Event-chvice ins
                                                                                                                                                                   [    0.Initiali pvcallsd driver0.249745: 8250/1ver, 32 RQ sharied
.261402]fo: Unabtect cacrchy for
                                [    0.brd: moded
.311466]nitializion: 8.4:1/proto
[    ] drbd:
[    ] drbd: ed as blce major    0.31m2835-po835-powecom BCM2r domain
[    ] wireguowedips ts: pass0.316127ard: noner self-ass
.689175]t fd5800net: usim Ethern:[    0.6ireguardard 1.0.. See wward.com rmation.0.687034ard: CopC) 2015-on A. Do<Jason@z>. All Rserved.
                                [    0.bcmgenet0.etherned to gelock
[9265] bcd580000.: GENET : 0x00000.689303et fd580rnet: faget enetck
[  37] bcmg80000.etfailed tet-eee c    0.70bphy: bcII bus:
                                                           [    0.786576] uno unimac9: BroadAC MDIO    0.787_netfronalising ual ethever
[ 555] xhc00:01:00 Host Co
788154]  0000:01cc param41eb hci 0x100 q00000000
[    ] usb usUSB devi, idVend idProdu bcdDevi
[    ] usb usUSB devigs: Mfr=ct=2, Seer=1
[8778] usProduct:st Contr[    0.7sb usb1:turer: L.1-defauhcd
[ 840] usberialNum0:01:00. 0.78937-0:1.0: found
89428] h.0: 1 poted
[ 841] xhc00:01:00 Host Co
789929]  0000:01ost supp 3.0 Supsignember 2
[    0 usb usbn't knoworithms for thisisabling[    0.7sb usb2: device dVendor=Product=dDevice=[    0.7sb usb2: device  Mfr=3, 2, Seria1
[   4] usb uduct: xHControll  0.7902usb2: Maer: Linudefault
790786] 1.0: USBndber1:00.0
[  48] hub  4 portsd
.791866]v: PS/2 vice comall mice0.7944265-wdt bct: Broad835 watcer
[  24] xen_wdt: ini (timeouowayout=  0.7958i: Securl Host Cr Interfer
[  71] sdhcight(c) ssman
.801341]: kernele is -00  0.8013: Registtocols ( 0.80145 Connect table cd (size=mory=64Kver usbh  0.7982id: USB  driver
                                                                                        [    0.IPVS: ipd.
[  61] ipipnd MPLS 4 tunneler
[  92] gre:r IPv4 dexor dri   0.802_CLUSTERterIP Ve8 loadedfully
805409] istered  family   0.8054 Registeocol fam
                                                [    0.Bridge fng regis[    0.8021q: 80N Suppor
                                                                                               [    0.9pnet: Ig 9P2000
[    ] Initiaen trans 9pfs
.806449] compile09 certi
[    0 Loaded rt 'Builutogenernel key:043d3d2a8e8facd1d'
[  39] zswad using /zbud
11706] K._fscrypered
[1732] Kefscrypt ed
[  54] Key rypt-prog regist    0.81201000.styAMA0 axfe20100 15, bas 0) is aev2
[ 207] seral0: ttyyAMA0 re
[    ] Unablele kerne requestual addr00000026    0.82m abort [    0.8 ESR = 04
[   3]   EC DABT (cu), IL =
[    0   SET == 0
.821202]0, WnR =  0.821200000002ser addractive_mpper00004
[1258] Inrror: Oo0004 [#1[    0.8odules l:
[   3] CPU: 4 Comm: 3:1 Not 5.6.1-de
[    ] Hardwa RaspberModel B     0.82rkqueue:deferredork_func0.821421: 600000 daif -P
[    ] pc : xlb_free_+0x198/0    0.82 : dma_fs+0x98/0   0.821: ffff8070
[  27] x29:011b2b9700000000
[    ] x27: 00001000 f000033b
821700] f000031c6: ffff8288  [    0.x25: 00000001 x2000f4000    0.823: 00000000 x22:00000000  0.8216 ffff8000 x20: f179b548 0.821672fff00003x18: 00000001
[1728] x116031116 0010a5b4
[  56] x13:0000003a00000000
[    ] x11: 00000000 00000000
821922] 00000002 : 00000b40  [    0.x9 : fff2b840 x800033a44    0.82 : ffff0480 x6 :026d5f01  0.8218 00000000 x4 : 00000000 0.8218950000000fx2 : fff00000
[1951] Ca:
[   3]  xen_free_coh198/0x1d 0.82200free_att0xd0
[2027]  rare_propt+0x140/[    0.8rpi_firmperty+0x
[    0  rpi_firobe+0xf
[    0  platforobe+0x5
.822254]_initialx10/0x180.822279robe_dev/0x980.822153r_probe_xdc/0x13 0.82217vice_atter+0x88/[    0.8bus_for_+0x78/0x  0.8222evice_at4/0x158
22303]  _probe_w+0x88/0x  0.8223cess_one1f0/0x3c 0.82235er_threa0x570
22379]  0x118/0x   0.822t_from_f/0x18
22433] Ccfc00 f237ae400  (f86268    0.82-[ end te5095aae--
[    1.156520] usew high-B device2 using
[    1.189496] usew USB dund, idV09, idPr31, bcdD.20
189587]  Product Hubgs: Mfduct=1, mber=0
[0924] hu0: USB h
[    ] hub 1- ports d
[    1.516519] us new lowSB devic 3 usingd
[    1.658997] us New USBfound, i03ee, id5601, bc 1.00
59048] u: New US strings ProductalNumber  1.65901-1.3: PMitsumi oard
[9115] us Manufacitsumi E
[    1 input: Electric USB Key /devicerm/scb/fpcie/pci0000:00:0:01:00.-1/1-1.3.0/0003:1.0001/iut0
[    1.737124] hic 0003:0.0001: iraw0: US.00 Keybtsumi Elitsumi Uard] on :01:00.0ut0

^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-04 20:54               ` Roman Shaposhnik
@ 2020-05-05  3:52                 ` Stefano Stabellini
  2020-05-05  5:36                   ` Roman Shaposhnik
  0 siblings, 1 reply; 45+ messages in thread
From: Stefano Stabellini @ 2020-05-05  3:52 UTC (permalink / raw)
  To: Roman Shaposhnik
  Cc: Stefano Stabellini, Julien Grall, minyard, jeff.kubascik,
	Julien Grall, xen-devel, Stefano Stabellini

On Mon, 4 May 2020, Roman Shaposhnik wrote:
> Hi Julien,
> 
> thank for your patch -- just like Corey I tried it out and it seems to
> work fine and gets
> me further. At this point, I'm pretty sure I'm past initial
> bootstrapping issues and into
> what can be basically described as Xen DMA issue of some kind (so I'm
> pretty sure
> I will need Stefano's help to debug this further). I'm attaching
> verbose logs, but the
> culprit seems to be:
> 
> [    2.534292] Unable to handle kernel paging request at virtual
> address 000000000026c340
> [    2.542373] Mem abort info:
> [    2.545257]   ESR = 0x96000004
> [    2.548421]   EC = 0x25: DABT (current EL), IL = 32 bits
> [    2.553877]   SET = 0, FnV = 0
> [    2.557023]   EA = 0, S1PTW = 0
> [    2.560297] Data abort info:
> [    2.563258]   ISV = 0, ISS = 0x00000004
> [    2.567208]   CM = 0, WnR = 0
> [    2.570294] [000000000026c340] user address but active_mm is swapper
> [    2.576783] Internal error: Oops: 96000004 [#1] SMP
> [    2.581784] Modules linked in:
> [    2.584950] CPU: 3 PID: 135 Comm: kworker/3:1 Not tainted 5.6.1-default #9
> [    2.591970] Hardware name: Raspberry Pi 4 Model B (DT)
> [    2.597256] Workqueue: events deferred_probe_work_func
> [    2.602509] pstate: 60000005 (nZCv daif -PAN -UAO)
> [    2.607431] pc : xen_swiotlb_free_coherent+0x198/0x1d8
> [    2.612696] lr : dma_free_attrs+0x98/0xd0
> [    2.616827] sp : ffff800011db3970
> [    2.620242] x29: ffff800011db3970 x28: 00000000000f7b00
> [    2.625695] x27: 0000000000001000 x26: ffff000037b68410
> [    2.631129] x25: 0000000000000001 x24: 00000000f7b00000
> [    2.636583] x23: 0000000000000000 x22: 0000000000000000
> [    2.642017] x21: ffff800011b0d000 x20: ffff80001179b548
> [    2.647461] x19: ffff000037b68410 x18: 0000000000000010
> [    2.652905] x17: ffff000035d66a00 x16: 00000000deadbeef
> [    2.658348] x15: ffffffffffffffff x14: ffff80001179b548
> [    2.663792] x13: ffff800091db37b7 x12: ffff800011db37bf
> [    2.669236] x11: ffff8000117c7000 x10: ffff800011db3740
> [    2.674680] x9 : 00000000ffffffd0 x8 : ffff80001071e980
> [    2.680124] x7 : 0000000000000132 x6 : ffff80001197a6ab
> [    2.685568] x5 : 0000000000000000 x4 : 0000000000000000
> [    2.691012] x3 : 00000000f7b00000 x2 : fffffdffffe00000
> [    2.696465] x1 : 000000000026c340 x0 : 000002000046c340
> [    2.701899] Call trace:
> [    2.704452]  xen_swiotlb_free_coherent+0x198/0x1d8
> [    2.709367]  dma_free_attrs+0x98/0xd0
> [    2.713143]  rpi_firmware_property_list+0x1e4/0x240
> [    2.718146]  rpi_firmware_property+0x6c/0xb0
> [    2.722535]  rpi_firmware_probe+0xf0/0x1e0
> [    2.726760]  platform_drv_probe+0x50/0xa0
> [    2.730879]  really_probe+0xd8/0x438
> [    2.734567]  driver_probe_device+0xdc/0x130
> [    2.738870]  __device_attach_driver+0x88/0x108
> [    2.743434]  bus_for_each_drv+0x78/0xc8
> [    2.747386]  __device_attach+0xd4/0x158
> [    2.751337]  device_initial_probe+0x10/0x18
> [    2.755649]  bus_probe_device+0x90/0x98
> [    2.759590]  deferred_probe_work_func+0x88/0xd8
> [    2.764244]  process_one_work+0x1f0/0x3c0
> [    2.768369]  worker_thread+0x138/0x570
> [    2.772234]  kthread+0x118/0x120
> [    2.775571]  ret_from_fork+0x10/0x18
> [    2.779263] Code: d34cfc00 f2dfbfe2 d37ae400 8b020001 (f8626800)
> [    2.785492] ---[ end trace 4c435212e349f45f ]---
> [    2.793340] usb 1-1: New USB device found, idVendor=2109,
> idProduct=3431, bcdDevice= 4.20
> [    2.801038] usb 1-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
> [    2.808297] usb 1-1: Product: USB2.0 Hub
> [    2.813710] hub 1-1:1.0: USB hub found
> [    2.817117] hub 1-1:1.0: 4 ports detected
> 
> This is bailing out right here:
>      https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/firmware/raspberrypi.c?h=v5.6.1#n125
> 
> FYIW (since I modified the source to actually print what was returned
> right before it bails) we get:
>    buf[1] == 0x800000004
>    buf[2] == 0x00000001
> 
> Status 0x800000004 is of course suspicious since it is not even listed here:
>     https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/include/soc/bcm2835/raspberrypi-firmware.h#n14
> 
> So it appears that this DMA request path is somehow busted and it
> would be really nice to figure out why.

You have actually discovered a genuine bug in the recent xen dma rework
in Linux. Congrats :-)

I am doing some guesswork here, but from what I read in the thread and
the information in this email I think this patch might fix the issue.
If it doesn't fix the issue please add a few printks in
drivers/xen/swiotlb-xen.c:xen_swiotlb_free_coherent and please let me
know where exactly it crashes.


diff --git a/include/xen/arm/page-coherent.h b/include/xen/arm/page-coherent.h
index b9cc11e887ed..ff4677ed9788 100644
--- a/include/xen/arm/page-coherent.h
+++ b/include/xen/arm/page-coherent.h
@@ -8,12 +8,17 @@
 static inline void *xen_alloc_coherent_pages(struct device *hwdev, size_t size,
 		dma_addr_t *dma_handle, gfp_t flags, unsigned long attrs)
 {
+	void *cpu_addr;
+	if (dma_alloc_from_dev_coherent(hwdev, size, dma_handle, &cpu_addr))
+		return cpu_addr;
 	return dma_direct_alloc(hwdev, size, dma_handle, flags, attrs);
 }
 
 static inline void xen_free_coherent_pages(struct device *hwdev, size_t size,
 		void *cpu_addr, dma_addr_t dma_handle, unsigned long attrs)
 {
+	if (dma_release_from_dev_coherent(hwdev, get_order(size), cpu_addr))
+		return;
 	dma_direct_free(hwdev, size, cpu_addr, dma_handle, attrs);
 }
 


^ permalink raw reply related	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-05  3:52                 ` Stefano Stabellini
@ 2020-05-05  5:36                   ` Roman Shaposhnik
  2020-05-05 22:34                     ` Stefano Stabellini
  0 siblings, 1 reply; 45+ messages in thread
From: Roman Shaposhnik @ 2020-05-05  5:36 UTC (permalink / raw)
  To: Stefano Stabellini
  Cc: Julien Grall, minyard, jeff.kubascik, Julien Grall, xen-devel,
	Stefano Stabellini

On Mon, May 4, 2020 at 8:52 PM Stefano Stabellini
<sstabellini@kernel.org> wrote:
>
> On Mon, 4 May 2020, Roman Shaposhnik wrote:
> > Hi Julien,
> >
> > thank for your patch -- just like Corey I tried it out and it seems to
> > work fine and gets
> > me further. At this point, I'm pretty sure I'm past initial
> > bootstrapping issues and into
> > what can be basically described as Xen DMA issue of some kind (so I'm
> > pretty sure
> > I will need Stefano's help to debug this further). I'm attaching
> > verbose logs, but the
> > culprit seems to be:
> >
> > [    2.534292] Unable to handle kernel paging request at virtual
> > address 000000000026c340
> > [    2.542373] Mem abort info:
> > [    2.545257]   ESR = 0x96000004
> > [    2.548421]   EC = 0x25: DABT (current EL), IL = 32 bits
> > [    2.553877]   SET = 0, FnV = 0
> > [    2.557023]   EA = 0, S1PTW = 0
> > [    2.560297] Data abort info:
> > [    2.563258]   ISV = 0, ISS = 0x00000004
> > [    2.567208]   CM = 0, WnR = 0
> > [    2.570294] [000000000026c340] user address but active_mm is swapper
> > [    2.576783] Internal error: Oops: 96000004 [#1] SMP
> > [    2.581784] Modules linked in:
> > [    2.584950] CPU: 3 PID: 135 Comm: kworker/3:1 Not tainted 5.6.1-default #9
> > [    2.591970] Hardware name: Raspberry Pi 4 Model B (DT)
> > [    2.597256] Workqueue: events deferred_probe_work_func
> > [    2.602509] pstate: 60000005 (nZCv daif -PAN -UAO)
> > [    2.607431] pc : xen_swiotlb_free_coherent+0x198/0x1d8
> > [    2.612696] lr : dma_free_attrs+0x98/0xd0
> > [    2.616827] sp : ffff800011db3970
> > [    2.620242] x29: ffff800011db3970 x28: 00000000000f7b00
> > [    2.625695] x27: 0000000000001000 x26: ffff000037b68410
> > [    2.631129] x25: 0000000000000001 x24: 00000000f7b00000
> > [    2.636583] x23: 0000000000000000 x22: 0000000000000000
> > [    2.642017] x21: ffff800011b0d000 x20: ffff80001179b548
> > [    2.647461] x19: ffff000037b68410 x18: 0000000000000010
> > [    2.652905] x17: ffff000035d66a00 x16: 00000000deadbeef
> > [    2.658348] x15: ffffffffffffffff x14: ffff80001179b548
> > [    2.663792] x13: ffff800091db37b7 x12: ffff800011db37bf
> > [    2.669236] x11: ffff8000117c7000 x10: ffff800011db3740
> > [    2.674680] x9 : 00000000ffffffd0 x8 : ffff80001071e980
> > [    2.680124] x7 : 0000000000000132 x6 : ffff80001197a6ab
> > [    2.685568] x5 : 0000000000000000 x4 : 0000000000000000
> > [    2.691012] x3 : 00000000f7b00000 x2 : fffffdffffe00000
> > [    2.696465] x1 : 000000000026c340 x0 : 000002000046c340
> > [    2.701899] Call trace:
> > [    2.704452]  xen_swiotlb_free_coherent+0x198/0x1d8
> > [    2.709367]  dma_free_attrs+0x98/0xd0
> > [    2.713143]  rpi_firmware_property_list+0x1e4/0x240
> > [    2.718146]  rpi_firmware_property+0x6c/0xb0
> > [    2.722535]  rpi_firmware_probe+0xf0/0x1e0
> > [    2.726760]  platform_drv_probe+0x50/0xa0
> > [    2.730879]  really_probe+0xd8/0x438
> > [    2.734567]  driver_probe_device+0xdc/0x130
> > [    2.738870]  __device_attach_driver+0x88/0x108
> > [    2.743434]  bus_for_each_drv+0x78/0xc8
> > [    2.747386]  __device_attach+0xd4/0x158
> > [    2.751337]  device_initial_probe+0x10/0x18
> > [    2.755649]  bus_probe_device+0x90/0x98
> > [    2.759590]  deferred_probe_work_func+0x88/0xd8
> > [    2.764244]  process_one_work+0x1f0/0x3c0
> > [    2.768369]  worker_thread+0x138/0x570
> > [    2.772234]  kthread+0x118/0x120
> > [    2.775571]  ret_from_fork+0x10/0x18
> > [    2.779263] Code: d34cfc00 f2dfbfe2 d37ae400 8b020001 (f8626800)
> > [    2.785492] ---[ end trace 4c435212e349f45f ]---
> > [    2.793340] usb 1-1: New USB device found, idVendor=2109,
> > idProduct=3431, bcdDevice= 4.20
> > [    2.801038] usb 1-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
> > [    2.808297] usb 1-1: Product: USB2.0 Hub
> > [    2.813710] hub 1-1:1.0: USB hub found
> > [    2.817117] hub 1-1:1.0: 4 ports detected
> >
> > This is bailing out right here:
> >      https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/firmware/raspberrypi.c?h=v5.6.1#n125
> >
> > FYIW (since I modified the source to actually print what was returned
> > right before it bails) we get:
> >    buf[1] == 0x800000004
> >    buf[2] == 0x00000001
> >
> > Status 0x800000004 is of course suspicious since it is not even listed here:
> >     https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/include/soc/bcm2835/raspberrypi-firmware.h#n14
> >
> > So it appears that this DMA request path is somehow busted and it
> > would be really nice to figure out why.
>
> You have actually discovered a genuine bug in the recent xen dma rework
> in Linux. Congrats :-)

Nice! ;-)

> I am doing some guesswork here, but from what I read in the thread and
> the information in this email I think this patch might fix the issue.
> If it doesn't fix the issue please add a few printks in
> drivers/xen/swiotlb-xen.c:xen_swiotlb_free_coherent and please let me
> know where exactly it crashes.
>
>
> diff --git a/include/xen/arm/page-coherent.h b/include/xen/arm/page-coherent.h
> index b9cc11e887ed..ff4677ed9788 100644
> --- a/include/xen/arm/page-coherent.h
> +++ b/include/xen/arm/page-coherent.h
> @@ -8,12 +8,17 @@
>  static inline void *xen_alloc_coherent_pages(struct device *hwdev, size_t size,
>                 dma_addr_t *dma_handle, gfp_t flags, unsigned long attrs)
>  {
> +       void *cpu_addr;
> +       if (dma_alloc_from_dev_coherent(hwdev, size, dma_handle, &cpu_addr))
> +               return cpu_addr;
>         return dma_direct_alloc(hwdev, size, dma_handle, flags, attrs);
>  }
>
>  static inline void xen_free_coherent_pages(struct device *hwdev, size_t size,
>                 void *cpu_addr, dma_addr_t dma_handle, unsigned long attrs)
>  {
> +       if (dma_release_from_dev_coherent(hwdev, get_order(size), cpu_addr))
> +               return;
>         dma_direct_free(hwdev, size, cpu_addr, dma_handle, attrs);
>  }

Applied the patch, but it didn't help and after printk's it turns out
it surprisingly crashes right inside this (rather convoluted if you
ask me) if statement:
    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/xen/swiotlb-xen.c?h=v5.6.1#n349

So it makes sense that the patch didn't help -- we never hit that
xen_free_coherent_pages.

Thanks,
Roman.


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-05  5:36                   ` Roman Shaposhnik
@ 2020-05-05 22:34                     ` Stefano Stabellini
  2020-05-06  1:25                       ` Boris Ostrovsky
                                         ` (2 more replies)
  0 siblings, 3 replies; 45+ messages in thread
From: Stefano Stabellini @ 2020-05-05 22:34 UTC (permalink / raw)
  To: Roman Shaposhnik, jgross, boris.ostrovsky
  Cc: peng.fan, Stefano Stabellini, Julien Grall, minyard,
	jeff.kubascik, Julien Grall, xen-devel, Stefano Stabellini

[-- Attachment #1: Type: text/plain, Size: 8252 bytes --]

+ Boris, Jürgen

See the crash Roman is seeing booting dom0 on the Raspberry Pi. It is
related to the recent xen dma_ops changes. Possibly the same thing
reported by Peng here:

https://marc.info/?l=linux-kernel&m=158805976230485&w=2

An in-depth analysis below.


On Mon, 4 May 2020, Roman Shaposhnik wrote:
> > > [    2.534292] Unable to handle kernel paging request at virtual
> > > address 000000000026c340
> > > [    2.542373] Mem abort info:
> > > [    2.545257]   ESR = 0x96000004
> > > [    2.548421]   EC = 0x25: DABT (current EL), IL = 32 bits
> > > [    2.553877]   SET = 0, FnV = 0
> > > [    2.557023]   EA = 0, S1PTW = 0
> > > [    2.560297] Data abort info:
> > > [    2.563258]   ISV = 0, ISS = 0x00000004
> > > [    2.567208]   CM = 0, WnR = 0
> > > [    2.570294] [000000000026c340] user address but active_mm is swapper
> > > [    2.576783] Internal error: Oops: 96000004 [#1] SMP
> > > [    2.581784] Modules linked in:
> > > [    2.584950] CPU: 3 PID: 135 Comm: kworker/3:1 Not tainted 5.6.1-default #9
> > > [    2.591970] Hardware name: Raspberry Pi 4 Model B (DT)
> > > [    2.597256] Workqueue: events deferred_probe_work_func
> > > [    2.602509] pstate: 60000005 (nZCv daif -PAN -UAO)
> > > [    2.607431] pc : xen_swiotlb_free_coherent+0x198/0x1d8
> > > [    2.612696] lr : dma_free_attrs+0x98/0xd0
> > > [    2.616827] sp : ffff800011db3970
> > > [    2.620242] x29: ffff800011db3970 x28: 00000000000f7b00
> > > [    2.625695] x27: 0000000000001000 x26: ffff000037b68410
> > > [    2.631129] x25: 0000000000000001 x24: 00000000f7b00000
> > > [    2.636583] x23: 0000000000000000 x22: 0000000000000000
> > > [    2.642017] x21: ffff800011b0d000 x20: ffff80001179b548
> > > [    2.647461] x19: ffff000037b68410 x18: 0000000000000010
> > > [    2.652905] x17: ffff000035d66a00 x16: 00000000deadbeef
> > > [    2.658348] x15: ffffffffffffffff x14: ffff80001179b548
> > > [    2.663792] x13: ffff800091db37b7 x12: ffff800011db37bf
> > > [    2.669236] x11: ffff8000117c7000 x10: ffff800011db3740
> > > [    2.674680] x9 : 00000000ffffffd0 x8 : ffff80001071e980
> > > [    2.680124] x7 : 0000000000000132 x6 : ffff80001197a6ab
> > > [    2.685568] x5 : 0000000000000000 x4 : 0000000000000000
> > > [    2.691012] x3 : 00000000f7b00000 x2 : fffffdffffe00000
> > > [    2.696465] x1 : 000000000026c340 x0 : 000002000046c340
> > > [    2.701899] Call trace:
> > > [    2.704452]  xen_swiotlb_free_coherent+0x198/0x1d8
> > > [    2.709367]  dma_free_attrs+0x98/0xd0
> > > [    2.713143]  rpi_firmware_property_list+0x1e4/0x240
> > > [    2.718146]  rpi_firmware_property+0x6c/0xb0
> > > [    2.722535]  rpi_firmware_probe+0xf0/0x1e0
> > > [    2.726760]  platform_drv_probe+0x50/0xa0
> > > [    2.730879]  really_probe+0xd8/0x438
> > > [    2.734567]  driver_probe_device+0xdc/0x130
> > > [    2.738870]  __device_attach_driver+0x88/0x108
> > > [    2.743434]  bus_for_each_drv+0x78/0xc8
> > > [    2.747386]  __device_attach+0xd4/0x158
> > > [    2.751337]  device_initial_probe+0x10/0x18
> > > [    2.755649]  bus_probe_device+0x90/0x98
> > > [    2.759590]  deferred_probe_work_func+0x88/0xd8
> > > [    2.764244]  process_one_work+0x1f0/0x3c0
> > > [    2.768369]  worker_thread+0x138/0x570
> > > [    2.772234]  kthread+0x118/0x120
> > > [    2.775571]  ret_from_fork+0x10/0x18
> > > [    2.779263] Code: d34cfc00 f2dfbfe2 d37ae400 8b020001 (f8626800)
> > > [    2.785492] ---[ end trace 4c435212e349f45f ]---
> > > [    2.793340] usb 1-1: New USB device found, idVendor=2109,
> > > idProduct=3431, bcdDevice= 4.20
> > > [    2.801038] usb 1-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
> > > [    2.808297] usb 1-1: Product: USB2.0 Hub
> > > [    2.813710] hub 1-1:1.0: USB hub found
> > > [    2.817117] hub 1-1:1.0: 4 ports detected
> > >
> > > This is bailing out right here:
> > >      https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/firmware/raspberrypi.c?h=v5.6.1#n125
> > >
> > > FYIW (since I modified the source to actually print what was returned
> > > right before it bails) we get:
> > >    buf[1] == 0x800000004
> > >    buf[2] == 0x00000001
> > >
> > > Status 0x800000004 is of course suspicious since it is not even listed here:
> > >     https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/include/soc/bcm2835/raspberrypi-firmware.h#n14
> > >
> > > So it appears that this DMA request path is somehow busted and it
> > > would be really nice to figure out why.
> >
> > You have actually discovered a genuine bug in the recent xen dma rework
> > in Linux. Congrats :-)
> 
> Nice! ;-)
> 
> > I am doing some guesswork here, but from what I read in the thread and
> > the information in this email I think this patch might fix the issue.
> > If it doesn't fix the issue please add a few printks in
> > drivers/xen/swiotlb-xen.c:xen_swiotlb_free_coherent and please let me
> > know where exactly it crashes.
> >
> >
> > diff --git a/include/xen/arm/page-coherent.h b/include/xen/arm/page-coherent.h
> > index b9cc11e887ed..ff4677ed9788 100644
> > --- a/include/xen/arm/page-coherent.h
> > +++ b/include/xen/arm/page-coherent.h
> > @@ -8,12 +8,17 @@
> >  static inline void *xen_alloc_coherent_pages(struct device *hwdev, size_t size,
> >                 dma_addr_t *dma_handle, gfp_t flags, unsigned long attrs)
> >  {
> > +       void *cpu_addr;
> > +       if (dma_alloc_from_dev_coherent(hwdev, size, dma_handle, &cpu_addr))
> > +               return cpu_addr;
> >         return dma_direct_alloc(hwdev, size, dma_handle, flags, attrs);
> >  }
> >
> >  static inline void xen_free_coherent_pages(struct device *hwdev, size_t size,
> >                 void *cpu_addr, dma_addr_t dma_handle, unsigned long attrs)
> >  {
> > +       if (dma_release_from_dev_coherent(hwdev, get_order(size), cpu_addr))
> > +               return;
> >         dma_direct_free(hwdev, size, cpu_addr, dma_handle, attrs);
> >  }
> 
> Applied the patch, but it didn't help and after printk's it turns out
> it surprisingly crashes right inside this (rather convoluted if you
> ask me) if statement:
>     https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/xen/swiotlb-xen.c?h=v5.6.1#n349
> 
> So it makes sense that the patch didn't help -- we never hit that
> xen_free_coherent_pages.
 
The crash happens here:

	if (!WARN_ON((dev_addr + size - 1 > dma_mask) ||
		     range_straddles_page_boundary(phys, size)) &&
	    TestClearPageXenRemapped(virt_to_page(vaddr)))
		xen_destroy_contiguous_region(phys, order);

I don't know exactly what is causing the crash. Is it the WARN_ON somehow?
Is it TestClearPageXenRemapped? Neither should cause a crash in theory.


But I do know that there are problems with that if statement on ARM. It
can trigger for one of the following conditions:

1) dev_addr + size - 1 > dma_mask
2) range_straddles_page_boundary(phys, size)


The first condition might happen after bef4d2037d214 because
dma_direct_alloc might not respect the device dma_mask. It is actually a
bug and I would like to keep the WARN_ON for that. The patch I sent
yesterday (https://marc.info/?l=xen-devel&m=158865080224504) should
solve that issue. But Roman is telling us that the crash still persists.

The second condition is completely normal and not an error on ARM
because dom0 is 1:1 mapped. It is not an issue if the address range is
straddling a page boundary. We certainly shouldn't WARN (or crash).

So, I suggest something similar to Peng's patch, appended.

Roman, does it solve your problem?


diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
index b6d27762c6f8..994ca3a4b653 100644
--- a/drivers/xen/swiotlb-xen.c
+++ b/drivers/xen/swiotlb-xen.c
@@ -346,9 +346,8 @@ xen_swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr,
 	/* Convert the size to actually allocated. */
 	size = 1UL << (order + XEN_PAGE_SHIFT);
 
-	if (!WARN_ON((dev_addr + size - 1 > dma_mask) ||
-		     range_straddles_page_boundary(phys, size)) &&
-	    TestClearPageXenRemapped(virt_to_page(vaddr)))
+	WARN_ON(dev_addr + size - 1 > dma_mask);
+	if (TestClearPageXenRemapped(virt_to_page(vaddr)))
 		xen_destroy_contiguous_region(phys, order);
 
 	xen_free_coherent_pages(hwdev, size, vaddr, (dma_addr_t)phys, attrs);

^ permalink raw reply related	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-05 22:34                     ` Stefano Stabellini
@ 2020-05-06  1:25                       ` Boris Ostrovsky
  2020-05-06  4:19                       ` Roman Shaposhnik
  2020-05-06  5:41                       ` Jürgen Groß
  2 siblings, 0 replies; 45+ messages in thread
From: Boris Ostrovsky @ 2020-05-06  1:25 UTC (permalink / raw)
  To: Stefano Stabellini, Roman Shaposhnik, jgross
  Cc: peng.fan, Julien Grall, minyard, jeff.kubascik, Julien Grall,
	xen-devel, Stefano Stabellini


On 5/5/20 6:34 PM, Stefano Stabellini wrote:
>
>  
> The crash happens here:
>
> 	if (!WARN_ON((dev_addr + size - 1 > dma_mask) ||
> 		     range_straddles_page_boundary(phys, size)) &&
> 	    TestClearPageXenRemapped(virt_to_page(vaddr)))
> 		xen_destroy_contiguous_region(phys, order);
>
> I don't know exactly what is causing the crash. Is it the WARN_ON somehow?
> Is it TestClearPageXenRemapped? Neither should cause a crash in theory.


This doesn't look like warning to me. Would it be possible to see what
xen_swiotlb_free_coherent+0x198 corresponds to in code? I don't know if
./scripts/faddr2line works for ARM but could you try


./scripts/faddr2line vmlinux xen_swiotlb_free_coherent+0x198


-boris






^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-05 22:34                     ` Stefano Stabellini
  2020-05-06  1:25                       ` Boris Ostrovsky
@ 2020-05-06  4:19                       ` Roman Shaposhnik
  2020-05-06  5:41                       ` Jürgen Groß
  2 siblings, 0 replies; 45+ messages in thread
From: Roman Shaposhnik @ 2020-05-06  4:19 UTC (permalink / raw)
  To: Stefano Stabellini
  Cc: Juergen Gross, peng.fan, Julien Grall, minyard, jeff.kubascik,
	Julien Grall, xen-devel, Boris Ostrovsky, Stefano Stabellini

On Tue, May 5, 2020 at 3:34 PM Stefano Stabellini
<sstabellini@kernel.org> wrote:
>
> + Boris, Jürgen
>
> See the crash Roman is seeing booting dom0 on the Raspberry Pi. It is
> related to the recent xen dma_ops changes. Possibly the same thing
> reported by Peng here:
>
> https://marc.info/?l=linux-kernel&m=158805976230485&w=2
>
> An in-depth analysis below.
>
>
> On Mon, 4 May 2020, Roman Shaposhnik wrote:
> > > > [    2.534292] Unable to handle kernel paging request at virtual
> > > > address 000000000026c340
> > > > [    2.542373] Mem abort info:
> > > > [    2.545257]   ESR = 0x96000004
> > > > [    2.548421]   EC = 0x25: DABT (current EL), IL = 32 bits
> > > > [    2.553877]   SET = 0, FnV = 0
> > > > [    2.557023]   EA = 0, S1PTW = 0
> > > > [    2.560297] Data abort info:
> > > > [    2.563258]   ISV = 0, ISS = 0x00000004
> > > > [    2.567208]   CM = 0, WnR = 0
> > > > [    2.570294] [000000000026c340] user address but active_mm is swapper
> > > > [    2.576783] Internal error: Oops: 96000004 [#1] SMP
> > > > [    2.581784] Modules linked in:
> > > > [    2.584950] CPU: 3 PID: 135 Comm: kworker/3:1 Not tainted 5.6.1-default #9
> > > > [    2.591970] Hardware name: Raspberry Pi 4 Model B (DT)
> > > > [    2.597256] Workqueue: events deferred_probe_work_func
> > > > [    2.602509] pstate: 60000005 (nZCv daif -PAN -UAO)
> > > > [    2.607431] pc : xen_swiotlb_free_coherent+0x198/0x1d8
> > > > [    2.612696] lr : dma_free_attrs+0x98/0xd0
> > > > [    2.616827] sp : ffff800011db3970
> > > > [    2.620242] x29: ffff800011db3970 x28: 00000000000f7b00
> > > > [    2.625695] x27: 0000000000001000 x26: ffff000037b68410
> > > > [    2.631129] x25: 0000000000000001 x24: 00000000f7b00000
> > > > [    2.636583] x23: 0000000000000000 x22: 0000000000000000
> > > > [    2.642017] x21: ffff800011b0d000 x20: ffff80001179b548
> > > > [    2.647461] x19: ffff000037b68410 x18: 0000000000000010
> > > > [    2.652905] x17: ffff000035d66a00 x16: 00000000deadbeef
> > > > [    2.658348] x15: ffffffffffffffff x14: ffff80001179b548
> > > > [    2.663792] x13: ffff800091db37b7 x12: ffff800011db37bf
> > > > [    2.669236] x11: ffff8000117c7000 x10: ffff800011db3740
> > > > [    2.674680] x9 : 00000000ffffffd0 x8 : ffff80001071e980
> > > > [    2.680124] x7 : 0000000000000132 x6 : ffff80001197a6ab
> > > > [    2.685568] x5 : 0000000000000000 x4 : 0000000000000000
> > > > [    2.691012] x3 : 00000000f7b00000 x2 : fffffdffffe00000
> > > > [    2.696465] x1 : 000000000026c340 x0 : 000002000046c340
> > > > [    2.701899] Call trace:
> > > > [    2.704452]  xen_swiotlb_free_coherent+0x198/0x1d8
> > > > [    2.709367]  dma_free_attrs+0x98/0xd0
> > > > [    2.713143]  rpi_firmware_property_list+0x1e4/0x240
> > > > [    2.718146]  rpi_firmware_property+0x6c/0xb0
> > > > [    2.722535]  rpi_firmware_probe+0xf0/0x1e0
> > > > [    2.726760]  platform_drv_probe+0x50/0xa0
> > > > [    2.730879]  really_probe+0xd8/0x438
> > > > [    2.734567]  driver_probe_device+0xdc/0x130
> > > > [    2.738870]  __device_attach_driver+0x88/0x108
> > > > [    2.743434]  bus_for_each_drv+0x78/0xc8
> > > > [    2.747386]  __device_attach+0xd4/0x158
> > > > [    2.751337]  device_initial_probe+0x10/0x18
> > > > [    2.755649]  bus_probe_device+0x90/0x98
> > > > [    2.759590]  deferred_probe_work_func+0x88/0xd8
> > > > [    2.764244]  process_one_work+0x1f0/0x3c0
> > > > [    2.768369]  worker_thread+0x138/0x570
> > > > [    2.772234]  kthread+0x118/0x120
> > > > [    2.775571]  ret_from_fork+0x10/0x18
> > > > [    2.779263] Code: d34cfc00 f2dfbfe2 d37ae400 8b020001 (f8626800)
> > > > [    2.785492] ---[ end trace 4c435212e349f45f ]---
> > > > [    2.793340] usb 1-1: New USB device found, idVendor=2109,
> > > > idProduct=3431, bcdDevice= 4.20
> > > > [    2.801038] usb 1-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
> > > > [    2.808297] usb 1-1: Product: USB2.0 Hub
> > > > [    2.813710] hub 1-1:1.0: USB hub found
> > > > [    2.817117] hub 1-1:1.0: 4 ports detected
> > > >
> > > > This is bailing out right here:
> > > >      https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/firmware/raspberrypi.c?h=v5.6.1#n125
> > > >
> > > > FYIW (since I modified the source to actually print what was returned
> > > > right before it bails) we get:
> > > >    buf[1] == 0x800000004
> > > >    buf[2] == 0x00000001
> > > >
> > > > Status 0x800000004 is of course suspicious since it is not even listed here:
> > > >     https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/include/soc/bcm2835/raspberrypi-firmware.h#n14
> > > >
> > > > So it appears that this DMA request path is somehow busted and it
> > > > would be really nice to figure out why.
> > >
> > > You have actually discovered a genuine bug in the recent xen dma rework
> > > in Linux. Congrats :-)
> >
> > Nice! ;-)
> >
> > > I am doing some guesswork here, but from what I read in the thread and
> > > the information in this email I think this patch might fix the issue.
> > > If it doesn't fix the issue please add a few printks in
> > > drivers/xen/swiotlb-xen.c:xen_swiotlb_free_coherent and please let me
> > > know where exactly it crashes.
> > >
> > >
> > > diff --git a/include/xen/arm/page-coherent.h b/include/xen/arm/page-coherent.h
> > > index b9cc11e887ed..ff4677ed9788 100644
> > > --- a/include/xen/arm/page-coherent.h
> > > +++ b/include/xen/arm/page-coherent.h
> > > @@ -8,12 +8,17 @@
> > >  static inline void *xen_alloc_coherent_pages(struct device *hwdev, size_t size,
> > >                 dma_addr_t *dma_handle, gfp_t flags, unsigned long attrs)
> > >  {
> > > +       void *cpu_addr;
> > > +       if (dma_alloc_from_dev_coherent(hwdev, size, dma_handle, &cpu_addr))
> > > +               return cpu_addr;
> > >         return dma_direct_alloc(hwdev, size, dma_handle, flags, attrs);
> > >  }
> > >
> > >  static inline void xen_free_coherent_pages(struct device *hwdev, size_t size,
> > >                 void *cpu_addr, dma_addr_t dma_handle, unsigned long attrs)
> > >  {
> > > +       if (dma_release_from_dev_coherent(hwdev, get_order(size), cpu_addr))
> > > +               return;
> > >         dma_direct_free(hwdev, size, cpu_addr, dma_handle, attrs);
> > >  }
> >
> > Applied the patch, but it didn't help and after printk's it turns out
> > it surprisingly crashes right inside this (rather convoluted if you
> > ask me) if statement:
> >     https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/xen/swiotlb-xen.c?h=v5.6.1#n349
> >
> > So it makes sense that the patch didn't help -- we never hit that
> > xen_free_coherent_pages.
>
> The crash happens here:
>
>         if (!WARN_ON((dev_addr + size - 1 > dma_mask) ||
>                      range_straddles_page_boundary(phys, size)) &&
>             TestClearPageXenRemapped(virt_to_page(vaddr)))
>                 xen_destroy_contiguous_region(phys, order);
>
> I don't know exactly what is causing the crash. Is it the WARN_ON somehow?
> Is it TestClearPageXenRemapped? Neither should cause a crash in theory.
>
>
> But I do know that there are problems with that if statement on ARM. It
> can trigger for one of the following conditions:
>
> 1) dev_addr + size - 1 > dma_mask
> 2) range_straddles_page_boundary(phys, size)
>
>
> The first condition might happen after bef4d2037d214 because
> dma_direct_alloc might not respect the device dma_mask. It is actually a
> bug and I would like to keep the WARN_ON for that. The patch I sent
> yesterday (https://marc.info/?l=xen-devel&m=158865080224504) should
> solve that issue. But Roman is telling us that the crash still persists.
>
> The second condition is completely normal and not an error on ARM
> because dom0 is 1:1 mapped. It is not an issue if the address range is
> straddling a page boundary. We certainly shouldn't WARN (or crash).
>
> So, I suggest something similar to Peng's patch, appended.
>
> Roman, does it solve your problem?
>
>
> diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
> index b6d27762c6f8..994ca3a4b653 100644
> --- a/drivers/xen/swiotlb-xen.c
> +++ b/drivers/xen/swiotlb-xen.c
> @@ -346,9 +346,8 @@ xen_swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr,
>         /* Convert the size to actually allocated. */
>         size = 1UL << (order + XEN_PAGE_SHIFT);
>
> -       if (!WARN_ON((dev_addr + size - 1 > dma_mask) ||
> -                    range_straddles_page_boundary(phys, size)) &&
> -           TestClearPageXenRemapped(virt_to_page(vaddr)))
> +       WARN_ON(dev_addr + size - 1 > dma_mask);
> +       if (TestClearPageXenRemapped(virt_to_page(vaddr)))
>                 xen_destroy_contiguous_region(phys, order);
>
>         xen_free_coherent_pages(hwdev, size, vaddr, (dma_addr_t)phys, attrs);


Ok, so "the plot thickens" it seems ;-)

It definitely crashes inside of the
TestClearPageXenRemapped(virt_to_page(vaddr)) statement

Now, to test what part of it -- I actually unpacked the statement
which also allowed me to see what page virt_to_page(vaddr) returns by
doing:
    struct page *page = virt_to_page(vaddr);
Turns out the value of the page (as per %px) is 000000000026a340
(which doesn't seem odd to me -- but may be it will to you Stefano)

That address, however, doesn't seem to be mapped -- when I try adding a simple:
    printk(KERN_CRIT "page flags %ld\n", page->flags);
it crashes trying to dereference a page.

Thanks,
Roman.


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-05 22:34                     ` Stefano Stabellini
  2020-05-06  1:25                       ` Boris Ostrovsky
  2020-05-06  4:19                       ` Roman Shaposhnik
@ 2020-05-06  5:41                       ` Jürgen Groß
  2020-05-06  8:54                         ` Peng Fan
  2020-05-06 17:32                         ` Stefano Stabellini
  2 siblings, 2 replies; 45+ messages in thread
From: Jürgen Groß @ 2020-05-06  5:41 UTC (permalink / raw)
  To: Stefano Stabellini, Roman Shaposhnik, boris.ostrovsky
  Cc: peng.fan, Julien Grall, minyard, jeff.kubascik, Julien Grall,
	xen-devel, Stefano Stabellini

On 06.05.20 00:34, Stefano Stabellini wrote:
> + Boris, Jürgen
> 
> See the crash Roman is seeing booting dom0 on the Raspberry Pi. It is
> related to the recent xen dma_ops changes. Possibly the same thing
> reported by Peng here:
> 
> https://marc.info/?l=linux-kernel&m=158805976230485&w=2
> 
> An in-depth analysis below.
> 
> 
> On Mon, 4 May 2020, Roman Shaposhnik wrote:
>>>> [    2.534292] Unable to handle kernel paging request at virtual
>>>> address 000000000026c340
>>>> [    2.542373] Mem abort info:
>>>> [    2.545257]   ESR = 0x96000004
>>>> [    2.548421]   EC = 0x25: DABT (current EL), IL = 32 bits
>>>> [    2.553877]   SET = 0, FnV = 0
>>>> [    2.557023]   EA = 0, S1PTW = 0
>>>> [    2.560297] Data abort info:
>>>> [    2.563258]   ISV = 0, ISS = 0x00000004
>>>> [    2.567208]   CM = 0, WnR = 0
>>>> [    2.570294] [000000000026c340] user address but active_mm is swapper
>>>> [    2.576783] Internal error: Oops: 96000004 [#1] SMP
>>>> [    2.581784] Modules linked in:
>>>> [    2.584950] CPU: 3 PID: 135 Comm: kworker/3:1 Not tainted 5.6.1-default #9
>>>> [    2.591970] Hardware name: Raspberry Pi 4 Model B (DT)
>>>> [    2.597256] Workqueue: events deferred_probe_work_func
>>>> [    2.602509] pstate: 60000005 (nZCv daif -PAN -UAO)
>>>> [    2.607431] pc : xen_swiotlb_free_coherent+0x198/0x1d8
>>>> [    2.612696] lr : dma_free_attrs+0x98/0xd0
>>>> [    2.616827] sp : ffff800011db3970
>>>> [    2.620242] x29: ffff800011db3970 x28: 00000000000f7b00
>>>> [    2.625695] x27: 0000000000001000 x26: ffff000037b68410
>>>> [    2.631129] x25: 0000000000000001 x24: 00000000f7b00000
>>>> [    2.636583] x23: 0000000000000000 x22: 0000000000000000
>>>> [    2.642017] x21: ffff800011b0d000 x20: ffff80001179b548
>>>> [    2.647461] x19: ffff000037b68410 x18: 0000000000000010
>>>> [    2.652905] x17: ffff000035d66a00 x16: 00000000deadbeef
>>>> [    2.658348] x15: ffffffffffffffff x14: ffff80001179b548
>>>> [    2.663792] x13: ffff800091db37b7 x12: ffff800011db37bf
>>>> [    2.669236] x11: ffff8000117c7000 x10: ffff800011db3740
>>>> [    2.674680] x9 : 00000000ffffffd0 x8 : ffff80001071e980
>>>> [    2.680124] x7 : 0000000000000132 x6 : ffff80001197a6ab
>>>> [    2.685568] x5 : 0000000000000000 x4 : 0000000000000000
>>>> [    2.691012] x3 : 00000000f7b00000 x2 : fffffdffffe00000
>>>> [    2.696465] x1 : 000000000026c340 x0 : 000002000046c340
>>>> [    2.701899] Call trace:
>>>> [    2.704452]  xen_swiotlb_free_coherent+0x198/0x1d8
>>>> [    2.709367]  dma_free_attrs+0x98/0xd0
>>>> [    2.713143]  rpi_firmware_property_list+0x1e4/0x240
>>>> [    2.718146]  rpi_firmware_property+0x6c/0xb0
>>>> [    2.722535]  rpi_firmware_probe+0xf0/0x1e0
>>>> [    2.726760]  platform_drv_probe+0x50/0xa0
>>>> [    2.730879]  really_probe+0xd8/0x438
>>>> [    2.734567]  driver_probe_device+0xdc/0x130
>>>> [    2.738870]  __device_attach_driver+0x88/0x108
>>>> [    2.743434]  bus_for_each_drv+0x78/0xc8
>>>> [    2.747386]  __device_attach+0xd4/0x158
>>>> [    2.751337]  device_initial_probe+0x10/0x18
>>>> [    2.755649]  bus_probe_device+0x90/0x98
>>>> [    2.759590]  deferred_probe_work_func+0x88/0xd8
>>>> [    2.764244]  process_one_work+0x1f0/0x3c0
>>>> [    2.768369]  worker_thread+0x138/0x570
>>>> [    2.772234]  kthread+0x118/0x120
>>>> [    2.775571]  ret_from_fork+0x10/0x18
>>>> [    2.779263] Code: d34cfc00 f2dfbfe2 d37ae400 8b020001 (f8626800)
>>>> [    2.785492] ---[ end trace 4c435212e349f45f ]---
>>>> [    2.793340] usb 1-1: New USB device found, idVendor=2109,
>>>> idProduct=3431, bcdDevice= 4.20
>>>> [    2.801038] usb 1-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
>>>> [    2.808297] usb 1-1: Product: USB2.0 Hub
>>>> [    2.813710] hub 1-1:1.0: USB hub found
>>>> [    2.817117] hub 1-1:1.0: 4 ports detected
>>>>
>>>> This is bailing out right here:
>>>>       https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/firmware/raspberrypi.c?h=v5.6.1#n125
>>>>
>>>> FYIW (since I modified the source to actually print what was returned
>>>> right before it bails) we get:
>>>>     buf[1] == 0x800000004
>>>>     buf[2] == 0x00000001
>>>>
>>>> Status 0x800000004 is of course suspicious since it is not even listed here:
>>>>      https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/include/soc/bcm2835/raspberrypi-firmware.h#n14
>>>>
>>>> So it appears that this DMA request path is somehow busted and it
>>>> would be really nice to figure out why.
>>>
>>> You have actually discovered a genuine bug in the recent xen dma rework
>>> in Linux. Congrats :-)
>>
>> Nice! ;-)
>>
>>> I am doing some guesswork here, but from what I read in the thread and
>>> the information in this email I think this patch might fix the issue.
>>> If it doesn't fix the issue please add a few printks in
>>> drivers/xen/swiotlb-xen.c:xen_swiotlb_free_coherent and please let me
>>> know where exactly it crashes.
>>>
>>>
>>> diff --git a/include/xen/arm/page-coherent.h b/include/xen/arm/page-coherent.h
>>> index b9cc11e887ed..ff4677ed9788 100644
>>> --- a/include/xen/arm/page-coherent.h
>>> +++ b/include/xen/arm/page-coherent.h
>>> @@ -8,12 +8,17 @@
>>>   static inline void *xen_alloc_coherent_pages(struct device *hwdev, size_t size,
>>>                  dma_addr_t *dma_handle, gfp_t flags, unsigned long attrs)
>>>   {
>>> +       void *cpu_addr;
>>> +       if (dma_alloc_from_dev_coherent(hwdev, size, dma_handle, &cpu_addr))
>>> +               return cpu_addr;
>>>          return dma_direct_alloc(hwdev, size, dma_handle, flags, attrs);
>>>   }
>>>
>>>   static inline void xen_free_coherent_pages(struct device *hwdev, size_t size,
>>>                  void *cpu_addr, dma_addr_t dma_handle, unsigned long attrs)
>>>   {
>>> +       if (dma_release_from_dev_coherent(hwdev, get_order(size), cpu_addr))
>>> +               return;
>>>          dma_direct_free(hwdev, size, cpu_addr, dma_handle, attrs);
>>>   }
>>
>> Applied the patch, but it didn't help and after printk's it turns out
>> it surprisingly crashes right inside this (rather convoluted if you
>> ask me) if statement:
>>      https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/xen/swiotlb-xen.c?h=v5.6.1#n349
>>
>> So it makes sense that the patch didn't help -- we never hit that
>> xen_free_coherent_pages.
>   
> The crash happens here:
> 
> 	if (!WARN_ON((dev_addr + size - 1 > dma_mask) ||
> 		     range_straddles_page_boundary(phys, size)) &&
> 	    TestClearPageXenRemapped(virt_to_page(vaddr)))
> 		xen_destroy_contiguous_region(phys, order);
> 
> I don't know exactly what is causing the crash. Is it the WARN_ON somehow?
> Is it TestClearPageXenRemapped? Neither should cause a crash in theory.
> 
> 
> But I do know that there are problems with that if statement on ARM. It
> can trigger for one of the following conditions:
> 
> 1) dev_addr + size - 1 > dma_mask
> 2) range_straddles_page_boundary(phys, size)
> 
> 
> The first condition might happen after bef4d2037d214 because
> dma_direct_alloc might not respect the device dma_mask. It is actually a
> bug and I would like to keep the WARN_ON for that. The patch I sent
> yesterday (https://marc.info/?l=xen-devel&m=158865080224504) should
> solve that issue. But Roman is telling us that the crash still persists.
> 
> The second condition is completely normal and not an error on ARM
> because dom0 is 1:1 mapped. It is not an issue if the address range is
> straddling a page boundary. We certainly shouldn't WARN (or crash).
> 
> So, I suggest something similar to Peng's patch, appended.
> 
> Roman, does it solve your problem?
> 
> 
> diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
> index b6d27762c6f8..994ca3a4b653 100644
> --- a/drivers/xen/swiotlb-xen.c
> +++ b/drivers/xen/swiotlb-xen.c
> @@ -346,9 +346,8 @@ xen_swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr,
>   	/* Convert the size to actually allocated. */
>   	size = 1UL << (order + XEN_PAGE_SHIFT);
>   
> -	if (!WARN_ON((dev_addr + size - 1 > dma_mask) ||
> -		     range_straddles_page_boundary(phys, size)) &&
> -	    TestClearPageXenRemapped(virt_to_page(vaddr)))
> +	WARN_ON(dev_addr + size - 1 > dma_mask);
> +	if (TestClearPageXenRemapped(virt_to_page(vaddr)))
>   		xen_destroy_contiguous_region(phys, order);

This is a very bad idea for x86. Calling xen_destroy_contiguous_region()
for cases where it shouldn't be called is causing subtle bugs in memory
management, like pages being visible twice and thus resulting in weird
memory inconsistencies.

What you want here is probably an architecture specific test.


Juergen


^ permalink raw reply	[flat|nested] 45+ messages in thread

* RE: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-06  5:41                       ` Jürgen Groß
@ 2020-05-06  8:54                         ` Peng Fan
  2020-05-06 13:08                           ` Nataliya Korovkina
  2020-05-06 17:16                           ` Stefano Stabellini
  2020-05-06 17:32                         ` Stefano Stabellini
  1 sibling, 2 replies; 45+ messages in thread
From: Peng Fan @ 2020-05-06  8:54 UTC (permalink / raw)
  To: Jürgen Groß,
	Stefano Stabellini, Roman Shaposhnik, boris.ostrovsky
  Cc: Julien Grall, minyard, jeff.kubascik, Julien Grall, xen-devel,
	Stefano Stabellini

> Subject: Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
> 
> On 06.05.20 00:34, Stefano Stabellini wrote:
> > + Boris, Jürgen
> >
> > See the crash Roman is seeing booting dom0 on the Raspberry Pi. It is
> > related to the recent xen dma_ops changes. Possibly the same thing
> > reported by Peng here:

Yes. It is same issue.

> >
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmarc
> > .info%2F%3Fl%3Dlinux-kernel%26m%3D158805976230485%26w%3D2&am
> p;data=02%
> >
> 7C01%7Cpeng.fan%40nxp.com%7Cab98b2db94484141a8ad08d7f1803372%7
> C686ea1d
> >
> 3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637243405233572354&amp;sd
> ata=0Yr5h
> > Rg4%2FuApsBpTwIIL4StZU%2FUA55oP5Lfnfmtj4Hg%3D&amp;reserved=0
> >
> > An in-depth analysis below.
> >
> >
> > On Mon, 4 May 2020, Roman Shaposhnik wrote:
> >>>> [    2.534292] Unable to handle kernel paging request at virtual
> >>>> address 000000000026c340
> >>>> [    2.542373] Mem abort info:
> >>>> [    2.545257]   ESR = 0x96000004
> >>>> [    2.548421]   EC = 0x25: DABT (current EL), IL = 32 bits
> >>>> [    2.553877]   SET = 0, FnV = 0
> >>>> [    2.557023]   EA = 0, S1PTW = 0
> >>>> [    2.560297] Data abort info:
> >>>> [    2.563258]   ISV = 0, ISS = 0x00000004
> >>>> [    2.567208]   CM = 0, WnR = 0
> >>>> [    2.570294] [000000000026c340] user address but active_mm is
> swapper
> >>>> [    2.576783] Internal error: Oops: 96000004 [#1] SMP
> >>>> [    2.581784] Modules linked in:
> >>>> [    2.584950] CPU: 3 PID: 135 Comm: kworker/3:1 Not tainted
> 5.6.1-default #9
> >>>> [    2.591970] Hardware name: Raspberry Pi 4 Model B (DT)
> >>>> [    2.597256] Workqueue: events deferred_probe_work_func
> >>>> [    2.602509] pstate: 60000005 (nZCv daif -PAN -UAO)
> >>>> [    2.607431] pc : xen_swiotlb_free_coherent+0x198/0x1d8
> >>>> [    2.612696] lr : dma_free_attrs+0x98/0xd0
> >>>> [    2.616827] sp : ffff800011db3970
> >>>> [    2.620242] x29: ffff800011db3970 x28: 00000000000f7b00
> >>>> [    2.625695] x27: 0000000000001000 x26: ffff000037b68410
> >>>> [    2.631129] x25: 0000000000000001 x24: 00000000f7b00000
> >>>> [    2.636583] x23: 0000000000000000 x22: 0000000000000000
> >>>> [    2.642017] x21: ffff800011b0d000 x20: ffff80001179b548
> >>>> [    2.647461] x19: ffff000037b68410 x18: 0000000000000010
> >>>> [    2.652905] x17: ffff000035d66a00 x16: 00000000deadbeef
> >>>> [    2.658348] x15: ffffffffffffffff x14: ffff80001179b548
> >>>> [    2.663792] x13: ffff800091db37b7 x12: ffff800011db37bf
> >>>> [    2.669236] x11: ffff8000117c7000 x10: ffff800011db3740
> >>>> [    2.674680] x9 : 00000000ffffffd0 x8 : ffff80001071e980
> >>>> [    2.680124] x7 : 0000000000000132 x6 : ffff80001197a6ab
> >>>> [    2.685568] x5 : 0000000000000000 x4 : 0000000000000000
> >>>> [    2.691012] x3 : 00000000f7b00000 x2 : fffffdffffe00000
> >>>> [    2.696465] x1 : 000000000026c340 x0 : 000002000046c340
> >>>> [    2.701899] Call trace:
> >>>> [    2.704452]  xen_swiotlb_free_coherent+0x198/0x1d8
> >>>> [    2.709367]  dma_free_attrs+0x98/0xd0
> >>>> [    2.713143]  rpi_firmware_property_list+0x1e4/0x240
> >>>> [    2.718146]  rpi_firmware_property+0x6c/0xb0
> >>>> [    2.722535]  rpi_firmware_probe+0xf0/0x1e0
> >>>> [    2.726760]  platform_drv_probe+0x50/0xa0
> >>>> [    2.730879]  really_probe+0xd8/0x438
> >>>> [    2.734567]  driver_probe_device+0xdc/0x130
> >>>> [    2.738870]  __device_attach_driver+0x88/0x108
> >>>> [    2.743434]  bus_for_each_drv+0x78/0xc8
> >>>> [    2.747386]  __device_attach+0xd4/0x158
> >>>> [    2.751337]  device_initial_probe+0x10/0x18
> >>>> [    2.755649]  bus_probe_device+0x90/0x98
> >>>> [    2.759590]  deferred_probe_work_func+0x88/0xd8
> >>>> [    2.764244]  process_one_work+0x1f0/0x3c0
> >>>> [    2.768369]  worker_thread+0x138/0x570
> >>>> [    2.772234]  kthread+0x118/0x120
> >>>> [    2.775571]  ret_from_fork+0x10/0x18
> >>>> [    2.779263] Code: d34cfc00 f2dfbfe2 d37ae400 8b020001
> (f8626800)
> >>>> [    2.785492] ---[ end trace 4c435212e349f45f ]---
> >>>> [    2.793340] usb 1-1: New USB device found, idVendor=2109,
> >>>> idProduct=3431, bcdDevice= 4.20
> >>>> [    2.801038] usb 1-1: New USB device strings: Mfr=0, Product=1,
> SerialNumber=0
> >>>> [    2.808297] usb 1-1: Product: USB2.0 Hub
> >>>> [    2.813710] hub 1-1:1.0: USB hub found
> >>>> [    2.817117] hub 1-1:1.0: 4 ports detected
> >>>>
> >>>> This is bailing out right here:
> >>>>
> >>>> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fg
> >>>>
> it.kernel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Fstable%2Flinux.g
> >>>>
> it%2Ftree%2Fdrivers%2Ffirmware%2Fraspberrypi.c%3Fh%3Dv5.6.1%23n125
> &
> >>>>
> amp;data=02%7C01%7Cpeng.fan%40nxp.com%7Cab98b2db94484141a8ad0
> 8d7f18
> >>>>
> 03372%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C6372434052
> 335723
> >>>>
> 54&amp;sdata=h1dyHkb%2FsifUqH3Z0m3uIIcqUhXVwhHS%2Ft%2FVvig%2Fo
> u4%3D
> >>>> &amp;reserved=0
> >>>>
> >>>> FYIW (since I modified the source to actually print what was
> >>>> returned right before it bails) we get:
> >>>>     buf[1] == 0x800000004
> >>>>     buf[2] == 0x00000001
> >>>>
> >>>> Status 0x800000004 is of course suspicious since it is not even listed
> here:
> >>>>
> >>>> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fg
> >>>>
> it.kernel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Fstable%2Flinux.g
> >>>>
> it%2Ftree%2Finclude%2Fsoc%2Fbcm2835%2Fraspberrypi-firmware.h%23n14
> &
> >>>>
> amp;data=02%7C01%7Cpeng.fan%40nxp.com%7Cab98b2db94484141a8ad0
> 8d7f18
> >>>>
> 03372%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C6372434052
> 335723
> >>>>
> 54&amp;sdata=3yMm%2FujHCVf%2FigpNLE8hcBWVcvdGrZGv5TuqeMzMV0
> U%3D&amp
> >>>> ;reserved=0
> >>>>
> >>>> So it appears that this DMA request path is somehow busted and it
> >>>> would be really nice to figure out why.
> >>>
> >>> You have actually discovered a genuine bug in the recent xen dma
> >>> rework in Linux. Congrats :-)
> >>
> >> Nice! ;-)
> >>
> >>> I am doing some guesswork here, but from what I read in the thread
> >>> and the information in this email I think this patch might fix the issue.
> >>> If it doesn't fix the issue please add a few printks in
> >>> drivers/xen/swiotlb-xen.c:xen_swiotlb_free_coherent and please let
> >>> me know where exactly it crashes.
> >>>
> >>>
> >>> diff --git a/include/xen/arm/page-coherent.h
> >>> b/include/xen/arm/page-coherent.h index b9cc11e887ed..ff4677ed9788
> >>> 100644
> >>> --- a/include/xen/arm/page-coherent.h
> >>> +++ b/include/xen/arm/page-coherent.h
> >>> @@ -8,12 +8,17 @@
> >>>   static inline void *xen_alloc_coherent_pages(struct device *hwdev,
> size_t size,
> >>>                  dma_addr_t *dma_handle, gfp_t flags, unsigned
> long attrs)
> >>>   {
> >>> +       void *cpu_addr;
> >>> +       if (dma_alloc_from_dev_coherent(hwdev, size, dma_handle,
> &cpu_addr))
> >>> +               return cpu_addr;
> >>>          return dma_direct_alloc(hwdev, size, dma_handle, flags,
> attrs);
> >>>   }
> >>>
> >>>   static inline void xen_free_coherent_pages(struct device *hwdev,
> size_t size,
> >>>                  void *cpu_addr, dma_addr_t dma_handle,
> unsigned long attrs)
> >>>   {
> >>> +       if (dma_release_from_dev_coherent(hwdev, get_order(size),
> cpu_addr))
> >>> +               return;
> >>>          dma_direct_free(hwdev, size, cpu_addr, dma_handle, attrs);
> >>>   }
> >>
> >> Applied the patch, but it didn't help and after printk's it turns out
> >> it surprisingly crashes right inside this (rather convoluted if you
> >> ask me) if statement:
> >>
> >> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit
> >> .kernel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Fstable%2Flinux.gi
> t%2
> >>
> Ftree%2Fdrivers%2Fxen%2Fswiotlb-xen.c%3Fh%3Dv5.6.1%23n349&amp;dat
> a=02
> >> %7C01%7Cpeng.fan%40nxp.com%7Cab98b2db94484141a8ad08d7f18033
> 72%7C686ea
> >>
> 1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637243405233572354&amp;
> sdata=Fu
> >>
> BWGAEg%2FkbsnYIIGHmiICTqy%2BcgZs7V%2BMneJum%2BTts%3D&amp;res
> erved=0
> >>
> >> So it makes sense that the patch didn't help -- we never hit that
> >> xen_free_coherent_pages.
> >
> > The crash happens here:
> >
> > 	if (!WARN_ON((dev_addr + size - 1 > dma_mask) ||
> > 		     range_straddles_page_boundary(phys, size)) &&
> > 	    TestClearPageXenRemapped(virt_to_page(vaddr)))
> > 		xen_destroy_contiguous_region(phys, order);
> >
> > I don't know exactly what is causing the crash. Is it the WARN_ON
> somehow?
> > Is it TestClearPageXenRemapped? Neither should cause a crash in theory.
> >
> >
> > But I do know that there are problems with that if statement on ARM.
> > It can trigger for one of the following conditions:
> >
> > 1) dev_addr + size - 1 > dma_mask
> > 2) range_straddles_page_boundary(phys, size)


diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
index bd3a10dfac15..33b027cb0b2a 100644
--- a/drivers/xen/swiotlb-xen.c
+++ b/drivers/xen/swiotlb-xen.c
@@ -346,6 +346,7 @@ xen_swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr,
        /* Convert the size to actually allocated. */
        size = 1UL << (order + XEN_PAGE_SHIFT);

+       printk("%x %x %px %x %px\n", dev_addr + size - 1 > dma_mask, range_straddles_page_boundary(phys, size), virt_to_page(vaddr), phys, vaddr);
        if (!WARN_ON((dev_addr + size - 1 > dma_mask) ||
                     range_straddles_page_boundary(phys, size)) &&
            TestClearPageXenRemapped(virt_to_page(vaddr)))


In my case:
0 0 0000000000271f40 bc000000 ffff800011c7d000


The alloc path in my side:
314         phys = *dma_handle;
315         dev_addr = xen_phys_to_bus(phys);
316         if (((dev_addr + size - 1 <= dma_mask)) &&
317             !range_straddles_page_boundary(phys, size))
318                 *dma_handle = dev_addr;

So I am confused why the free path needs clear xen remap.

Thanks,
Peng.

> >
> >
> > The first condition might happen after bef4d2037d214 because
> > dma_direct_alloc might not respect the device dma_mask. It is actually
> > a bug and I would like to keep the WARN_ON for that. The patch I sent
> > yesterday
> >
> (https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmarc.
> info%2F%3Fl%3Dxen-devel%26m%3D158865080224504&amp;data=02%7C0
> 1%7Cpeng.fan%40nxp.com%7Cab98b2db94484141a8ad08d7f1803372%7C68
> 6ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637243405233572354&a
> mp;sdata=5wCGhi6HuXVegPvlu7gmbwv9yEZ5XQKbuqqPw5Zl8ss%3D&amp;re
> served=0) should solve that issue. But Roman is telling us that the crash still
> persists.
> >
> > The second condition is completely normal and not an error on ARM
> > because dom0 is 1:1 mapped. It is not an issue if the address range is
> > straddling a page boundary. We certainly shouldn't WARN (or crash).
> >
> > So, I suggest something similar to Peng's patch, appended.
> >
> > Roman, does it solve your problem?
> >
> >
> > diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
> > index b6d27762c6f8..994ca3a4b653 100644
> > --- a/drivers/xen/swiotlb-xen.c
> > +++ b/drivers/xen/swiotlb-xen.c
> > @@ -346,9 +346,8 @@ xen_swiotlb_free_coherent(struct device *hwdev,
> size_t size, void *vaddr,
> >   	/* Convert the size to actually allocated. */
> >   	size = 1UL << (order + XEN_PAGE_SHIFT);
> >
> > -	if (!WARN_ON((dev_addr + size - 1 > dma_mask) ||
> > -		     range_straddles_page_boundary(phys, size)) &&
> > -	    TestClearPageXenRemapped(virt_to_page(vaddr)))
> > +	WARN_ON(dev_addr + size - 1 > dma_mask);
> > +	if (TestClearPageXenRemapped(virt_to_page(vaddr)))
> >   		xen_destroy_contiguous_region(phys, order);
> 
> This is a very bad idea for x86. Calling xen_destroy_contiguous_region() for
> cases where it shouldn't be called is causing subtle bugs in memory
> management, like pages being visible twice and thus resulting in weird
> memory inconsistencies.
> 
> What you want here is probably an architecture specific test.
> 
> 
> Juergen

^ permalink raw reply related	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-06  8:54                         ` Peng Fan
@ 2020-05-06 13:08                           ` Nataliya Korovkina
  2020-05-06 13:42                             ` Boris Ostrovsky
  2020-05-06 17:16                           ` Stefano Stabellini
  1 sibling, 1 reply; 45+ messages in thread
From: Nataliya Korovkina @ 2020-05-06 13:08 UTC (permalink / raw)
  To: Peng Fan
  Cc: Jürgen Groß,
	Stefano Stabellini, Julien Grall, minyard, Roman Shaposhnik,
	jeff.kubascik, Julien Grall, xen-devel, boris.ostrovsky,
	Stefano Stabellini

Hello,

What I found out: rpi_firmware_property_list() allocates memory from
dma_atomic_pool which was mapped to VMALLOC region, so virt_to_page()
is not eligible in this case.

Thanks,
Nataliya

On Wed, May 6, 2020 at 4:57 AM Peng Fan <peng.fan@nxp.com> wrote:
>
> > Subject: Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
> >
> > On 06.05.20 00:34, Stefano Stabellini wrote:
> > > + Boris, Jürgen
> > >
> > > See the crash Roman is seeing booting dom0 on the Raspberry Pi. It is
> > > related to the recent xen dma_ops changes. Possibly the same thing
> > > reported by Peng here:
>
> Yes. It is same issue.
>
> > >
> > > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmarc
> > > .info%2F%3Fl%3Dlinux-kernel%26m%3D158805976230485%26w%3D2&am
> > p;data=02%
> > >
> > 7C01%7Cpeng.fan%40nxp.com%7Cab98b2db94484141a8ad08d7f1803372%7
> > C686ea1d
> > >
> > 3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637243405233572354&amp;sd
> > ata=0Yr5h
> > > Rg4%2FuApsBpTwIIL4StZU%2FUA55oP5Lfnfmtj4Hg%3D&amp;reserved=0
> > >
> > > An in-depth analysis below.
> > >
> > >
> > > On Mon, 4 May 2020, Roman Shaposhnik wrote:
> > >>>> [    2.534292] Unable to handle kernel paging request at virtual
> > >>>> address 000000000026c340
> > >>>> [    2.542373] Mem abort info:
> > >>>> [    2.545257]   ESR = 0x96000004
> > >>>> [    2.548421]   EC = 0x25: DABT (current EL), IL = 32 bits
> > >>>> [    2.553877]   SET = 0, FnV = 0
> > >>>> [    2.557023]   EA = 0, S1PTW = 0
> > >>>> [    2.560297] Data abort info:
> > >>>> [    2.563258]   ISV = 0, ISS = 0x00000004
> > >>>> [    2.567208]   CM = 0, WnR = 0
> > >>>> [    2.570294] [000000000026c340] user address but active_mm is
> > swapper
> > >>>> [    2.576783] Internal error: Oops: 96000004 [#1] SMP
> > >>>> [    2.581784] Modules linked in:
> > >>>> [    2.584950] CPU: 3 PID: 135 Comm: kworker/3:1 Not tainted
> > 5.6.1-default #9
> > >>>> [    2.591970] Hardware name: Raspberry Pi 4 Model B (DT)
> > >>>> [    2.597256] Workqueue: events deferred_probe_work_func
> > >>>> [    2.602509] pstate: 60000005 (nZCv daif -PAN -UAO)
> > >>>> [    2.607431] pc : xen_swiotlb_free_coherent+0x198/0x1d8
> > >>>> [    2.612696] lr : dma_free_attrs+0x98/0xd0
> > >>>> [    2.616827] sp : ffff800011db3970
> > >>>> [    2.620242] x29: ffff800011db3970 x28: 00000000000f7b00
> > >>>> [    2.625695] x27: 0000000000001000 x26: ffff000037b68410
> > >>>> [    2.631129] x25: 0000000000000001 x24: 00000000f7b00000
> > >>>> [    2.636583] x23: 0000000000000000 x22: 0000000000000000
> > >>>> [    2.642017] x21: ffff800011b0d000 x20: ffff80001179b548
> > >>>> [    2.647461] x19: ffff000037b68410 x18: 0000000000000010
> > >>>> [    2.652905] x17: ffff000035d66a00 x16: 00000000deadbeef
> > >>>> [    2.658348] x15: ffffffffffffffff x14: ffff80001179b548
> > >>>> [    2.663792] x13: ffff800091db37b7 x12: ffff800011db37bf
> > >>>> [    2.669236] x11: ffff8000117c7000 x10: ffff800011db3740
> > >>>> [    2.674680] x9 : 00000000ffffffd0 x8 : ffff80001071e980
> > >>>> [    2.680124] x7 : 0000000000000132 x6 : ffff80001197a6ab
> > >>>> [    2.685568] x5 : 0000000000000000 x4 : 0000000000000000
> > >>>> [    2.691012] x3 : 00000000f7b00000 x2 : fffffdffffe00000
> > >>>> [    2.696465] x1 : 000000000026c340 x0 : 000002000046c340
> > >>>> [    2.701899] Call trace:
> > >>>> [    2.704452]  xen_swiotlb_free_coherent+0x198/0x1d8
> > >>>> [    2.709367]  dma_free_attrs+0x98/0xd0
> > >>>> [    2.713143]  rpi_firmware_property_list+0x1e4/0x240
> > >>>> [    2.718146]  rpi_firmware_property+0x6c/0xb0
> > >>>> [    2.722535]  rpi_firmware_probe+0xf0/0x1e0
> > >>>> [    2.726760]  platform_drv_probe+0x50/0xa0
> > >>>> [    2.730879]  really_probe+0xd8/0x438
> > >>>> [    2.734567]  driver_probe_device+0xdc/0x130
> > >>>> [    2.738870]  __device_attach_driver+0x88/0x108
> > >>>> [    2.743434]  bus_for_each_drv+0x78/0xc8
> > >>>> [    2.747386]  __device_attach+0xd4/0x158
> > >>>> [    2.751337]  device_initial_probe+0x10/0x18
> > >>>> [    2.755649]  bus_probe_device+0x90/0x98
> > >>>> [    2.759590]  deferred_probe_work_func+0x88/0xd8
> > >>>> [    2.764244]  process_one_work+0x1f0/0x3c0
> > >>>> [    2.768369]  worker_thread+0x138/0x570
> > >>>> [    2.772234]  kthread+0x118/0x120
> > >>>> [    2.775571]  ret_from_fork+0x10/0x18
> > >>>> [    2.779263] Code: d34cfc00 f2dfbfe2 d37ae400 8b020001
> > (f8626800)
> > >>>> [    2.785492] ---[ end trace 4c435212e349f45f ]---
> > >>>> [    2.793340] usb 1-1: New USB device found, idVendor=2109,
> > >>>> idProduct=3431, bcdDevice= 4.20
> > >>>> [    2.801038] usb 1-1: New USB device strings: Mfr=0, Product=1,
> > SerialNumber=0
> > >>>> [    2.808297] usb 1-1: Product: USB2.0 Hub
> > >>>> [    2.813710] hub 1-1:1.0: USB hub found
> > >>>> [    2.817117] hub 1-1:1.0: 4 ports detected
> > >>>>
> > >>>> This is bailing out right here:
> > >>>>
> > >>>> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fg
> > >>>>
> > it.kernel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Fstable%2Flinux.g
> > >>>>
> > it%2Ftree%2Fdrivers%2Ffirmware%2Fraspberrypi.c%3Fh%3Dv5.6.1%23n125
> > &
> > >>>>
> > amp;data=02%7C01%7Cpeng.fan%40nxp.com%7Cab98b2db94484141a8ad0
> > 8d7f18
> > >>>>
> > 03372%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C6372434052
> > 335723
> > >>>>
> > 54&amp;sdata=h1dyHkb%2FsifUqH3Z0m3uIIcqUhXVwhHS%2Ft%2FVvig%2Fo
> > u4%3D
> > >>>> &amp;reserved=0
> > >>>>
> > >>>> FYIW (since I modified the source to actually print what was
> > >>>> returned right before it bails) we get:
> > >>>>     buf[1] == 0x800000004
> > >>>>     buf[2] == 0x00000001
> > >>>>
> > >>>> Status 0x800000004 is of course suspicious since it is not even listed
> > here:
> > >>>>
> > >>>> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fg
> > >>>>
> > it.kernel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Fstable%2Flinux.g
> > >>>>
> > it%2Ftree%2Finclude%2Fsoc%2Fbcm2835%2Fraspberrypi-firmware.h%23n14
> > &
> > >>>>
> > amp;data=02%7C01%7Cpeng.fan%40nxp.com%7Cab98b2db94484141a8ad0
> > 8d7f18
> > >>>>
> > 03372%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C6372434052
> > 335723
> > >>>>
> > 54&amp;sdata=3yMm%2FujHCVf%2FigpNLE8hcBWVcvdGrZGv5TuqeMzMV0
> > U%3D&amp
> > >>>> ;reserved=0
> > >>>>
> > >>>> So it appears that this DMA request path is somehow busted and it
> > >>>> would be really nice to figure out why.
> > >>>
> > >>> You have actually discovered a genuine bug in the recent xen dma
> > >>> rework in Linux. Congrats :-)
> > >>
> > >> Nice! ;-)
> > >>
> > >>> I am doing some guesswork here, but from what I read in the thread
> > >>> and the information in this email I think this patch might fix the issue.
> > >>> If it doesn't fix the issue please add a few printks in
> > >>> drivers/xen/swiotlb-xen.c:xen_swiotlb_free_coherent and please let
> > >>> me know where exactly it crashes.
> > >>>
> > >>>
> > >>> diff --git a/include/xen/arm/page-coherent.h
> > >>> b/include/xen/arm/page-coherent.h index b9cc11e887ed..ff4677ed9788
> > >>> 100644
> > >>> --- a/include/xen/arm/page-coherent.h
> > >>> +++ b/include/xen/arm/page-coherent.h
> > >>> @@ -8,12 +8,17 @@
> > >>>   static inline void *xen_alloc_coherent_pages(struct device *hwdev,
> > size_t size,
> > >>>                  dma_addr_t *dma_handle, gfp_t flags, unsigned
> > long attrs)
> > >>>   {
> > >>> +       void *cpu_addr;
> > >>> +       if (dma_alloc_from_dev_coherent(hwdev, size, dma_handle,
> > &cpu_addr))
> > >>> +               return cpu_addr;
> > >>>          return dma_direct_alloc(hwdev, size, dma_handle, flags,
> > attrs);
> > >>>   }
> > >>>
> > >>>   static inline void xen_free_coherent_pages(struct device *hwdev,
> > size_t size,
> > >>>                  void *cpu_addr, dma_addr_t dma_handle,
> > unsigned long attrs)
> > >>>   {
> > >>> +       if (dma_release_from_dev_coherent(hwdev, get_order(size),
> > cpu_addr))
> > >>> +               return;
> > >>>          dma_direct_free(hwdev, size, cpu_addr, dma_handle, attrs);
> > >>>   }
> > >>
> > >> Applied the patch, but it didn't help and after printk's it turns out
> > >> it surprisingly crashes right inside this (rather convoluted if you
> > >> ask me) if statement:
> > >>
> > >> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit
> > >> .kernel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Fstable%2Flinux.gi
> > t%2
> > >>
> > Ftree%2Fdrivers%2Fxen%2Fswiotlb-xen.c%3Fh%3Dv5.6.1%23n349&amp;dat
> > a=02
> > >> %7C01%7Cpeng.fan%40nxp.com%7Cab98b2db94484141a8ad08d7f18033
> > 72%7C686ea
> > >>
> > 1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637243405233572354&amp;
> > sdata=Fu
> > >>
> > BWGAEg%2FkbsnYIIGHmiICTqy%2BcgZs7V%2BMneJum%2BTts%3D&amp;res
> > erved=0
> > >>
> > >> So it makes sense that the patch didn't help -- we never hit that
> > >> xen_free_coherent_pages.
> > >
> > > The crash happens here:
> > >
> > >     if (!WARN_ON((dev_addr + size - 1 > dma_mask) ||
> > >                  range_straddles_page_boundary(phys, size)) &&
> > >         TestClearPageXenRemapped(virt_to_page(vaddr)))
> > >             xen_destroy_contiguous_region(phys, order);
> > >
> > > I don't know exactly what is causing the crash. Is it the WARN_ON
> > somehow?
> > > Is it TestClearPageXenRemapped? Neither should cause a crash in theory.
> > >
> > >
> > > But I do know that there are problems with that if statement on ARM.
> > > It can trigger for one of the following conditions:
> > >
> > > 1) dev_addr + size - 1 > dma_mask
> > > 2) range_straddles_page_boundary(phys, size)
>
>
> diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
> index bd3a10dfac15..33b027cb0b2a 100644
> --- a/drivers/xen/swiotlb-xen.c
> +++ b/drivers/xen/swiotlb-xen.c
> @@ -346,6 +346,7 @@ xen_swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr,
>         /* Convert the size to actually allocated. */
>         size = 1UL << (order + XEN_PAGE_SHIFT);
>
> +       printk("%x %x %px %x %px\n", dev_addr + size - 1 > dma_mask, range_straddles_page_boundary(phys, size), virt_to_page(vaddr), phys, vaddr);
>         if (!WARN_ON((dev_addr + size - 1 > dma_mask) ||
>                      range_straddles_page_boundary(phys, size)) &&
>             TestClearPageXenRemapped(virt_to_page(vaddr)))
>
>
> In my case:
> 0 0 0000000000271f40 bc000000 ffff800011c7d000
>
>
> The alloc path in my side:
> 314         phys = *dma_handle;
> 315         dev_addr = xen_phys_to_bus(phys);
> 316         if (((dev_addr + size - 1 <= dma_mask)) &&
> 317             !range_straddles_page_boundary(phys, size))
> 318                 *dma_handle = dev_addr;
>
> So I am confused why the free path needs clear xen remap.
>
> Thanks,
> Peng.
>
> > >
> > >
> > > The first condition might happen after bef4d2037d214 because
> > > dma_direct_alloc might not respect the device dma_mask. It is actually
> > > a bug and I would like to keep the WARN_ON for that. The patch I sent
> > > yesterday
> > >
> > (https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmarc.
> > info%2F%3Fl%3Dxen-devel%26m%3D158865080224504&amp;data=02%7C0
> > 1%7Cpeng.fan%40nxp.com%7Cab98b2db94484141a8ad08d7f1803372%7C68
> > 6ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637243405233572354&a
> > mp;sdata=5wCGhi6HuXVegPvlu7gmbwv9yEZ5XQKbuqqPw5Zl8ss%3D&amp;re
> > served=0) should solve that issue. But Roman is telling us that the crash still
> > persists.
> > >
> > > The second condition is completely normal and not an error on ARM
> > > because dom0 is 1:1 mapped. It is not an issue if the address range is
> > > straddling a page boundary. We certainly shouldn't WARN (or crash).
> > >
> > > So, I suggest something similar to Peng's patch, appended.
> > >
> > > Roman, does it solve your problem?
> > >
> > >
> > > diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
> > > index b6d27762c6f8..994ca3a4b653 100644
> > > --- a/drivers/xen/swiotlb-xen.c
> > > +++ b/drivers/xen/swiotlb-xen.c
> > > @@ -346,9 +346,8 @@ xen_swiotlb_free_coherent(struct device *hwdev,
> > size_t size, void *vaddr,
> > >     /* Convert the size to actually allocated. */
> > >     size = 1UL << (order + XEN_PAGE_SHIFT);
> > >
> > > -   if (!WARN_ON((dev_addr + size - 1 > dma_mask) ||
> > > -                range_straddles_page_boundary(phys, size)) &&
> > > -       TestClearPageXenRemapped(virt_to_page(vaddr)))
> > > +   WARN_ON(dev_addr + size - 1 > dma_mask);
> > > +   if (TestClearPageXenRemapped(virt_to_page(vaddr)))
> > >             xen_destroy_contiguous_region(phys, order);
> >
> > This is a very bad idea for x86. Calling xen_destroy_contiguous_region() for
> > cases where it shouldn't be called is causing subtle bugs in memory
> > management, like pages being visible twice and thus resulting in weird
> > memory inconsistencies.
> >
> > What you want here is probably an architecture specific test.
> >
> >
> > Juergen


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-06 13:08                           ` Nataliya Korovkina
@ 2020-05-06 13:42                             ` Boris Ostrovsky
  2020-05-06 16:14                               ` Nataliya Korovkina
  0 siblings, 1 reply; 45+ messages in thread
From: Boris Ostrovsky @ 2020-05-06 13:42 UTC (permalink / raw)
  To: Nataliya Korovkina, Peng Fan
  Cc: Jürgen Groß,
	Stefano Stabellini, Julien Grall, minyard, Roman Shaposhnik,
	jeff.kubascik, Julien Grall, xen-devel, Stefano Stabellini


On 5/6/20 9:08 AM, Nataliya Korovkina wrote:
> Hello,
>
> What I found out: rpi_firmware_property_list() allocates memory from
> dma_atomic_pool which was mapped to VMALLOC region, so virt_to_page()
> is not eligible in this case.


So then it seems it didn't go through xen_swiotlb_alloc_coherent(). In
which case it has no business calling xen_swiotlb_free_coherent().


-boris






^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-02 11:46       ` Julien Grall
  2020-05-02 17:35         ` Corey Minyard
@ 2020-05-06 13:48         ` Corey Minyard
  2020-05-06 13:56           ` Julien Grall
  1 sibling, 1 reply; 45+ messages in thread
From: Corey Minyard @ 2020-05-06 13:48 UTC (permalink / raw)
  To: Julien Grall
  Cc: Stefano Stabellini, Roman Shaposhnik, jeff.kubascik,
	Julien Grall, xen-devel, Stefano Stabellini

On Sat, May 02, 2020 at 12:46:14PM +0100, Julien Grall wrote:
> Hi,
> 
> On 02/05/2020 03:16, Corey Minyard wrote:
> > On Fri, May 01, 2020 at 06:06:11PM -0700, Roman Shaposhnik wrote:
> > > On Fri, May 1, 2020 at 4:42 AM Corey Minyard <minyard@acm.org> wrote:
> > > > 
> > > > On Thu, Apr 30, 2020 at 07:20:05PM -0700, Roman Shaposhnik wrote:
> > > > > Hi!
> > > > > 
> > > > > I'm trying to run Xen on Raspberry Pi 4 with 5.6.1 stock,
> > > > > upstream kernel. The kernel itself works perfectly well
> > > > > on the board. When I try booting it as Dom0 under Xen,
> > > > > it goes into a stacktrace (attached).
> > > > 
> > > > Getting Xen working on the Pi4 requires a lot of moving parts, and they
> > > > all have to be right.
> > > 
> > > Tell me about it! It is a pretty frustrating journey to align
> > > everything just right.
> > > On the other hand -- it seems worth to enable RPi as an ARM development
> > > platform for Xen given how ubiquitous it is.
> > > 
> > > Hence me trying to combine pristine upstream kernel (5.6.1) with
> > > pristine upstream
> > > Xen to enable 100% upstream developer workflow on RPi.
> > > 
> > > > > Looking at what nice folks over at Dornerworks have previously
> > > > > done to make RPi kernels boot as Dom0 I've come across these
> > > > > 3 patches:
> > > > >      https://github.com/dornerworks/xen-rpi4-builder/tree/master/patches/linux
> > > > > 
> > > > > The first patch seems irrelevant (unless I'm missing something
> > > > > really basic here).
> > > > 
> > > > It might be irrelevant for your configuration, assuming that Xen gets
> > > > the right information from EFI.  I haven't tried EFI booting.
> > > 
> > > I'd doing a bit of belt-and-suspenders strategy really -- I'm actually
> > > using UEFI u-boot implementation that pre-populates device trees
> > > and then I'm also forcing an extra copy of it to be load explicitly
> > > via the GRUB devicetree command (GRUB runs as a UEFI payload).
> > > 
> > > I also have access to the semi-official TianoCore RPi4 port that seems
> > > to be working pretty well: https://github.com/pftf/RPi4/releases/tag/v1.5
> > > for booting all sort of UEFI payloads on RPi4.
> > > 
> > > > > The 2nd patch applied with no issue (but
> > > > > I don't think it is related) but the 3d patch failed to apply on
> > > > > account of 5.6.1 kernel no longer having:
> > > > >      dev->archdata.dev_dma_ops
> > > > > E.g.
> > > > >      https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/arch/arm64/mm/dma-mapping.c?h=v5.6.1#n55
> > > > > 
> > > > > I've tried to emulate the effect of the patch by simply introducing
> > > > > a static variable that would signal that we already initialized
> > > > > dev->dma_ops -- but that didn't help at all.
> > > > > 
> > > > > I'm CCing Jeff Kubascik to see if the original authors of that Corey Minyard
> > > > > to see if may be they have any suggestions on how this may be dealt
> > > > > with.
> > > > > 
> > > > > Any advice would be greatly appreciated!
> > > > 
> > > > What's your Pi4 config.txt file look like? The GIC is not being handled
> > > > correctly, and I'm guessing that configuration is wrong.  You can't use
> > > > the stock config.txt file with Xen, you have to modify the configuration a
> > > > bit.
> > > 
> > > Understood. I'm actually using a custom one:
> > >      https://github.com/lf-edge/eve/blob/master/pkg/u-boot/rpi/config.txt
> > > 
> > > I could swear that I had a GIC setting in it -- but apparently no -- so
> > > I added the following at the top of what you could see at the URL above:
> > > 
> > > total_mem=4096
> > > enable_gic=1
> > > 
> > > > I think just adding:
> > > > 
> > > > enable_gic=1
> > > > total_mem=1024
> > > 
> > > Right -- but my board has 4G memory -- so I think what I did above should work.
> > 
> > Nope.  If you say 4096M of RAM, your issue is almost certainly DMA, but
> > it's not (just) the Linux code.  On the Raspberry Pi 4, several devices
> > cannot DMA to above 1024M of RAM, but Xen does not handle this.  The
> > 1024M of RAM is a limitation you will have to live with until Xen has a
> > fix.
> 
> IIUC, dom0 would need to have some memory below 1GB for this to work, am I
> correct?

FYI, this also seems to fix the issue with HDMI not working.

-corey

> 
> If so could you try the following patch?
> 
> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> index 430708753642..002f49dba74b 100644
> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -282,7 +282,7 @@ static void __init allocate_memory_11(struct domain *d,
>       */
>      while ( order >= min_low_order )
>      {
> -        for ( bits = order ; bits <= (lowmem ? 32 : PADDR_BITS); bits++ )
> +        for ( bits = order ; bits <= (lowmem ? 30 : PADDR_BITS); bits++ )
>          {
>              pg = alloc_domheap_pages(d, order, MEMF_bits(bits));
>              if ( pg != NULL )
> @@ -313,7 +313,7 @@ static void __init allocate_memory_11(struct domain *d,
>      order = get_allocation_size(kinfo->unassigned_mem);
>      while ( kinfo->unassigned_mem && kinfo->mem.nr_banks < NR_MEM_BANKS )
>      {
> -        pg = alloc_domheap_pages(d, order, lowmem ? MEMF_bits(32) : 0);
> +        pg = alloc_domheap_pages(d, order, lowmem ? MEMF_bits(30) : 0);
>          if ( !pg )
>          {
>              order --;
> 
> 
> Cheers,
> 
> -- 
> Julien Grall


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-06 13:48         ` Corey Minyard
@ 2020-05-06 13:56           ` Julien Grall
  0 siblings, 0 replies; 45+ messages in thread
From: Julien Grall @ 2020-05-06 13:56 UTC (permalink / raw)
  To: minyard
  Cc: Stefano Stabellini, Roman Shaposhnik, jeff.kubascik,
	Julien Grall, xen-devel, Stefano Stabellini

Hi,

On 06/05/2020 14:48, Corey Minyard wrote:
> On Sat, May 02, 2020 at 12:46:14PM +0100, Julien Grall wrote:
>> Hi,
>>
>> On 02/05/2020 03:16, Corey Minyard wrote:
>>> On Fri, May 01, 2020 at 06:06:11PM -0700, Roman Shaposhnik wrote:
>>>> On Fri, May 1, 2020 at 4:42 AM Corey Minyard <minyard@acm.org> wrote:
>>>>>
>>>>> On Thu, Apr 30, 2020 at 07:20:05PM -0700, Roman Shaposhnik wrote:
>>>>>> Hi!
>>>>>>
>>>>>> I'm trying to run Xen on Raspberry Pi 4 with 5.6.1 stock,
>>>>>> upstream kernel. The kernel itself works perfectly well
>>>>>> on the board. When I try booting it as Dom0 under Xen,
>>>>>> it goes into a stacktrace (attached).
>>>>>
>>>>> Getting Xen working on the Pi4 requires a lot of moving parts, and they
>>>>> all have to be right.
>>>>
>>>> Tell me about it! It is a pretty frustrating journey to align
>>>> everything just right.
>>>> On the other hand -- it seems worth to enable RPi as an ARM development
>>>> platform for Xen given how ubiquitous it is.
>>>>
>>>> Hence me trying to combine pristine upstream kernel (5.6.1) with
>>>> pristine upstream
>>>> Xen to enable 100% upstream developer workflow on RPi.
>>>>
>>>>>> Looking at what nice folks over at Dornerworks have previously
>>>>>> done to make RPi kernels boot as Dom0 I've come across these
>>>>>> 3 patches:
>>>>>>       https://github.com/dornerworks/xen-rpi4-builder/tree/master/patches/linux
>>>>>>
>>>>>> The first patch seems irrelevant (unless I'm missing something
>>>>>> really basic here).
>>>>>
>>>>> It might be irrelevant for your configuration, assuming that Xen gets
>>>>> the right information from EFI.  I haven't tried EFI booting.
>>>>
>>>> I'd doing a bit of belt-and-suspenders strategy really -- I'm actually
>>>> using UEFI u-boot implementation that pre-populates device trees
>>>> and then I'm also forcing an extra copy of it to be load explicitly
>>>> via the GRUB devicetree command (GRUB runs as a UEFI payload).
>>>>
>>>> I also have access to the semi-official TianoCore RPi4 port that seems
>>>> to be working pretty well: https://github.com/pftf/RPi4/releases/tag/v1.5
>>>> for booting all sort of UEFI payloads on RPi4.
>>>>
>>>>>> The 2nd patch applied with no issue (but
>>>>>> I don't think it is related) but the 3d patch failed to apply on
>>>>>> account of 5.6.1 kernel no longer having:
>>>>>>       dev->archdata.dev_dma_ops
>>>>>> E.g.
>>>>>>       https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/arch/arm64/mm/dma-mapping.c?h=v5.6.1#n55
>>>>>>
>>>>>> I've tried to emulate the effect of the patch by simply introducing
>>>>>> a static variable that would signal that we already initialized
>>>>>> dev->dma_ops -- but that didn't help at all.
>>>>>>
>>>>>> I'm CCing Jeff Kubascik to see if the original authors of that Corey Minyard
>>>>>> to see if may be they have any suggestions on how this may be dealt
>>>>>> with.
>>>>>>
>>>>>> Any advice would be greatly appreciated!
>>>>>
>>>>> What's your Pi4 config.txt file look like? The GIC is not being handled
>>>>> correctly, and I'm guessing that configuration is wrong.  You can't use
>>>>> the stock config.txt file with Xen, you have to modify the configuration a
>>>>> bit.
>>>>
>>>> Understood. I'm actually using a custom one:
>>>>       https://github.com/lf-edge/eve/blob/master/pkg/u-boot/rpi/config.txt
>>>>
>>>> I could swear that I had a GIC setting in it -- but apparently no -- so
>>>> I added the following at the top of what you could see at the URL above:
>>>>
>>>> total_mem=4096
>>>> enable_gic=1
>>>>
>>>>> I think just adding:
>>>>>
>>>>> enable_gic=1
>>>>> total_mem=1024
>>>>
>>>> Right -- but my board has 4G memory -- so I think what I did above should work.
>>>
>>> Nope.  If you say 4096M of RAM, your issue is almost certainly DMA, but
>>> it's not (just) the Linux code.  On the Raspberry Pi 4, several devices
>>> cannot DMA to above 1024M of RAM, but Xen does not handle this.  The
>>> 1024M of RAM is a limitation you will have to live with until Xen has a
>>> fix.
>>
>> IIUC, dom0 would need to have some memory below 1GB for this to work, am I
>> correct?
> 
> FYI, this also seems to fix the issue with HDMI not working.

Thank you for the testing! I will have a look how I can properly 
upstream this fix (I think we want to keep 4GB limit for other platforms).

Cheers,

-- 
Julien Grall


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-06 13:42                             ` Boris Ostrovsky
@ 2020-05-06 16:14                               ` Nataliya Korovkina
  2020-05-06 17:34                                 ` Stefano Stabellini
  2020-05-06 17:35                                 ` Boris Ostrovsky
  0 siblings, 2 replies; 45+ messages in thread
From: Nataliya Korovkina @ 2020-05-06 16:14 UTC (permalink / raw)
  To: Boris Ostrovsky
  Cc: Jürgen Groß,
	Peng Fan, Stefano Stabellini, Julien Grall, minyard,
	Roman Shaposhnik, jeff.kubascik, Julien Grall, xen-devel,
	Stefano Stabellini

On Wed, May 6, 2020 at 9:43 AM Boris Ostrovsky
<boris.ostrovsky@oracle.com> wrote:
>
>
> On 5/6/20 9:08 AM, Nataliya Korovkina wrote:
> > Hello,
> >
> > What I found out: rpi_firmware_property_list() allocates memory from
> > dma_atomic_pool which was mapped to VMALLOC region, so virt_to_page()
> > is not eligible in this case.
>
>
> So then it seems it didn't go through xen_swiotlb_alloc_coherent(). In
> which case it has no business calling xen_swiotlb_free_coherent().
>
>
> -boris
>
>
>
>

It does go.
dma_alloc_coherent() indirectly calls xen_swiotlb_alloc_coherent(),
then  xen_alloc_coherent_pages() eventually calls arch_dma_alloc() in
remap.c which successfully allocates pages from atomic pool.

The patch Julien offered for domian_build.c moved Dom0 banks in the
first G of RAM.
So it covered the previous symptom (a crash during allocation) because
now we avoid pathway  when we mark a page "XenMapped".

But the symptom still remains in xen_swiotlb_free_coherent() because
"TestPage..." is called unconditionally. virt_to_page() is not
applicable to such allocations.

Thanks,
Nataliya


^ permalink raw reply	[flat|nested] 45+ messages in thread

* RE: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-06  8:54                         ` Peng Fan
  2020-05-06 13:08                           ` Nataliya Korovkina
@ 2020-05-06 17:16                           ` Stefano Stabellini
  1 sibling, 0 replies; 45+ messages in thread
From: Stefano Stabellini @ 2020-05-06 17:16 UTC (permalink / raw)
  To: Peng Fan
  Cc: Jürgen Groß,
	Stefano Stabellini, Julien Grall, minyard, Roman Shaposhnik,
	jeff.kubascik, Julien Grall, xen-devel, boris.ostrovsky,
	Stefano Stabellini

[-- Attachment #1: Type: text/plain, Size: 10681 bytes --]

On Wed, 6 May 2020, Peng Fan wrote:
> > Subject: Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
> > 
> > On 06.05.20 00:34, Stefano Stabellini wrote:
> > > + Boris, Jürgen
> > >
> > > See the crash Roman is seeing booting dom0 on the Raspberry Pi. It is
> > > related to the recent xen dma_ops changes. Possibly the same thing
> > > reported by Peng here:
> 
> Yes. It is same issue.
> 
> > >
> > > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmarc
> > > .info%2F%3Fl%3Dlinux-kernel%26m%3D158805976230485%26w%3D2&am
> > p;data=02%
> > >
> > 7C01%7Cpeng.fan%40nxp.com%7Cab98b2db94484141a8ad08d7f1803372%7
> > C686ea1d
> > >
> > 3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637243405233572354&amp;sd
> > ata=0Yr5h
> > > Rg4%2FuApsBpTwIIL4StZU%2FUA55oP5Lfnfmtj4Hg%3D&amp;reserved=0
> > >
> > > An in-depth analysis below.
> > >
> > >
> > > On Mon, 4 May 2020, Roman Shaposhnik wrote:
> > >>>> [    2.534292] Unable to handle kernel paging request at virtual
> > >>>> address 000000000026c340
> > >>>> [    2.542373] Mem abort info:
> > >>>> [    2.545257]   ESR = 0x96000004
> > >>>> [    2.548421]   EC = 0x25: DABT (current EL), IL = 32 bits
> > >>>> [    2.553877]   SET = 0, FnV = 0
> > >>>> [    2.557023]   EA = 0, S1PTW = 0
> > >>>> [    2.560297] Data abort info:
> > >>>> [    2.563258]   ISV = 0, ISS = 0x00000004
> > >>>> [    2.567208]   CM = 0, WnR = 0
> > >>>> [    2.570294] [000000000026c340] user address but active_mm is
> > swapper
> > >>>> [    2.576783] Internal error: Oops: 96000004 [#1] SMP
> > >>>> [    2.581784] Modules linked in:
> > >>>> [    2.584950] CPU: 3 PID: 135 Comm: kworker/3:1 Not tainted
> > 5.6.1-default #9
> > >>>> [    2.591970] Hardware name: Raspberry Pi 4 Model B (DT)
> > >>>> [    2.597256] Workqueue: events deferred_probe_work_func
> > >>>> [    2.602509] pstate: 60000005 (nZCv daif -PAN -UAO)
> > >>>> [    2.607431] pc : xen_swiotlb_free_coherent+0x198/0x1d8
> > >>>> [    2.612696] lr : dma_free_attrs+0x98/0xd0
> > >>>> [    2.616827] sp : ffff800011db3970
> > >>>> [    2.620242] x29: ffff800011db3970 x28: 00000000000f7b00
> > >>>> [    2.625695] x27: 0000000000001000 x26: ffff000037b68410
> > >>>> [    2.631129] x25: 0000000000000001 x24: 00000000f7b00000
> > >>>> [    2.636583] x23: 0000000000000000 x22: 0000000000000000
> > >>>> [    2.642017] x21: ffff800011b0d000 x20: ffff80001179b548
> > >>>> [    2.647461] x19: ffff000037b68410 x18: 0000000000000010
> > >>>> [    2.652905] x17: ffff000035d66a00 x16: 00000000deadbeef
> > >>>> [    2.658348] x15: ffffffffffffffff x14: ffff80001179b548
> > >>>> [    2.663792] x13: ffff800091db37b7 x12: ffff800011db37bf
> > >>>> [    2.669236] x11: ffff8000117c7000 x10: ffff800011db3740
> > >>>> [    2.674680] x9 : 00000000ffffffd0 x8 : ffff80001071e980
> > >>>> [    2.680124] x7 : 0000000000000132 x6 : ffff80001197a6ab
> > >>>> [    2.685568] x5 : 0000000000000000 x4 : 0000000000000000
> > >>>> [    2.691012] x3 : 00000000f7b00000 x2 : fffffdffffe00000
> > >>>> [    2.696465] x1 : 000000000026c340 x0 : 000002000046c340
> > >>>> [    2.701899] Call trace:
> > >>>> [    2.704452]  xen_swiotlb_free_coherent+0x198/0x1d8
> > >>>> [    2.709367]  dma_free_attrs+0x98/0xd0
> > >>>> [    2.713143]  rpi_firmware_property_list+0x1e4/0x240
> > >>>> [    2.718146]  rpi_firmware_property+0x6c/0xb0
> > >>>> [    2.722535]  rpi_firmware_probe+0xf0/0x1e0
> > >>>> [    2.726760]  platform_drv_probe+0x50/0xa0
> > >>>> [    2.730879]  really_probe+0xd8/0x438
> > >>>> [    2.734567]  driver_probe_device+0xdc/0x130
> > >>>> [    2.738870]  __device_attach_driver+0x88/0x108
> > >>>> [    2.743434]  bus_for_each_drv+0x78/0xc8
> > >>>> [    2.747386]  __device_attach+0xd4/0x158
> > >>>> [    2.751337]  device_initial_probe+0x10/0x18
> > >>>> [    2.755649]  bus_probe_device+0x90/0x98
> > >>>> [    2.759590]  deferred_probe_work_func+0x88/0xd8
> > >>>> [    2.764244]  process_one_work+0x1f0/0x3c0
> > >>>> [    2.768369]  worker_thread+0x138/0x570
> > >>>> [    2.772234]  kthread+0x118/0x120
> > >>>> [    2.775571]  ret_from_fork+0x10/0x18
> > >>>> [    2.779263] Code: d34cfc00 f2dfbfe2 d37ae400 8b020001
> > (f8626800)
> > >>>> [    2.785492] ---[ end trace 4c435212e349f45f ]---
> > >>>> [    2.793340] usb 1-1: New USB device found, idVendor=2109,
> > >>>> idProduct=3431, bcdDevice= 4.20
> > >>>> [    2.801038] usb 1-1: New USB device strings: Mfr=0, Product=1,
> > SerialNumber=0
> > >>>> [    2.808297] usb 1-1: Product: USB2.0 Hub
> > >>>> [    2.813710] hub 1-1:1.0: USB hub found
> > >>>> [    2.817117] hub 1-1:1.0: 4 ports detected
> > >>>>
> > >>>> This is bailing out right here:
> > >>>>
> > >>>> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fg
> > >>>>
> > it.kernel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Fstable%2Flinux.g
> > >>>>
> > it%2Ftree%2Fdrivers%2Ffirmware%2Fraspberrypi.c%3Fh%3Dv5.6.1%23n125
> > &
> > >>>>
> > amp;data=02%7C01%7Cpeng.fan%40nxp.com%7Cab98b2db94484141a8ad0
> > 8d7f18
> > >>>>
> > 03372%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C6372434052
> > 335723
> > >>>>
> > 54&amp;sdata=h1dyHkb%2FsifUqH3Z0m3uIIcqUhXVwhHS%2Ft%2FVvig%2Fo
> > u4%3D
> > >>>> &amp;reserved=0
> > >>>>
> > >>>> FYIW (since I modified the source to actually print what was
> > >>>> returned right before it bails) we get:
> > >>>>     buf[1] == 0x800000004
> > >>>>     buf[2] == 0x00000001
> > >>>>
> > >>>> Status 0x800000004 is of course suspicious since it is not even listed
> > here:
> > >>>>
> > >>>> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fg
> > >>>>
> > it.kernel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Fstable%2Flinux.g
> > >>>>
> > it%2Ftree%2Finclude%2Fsoc%2Fbcm2835%2Fraspberrypi-firmware.h%23n14
> > &
> > >>>>
> > amp;data=02%7C01%7Cpeng.fan%40nxp.com%7Cab98b2db94484141a8ad0
> > 8d7f18
> > >>>>
> > 03372%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C6372434052
> > 335723
> > >>>>
> > 54&amp;sdata=3yMm%2FujHCVf%2FigpNLE8hcBWVcvdGrZGv5TuqeMzMV0
> > U%3D&amp
> > >>>> ;reserved=0
> > >>>>
> > >>>> So it appears that this DMA request path is somehow busted and it
> > >>>> would be really nice to figure out why.
> > >>>
> > >>> You have actually discovered a genuine bug in the recent xen dma
> > >>> rework in Linux. Congrats :-)
> > >>
> > >> Nice! ;-)
> > >>
> > >>> I am doing some guesswork here, but from what I read in the thread
> > >>> and the information in this email I think this patch might fix the issue.
> > >>> If it doesn't fix the issue please add a few printks in
> > >>> drivers/xen/swiotlb-xen.c:xen_swiotlb_free_coherent and please let
> > >>> me know where exactly it crashes.
> > >>>
> > >>>
> > >>> diff --git a/include/xen/arm/page-coherent.h
> > >>> b/include/xen/arm/page-coherent.h index b9cc11e887ed..ff4677ed9788
> > >>> 100644
> > >>> --- a/include/xen/arm/page-coherent.h
> > >>> +++ b/include/xen/arm/page-coherent.h
> > >>> @@ -8,12 +8,17 @@
> > >>>   static inline void *xen_alloc_coherent_pages(struct device *hwdev,
> > size_t size,
> > >>>                  dma_addr_t *dma_handle, gfp_t flags, unsigned
> > long attrs)
> > >>>   {
> > >>> +       void *cpu_addr;
> > >>> +       if (dma_alloc_from_dev_coherent(hwdev, size, dma_handle,
> > &cpu_addr))
> > >>> +               return cpu_addr;
> > >>>          return dma_direct_alloc(hwdev, size, dma_handle, flags,
> > attrs);
> > >>>   }
> > >>>
> > >>>   static inline void xen_free_coherent_pages(struct device *hwdev,
> > size_t size,
> > >>>                  void *cpu_addr, dma_addr_t dma_handle,
> > unsigned long attrs)
> > >>>   {
> > >>> +       if (dma_release_from_dev_coherent(hwdev, get_order(size),
> > cpu_addr))
> > >>> +               return;
> > >>>          dma_direct_free(hwdev, size, cpu_addr, dma_handle, attrs);
> > >>>   }
> > >>
> > >> Applied the patch, but it didn't help and after printk's it turns out
> > >> it surprisingly crashes right inside this (rather convoluted if you
> > >> ask me) if statement:
> > >>
> > >> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit
> > >> .kernel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Fstable%2Flinux.gi
> > t%2
> > >>
> > Ftree%2Fdrivers%2Fxen%2Fswiotlb-xen.c%3Fh%3Dv5.6.1%23n349&amp;dat
> > a=02
> > >> %7C01%7Cpeng.fan%40nxp.com%7Cab98b2db94484141a8ad08d7f18033
> > 72%7C686ea
> > >>
> > 1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637243405233572354&amp;
> > sdata=Fu
> > >>
> > BWGAEg%2FkbsnYIIGHmiICTqy%2BcgZs7V%2BMneJum%2BTts%3D&amp;res
> > erved=0
> > >>
> > >> So it makes sense that the patch didn't help -- we never hit that
> > >> xen_free_coherent_pages.
> > >
> > > The crash happens here:
> > >
> > > 	if (!WARN_ON((dev_addr + size - 1 > dma_mask) ||
> > > 		     range_straddles_page_boundary(phys, size)) &&
> > > 	    TestClearPageXenRemapped(virt_to_page(vaddr)))
> > > 		xen_destroy_contiguous_region(phys, order);
> > >
> > > I don't know exactly what is causing the crash. Is it the WARN_ON
> > somehow?
> > > Is it TestClearPageXenRemapped? Neither should cause a crash in theory.
> > >
> > >
> > > But I do know that there are problems with that if statement on ARM.
> > > It can trigger for one of the following conditions:
> > >
> > > 1) dev_addr + size - 1 > dma_mask
> > > 2) range_straddles_page_boundary(phys, size)
> 
> 
> diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
> index bd3a10dfac15..33b027cb0b2a 100644
> --- a/drivers/xen/swiotlb-xen.c
> +++ b/drivers/xen/swiotlb-xen.c
> @@ -346,6 +346,7 @@ xen_swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr,
>         /* Convert the size to actually allocated. */
>         size = 1UL << (order + XEN_PAGE_SHIFT);
> 
> +       printk("%x %x %px %x %px\n", dev_addr + size - 1 > dma_mask, range_straddles_page_boundary(phys, size), virt_to_page(vaddr), phys, vaddr);
>         if (!WARN_ON((dev_addr + size - 1 > dma_mask) ||
>                      range_straddles_page_boundary(phys, size)) &&
>             TestClearPageXenRemapped(virt_to_page(vaddr)))
> 
> 
> In my case:
> 0 0 0000000000271f40 bc000000 ffff800011c7d000
> 
> 
> The alloc path in my side:
> 314         phys = *dma_handle;
> 315         dev_addr = xen_phys_to_bus(phys);
> 316         if (((dev_addr + size - 1 <= dma_mask)) &&
> 317             !range_straddles_page_boundary(phys, size))
> 318                 *dma_handle = dev_addr;
> 
> So I am confused why the free path needs clear xen remap.

Thanks this is useful information, now I understand what is going on.

In your case it shouldn't take the if path in xen_swiotlb_free_coherent
at all, but still should evaluate the if condition. So the if would
return false for you, but you can't finish evaluating the if because
virt_to_page causes a crash.

^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-06  5:41                       ` Jürgen Groß
  2020-05-06  8:54                         ` Peng Fan
@ 2020-05-06 17:32                         ` Stefano Stabellini
  1 sibling, 0 replies; 45+ messages in thread
From: Stefano Stabellini @ 2020-05-06 17:32 UTC (permalink / raw)
  To: Jürgen Groß
  Cc: peng.fan, Stefano Stabellini, Julien Grall, minyard,
	Roman Shaposhnik, jeff.kubascik, Julien Grall, xen-devel,
	boris.ostrovsky, Stefano Stabellini

[-- Attachment #1: Type: text/plain, Size: 10159 bytes --]

On Wed, 6 May 2020, Jürgen Groß wrote:
> On 06.05.20 00:34, Stefano Stabellini wrote:
> > + Boris, Jürgen
> > 
> > See the crash Roman is seeing booting dom0 on the Raspberry Pi. It is
> > related to the recent xen dma_ops changes. Possibly the same thing
> > reported by Peng here:
> > 
> > https://marc.info/?l=linux-kernel&m=158805976230485&w=2
> > 
> > An in-depth analysis below.
> > 
> > 
> > On Mon, 4 May 2020, Roman Shaposhnik wrote:
> > > > > [    2.534292] Unable to handle kernel paging request at virtual
> > > > > address 000000000026c340
> > > > > [    2.542373] Mem abort info:
> > > > > [    2.545257]   ESR = 0x96000004
> > > > > [    2.548421]   EC = 0x25: DABT (current EL), IL = 32 bits
> > > > > [    2.553877]   SET = 0, FnV = 0
> > > > > [    2.557023]   EA = 0, S1PTW = 0
> > > > > [    2.560297] Data abort info:
> > > > > [    2.563258]   ISV = 0, ISS = 0x00000004
> > > > > [    2.567208]   CM = 0, WnR = 0
> > > > > [    2.570294] [000000000026c340] user address but active_mm is
> > > > > swapper
> > > > > [    2.576783] Internal error: Oops: 96000004 [#1] SMP
> > > > > [    2.581784] Modules linked in:
> > > > > [    2.584950] CPU: 3 PID: 135 Comm: kworker/3:1 Not tainted
> > > > > 5.6.1-default #9
> > > > > [    2.591970] Hardware name: Raspberry Pi 4 Model B (DT)
> > > > > [    2.597256] Workqueue: events deferred_probe_work_func
> > > > > [    2.602509] pstate: 60000005 (nZCv daif -PAN -UAO)
> > > > > [    2.607431] pc : xen_swiotlb_free_coherent+0x198/0x1d8
> > > > > [    2.612696] lr : dma_free_attrs+0x98/0xd0
> > > > > [    2.616827] sp : ffff800011db3970
> > > > > [    2.620242] x29: ffff800011db3970 x28: 00000000000f7b00
> > > > > [    2.625695] x27: 0000000000001000 x26: ffff000037b68410
> > > > > [    2.631129] x25: 0000000000000001 x24: 00000000f7b00000
> > > > > [    2.636583] x23: 0000000000000000 x22: 0000000000000000
> > > > > [    2.642017] x21: ffff800011b0d000 x20: ffff80001179b548
> > > > > [    2.647461] x19: ffff000037b68410 x18: 0000000000000010
> > > > > [    2.652905] x17: ffff000035d66a00 x16: 00000000deadbeef
> > > > > [    2.658348] x15: ffffffffffffffff x14: ffff80001179b548
> > > > > [    2.663792] x13: ffff800091db37b7 x12: ffff800011db37bf
> > > > > [    2.669236] x11: ffff8000117c7000 x10: ffff800011db3740
> > > > > [    2.674680] x9 : 00000000ffffffd0 x8 : ffff80001071e980
> > > > > [    2.680124] x7 : 0000000000000132 x6 : ffff80001197a6ab
> > > > > [    2.685568] x5 : 0000000000000000 x4 : 0000000000000000
> > > > > [    2.691012] x3 : 00000000f7b00000 x2 : fffffdffffe00000
> > > > > [    2.696465] x1 : 000000000026c340 x0 : 000002000046c340
> > > > > [    2.701899] Call trace:
> > > > > [    2.704452]  xen_swiotlb_free_coherent+0x198/0x1d8
> > > > > [    2.709367]  dma_free_attrs+0x98/0xd0
> > > > > [    2.713143]  rpi_firmware_property_list+0x1e4/0x240
> > > > > [    2.718146]  rpi_firmware_property+0x6c/0xb0
> > > > > [    2.722535]  rpi_firmware_probe+0xf0/0x1e0
> > > > > [    2.726760]  platform_drv_probe+0x50/0xa0
> > > > > [    2.730879]  really_probe+0xd8/0x438
> > > > > [    2.734567]  driver_probe_device+0xdc/0x130
> > > > > [    2.738870]  __device_attach_driver+0x88/0x108
> > > > > [    2.743434]  bus_for_each_drv+0x78/0xc8
> > > > > [    2.747386]  __device_attach+0xd4/0x158
> > > > > [    2.751337]  device_initial_probe+0x10/0x18
> > > > > [    2.755649]  bus_probe_device+0x90/0x98
> > > > > [    2.759590]  deferred_probe_work_func+0x88/0xd8
> > > > > [    2.764244]  process_one_work+0x1f0/0x3c0
> > > > > [    2.768369]  worker_thread+0x138/0x570
> > > > > [    2.772234]  kthread+0x118/0x120
> > > > > [    2.775571]  ret_from_fork+0x10/0x18
> > > > > [    2.779263] Code: d34cfc00 f2dfbfe2 d37ae400 8b020001 (f8626800)
> > > > > [    2.785492] ---[ end trace 4c435212e349f45f ]---
> > > > > [    2.793340] usb 1-1: New USB device found, idVendor=2109,
> > > > > idProduct=3431, bcdDevice= 4.20
> > > > > [    2.801038] usb 1-1: New USB device strings: Mfr=0, Product=1,
> > > > > SerialNumber=0
> > > > > [    2.808297] usb 1-1: Product: USB2.0 Hub
> > > > > [    2.813710] hub 1-1:1.0: USB hub found
> > > > > [    2.817117] hub 1-1:1.0: 4 ports detected
> > > > > 
> > > > > This is bailing out right here:
> > > > >       https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/firmware/raspberrypi.c?h=v5.6.1#n125
> > > > > 
> > > > > FYIW (since I modified the source to actually print what was returned
> > > > > right before it bails) we get:
> > > > >     buf[1] == 0x800000004
> > > > >     buf[2] == 0x00000001
> > > > > 
> > > > > Status 0x800000004 is of course suspicious since it is not even listed
> > > > > here:
> > > > >      https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/include/soc/bcm2835/raspberrypi-firmware.h#n14
> > > > > 
> > > > > So it appears that this DMA request path is somehow busted and it
> > > > > would be really nice to figure out why.
> > > > 
> > > > You have actually discovered a genuine bug in the recent xen dma rework
> > > > in Linux. Congrats :-)
> > > 
> > > Nice! ;-)
> > > 
> > > > I am doing some guesswork here, but from what I read in the thread and
> > > > the information in this email I think this patch might fix the issue.
> > > > If it doesn't fix the issue please add a few printks in
> > > > drivers/xen/swiotlb-xen.c:xen_swiotlb_free_coherent and please let me
> > > > know where exactly it crashes.
> > > > 
> > > > 
> > > > diff --git a/include/xen/arm/page-coherent.h
> > > > b/include/xen/arm/page-coherent.h
> > > > index b9cc11e887ed..ff4677ed9788 100644
> > > > --- a/include/xen/arm/page-coherent.h
> > > > +++ b/include/xen/arm/page-coherent.h
> > > > @@ -8,12 +8,17 @@
> > > >   static inline void *xen_alloc_coherent_pages(struct device *hwdev,
> > > > size_t size,
> > > >                  dma_addr_t *dma_handle, gfp_t flags, unsigned long
> > > > attrs)
> > > >   {
> > > > +       void *cpu_addr;
> > > > +       if (dma_alloc_from_dev_coherent(hwdev, size, dma_handle,
> > > > &cpu_addr))
> > > > +               return cpu_addr;
> > > >          return dma_direct_alloc(hwdev, size, dma_handle, flags, attrs);
> > > >   }
> > > > 
> > > >   static inline void xen_free_coherent_pages(struct device *hwdev,
> > > > size_t size,
> > > >                  void *cpu_addr, dma_addr_t dma_handle, unsigned long
> > > > attrs)
> > > >   {
> > > > +       if (dma_release_from_dev_coherent(hwdev, get_order(size),
> > > > cpu_addr))
> > > > +               return;
> > > >          dma_direct_free(hwdev, size, cpu_addr, dma_handle, attrs);
> > > >   }
> > > 
> > > Applied the patch, but it didn't help and after printk's it turns out
> > > it surprisingly crashes right inside this (rather convoluted if you
> > > ask me) if statement:
> > >      https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/xen/swiotlb-xen.c?h=v5.6.1#n349
> > > 
> > > So it makes sense that the patch didn't help -- we never hit that
> > > xen_free_coherent_pages.
> >   The crash happens here:
> > 
> > 	if (!WARN_ON((dev_addr + size - 1 > dma_mask) ||
> > 		     range_straddles_page_boundary(phys, size)) &&
> > 	    TestClearPageXenRemapped(virt_to_page(vaddr)))
> > 		xen_destroy_contiguous_region(phys, order);
> > 
> > I don't know exactly what is causing the crash. Is it the WARN_ON somehow?
> > Is it TestClearPageXenRemapped? Neither should cause a crash in theory.
> > 
> > 
> > But I do know that there are problems with that if statement on ARM. It
> > can trigger for one of the following conditions:
> > 
> > 1) dev_addr + size - 1 > dma_mask
> > 2) range_straddles_page_boundary(phys, size)
> > 
> > 
> > The first condition might happen after bef4d2037d214 because
> > dma_direct_alloc might not respect the device dma_mask. It is actually a
> > bug and I would like to keep the WARN_ON for that. The patch I sent
> > yesterday (https://marc.info/?l=xen-devel&m=158865080224504) should
> > solve that issue. But Roman is telling us that the crash still persists.
> > 
> > The second condition is completely normal and not an error on ARM
> > because dom0 is 1:1 mapped. It is not an issue if the address range is
> > straddling a page boundary. We certainly shouldn't WARN (or crash).
> > 
> > So, I suggest something similar to Peng's patch, appended.
> > 
> > Roman, does it solve your problem?
> > 
> > 
> > diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
> > index b6d27762c6f8..994ca3a4b653 100644
> > --- a/drivers/xen/swiotlb-xen.c
> > +++ b/drivers/xen/swiotlb-xen.c
> > @@ -346,9 +346,8 @@ xen_swiotlb_free_coherent(struct device *hwdev, size_t
> > size, void *vaddr,
> >   	/* Convert the size to actually allocated. */
> >   	size = 1UL << (order + XEN_PAGE_SHIFT);
> >   -	if (!WARN_ON((dev_addr + size - 1 > dma_mask) ||
> > -		     range_straddles_page_boundary(phys, size)) &&
> > -	    TestClearPageXenRemapped(virt_to_page(vaddr)))
> > +	WARN_ON(dev_addr + size - 1 > dma_mask);
> > +	if (TestClearPageXenRemapped(virt_to_page(vaddr)))
> >   		xen_destroy_contiguous_region(phys, order);
> 
> This is a very bad idea for x86. Calling xen_destroy_contiguous_region()
> for cases where it shouldn't be called is causing subtle bugs in memory
> management, like pages being visible twice and thus resulting in weird
> memory inconsistencies.

I understand what you are saying but there is one thing I am missing:
on x86 how could it happen that either:

  dev_addr + size - 1 > dma_mask

or
  range_straddles_page_boundary(phys, size)

evaluates to true? It shouldn't right? If it does, it is an unexpected
error condition, is that right?

If that is the case, does it even make sense to continue at all?
Wouldn't it be better to do something like:

 
#ifdef CONFIG_X86
	if (WARN_ON(dev_addr + size - 1 > dma_mask) ||
	            range_straddles_page_boundary(phys, size)) {
	    return;
	}
#endif

	if (TestClearPageXenRemapped(virt_to_page(vaddr)))
 		xen_destroy_contiguous_region(phys, order);
 
 	xen_free_coherent_pages(hwdev, size, vaddr, (dma_addr_t)phys, attrs);


Or do you think that xen_free_coherent_pages should actually be called
anyway?

^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-06 16:14                               ` Nataliya Korovkina
@ 2020-05-06 17:34                                 ` Stefano Stabellini
  2020-05-06 21:12                                   ` Roman Shaposhnik
  2020-05-06 17:35                                 ` Boris Ostrovsky
  1 sibling, 1 reply; 45+ messages in thread
From: Stefano Stabellini @ 2020-05-06 17:34 UTC (permalink / raw)
  To: Nataliya Korovkina
  Cc: Jürgen Groß,
	Peng Fan, Stefano Stabellini, Julien Grall, minyard,
	Roman Shaposhnik, jeff.kubascik, Julien Grall, xen-devel,
	Boris Ostrovsky, Stefano Stabellini

On Wed, 6 May 2020, Nataliya Korovkina wrote:
> On Wed, May 6, 2020 at 9:43 AM Boris Ostrovsky
> <boris.ostrovsky@oracle.com> wrote:
> >
> >
> > On 5/6/20 9:08 AM, Nataliya Korovkina wrote:
> > > Hello,
> > >
> > > What I found out: rpi_firmware_property_list() allocates memory from
> > > dma_atomic_pool which was mapped to VMALLOC region, so virt_to_page()
> > > is not eligible in this case.
> >
> >
> > So then it seems it didn't go through xen_swiotlb_alloc_coherent(). In
> > which case it has no business calling xen_swiotlb_free_coherent().
> >
> >
> > -boris
> >
> >
> >
> >
> 
> It does go.
> dma_alloc_coherent() indirectly calls xen_swiotlb_alloc_coherent(),
> then  xen_alloc_coherent_pages() eventually calls arch_dma_alloc() in
> remap.c which successfully allocates pages from atomic pool.
> 
> The patch Julien offered for domian_build.c moved Dom0 banks in the
> first G of RAM.
> So it covered the previous symptom (a crash during allocation) because
> now we avoid pathway  when we mark a page "XenMapped".
> 
> But the symptom still remains in xen_swiotlb_free_coherent() because
> "TestPage..." is called unconditionally. virt_to_page() is not
> applicable to such allocations.

Ah! So this is the crux of the issue. I saw this kind of problem before
on ARM32 (in fact there are several comments warning not to use
virt_to_phys on ARM in drivers/xen/swiotlb-xen.c).


So, to recap we have 2 issues as far as I can tell:

- virt_to_page not working in some cases on ARM, leading to a crash
- WARN_ON for range_straddles_page_boundary which is normal on ARM

The appended patch addresses them by:

- using pfn_to_page instead virt_to_page
- moving the WARN_ON under a #ifdef (Juergen might have a better
  suggestion on how to rework the WARN_ON)

Please let me know if this patch works!

Cheers,

Stefano


diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
index b6d27762c6f8..0a40ac332a4c 100644
--- a/drivers/xen/swiotlb-xen.c
+++ b/drivers/xen/swiotlb-xen.c
@@ -322,7 +322,7 @@ xen_swiotlb_alloc_coherent(struct device *hwdev, size_t size,
 			xen_free_coherent_pages(hwdev, size, ret, (dma_addr_t)phys, attrs);
 			return NULL;
 		}
-		SetPageXenRemapped(virt_to_page(ret));
+		SetPageXenRemapped(pfn_to_page(PFN_DOWN(phys)));
 	}
 	memset(ret, 0, size);
 	return ret;
@@ -346,9 +346,14 @@ xen_swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr,
 	/* Convert the size to actually allocated. */
 	size = 1UL << (order + XEN_PAGE_SHIFT);
 
-	if (!WARN_ON((dev_addr + size - 1 > dma_mask) ||
-		     range_straddles_page_boundary(phys, size)) &&
-	    TestClearPageXenRemapped(virt_to_page(vaddr)))
+#ifdef CONFIG_X86
+	if (WARN_ON(dev_addr + size - 1 > dma_mask) ||
+	            range_straddles_page_boundary(phys, size)) {
+	    return;
+	}
+#endif
+
+	if (TestClearPageXenRemapped(pfn_to_page(PFN_DOWN(phys))))
 		xen_destroy_contiguous_region(phys, order);
 
 	xen_free_coherent_pages(hwdev, size, vaddr, (dma_addr_t)phys, attrs);


^ permalink raw reply related	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-06 16:14                               ` Nataliya Korovkina
  2020-05-06 17:34                                 ` Stefano Stabellini
@ 2020-05-06 17:35                                 ` Boris Ostrovsky
  2020-05-06 21:10                                   ` Roman Shaposhnik
  1 sibling, 1 reply; 45+ messages in thread
From: Boris Ostrovsky @ 2020-05-06 17:35 UTC (permalink / raw)
  To: Nataliya Korovkina
  Cc: Jürgen Groß,
	Peng Fan, Stefano Stabellini, Julien Grall, minyard,
	Roman Shaposhnik, jeff.kubascik, Julien Grall, xen-devel,
	Stefano Stabellini


On 5/6/20 12:14 PM, Nataliya Korovkina wrote:
> On Wed, May 6, 2020 at 9:43 AM Boris Ostrovsky
> <boris.ostrovsky@oracle.com> wrote:
>>
>> On 5/6/20 9:08 AM, Nataliya Korovkina wrote:
>>> Hello,
>>>
>>> What I found out: rpi_firmware_property_list() allocates memory from
>>> dma_atomic_pool which was mapped to VMALLOC region, so virt_to_page()
>>> is not eligible in this case.
>>
>> So then it seems it didn't go through xen_swiotlb_alloc_coherent(). In
>> which case it has no business calling xen_swiotlb_free_coherent().
>>
>>
>> -boris
>>
>>
>>
>>
> It does go.
> dma_alloc_coherent() indirectly calls xen_swiotlb_alloc_coherent(),
> then  xen_alloc_coherent_pages() eventually calls arch_dma_alloc() in
> remap.c which successfully allocates pages from atomic pool.


Yes, I was looking at x86's implementation of xen_alloc_coherent_pages().


>
> The patch Julien offered for domian_build.c moved Dom0 banks in the
> first G of RAM.
> So it covered the previous symptom (a crash during allocation) because
> now we avoid pathway  when we mark a page "XenMapped".
>
> But the symptom still remains in xen_swiotlb_free_coherent() because
> "TestPage..." is called unconditionally. virt_to_page() is not
> applicable to such allocations.


Perhaps we just need to make sure we are using right virt-to-page
method. Something like


diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
index b6d2776..f224e69 100644
--- a/drivers/xen/swiotlb-xen.c
+++ b/drivers/xen/swiotlb-xen.c
@@ -335,6 +335,7 @@ int __ref xen_swiotlb_init(int verbose, bool early)
        int order = get_order(size);
        phys_addr_t phys;
        u64 dma_mask = DMA_BIT_MASK(32);
+       struct page *pg;
 
        if (hwdev && hwdev->coherent_dma_mask)
                dma_mask = hwdev->coherent_dma_mask;
@@ -346,9 +347,12 @@ int __ref xen_swiotlb_init(int verbose, bool early)
        /* Convert the size to actually allocated. */
        size = 1UL << (order + XEN_PAGE_SHIFT);
 
+       pg = is_vmalloc_addr(vaddr) ? vmalloc_to_page(vaddr) :
virt_to_page(vaddr);
+       BUG_ON(!pg);
+
        if (!WARN_ON((dev_addr + size - 1 > dma_mask) ||
                     range_straddles_page_boundary(phys, size)) &&
-           TestClearPageXenRemapped(virt_to_page(vaddr)))
+           TestClearPageXenRemapped(pg))
                xen_destroy_contiguous_region(phys, order);
 
        xen_free_coherent_pages(hwdev, size, vaddr, (dma_addr_t)phys,
attrs);


(I have not tested this at all)



^ permalink raw reply related	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-06 17:35                                 ` Boris Ostrovsky
@ 2020-05-06 21:10                                   ` Roman Shaposhnik
  0 siblings, 0 replies; 45+ messages in thread
From: Roman Shaposhnik @ 2020-05-06 21:10 UTC (permalink / raw)
  To: Boris Ostrovsky
  Cc: Jürgen Groß,
	Peng Fan, Stefano Stabellini, Julien Grall, minyard,
	jeff.kubascik, Julien Grall, Nataliya Korovkina, xen-devel,
	Stefano Stabellini

On Wed, May 6, 2020 at 10:36 AM Boris Ostrovsky
<boris.ostrovsky@oracle.com> wrote:
>
>
> On 5/6/20 12:14 PM, Nataliya Korovkina wrote:
> > On Wed, May 6, 2020 at 9:43 AM Boris Ostrovsky
> > <boris.ostrovsky@oracle.com> wrote:
> >>
> >> On 5/6/20 9:08 AM, Nataliya Korovkina wrote:
> >>> Hello,
> >>>
> >>> What I found out: rpi_firmware_property_list() allocates memory from
> >>> dma_atomic_pool which was mapped to VMALLOC region, so virt_to_page()
> >>> is not eligible in this case.
> >>
> >> So then it seems it didn't go through xen_swiotlb_alloc_coherent(). In
> >> which case it has no business calling xen_swiotlb_free_coherent().
> >>
> >>
> >> -boris
> >>
> >>
> >>
> >>
> > It does go.
> > dma_alloc_coherent() indirectly calls xen_swiotlb_alloc_coherent(),
> > then  xen_alloc_coherent_pages() eventually calls arch_dma_alloc() in
> > remap.c which successfully allocates pages from atomic pool.
>
>
> Yes, I was looking at x86's implementation of xen_alloc_coherent_pages().
>
>
> >
> > The patch Julien offered for domian_build.c moved Dom0 banks in the
> > first G of RAM.
> > So it covered the previous symptom (a crash during allocation) because
> > now we avoid pathway  when we mark a page "XenMapped".
> >
> > But the symptom still remains in xen_swiotlb_free_coherent() because
> > "TestPage..." is called unconditionally. virt_to_page() is not
> > applicable to such allocations.
>
>
> Perhaps we just need to make sure we are using right virt-to-page
> method. Something like
>
>
> diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
> index b6d2776..f224e69 100644
> --- a/drivers/xen/swiotlb-xen.c
> +++ b/drivers/xen/swiotlb-xen.c
> @@ -335,6 +335,7 @@ int __ref xen_swiotlb_init(int verbose, bool early)
>         int order = get_order(size);
>         phys_addr_t phys;
>         u64 dma_mask = DMA_BIT_MASK(32);
> +       struct page *pg;
>
>         if (hwdev && hwdev->coherent_dma_mask)
>                 dma_mask = hwdev->coherent_dma_mask;
> @@ -346,9 +347,12 @@ int __ref xen_swiotlb_init(int verbose, bool early)
>         /* Convert the size to actually allocated. */
>         size = 1UL << (order + XEN_PAGE_SHIFT);
>
> +       pg = is_vmalloc_addr(vaddr) ? vmalloc_to_page(vaddr) :
> virt_to_page(vaddr);
> +       BUG_ON(!pg);
> +
>         if (!WARN_ON((dev_addr + size - 1 > dma_mask) ||
>                      range_straddles_page_boundary(phys, size)) &&
> -           TestClearPageXenRemapped(virt_to_page(vaddr)))
> +           TestClearPageXenRemapped(pg))
>                 xen_destroy_contiguous_region(phys, order);
>
>         xen_free_coherent_pages(hwdev, size, vaddr, (dma_addr_t)phys,
> attrs);
>
>
> (I have not tested this at all)

That's where I come in ;-)

It appears that your patch gets us closest to a fully functional 5.6.x
kernel under Xen on RPi4.

Thank you so much for that!

However, here's an interesting side-effect I'm now observing -- with
your patch + original
patch from Stefano (the one that only applies to
include/xen/arm/page-coherent.h) I can
now boot my RPi4 into a pretty functional system.

However, it is only possible if I allocate 512M (or fewer) memory
chunk to Dom0. If I try
to go higher (820M for example) and all the way to 1G -- I start getting:

[    3.195851] mmc0: unrecognised SCR structure version 7
[    3.200454] mmc0: error -22 whilst initialising SD card

and my SD card stays offline.

This is pretty reliable, and I guess is still related to some kind of
a DMA issue perhaps?

Thanks,
Roman.


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-06 17:34                                 ` Stefano Stabellini
@ 2020-05-06 21:12                                   ` Roman Shaposhnik
  2020-05-13  0:33                                     ` Stefano Stabellini
  0 siblings, 1 reply; 45+ messages in thread
From: Roman Shaposhnik @ 2020-05-06 21:12 UTC (permalink / raw)
  To: Stefano Stabellini
  Cc: Jürgen Groß,
	Peng Fan, Julien Grall, minyard, jeff.kubascik, Julien Grall,
	Nataliya Korovkina, xen-devel, Boris Ostrovsky,
	Stefano Stabellini

On Wed, May 6, 2020 at 10:34 AM Stefano Stabellini
<sstabellini@kernel.org> wrote:
>
> On Wed, 6 May 2020, Nataliya Korovkina wrote:
> > On Wed, May 6, 2020 at 9:43 AM Boris Ostrovsky
> > <boris.ostrovsky@oracle.com> wrote:
> > >
> > >
> > > On 5/6/20 9:08 AM, Nataliya Korovkina wrote:
> > > > Hello,
> > > >
> > > > What I found out: rpi_firmware_property_list() allocates memory from
> > > > dma_atomic_pool which was mapped to VMALLOC region, so virt_to_page()
> > > > is not eligible in this case.
> > >
> > >
> > > So then it seems it didn't go through xen_swiotlb_alloc_coherent(). In
> > > which case it has no business calling xen_swiotlb_free_coherent().
> > >
> > >
> > > -boris
> > >
> > >
> > >
> > >
> >
> > It does go.
> > dma_alloc_coherent() indirectly calls xen_swiotlb_alloc_coherent(),
> > then  xen_alloc_coherent_pages() eventually calls arch_dma_alloc() in
> > remap.c which successfully allocates pages from atomic pool.
> >
> > The patch Julien offered for domian_build.c moved Dom0 banks in the
> > first G of RAM.
> > So it covered the previous symptom (a crash during allocation) because
> > now we avoid pathway  when we mark a page "XenMapped".
> >
> > But the symptom still remains in xen_swiotlb_free_coherent() because
> > "TestPage..." is called unconditionally. virt_to_page() is not
> > applicable to such allocations.
>
> Ah! So this is the crux of the issue. I saw this kind of problem before
> on ARM32 (in fact there are several comments warning not to use
> virt_to_phys on ARM in drivers/xen/swiotlb-xen.c).
>
>
> So, to recap we have 2 issues as far as I can tell:
>
> - virt_to_page not working in some cases on ARM, leading to a crash
> - WARN_ON for range_straddles_page_boundary which is normal on ARM
>
> The appended patch addresses them by:
>
> - using pfn_to_page instead virt_to_page
> - moving the WARN_ON under a #ifdef (Juergen might have a better
>   suggestion on how to rework the WARN_ON)
>
> Please let me know if this patch works!
>
> Cheers,
>
> Stefano
>
>
> diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
> index b6d27762c6f8..0a40ac332a4c 100644
> --- a/drivers/xen/swiotlb-xen.c
> +++ b/drivers/xen/swiotlb-xen.c
> @@ -322,7 +322,7 @@ xen_swiotlb_alloc_coherent(struct device *hwdev, size_t size,
>                         xen_free_coherent_pages(hwdev, size, ret, (dma_addr_t)phys, attrs);
>                         return NULL;
>                 }
> -               SetPageXenRemapped(virt_to_page(ret));
> +               SetPageXenRemapped(pfn_to_page(PFN_DOWN(phys)));
>         }
>         memset(ret, 0, size);
>         return ret;
> @@ -346,9 +346,14 @@ xen_swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr,
>         /* Convert the size to actually allocated. */
>         size = 1UL << (order + XEN_PAGE_SHIFT);
>
> -       if (!WARN_ON((dev_addr + size - 1 > dma_mask) ||
> -                    range_straddles_page_boundary(phys, size)) &&
> -           TestClearPageXenRemapped(virt_to_page(vaddr)))
> +#ifdef CONFIG_X86
> +       if (WARN_ON(dev_addr + size - 1 > dma_mask) ||
> +                   range_straddles_page_boundary(phys, size)) {
> +           return;
> +       }
> +#endif
> +
> +       if (TestClearPageXenRemapped(pfn_to_page(PFN_DOWN(phys))))
>                 xen_destroy_contiguous_region(phys, order);
>
>         xen_free_coherent_pages(hwdev, size, vaddr, (dma_addr_t)phys, attrs);

Stefano, with your patch applied, I'm still getting:

[    0.590705] Unable to handle kernel paging request at virtual
address fffffe0003700000

However, Boris' patch seems to get us much closer. It would be awesome if you
can take a look at that (plus the additional DMA issue that seems to
be dependent
on how much memory I allocate to Dom0).

Thanks,
Roman.


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-06 21:12                                   ` Roman Shaposhnik
@ 2020-05-13  0:33                                     ` Stefano Stabellini
  2020-05-13 10:11                                       ` Julien Grall
  0 siblings, 1 reply; 45+ messages in thread
From: Stefano Stabellini @ 2020-05-13  0:33 UTC (permalink / raw)
  To: boris.ostrovsky, jgross, julien
  Cc: Peng Fan, Stefano Stabellini, minyard, roman, jeff.kubascik,
	Julien Grall, Nataliya Korovkina, xen-devel, Stefano Stabellini

[-- Attachment #1: Type: text/plain, Size: 3926 bytes --]

I worked with Roman to do several more tests and here is an update on
the situation. We don't know why my patch didn't work when Boris' patch
[1] worked.  Both of them should have worked the same way.

Anyway, we continued with Boris patch to debug the new mmc error which
looks like this:

[    3.084464] mmc0: unrecognised SCR structure version 15
[    3.089176] mmc0: error -22 whilst initialising SD card

I asked to add a lot of trancing, see attached diff. We discovered a bug
in xen_swiotlb_init: if io_tlb_start != 0 at the beginning of
xen_swiotlb_init, start_dma_addr is not set correctly. This oneline
patch fixes it:

diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
index 0a40ac332a4c..b75c43356eba 100644
--- a/drivers/xen/swiotlb-xen.c
+++ b/drivers/xen/swiotlb-xen.c
@@ -191,6 +191,7 @@ int __ref xen_swiotlb_init(int verbose, bool early)
         * IO TLB memory already allocated. Just use it.
         */
        if (io_tlb_start != 0) {
+               start_dma_addr = io_tlb_start;
                xen_io_tlb_start = phys_to_virt(io_tlb_start);
                goto end;
        }

Unfortunately it doesn't solve the mmc0 error.


As you might notice from the logs, none of the other interesting printks
printed anything, which seems to mean that the memory allocated by
xen_swiotlb_alloc_coherent and mapped by xen_swiotlb_map_page should be
just fine.

I am starting to be out of ideas. Do you guys have any suggestions on
what could be the issue or what could be done to discover it?

Cheers,

Stefano


On Wed, 6 May 2020, Roman Shaposhnik wrote:
> > So, to recap we have 2 issues as far as I can tell:
> >
> > - virt_to_page not working in some cases on ARM, leading to a crash
> > - WARN_ON for range_straddles_page_boundary which is normal on ARM
> >
> > The appended patch addresses them by:
> >
> > - using pfn_to_page instead virt_to_page
> > - moving the WARN_ON under a #ifdef (Juergen might have a better
> >   suggestion on how to rework the WARN_ON)
> >
> > Please let me know if this patch works!
> >
> > Cheers,
> >
> > Stefano
> >
> >
> > diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
> > index b6d27762c6f8..0a40ac332a4c 100644
> > --- a/drivers/xen/swiotlb-xen.c
> > +++ b/drivers/xen/swiotlb-xen.c
> > @@ -322,7 +322,7 @@ xen_swiotlb_alloc_coherent(struct device *hwdev, size_t size,
> >                         xen_free_coherent_pages(hwdev, size, ret, (dma_addr_t)phys, attrs);
> >                         return NULL;
> >                 }
> > -               SetPageXenRemapped(virt_to_page(ret));
> > +               SetPageXenRemapped(pfn_to_page(PFN_DOWN(phys)));
> >         }
> >         memset(ret, 0, size);
> >         return ret;
> > @@ -346,9 +346,14 @@ xen_swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr,
> >         /* Convert the size to actually allocated. */
> >         size = 1UL << (order + XEN_PAGE_SHIFT);
> >
> > -       if (!WARN_ON((dev_addr + size - 1 > dma_mask) ||
> > -                    range_straddles_page_boundary(phys, size)) &&
> > -           TestClearPageXenRemapped(virt_to_page(vaddr)))
> > +#ifdef CONFIG_X86
> > +       if (WARN_ON(dev_addr + size - 1 > dma_mask) ||
> > +                   range_straddles_page_boundary(phys, size)) {
> > +           return;
> > +       }
> > +#endif
> > +
> > +       if (TestClearPageXenRemapped(pfn_to_page(PFN_DOWN(phys))))
> >                 xen_destroy_contiguous_region(phys, order);
> >
> >         xen_free_coherent_pages(hwdev, size, vaddr, (dma_addr_t)phys, attrs);
> 
> Stefano, with your patch applied, I'm still getting:
> 
> [    0.590705] Unable to handle kernel paging request at virtual
> address fffffe0003700000
> 
> However, Boris' patch seems to get us much closer. It would be awesome if you
> can take a look at that (plus the additional DMA issue that seems to
> be dependent
> on how much memory I allocate to Dom0).

[-- Attachment #2: Type: text/plain, Size: 279226 bytes --]

Using modules provided by bootloader in FDT
Xen 4.14-unstable (c/s Thu Apr 30 10:45:09 2020 +0200 git:0135be8-dirty) EFI loader
Warning: Could not query variable store: 0x8000000000000003
- UART enabled -
- Boot CPU booting -
- Current EL 00000008 -
- Initialize CPU -
- Turning on paging -
- Ready -
(XEN) Checking for initrd in /chosen
(XEN) RAM: 0000000000001000 - 0000000007ef1fff
(XEN) RAM: 0000000007ef2000 - 0000000007f0dfff
(XEN) RAM: 0000000007f0e000 - 000000002bc1afff
(XEN) RAM: 000000002bc1b000 - 000000002bc29fff
(XEN) RAM: 000000002bc2a000 - 000000002bd6efff
(XEN) RAM: 000000002bd6f000 - 000000002d780fff
(XEN) RAM: 000000002d781000 - 000000003c9f6fff
(XEN) RAM: 000000003c9f7000 - 000000003c9f8fff
(XEN) RAM: 000000003c9fb000 - 000000003c9fdfff
(XEN) RAM: 000000003c9fe000 - 000000003cb08fff
(XEN) RAM: 000000003cb10000 - 000000003cb10fff
(XEN) RAM: 000000003cb12000 - 000000003cb13fff
(XEN) RAM: 000000003cb1b000 - 000000003cb1cfff
(XEN) RAM: 000000003cb1e000 - 000000003df3ffff
(XEN) RAM: 000000003df50000 - 000000003dffffff
(XEN) RAM: 0000000040000000 - 00000000fbffffff
(XEN)
(XEN) MODULE[0]: 000000002bc2a000 - 000000002bd6e0d8 Xen
(XEN) MODULE[1]: 000000002bc1c000 - 000000002bc2a000 Device Tree
(XEN) MODULE[2]: 000000002bd7c000 - 000000002d67ca00 Kernel
(XEN)
(XEN) CMDLINE[000000002bd7c000]:chosen console=hvc0 earlyprintk=xen nomodeset rootdelay=10
(XEN)
(XEN) Command line: dom0_mem=820M dom0_max_vcpus=1
(XEN) Domain heap initialised
(XEN) Booting using Device Tree
(XEN)  -> unflatten_device_tree()
(XEN) Unflattening device tree:
(XEN) magic: 0xd00dfeed
(XEN) size: 0x00e000
(XEN) version: 0x000011
(XEN)   size is 0x1ba40 allocating...
(XEN)   unflattening 8000f7fc0000...
(XEN) fixed up name for  ->
(XEN) fixed up name for aliases -> aliases
(XEN) fixed up name for chosen -> chosen
(XEN) fixed up name for module@2bd7c000 -> module
(XEN) fixed up name for reserved-memory -> reserved-memory
(XEN) fixed up name for linux,cma -> linux,cma
(XEN) fixed up name for thermal-zones -> thermal-zones
(XEN) fixed up name for cpu-thermal -> cpu-thermal
(XEN) fixed up name for cooling-maps -> cooling-maps
(XEN) fixed up name for soc -> soc
(XEN) fixed up name for timer@7e003000 -> timer
(XEN) fixed up name for txp@7e004000 -> txp
(XEN) fixed up name for cprman@7e101000 -> cprman
(XEN) fixed up name for mailbox@7e00b880 -> mailbox
(XEN) fixed up name for gpio@7e200000 -> gpio
(XEN) fixed up name for dpi_gpio0 -> dpi_gpio0
(XEN) fixed up name for emmc_gpio22 -> emmc_gpio22
(XEN) fixed up name for emmc_gpio34 -> emmc_gpio34
(XEN) fixed up name for emmc_gpio48 -> emmc_gpio48
(XEN) fixed up name for gpclk0_gpio4 -> gpclk0_gpio4
(XEN) fixed up name for gpclk1_gpio5 -> gpclk1_gpio5
(XEN) fixed up name for gpclk1_gpio42 -> gpclk1_gpio42
(XEN) fixed up name for gpclk1_gpio44 -> gpclk1_gpio44
(XEN) fixed up name for gpclk2_gpio6 -> gpclk2_gpio6
(XEN) fixed up name for gpclk2_gpio43 -> gpclk2_gpio43
(XEN) fixed up name for i2c0_gpio0 -> i2c0_gpio0
(XEN) fixed up name for i2c0_gpio28 -> i2c0_gpio28
(XEN) fixed up name for i2c0_gpio44 -> i2c0_gpio44
(XEN) fixed up name for i2c1_gpio2 -> i2c1_gpio2
(XEN) fixed up name for i2c1_gpio44 -> i2c1_gpio44
(XEN) fixed up name for jtag_gpio22 -> jtag_gpio22
(XEN) fixed up name for pcm_gpio18 -> pcm_gpio18
(XEN) fixed up name for pcm_gpio28 -> pcm_gpio28
(XEN) fixed up name for sdhost_gpio48 -> sdhost_gpio48
(XEN) fixed up name for spi0_gpio7 -> spi0_gpio7
(XEN) fixed up name for spi0_gpio35 -> spi0_gpio35
(XEN) fixed up name for spi1_gpio16 -> spi1_gpio16
(XEN) fixed up name for spi2_gpio40 -> spi2_gpio40
(XEN) fixed up name for uart0_gpio14 -> uart0_gpio14
(XEN) fixed up name for uart0_ctsrts_gpio16 -> uart0_ctsrts_gpio16
(XEN) fixed up name for uart0_ctsrts_gpio30 -> uart0_ctsrts_gpio30
(XEN) fixed up name for uart0_gpio32 -> uart0_gpio32
(XEN) fixed up name for uart0_gpio36 -> uart0_gpio36
(XEN) fixed up name for uart0_ctsrts_gpio38 -> uart0_ctsrts_gpio38
(XEN) fixed up name for uart1_gpio14 -> uart1_gpio14
(XEN) fixed up name for uart1_ctsrts_gpio16 -> uart1_ctsrts_gpio16
(XEN) fixed up name for uart1_gpio32 -> uart1_gpio32
(XEN) fixed up name for uart1_ctsrts_gpio30 -> uart1_ctsrts_gpio30
(XEN) fixed up name for uart1_gpio40 -> uart1_gpio40
(XEN) fixed up name for uart1_ctsrts_gpio42 -> uart1_ctsrts_gpio42
(XEN) fixed up name for gpclk0_gpio49 -> gpclk0_gpio49
(XEN) fixed up name for pin-gpclk -> pin-gpclk
(XEN) fixed up name for gpclk1_gpio50 -> gpclk1_gpio50
(XEN) fixed up name for pin-gpclk -> pin-gpclk
(XEN) fixed up name for gpclk2_gpio51 -> gpclk2_gpio51
(XEN) fixed up name for pin-gpclk -> pin-gpclk
(XEN) fixed up name for i2c0_gpio46 -> i2c0_gpio46
(XEN) fixed up name for pin-sda -> pin-sda
(XEN) fixed up name for pin-scl -> pin-scl
(XEN) fixed up name for i2c1_gpio46 -> i2c1_gpio46
(XEN) fixed up name for pin-sda -> pin-sda
(XEN) fixed up name for pin-scl -> pin-scl
(XEN) fixed up name for i2c3_gpio2 -> i2c3_gpio2
(XEN) fixed up name for pin-sda -> pin-sda
(XEN) fixed up name for pin-scl -> pin-scl
(XEN) fixed up name for i2c3_gpio4 -> i2c3_gpio4
(XEN) fixed up name for pin-sda -> pin-sda
(XEN) fixed up name for pin-scl -> pin-scl
(XEN) fixed up name for i2c4_gpio6 -> i2c4_gpio6
(XEN) fixed up name for pin-sda -> pin-sda
(XEN) fixed up name for pin-scl -> pin-scl
(XEN) fixed up name for i2c4_gpio8 -> i2c4_gpio8
(XEN) fixed up name for pin-sda -> pin-sda
(XEN) fixed up name for pin-scl -> pin-scl
(XEN) fixed up name for i2c5_gpio10 -> i2c5_gpio10
(XEN) fixed up name for pin-sda -> pin-sda
(XEN) fixed up name for pin-scl -> pin-scl
(XEN) fixed up name for i2c5_gpio12 -> i2c5_gpio12
(XEN) fixed up name for pin-sda -> pin-sda
(XEN) fixed up name for pin-scl -> pin-scl
(XEN) fixed up name for i2c6_gpio0 -> i2c6_gpio0
(XEN) fixed up name for pin-sda -> pin-sda
(XEN) fixed up name for pin-scl -> pin-scl
(XEN) fixed up name for i2c6_gpio22 -> i2c6_gpio22
(XEN) fixed up name for pin-sda -> pin-sda
(XEN) fixed up name for pin-scl -> pin-scl
(XEN) fixed up name for i2c_slave_gpio8 -> i2c_slave_gpio8
(XEN) fixed up name for pins-i2c-slave -> pins-i2c-slave
(XEN) fixed up name for jtag_gpio48 -> jtag_gpio48
(XEN) fixed up name for pins-jtag -> pins-jtag
(XEN) fixed up name for mii_gpio28 -> mii_gpio28
(XEN) fixed up name for pins-mii -> pins-mii
(XEN) fixed up name for mii_gpio36 -> mii_gpio36
(XEN) fixed up name for pins-mii -> pins-mii
(XEN) fixed up name for pcm_gpio50 -> pcm_gpio50
(XEN) fixed up name for pins-pcm -> pins-pcm
(XEN) fixed up name for pwm0_0_gpio12 -> pwm0_0_gpio12
(XEN) fixed up name for pin-pwm -> pin-pwm
(XEN) fixed up name for pwm0_0_gpio18 -> pwm0_0_gpio18
(XEN) fixed up name for pin-pwm -> pin-pwm
(XEN) fixed up name for pwm1_0_gpio40 -> pwm1_0_gpio40
(XEN) fixed up name for pin-pwm -> pin-pwm
(XEN) fixed up name for pwm0_1_gpio13 -> pwm0_1_gpio13
(XEN) fixed up name for pin-pwm -> pin-pwm
(XEN) fixed up name for pwm0_1_gpio19 -> pwm0_1_gpio19
(XEN) fixed up name for pin-pwm -> pin-pwm
(XEN) fixed up name for pwm1_1_gpio41 -> pwm1_1_gpio41
(XEN) fixed up name for pin-pwm -> pin-pwm
(XEN) fixed up name for pwm0_1_gpio45 -> pwm0_1_gpio45
(XEN) fixed up name for pin-pwm -> pin-pwm
(XEN) fixed up name for pwm0_0_gpio52 -> pwm0_0_gpio52
(XEN) fixed up name for pin-pwm -> pin-pwm
(XEN) fixed up name for pwm0_1_gpio53 -> pwm0_1_gpio53
(XEN) fixed up name for pin-pwm -> pin-pwm
(XEN) fixed up name for rgmii_gpio35 -> rgmii_gpio35
(XEN) fixed up name for pin-start-stop -> pin-start-stop
(XEN) fixed up name for pin-rx-ok -> pin-rx-ok
(XEN) fixed up name for rgmii_irq_gpio34 -> rgmii_irq_gpio34
(XEN) fixed up name for pin-irq -> pin-irq
(XEN) fixed up name for rgmii_irq_gpio39 -> rgmii_irq_gpio39
(XEN) fixed up name for pin-irq -> pin-irq
(XEN) fixed up name for rgmii_mdio_gpio28 -> rgmii_mdio_gpio28
(XEN) fixed up name for pins-mdio -> pins-mdio
(XEN) fixed up name for rgmii_mdio_gpio37 -> rgmii_mdio_gpio37
(XEN) fixed up name for pins-mdio -> pins-mdio
(XEN) fixed up name for spi0_gpio46 -> spi0_gpio46
(XEN) fixed up name for pins-spi -> pins-spi
(XEN) fixed up name for spi2_gpio46 -> spi2_gpio46
(XEN) fixed up name for pins-spi -> pins-spi
(XEN) fixed up name for spi3_gpio0 -> spi3_gpio0
(XEN) fixed up name for pins-spi -> pins-spi
(XEN) fixed up name for spi4_gpio4 -> spi4_gpio4
(XEN) fixed up name for pins-spi -> pins-spi
(XEN) fixed up name for spi5_gpio12 -> spi5_gpio12
(XEN) fixed up name for pins-spi -> pins-spi
(XEN) fixed up name for spi6_gpio18 -> spi6_gpio18
(XEN) fixed up name for pins-spi -> pins-spi
(XEN) fixed up name for uart2_gpio0 -> uart2_gpio0
(XEN) fixed up name for pin-tx -> pin-tx
(XEN) fixed up name for pin-rx -> pin-rx
(XEN) fixed up name for uart2_ctsrts_gpio2 -> uart2_ctsrts_gpio2
(XEN) fixed up name for pin-cts -> pin-cts
(XEN) fixed up name for pin-rts -> pin-rts
(XEN) fixed up name for uart3_gpio4 -> uart3_gpio4
(XEN) fixed up name for pin-tx -> pin-tx
(XEN) fixed up name for pin-rx -> pin-rx
(XEN) fixed up name for uart3_ctsrts_gpio6 -> uart3_ctsrts_gpio6
(XEN) fixed up name for pin-cts -> pin-cts
(XEN) fixed up name for pin-rts -> pin-rts
(XEN) fixed up name for uart4_gpio8 -> uart4_gpio8
(XEN) fixed up name for pin-tx -> pin-tx
(XEN) fixed up name for pin-rx -> pin-rx
(XEN) fixed up name for uart4_ctsrts_gpio10 -> uart4_ctsrts_gpio10
(XEN) fixed up name for pin-cts -> pin-cts
(XEN) fixed up name for pin-rts -> pin-rts
(XEN) fixed up name for uart5_gpio12 -> uart5_gpio12
(XEN) fixed up name for pin-tx -> pin-tx
(XEN) fixed up name for pin-rx -> pin-rx
(XEN) fixed up name for uart5_ctsrts_gpio14 -> uart5_ctsrts_gpio14
(XEN) fixed up name for pin-cts -> pin-cts
(XEN) fixed up name for pin-rts -> pin-rts
(XEN) fixed up name for gpioout -> gpioout
(XEN) fixed up name for alt0 -> alt0
(XEN) fixed up name for dpi_18bit_gpio0 -> dpi_18bit_gpio0
(XEN) fixed up name for spi0_pins -> spi0_pins
(XEN) fixed up name for spi0_cs_pins -> spi0_cs_pins
(XEN) fixed up name for spi3_pins -> spi3_pins
(XEN) fixed up name for spi3_cs_pins -> spi3_cs_pins
(XEN) fixed up name for spi4_pins -> spi4_pins
(XEN) fixed up name for spi4_cs_pins -> spi4_cs_pins
(XEN) fixed up name for spi5_pins -> spi5_pins
(XEN) fixed up name for spi5_cs_pins -> spi5_cs_pins
(XEN) fixed up name for spi6_pins -> spi6_pins
(XEN) fixed up name for spi6_cs_pins -> spi6_cs_pins
(XEN) fixed up name for i2c0 -> i2c0
(XEN) fixed up name for i2c1 -> i2c1
(XEN) fixed up name for i2c3 -> i2c3
(XEN) fixed up name for i2c4 -> i2c4
(XEN) fixed up name for i2c5 -> i2c5
(XEN) fixed up name for i2c6 -> i2c6
(XEN) fixed up name for i2s -> i2s
(XEN) fixed up name for sdio_pins -> sdio_pins
(XEN) fixed up name for bt_pins -> bt_pins
(XEN) fixed up name for uart0_pins -> uart0_pins
(XEN) fixed up name for uart1_pins -> uart1_pins
(XEN) fixed up name for uart2_pins -> uart2_pins
(XEN) fixed up name for uart3_pins -> uart3_pins
(XEN) fixed up name for uart4_pins -> uart4_pins
(XEN) fixed up name for uart5_pins -> uart5_pins
(XEN) fixed up name for audio_pins -> audio_pins
(XEN) fixed up name for serial@7e201000 -> serial
(XEN) fixed up name for mmc@7e202000 -> mmc
(XEN) fixed up name for i2s@7e203000 -> i2s
(XEN) fixed up name for spi@7e204000 -> spi
(XEN) fixed up name for spidev@0 -> spidev
(XEN) fixed up name for spidev@1 -> spidev
(XEN) fixed up name for i2c@7e205000 -> i2c
(XEN) fixed up name for i2c0mux -> i2c0mux
(XEN) fixed up name for i2c@0 -> i2c
(XEN) fixed up name for i2c@1 -> i2c
(XEN) fixed up name for dpi@7e208000 -> dpi
(XEN) fixed up name for dsi@7e209000 -> dsi
(XEN) fixed up name for aux@7e215000 -> aux
(XEN) fixed up name for serial@7e215040 -> serial
(XEN) fixed up name for spi@7e215080 -> spi
(XEN) fixed up name for spi@7e2150c0 -> spi
(XEN) fixed up name for pwm@7e20c000 -> pwm
(XEN) fixed up name for hvs@7e400000 -> hvs
(XEN) fixed up name for dsi@7e700000 -> dsi
(XEN) fixed up name for i2c@7e804000 -> i2c
(XEN) fixed up name for vec@7e806000 -> vec
(XEN) fixed up name for usb@7e980000 -> usb
(XEN) fixed up name for local_intc@40000000 -> local_intc
(XEN) fixed up name for interrupt-controller@40041000 -> interrupt-controller
(XEN) fixed up name for avs-monitor@7d5d2000 -> avs-monitor
(XEN) fixed up name for thermal -> thermal
(XEN) fixed up name for dma@7e007000 -> dma
(XEN) fixed up name for watchdog@7e100000 -> watchdog
(XEN) fixed up name for rng@7e104000 -> rng
(XEN) fixed up name for serial@7e201400 -> serial
(XEN) fixed up name for serial@7e201600 -> serial
(XEN) fixed up name for serial@7e201800 -> serial
(XEN) fixed up name for serial@7e201a00 -> serial
(XEN) fixed up name for spi@7e204600 -> spi
(XEN) fixed up name for spi@7e204800 -> spi
(XEN) fixed up name for spi@7e204a00 -> spi
(XEN) fixed up name for spi@7e204c00 -> spi
(XEN) fixed up name for i2c@7e205600 -> i2c
(XEN) fixed up name for i2c@7e205800 -> i2c
(XEN) fixed up name for i2c@7e205a00 -> i2c
(XEN) fixed up name for i2c@7e205c00 -> i2c
(XEN) fixed up name for pwm@7e20c800 -> pwm
(XEN) fixed up name for firmware -> firmware
(XEN) fixed up name for gpio -> gpio
(XEN) fixed up name for power -> power
(XEN) fixed up name for pixelvalve@7e206000 -> pixelvalve
(XEN) fixed up name for pixelvalve@7e207000 -> pixelvalve
(XEN) fixed up name for mmc@7e300000 -> mmc
(XEN) fixed up name for mmcnr@7e300000 -> mmcnr
(XEN) fixed up name for firmwarekms@7e600000 -> firmwarekms
(XEN) fixed up name for smi@7e600000 -> smi
(XEN) fixed up name for csi@7e800000 -> csi
(XEN) fixed up name for csi@7e801000 -> csi
(XEN) fixed up name for port -> port
(XEN) fixed up name for endpoint -> endpoint
(XEN) fixed up name for axiperf -> axiperf
(XEN) fixed up name for gpiomem -> gpiomem
(XEN) fixed up name for fb -> fb
(XEN) fixed up name for vcsm -> vcsm
(XEN) fixed up name for sound -> sound
(XEN) fixed up name for pixelvalve@7e20a000 -> pixelvalve
(XEN) fixed up name for pixelvalve@7e216000 -> pixelvalve
(XEN) fixed up name for pixelvalve@7ec12000 -> pixelvalve
(XEN) fixed up name for clock@7ef00000 -> clock
(XEN) fixed up name for hdmi@7ef00700 -> hdmi
(XEN) fixed up name for i2c@7ef04500 -> i2c
(XEN) fixed up name for hdmi@7ef05700 -> hdmi
(XEN) fixed up name for i2c@7ef09500 -> i2c
(XEN) fixed up name for clocks -> clocks
(XEN) fixed up name for clk-osc -> clk-osc
(XEN) fixed up name for clk-usb -> clk-usb
(XEN) fixed up name for phy -> phy
(XEN) fixed up name for arm-pmu -> arm-pmu
(XEN) fixed up name for timer -> timer
(XEN) fixed up name for cpus -> cpus
(XEN) fixed up name for cpu@0 -> cpu
(XEN) fixed up name for cpu@1 -> cpu
(XEN) fixed up name for cpu@2 -> cpu
(XEN) fixed up name for cpu@3 -> cpu
(XEN) fixed up name for scb -> scb
(XEN) fixed up name for pcie@7d500000 -> pcie
(XEN) fixed up name for ethernet@7d580000 -> ethernet
(XEN) fixed up name for mdio@e14 -> mdio
(XEN) fixed up name for ethernet-phy@1 -> ethernet-phy
(XEN) fixed up name for dma@7e007b00 -> dma
(XEN) fixed up name for mailbox@7e00b840 -> mailbox
(XEN) fixed up name for bcm2835_audio -> bcm2835_audio
(XEN) fixed up name for xhci@7e9c0000 -> xhci
(XEN) fixed up name for hevc-decoder@7eb00000 -> hevc-decoder
(XEN) fixed up name for rpivid-local-intc@7eb10000 -> rpivid-local-intc
(XEN) fixed up name for h264-decoder@7eb20000 -> h264-decoder
(XEN) fixed up name for vp9-decoder@7eb30000 -> vp9-decoder
(XEN) fixed up name for leds -> leds
(XEN) fixed up name for act -> act
(XEN) fixed up name for pwr -> pwr
(XEN) fixed up name for sd_io_1v8_reg -> sd_io_1v8_reg
(XEN) fixed up name for __overrides__ -> __overrides__
(XEN) fixed up name for fixedregulator_3v3 -> fixedregulator_3v3
(XEN) fixed up name for fixedregulator_5v0 -> fixedregulator_5v0
(XEN) fixed up name for v3dbus -> v3dbus
(XEN) fixed up name for v3d@7ec04000 -> v3d
(XEN) fixed up name for gpu -> gpu
(XEN) fixed up name for clk-108M -> clk-108M
(XEN) fixed up name for firmware-clocks -> firmware-clocks
(XEN) fixed up name for emmc2bus -> emmc2bus
(XEN) fixed up name for emmc2@7e340000 -> emmc2
(XEN) fixed up name for sd_vcc_reg -> sd_vcc_reg
(XEN) fixed up name for __symbols__ -> __symbols__
(XEN)  <- unflatten_device_tree()
(XEN) adding DT alias:serial0: stem=serial id=0 node=/soc/serial@7e215040
(XEN) adding DT alias:serial1: stem=serial id=1 node=/soc/serial@7e201000
(XEN) adding DT alias:ethernet0: stem=ethernet id=0 node=/scb/ethernet@7d580000
(XEN) adding DT alias:pcie0: stem=pcie id=0 node=/scb/pcie@7d500000
(XEN) adding DT alias:audio: stem=audio id=0 node=/scb/mailbox@7e00b840/bcm2835_audio
(XEN) adding DT alias:aux: stem=aux id=0 node=/soc/aux@7e215000
(XEN) adding DT alias:sound: stem=sound id=0 node=/soc/sound
(XEN) adding DT alias:soc: stem=soc id=0 node=/soc
(XEN) adding DT alias:dma: stem=dma id=0 node=/soc/dma@7e007000
(XEN) adding DT alias:watchdog: stem=watchdog id=0 node=/soc/watchdog@7e100000
(XEN) adding DT alias:random: stem=random id=0 node=/soc/rng@7e104000
(XEN) adding DT alias:mailbox: stem=mailbox id=0 node=/soc/mailbox@7e00b880
(XEN) adding DT alias:gpio: stem=gpio id=0 node=/soc/gpio@7e200000
(XEN) adding DT alias:uart0: stem=uart id=0 node=/soc/serial@7e201000
(XEN) adding DT alias:uart1: stem=uart id=1 node=/soc/serial@7e215040
(XEN) adding DT alias:sdhost: stem=sdhost id=0 node=/soc/mmc@7e202000
(XEN) adding DT alias:mmc: stem=mmc id=0 node=/soc/mmc@7e300000
(XEN) adding DT alias:mmc1: stem=mmc id=1 node=/soc/mmcnr@7e300000
(XEN) adding DT alias:mmc0: stem=mmc id=0 node=/emmc2bus/emmc2@7e340000
(XEN) adding DT alias:i2s: stem=i2s id=0 node=/soc/i2s@7e203000
(XEN) adding DT alias:i2c0: stem=i2c id=0 node=/soc/i2c0mux/i2c@0
(XEN) adding DT alias:i2c1: stem=i2c id=1 node=/soc/i2c@7e804000
(XEN) adding DT alias:i2c10: stem=i2c id=10 node=/soc/i2c0mux/i2c@1
(XEN) adding DT alias:spi0: stem=spi id=0 node=/soc/spi@7e204000
(XEN) adding DT alias:spi1: stem=spi id=1 node=/soc/spi@7e215080
(XEN) adding DT alias:spi2: stem=spi id=2 node=/soc/spi@7e2150c0
(XEN) adding DT alias:usb: stem=usb id=0 node=/soc/usb@7e980000
(XEN) adding DT alias:leds: stem=leds id=0 node=/leds
(XEN) adding DT alias:fb: stem=fb id=0 node=/soc/fb
(XEN) adding DT alias:thermal: stem=thermal id=0 node=/soc/avs-monitor@7d5d2000/thermal
(XEN) adding DT alias:axiperf: stem=axiperf id=0 node=/soc/axiperf
(XEN) adding DT alias:mmc2: stem=mmc id=2 node=/soc/mmc@7e202000
(XEN) adding DT alias:i2c3: stem=i2c id=3 node=/soc/i2c@7e205600
(XEN) adding DT alias:i2c4: stem=i2c id=4 node=/soc/i2c@7e205800
(XEN) adding DT alias:i2c5: stem=i2c id=5 node=/soc/i2c@7e205a00
(XEN) adding DT alias:i2c6: stem=i2c id=6 node=/soc/i2c@7e205c00
(XEN) adding DT alias:emmc2bus: stem=emmc2bus id=0 node=/emmc2bus
(XEN) Platform: Raspberry Pi 4
(XEN) No dtuart path configured
(XEN) Bad console= option 'dtuart'
 Xen 4.14-unstable
(XEN) Xen version 4.14-unstable (@) (gcc (Alpine 6.4.0) 6.4.0) debug=y  Tue May 12 03:58:04 UTC 2020
(XEN) Latest ChangeSet: Thu Apr 30 10:45:09 2020 +0200 git:0135be8-dirty
(XEN) build-id: 9f780b8239caf0c62b2987996177d32c6e6dc9dc
(XEN) Processor: 410fd083: "ARM Limited", variant: 0x0, part 0xd08, rev 0x3
(XEN) 64-bit Execution:
(XEN)   Processor Features: 0000000000002222 0000000000000000
(XEN)     Exception Levels: EL3:64+32 EL2:64+32 EL1:64+32 EL0:64+32
(XEN)     Extensions: FloatingPoint AdvancedSIMD
(XEN)   Debug Features: 0000000010305106 0000000000000000
(XEN)   Auxiliary Features: 0000000000000000 0000000000000000
(XEN)   Memory Model Features: 0000000000001124 0000000000000000
(XEN)   ISA Features:  0000000000010000 0000000000000000
(XEN) 32-bit Execution:
(XEN)   Processor Features: 00000131:00011011
(XEN)     Instruction Sets: AArch32 A32 Thumb Thumb-2 Jazelle
(XEN)     Extensions: GenericTimer Security
(XEN)   Debug Features: 03010066
(XEN)   Auxiliary Features: 00000000
(XEN)   Memory Model Features: 10201105 40000000 01260000 02102211
(XEN)  ISA Features: 02101110 13112111 21232042 01112131 00011142 00010001
(XEN) SMP: Allowing 4 CPUs
(XEN) enabled workaround for: ARM erratum 1319537
(XEN) dt_device_get_raw_irq: dev=/timer, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=1 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000001 0x0000000d...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/timer, index=1
(XEN)  using 'interrupts' property
(XEN)  intspec=1 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000001 0x0000000e...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/timer, index=2
(XEN)  using 'interrupts' property
(XEN)  intspec=1 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000001 0x0000000b...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/timer, index=3
(XEN)  using 'interrupts' property
(XEN)  intspec=1 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000001 0x0000000a...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) Generic Timer IRQ: phys=30 hyp=26 virt=27 Freq: 54000 KHz
(XEN) DT: ** translation for device /soc/interrupt-controller@40041000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 40041000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=40041000
(XEN) DT: default map, cp=7c000000, s=2000000, da=40041000
(XEN) DT: default map, cp=40000000, s=800000, da=40041000
(XEN) DT: parent translation for:<3> 00000000<3> ff800000<3>
(XEN) DT: with offset: 41000
(XEN) DT: one level translation:<3> 00000000<3> ff841000<3>
(XEN) DT: reached root node
(XEN) DT: ** translation for device /soc/interrupt-controller@40041000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 40042000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=40042000
(XEN) DT: default map, cp=7c000000, s=2000000, da=40042000
(XEN) DT: default map, cp=40000000, s=800000, da=40042000
(XEN) DT: parent translation for:<3> 00000000<3> ff800000<3>
(XEN) DT: with offset: 42000
(XEN) DT: one level translation:<3> 00000000<3> ff842000<3>
(XEN) DT: reached root node
(XEN) DT: ** translation for device /soc/interrupt-controller@40041000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 40044000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=40044000
(XEN) DT: default map, cp=7c000000, s=2000000, da=40044000
(XEN) DT: default map, cp=40000000, s=800000, da=40044000
(XEN) DT: parent translation for:<3> 00000000<3> ff800000<3>
(XEN) DT: with offset: 44000
(XEN) DT: one level translation:<3> 00000000<3> ff844000<3>
(XEN) DT: reached root node
(XEN) DT: ** translation for device /soc/interrupt-controller@40041000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 40046000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=40046000
(XEN) DT: default map, cp=7c000000, s=2000000, da=40046000
(XEN) DT: default map, cp=40000000, s=800000, da=40046000
(XEN) DT: parent translation for:<3> 00000000<3> ff800000<3>
(XEN) DT: with offset: 46000
(XEN) DT: one level translation:<3> 00000000<3> ff846000<3>
(XEN) DT: reached root node
(XEN) dt_device_get_raw_irq: dev=/soc/interrupt-controller@40041000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=1 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000001 0x00000009...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) GICv2 initialization:
(XEN)         gic_dist_addr=00000000ff841000
(XEN)         gic_cpu_addr=00000000ff842000
(XEN)         gic_hyp_addr=00000000ff844000
(XEN)         gic_vcpu_addr=00000000ff846000
(XEN)         gic_maintenance_irq=25
(XEN) GICv2: 256 lines, 4 cpus, secure (IID 0200143b).
(XEN) XSM Framework v1.0.0 initialized
(XEN) Initialising XSM SILO mode
(XEN) Using scheduler: SMP Credit Scheduler rev2 (credit2)
(XEN) Initializing Credit2 scheduler
(XEN)  load_precision_shift: 18
(XEN)  load_window_shift: 30
(XEN)  underload_balance_tolerance: 0
(XEN)  overload_balance_tolerance: -3
(XEN)  runqueues arrangement: socket
(XEN)  cap enforcement granularity: 10ms
(XEN) load tracking window length 1073741824 ns
(XEN) Allocated console ring of 32 KiB.
(XEN) CPU0: Guest atomics will try 14 times before pausing the domain
(XEN) Bringing up CPU1
- CPU 00000001 booting -
- Current EL 00000008 -
- Initialize CPU -
- Turning on paging -
- Ready -
(XEN) CPU1: Guest atomics will try 13 times before pausing the domain
(XEN) CPU 1 booted.
(XEN) Bringing up CPU2
- CPU 00000002 booting -
- Current EL 00000008 -
- Initialize CPU -
- Turning on paging -
- Ready -
(XEN) CPU2: Guest atomics will try 13 times before pausing the domain
(XEN) CPU 2 booted.
(XEN) Bringing up CPU3
- CPU 00000003 booting -
- Current EL 00000008 -
- Initialize CPU -
- Turning on paging -
- Ready -
(XEN) CPU3: Guest atomics will try 14 times before pausing the domain
(XEN) CPU 3 booted.
(XEN) Brought up 4 CPUs
(XEN) I/O virtualisation disabled
(XEN) P2M: 44-bit IPA with 44-bit PA and 8-bit VMID
(XEN) P2M: 4 levels with order-0 root, VTCR 0x80043594
(XEN) Adding cpu 0 to runqueue 0
(XEN)  First cpu on runqueue, activating
(XEN) Adding cpu 1 to runqueue 0
(XEN) Adding cpu 2 to runqueue 0
(XEN) Adding cpu 3 to runqueue 0
(XEN) alternatives: Patching with alt table 00000000002d45b8 -> 00000000002d4ccc
(XEN) *** LOADING DOMAIN 0 ***
(XEN) Loading d0 kernel from boot module @ 000000002bd7c000
(XEN) Allocating 1:1 mappings totalling 820MB for dom0:
(XEN) BANK[0] 0x00000008000000-0x00000028000000 (512MB)
(XEN) BANK[1] 0x0000002a000000-0x0000002b000000 (16MB)
(XEN) BANK[2] 0x0000002e000000-0x00000038000000 (160MB)
(XEN) BANK[3] 0x0000003cc00000-0x0000003d000000 (4MB)
(XEN) BANK[4] 0x000000e8000000-0x000000f0000000 (128MB)
(XEN) Grant table range: 0x0000002bc2a000-0x0000002bc6a000
(XEN) handle /
(XEN) dt_irq_number: dev=/
(XEN) / passthrough = 1 naddr = 0
(XEN) Check if / is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/
(XEN) handle /aliases
(XEN) dt_irq_number: dev=/aliases
(XEN) /aliases passthrough = 1 naddr = 0
(XEN) Check if /aliases is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/aliases
(XEN) handle /chosen
(XEN) dt_irq_number: dev=/chosen
(XEN) /chosen passthrough = 1 naddr = 0
(XEN) Check if /chosen is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/chosen
(XEN) handle /chosen/module@2bd7c000
(XEN)   Skip it (matched)
(XEN) handle /reserved-memory
(XEN) dt_irq_number: dev=/reserved-memory
(XEN) /reserved-memory passthrough = 1 naddr = 0
(XEN) Check if /reserved-memory is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/reserved-memory
(XEN) handle /reserved-memory/linux,cma
(XEN) dt_irq_number: dev=/reserved-memory/linux,cma
(XEN) /reserved-memory/linux,cma passthrough = 1 naddr = 0
(XEN) Check if /reserved-memory/linux,cma is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/reserved-memory/linux,cma
(XEN) handle /thermal-zones
(XEN) dt_irq_number: dev=/thermal-zones
(XEN) /thermal-zones passthrough = 1 naddr = 0
(XEN) Check if /thermal-zones is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/thermal-zones
(XEN) handle /thermal-zones/cpu-thermal
(XEN) dt_irq_number: dev=/thermal-zones/cpu-thermal
(XEN) /thermal-zones/cpu-thermal passthrough = 1 naddr = 0
(XEN) Check if /thermal-zones/cpu-thermal is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/thermal-zones/cpu-thermal
(XEN) handle /thermal-zones/cpu-thermal/cooling-maps
(XEN) dt_irq_number: dev=/thermal-zones/cpu-thermal/cooling-maps
(XEN) /thermal-zones/cpu-thermal/cooling-maps passthrough = 1 naddr = 0
(XEN) Check if /thermal-zones/cpu-thermal/cooling-maps is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/thermal-zones/cpu-thermal/cooling-maps
(XEN) handle /soc
(XEN) dt_irq_number: dev=/soc
(XEN) /soc passthrough = 1 naddr = 0
(XEN) Check if /soc is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc
(XEN) handle /soc/timer@7e003000
(XEN) dt_irq_number: dev=/soc/timer@7e003000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_device_get_raw_irq: dev=/soc/timer@7e003000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000040...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/timer@7e003000, index=1
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000041...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/timer@7e003000, index=2
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000042...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/timer@7e003000, index=3
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000043...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/timer@7e003000 passthrough = 1 naddr = 1
(XEN) Check if /soc/timer@7e003000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/timer@7e003000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_device_get_raw_irq: dev=/soc/timer@7e003000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000040...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/timer@7e003000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000040...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 96
(XEN) dt_device_get_raw_irq: dev=/soc/timer@7e003000, index=1
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000041...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/timer@7e003000, index=1
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000041...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 97
(XEN) dt_device_get_raw_irq: dev=/soc/timer@7e003000, index=2
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000042...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/timer@7e003000, index=2
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000042...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 98
(XEN) dt_device_get_raw_irq: dev=/soc/timer@7e003000, index=3
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000043...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/timer@7e003000, index=3
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000043...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 99
(XEN) DT: ** translation for device /soc/timer@7e003000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e003000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e003000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 3000
(XEN) DT: one level translation:<3> 00000000<3> fe003000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe003000 - 00fe004000 P2MType=5
(XEN) handle /soc/txp@7e004000
(XEN) dt_irq_number: dev=/soc/txp@7e004000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/txp@7e004000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000004b...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/txp@7e004000 passthrough = 1 naddr = 1
(XEN) Check if /soc/txp@7e004000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/txp@7e004000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/txp@7e004000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000004b...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/txp@7e004000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000004b...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 107
(XEN) DT: ** translation for device /soc/txp@7e004000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e004000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e004000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 4000
(XEN) DT: one level translation:<3> 00000000<3> fe004000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe004000 - 00fe004020 P2MType=5
(XEN) handle /soc/cprman@7e101000
(XEN) dt_irq_number: dev=/soc/cprman@7e101000
(XEN) /soc/cprman@7e101000 passthrough = 1 naddr = 1
(XEN) Check if /soc/cprman@7e101000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/cprman@7e101000
(XEN) DT: ** translation for device /soc/cprman@7e101000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e101000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e101000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 101000
(XEN) DT: one level translation:<3> 00000000<3> fe101000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe101000 - 00fe103000 P2MType=5
(XEN) handle /soc/mailbox@7e00b880
(XEN) dt_irq_number: dev=/soc/mailbox@7e00b880
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/mailbox@7e00b880, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000021...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/mailbox@7e00b880 passthrough = 1 naddr = 1
(XEN) Check if /soc/mailbox@7e00b880 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/mailbox@7e00b880
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/mailbox@7e00b880, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000021...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/mailbox@7e00b880, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000021...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 65
(XEN) DT: ** translation for device /soc/mailbox@7e00b880 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e00b880<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e00b880
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: b880
(XEN) DT: one level translation:<3> 00000000<3> fe00b880<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe00b880 - 00fe00b8c0 P2MType=5
(XEN) handle /soc/gpio@7e200000
(XEN) dt_irq_number: dev=/soc/gpio@7e200000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_device_get_raw_irq: dev=/soc/gpio@7e200000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000071...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/gpio@7e200000, index=1
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000072...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/gpio@7e200000 passthrough = 1 naddr = 1
(XEN) Check if /soc/gpio@7e200000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_device_get_raw_irq: dev=/soc/gpio@7e200000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000071...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/gpio@7e200000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000071...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 145
(XEN) dt_device_get_raw_irq: dev=/soc/gpio@7e200000, index=1
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000072...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/gpio@7e200000, index=1
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000072...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 146
(XEN) DT: ** translation for device /soc/gpio@7e200000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e200000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e200000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 200000
(XEN) DT: one level translation:<3> 00000000<3> fe200000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe200000 - 00fe2000b4 P2MType=5
(XEN) handle /soc/gpio@7e200000/dpi_gpio0
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/dpi_gpio0
(XEN) /soc/gpio@7e200000/dpi_gpio0 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/dpi_gpio0 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/dpi_gpio0
(XEN) handle /soc/gpio@7e200000/emmc_gpio22
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/emmc_gpio22
(XEN) /soc/gpio@7e200000/emmc_gpio22 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/emmc_gpio22 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/emmc_gpio22
(XEN) handle /soc/gpio@7e200000/emmc_gpio34
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/emmc_gpio34
(XEN) /soc/gpio@7e200000/emmc_gpio34 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/emmc_gpio34 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/emmc_gpio34
(XEN) handle /soc/gpio@7e200000/emmc_gpio48
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/emmc_gpio48
(XEN) /soc/gpio@7e200000/emmc_gpio48 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/emmc_gpio48 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/emmc_gpio48
(XEN) handle /soc/gpio@7e200000/gpclk0_gpio4
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/gpclk0_gpio4
(XEN) /soc/gpio@7e200000/gpclk0_gpio4 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/gpclk0_gpio4 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/gpclk0_gpio4
(XEN) handle /soc/gpio@7e200000/gpclk1_gpio5
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/gpclk1_gpio5
(XEN) /soc/gpio@7e200000/gpclk1_gpio5 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/gpclk1_gpio5 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/gpclk1_gpio5
(XEN) handle /soc/gpio@7e200000/gpclk1_gpio42
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/gpclk1_gpio42
(XEN) /soc/gpio@7e200000/gpclk1_gpio42 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/gpclk1_gpio42 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/gpclk1_gpio42
(XEN) handle /soc/gpio@7e200000/gpclk1_gpio44
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/gpclk1_gpio44
(XEN) /soc/gpio@7e200000/gpclk1_gpio44 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/gpclk1_gpio44 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/gpclk1_gpio44
(XEN) handle /soc/gpio@7e200000/gpclk2_gpio6
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/gpclk2_gpio6
(XEN) /soc/gpio@7e200000/gpclk2_gpio6 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/gpclk2_gpio6 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/gpclk2_gpio6
(XEN) handle /soc/gpio@7e200000/gpclk2_gpio43
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/gpclk2_gpio43
(XEN) /soc/gpio@7e200000/gpclk2_gpio43 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/gpclk2_gpio43 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/gpclk2_gpio43
(XEN) handle /soc/gpio@7e200000/i2c0_gpio0
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c0_gpio0
(XEN) /soc/gpio@7e200000/i2c0_gpio0 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c0_gpio0 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c0_gpio0
(XEN) handle /soc/gpio@7e200000/i2c0_gpio28
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c0_gpio28
(XEN) /soc/gpio@7e200000/i2c0_gpio28 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c0_gpio28 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c0_gpio28
(XEN) handle /soc/gpio@7e200000/i2c0_gpio44
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c0_gpio44
(XEN) /soc/gpio@7e200000/i2c0_gpio44 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c0_gpio44 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c0_gpio44
(XEN) handle /soc/gpio@7e200000/i2c1_gpio2
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c1_gpio2
(XEN) /soc/gpio@7e200000/i2c1_gpio2 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c1_gpio2 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c1_gpio2
(XEN) handle /soc/gpio@7e200000/i2c1_gpio44
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c1_gpio44
(XEN) /soc/gpio@7e200000/i2c1_gpio44 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c1_gpio44 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c1_gpio44
(XEN) handle /soc/gpio@7e200000/jtag_gpio22
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/jtag_gpio22
(XEN) /soc/gpio@7e200000/jtag_gpio22 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/jtag_gpio22 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/jtag_gpio22
(XEN) handle /soc/gpio@7e200000/pcm_gpio18
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pcm_gpio18
(XEN) /soc/gpio@7e200000/pcm_gpio18 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/pcm_gpio18 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pcm_gpio18
(XEN) handle /soc/gpio@7e200000/pcm_gpio28
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pcm_gpio28
(XEN) /soc/gpio@7e200000/pcm_gpio28 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/pcm_gpio28 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pcm_gpio28
(XEN) handle /soc/gpio@7e200000/sdhost_gpio48
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/sdhost_gpio48
(XEN) /soc/gpio@7e200000/sdhost_gpio48 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/sdhost_gpio48 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/sdhost_gpio48
(XEN) handle /soc/gpio@7e200000/spi0_gpio7
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi0_gpio7
(XEN) /soc/gpio@7e200000/spi0_gpio7 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/spi0_gpio7 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi0_gpio7
(XEN) handle /soc/gpio@7e200000/spi0_gpio35
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi0_gpio35
(XEN) /soc/gpio@7e200000/spi0_gpio35 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/spi0_gpio35 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi0_gpio35
(XEN) handle /soc/gpio@7e200000/spi1_gpio16
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi1_gpio16
(XEN) /soc/gpio@7e200000/spi1_gpio16 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/spi1_gpio16 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi1_gpio16
(XEN) handle /soc/gpio@7e200000/spi2_gpio40
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi2_gpio40
(XEN) /soc/gpio@7e200000/spi2_gpio40 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/spi2_gpio40 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi2_gpio40
(XEN) handle /soc/gpio@7e200000/uart0_gpio14
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart0_gpio14
(XEN) /soc/gpio@7e200000/uart0_gpio14 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart0_gpio14 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart0_gpio14
(XEN) handle /soc/gpio@7e200000/uart0_ctsrts_gpio16
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart0_ctsrts_gpio16
(XEN) /soc/gpio@7e200000/uart0_ctsrts_gpio16 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart0_ctsrts_gpio16 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart0_ctsrts_gpio16
(XEN) handle /soc/gpio@7e200000/uart0_ctsrts_gpio30
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart0_ctsrts_gpio30
(XEN) /soc/gpio@7e200000/uart0_ctsrts_gpio30 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart0_ctsrts_gpio30 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart0_ctsrts_gpio30
(XEN) handle /soc/gpio@7e200000/uart0_gpio32
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart0_gpio32
(XEN) /soc/gpio@7e200000/uart0_gpio32 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart0_gpio32 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart0_gpio32
(XEN) handle /soc/gpio@7e200000/uart0_gpio36
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart0_gpio36
(XEN) /soc/gpio@7e200000/uart0_gpio36 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart0_gpio36 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart0_gpio36
(XEN) handle /soc/gpio@7e200000/uart0_ctsrts_gpio38
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart0_ctsrts_gpio38
(XEN) /soc/gpio@7e200000/uart0_ctsrts_gpio38 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart0_ctsrts_gpio38 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart0_ctsrts_gpio38
(XEN) handle /soc/gpio@7e200000/uart1_gpio14
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart1_gpio14
(XEN) /soc/gpio@7e200000/uart1_gpio14 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart1_gpio14 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart1_gpio14
(XEN) handle /soc/gpio@7e200000/uart1_ctsrts_gpio16
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart1_ctsrts_gpio16
(XEN) /soc/gpio@7e200000/uart1_ctsrts_gpio16 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart1_ctsrts_gpio16 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart1_ctsrts_gpio16
(XEN) handle /soc/gpio@7e200000/uart1_gpio32
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart1_gpio32
(XEN) /soc/gpio@7e200000/uart1_gpio32 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart1_gpio32 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart1_gpio32
(XEN) handle /soc/gpio@7e200000/uart1_ctsrts_gpio30
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart1_ctsrts_gpio30
(XEN) /soc/gpio@7e200000/uart1_ctsrts_gpio30 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart1_ctsrts_gpio30 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart1_ctsrts_gpio30
(XEN) handle /soc/gpio@7e200000/uart1_gpio40
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart1_gpio40
(XEN) /soc/gpio@7e200000/uart1_gpio40 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart1_gpio40 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart1_gpio40
(XEN) handle /soc/gpio@7e200000/uart1_ctsrts_gpio42
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart1_ctsrts_gpio42
(XEN) /soc/gpio@7e200000/uart1_ctsrts_gpio42 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart1_ctsrts_gpio42 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart1_ctsrts_gpio42
(XEN) handle /soc/gpio@7e200000/gpclk0_gpio49
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/gpclk0_gpio49
(XEN) /soc/gpio@7e200000/gpclk0_gpio49 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/gpclk0_gpio49 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/gpclk0_gpio49
(XEN) handle /soc/gpio@7e200000/gpclk0_gpio49/pin-gpclk
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/gpclk0_gpio49/pin-gpclk
(XEN) /soc/gpio@7e200000/gpclk0_gpio49/pin-gpclk passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/gpclk0_gpio49/pin-gpclk is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/gpclk0_gpio49/pin-gpclk
(XEN) handle /soc/gpio@7e200000/gpclk1_gpio50
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/gpclk1_gpio50
(XEN) /soc/gpio@7e200000/gpclk1_gpio50 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/gpclk1_gpio50 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/gpclk1_gpio50
(XEN) handle /soc/gpio@7e200000/gpclk1_gpio50/pin-gpclk
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/gpclk1_gpio50/pin-gpclk
(XEN) /soc/gpio@7e200000/gpclk1_gpio50/pin-gpclk passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/gpclk1_gpio50/pin-gpclk is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/gpclk1_gpio50/pin-gpclk
(XEN) handle /soc/gpio@7e200000/gpclk2_gpio51
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/gpclk2_gpio51
(XEN) /soc/gpio@7e200000/gpclk2_gpio51 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/gpclk2_gpio51 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/gpclk2_gpio51
(XEN) handle /soc/gpio@7e200000/gpclk2_gpio51/pin-gpclk
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/gpclk2_gpio51/pin-gpclk
(XEN) /soc/gpio@7e200000/gpclk2_gpio51/pin-gpclk passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/gpclk2_gpio51/pin-gpclk is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/gpclk2_gpio51/pin-gpclk
(XEN) handle /soc/gpio@7e200000/i2c0_gpio46
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c0_gpio46
(XEN) /soc/gpio@7e200000/i2c0_gpio46 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c0_gpio46 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c0_gpio46
(XEN) handle /soc/gpio@7e200000/i2c0_gpio46/pin-sda
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c0_gpio46/pin-sda
(XEN) /soc/gpio@7e200000/i2c0_gpio46/pin-sda passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c0_gpio46/pin-sda is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c0_gpio46/pin-sda
(XEN) handle /soc/gpio@7e200000/i2c0_gpio46/pin-scl
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c0_gpio46/pin-scl
(XEN) /soc/gpio@7e200000/i2c0_gpio46/pin-scl passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c0_gpio46/pin-scl is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c0_gpio46/pin-scl
(XEN) handle /soc/gpio@7e200000/i2c1_gpio46
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c1_gpio46
(XEN) /soc/gpio@7e200000/i2c1_gpio46 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c1_gpio46 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c1_gpio46
(XEN) handle /soc/gpio@7e200000/i2c1_gpio46/pin-sda
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c1_gpio46/pin-sda
(XEN) /soc/gpio@7e200000/i2c1_gpio46/pin-sda passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c1_gpio46/pin-sda is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c1_gpio46/pin-sda
(XEN) handle /soc/gpio@7e200000/i2c1_gpio46/pin-scl
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c1_gpio46/pin-scl
(XEN) /soc/gpio@7e200000/i2c1_gpio46/pin-scl passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c1_gpio46/pin-scl is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c1_gpio46/pin-scl
(XEN) handle /soc/gpio@7e200000/i2c3_gpio2
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c3_gpio2
(XEN) /soc/gpio@7e200000/i2c3_gpio2 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c3_gpio2 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c3_gpio2
(XEN) handle /soc/gpio@7e200000/i2c3_gpio2/pin-sda
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c3_gpio2/pin-sda
(XEN) /soc/gpio@7e200000/i2c3_gpio2/pin-sda passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c3_gpio2/pin-sda is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c3_gpio2/pin-sda
(XEN) handle /soc/gpio@7e200000/i2c3_gpio2/pin-scl
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c3_gpio2/pin-scl
(XEN) /soc/gpio@7e200000/i2c3_gpio2/pin-scl passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c3_gpio2/pin-scl is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c3_gpio2/pin-scl
(XEN) handle /soc/gpio@7e200000/i2c3_gpio4
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c3_gpio4
(XEN) /soc/gpio@7e200000/i2c3_gpio4 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c3_gpio4 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c3_gpio4
(XEN) handle /soc/gpio@7e200000/i2c3_gpio4/pin-sda
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c3_gpio4/pin-sda
(XEN) /soc/gpio@7e200000/i2c3_gpio4/pin-sda passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c3_gpio4/pin-sda is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c3_gpio4/pin-sda
(XEN) handle /soc/gpio@7e200000/i2c3_gpio4/pin-scl
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c3_gpio4/pin-scl
(XEN) /soc/gpio@7e200000/i2c3_gpio4/pin-scl passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c3_gpio4/pin-scl is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c3_gpio4/pin-scl
(XEN) handle /soc/gpio@7e200000/i2c4_gpio6
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c4_gpio6
(XEN) /soc/gpio@7e200000/i2c4_gpio6 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c4_gpio6 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c4_gpio6
(XEN) handle /soc/gpio@7e200000/i2c4_gpio6/pin-sda
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c4_gpio6/pin-sda
(XEN) /soc/gpio@7e200000/i2c4_gpio6/pin-sda passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c4_gpio6/pin-sda is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c4_gpio6/pin-sda
(XEN) handle /soc/gpio@7e200000/i2c4_gpio6/pin-scl
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c4_gpio6/pin-scl
(XEN) /soc/gpio@7e200000/i2c4_gpio6/pin-scl passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c4_gpio6/pin-scl is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c4_gpio6/pin-scl
(XEN) handle /soc/gpio@7e200000/i2c4_gpio8
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c4_gpio8
(XEN) /soc/gpio@7e200000/i2c4_gpio8 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c4_gpio8 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c4_gpio8
(XEN) handle /soc/gpio@7e200000/i2c4_gpio8/pin-sda
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c4_gpio8/pin-sda
(XEN) /soc/gpio@7e200000/i2c4_gpio8/pin-sda passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c4_gpio8/pin-sda is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c4_gpio8/pin-sda
(XEN) handle /soc/gpio@7e200000/i2c4_gpio8/pin-scl
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c4_gpio8/pin-scl
(XEN) /soc/gpio@7e200000/i2c4_gpio8/pin-scl passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c4_gpio8/pin-scl is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c4_gpio8/pin-scl
(XEN) handle /soc/gpio@7e200000/i2c5_gpio10
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c5_gpio10
(XEN) /soc/gpio@7e200000/i2c5_gpio10 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c5_gpio10 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c5_gpio10
(XEN) handle /soc/gpio@7e200000/i2c5_gpio10/pin-sda
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c5_gpio10/pin-sda
(XEN) /soc/gpio@7e200000/i2c5_gpio10/pin-sda passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c5_gpio10/pin-sda is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c5_gpio10/pin-sda
(XEN) handle /soc/gpio@7e200000/i2c5_gpio10/pin-scl
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c5_gpio10/pin-scl
(XEN) /soc/gpio@7e200000/i2c5_gpio10/pin-scl passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c5_gpio10/pin-scl is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c5_gpio10/pin-scl
(XEN) handle /soc/gpio@7e200000/i2c5_gpio12
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c5_gpio12
(XEN) /soc/gpio@7e200000/i2c5_gpio12 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c5_gpio12 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c5_gpio12
(XEN) handle /soc/gpio@7e200000/i2c5_gpio12/pin-sda
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c5_gpio12/pin-sda
(XEN) /soc/gpio@7e200000/i2c5_gpio12/pin-sda passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c5_gpio12/pin-sda is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c5_gpio12/pin-sda
(XEN) handle /soc/gpio@7e200000/i2c5_gpio12/pin-scl
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c5_gpio12/pin-scl
(XEN) /soc/gpio@7e200000/i2c5_gpio12/pin-scl passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c5_gpio12/pin-scl is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c5_gpio12/pin-scl
(XEN) handle /soc/gpio@7e200000/i2c6_gpio0
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c6_gpio0
(XEN) /soc/gpio@7e200000/i2c6_gpio0 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c6_gpio0 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c6_gpio0
(XEN) handle /soc/gpio@7e200000/i2c6_gpio0/pin-sda
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c6_gpio0/pin-sda
(XEN) /soc/gpio@7e200000/i2c6_gpio0/pin-sda passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c6_gpio0/pin-sda is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c6_gpio0/pin-sda
(XEN) handle /soc/gpio@7e200000/i2c6_gpio0/pin-scl
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c6_gpio0/pin-scl
(XEN) /soc/gpio@7e200000/i2c6_gpio0/pin-scl passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c6_gpio0/pin-scl is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c6_gpio0/pin-scl
(XEN) handle /soc/gpio@7e200000/i2c6_gpio22
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c6_gpio22
(XEN) /soc/gpio@7e200000/i2c6_gpio22 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c6_gpio22 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c6_gpio22
(XEN) handle /soc/gpio@7e200000/i2c6_gpio22/pin-sda
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c6_gpio22/pin-sda
(XEN) /soc/gpio@7e200000/i2c6_gpio22/pin-sda passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c6_gpio22/pin-sda is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c6_gpio22/pin-sda
(XEN) handle /soc/gpio@7e200000/i2c6_gpio22/pin-scl
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c6_gpio22/pin-scl
(XEN) /soc/gpio@7e200000/i2c6_gpio22/pin-scl passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c6_gpio22/pin-scl is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c6_gpio22/pin-scl
(XEN) handle /soc/gpio@7e200000/i2c_slave_gpio8
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c_slave_gpio8
(XEN) /soc/gpio@7e200000/i2c_slave_gpio8 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c_slave_gpio8 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c_slave_gpio8
(XEN) handle /soc/gpio@7e200000/i2c_slave_gpio8/pins-i2c-slave
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c_slave_gpio8/pins-i2c-slave
(XEN) /soc/gpio@7e200000/i2c_slave_gpio8/pins-i2c-slave passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c_slave_gpio8/pins-i2c-slave is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c_slave_gpio8/pins-i2c-slave
(XEN) handle /soc/gpio@7e200000/jtag_gpio48
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/jtag_gpio48
(XEN) /soc/gpio@7e200000/jtag_gpio48 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/jtag_gpio48 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/jtag_gpio48
(XEN) handle /soc/gpio@7e200000/jtag_gpio48/pins-jtag
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/jtag_gpio48/pins-jtag
(XEN) /soc/gpio@7e200000/jtag_gpio48/pins-jtag passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/jtag_gpio48/pins-jtag is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/jtag_gpio48/pins-jtag
(XEN) handle /soc/gpio@7e200000/mii_gpio28
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/mii_gpio28
(XEN) /soc/gpio@7e200000/mii_gpio28 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/mii_gpio28 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/mii_gpio28
(XEN) handle /soc/gpio@7e200000/mii_gpio28/pins-mii
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/mii_gpio28/pins-mii
(XEN) /soc/gpio@7e200000/mii_gpio28/pins-mii passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/mii_gpio28/pins-mii is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/mii_gpio28/pins-mii
(XEN) handle /soc/gpio@7e200000/mii_gpio36
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/mii_gpio36
(XEN) /soc/gpio@7e200000/mii_gpio36 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/mii_gpio36 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/mii_gpio36
(XEN) handle /soc/gpio@7e200000/mii_gpio36/pins-mii
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/mii_gpio36/pins-mii
(XEN) /soc/gpio@7e200000/mii_gpio36/pins-mii passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/mii_gpio36/pins-mii is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/mii_gpio36/pins-mii
(XEN) handle /soc/gpio@7e200000/pcm_gpio50
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pcm_gpio50
(XEN) /soc/gpio@7e200000/pcm_gpio50 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/pcm_gpio50 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pcm_gpio50
(XEN) handle /soc/gpio@7e200000/pcm_gpio50/pins-pcm
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pcm_gpio50/pins-pcm
(XEN) /soc/gpio@7e200000/pcm_gpio50/pins-pcm passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/pcm_gpio50/pins-pcm is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pcm_gpio50/pins-pcm
(XEN) handle /soc/gpio@7e200000/pwm0_0_gpio12
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_0_gpio12
(XEN) /soc/gpio@7e200000/pwm0_0_gpio12 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/pwm0_0_gpio12 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_0_gpio12
(XEN) handle /soc/gpio@7e200000/pwm0_0_gpio12/pin-pwm
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_0_gpio12/pin-pwm
(XEN) /soc/gpio@7e200000/pwm0_0_gpio12/pin-pwm passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/pwm0_0_gpio12/pin-pwm is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_0_gpio12/pin-pwm
(XEN) handle /soc/gpio@7e200000/pwm0_0_gpio18
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_0_gpio18
(XEN) /soc/gpio@7e200000/pwm0_0_gpio18 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/pwm0_0_gpio18 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_0_gpio18
(XEN) handle /soc/gpio@7e200000/pwm0_0_gpio18/pin-pwm
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_0_gpio18/pin-pwm
(XEN) /soc/gpio@7e200000/pwm0_0_gpio18/pin-pwm passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/pwm0_0_gpio18/pin-pwm is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_0_gpio18/pin-pwm
(XEN) handle /soc/gpio@7e200000/pwm1_0_gpio40
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm1_0_gpio40
(XEN) /soc/gpio@7e200000/pwm1_0_gpio40 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/pwm1_0_gpio40 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm1_0_gpio40
(XEN) handle /soc/gpio@7e200000/pwm1_0_gpio40/pin-pwm
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm1_0_gpio40/pin-pwm
(XEN) /soc/gpio@7e200000/pwm1_0_gpio40/pin-pwm passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/pwm1_0_gpio40/pin-pwm is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm1_0_gpio40/pin-pwm
(XEN) handle /soc/gpio@7e200000/pwm0_1_gpio13
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_1_gpio13
(XEN) /soc/gpio@7e200000/pwm0_1_gpio13 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/pwm0_1_gpio13 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_1_gpio13
(XEN) handle /soc/gpio@7e200000/pwm0_1_gpio13/pin-pwm
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_1_gpio13/pin-pwm
(XEN) /soc/gpio@7e200000/pwm0_1_gpio13/pin-pwm passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/pwm0_1_gpio13/pin-pwm is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_1_gpio13/pin-pwm
(XEN) handle /soc/gpio@7e200000/pwm0_1_gpio19
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_1_gpio19
(XEN) /soc/gpio@7e200000/pwm0_1_gpio19 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/pwm0_1_gpio19 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_1_gpio19
(XEN) handle /soc/gpio@7e200000/pwm0_1_gpio19/pin-pwm
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_1_gpio19/pin-pwm
(XEN) /soc/gpio@7e200000/pwm0_1_gpio19/pin-pwm passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/pwm0_1_gpio19/pin-pwm is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_1_gpio19/pin-pwm
(XEN) handle /soc/gpio@7e200000/pwm1_1_gpio41
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm1_1_gpio41
(XEN) /soc/gpio@7e200000/pwm1_1_gpio41 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/pwm1_1_gpio41 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm1_1_gpio41
(XEN) handle /soc/gpio@7e200000/pwm1_1_gpio41/pin-pwm
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm1_1_gpio41/pin-pwm
(XEN) /soc/gpio@7e200000/pwm1_1_gpio41/pin-pwm passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/pwm1_1_gpio41/pin-pwm is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm1_1_gpio41/pin-pwm
(XEN) handle /soc/gpio@7e200000/pwm0_1_gpio45
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_1_gpio45
(XEN) /soc/gpio@7e200000/pwm0_1_gpio45 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/pwm0_1_gpio45 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_1_gpio45
(XEN) handle /soc/gpio@7e200000/pwm0_1_gpio45/pin-pwm
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_1_gpio45/pin-pwm
(XEN) /soc/gpio@7e200000/pwm0_1_gpio45/pin-pwm passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/pwm0_1_gpio45/pin-pwm is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_1_gpio45/pin-pwm
(XEN) handle /soc/gpio@7e200000/pwm0_0_gpio52
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_0_gpio52
(XEN) /soc/gpio@7e200000/pwm0_0_gpio52 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/pwm0_0_gpio52 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_0_gpio52
(XEN) handle /soc/gpio@7e200000/pwm0_0_gpio52/pin-pwm
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_0_gpio52/pin-pwm
(XEN) /soc/gpio@7e200000/pwm0_0_gpio52/pin-pwm passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/pwm0_0_gpio52/pin-pwm is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_0_gpio52/pin-pwm
(XEN) handle /soc/gpio@7e200000/pwm0_1_gpio53
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_1_gpio53
(XEN) /soc/gpio@7e200000/pwm0_1_gpio53 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/pwm0_1_gpio53 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_1_gpio53
(XEN) handle /soc/gpio@7e200000/pwm0_1_gpio53/pin-pwm
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_1_gpio53/pin-pwm
(XEN) /soc/gpio@7e200000/pwm0_1_gpio53/pin-pwm passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/pwm0_1_gpio53/pin-pwm is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/pwm0_1_gpio53/pin-pwm
(XEN) handle /soc/gpio@7e200000/rgmii_gpio35
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/rgmii_gpio35
(XEN) /soc/gpio@7e200000/rgmii_gpio35 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/rgmii_gpio35 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/rgmii_gpio35
(XEN) handle /soc/gpio@7e200000/rgmii_gpio35/pin-start-stop
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/rgmii_gpio35/pin-start-stop
(XEN) /soc/gpio@7e200000/rgmii_gpio35/pin-start-stop passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/rgmii_gpio35/pin-start-stop is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/rgmii_gpio35/pin-start-stop
(XEN) handle /soc/gpio@7e200000/rgmii_gpio35/pin-rx-ok
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/rgmii_gpio35/pin-rx-ok
(XEN) /soc/gpio@7e200000/rgmii_gpio35/pin-rx-ok passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/rgmii_gpio35/pin-rx-ok is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/rgmii_gpio35/pin-rx-ok
(XEN) handle /soc/gpio@7e200000/rgmii_irq_gpio34
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/rgmii_irq_gpio34
(XEN) /soc/gpio@7e200000/rgmii_irq_gpio34 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/rgmii_irq_gpio34 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/rgmii_irq_gpio34
(XEN) handle /soc/gpio@7e200000/rgmii_irq_gpio34/pin-irq
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/rgmii_irq_gpio34/pin-irq
(XEN) /soc/gpio@7e200000/rgmii_irq_gpio34/pin-irq passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/rgmii_irq_gpio34/pin-irq is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/rgmii_irq_gpio34/pin-irq
(XEN) handle /soc/gpio@7e200000/rgmii_irq_gpio39
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/rgmii_irq_gpio39
(XEN) /soc/gpio@7e200000/rgmii_irq_gpio39 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/rgmii_irq_gpio39 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/rgmii_irq_gpio39
(XEN) handle /soc/gpio@7e200000/rgmii_irq_gpio39/pin-irq
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/rgmii_irq_gpio39/pin-irq
(XEN) /soc/gpio@7e200000/rgmii_irq_gpio39/pin-irq passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/rgmii_irq_gpio39/pin-irq is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/rgmii_irq_gpio39/pin-irq
(XEN) handle /soc/gpio@7e200000/rgmii_mdio_gpio28
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/rgmii_mdio_gpio28
(XEN) /soc/gpio@7e200000/rgmii_mdio_gpio28 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/rgmii_mdio_gpio28 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/rgmii_mdio_gpio28
(XEN) handle /soc/gpio@7e200000/rgmii_mdio_gpio28/pins-mdio
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/rgmii_mdio_gpio28/pins-mdio
(XEN) /soc/gpio@7e200000/rgmii_mdio_gpio28/pins-mdio passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/rgmii_mdio_gpio28/pins-mdio is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/rgmii_mdio_gpio28/pins-mdio
(XEN) handle /soc/gpio@7e200000/rgmii_mdio_gpio37
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/rgmii_mdio_gpio37
(XEN) /soc/gpio@7e200000/rgmii_mdio_gpio37 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/rgmii_mdio_gpio37 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/rgmii_mdio_gpio37
(XEN) handle /soc/gpio@7e200000/rgmii_mdio_gpio37/pins-mdio
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/rgmii_mdio_gpio37/pins-mdio
(XEN) /soc/gpio@7e200000/rgmii_mdio_gpio37/pins-mdio passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/rgmii_mdio_gpio37/pins-mdio is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/rgmii_mdio_gpio37/pins-mdio
(XEN) handle /soc/gpio@7e200000/spi0_gpio46
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi0_gpio46
(XEN) /soc/gpio@7e200000/spi0_gpio46 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/spi0_gpio46 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi0_gpio46
(XEN) handle /soc/gpio@7e200000/spi0_gpio46/pins-spi
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi0_gpio46/pins-spi
(XEN) /soc/gpio@7e200000/spi0_gpio46/pins-spi passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/spi0_gpio46/pins-spi is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi0_gpio46/pins-spi
(XEN) handle /soc/gpio@7e200000/spi2_gpio46
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi2_gpio46
(XEN) /soc/gpio@7e200000/spi2_gpio46 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/spi2_gpio46 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi2_gpio46
(XEN) handle /soc/gpio@7e200000/spi2_gpio46/pins-spi
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi2_gpio46/pins-spi
(XEN) /soc/gpio@7e200000/spi2_gpio46/pins-spi passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/spi2_gpio46/pins-spi is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi2_gpio46/pins-spi
(XEN) handle /soc/gpio@7e200000/spi3_gpio0
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi3_gpio0
(XEN) /soc/gpio@7e200000/spi3_gpio0 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/spi3_gpio0 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi3_gpio0
(XEN) handle /soc/gpio@7e200000/spi3_gpio0/pins-spi
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi3_gpio0/pins-spi
(XEN) /soc/gpio@7e200000/spi3_gpio0/pins-spi passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/spi3_gpio0/pins-spi is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi3_gpio0/pins-spi
(XEN) handle /soc/gpio@7e200000/spi4_gpio4
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi4_gpio4
(XEN) /soc/gpio@7e200000/spi4_gpio4 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/spi4_gpio4 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi4_gpio4
(XEN) handle /soc/gpio@7e200000/spi4_gpio4/pins-spi
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi4_gpio4/pins-spi
(XEN) /soc/gpio@7e200000/spi4_gpio4/pins-spi passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/spi4_gpio4/pins-spi is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi4_gpio4/pins-spi
(XEN) handle /soc/gpio@7e200000/spi5_gpio12
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi5_gpio12
(XEN) /soc/gpio@7e200000/spi5_gpio12 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/spi5_gpio12 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi5_gpio12
(XEN) handle /soc/gpio@7e200000/spi5_gpio12/pins-spi
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi5_gpio12/pins-spi
(XEN) /soc/gpio@7e200000/spi5_gpio12/pins-spi passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/spi5_gpio12/pins-spi is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi5_gpio12/pins-spi
(XEN) handle /soc/gpio@7e200000/spi6_gpio18
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi6_gpio18
(XEN) /soc/gpio@7e200000/spi6_gpio18 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/spi6_gpio18 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi6_gpio18
(XEN) handle /soc/gpio@7e200000/spi6_gpio18/pins-spi
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi6_gpio18/pins-spi
(XEN) /soc/gpio@7e200000/spi6_gpio18/pins-spi passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/spi6_gpio18/pins-spi is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi6_gpio18/pins-spi
(XEN) handle /soc/gpio@7e200000/uart2_gpio0
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart2_gpio0
(XEN) /soc/gpio@7e200000/uart2_gpio0 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart2_gpio0 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart2_gpio0
(XEN) handle /soc/gpio@7e200000/uart2_gpio0/pin-tx
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart2_gpio0/pin-tx
(XEN) /soc/gpio@7e200000/uart2_gpio0/pin-tx passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart2_gpio0/pin-tx is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart2_gpio0/pin-tx
(XEN) handle /soc/gpio@7e200000/uart2_gpio0/pin-rx
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart2_gpio0/pin-rx
(XEN) /soc/gpio@7e200000/uart2_gpio0/pin-rx passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart2_gpio0/pin-rx is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart2_gpio0/pin-rx
(XEN) handle /soc/gpio@7e200000/uart2_ctsrts_gpio2
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart2_ctsrts_gpio2
(XEN) /soc/gpio@7e200000/uart2_ctsrts_gpio2 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart2_ctsrts_gpio2 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart2_ctsrts_gpio2
(XEN) handle /soc/gpio@7e200000/uart2_ctsrts_gpio2/pin-cts
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart2_ctsrts_gpio2/pin-cts
(XEN) /soc/gpio@7e200000/uart2_ctsrts_gpio2/pin-cts passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart2_ctsrts_gpio2/pin-cts is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart2_ctsrts_gpio2/pin-cts
(XEN) handle /soc/gpio@7e200000/uart2_ctsrts_gpio2/pin-rts
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart2_ctsrts_gpio2/pin-rts
(XEN) /soc/gpio@7e200000/uart2_ctsrts_gpio2/pin-rts passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart2_ctsrts_gpio2/pin-rts is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart2_ctsrts_gpio2/pin-rts
(XEN) handle /soc/gpio@7e200000/uart3_gpio4
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart3_gpio4
(XEN) /soc/gpio@7e200000/uart3_gpio4 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart3_gpio4 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart3_gpio4
(XEN) handle /soc/gpio@7e200000/uart3_gpio4/pin-tx
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart3_gpio4/pin-tx
(XEN) /soc/gpio@7e200000/uart3_gpio4/pin-tx passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart3_gpio4/pin-tx is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart3_gpio4/pin-tx
(XEN) handle /soc/gpio@7e200000/uart3_gpio4/pin-rx
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart3_gpio4/pin-rx
(XEN) /soc/gpio@7e200000/uart3_gpio4/pin-rx passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart3_gpio4/pin-rx is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart3_gpio4/pin-rx
(XEN) handle /soc/gpio@7e200000/uart3_ctsrts_gpio6
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart3_ctsrts_gpio6
(XEN) /soc/gpio@7e200000/uart3_ctsrts_gpio6 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart3_ctsrts_gpio6 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart3_ctsrts_gpio6
(XEN) handle /soc/gpio@7e200000/uart3_ctsrts_gpio6/pin-cts
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart3_ctsrts_gpio6/pin-cts
(XEN) /soc/gpio@7e200000/uart3_ctsrts_gpio6/pin-cts passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart3_ctsrts_gpio6/pin-cts is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart3_ctsrts_gpio6/pin-cts
(XEN) handle /soc/gpio@7e200000/uart3_ctsrts_gpio6/pin-rts
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart3_ctsrts_gpio6/pin-rts
(XEN) /soc/gpio@7e200000/uart3_ctsrts_gpio6/pin-rts passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart3_ctsrts_gpio6/pin-rts is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart3_ctsrts_gpio6/pin-rts
(XEN) handle /soc/gpio@7e200000/uart4_gpio8
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart4_gpio8
(XEN) /soc/gpio@7e200000/uart4_gpio8 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart4_gpio8 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart4_gpio8
(XEN) handle /soc/gpio@7e200000/uart4_gpio8/pin-tx
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart4_gpio8/pin-tx
(XEN) /soc/gpio@7e200000/uart4_gpio8/pin-tx passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart4_gpio8/pin-tx is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart4_gpio8/pin-tx
(XEN) handle /soc/gpio@7e200000/uart4_gpio8/pin-rx
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart4_gpio8/pin-rx
(XEN) /soc/gpio@7e200000/uart4_gpio8/pin-rx passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart4_gpio8/pin-rx is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart4_gpio8/pin-rx
(XEN) handle /soc/gpio@7e200000/uart4_ctsrts_gpio10
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart4_ctsrts_gpio10
(XEN) /soc/gpio@7e200000/uart4_ctsrts_gpio10 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart4_ctsrts_gpio10 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart4_ctsrts_gpio10
(XEN) handle /soc/gpio@7e200000/uart4_ctsrts_gpio10/pin-cts
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart4_ctsrts_gpio10/pin-cts
(XEN) /soc/gpio@7e200000/uart4_ctsrts_gpio10/pin-cts passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart4_ctsrts_gpio10/pin-cts is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart4_ctsrts_gpio10/pin-cts
(XEN) handle /soc/gpio@7e200000/uart4_ctsrts_gpio10/pin-rts
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart4_ctsrts_gpio10/pin-rts
(XEN) /soc/gpio@7e200000/uart4_ctsrts_gpio10/pin-rts passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart4_ctsrts_gpio10/pin-rts is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart4_ctsrts_gpio10/pin-rts
(XEN) handle /soc/gpio@7e200000/uart5_gpio12
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart5_gpio12
(XEN) /soc/gpio@7e200000/uart5_gpio12 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart5_gpio12 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart5_gpio12
(XEN) handle /soc/gpio@7e200000/uart5_gpio12/pin-tx
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart5_gpio12/pin-tx
(XEN) /soc/gpio@7e200000/uart5_gpio12/pin-tx passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart5_gpio12/pin-tx is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart5_gpio12/pin-tx
(XEN) handle /soc/gpio@7e200000/uart5_gpio12/pin-rx
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart5_gpio12/pin-rx
(XEN) /soc/gpio@7e200000/uart5_gpio12/pin-rx passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart5_gpio12/pin-rx is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart5_gpio12/pin-rx
(XEN) handle /soc/gpio@7e200000/uart5_ctsrts_gpio14
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart5_ctsrts_gpio14
(XEN) /soc/gpio@7e200000/uart5_ctsrts_gpio14 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart5_ctsrts_gpio14 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart5_ctsrts_gpio14
(XEN) handle /soc/gpio@7e200000/uart5_ctsrts_gpio14/pin-cts
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart5_ctsrts_gpio14/pin-cts
(XEN) /soc/gpio@7e200000/uart5_ctsrts_gpio14/pin-cts passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart5_ctsrts_gpio14/pin-cts is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart5_ctsrts_gpio14/pin-cts
(XEN) handle /soc/gpio@7e200000/uart5_ctsrts_gpio14/pin-rts
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart5_ctsrts_gpio14/pin-rts
(XEN) /soc/gpio@7e200000/uart5_ctsrts_gpio14/pin-rts passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart5_ctsrts_gpio14/pin-rts is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart5_ctsrts_gpio14/pin-rts
(XEN) handle /soc/gpio@7e200000/gpioout
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/gpioout
(XEN) /soc/gpio@7e200000/gpioout passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/gpioout is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/gpioout
(XEN) handle /soc/gpio@7e200000/alt0
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/alt0
(XEN) /soc/gpio@7e200000/alt0 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/alt0 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/alt0
(XEN) handle /soc/gpio@7e200000/dpi_18bit_gpio0
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/dpi_18bit_gpio0
(XEN) /soc/gpio@7e200000/dpi_18bit_gpio0 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/dpi_18bit_gpio0 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/dpi_18bit_gpio0
(XEN) handle /soc/gpio@7e200000/spi0_pins
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi0_pins
(XEN) /soc/gpio@7e200000/spi0_pins passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/spi0_pins is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi0_pins
(XEN) handle /soc/gpio@7e200000/spi0_cs_pins
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi0_cs_pins
(XEN) /soc/gpio@7e200000/spi0_cs_pins passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/spi0_cs_pins is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi0_cs_pins
(XEN) handle /soc/gpio@7e200000/spi3_pins
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi3_pins
(XEN) /soc/gpio@7e200000/spi3_pins passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/spi3_pins is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi3_pins
(XEN) handle /soc/gpio@7e200000/spi3_cs_pins
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi3_cs_pins
(XEN) /soc/gpio@7e200000/spi3_cs_pins passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/spi3_cs_pins is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi3_cs_pins
(XEN) handle /soc/gpio@7e200000/spi4_pins
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi4_pins
(XEN) /soc/gpio@7e200000/spi4_pins passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/spi4_pins is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi4_pins
(XEN) handle /soc/gpio@7e200000/spi4_cs_pins
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi4_cs_pins
(XEN) /soc/gpio@7e200000/spi4_cs_pins passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/spi4_cs_pins is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi4_cs_pins
(XEN) handle /soc/gpio@7e200000/spi5_pins
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi5_pins
(XEN) /soc/gpio@7e200000/spi5_pins passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/spi5_pins is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi5_pins
(XEN) handle /soc/gpio@7e200000/spi5_cs_pins
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi5_cs_pins
(XEN) /soc/gpio@7e200000/spi5_cs_pins passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/spi5_cs_pins is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi5_cs_pins
(XEN) handle /soc/gpio@7e200000/spi6_pins
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi6_pins
(XEN) /soc/gpio@7e200000/spi6_pins passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/spi6_pins is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi6_pins
(XEN) handle /soc/gpio@7e200000/spi6_cs_pins
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi6_cs_pins
(XEN) /soc/gpio@7e200000/spi6_cs_pins passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/spi6_cs_pins is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/spi6_cs_pins
(XEN) handle /soc/gpio@7e200000/i2c0
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c0
(XEN) /soc/gpio@7e200000/i2c0 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c0 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c0
(XEN) handle /soc/gpio@7e200000/i2c1
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c1
(XEN) /soc/gpio@7e200000/i2c1 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c1 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c1
(XEN) handle /soc/gpio@7e200000/i2c3
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c3
(XEN) /soc/gpio@7e200000/i2c3 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c3 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c3
(XEN) handle /soc/gpio@7e200000/i2c4
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c4
(XEN) /soc/gpio@7e200000/i2c4 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c4 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c4
(XEN) handle /soc/gpio@7e200000/i2c5
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c5
(XEN) /soc/gpio@7e200000/i2c5 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c5 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c5
(XEN) handle /soc/gpio@7e200000/i2c6
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c6
(XEN) /soc/gpio@7e200000/i2c6 passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2c6 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2c6
(XEN) handle /soc/gpio@7e200000/i2s
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2s
(XEN) /soc/gpio@7e200000/i2s passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/i2s is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/i2s
(XEN) handle /soc/gpio@7e200000/sdio_pins
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/sdio_pins
(XEN) /soc/gpio@7e200000/sdio_pins passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/sdio_pins is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/sdio_pins
(XEN) handle /soc/gpio@7e200000/bt_pins
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/bt_pins
(XEN) /soc/gpio@7e200000/bt_pins passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/bt_pins is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/bt_pins
(XEN) handle /soc/gpio@7e200000/uart0_pins
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart0_pins
(XEN) /soc/gpio@7e200000/uart0_pins passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart0_pins is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart0_pins
(XEN) handle /soc/gpio@7e200000/uart1_pins
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart1_pins
(XEN) /soc/gpio@7e200000/uart1_pins passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart1_pins is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart1_pins
(XEN) handle /soc/gpio@7e200000/uart2_pins
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart2_pins
(XEN) /soc/gpio@7e200000/uart2_pins passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart2_pins is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart2_pins
(XEN) handle /soc/gpio@7e200000/uart3_pins
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart3_pins
(XEN) /soc/gpio@7e200000/uart3_pins passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart3_pins is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart3_pins
(XEN) handle /soc/gpio@7e200000/uart4_pins
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart4_pins
(XEN) /soc/gpio@7e200000/uart4_pins passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart4_pins is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart4_pins
(XEN) handle /soc/gpio@7e200000/uart5_pins
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart5_pins
(XEN) /soc/gpio@7e200000/uart5_pins passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/uart5_pins is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/uart5_pins
(XEN) handle /soc/gpio@7e200000/audio_pins
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/audio_pins
(XEN) /soc/gpio@7e200000/audio_pins passthrough = 1 naddr = 0
(XEN) Check if /soc/gpio@7e200000/audio_pins is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpio@7e200000/audio_pins
(XEN) handle /soc/serial@7e201000
(XEN) dt_irq_number: dev=/soc/serial@7e201000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/serial@7e201000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000079...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/serial@7e201000 passthrough = 1 naddr = 1
(XEN) Check if /soc/serial@7e201000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/serial@7e201000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/serial@7e201000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000079...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/serial@7e201000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000079...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 153
(XEN) DT: ** translation for device /soc/serial@7e201000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e201000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e201000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 201000
(XEN) DT: one level translation:<3> 00000000<3> fe201000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe201000 - 00fe201200 P2MType=5
(XEN) handle /soc/mmc@7e202000
(XEN) dt_irq_number: dev=/soc/mmc@7e202000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/mmc@7e202000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000078...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/mmc@7e202000 passthrough = 1 naddr = 1
(XEN) Check if /soc/mmc@7e202000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/mmc@7e202000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/mmc@7e202000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000078...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/mmc@7e202000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000078...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 152
(XEN) DT: ** translation for device /soc/mmc@7e202000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e202000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e202000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 202000
(XEN) DT: one level translation:<3> 00000000<3> fe202000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe202000 - 00fe202100 P2MType=5
(XEN) handle /soc/i2s@7e203000
(XEN) dt_irq_number: dev=/soc/i2s@7e203000
(XEN) /soc/i2s@7e203000 passthrough = 1 naddr = 1
(XEN) Check if /soc/i2s@7e203000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/i2s@7e203000
(XEN) DT: ** translation for device /soc/i2s@7e203000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e203000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e203000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 203000
(XEN) DT: one level translation:<3> 00000000<3> fe203000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe203000 - 00fe203024 P2MType=5
(XEN) handle /soc/spi@7e204000
(XEN) dt_irq_number: dev=/soc/spi@7e204000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/spi@7e204000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000076...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/spi@7e204000 passthrough = 1 naddr = 1
(XEN) Check if /soc/spi@7e204000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/spi@7e204000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/spi@7e204000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000076...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/spi@7e204000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000076...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 150
(XEN) DT: ** translation for device /soc/spi@7e204000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e204000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e204000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 204000
(XEN) DT: one level translation:<3> 00000000<3> fe204000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe204000 - 00fe204200 P2MType=5
(XEN) handle /soc/spi@7e204000/spidev@0
(XEN) dt_irq_number: dev=/soc/spi@7e204000/spidev@0
(XEN) /soc/spi@7e204000/spidev@0 passthrough = 1 naddr = 0
(XEN) Check if /soc/spi@7e204000/spidev@0 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/spi@7e204000/spidev@0
(XEN) handle /soc/spi@7e204000/spidev@1
(XEN) dt_irq_number: dev=/soc/spi@7e204000/spidev@1
(XEN) /soc/spi@7e204000/spidev@1 passthrough = 1 naddr = 0
(XEN) Check if /soc/spi@7e204000/spidev@1 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/spi@7e204000/spidev@1
(XEN) handle /soc/i2c@7e205000
(XEN) dt_irq_number: dev=/soc/i2c@7e205000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/i2c@7e205000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000075...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/i2c@7e205000 passthrough = 1 naddr = 1
(XEN) Check if /soc/i2c@7e205000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/i2c@7e205000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/i2c@7e205000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000075...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/i2c@7e205000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000075...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 149
(XEN) DT: ** translation for device /soc/i2c@7e205000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e205000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e205000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 205000
(XEN) DT: one level translation:<3> 00000000<3> fe205000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe205000 - 00fe205200 P2MType=5
(XEN) handle /soc/i2c0mux
(XEN) dt_irq_number: dev=/soc/i2c0mux
(XEN) /soc/i2c0mux passthrough = 1 naddr = 0
(XEN) Check if /soc/i2c0mux is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/i2c0mux
(XEN) handle /soc/i2c0mux/i2c@0
(XEN) dt_irq_number: dev=/soc/i2c0mux/i2c@0
(XEN) /soc/i2c0mux/i2c@0 passthrough = 1 naddr = 0
(XEN) Check if /soc/i2c0mux/i2c@0 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/i2c0mux/i2c@0
(XEN) handle /soc/i2c0mux/i2c@1
(XEN) dt_irq_number: dev=/soc/i2c0mux/i2c@1
(XEN) /soc/i2c0mux/i2c@1 passthrough = 1 naddr = 0
(XEN) Check if /soc/i2c0mux/i2c@1 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/i2c0mux/i2c@1
(XEN) handle /soc/dpi@7e208000
(XEN) dt_irq_number: dev=/soc/dpi@7e208000
(XEN) /soc/dpi@7e208000 passthrough = 1 naddr = 1
(XEN) Check if /soc/dpi@7e208000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/dpi@7e208000
(XEN) DT: ** translation for device /soc/dpi@7e208000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e208000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e208000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 208000
(XEN) DT: one level translation:<3> 00000000<3> fe208000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe208000 - 00fe20808c P2MType=5
(XEN) handle /soc/dsi@7e209000
(XEN) dt_irq_number: dev=/soc/dsi@7e209000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/dsi@7e209000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000064...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/dsi@7e209000 passthrough = 1 naddr = 1
(XEN) Check if /soc/dsi@7e209000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/dsi@7e209000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/dsi@7e209000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000064...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/dsi@7e209000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000064...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 132
(XEN) DT: ** translation for device /soc/dsi@7e209000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e209000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e209000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 209000
(XEN) DT: one level translation:<3> 00000000<3> fe209000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe209000 - 00fe209078 P2MType=5
(XEN) handle /soc/aux@7e215000
(XEN)   Skip it (blacklisted)
(XEN) handle /soc/serial@7e215040
(XEN) dt_irq_number: dev=/soc/serial@7e215040
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/serial@7e215040, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000005d...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/serial@7e215040 passthrough = 1 naddr = 1
(XEN) Check if /soc/serial@7e215040 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/serial@7e215040
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/serial@7e215040, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000005d...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/serial@7e215040, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000005d...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 125
(XEN) DT: ** translation for device /soc/serial@7e215040 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e215040<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e215040
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 215040
(XEN) DT: one level translation:<3> 00000000<3> fe215040<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe215040 - 00fe215080 P2MType=5
(XEN) handle /soc/spi@7e215080
(XEN)   Skip it (blacklisted)
(XEN) handle /soc/spi@7e2150c0
(XEN)   Skip it (blacklisted)
(XEN) handle /soc/pwm@7e20c000
(XEN) dt_irq_number: dev=/soc/pwm@7e20c000
(XEN) /soc/pwm@7e20c000 passthrough = 1 naddr = 1
(XEN) Check if /soc/pwm@7e20c000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/pwm@7e20c000
(XEN) DT: ** translation for device /soc/pwm@7e20c000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e20c000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e20c000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 20c000
(XEN) DT: one level translation:<3> 00000000<3> fe20c000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe20c000 - 00fe20c028 P2MType=5
(XEN) handle /soc/hvs@7e400000
(XEN) dt_irq_number: dev=/soc/hvs@7e400000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/hvs@7e400000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000061...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/hvs@7e400000 passthrough = 1 naddr = 1
(XEN) Check if /soc/hvs@7e400000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/hvs@7e400000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/hvs@7e400000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000061...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/hvs@7e400000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000061...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 129
(XEN) DT: ** translation for device /soc/hvs@7e400000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e400000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e400000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 400000
(XEN) DT: one level translation:<3> 00000000<3> fe400000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe400000 - 00fe406000 P2MType=5
(XEN) handle /soc/dsi@7e700000
(XEN) dt_irq_number: dev=/soc/dsi@7e700000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/dsi@7e700000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000006c...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/dsi@7e700000 passthrough = 1 naddr = 1
(XEN) Check if /soc/dsi@7e700000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/dsi@7e700000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/dsi@7e700000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000006c...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/dsi@7e700000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000006c...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 140
(XEN) DT: ** translation for device /soc/dsi@7e700000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e700000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e700000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 700000
(XEN) DT: one level translation:<3> 00000000<3> fe700000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe700000 - 00fe70008c P2MType=5
(XEN) handle /soc/i2c@7e804000
(XEN) dt_irq_number: dev=/soc/i2c@7e804000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/i2c@7e804000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000075...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/i2c@7e804000 passthrough = 1 naddr = 1
(XEN) Check if /soc/i2c@7e804000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/i2c@7e804000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/i2c@7e804000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000075...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/i2c@7e804000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000075...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 149
(XEN) DT: ** translation for device /soc/i2c@7e804000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e804000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e804000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 804000
(XEN) DT: one level translation:<3> 00000000<3> fe804000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe804000 - 00fe805000 P2MType=5
(XEN) handle /soc/vec@7e806000
(XEN) dt_irq_number: dev=/soc/vec@7e806000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/vec@7e806000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000007b...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/vec@7e806000 passthrough = 1 naddr = 1
(XEN) Check if /soc/vec@7e806000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/vec@7e806000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/vec@7e806000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000007b...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/vec@7e806000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000007b...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 155
(XEN) DT: ** translation for device /soc/vec@7e806000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e806000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e806000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 806000
(XEN) DT: one level translation:<3> 00000000<3> fe806000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe806000 - 00fe807000 P2MType=5
(XEN) handle /soc/usb@7e980000
(XEN) dt_irq_number: dev=/soc/usb@7e980000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_device_get_raw_irq: dev=/soc/usb@7e980000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000049...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/usb@7e980000, index=1
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000028...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/usb@7e980000 passthrough = 1 naddr = 2
(XEN) Check if /soc/usb@7e980000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/usb@7e980000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_device_get_raw_irq: dev=/soc/usb@7e980000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000049...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/usb@7e980000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000049...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 105
(XEN) dt_device_get_raw_irq: dev=/soc/usb@7e980000, index=1
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000028...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/usb@7e980000, index=1
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000028...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 72
(XEN) DT: ** translation for device /soc/usb@7e980000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e980000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e980000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 980000
(XEN) DT: one level translation:<3> 00000000<3> fe980000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe980000 - 00fe990000 P2MType=5
(XEN) DT: ** translation for device /soc/usb@7e980000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e00b200<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e00b200
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: b200
(XEN) DT: one level translation:<3> 00000000<3> fe00b200<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe00b200 - 00fe00b400 P2MType=5
(XEN) handle /soc/local_intc@40000000
(XEN) dt_irq_number: dev=/soc/local_intc@40000000
(XEN) /soc/local_intc@40000000 passthrough = 1 naddr = 1
(XEN) Check if /soc/local_intc@40000000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/local_intc@40000000
(XEN) DT: ** translation for device /soc/local_intc@40000000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 40000000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=40000000
(XEN) DT: default map, cp=7c000000, s=2000000, da=40000000
(XEN) DT: default map, cp=40000000, s=800000, da=40000000
(XEN) DT: parent translation for:<3> 00000000<3> ff800000<3>
(XEN) DT: with offset: 0
(XEN) DT: one level translation:<3> 00000000<3> ff800000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00ff800000 - 00ff800100 P2MType=5
(XEN) handle /soc/interrupt-controller@40041000
(XEN) Create gic node
(XEN)   Set phandle = 0x1
(XEN) handle /soc/avs-monitor@7d5d2000
(XEN) dt_irq_number: dev=/soc/avs-monitor@7d5d2000
(XEN) /soc/avs-monitor@7d5d2000 passthrough = 1 naddr = 1
(XEN) Check if /soc/avs-monitor@7d5d2000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/avs-monitor@7d5d2000
(XEN) DT: ** translation for device /soc/avs-monitor@7d5d2000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7d5d2000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7d5d2000
(XEN) DT: default map, cp=7c000000, s=2000000, da=7d5d2000
(XEN) DT: parent translation for:<3> 00000000<3> fc000000<3>
(XEN) DT: with offset: 15d2000
(XEN) DT: one level translation:<3> 00000000<3> fd5d2000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fd5d2000 - 00fd5d2f00 P2MType=5
(XEN) handle /soc/avs-monitor@7d5d2000/thermal
(XEN) dt_irq_number: dev=/soc/avs-monitor@7d5d2000/thermal
(XEN) /soc/avs-monitor@7d5d2000/thermal passthrough = 1 naddr = 0
(XEN) Check if /soc/avs-monitor@7d5d2000/thermal is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/avs-monitor@7d5d2000/thermal
(XEN) handle /soc/dma@7e007000
(XEN) dt_irq_number: dev=/soc/dma@7e007000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000050...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=1
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000051...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=2
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000052...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=3
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000053...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=4
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000054...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=5
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000055...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=6
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000056...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=7
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000057...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=8
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000057...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=9
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000058...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=10
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000058...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/dma@7e007000 passthrough = 1 naddr = 1
(XEN) Check if /soc/dma@7e007000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/dma@7e007000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000050...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000050...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 112
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=1
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000051...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=1
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000051...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 113
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=2
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000052...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=2
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000052...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 114
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=3
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000053...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=3
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000053...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 115
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=4
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000054...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=4
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000054...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 116
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=5
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000055...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=5
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000055...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 117
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=6
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000056...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=6
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000056...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 118
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=7
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000057...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=7
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000057...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 119
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=8
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000057...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=8
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000057...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 119
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=9
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000058...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=9
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000058...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 120
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=10
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000058...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/dma@7e007000, index=10
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=33
(XEN)  intsize=3 intlen=33
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000058...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 120
(XEN) DT: ** translation for device /soc/dma@7e007000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e007000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e007000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 7000
(XEN) DT: one level translation:<3> 00000000<3> fe007000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe007000 - 00fe007b00 P2MType=5
(XEN) handle /soc/watchdog@7e100000
(XEN) dt_irq_number: dev=/soc/watchdog@7e100000
(XEN) /soc/watchdog@7e100000 passthrough = 1 naddr = 3
(XEN) Check if /soc/watchdog@7e100000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/watchdog@7e100000
(XEN) DT: ** translation for device /soc/watchdog@7e100000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e100000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e100000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 100000
(XEN) DT: one level translation:<3> 00000000<3> fe100000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe100000 - 00fe100114 P2MType=5
(XEN) DT: ** translation for device /soc/watchdog@7e100000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e00a000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e00a000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: a000
(XEN) DT: one level translation:<3> 00000000<3> fe00a000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe00a000 - 00fe00a024 P2MType=5
(XEN) DT: ** translation for device /soc/watchdog@7e100000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7ec11000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7ec11000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: c11000
(XEN) DT: one level translation:<3> 00000000<3> fec11000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fec11000 - 00fec11020 P2MType=5
(XEN) handle /soc/rng@7e104000
(XEN) dt_irq_number: dev=/soc/rng@7e104000
(XEN) /soc/rng@7e104000 passthrough = 1 naddr = 1
(XEN) Check if /soc/rng@7e104000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/rng@7e104000
(XEN) DT: ** translation for device /soc/rng@7e104000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e104000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e104000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 104000
(XEN) DT: one level translation:<3> 00000000<3> fe104000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe104000 - 00fe104028 P2MType=5
(XEN) handle /soc/serial@7e201400
(XEN) dt_irq_number: dev=/soc/serial@7e201400
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/serial@7e201400, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000079...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/serial@7e201400 passthrough = 1 naddr = 1
(XEN) Check if /soc/serial@7e201400 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/serial@7e201400
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/serial@7e201400, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000079...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/serial@7e201400, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000079...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 153
(XEN) DT: ** translation for device /soc/serial@7e201400 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e201400<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e201400
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 201400
(XEN) DT: one level translation:<3> 00000000<3> fe201400<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe201400 - 00fe201600 P2MType=5
(XEN) handle /soc/serial@7e201600
(XEN) dt_irq_number: dev=/soc/serial@7e201600
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/serial@7e201600, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000079...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/serial@7e201600 passthrough = 1 naddr = 1
(XEN) Check if /soc/serial@7e201600 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/serial@7e201600
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/serial@7e201600, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000079...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/serial@7e201600, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000079...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 153
(XEN) DT: ** translation for device /soc/serial@7e201600 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e201600<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e201600
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 201600
(XEN) DT: one level translation:<3> 00000000<3> fe201600<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe201600 - 00fe201800 P2MType=5
(XEN) handle /soc/serial@7e201800
(XEN) dt_irq_number: dev=/soc/serial@7e201800
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/serial@7e201800, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000079...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/serial@7e201800 passthrough = 1 naddr = 1
(XEN) Check if /soc/serial@7e201800 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/serial@7e201800
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/serial@7e201800, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000079...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/serial@7e201800, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000079...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 153
(XEN) DT: ** translation for device /soc/serial@7e201800 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e201800<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e201800
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 201800
(XEN) DT: one level translation:<3> 00000000<3> fe201800<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe201800 - 00fe201a00 P2MType=5
(XEN) handle /soc/serial@7e201a00
(XEN) dt_irq_number: dev=/soc/serial@7e201a00
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/serial@7e201a00, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000079...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/serial@7e201a00 passthrough = 1 naddr = 1
(XEN) Check if /soc/serial@7e201a00 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/serial@7e201a00
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/serial@7e201a00, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000079...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/serial@7e201a00, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000079...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 153
(XEN) DT: ** translation for device /soc/serial@7e201a00 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e201a00<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e201a00
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 201a00
(XEN) DT: one level translation:<3> 00000000<3> fe201a00<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe201a00 - 00fe201c00 P2MType=5
(XEN) handle /soc/spi@7e204600
(XEN) dt_irq_number: dev=/soc/spi@7e204600
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/spi@7e204600, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000076...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/spi@7e204600 passthrough = 1 naddr = 1
(XEN) Check if /soc/spi@7e204600 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/spi@7e204600
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/spi@7e204600, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000076...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/spi@7e204600, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000076...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 150
(XEN) DT: ** translation for device /soc/spi@7e204600 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e204600<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e204600
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 204600
(XEN) DT: one level translation:<3> 00000000<3> fe204600<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe204600 - 00fe204800 P2MType=5
(XEN) handle /soc/spi@7e204800
(XEN) dt_irq_number: dev=/soc/spi@7e204800
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/spi@7e204800, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000076...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/spi@7e204800 passthrough = 1 naddr = 1
(XEN) Check if /soc/spi@7e204800 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/spi@7e204800
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/spi@7e204800, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000076...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/spi@7e204800, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000076...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 150
(XEN) DT: ** translation for device /soc/spi@7e204800 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e204800<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e204800
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 204800
(XEN) DT: one level translation:<3> 00000000<3> fe204800<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe204800 - 00fe204a00 P2MType=5
(XEN) handle /soc/spi@7e204a00
(XEN) dt_irq_number: dev=/soc/spi@7e204a00
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/spi@7e204a00, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000076...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/spi@7e204a00 passthrough = 1 naddr = 1
(XEN) Check if /soc/spi@7e204a00 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/spi@7e204a00
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/spi@7e204a00, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000076...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/spi@7e204a00, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000076...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 150
(XEN) DT: ** translation for device /soc/spi@7e204a00 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e204a00<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e204a00
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 204a00
(XEN) DT: one level translation:<3> 00000000<3> fe204a00<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe204a00 - 00fe204c00 P2MType=5
(XEN) handle /soc/spi@7e204c00
(XEN) dt_irq_number: dev=/soc/spi@7e204c00
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/spi@7e204c00, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000076...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/spi@7e204c00 passthrough = 1 naddr = 1
(XEN) Check if /soc/spi@7e204c00 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/spi@7e204c00
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/spi@7e204c00, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000076...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/spi@7e204c00, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000076...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 150
(XEN) DT: ** translation for device /soc/spi@7e204c00 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e204c00<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e204c00
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 204c00
(XEN) DT: one level translation:<3> 00000000<3> fe204c00<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe204c00 - 00fe204e00 P2MType=5
(XEN) handle /soc/i2c@7e205600
(XEN) dt_irq_number: dev=/soc/i2c@7e205600
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/i2c@7e205600, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000075...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/i2c@7e205600 passthrough = 1 naddr = 1
(XEN) Check if /soc/i2c@7e205600 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/i2c@7e205600
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/i2c@7e205600, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000075...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/i2c@7e205600, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000075...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 149
(XEN) DT: ** translation for device /soc/i2c@7e205600 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e205600<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e205600
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 205600
(XEN) DT: one level translation:<3> 00000000<3> fe205600<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe205600 - 00fe205800 P2MType=5
(XEN) handle /soc/i2c@7e205800
(XEN) dt_irq_number: dev=/soc/i2c@7e205800
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/i2c@7e205800, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000075...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/i2c@7e205800 passthrough = 1 naddr = 1
(XEN) Check if /soc/i2c@7e205800 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/i2c@7e205800
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/i2c@7e205800, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000075...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/i2c@7e205800, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000075...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 149
(XEN) DT: ** translation for device /soc/i2c@7e205800 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e205800<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e205800
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 205800
(XEN) DT: one level translation:<3> 00000000<3> fe205800<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe205800 - 00fe205a00 P2MType=5
(XEN) handle /soc/i2c@7e205a00
(XEN) dt_irq_number: dev=/soc/i2c@7e205a00
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/i2c@7e205a00, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000075...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/i2c@7e205a00 passthrough = 1 naddr = 1
(XEN) Check if /soc/i2c@7e205a00 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/i2c@7e205a00
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/i2c@7e205a00, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000075...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/i2c@7e205a00, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000075...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 149
(XEN) DT: ** translation for device /soc/i2c@7e205a00 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e205a00<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e205a00
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 205a00
(XEN) DT: one level translation:<3> 00000000<3> fe205a00<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe205a00 - 00fe205c00 P2MType=5
(XEN) handle /soc/i2c@7e205c00
(XEN) dt_irq_number: dev=/soc/i2c@7e205c00
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/i2c@7e205c00, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000075...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/i2c@7e205c00 passthrough = 1 naddr = 1
(XEN) Check if /soc/i2c@7e205c00 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/i2c@7e205c00
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/i2c@7e205c00, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000075...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/i2c@7e205c00, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000075...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 149
(XEN) DT: ** translation for device /soc/i2c@7e205c00 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e205c00<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e205c00
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 205c00
(XEN) DT: one level translation:<3> 00000000<3> fe205c00<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe205c00 - 00fe205e00 P2MType=5
(XEN) handle /soc/pwm@7e20c800
(XEN) dt_irq_number: dev=/soc/pwm@7e20c800
(XEN) /soc/pwm@7e20c800 passthrough = 1 naddr = 1
(XEN) Check if /soc/pwm@7e20c800 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/pwm@7e20c800
(XEN) DT: ** translation for device /soc/pwm@7e20c800 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e20c800<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e20c800
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 20c800
(XEN) DT: one level translation:<3> 00000000<3> fe20c800<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe20c800 - 00fe20c828 P2MType=5
(XEN) handle /soc/firmware
(XEN) dt_irq_number: dev=/soc/firmware
(XEN) /soc/firmware passthrough = 1 naddr = 0
(XEN) Check if /soc/firmware is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/firmware
(XEN) handle /soc/firmware/gpio
(XEN) dt_irq_number: dev=/soc/firmware/gpio
(XEN) /soc/firmware/gpio passthrough = 1 naddr = 0
(XEN) Check if /soc/firmware/gpio is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/firmware/gpio
(XEN) handle /soc/power
(XEN) dt_irq_number: dev=/soc/power
(XEN) /soc/power passthrough = 1 naddr = 0
(XEN) Check if /soc/power is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/power
(XEN) handle /soc/pixelvalve@7e206000
(XEN) dt_irq_number: dev=/soc/pixelvalve@7e206000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/pixelvalve@7e206000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000006d...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/pixelvalve@7e206000 passthrough = 1 naddr = 1
(XEN) Check if /soc/pixelvalve@7e206000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/pixelvalve@7e206000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/pixelvalve@7e206000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000006d...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/pixelvalve@7e206000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000006d...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 141
(XEN) DT: ** translation for device /soc/pixelvalve@7e206000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e206000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e206000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 206000
(XEN) DT: one level translation:<3> 00000000<3> fe206000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe206000 - 00fe206100 P2MType=5
(XEN) handle /soc/pixelvalve@7e207000
(XEN) dt_irq_number: dev=/soc/pixelvalve@7e207000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/pixelvalve@7e207000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000006e...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/pixelvalve@7e207000 passthrough = 1 naddr = 1
(XEN) Check if /soc/pixelvalve@7e207000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/pixelvalve@7e207000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/pixelvalve@7e207000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000006e...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/pixelvalve@7e207000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000006e...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 142
(XEN) DT: ** translation for device /soc/pixelvalve@7e207000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e207000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e207000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 207000
(XEN) DT: one level translation:<3> 00000000<3> fe207000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe207000 - 00fe207100 P2MType=5
(XEN) handle /soc/mmc@7e300000
(XEN) dt_irq_number: dev=/soc/mmc@7e300000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/mmc@7e300000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000007e...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/mmc@7e300000 passthrough = 1 naddr = 1
(XEN) Check if /soc/mmc@7e300000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/mmc@7e300000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/mmc@7e300000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000007e...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/mmc@7e300000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000007e...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 158
(XEN) DT: ** translation for device /soc/mmc@7e300000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e300000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e300000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 300000
(XEN) DT: one level translation:<3> 00000000<3> fe300000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe300000 - 00fe300100 P2MType=5
(XEN) handle /soc/mmcnr@7e300000
(XEN) dt_irq_number: dev=/soc/mmcnr@7e300000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/mmcnr@7e300000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000007e...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/mmcnr@7e300000 passthrough = 1 naddr = 1
(XEN) Check if /soc/mmcnr@7e300000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/mmcnr@7e300000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/mmcnr@7e300000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000007e...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/mmcnr@7e300000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000007e...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 158
(XEN) DT: ** translation for device /soc/mmcnr@7e300000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e300000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e300000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 300000
(XEN) DT: one level translation:<3> 00000000<3> fe300000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe300000 - 00fe300100 P2MType=5
(XEN) handle /soc/firmwarekms@7e600000
(XEN) dt_irq_number: dev=/soc/firmwarekms@7e600000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/firmwarekms@7e600000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000070...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/firmwarekms@7e600000 passthrough = 1 naddr = 1
(XEN) Check if /soc/firmwarekms@7e600000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/firmwarekms@7e600000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/firmwarekms@7e600000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000070...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/firmwarekms@7e600000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000070...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 144
(XEN) DT: ** translation for device /soc/firmwarekms@7e600000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e600000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e600000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 600000
(XEN) DT: one level translation:<3> 00000000<3> fe600000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe600000 - 00fe600100 P2MType=5
(XEN) handle /soc/smi@7e600000
(XEN) dt_irq_number: dev=/soc/smi@7e600000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/smi@7e600000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000070...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/smi@7e600000 passthrough = 1 naddr = 1
(XEN) Check if /soc/smi@7e600000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/smi@7e600000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/smi@7e600000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000070...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/smi@7e600000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000070...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 144
(XEN) DT: ** translation for device /soc/smi@7e600000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e600000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e600000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 600000
(XEN) DT: one level translation:<3> 00000000<3> fe600000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe600000 - 00fe600100 P2MType=5
(XEN) handle /soc/csi@7e800000
(XEN) dt_irq_number: dev=/soc/csi@7e800000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/csi@7e800000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000066...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/csi@7e800000 passthrough = 1 naddr = 2
(XEN) Check if /soc/csi@7e800000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/csi@7e800000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/csi@7e800000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000066...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/csi@7e800000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000066...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 134
(XEN) DT: ** translation for device /soc/csi@7e800000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e800000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e800000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 800000
(XEN) DT: one level translation:<3> 00000000<3> fe800000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe800000 - 00fe800800 P2MType=5
(XEN) DT: ** translation for device /soc/csi@7e800000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e802000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e802000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 802000
(XEN) DT: one level translation:<3> 00000000<3> fe802000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe802000 - 00fe802004 P2MType=5
(XEN) handle /soc/csi@7e801000
(XEN) dt_irq_number: dev=/soc/csi@7e801000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/csi@7e801000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000067...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/csi@7e801000 passthrough = 1 naddr = 2
(XEN) Check if /soc/csi@7e801000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/csi@7e801000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/csi@7e801000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000067...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/csi@7e801000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000067...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 135
(XEN) DT: ** translation for device /soc/csi@7e801000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e801000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e801000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 801000
(XEN) DT: one level translation:<3> 00000000<3> fe801000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe801000 - 00fe801800 P2MType=5
(XEN) DT: ** translation for device /soc/csi@7e801000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e802004<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e802004
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 802004
(XEN) DT: one level translation:<3> 00000000<3> fe802004<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe802004 - 00fe802008 P2MType=5
(XEN) handle /soc/csi@7e801000/port
(XEN) dt_irq_number: dev=/soc/csi@7e801000/port
(XEN) /soc/csi@7e801000/port passthrough = 1 naddr = 0
(XEN) Check if /soc/csi@7e801000/port is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/csi@7e801000/port
(XEN) handle /soc/csi@7e801000/port/endpoint
(XEN) dt_irq_number: dev=/soc/csi@7e801000/port/endpoint
(XEN) /soc/csi@7e801000/port/endpoint passthrough = 1 naddr = 0
(XEN) Check if /soc/csi@7e801000/port/endpoint is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/csi@7e801000/port/endpoint
(XEN) handle /soc/axiperf
(XEN) dt_irq_number: dev=/soc/axiperf
(XEN) /soc/axiperf passthrough = 1 naddr = 2
(XEN) Check if /soc/axiperf is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/axiperf
(XEN) DT: ** translation for device /soc/axiperf **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e009800<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e009800
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 9800
(XEN) DT: one level translation:<3> 00000000<3> fe009800<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe009800 - 00fe009900 P2MType=5
(XEN) DT: ** translation for device /soc/axiperf **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7ee08000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7ee08000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: e08000
(XEN) DT: one level translation:<3> 00000000<3> fee08000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fee08000 - 00fee08100 P2MType=5
(XEN) handle /soc/gpiomem
(XEN) dt_irq_number: dev=/soc/gpiomem
(XEN) /soc/gpiomem passthrough = 1 naddr = 1
(XEN) Check if /soc/gpiomem is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/gpiomem
(XEN) DT: ** translation for device /soc/gpiomem **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e200000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e200000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 200000
(XEN) DT: one level translation:<3> 00000000<3> fe200000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe200000 - 00fe201000 P2MType=5
(XEN) handle /soc/fb
(XEN) dt_irq_number: dev=/soc/fb
(XEN) /soc/fb passthrough = 1 naddr = 0
(XEN) Check if /soc/fb is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/fb
(XEN) handle /soc/vcsm
(XEN) dt_irq_number: dev=/soc/vcsm
(XEN) /soc/vcsm passthrough = 1 naddr = 0
(XEN) Check if /soc/vcsm is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/vcsm
(XEN) handle /soc/sound
(XEN) dt_irq_number: dev=/soc/sound
(XEN) /soc/sound passthrough = 1 naddr = 0
(XEN) Check if /soc/sound is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/sound
(XEN) handle /soc/pixelvalve@7e20a000
(XEN) dt_irq_number: dev=/soc/pixelvalve@7e20a000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/pixelvalve@7e20a000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000065...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/pixelvalve@7e20a000 passthrough = 1 naddr = 1
(XEN) Check if /soc/pixelvalve@7e20a000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/pixelvalve@7e20a000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/pixelvalve@7e20a000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000065...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/pixelvalve@7e20a000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000065...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 133
(XEN) DT: ** translation for device /soc/pixelvalve@7e20a000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e20a000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e20a000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 20a000
(XEN) DT: one level translation:<3> 00000000<3> fe20a000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe20a000 - 00fe20a100 P2MType=5
(XEN) handle /soc/pixelvalve@7e216000
(XEN) dt_irq_number: dev=/soc/pixelvalve@7e216000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/pixelvalve@7e216000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000006e...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/pixelvalve@7e216000 passthrough = 1 naddr = 1
(XEN) Check if /soc/pixelvalve@7e216000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/pixelvalve@7e216000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/pixelvalve@7e216000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000006e...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/pixelvalve@7e216000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000006e...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 142
(XEN) DT: ** translation for device /soc/pixelvalve@7e216000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7e216000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e216000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 216000
(XEN) DT: one level translation:<3> 00000000<3> fe216000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe216000 - 00fe216100 P2MType=5
(XEN) handle /soc/pixelvalve@7ec12000
(XEN) dt_irq_number: dev=/soc/pixelvalve@7ec12000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/pixelvalve@7ec12000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000006a...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /soc/pixelvalve@7ec12000 passthrough = 1 naddr = 1
(XEN) Check if /soc/pixelvalve@7ec12000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/pixelvalve@7ec12000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/soc/pixelvalve@7ec12000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000006a...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/soc/pixelvalve@7ec12000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000006a...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 138
(XEN) DT: ** translation for device /soc/pixelvalve@7ec12000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7ec12000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7ec12000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: c12000
(XEN) DT: one level translation:<3> 00000000<3> fec12000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fec12000 - 00fec12100 P2MType=5
(XEN) handle /soc/clock@7ef00000
(XEN) dt_irq_number: dev=/soc/clock@7ef00000
(XEN) /soc/clock@7ef00000 passthrough = 1 naddr = 1
(XEN) Check if /soc/clock@7ef00000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/clock@7ef00000
(XEN) DT: ** translation for device /soc/clock@7ef00000 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7ef00000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7ef00000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: f00000
(XEN) DT: one level translation:<3> 00000000<3> fef00000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fef00000 - 00fef00010 P2MType=5
(XEN) handle /soc/hdmi@7ef00700
(XEN) dt_irq_number: dev=/soc/hdmi@7ef00700
(XEN) /soc/hdmi@7ef00700 passthrough = 1 naddr = 9
(XEN) Check if /soc/hdmi@7ef00700 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/hdmi@7ef00700
(XEN) DT: ** translation for device /soc/hdmi@7ef00700 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7ef00700<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7ef00700
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: f00700
(XEN) DT: one level translation:<3> 00000000<3> fef00700<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fef00700 - 00fef00a00 P2MType=5
(XEN) DT: ** translation for device /soc/hdmi@7ef00700 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7ef00300<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7ef00300
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: f00300
(XEN) DT: one level translation:<3> 00000000<3> fef00300<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fef00300 - 00fef00500 P2MType=5
(XEN) DT: ** translation for device /soc/hdmi@7ef00700 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7ef00f00<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7ef00f00
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: f00f00
(XEN) DT: one level translation:<3> 00000000<3> fef00f00<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fef00f00 - 00fef00f80 P2MType=5
(XEN) DT: ** translation for device /soc/hdmi@7ef00700 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7ef00f80<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7ef00f80
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: f00f80
(XEN) DT: one level translation:<3> 00000000<3> fef00f80<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fef00f80 - 00fef01000 P2MType=5
(XEN) DT: ** translation for device /soc/hdmi@7ef00700 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7ef01b00<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7ef01b00
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: f01b00
(XEN) DT: one level translation:<3> 00000000<3> fef01b00<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fef01b00 - 00fef01d00 P2MType=5
(XEN) DT: ** translation for device /soc/hdmi@7ef00700 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7ef01f00<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7ef01f00
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: f01f00
(XEN) DT: one level translation:<3> 00000000<3> fef01f00<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fef01f00 - 00fef02300 P2MType=5
(XEN) DT: ** translation for device /soc/hdmi@7ef00700 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7ef00200<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7ef00200
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: f00200
(XEN) DT: one level translation:<3> 00000000<3> fef00200<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fef00200 - 00fef00280 P2MType=5
(XEN) DT: ** translation for device /soc/hdmi@7ef00700 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7ef04300<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7ef04300
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: f04300
(XEN) DT: one level translation:<3> 00000000<3> fef04300<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fef04300 - 00fef04400 P2MType=5
(XEN) DT: ** translation for device /soc/hdmi@7ef00700 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7ef20000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7ef20000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: f20000
(XEN) DT: one level translation:<3> 00000000<3> fef20000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fef20000 - 00fef20100 P2MType=5
(XEN) handle /soc/i2c@7ef04500
(XEN) dt_irq_number: dev=/soc/i2c@7ef04500
(XEN) /soc/i2c@7ef04500 passthrough = 1 naddr = 2
(XEN) Check if /soc/i2c@7ef04500 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/i2c@7ef04500
(XEN) DT: ** translation for device /soc/i2c@7ef04500 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7ef04500<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7ef04500
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: f04500
(XEN) DT: one level translation:<3> 00000000<3> fef04500<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fef04500 - 00fef04600 P2MType=5
(XEN) DT: ** translation for device /soc/i2c@7ef04500 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7ef00b00<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7ef00b00
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: f00b00
(XEN) DT: one level translation:<3> 00000000<3> fef00b00<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fef00b00 - 00fef00e00 P2MType=5
(XEN) handle /soc/hdmi@7ef05700
(XEN) dt_irq_number: dev=/soc/hdmi@7ef05700
(XEN) /soc/hdmi@7ef05700 passthrough = 1 naddr = 9
(XEN) Check if /soc/hdmi@7ef05700 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/hdmi@7ef05700
(XEN) DT: ** translation for device /soc/hdmi@7ef05700 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7ef05700<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7ef05700
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: f05700
(XEN) DT: one level translation:<3> 00000000<3> fef05700<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fef05700 - 00fef05a00 P2MType=5
(XEN) DT: ** translation for device /soc/hdmi@7ef05700 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7ef05300<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7ef05300
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: f05300
(XEN) DT: one level translation:<3> 00000000<3> fef05300<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fef05300 - 00fef05500 P2MType=5
(XEN) DT: ** translation for device /soc/hdmi@7ef05700 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7ef05f00<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7ef05f00
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: f05f00
(XEN) DT: one level translation:<3> 00000000<3> fef05f00<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fef05f00 - 00fef05f80 P2MType=5
(XEN) DT: ** translation for device /soc/hdmi@7ef05700 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7ef05f80<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7ef05f80
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: f05f80
(XEN) DT: one level translation:<3> 00000000<3> fef05f80<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fef05f80 - 00fef06000 P2MType=5
(XEN) DT: ** translation for device /soc/hdmi@7ef05700 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7ef06b00<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7ef06b00
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: f06b00
(XEN) DT: one level translation:<3> 00000000<3> fef06b00<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fef06b00 - 00fef06d00 P2MType=5
(XEN) DT: ** translation for device /soc/hdmi@7ef05700 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7ef06f00<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7ef06f00
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: f06f00
(XEN) DT: one level translation:<3> 00000000<3> fef06f00<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fef06f00 - 00fef07300 P2MType=5
(XEN) DT: ** translation for device /soc/hdmi@7ef05700 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7ef00280<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7ef00280
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: f00280
(XEN) DT: one level translation:<3> 00000000<3> fef00280<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fef00280 - 00fef00300 P2MType=5
(XEN) DT: ** translation for device /soc/hdmi@7ef05700 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7ef09300<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7ef09300
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: f09300
(XEN) DT: one level translation:<3> 00000000<3> fef09300<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fef09300 - 00fef09400 P2MType=5
(XEN) DT: ** translation for device /soc/hdmi@7ef05700 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7ef20000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7ef20000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: f20000
(XEN) DT: one level translation:<3> 00000000<3> fef20000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fef20000 - 00fef20100 P2MType=5
(XEN) handle /soc/i2c@7ef09500
(XEN) dt_irq_number: dev=/soc/i2c@7ef09500
(XEN) /soc/i2c@7ef09500 passthrough = 1 naddr = 2
(XEN) Check if /soc/i2c@7ef09500 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/soc/i2c@7ef09500
(XEN) DT: ** translation for device /soc/i2c@7ef09500 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7ef09500<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7ef09500
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: f09500
(XEN) DT: one level translation:<3> 00000000<3> fef09500<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fef09500 - 00fef09600 P2MType=5
(XEN) DT: ** translation for device /soc/i2c@7ef09500 **
(XEN) DT: bus is default (na=1, ns=1) on /soc
(XEN) DT: translating address:<3> 7ef05b00<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7ef05b00
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: f05b00
(XEN) DT: one level translation:<3> 00000000<3> fef05b00<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fef05b00 - 00fef05e00 P2MType=5
(XEN) handle /clocks
(XEN) dt_irq_number: dev=/clocks
(XEN) /clocks passthrough = 1 naddr = 0
(XEN) Check if /clocks is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/clocks
(XEN) handle /clocks/clk-osc
(XEN) dt_irq_number: dev=/clocks/clk-osc
(XEN) /clocks/clk-osc passthrough = 1 naddr = 0
(XEN) Check if /clocks/clk-osc is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/clocks/clk-osc
(XEN) handle /clocks/clk-usb
(XEN) dt_irq_number: dev=/clocks/clk-usb
(XEN) /clocks/clk-usb passthrough = 1 naddr = 0
(XEN) Check if /clocks/clk-usb is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/clocks/clk-usb
(XEN) handle /phy
(XEN) dt_irq_number: dev=/phy
(XEN) /phy passthrough = 1 naddr = 0
(XEN) Check if /phy is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/phy
(XEN) handle /arm-pmu
(XEN)   Skip it (matched)
(XEN) handle /timer
(XEN) Create timer node
(XEN)   Secure interrupt 29
(XEN)   Non secure interrupt 30
(XEN)   Virt interrupt 27
(XEN) handle /cpus
(XEN)   Skip it (matched)
(XEN) handle /scb
(XEN) dt_irq_number: dev=/scb
(XEN) /scb passthrough = 1 naddr = 0
(XEN) Check if /scb is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/scb
(XEN) handle /scb/pcie@7d500000
(XEN) dt_irq_number: dev=/scb/pcie@7d500000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_device_get_raw_irq: dev=/scb/pcie@7d500000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000094...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/scb/pcie@7d500000, index=1
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000094...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /scb/pcie@7d500000 passthrough = 1 naddr = 1
(XEN) Check if /scb/pcie@7d500000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/scb/pcie@7d500000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_device_get_raw_irq: dev=/scb/pcie@7d500000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000094...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/scb/pcie@7d500000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000094...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 180
(XEN) dt_device_get_raw_irq: dev=/scb/pcie@7d500000, index=1
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000094...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/scb/pcie@7d500000, index=1
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000094...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 180
(XEN) DT: ** translation for device /scb/pcie@7d500000 **
(XEN) DT: bus is default (na=2, ns=2) on /scb
(XEN) DT: translating address:<3> 00000000<3> 7d500000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7c000000, s=3800000, da=7d500000
(XEN) DT: parent translation for:<3> 00000000<3> fc000000<3>
(XEN) DT: with offset: 1500000
(XEN) DT: one level translation:<3> 00000000<3> fd500000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fd500000 - 00fd509310 P2MType=5
(XEN) Mapping children of /scb/pcie@7d500000 to guest
(XEN) dt_for_each_irq_map: par=/scb/pcie@7d500000 cb=00000000002c50d0 data=00008000f7f97000
(XEN) dt_for_each_irq_map: ipar=/scb/pcie@7d500000, size=1
(XEN)  -> addrsize=3
(XEN)  -> ipar interrupt-controller
(XEN)  -> pintsize=3, paddrsize=0
(XEN)   - IRQ: 175
(XEN)  -> imaplen=0
(XEN) dt_for_each_range: dev=pcie, bus=pci, parent=scb, rlen=7, rone=7
(XEN) DT: ** translation for device /scb/pcie@7d500000 **
(XEN) DT: bus is default (na=2, ns=2) on /scb
(XEN) DT: translating address:<3> 00000006<3> 00000000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7c000000, s=3800000, da=600000000
(XEN) DT: default map, cp=40000000, s=800000, da=600000000
(XEN) DT: default map, cp=600000000, s=40000000, da=600000000
(XEN) DT: parent translation for:<3> 00000006<3> 00000000<3>
(XEN) DT: with offset: 0
(XEN) DT: one level translation:<3> 00000006<3> 00000000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 0600000000 - 0604000000 P2MType=5
(XEN) handle /scb/ethernet@7d580000
(XEN) dt_irq_number: dev=/scb/ethernet@7d580000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_device_get_raw_irq: dev=/scb/ethernet@7d580000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000009d...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/scb/ethernet@7d580000, index=1
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000009e...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /scb/ethernet@7d580000 passthrough = 1 naddr = 1
(XEN) Check if /scb/ethernet@7d580000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/scb/ethernet@7d580000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_device_get_raw_irq: dev=/scb/ethernet@7d580000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000009d...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/scb/ethernet@7d580000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000009d...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 189
(XEN) dt_device_get_raw_irq: dev=/scb/ethernet@7d580000, index=1
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000009e...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/scb/ethernet@7d580000, index=1
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=6
(XEN)  intsize=3 intlen=6
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000009e...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 190
(XEN) DT: ** translation for device /scb/ethernet@7d580000 **
(XEN) DT: bus is default (na=2, ns=2) on /scb
(XEN) DT: translating address:<3> 00000000<3> 7d580000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7c000000, s=3800000, da=7d580000
(XEN) DT: parent translation for:<3> 00000000<3> fc000000<3>
(XEN) DT: with offset: 1580000
(XEN) DT: one level translation:<3> 00000000<3> fd580000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fd580000 - 00fd590000 P2MType=5
(XEN) handle /scb/ethernet@7d580000/mdio@e14
(XEN) dt_irq_number: dev=/scb/ethernet@7d580000/mdio@e14
(XEN) /scb/ethernet@7d580000/mdio@e14 passthrough = 1 naddr = 0
(XEN) Check if /scb/ethernet@7d580000/mdio@e14 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/scb/ethernet@7d580000/mdio@e14
(XEN) handle /scb/ethernet@7d580000/mdio@e14/ethernet-phy@1
(XEN) dt_irq_number: dev=/scb/ethernet@7d580000/mdio@e14/ethernet-phy@1
(XEN) /scb/ethernet@7d580000/mdio@e14/ethernet-phy@1 passthrough = 1 naddr = 0
(XEN) Check if /scb/ethernet@7d580000/mdio@e14/ethernet-phy@1 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/scb/ethernet@7d580000/mdio@e14/ethernet-phy@1
(XEN) handle /scb/dma@7e007b00
(XEN) dt_irq_number: dev=/scb/dma@7e007b00
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_device_get_raw_irq: dev=/scb/dma@7e007b00, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000059...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/scb/dma@7e007b00, index=1
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000005a...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/scb/dma@7e007b00, index=2
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000005b...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/scb/dma@7e007b00, index=3
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000005c...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /scb/dma@7e007b00 passthrough = 1 naddr = 1
(XEN) Check if /scb/dma@7e007b00 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/scb/dma@7e007b00
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_device_get_raw_irq: dev=/scb/dma@7e007b00, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000059...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/scb/dma@7e007b00, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000059...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 121
(XEN) dt_device_get_raw_irq: dev=/scb/dma@7e007b00, index=1
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000005a...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/scb/dma@7e007b00, index=1
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000005a...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 122
(XEN) dt_device_get_raw_irq: dev=/scb/dma@7e007b00, index=2
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000005b...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/scb/dma@7e007b00, index=2
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000005b...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 123
(XEN) dt_device_get_raw_irq: dev=/scb/dma@7e007b00, index=3
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000005c...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/scb/dma@7e007b00, index=3
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=12
(XEN)  intsize=3 intlen=12
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000005c...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 124
(XEN) DT: ** translation for device /scb/dma@7e007b00 **
(XEN) DT: bus is default (na=2, ns=2) on /scb
(XEN) DT: translating address:<3> 00000000<3> 7e007b00<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7c000000, s=3800000, da=7e007b00
(XEN) DT: parent translation for:<3> 00000000<3> fc000000<3>
(XEN) DT: with offset: 2007b00
(XEN) DT: one level translation:<3> 00000000<3> fe007b00<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe007b00 - 00fe007f00 P2MType=5
(XEN) handle /scb/mailbox@7e00b840
(XEN) dt_irq_number: dev=/scb/mailbox@7e00b840
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/scb/mailbox@7e00b840, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000022...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /scb/mailbox@7e00b840 passthrough = 1 naddr = 1
(XEN) Check if /scb/mailbox@7e00b840 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/scb/mailbox@7e00b840
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/scb/mailbox@7e00b840, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000022...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/scb/mailbox@7e00b840, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000022...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 66
(XEN) DT: ** translation for device /scb/mailbox@7e00b840 **
(XEN) DT: bus is default (na=2, ns=2) on /scb
(XEN) DT: translating address:<3> 00000000<3> 7e00b840<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7c000000, s=3800000, da=7e00b840
(XEN) DT: parent translation for:<3> 00000000<3> fc000000<3>
(XEN) DT: with offset: 200b840
(XEN) DT: one level translation:<3> 00000000<3> fe00b840<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe00b840 - 00fe00b87c P2MType=5
(XEN) handle /scb/mailbox@7e00b840/bcm2835_audio
(XEN) dt_irq_number: dev=/scb/mailbox@7e00b840/bcm2835_audio
(XEN) /scb/mailbox@7e00b840/bcm2835_audio passthrough = 1 naddr = 0
(XEN) Check if /scb/mailbox@7e00b840/bcm2835_audio is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/scb/mailbox@7e00b840/bcm2835_audio
(XEN) handle /scb/xhci@7e9c0000
(XEN) dt_irq_number: dev=/scb/xhci@7e9c0000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/scb/xhci@7e9c0000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x000000b0...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /scb/xhci@7e9c0000 passthrough = 1 naddr = 1
(XEN) Check if /scb/xhci@7e9c0000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/scb/xhci@7e9c0000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/scb/xhci@7e9c0000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x000000b0...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/scb/xhci@7e9c0000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x000000b0...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 208
(XEN) DT: ** translation for device /scb/xhci@7e9c0000 **
(XEN) DT: bus is default (na=2, ns=2) on /scb
(XEN) DT: translating address:<3> 00000000<3> 7e9c0000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7c000000, s=3800000, da=7e9c0000
(XEN) DT: parent translation for:<3> 00000000<3> fc000000<3>
(XEN) DT: with offset: 29c0000
(XEN) DT: one level translation:<3> 00000000<3> fe9c0000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe9c0000 - 00feac0000 P2MType=5
(XEN) handle /scb/hevc-decoder@7eb00000
(XEN) dt_irq_number: dev=/scb/hevc-decoder@7eb00000
(XEN) /scb/hevc-decoder@7eb00000 passthrough = 1 naddr = 1
(XEN) Check if /scb/hevc-decoder@7eb00000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/scb/hevc-decoder@7eb00000
(XEN) DT: ** translation for device /scb/hevc-decoder@7eb00000 **
(XEN) DT: bus is default (na=2, ns=2) on /scb
(XEN) DT: translating address:<3> 00000000<3> 7eb00000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7c000000, s=3800000, da=7eb00000
(XEN) DT: parent translation for:<3> 00000000<3> fc000000<3>
(XEN) DT: with offset: 2b00000
(XEN) DT: one level translation:<3> 00000000<3> feb00000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00feb00000 - 00feb10000 P2MType=5
(XEN) handle /scb/rpivid-local-intc@7eb10000
(XEN) dt_irq_number: dev=/scb/rpivid-local-intc@7eb10000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/scb/rpivid-local-intc@7eb10000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000062...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /scb/rpivid-local-intc@7eb10000 passthrough = 1 naddr = 1
(XEN) Check if /scb/rpivid-local-intc@7eb10000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/scb/rpivid-local-intc@7eb10000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/scb/rpivid-local-intc@7eb10000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000062...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/scb/rpivid-local-intc@7eb10000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x00000062...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 130
(XEN) DT: ** translation for device /scb/rpivid-local-intc@7eb10000 **
(XEN) DT: bus is default (na=2, ns=2) on /scb
(XEN) DT: translating address:<3> 00000000<3> 7eb10000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7c000000, s=3800000, da=7eb10000
(XEN) DT: parent translation for:<3> 00000000<3> fc000000<3>
(XEN) DT: with offset: 2b10000
(XEN) DT: one level translation:<3> 00000000<3> feb10000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00feb10000 - 00feb11000 P2MType=5
(XEN) handle /scb/h264-decoder@7eb20000
(XEN) dt_irq_number: dev=/scb/h264-decoder@7eb20000
(XEN) /scb/h264-decoder@7eb20000 passthrough = 1 naddr = 1
(XEN) Check if /scb/h264-decoder@7eb20000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/scb/h264-decoder@7eb20000
(XEN) DT: ** translation for device /scb/h264-decoder@7eb20000 **
(XEN) DT: bus is default (na=2, ns=2) on /scb
(XEN) DT: translating address:<3> 00000000<3> 7eb20000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7c000000, s=3800000, da=7eb20000
(XEN) DT: parent translation for:<3> 00000000<3> fc000000<3>
(XEN) DT: with offset: 2b20000
(XEN) DT: one level translation:<3> 00000000<3> feb20000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00feb20000 - 00feb30000 P2MType=5
(XEN) handle /scb/vp9-decoder@7eb30000
(XEN) dt_irq_number: dev=/scb/vp9-decoder@7eb30000
(XEN) /scb/vp9-decoder@7eb30000 passthrough = 1 naddr = 1
(XEN) Check if /scb/vp9-decoder@7eb30000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/scb/vp9-decoder@7eb30000
(XEN) DT: ** translation for device /scb/vp9-decoder@7eb30000 **
(XEN) DT: bus is default (na=2, ns=2) on /scb
(XEN) DT: translating address:<3> 00000000<3> 7eb30000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7c000000, s=3800000, da=7eb30000
(XEN) DT: parent translation for:<3> 00000000<3> fc000000<3>
(XEN) DT: with offset: 2b30000
(XEN) DT: one level translation:<3> 00000000<3> feb30000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00feb30000 - 00feb40000 P2MType=5
(XEN) handle /leds
(XEN) dt_irq_number: dev=/leds
(XEN) /leds passthrough = 1 naddr = 0
(XEN) Check if /leds is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/leds
(XEN) handle /leds/act
(XEN) dt_irq_number: dev=/leds/act
(XEN) /leds/act passthrough = 1 naddr = 0
(XEN) Check if /leds/act is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/leds/act
(XEN) handle /leds/pwr
(XEN) dt_irq_number: dev=/leds/pwr
(XEN) /leds/pwr passthrough = 1 naddr = 0
(XEN) Check if /leds/pwr is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/leds/pwr
(XEN) handle /sd_io_1v8_reg
(XEN) dt_irq_number: dev=/sd_io_1v8_reg
(XEN) /sd_io_1v8_reg passthrough = 1 naddr = 0
(XEN) Check if /sd_io_1v8_reg is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/sd_io_1v8_reg
(XEN) handle /__overrides__
(XEN) dt_irq_number: dev=/__overrides__
(XEN) /__overrides__ passthrough = 1 naddr = 0
(XEN) Check if /__overrides__ is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/__overrides__
(XEN) handle /fixedregulator_3v3
(XEN) dt_irq_number: dev=/fixedregulator_3v3
(XEN) /fixedregulator_3v3 passthrough = 1 naddr = 0
(XEN) Check if /fixedregulator_3v3 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/fixedregulator_3v3
(XEN) handle /fixedregulator_5v0
(XEN) dt_irq_number: dev=/fixedregulator_5v0
(XEN) /fixedregulator_5v0 passthrough = 1 naddr = 0
(XEN) Check if /fixedregulator_5v0 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/fixedregulator_5v0
(XEN) handle /v3dbus
(XEN) dt_irq_number: dev=/v3dbus
(XEN) /v3dbus passthrough = 1 naddr = 0
(XEN) Check if /v3dbus is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/v3dbus
(XEN) handle /v3dbus/v3d@7ec04000
(XEN) dt_irq_number: dev=/v3dbus/v3d@7ec04000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/v3dbus/v3d@7ec04000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000004a...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /v3dbus/v3d@7ec04000 passthrough = 1 naddr = 2
(XEN) Check if /v3dbus/v3d@7ec04000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/v3dbus/v3d@7ec04000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/v3dbus/v3d@7ec04000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000004a...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/v3dbus/v3d@7ec04000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000004a...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 106
(XEN) DT: ** translation for device /v3dbus/v3d@7ec04000 **
(XEN) DT: bus is default (na=1, ns=2) on /v3dbus
(XEN) DT: translating address:<3> 7ec00000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7c500000, s=3300000, da=7ec00000
(XEN) DT: parent translation for:<3> 00000000<3> fc500000<3>
(XEN) DT: with offset: 2700000
(XEN) DT: one level translation:<3> 00000000<3> fec00000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fec00000 - 00fec04000 P2MType=5
(XEN) DT: ** translation for device /v3dbus/v3d@7ec04000 **
(XEN) DT: bus is default (na=1, ns=2) on /v3dbus
(XEN) DT: translating address:<3> 7ec04000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7c500000, s=3300000, da=7ec04000
(XEN) DT: parent translation for:<3> 00000000<3> fc500000<3>
(XEN) DT: with offset: 2704000
(XEN) DT: one level translation:<3> 00000000<3> fec04000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fec04000 - 00fec08000 P2MType=5
(XEN) handle /gpu
(XEN) dt_irq_number: dev=/gpu
(XEN) /gpu passthrough = 1 naddr = 0
(XEN) Check if /gpu is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/gpu
(XEN) handle /clk-108M
(XEN) dt_irq_number: dev=/clk-108M
(XEN) /clk-108M passthrough = 1 naddr = 0
(XEN) Check if /clk-108M is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/clk-108M
(XEN) handle /firmware-clocks
(XEN) dt_irq_number: dev=/firmware-clocks
(XEN) /firmware-clocks passthrough = 1 naddr = 0
(XEN) Check if /firmware-clocks is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/firmware-clocks
(XEN) handle /emmc2bus
(XEN) dt_irq_number: dev=/emmc2bus
(XEN) /emmc2bus passthrough = 1 naddr = 0
(XEN) Check if /emmc2bus is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/emmc2bus
(XEN) handle /emmc2bus/emmc2@7e340000
(XEN) dt_irq_number: dev=/emmc2bus/emmc2@7e340000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/emmc2bus/emmc2@7e340000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000007e...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) /emmc2bus/emmc2@7e340000 passthrough = 1 naddr = 1
(XEN) Check if /emmc2bus/emmc2@7e340000 is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/emmc2bus/emmc2@7e340000
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_device_get_raw_irq: dev=/emmc2bus/emmc2@7e340000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000007e...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/emmc2bus/emmc2@7e340000, index=0
(XEN)  using 'interrupts' property
(XEN)  intspec=0 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@40041000,intspec=[0x00000000 0x0000007e...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@40041000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN)   - IRQ: 158
(XEN) DT: ** translation for device /emmc2bus/emmc2@7e340000 **
(XEN) DT: bus is default (na=2, ns=1) on /emmc2bus
(XEN) DT: translating address:<3> 00000000<3> 7e340000<3>
(XEN) DT: parent bus is default (na=2, ns=1) on /
(XEN) DT: walking ranges...
(XEN) DT: default map, cp=7e000000, s=1800000, da=7e340000
(XEN) DT: parent translation for:<3> 00000000<3> fe000000<3>
(XEN) DT: with offset: 340000
(XEN) DT: one level translation:<3> 00000000<3> fe340000<3>
(XEN) DT: reached root node
(XEN)   - MMIO: 00fe340000 - 00fe340100 P2MType=5
(XEN) handle /sd_vcc_reg
(XEN) dt_irq_number: dev=/sd_vcc_reg
(XEN) /sd_vcc_reg passthrough = 1 naddr = 0
(XEN) Check if /sd_vcc_reg is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/sd_vcc_reg
(XEN) handle /__symbols__
(XEN) dt_irq_number: dev=/__symbols__
(XEN) /__symbols__ passthrough = 1 naddr = 0
(XEN) Check if /__symbols__ is behind the IOMMU and add it
(XEN) dt_irq_number: dev=/__symbols__
(XEN) Allocating PPI 16 for event channel interrupt
(XEN) Create hypervisor node
(XEN) Create PSCI node
(XEN) Create cpus node
(XEN) Create cpu@0 (logical CPUID: 0) node
(XEN) Create memory node (reg size 3, nr cells 15)
(XEN)   Bank 0: 0x8000000->0x28000000
(XEN)   Bank 1: 0x2a000000->0x2b000000
(XEN)   Bank 2: 0x2e000000->0x38000000
(XEN)   Bank 3: 0x3cc00000->0x3d000000
(XEN)   Bank 4: 0xe8000000->0xf0000000
(XEN) Loading zImage from 000000002bd7c000 to 0000000008080000-0000000009980a00
(XEN) Loading d0 DTB to 0x0000000010000000-0x000000001000b33a
(XEN) Initial low memory virq threshold set at 0x4000 pages.
(XEN) Scrubbing Free RAM in background
(XEN) Std. Loglevel: All
(XEN) Guest Loglevel: All
(XEN) ***************************************************
(XEN) No support for ARM_SMCCC_ARCH_WORKAROUND_1.
(XEN) Please update your firmware.
(XEN) ***************************************************
(XEN) No support for ARM_SMCCC_ARCH_WORKAROUND_1.
(XEN) Please update your firmware.
(XEN) ***************************************************
(XEN) No support for ARM_SMCCC_ARCH_WORKAROUND_1.
(XEN) Please update your firmware.
(XEN) ***************************************************
(XEN) 3... 2... 1...
(XEN) *** Serial input to DOM0 (type 'CTRL-a' three times to switch input)
(XEN) Freed 344kB init memory.
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER4
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER8
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER12
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER16
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER20
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER24
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER28
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd083]
[    0.000000] Linux version 5.6.10-default+ (root@13024eb1d2cf) (gcc version 8.3.0 (Alpine 8.3.0)) #19 SMP Tue May 12 03:56:46 UTC 2020
[    0.000000] Machine model: Raspberry Pi 4 Model B
[    0.000000] Xen 4.14 support found
[    0.000000] efi: Getting EFI parameters from FDT:
[    0.000000] efi: UEFI not found.
[    0.000000] Reserved memory: created CMA memory pool at 0x0000000024000000, size 64 MiB
[    0.000000] OF: reserved mem: initialized node linux,cma, compatible id shared-dma-pool
[    0.000000] NUMA: No NUMA configuration found
[    0.000000] NUMA: Faking a node at [mem 0x0000000008000000-0x00000000efffffff]
[    0.000000] NUMA: NODE_DATA [mem 0xefe282c0-0xefe2bfff]
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000008000000-0x000000003fffffff]
[    0.000000]   DMA32    [mem 0x0000000040000000-0x00000000efffffff]
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000008000000-0x0000000027ffffff]
[    0.000000]   node   0: [mem 0x000000002a000000-0x000000002affffff]
[    0.000000]   node   0: [mem 0x000000002e000000-0x0000000037ffffff]
[    0.000000]   node   0: [mem 0x000000003cc00000-0x000000003cffffff]
[    0.000000]   node   0: [mem 0x00000000e8000000-0x00000000efffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000008000000-0x00000000efffffff]
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.1 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: Trusted OS migration not required
[    0.000000] psci: SMC Calling Convention v1.1
[    0.000000] percpu: Embedded 23 pages/cpu s54232 r8192 d31784 u94208
[    0.000000] Detected PIPT I-cache on CPU0
[    0.000000] CPU features: detected: EL2 vector hardening
[    0.000000] CPU features: detected: Speculative Store Bypass Disable
[    0.000000] CPU features: detected: ARM erratum 1319367
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 206640
[    0.000000] Policy zone: DMA32
[    0.000000] Kernel command line: console=hvc0 earlyprintk=xen nomodeset rootdelay=10
[    0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
[    0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] software IO TLB: mapped [mem 0x34000000-0x38000000] (64MB)
[    0.000000] Memory: 645508K/839680K available (12796K kernel code, 1858K rwdata, 6212K rodata, 4672K init, 757K bss, 128636K reserved, 65536K cma-reserved)
[    0.000000] random: get_random_u64 called from __kmem_cache_create+0x40/0x580 with crng_init=0
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=480 to nr_cpu_ids=1.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] arch_timer: cp15 timer(s) running at 54.00MHz (virt).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0xc743ce346, max_idle_ns: 440795203123 ns
[    0.000005] sched_clock: 56 bits at 54MHz, resolution 18ns, wraps every 4398046511102ns
[    0.000415] Console: colour dummy device 80x25
[    0.324889] printk: console [hvc0] enabled
[    0.329167] Calibrating delay loop (skipped), value calculated using timer frequency.. 108.00 BogoMIPS (lpj=540000)
[    0.339732] pid_max: default: 32768 minimum: 301
[    0.344557] LSM: Security Framework initializing
[    0.349270] Mount-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
[    0.356780] Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
[    0.365679] Disabling memory control group subsystem
[    0.371854] xen:grant_table: Grant tables using version 1 layout
[    0.377338] Grant table initialized
[    0.380986] xen:events: Using FIFO-based ABI
[    0.385350] Xen: initializing cpu0
[    0.388980] rcu: Hierarchical SRCU implementation.
[    0.398110] EFI services will not be available.
[    0.402282] smp: Bringing up secondary CPUs ...
[    0.406792] smp: Brought up 1 node, 1 CPU
[    0.410873] SMP: Total of 1 processors activated.
[    0.415707] CPU features: detected: 32-bit EL0 Support
[    0.420989] CPU features: detected: CRC32 instructions
[    0.455684] CPU: All CPU(s) started at EL1
[    0.459276] alternatives: patching kernel code
[    0.465203] devtmpfs: initialized
[    0.475441] Enabled cp15_barrier support
[    0.478807] Enabled setend support
[    0.482340] KASLR disabled due to lack of seed
[    0.487305] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.496948] futex hash table entries: 256 (order: 2, 16384 bytes, linear)
[    0.505625] pinctrl core: initialized pinctrl subsystem
[    0.511798] thermal_sys: Registered thermal governor 'fair_share'
[    0.511802] thermal_sys: Registered thermal governor 'bang_bang'
[    0.517352] thermal_sys: Registered thermal governor 'step_wise'
[    0.523543] thermal_sys: Registered thermal governor 'user_space'
[    0.529804] DMI not present or invalid.
[    0.540398] NET: Registered protocol family 16
[    0.545665] DMA: preallocated 256 KiB pool for atomic allocations
[    0.551237] audit: initializing netlink subsys (disabled)
[    0.558042] audit: type=2000 audit(0.420:1): state=initialized audit_enabled=0 res=1
[    0.565951] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    0.572305] ASID allocator initialised with 65536 entries
[    0.577763] DEBUG xen_swiotlb_init 260 start=34000000 end=38000000 rc=-12
[    0.585992] Serial: AMBA PL011 UART driver
[    0.591381] bcm2835-mbox fe00b880.mailbox: mailbox enabled
[    0.599624] ===1 before
[    0.601485] ==== middle
[    0.604031] ==== after
[    0.606490] ==== done
[    0.609659] ===1 before
[    0.611517] ==== middle
[    0.614063] ==== after
[    0.616522] ==== done
[    0.618906] raspberrypi-firmware soc:firmware: Attached to firmware from 2020-02-20 16:41, variant start
[    0.638606] ===1 before
[    0.640464] ==== middle
[    0.643022] ==== after
[    0.645469] ==== done
[    0.647849] raspberrypi-firmware soc:firmware: Firmware hash is 00f355997ccdacfaac70e6e07803eccc0a6f1d6e
[    0.667552] ===1 before
[    0.669410] ==== middle
[    0.671956] ==== after
[    0.674415] ==== done
[    0.692908] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
[    0.699112] HugeTLB registered 32.0 MiB page size, pre-allocated 0 pages
[    0.705931] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[    0.712805] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages
[    0.724000] cryptd: max_cpu_qlen set to 1000
[    0.734131] ACPI: Interpreter disabled.
[    0.737696] bcm2835-dma fe007000.dma: DMA legacy API manager, dmachans=0x1
[    0.746016] xen:balloon: Initialising balloon driver
[    0.751683] iommu: Default domain type: Translated
[    0.756463] vgaarb: loaded
[    0.759203] SCSI subsystem initialized
[    0.763012] usbcore: registered new interface driver usbfs
[    0.768397] usbcore: registered new interface driver hub
[    0.773790] usbcore: registered new device driver usb
[    0.779138] usb_phy_generic phy: phy supply vcc not found, using dummy regulator
[    0.786775] pps_core: LinuxPPS API ver. 1 registered
[    0.791579] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.800893] PTP clock support registered
[    0.805054] EDAC MC: Ver: 3.0.0
[    0.809428] NetLabel: Initializing
[    0.812258] NetLabel:  domain hash size = 128
[    0.816758] NetLabel:  protocols = UNLABELED CIPSOv4 CALIPSO
[    0.822613] NetLabel:  unlabeled traffic allowed by default
[    0.828829] clocksource: Switched to clocksource arch_sys_counter
[    0.834685] VFS: Disk quotas dquot_6.6.0
[    0.838641] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.845751] pnp: PnP ACPI: disabled
[    0.856252] NET: Registered protocol family 2
[    0.860560] tcp_listen_portaddr_hash hash table entries: 512 (order: 1, 8192 bytes, linear)
[    0.868583] TCP established hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    0.876542] TCP bind hash table entries: 8192 (order: 5, 131072 bytes, linear)
[    0.883965] TCP: Hash tables configured (established 8192 bind 8192)
[    0.890528] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
[    0.897117] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
[    0.904501] NET: Registered protocol family 1
[    0.908808] PCI: CLS 0 bytes, default 64
[    0.913360] kvm [1]: HYP mode not available
[    0.924641] Initialise system trusted keyrings
[    0.928663] workingset: timestamp_bits=40 max_order=18 bucket_order=0
[    0.942037] zbud: loaded
[    0.945592] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.951496] 9p: Installing v9fs 9p2000 file system support
[    0.979492] Key type asymmetric registered
[    0.983037] Asymmetric key parser 'x509' registered
[    0.988058] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
[    0.995737] io scheduler mq-deadline registered
[    1.000260] io scheduler kyber registered
[    1.004530] io scheduler bfq registered
[    1.013222] ===1 before
[    1.015086] ==== middle
[    1.017631] ==== after
[    1.020120] ==== done
[    1.022529] ===1 before
[    1.025007] ==== middle
[    1.027552] ==== after
[    1.030035] ==== done
[    1.032444] ===1 before
[    1.034928] ==== middle
[    1.037474] ==== after
[    1.039958] ==== done
[    1.042358] ===1 before
[    1.044850] ==== middle
[    1.047396] ==== after
[    1.049869] ==== done
[    1.052260] ===1 before
[    1.054772] ==== middle
[    1.057318] ==== after
[    1.059793] ==== done
[    1.062181] ===1 before
[    1.064694] ==== middle
[    1.067240] ==== after
[    1.069715] ==== done
[    1.072104] ===1 before
[    1.074616] ==== middle
[    1.077162] ==== after
[    1.079636] ==== done
[    1.082025] ===1 before
[    1.084538] ==== middle
[    1.087083] ==== after
[    1.089558] ==== done
[    1.092496] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
[    1.100048] brcm-pcie fd500000.pcie: host bridge /scb/pcie@7d500000 ranges:
[    1.106487] brcm-pcie fd500000.pcie:   No bus range found for /scb/pcie@7d500000, using [bus 00-ff]
[    1.115735] brcm-pcie fd500000.pcie:      MEM 0x0600000000..0x0603ffffff -> 0x00f8000000
[    1.123986] brcm-pcie fd500000.pcie:   IB MEM 0x0000000000..0x00bfffffff -> 0x0000000000
[    1.190941] brcm-pcie fd500000.pcie: link up, 5 GT/s x1 (SSC)
[    1.196357] brcm-pcie fd500000.pcie: PCI host bridge to bus 0000:00
[    1.202569] pci_bus 0000:00: root bus resource [bus 00-ff]
[    1.208172] pci_bus 0000:00: root bus resource [mem 0x600000000-0x603ffffff] (bus address [0xf8000000-0xfbffffff])
[    1.218742] pci 0000:00:00.0: [14e4:2711] type 01 class 0x060400
[    1.224946] pci 0000:00:00.0: PME# supported from D0 D3hot
(XEN) physdev.c:16:d0v0 PHYSDEVOP cmd=25: not implemented
(XEN) physdev.c:16:d0v0 PHYSDEVOP cmd=15: not implemented
[    1.240862] pci 0000:00:00.0: Failed to add - passthrough or MSI/MSI-X might fail!
[    1.251673] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    1.259293] pci 0000:01:00.0: [1106:3483] type 00 class 0x0c0330
[    1.265330] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00000fff 64bit]
[    1.272351] pci 0000:01:00.0: PME# supported from D0 D3cold
(XEN) physdev.c:16:d0v0 PHYSDEVOP cmd=15: not implemented
[    1.283157] pci 0000:01:00.0: Failed to add - passthrough or MSI/MSI-X might fail!
[    1.293896] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01
[    1.300050] pci 0000:00:00.0: BAR 14: assigned [mem 0x600000000-0x6000fffff]
[    1.307181] pci 0000:01:00.0: BAR 0: assigned [mem 0x600000000-0x600000fff 64bit]
[    1.314838] pci 0000:00:00.0: PCI bridge to [bus 01]
[    1.319918] pci 0000:00:00.0:   bridge window [mem 0x600000000-0x6000fffff]
[    1.327169] pcieport 0000:00:00.0: enabling device (0000 -> 0002)
[    1.333416] pcieport 0000:00:00.0: PME: Signaling with IRQ 33
[    1.339418] pcieport 0000:00:00.0: AER: enabled with IRQ 33
[    1.344999] pci 0000:01:00.0: enabling device (0000 -> 0002)
[    1.350741] ===1 before
[    1.353179] ==== middle
[    1.355724] ==== after
[    1.358183] ==== done
[    1.360620] pci 0000:01:00.0: quirk_usb_early_handoff+0x0/0x8f0 took 15245 usecs
[    1.371060] ===1 before
[    1.372921] ==== middle
[    1.375467] ==== after
[    1.377926] ==== done
[    1.380419] ===1 before
[    1.382843] ==== middle
[    1.385389] ==== after
[    1.387847] ==== done
[    1.390306] ===1 before
[    1.392765] ==== middle
[    1.395310] ==== after
[    1.397769] ==== done
[    1.400216] ===1 before
[    1.402686] ==== middle
[    1.405232] ==== after
[    1.407691] ==== done
[    1.410140] ===1 before
[    1.412608] ==== middle
[    1.415154] ==== after
[    1.417613] ==== done
[    1.420014] raspberrypi-clk firmware-clocks: CPU frequency range: min 600000000, max 1500000000
[    1.428925] ===1 before
[    1.431410] ==== middle
[    1.433944] ==== after
[    1.436403] ==== done
[    1.438854] ===1 before
[    1.441332] ==== middle
[    1.443866] ==== after
[    1.446325] ==== done
[    1.448746] ===1 before
[    1.451268] ==== middle
[    1.453788] ==== after
[    1.456246] ==== done
[    1.458661] ===1 before
[    1.461188] ==== middle
[    1.463710] ==== after
[    1.466168] ==== done
[    1.468582] ===1 before
[    1.471110] ==== middle
[    1.473631] ==== after
[    1.476090] ==== done
[    1.478503] ===1 before
[    1.481032] ==== middle
[    1.483553] ==== after
[    1.486012] ==== done
[    1.488430] ===1 before
[    1.490954] ==== middle
[    1.493475] ==== after
[    1.495934] ==== done
[    1.498355] ===1 before
[    1.500876] ==== middle
[    1.503397] ==== after
[    1.505856] ==== done
[    1.508270] ===1 before
[    1.510797] ==== middle
[    1.513319] ==== after
[    1.515777] ==== done
[    1.518192] ===1 before
[    1.520706] ==== middle
[    1.523241] ==== after
[    1.525699] ==== done
[    1.528119] ===1 before
[    1.530629] ==== middle
[    1.533163] ==== after
[    1.535621] ==== done
[    1.538035] ===1 before
[    1.540550] ==== middle
[    1.543085] ==== after
[    1.545543] ==== done
[    1.553738] ===1 before
[    1.555599] ==== middle
[    1.558145] ==== after
[    1.560617] ==== done
[    1.565782] xen:xen_evtchn: Event-channel device installed
[    1.571055] Initialising Xen pvcalls frontend driver
[    1.577540] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
[    1.591241] bcm2835-aux-uart fe215040.serial: there is not valid maps for state default
[    1.598857] OF: /soc/serial@7e215040: could not find phandle
[    1.604550] bcm2835-aux-uart fe215040.serial: could not get clk: -2
[    1.610994] bcm2835-aux-uart: probe of fe215040.serial failed with error -2
[    1.618559] Serial: AMBA driver
[    1.621885] msm_serial: driver initialized
[    1.626746] cacheinfo: Unable to detect cache hierarchy for CPU 0
[    1.641912] brd: module loaded
[    1.651988] loop: module loaded
[    1.670519] Invalid max_queues (4), will use default max: 1.
[    1.687720] drbd: initialized. Version: 8.4.11 (api:1/proto:86-101)
[    1.693494] drbd: built-in
[    1.696265] drbd: registered as block device major 147
[    1.703579] wireguard: allowedips self-tests: pass
[    1.710350] wireguard: nonce counter self-tests: pass
[    2.130591] wireguard: ratelimiter self-tests: pass
[    2.134990] wireguard: WireGuard 1.0.0 loaded. See www.wireguard.com for information.
[    2.142944] wireguard: Copyright (C) 2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
[    2.154372] libphy: Fixed MDIO Bus: probed
[    2.158437] bcmgenet fd580000.ethernet: using random Ethernet MAC
[    2.164185] bcmgenet fd580000.ethernet: failed to get enet clock
[    2.170304] bcmgenet fd580000.ethernet: GENET 5.0 EPHY: 0x0000
[    2.176266] bcmgenet fd580000.ethernet: failed to get enet-wol clock
[    2.182774] bcmgenet fd580000.ethernet: failed to get enet-eee clock
[    2.208878] libphy: bcmgenet MII bus: probed
[    2.288915] unimac-mdio unimac-mdio.-19: Broadcom UniMAC MDIO bus
[    2.295225] xen_netfront: Initialising Xen virtual ethernet driver
[    2.301176] xhci_hcd 0000:01:00.0: xHCI Host Controller
[    2.306251] xhci_hcd 0000:01:00.0: new USB bus registered, assigned bus number 1
[    2.314487] xhci_hcd 0000:01:00.0: hcc params 0x002841eb hci version 0x100 quirks 0x0000001000000890
[    2.323629] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.06
[    2.331559] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.338933] usb usb1: Product: xHCI Host Controller
[    2.343920] usb usb1: Manufacturer: Linux 5.6.10-default+ xhci-hcd
[    2.350255] usb usb1: SerialNumber: 0000:01:00.0
[    2.355456] hub 1-0:1.0: USB hub found
[    2.358921] hub 1-0:1.0: 1 port detected
[    2.363278] xhci_hcd 0000:01:00.0: xHCI Host Controller
[    2.368251] xhci_hcd 0000:01:00.0: new USB bus registered, assigned bus number 2
[    2.375852] xhci_hcd 0000:01:00.0: Host supports USB 3.0 SuperSpeed
[    2.382431] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 5.06
[    2.390650] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.398008] usb usb2: Product: xHCI Host Controller
[    2.403024] usb usb2: Manufacturer: Linux 5.6.10-default+ xhci-hcd
[    2.409350] usb usb2: SerialNumber: 0000:01:00.0
[    2.414488] hub 2-0:1.0: USB hub found
[    2.417970] hub 2-0:1.0: 4 ports detected
[    2.422756] usbcore: registered new interface driver usb-storage
[    2.428445] mousedev: PS/2 mouse device common for all mice
[    2.436641] bcm2835-wdt bcm2835-wdt: Broadcom BCM2835 watchdog timer
[    2.443121] xen_wdt xen_wdt: initialized (timeout=60s, nowayout=0)
[    2.449506] sdhci: Secure Digital Host Controller Interface driver
[    2.455141] sdhci: Copyright(c) Pierre Ossman
[    2.460018] mmc-bcm2835 fe300000.mmcnr: could not get clk, deferring probe
[    2.466877] Error: Driver 'sdhost-bcm2835' is already registered, aborting...
[    2.473957] sdhci-pltfm: SDHCI platform and OF driver helper
[    2.480770] ledtrig-cpu: registered to indicate activity on CPUs
[    2.486862] hid: raw HID events driver (C) Jiri Kosina
[    2.491625] usbcore: registered new interface driver usbhid
[    2.497206] usbhid: USB HID core driver
[    2.504126] xt_time: kernel timezone is -0000
[    2.507945] IPVS: Registered protocols ()
[    2.512106] IPVS: Connection hash table configured (size=4096, memory=64Kbytes)
[    2.519728] IPVS: ipvs loaded.
[    2.522815] ipip: IPv4 and MPLS over IPv4 tunneling driver
[    2.528721] gre: GRE over IPv4 demultiplexor driver
[    2.533787] ipt_CLUSTERIP: ClusterIP Version 0.8 loaded successfully
[    2.539881] Initializing XFRM netlink socket
[    2.544760] NET: Registered protocol family 10
[    2.549761] Segment Routing with IPv6
[    2.553594] NET: Registered protocol family 17
[    2.557490] NET: Registered protocol family 15
[    2.562205] Bridge firewalling registered
[    2.566261] 8021q: 802.1Q VLAN Support v1.8
[    2.570684] 9pnet: Installing 9P2000 support
[    2.574860] Initialising Xen transport for 9pfs
[    2.579644] Key type dns_resolver registered
[    2.584270] registered taskstats version 1
[    2.588121] Loading compiled-in X.509 certificates
[    2.597242] Loaded X.509 cert 'Build time autogenerated kernel key: 9557d7f9466588cb07204147f4838b5471441a45'
[    2.606895] zswap: loaded using pool lzo/zbud
[    2.611479] Key type ._fscrypt registered
[    2.615261] Key type .fscrypt registered
[    2.619409] Key type fscrypt-provisioning registered
[    2.627645] ===1 before
[    2.629558] ==== middle
[    2.632058] ==== after
[    2.634517] ==== done
[    2.640341] uart-pl011 fe201000.serial: there is not valid maps for state default
[    2.647406] uart-pl011 fe201000.serial: cts_event_workaround enabled
[    2.653912] fe201000.serial: ttyAMA0 at MMIO 0xfe201000 (irq = 12, base_baud = 0) is a PL011 rev2
[    2.663586] ===1 before
[    2.665461] ==== middle
[    2.667993] ==== after
[    2.670474] ==== done
[    2.672937] ===1 before
[    2.675381] ==== middle
[    2.677914] ==== after
[    2.680387] ==== done
[    2.684019] ===1 before
[    2.685878] ==== middle
[    2.688424] ==== after
[    2.690897] ==== done
[    2.693639] ===1 before
[    2.695800] ==== middle
[    2.698346] ==== after
[    2.700819] ==== done
[    2.703617] ===1 before
[    2.705722] ==== middle
[    2.708268] ==== after
[    2.710741] ==== done
[    2.713135] ===1 before
[    2.715643] ==== middle
[    2.718189] ==== after
[    2.720661] ==== done
[    2.724276] ===1 before
[    2.726134] ==== middle
[    2.728692] ==== after
[    2.731157] ==== done
[    2.734053] bcm2835-power bcm2835-power: Broadcom BCM2835 power domains driver
[    2.740930] usb 1-1: new high-speed USB device number 2 using xhci_hcd
[    2.748466] mmc-bcm2835 fe300000.mmcnr: mmc_debug:0 mmc_debug2:0
[    2.753954] mmc-bcm2835 fe300000.mmcnr: Forcing PIO mode
[    2.788897] ===1 before
[    2.790776] ==== middle
[    2.793320] ==== after
[    2.795766] ==== done
[    2.816506] mmc1: queuing unknown CIS tuple 0x80 (2 bytes)
[    2.823108] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[    2.829683] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[    2.834658] mmc0: SDHCI controller on fe340000.emmc2 [fe340000.emmc2] using ADMA
[    2.843604] hctosys: unable to open rtc device (rtc0)
[    2.848619] ===1 before
[    2.850704] ==== middle
[    2.853191] ==== after
[    2.855649] ==== done
[    2.858188] ===1 before
[    2.860614] ==== middle
[    2.863113] ==== after
[    2.865571] ==== done
[    2.868168] ===1 before
[    2.870521] ==== middle
[    2.873034] ==== after
[    2.875493] ==== done
[    2.877972] ===1 before
[    2.880469] ==== middle
[    2.882956] ==== after
[    2.885415] ==== done
[    2.887853] ===1 before
[    2.890363] ==== middle
[    2.892878] ==== after
[    2.895337] ==== done
[    2.897760] ===1 before
[    2.900272] ==== middle
[    2.902800] ==== after
[    2.905258] ==== done
[    2.907797] ===1 before
[    2.910208] ==== middle
[    2.912722] ==== after
[    2.915180] ==== done
[    2.917641] ===1 before
[    2.920146] ==== middle
[    2.922643] ==== after
[    2.925102] ==== done
[    2.927579] ===1 before
[    2.930075] ==== middle
[    2.932565] ==== after
[    2.935024] ==== done
[    2.937450] mmc1: queuing unknown CIS tuple 0x80 (7 bytes)
[    2.943137] ===1 before
[    2.945574] ==== middle
[    2.948107] ==== after
[    2.950580] ==== done
[    2.953040] ===1 before
[    2.955516] ==== middle
[    2.958029] ==== after
[    2.960502] ==== done
[    2.962984] ===1 before
[    2.965437] ==== middle
[    2.967951] ==== after
[    2.970423] ==== done
[    2.972904] ===1 before
[    2.975358] ==== middle
[    2.977872] ==== after
[    2.980353] ==== done
[    2.983093] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[    2.988559] Waiting 10 sec before mounting root device...
[    2.995476] usb 1-1: New USB device found, idVendor=2109, idProduct=3431, bcdDevice= 4.20
[    3.003194] usb 1-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[    3.010441] usb 1-1: Product: USB2.0 Hub
[    3.016007] hub 1-1:1.0: USB hub found
[    3.019524] hub 1-1:1.0: 4 ports detected
[    3.052745] ===1 before
[    3.054622] ==== middle
[    3.057150] ==== after
[    3.059641] ==== done
[    3.068297] random: fast init done
[    3.084464] mmc0: unrecognised SCR structure version 15
[    3.089176] mmc0: error -22 whilst initialising SD card
[    3.095487] ===1 before
[    3.097346] ==== middle
[    3.099910] ==== after
[    3.102351] ==== done
[    3.106491] ===1 before
[    3.108367] ==== middle
[    3.110909] ==== after
[    3.113353] ==== done
[    3.116211] ===1 before
[    3.118288] ==== middle
[    3.120830] ==== after
[    3.123275] ==== done
[    3.140515] mmc1: new high speed SDIO card at address 0001
[    3.217108] mmc0: unrecognised SCR structure version 15
[    3.221797] mmc0: error -22 whilst initialising SD card
[    3.228243] ===1 before
[    3.230116] ==== middle
[    3.232647] ==== after
[    3.235106] ==== done
[    3.239215] ===1 before
[    3.241073] ==== middle
[    3.243619] ==== after
[    3.246089] ==== done
[    3.248898] ===1 before
[    3.251020] ==== middle
[    3.253541] ==== after
[    3.256012] ==== done
[    3.340504] mmc0: unrecognised SCR structure version 7
[    3.345091] mmc0: error -22 whilst initialising SD card
[    3.351840] ===1 before
[    3.353709] ==== middle
[    3.356243] ==== after
[    3.358702] ==== done
[    3.361112] usb 1-1.3: new low-speed USB device number 3 using xhci_hcd
[    3.369594] ===1 before
[    3.371475] ==== middle
[    3.374009] ==== after
[    3.376456] ==== done
[    3.379360] ===1 before
[    3.381373] ==== middle
[    3.383919] ==== after
[    3.386378] ==== done
[    3.488613] mmc0: unrecognised SCR structure version 7
[    3.493214] mmc0: error -22 whilst initialising SD card
[    3.500860] ===1 before
[    3.502719] ==== middle
[    3.505264] ==== after
[    3.507723] ==== done
[    3.522690] usb 1-1.3: New USB device found, idVendor=03ee, idProduct=5601, bcdDevice= 1.00
[    3.530541] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    3.537999] usb 1-1.3: Product: Mitsumi USB Keyboard
[    3.543093] usb 1-1.3: Manufacturer: Mitsumi Electric
[    3.559466] input: Mitsumi Electric Mitsumi USB Keyboard as /devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.3/1-1.3:1.0/0003:03EE:5601.0001/input/input0
[    3.639333] hid-generic 0003:03EE:5601.0001: input,hidraw0: USB HID v1.00 Keyboard [Mitsumi Electric Mitsumi USB Keyboard] on usb-0000:01:00.0-1.3/input0
[    4.579257] ===1 before
[    4.581117] ==== middle
[    4.583662] ==== after
[    4.586133] ==== done
[    4.588968] ===1 before
[    4.591038] ==== middle
[    4.593584] ==== after
[    4.596055] ==== done
[    4.672281] mmc0: unrecognised SCR structure version 7
[    4.676868] mmc0: error -22 whilst initialising SD card
[    4.683180] ===1 before
[    4.685038] ==== middle
[    4.687584] ==== after
[    4.690057] ==== done
[    4.694154] ===1 before
[    4.696012] ==== middle
[    4.698569] ==== after
[    4.701030] ==== done
[    4.703849] ===1 before
[    4.705933] ==== middle
[    4.708491] ==== after
[    4.710953] ==== done
[    4.790159] mmc0: unrecognised SCR structure version 7
[    4.794744] mmc0: error -22 whilst initialising SD card
[    4.801220] ===1 before
[    4.803078] ==== middle
[    4.805624] ==== after
[    4.808083] ==== done
[    4.812204] ===1 before
[    4.814073] ==== middle
[    4.816607] ==== after
[    4.819084] ==== done
[    4.821899] ===1 before
[    4.823995] ==== middle
[    4.826529] ==== after
[    4.829006] ==== done
[    4.913824] mmc0: unrecognised SCR structure version 7
[    4.918407] mmc0: error -22 whilst initialising SD card
[    4.925161] ===1 before
[    4.927020] ==== middle
[    4.929583] ==== after
[    4.932024] ==== done
[    4.936131] ===1 before
[    4.937989] ==== middle
[    4.940548] ==== after
[    4.943005] ==== done
[    4.945826] ===1 before
[    4.947911] ==== middle
[    4.950470] ==== after
[    4.952927] ==== done
[    5.055143] mmc0: unrecognised SCR structure version 7
[    5.059749] mmc0: error -22 whilst initialising SD card
[    5.067378] ===1 before
[    5.069254] ==== middle
[    5.071782] ==== after
[    5.074241] ==== done
[    6.100326] ===1 before
[    6.102183] ==== middle
[    6.104729] ==== after
[    6.107187] ==== done
[    6.110038] ===1 before
[    6.112105] ==== middle
[    6.114651] ==== after
[    6.117109] ==== done
[    6.193332] mmc0: unrecognised SCR structure version 7
[    6.197916] mmc0: error -22 whilst initialising SD card
[    6.204228] ===1 before
[    6.206086] ==== middle
[    6.208631] ==== after
[    6.211105] ==== done
[    6.215198] ===1 before
[    6.217055] ==== middle
[    6.219619] ==== after
[    6.222060] ==== done
[    6.224893] ===1 before
[    6.226977] ==== middle
[    6.229542] ==== after
[    6.231982] ==== done
[    6.311215] mmc0: unrecognised SCR structure version 7
[    6.315799] mmc0: error -22 whilst initialising SD card
[    6.322277] ===1 before
[    6.324147] ==== middle
[    6.326681] ==== after
[    6.329158] ==== done
[    6.333247] ===1 before
[    6.335105] ==== middle
[    6.337651] ==== after
[    6.340124] ==== done
[    6.342943] ===1 before
[    6.345027] ==== middle
[    6.347573] ==== after
[    6.350046] ==== done
[    6.434905] mmc0: unrecognised SCR structure version 7
[    6.439511] mmc0: error -22 whilst initialising SD card
[    6.446222] ===1 before
[    6.448080] ==== middle
[    6.450639] ==== after
[    6.453084] ==== done
[    6.457191] ===1 before
[    6.459066] ==== middle
[    6.461595] ==== after
[    6.464053] ==== done
[    6.466887] ===1 before
[    6.468988] ==== middle
[    6.471516] ==== after
[    6.473975] ==== done
[   13.459047] VFS: Cannot open root device "(null)" or unknown-block(0,0): error -6
[   13.466000] Please append a correct "root=" boot option; here are the available partitions:
[   13.474565] 0100          131072 ram0
[   13.474567]  (driver?)
[   13.480859] 0101          131072 ram1
[   13.480861]  (driver?)
[   13.487165] 0102          131072 ram2
[   13.487166]  (driver?)
[   13.493486] 0103          131072 ram3
[   13.493488]  (driver?)
[   13.499824] 0104          131072 ram4
[   13.499826]  (driver?)
[   13.506129] 0105          131072 ram5
[   13.506131]  (driver?)
[   13.512452] 0106          131072 ram6
[   13.512453]  (driver?)
[   13.518773] 0107          131072 ram7
[   13.518774]  (driver?)
[   13.525096] 0108          131072 ram8
[   13.525098]  (driver?)
[   13.531417] 0109          131072 ram9
[   13.531419]  (driver?)
[   13.537739] 010a          131072 ram10
[   13.537740]  (driver?)
[   13.544160] 010b          131072 ram11
[   13.544162]  (driver?)
[   13.550571] 010c          131072 ram12
[   13.550573]  (driver?)
[   13.556968] 010d          131072 ram13
[   13.556970]  (driver?)
[   13.563378] 010e          131072 ram14
[   13.563380]  (driver?)
[   13.569804] 010f          131072 ram15
[   13.569806]  (driver?)
[   13.576223] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
[   13.584638] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.6.10-default+ #19
[   13.591559] Hardware name: Raspberry Pi 4 Model B (DT)
[   13.596828] Call trace:
[   13.599382]  dump_backtrace+0x0/0x1d0
[   13.603152]  show_stack+0x14/0x20
[   13.606578]  dump_stack+0xbc/0x100
[   13.610092]  panic+0x150/0x324
[   13.613251]  mount_block_root+0x28c/0x32c
[   13.617376]  mount_root+0x7c/0x88
[   13.620800]  prepare_namespace+0x158/0x198
[   13.625024]  kernel_init_freeable+0x264/0x2b0
[   13.629496]  kernel_init+0x10/0x100
[   13.633094]  ret_from_fork+0x10/0x18
[   13.636786] Kernel Offset: disabled
[   13.640380] CPU features: 0x10002,61006000
[   13.644602] Memory Limit: none
[   13.647761] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) ]---

[-- Attachment #3: Type: text/plain, Size: 1352 bytes --]

diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
index b6d27762c..4890cec96 100644
--- a/drivers/xen/swiotlb-xen.c
+++ b/drivers/xen/swiotlb-xen.c
@@ -255,6 +255,7 @@ int __ref xen_swiotlb_init(int verbose, bool early)
 	if (!rc)
 		swiotlb_set_max_segment(PAGE_SIZE);
 
+printk("DEBUG %s %d start=%llx end=%llx\n",__func__,__LINE__,start_dma_addr,start_dma_addr+bytes);
 	return rc;
 error:
 	if (repeat--) {
@@ -324,6 +325,10 @@ xen_swiotlb_alloc_coherent(struct device *hwdev, size_t size,
 		}
 		SetPageXenRemapped(virt_to_page(ret));
 	}
+if (!dma_capable(hwdev, *dma_handle, size, true))
+    printk("DEBUG1 %s %d phys=%llx dma=%llx dma_mask=%llx\n",__func__,__LINE__,phys,*dma_handle,dma_mask);
+if (dev_addr + size - 1 > dma_mask)
+    printk("DEBUG2 %s %d phys=%llx dma=%llx dma_mask=%llx\n",__func__,__LINE__,phys,*dma_handle,dma_mask);
 	memset(ret, 0, size);
 	return ret;
 }
@@ -398,6 +408,7 @@ static dma_addr_t xen_swiotlb_map_page(struct device *dev, struct page *page,
 	 * Ensure that the address returned is DMA'ble
 	 */
 	if (unlikely(!dma_capable(dev, dev_addr, size, true))) {
+printk("DEBUG3 %s %d phys=%llx dma=%llx\n",__func__,__LINE__,phys,dev_addr);		
 		swiotlb_tbl_unmap_single(dev, map, size, size, dir,
 				attrs | DMA_ATTR_SKIP_CPU_SYNC);
 		return DMA_MAPPING_ERROR;

^ permalink raw reply related	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-13  0:33                                     ` Stefano Stabellini
@ 2020-05-13 10:11                                       ` Julien Grall
  2020-05-13 15:11                                         ` Stefano Stabellini
  0 siblings, 1 reply; 45+ messages in thread
From: Julien Grall @ 2020-05-13 10:11 UTC (permalink / raw)
  To: Stefano Stabellini, boris.ostrovsky, jgross
  Cc: Peng Fan, minyard, roman, jeff.kubascik, Julien Grall,
	Nataliya Korovkina, xen-devel, Stefano Stabellini

Hi,

On 13/05/2020 01:33, Stefano Stabellini wrote:
> I worked with Roman to do several more tests and here is an update on
> the situation. We don't know why my patch didn't work when Boris' patch
> [1] worked.  Both of them should have worked the same way.
> 
> Anyway, we continued with Boris patch to debug the new mmc error which
> looks like this:
> 
> [    3.084464] mmc0: unrecognised SCR structure version 15
> [    3.089176] mmc0: error -22 whilst initialising SD card
> 
> I asked to add a lot of trancing, see attached diff.

Please avoid attachment on mailing list and use pastebin for diff.

> We discovered a bug
> in xen_swiotlb_init: if io_tlb_start != 0 at the beginning of
> xen_swiotlb_init, start_dma_addr is not set correctly. This oneline
> patch fixes it:
> 
> diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
> index 0a40ac332a4c..b75c43356eba 100644
> --- a/drivers/xen/swiotlb-xen.c
> +++ b/drivers/xen/swiotlb-xen.c
> @@ -191,6 +191,7 @@ int __ref xen_swiotlb_init(int verbose, bool early)
>           * IO TLB memory already allocated. Just use it.
>           */
>          if (io_tlb_start != 0) {
> +               start_dma_addr = io_tlb_start;
>                  xen_io_tlb_start = phys_to_virt(io_tlb_start);
>                  goto end;
>          }
> 
> Unfortunately it doesn't solve the mmc0 error.
> 
> 
> As you might notice from the logs, none of the other interesting printks
> printed anything, which seems to mean that the memory allocated by
> xen_swiotlb_alloc_coherent and mapped by xen_swiotlb_map_page should be
> just fine.
> 
> I am starting to be out of ideas. Do you guys have any suggestions on
> what could be the issue or what could be done to discover it?

Sorry if my suggestions are going to be obvious, but I can't confirm 
whether this was already done:
     1) Does the kernel boot on baremetal (i.e without Xen)? This should 
help to confirm whether the bug is Xen is related.
     2) Swiotlb should not be necessary for basic dom0 boot on Arm. Did 
you try to disable it? This should help to confirm whether swiotlb is 
the problem or not.
     3) Did you track down how the MMC read the SCR structure?

Cheers,

-- 
Julien Grall


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-13 10:11                                       ` Julien Grall
@ 2020-05-13 15:11                                         ` Stefano Stabellini
  2020-05-13 18:19                                           ` Julien Grall
  0 siblings, 1 reply; 45+ messages in thread
From: Stefano Stabellini @ 2020-05-13 15:11 UTC (permalink / raw)
  To: Julien Grall
  Cc: jgross, Peng Fan, Stefano Stabellini, minyard, roman,
	jeff.kubascik, Julien Grall, Nataliya Korovkina, xen-devel,
	boris.ostrovsky, Stefano Stabellini

On Wed, 13 May 2020, Julien Grall wrote:
> Hi,
> 
> On 13/05/2020 01:33, Stefano Stabellini wrote:
> > I worked with Roman to do several more tests and here is an update on
> > the situation. We don't know why my patch didn't work when Boris' patch
> > [1] worked.  Both of them should have worked the same way.
> > 
> > Anyway, we continued with Boris patch to debug the new mmc error which
> > looks like this:
> > 
> > [    3.084464] mmc0: unrecognised SCR structure version 15
> > [    3.089176] mmc0: error -22 whilst initialising SD card
> > 
> > I asked to add a lot of trancing, see attached diff.
> 
> Please avoid attachment on mailing list and use pastebin for diff.
> 
> > We discovered a bug
> > in xen_swiotlb_init: if io_tlb_start != 0 at the beginning of
> > xen_swiotlb_init, start_dma_addr is not set correctly. This oneline
> > patch fixes it:
> > 
> > diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
> > index 0a40ac332a4c..b75c43356eba 100644
> > --- a/drivers/xen/swiotlb-xen.c
> > +++ b/drivers/xen/swiotlb-xen.c
> > @@ -191,6 +191,7 @@ int __ref xen_swiotlb_init(int verbose, bool early)
> >           * IO TLB memory already allocated. Just use it.
> >           */
> >          if (io_tlb_start != 0) {
> > +               start_dma_addr = io_tlb_start;
> >                  xen_io_tlb_start = phys_to_virt(io_tlb_start);
> >                  goto end;
> >          }
> > 
> > Unfortunately it doesn't solve the mmc0 error.
> > 
> > 
> > As you might notice from the logs, none of the other interesting printks
> > printed anything, which seems to mean that the memory allocated by
> > xen_swiotlb_alloc_coherent and mapped by xen_swiotlb_map_page should be
> > just fine.
> > 
> > I am starting to be out of ideas. Do you guys have any suggestions on
> > what could be the issue or what could be done to discover it?
> 
> Sorry if my suggestions are going to be obvious, but I can't confirm whether
> this was already done:
>     1) Does the kernel boot on baremetal (i.e without Xen)? This should help
> to confirm whether the bug is Xen is related.

Yes it boots

>     2) Swiotlb should not be necessary for basic dom0 boot on Arm. Did you try
> to disable it? This should help to confirm whether swiotlb is the problem or
> not.

It boots disabling swiotlb-xen


>     3) Did you track down how the MMC read the SCR structure?
 
Not yet


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-13 15:11                                         ` Stefano Stabellini
@ 2020-05-13 18:19                                           ` Julien Grall
  2020-05-13 18:26                                             ` Julien Grall
                                                               ` (2 more replies)
  0 siblings, 3 replies; 45+ messages in thread
From: Julien Grall @ 2020-05-13 18:19 UTC (permalink / raw)
  To: Stefano Stabellini
  Cc: jgross, Peng Fan, minyard, roman, jeff.kubascik, Julien Grall,
	Nataliya Korovkina, xen-devel, boris.ostrovsky,
	Stefano Stabellini

Hi,

On 13/05/2020 16:11, Stefano Stabellini wrote:
> On Wed, 13 May 2020, Julien Grall wrote:
>> Hi,
>>
>> On 13/05/2020 01:33, Stefano Stabellini wrote:
>>> I worked with Roman to do several more tests and here is an update on
>>> the situation. We don't know why my patch didn't work when Boris' patch
>>> [1] worked.  Both of them should have worked the same way.
>>>
>>> Anyway, we continued with Boris patch to debug the new mmc error which
>>> looks like this:
>>>
>>> [    3.084464] mmc0: unrecognised SCR structure version 15
>>> [    3.089176] mmc0: error -22 whilst initialising SD card
>>>
>>> I asked to add a lot of trancing, see attached diff.
>>
>> Please avoid attachment on mailing list and use pastebin for diff.
>>
>>> We discovered a bug
>>> in xen_swiotlb_init: if io_tlb_start != 0 at the beginning of
>>> xen_swiotlb_init, start_dma_addr is not set correctly. This oneline
>>> patch fixes it:
>>>
>>> diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
>>> index 0a40ac332a4c..b75c43356eba 100644
>>> --- a/drivers/xen/swiotlb-xen.c
>>> +++ b/drivers/xen/swiotlb-xen.c
>>> @@ -191,6 +191,7 @@ int __ref xen_swiotlb_init(int verbose, bool early)
>>>            * IO TLB memory already allocated. Just use it.
>>>            */
>>>           if (io_tlb_start != 0) {
>>> +               start_dma_addr = io_tlb_start;
>>>                   xen_io_tlb_start = phys_to_virt(io_tlb_start);
>>>                   goto end;
>>>           }
>>>
>>> Unfortunately it doesn't solve the mmc0 error.
>>>
>>>
>>> As you might notice from the logs, none of the other interesting printks
>>> printed anything, which seems to mean that the memory allocated by
>>> xen_swiotlb_alloc_coherent and mapped by xen_swiotlb_map_page should be
>>> just fine.
>>>
>>> I am starting to be out of ideas. Do you guys have any suggestions on
>>> what could be the issue or what could be done to discover it?
>>
>> Sorry if my suggestions are going to be obvious, but I can't confirm whether
>> this was already done:
>>      1) Does the kernel boot on baremetal (i.e without Xen)? This should help
>> to confirm whether the bug is Xen is related.
> 
> Yes it boots
> 
>>      2) Swiotlb should not be necessary for basic dom0 boot on Arm. Did you try
>> to disable it? This should help to confirm whether swiotlb is the problem or
>> not.
> 
> It boots disabling swiotlb-xen

Thank you for the answer! swiotlb-xen should basically be a NOP for 
dom0. So this suggests swiotlb is doing some transformation on the DMA 
address.

I have an idea what may have gone wrong. AFAICT, xen-swiotlb seems to 
assume the DMA address space and CPU address space is the same. Is RPI 
using the same address space?

As an aside, I can't find the 1=== and === from the log in your diff. So 
I am not entirely which path is used. Can you provide the associated log 
with your diff?

Cheers,

-- 
Julien Grall


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-13 18:19                                           ` Julien Grall
@ 2020-05-13 18:26                                             ` Julien Grall
  2020-05-13 19:51                                               ` Stefano Stabellini
  2020-05-13 19:13                                             ` Roman Shaposhnik
  2020-05-13 19:49                                             ` Stefano Stabellini
  2 siblings, 1 reply; 45+ messages in thread
From: Julien Grall @ 2020-05-13 18:26 UTC (permalink / raw)
  To: Stefano Stabellini
  Cc: jgross, Peng Fan, minyard, roman, jeff.kubascik, Julien Grall,
	Nataliya Korovkina, xen-devel, boris.ostrovsky,
	Stefano Stabellini

On 13/05/2020 19:19, Julien Grall wrote:
> Hi,
> 
> On 13/05/2020 16:11, Stefano Stabellini wrote:
>> On Wed, 13 May 2020, Julien Grall wrote:
>>> Hi,
>>>
>>> On 13/05/2020 01:33, Stefano Stabellini wrote:
>>>> I worked with Roman to do several more tests and here is an update on
>>>> the situation. We don't know why my patch didn't work when Boris' patch
>>>> [1] worked.  Both of them should have worked the same way.
>>>>
>>>> Anyway, we continued with Boris patch to debug the new mmc error which
>>>> looks like this:
>>>>
>>>> [    3.084464] mmc0: unrecognised SCR structure version 15
>>>> [    3.089176] mmc0: error -22 whilst initialising SD card
>>>>
>>>> I asked to add a lot of trancing, see attached diff.
>>>
>>> Please avoid attachment on mailing list and use pastebin for diff.
>>>
>>>> We discovered a bug
>>>> in xen_swiotlb_init: if io_tlb_start != 0 at the beginning of
>>>> xen_swiotlb_init, start_dma_addr is not set correctly. This oneline
>>>> patch fixes it:
>>>>
>>>> diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
>>>> index 0a40ac332a4c..b75c43356eba 100644
>>>> --- a/drivers/xen/swiotlb-xen.c
>>>> +++ b/drivers/xen/swiotlb-xen.c
>>>> @@ -191,6 +191,7 @@ int __ref xen_swiotlb_init(int verbose, bool early)
>>>>            * IO TLB memory already allocated. Just use it.
>>>>            */
>>>>           if (io_tlb_start != 0) {
>>>> +               start_dma_addr = io_tlb_start;
>>>>                   xen_io_tlb_start = phys_to_virt(io_tlb_start);
>>>>                   goto end;
>>>>           }
>>>>
>>>> Unfortunately it doesn't solve the mmc0 error.
>>>>
>>>>
>>>> As you might notice from the logs, none of the other interesting 
>>>> printks
>>>> printed anything, which seems to mean that the memory allocated by
>>>> xen_swiotlb_alloc_coherent and mapped by xen_swiotlb_map_page should be
>>>> just fine.
>>>>
>>>> I am starting to be out of ideas. Do you guys have any suggestions on
>>>> what could be the issue or what could be done to discover it?
>>>
>>> Sorry if my suggestions are going to be obvious, but I can't confirm 
>>> whether
>>> this was already done:
>>>      1) Does the kernel boot on baremetal (i.e without Xen)? This 
>>> should help
>>> to confirm whether the bug is Xen is related.
>>
>> Yes it boots
>>
>>>      2) Swiotlb should not be necessary for basic dom0 boot on Arm. 
>>> Did you try
>>> to disable it? This should help to confirm whether swiotlb is the 
>>> problem or
>>> not.
>>
>> It boots disabling swiotlb-xen
> 
> Thank you for the answer! swiotlb-xen should basically be a NOP for 
> dom0. So this suggests swiotlb is doing some transformation on the DMA 
> address.
> 
> I have an idea what may have gone wrong. AFAICT, xen-swiotlb seems to 
> assume the DMA address space and CPU address space is the same. Is RPI 
> using the same address space?

Another question, is the DMA request bounced? If so, are we sure the 
bounce buffer is in the first GB?

Cheers,

-- 
Julien Grall


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-13 18:19                                           ` Julien Grall
  2020-05-13 18:26                                             ` Julien Grall
@ 2020-05-13 19:13                                             ` Roman Shaposhnik
  2020-05-13 19:49                                             ` Stefano Stabellini
  2 siblings, 0 replies; 45+ messages in thread
From: Roman Shaposhnik @ 2020-05-13 19:13 UTC (permalink / raw)
  To: Julien Grall
  Cc: Juergen Gross, Peng Fan, Stefano Stabellini, minyard,
	jeff.kubascik, Julien Grall, Nataliya Korovkina, xen-devel,
	Boris Ostrovsky, Stefano Stabellini

[-- Attachment #1: Type: text/plain, Size: 3229 bytes --]

On Wed, May 13, 2020 at 11:20 AM Julien Grall <julien@xen.org> wrote:
>
> Hi,
>
> On 13/05/2020 16:11, Stefano Stabellini wrote:
> > On Wed, 13 May 2020, Julien Grall wrote:
> >> Hi,
> >>
> >> On 13/05/2020 01:33, Stefano Stabellini wrote:
> >>> I worked with Roman to do several more tests and here is an update on
> >>> the situation. We don't know why my patch didn't work when Boris' patch
> >>> [1] worked.  Both of them should have worked the same way.
> >>>
> >>> Anyway, we continued with Boris patch to debug the new mmc error which
> >>> looks like this:
> >>>
> >>> [    3.084464] mmc0: unrecognised SCR structure version 15
> >>> [    3.089176] mmc0: error -22 whilst initialising SD card
> >>>
> >>> I asked to add a lot of trancing, see attached diff.
> >>
> >> Please avoid attachment on mailing list and use pastebin for diff.
> >>
> >>> We discovered a bug
> >>> in xen_swiotlb_init: if io_tlb_start != 0 at the beginning of
> >>> xen_swiotlb_init, start_dma_addr is not set correctly. This oneline
> >>> patch fixes it:
> >>>
> >>> diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
> >>> index 0a40ac332a4c..b75c43356eba 100644
> >>> --- a/drivers/xen/swiotlb-xen.c
> >>> +++ b/drivers/xen/swiotlb-xen.c
> >>> @@ -191,6 +191,7 @@ int __ref xen_swiotlb_init(int verbose, bool early)
> >>>            * IO TLB memory already allocated. Just use it.
> >>>            */
> >>>           if (io_tlb_start != 0) {
> >>> +               start_dma_addr = io_tlb_start;
> >>>                   xen_io_tlb_start = phys_to_virt(io_tlb_start);
> >>>                   goto end;
> >>>           }
> >>>
> >>> Unfortunately it doesn't solve the mmc0 error.
> >>>
> >>>
> >>> As you might notice from the logs, none of the other interesting printks
> >>> printed anything, which seems to mean that the memory allocated by
> >>> xen_swiotlb_alloc_coherent and mapped by xen_swiotlb_map_page should be
> >>> just fine.
> >>>
> >>> I am starting to be out of ideas. Do you guys have any suggestions on
> >>> what could be the issue or what could be done to discover it?
> >>
> >> Sorry if my suggestions are going to be obvious, but I can't confirm whether
> >> this was already done:
> >>      1) Does the kernel boot on baremetal (i.e without Xen)? This should help
> >> to confirm whether the bug is Xen is related.
> >
> > Yes it boots
> >
> >>      2) Swiotlb should not be necessary for basic dom0 boot on Arm. Did you try
> >> to disable it? This should help to confirm whether swiotlb is the problem or
> >> not.
> >
> > It boots disabling swiotlb-xen
>
> Thank you for the answer! swiotlb-xen should basically be a NOP for
> dom0. So this suggests swiotlb is doing some transformation on the DMA
> address.
>
> I have an idea what may have gone wrong. AFAICT, xen-swiotlb seems to
> assume the DMA address space and CPU address space is the same. Is RPI
> using the same address space?
>
> As an aside, I can't find the 1=== and === from the log in your diff. So
> I am not entirely which path is used. Can you provide the associated log
> with your diff?

These are just extra printks to understand the code path better. A full complete
patch is attached so we're all on the same page.

Thanks,
Roman.

[-- Attachment #2: patch.txt --]
[-- Type: text/plain, Size: 4395 bytes --]

diff --git a/arch/arm/xen/mm.c b/arch/arm/xen/mm.c
index d40e9e5fc..fb21b542c 100644
--- a/arch/arm/xen/mm.c
+++ b/arch/arm/xen/mm.c
@@ -29,13 +29,11 @@ unsigned long xen_get_swiotlb_free_pages(unsigned int order)
 
 	for_each_memblock(memory, reg) {
 		if (reg->base < (phys_addr_t)0xffffffff) {
-			if (IS_ENABLED(CONFIG_ZONE_DMA32))
-				flags |= __GFP_DMA32;
-			else
-				flags |= __GFP_DMA;
+			flags |= __GFP_DMA;
 			break;
 		}
 	}
+	printk("DEBUG %s %d flags=%x\n",__func__,__LINE__,flags);
 	return __get_free_pages(flags, order);
 }
 
diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
index b6d27762c..ff9d07e28 100644
--- a/drivers/xen/swiotlb-xen.c
+++ b/drivers/xen/swiotlb-xen.c
@@ -191,6 +191,7 @@ int __ref xen_swiotlb_init(int verbose, bool early)
 	 * IO TLB memory already allocated. Just use it.
 	 */
 	if (io_tlb_start != 0) {
+		start_dma_addr = io_tlb_start;
 		xen_io_tlb_start = phys_to_virt(io_tlb_start);
 		goto end;
 	}
@@ -224,6 +225,7 @@ int __ref xen_swiotlb_init(int verbose, bool early)
 		m_ret = XEN_SWIOTLB_ENOMEM;
 		goto error;
 	}
+printk("DEBUG %s %d start_virt=%lx order=%lu phys=%llx vmalloc?=%d\n",__func__,__LINE__,(unsigned long)xen_io_tlb_start, order, virt_to_phys(xen_io_tlb_start), is_vmalloc_addr(xen_io_tlb_start));	
 	/*
 	 * And replace that memory with pages under 4GB.
 	 */
@@ -255,6 +257,7 @@ int __ref xen_swiotlb_init(int verbose, bool early)
 	if (!rc)
 		swiotlb_set_max_segment(PAGE_SIZE);
 
+printk("DEBUG %s %d start=%llx end=%llx rc=%d\n",__func__,__LINE__,start_dma_addr,start_dma_addr+bytes,rc);
 	return rc;
 error:
 	if (repeat--) {
@@ -324,6 +327,10 @@ xen_swiotlb_alloc_coherent(struct device *hwdev, size_t size,
 		}
 		SetPageXenRemapped(virt_to_page(ret));
 	}
+if (!dma_capable(hwdev, *dma_handle, size, true))
+    printk("DEBUG1 %s %d phys=%llx dma=%llx dma_mask=%llx\n",__func__,__LINE__,phys,*dma_handle,dma_mask);
+if (dev_addr + size - 1 > dma_mask)
+    printk("DEBUG2 %s %d phys=%llx dma=%llx dma_mask=%llx\n",__func__,__LINE__,phys,*dma_handle,dma_mask);
 	memset(ret, 0, size);
 	return ret;
 }
@@ -335,6 +342,7 @@ xen_swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr,
 	int order = get_order(size);
 	phys_addr_t phys;
 	u64 dma_mask = DMA_BIT_MASK(32);
+	struct page *pg;
 
 	if (hwdev && hwdev->coherent_dma_mask)
 		dma_mask = hwdev->coherent_dma_mask;
@@ -345,12 +353,16 @@ xen_swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr,
 
 	/* Convert the size to actually allocated. */
 	size = 1UL << (order + XEN_PAGE_SHIFT);
-
+printk(KERN_CRIT "===1 before\n");
+	pg = is_vmalloc_addr(vaddr) ? vmalloc_to_page(vaddr) : virt_to_page(vaddr);
+printk(KERN_CRIT "==== middle\n");	
+	BUG_ON(!pg);
+printk(KERN_CRIT "==== after\n");
 	if (!WARN_ON((dev_addr + size - 1 > dma_mask) ||
 		     range_straddles_page_boundary(phys, size)) &&
-	    TestClearPageXenRemapped(virt_to_page(vaddr)))
+	    TestClearPageXenRemapped(pg))
 		xen_destroy_contiguous_region(phys, order);
-
+printk(KERN_CRIT "==== done\n");
 	xen_free_coherent_pages(hwdev, size, vaddr, (dma_addr_t)phys, attrs);
 }
 
@@ -398,6 +410,7 @@ static dma_addr_t xen_swiotlb_map_page(struct device *dev, struct page *page,
 	 * Ensure that the address returned is DMA'ble
 	 */
 	if (unlikely(!dma_capable(dev, dev_addr, size, true))) {
+printk("DEBUG3 %s %d phys=%llx dma=%llx\n",__func__,__LINE__,phys,dev_addr);		
 		swiotlb_tbl_unmap_single(dev, map, size, size, dir,
 				attrs | DMA_ATTR_SKIP_CPU_SYNC);
 		return DMA_MAPPING_ERROR;
diff --git a/include/xen/arm/page-coherent.h b/include/xen/arm/page-coherent.h
index b9cc11e88..50c7a2e96 100644
--- a/include/xen/arm/page-coherent.h
+++ b/include/xen/arm/page-coherent.h
@@ -8,12 +8,17 @@
 static inline void *xen_alloc_coherent_pages(struct device *hwdev, size_t size,
 		dma_addr_t *dma_handle, gfp_t flags, unsigned long attrs)
 {
+	void *cpu_addr;
+        if (dma_alloc_from_dev_coherent(hwdev, size, dma_handle, &cpu_addr))
+            return cpu_addr;
 	return dma_direct_alloc(hwdev, size, dma_handle, flags, attrs);
 }
 
 static inline void xen_free_coherent_pages(struct device *hwdev, size_t size,
 		void *cpu_addr, dma_addr_t dma_handle, unsigned long attrs)
 {
+	if (dma_release_from_dev_coherent(hwdev, get_order(size), cpu_addr))
+            return;
 	dma_direct_free(hwdev, size, cpu_addr, dma_handle, attrs);
 }
 

^ permalink raw reply related	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-13 18:19                                           ` Julien Grall
  2020-05-13 18:26                                             ` Julien Grall
  2020-05-13 19:13                                             ` Roman Shaposhnik
@ 2020-05-13 19:49                                             ` Stefano Stabellini
  2 siblings, 0 replies; 45+ messages in thread
From: Stefano Stabellini @ 2020-05-13 19:49 UTC (permalink / raw)
  To: Julien Grall
  Cc: jgross, Peng Fan, Stefano Stabellini, minyard, roman,
	jeff.kubascik, Julien Grall, Nataliya Korovkina, xen-devel,
	boris.ostrovsky, Stefano Stabellini

On Wed, 13 May 2020, Julien Grall wrote:
> On 13/05/2020 16:11, Stefano Stabellini wrote:
> > On Wed, 13 May 2020, Julien Grall wrote:
> > > Hi,
> > > 
> > > On 13/05/2020 01:33, Stefano Stabellini wrote:
> > > > I worked with Roman to do several more tests and here is an update on
> > > > the situation. We don't know why my patch didn't work when Boris' patch
> > > > [1] worked.  Both of them should have worked the same way.
> > > > 
> > > > Anyway, we continued with Boris patch to debug the new mmc error which
> > > > looks like this:
> > > > 
> > > > [    3.084464] mmc0: unrecognised SCR structure version 15
> > > > [    3.089176] mmc0: error -22 whilst initialising SD card
> > > > 
> > > > I asked to add a lot of trancing, see attached diff.
> > > 
> > > Please avoid attachment on mailing list and use pastebin for diff.
> > > 
> > > > We discovered a bug
> > > > in xen_swiotlb_init: if io_tlb_start != 0 at the beginning of
> > > > xen_swiotlb_init, start_dma_addr is not set correctly. This oneline
> > > > patch fixes it:
> > > > 
> > > > diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
> > > > index 0a40ac332a4c..b75c43356eba 100644
> > > > --- a/drivers/xen/swiotlb-xen.c
> > > > +++ b/drivers/xen/swiotlb-xen.c
> > > > @@ -191,6 +191,7 @@ int __ref xen_swiotlb_init(int verbose, bool early)
> > > >            * IO TLB memory already allocated. Just use it.
> > > >            */
> > > >           if (io_tlb_start != 0) {
> > > > +               start_dma_addr = io_tlb_start;
> > > >                   xen_io_tlb_start = phys_to_virt(io_tlb_start);
> > > >                   goto end;
> > > >           }
> > > > 
> > > > Unfortunately it doesn't solve the mmc0 error.
> > > > 
> > > > 
> > > > As you might notice from the logs, none of the other interesting printks
> > > > printed anything, which seems to mean that the memory allocated by
> > > > xen_swiotlb_alloc_coherent and mapped by xen_swiotlb_map_page should be
> > > > just fine.
> > > > 
> > > > I am starting to be out of ideas. Do you guys have any suggestions on
> > > > what could be the issue or what could be done to discover it?
> > > 
> > > Sorry if my suggestions are going to be obvious, but I can't confirm
> > > whether
> > > this was already done:
> > >      1) Does the kernel boot on baremetal (i.e without Xen)? This should
> > > help
> > > to confirm whether the bug is Xen is related.
> > 
> > Yes it boots
> > 
> > >      2) Swiotlb should not be necessary for basic dom0 boot on Arm. Did
> > > you try
> > > to disable it? This should help to confirm whether swiotlb is the problem
> > > or
> > > not.
> > 
> > It boots disabling swiotlb-xen
> 
> Thank you for the answer! swiotlb-xen should basically be a NOP for dom0. So
> this suggests swiotlb is doing some transformation on the DMA address.

Yes, but couldn't spot where yet


> I have an idea what may have gone wrong. AFAICT, xen-swiotlb seems to assume
> the DMA address space and CPU address space is the same. Is RPI using the same
> address space?

I thought about it too but we didn't add an explicit check for this yet.
My understanding is that it is not supposed to happen on arm64 boards
but at this point it is worth checking it for sure. Thanks for the
suggestion.


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-13 18:26                                             ` Julien Grall
@ 2020-05-13 19:51                                               ` Stefano Stabellini
  2020-06-02 18:34                                                 ` Corey Minyard
  0 siblings, 1 reply; 45+ messages in thread
From: Stefano Stabellini @ 2020-05-13 19:51 UTC (permalink / raw)
  To: Julien Grall
  Cc: jgross, Peng Fan, Stefano Stabellini, minyard, roman,
	jeff.kubascik, Julien Grall, Nataliya Korovkina, xen-devel,
	boris.ostrovsky, Stefano Stabellini

[-- Attachment #1: Type: text/plain, Size: 3662 bytes --]

On Wed, 13 May 2020, Julien Grall wrote:
> On 13/05/2020 19:19, Julien Grall wrote:
> > Hi,
> > 
> > On 13/05/2020 16:11, Stefano Stabellini wrote:
> > > On Wed, 13 May 2020, Julien Grall wrote:
> > > > Hi,
> > > > 
> > > > On 13/05/2020 01:33, Stefano Stabellini wrote:
> > > > > I worked with Roman to do several more tests and here is an update on
> > > > > the situation. We don't know why my patch didn't work when Boris'
> > > > > patch
> > > > > [1] worked.  Both of them should have worked the same way.
> > > > > 
> > > > > Anyway, we continued with Boris patch to debug the new mmc error which
> > > > > looks like this:
> > > > > 
> > > > > [    3.084464] mmc0: unrecognised SCR structure version 15
> > > > > [    3.089176] mmc0: error -22 whilst initialising SD card
> > > > > 
> > > > > I asked to add a lot of trancing, see attached diff.
> > > > 
> > > > Please avoid attachment on mailing list and use pastebin for diff.
> > > > 
> > > > > We discovered a bug
> > > > > in xen_swiotlb_init: if io_tlb_start != 0 at the beginning of
> > > > > xen_swiotlb_init, start_dma_addr is not set correctly. This oneline
> > > > > patch fixes it:
> > > > > 
> > > > > diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
> > > > > index 0a40ac332a4c..b75c43356eba 100644
> > > > > --- a/drivers/xen/swiotlb-xen.c
> > > > > +++ b/drivers/xen/swiotlb-xen.c
> > > > > @@ -191,6 +191,7 @@ int __ref xen_swiotlb_init(int verbose, bool
> > > > > early)
> > > > >            * IO TLB memory already allocated. Just use it.
> > > > >            */
> > > > >           if (io_tlb_start != 0) {
> > > > > +               start_dma_addr = io_tlb_start;
> > > > >                   xen_io_tlb_start = phys_to_virt(io_tlb_start);
> > > > >                   goto end;
> > > > >           }
> > > > > 
> > > > > Unfortunately it doesn't solve the mmc0 error.
> > > > > 
> > > > > 
> > > > > As you might notice from the logs, none of the other interesting
> > > > > printks
> > > > > printed anything, which seems to mean that the memory allocated by
> > > > > xen_swiotlb_alloc_coherent and mapped by xen_swiotlb_map_page should
> > > > > be
> > > > > just fine.
> > > > > 
> > > > > I am starting to be out of ideas. Do you guys have any suggestions on
> > > > > what could be the issue or what could be done to discover it?
> > > > 
> > > > Sorry if my suggestions are going to be obvious, but I can't confirm
> > > > whether
> > > > this was already done:
> > > >      1) Does the kernel boot on baremetal (i.e without Xen)? This should
> > > > help
> > > > to confirm whether the bug is Xen is related.
> > > 
> > > Yes it boots
> > > 
> > > >      2) Swiotlb should not be necessary for basic dom0 boot on Arm. Did
> > > > you try
> > > > to disable it? This should help to confirm whether swiotlb is the
> > > > problem or
> > > > not.
> > > 
> > > It boots disabling swiotlb-xen
> > 
> > Thank you for the answer! swiotlb-xen should basically be a NOP for dom0. So
> > this suggests swiotlb is doing some transformation on the DMA address.
> > 
> > I have an idea what may have gone wrong. AFAICT, xen-swiotlb seems to assume
> > the DMA address space and CPU address space is the same. Is RPI using the
> > same address space?
> 
> Another question, is the DMA request bounced? If so, are we sure the bounce
> buffer is in the first GB?

Yes, it is. This is actually where we spent the last few days, and I
found another little related bug in the initialization of the
swiotlb-xen but now I am sure the memory is under 1GB (0x34000000-0x38000000)

^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-05-13 19:51                                               ` Stefano Stabellini
@ 2020-06-02 18:34                                                 ` Corey Minyard
  2020-06-02 19:24                                                   ` Stefano Stabellini
  0 siblings, 1 reply; 45+ messages in thread
From: Corey Minyard @ 2020-06-02 18:34 UTC (permalink / raw)
  To: Stefano Stabellini
  Cc: jgross, Peng Fan, Julien Grall, roman, jeff.kubascik,
	Julien Grall, Nataliya Korovkina, xen-devel, boris.ostrovsky,
	Stefano Stabellini

Snip

> > > > > whether
> > > > > this was already done:
> > > > >      1) Does the kernel boot on baremetal (i.e without Xen)? This should
> > > > > help
> > > > > to confirm whether the bug is Xen is related.
> > > > 
> > > > Yes it boots
> > > > 
> > > > >      2) Swiotlb should not be necessary for basic dom0 boot on Arm. Did
> > > > > you try
> > > > > to disable it? This should help to confirm whether swiotlb is the
> > > > > problem or
> > > > > not.
> > > > 
> > > > It boots disabling swiotlb-xen
> > > 
> > > Thank you for the answer! swiotlb-xen should basically be a NOP for dom0. So
> > > this suggests swiotlb is doing some transformation on the DMA address.
> > > 
> > > I have an idea what may have gone wrong. AFAICT, xen-swiotlb seems to assume
> > > the DMA address space and CPU address space is the same. Is RPI using the
> > > same address space?
> > 
> > Another question, is the DMA request bounced? If so, are we sure the bounce
> > buffer is in the first GB?
> 
> Yes, it is. This is actually where we spent the last few days, and I
> found another little related bug in the initialization of the
> swiotlb-xen but now I am sure the memory is under 1GB (0x34000000-0x38000000)

Was anything ever resolved on this issue?  It just kind of ended for me,
and I looked in the main kernel and didn't find anything that looked
related.

Thanks,

-corey


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-06-02 18:34                                                 ` Corey Minyard
@ 2020-06-02 19:24                                                   ` Stefano Stabellini
  2020-06-03 15:29                                                     ` Corey Minyard
  0 siblings, 1 reply; 45+ messages in thread
From: Stefano Stabellini @ 2020-06-02 19:24 UTC (permalink / raw)
  To: Corey Minyard
  Cc: jgross, Peng Fan, Stefano Stabellini, Julien Grall, roman,
	jeff.kubascik, Julien Grall, Nataliya Korovkina, xen-devel,
	boris.ostrovsky, Stefano Stabellini

[-- Attachment #1: Type: text/plain, Size: 1645 bytes --]

On Tue, 2 Jun 2020, Corey Minyard wrote:
> Snip
> 
> > > > > > whether
> > > > > > this was already done:
> > > > > >      1) Does the kernel boot on baremetal (i.e without Xen)? This should
> > > > > > help
> > > > > > to confirm whether the bug is Xen is related.
> > > > > 
> > > > > Yes it boots
> > > > > 
> > > > > >      2) Swiotlb should not be necessary for basic dom0 boot on Arm. Did
> > > > > > you try
> > > > > > to disable it? This should help to confirm whether swiotlb is the
> > > > > > problem or
> > > > > > not.
> > > > > 
> > > > > It boots disabling swiotlb-xen
> > > > 
> > > > Thank you for the answer! swiotlb-xen should basically be a NOP for dom0. So
> > > > this suggests swiotlb is doing some transformation on the DMA address.
> > > > 
> > > > I have an idea what may have gone wrong. AFAICT, xen-swiotlb seems to assume
> > > > the DMA address space and CPU address space is the same. Is RPI using the
> > > > same address space?
> > > 
> > > Another question, is the DMA request bounced? If so, are we sure the bounce
> > > buffer is in the first GB?
> > 
> > Yes, it is. This is actually where we spent the last few days, and I
> > found another little related bug in the initialization of the
> > swiotlb-xen but now I am sure the memory is under 1GB (0x34000000-0x38000000)
> 
> Was anything ever resolved on this issue?  It just kind of ended for me,
> and I looked in the main kernel and didn't find anything that looked
> related.

Yes, we have a patch series on the list for the Linux kernel to fix this
issue but it hasn't been merged yet:

https://marc.info/?l=linux-kernel&m=159001831406263&w=2

^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-06-02 19:24                                                   ` Stefano Stabellini
@ 2020-06-03 15:29                                                     ` Corey Minyard
  2020-06-03 15:37                                                       ` Stefano Stabellini
  0 siblings, 1 reply; 45+ messages in thread
From: Corey Minyard @ 2020-06-03 15:29 UTC (permalink / raw)
  To: Stefano Stabellini
  Cc: jgross, Peng Fan, Julien Grall, roman, jeff.kubascik,
	Julien Grall, Nataliya Korovkina, xen-devel, boris.ostrovsky,
	Stefano Stabellini

On Tue, Jun 02, 2020 at 12:24:05PM -0700, Stefano Stabellini wrote:
> On Tue, 2 Jun 2020, Corey Minyard wrote:
> > Snip
> > 
> > > > > > > whether
> > > > > > > this was already done:
> > > > > > >      1) Does the kernel boot on baremetal (i.e without Xen)? This should
> > > > > > > help
> > > > > > > to confirm whether the bug is Xen is related.
> > > > > > 
> > > > > > Yes it boots
> > > > > > 
> > > > > > >      2) Swiotlb should not be necessary for basic dom0 boot on Arm. Did
> > > > > > > you try
> > > > > > > to disable it? This should help to confirm whether swiotlb is the
> > > > > > > problem or
> > > > > > > not.
> > > > > > 
> > > > > > It boots disabling swiotlb-xen
> > > > > 
> > > > > Thank you for the answer! swiotlb-xen should basically be a NOP for dom0. So
> > > > > this suggests swiotlb is doing some transformation on the DMA address.
> > > > > 
> > > > > I have an idea what may have gone wrong. AFAICT, xen-swiotlb seems to assume
> > > > > the DMA address space and CPU address space is the same. Is RPI using the
> > > > > same address space?
> > > > 
> > > > Another question, is the DMA request bounced? If so, are we sure the bounce
> > > > buffer is in the first GB?
> > > 
> > > Yes, it is. This is actually where we spent the last few days, and I
> > > found another little related bug in the initialization of the
> > > swiotlb-xen but now I am sure the memory is under 1GB (0x34000000-0x38000000)
> > 
> > Was anything ever resolved on this issue?  It just kind of ended for me,
> > and I looked in the main kernel and didn't find anything that looked
> > related.
> 
> Yes, we have a patch series on the list for the Linux kernel to fix this
> issue but it hasn't been merged yet:
> 
> https://marc.info/?l=linux-kernel&m=159001831406263&w=2

Just FYI, I pulled the changes on top of
  https://github.com/raspberrypi/linux.git rpi-5.4.y
Along with change
  56e35f9c5b87ec dma-mapping: drop the dev argument to arch_sync_dma_for_*
before the series so it applies on 5.4, and I was able to boot and
create a domU.  So:

Tested-by: Corey Minyard <cminyard@mvista.com>

At least on 5.4.  If you think it would be valuable, I can test on
rpi-5.7.y.  I'll be integrating this in with our Pi Xen yocto layer at
https://github.com/MontaVista-OpenSourceTechnology/meta-raspberrypi-xen

Thanks again,

-corey


^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-06-03 15:29                                                     ` Corey Minyard
@ 2020-06-03 15:37                                                       ` Stefano Stabellini
  2020-06-03 19:49                                                         ` Corey Minyard
  2020-06-03 19:55                                                         ` Roman Shaposhnik
  0 siblings, 2 replies; 45+ messages in thread
From: Stefano Stabellini @ 2020-06-03 15:37 UTC (permalink / raw)
  To: Corey Minyard
  Cc: jgross, Peng Fan, Stefano Stabellini, Julien Grall, roman,
	jeff.kubascik, Julien Grall, Nataliya Korovkina, xen-devel,
	boris.ostrovsky, Stefano Stabellini

[-- Attachment #1: Type: text/plain, Size: 2635 bytes --]

On Wed, 3 Jun 2020, Corey Minyard wrote:
> On Tue, Jun 02, 2020 at 12:24:05PM -0700, Stefano Stabellini wrote:
> > On Tue, 2 Jun 2020, Corey Minyard wrote:
> > > Snip
> > > 
> > > > > > > > whether
> > > > > > > > this was already done:
> > > > > > > >      1) Does the kernel boot on baremetal (i.e without Xen)? This should
> > > > > > > > help
> > > > > > > > to confirm whether the bug is Xen is related.
> > > > > > > 
> > > > > > > Yes it boots
> > > > > > > 
> > > > > > > >      2) Swiotlb should not be necessary for basic dom0 boot on Arm. Did
> > > > > > > > you try
> > > > > > > > to disable it? This should help to confirm whether swiotlb is the
> > > > > > > > problem or
> > > > > > > > not.
> > > > > > > 
> > > > > > > It boots disabling swiotlb-xen
> > > > > > 
> > > > > > Thank you for the answer! swiotlb-xen should basically be a NOP for dom0. So
> > > > > > this suggests swiotlb is doing some transformation on the DMA address.
> > > > > > 
> > > > > > I have an idea what may have gone wrong. AFAICT, xen-swiotlb seems to assume
> > > > > > the DMA address space and CPU address space is the same. Is RPI using the
> > > > > > same address space?
> > > > > 
> > > > > Another question, is the DMA request bounced? If so, are we sure the bounce
> > > > > buffer is in the first GB?
> > > > 
> > > > Yes, it is. This is actually where we spent the last few days, and I
> > > > found another little related bug in the initialization of the
> > > > swiotlb-xen but now I am sure the memory is under 1GB (0x34000000-0x38000000)
> > > 
> > > Was anything ever resolved on this issue?  It just kind of ended for me,
> > > and I looked in the main kernel and didn't find anything that looked
> > > related.
> > 
> > Yes, we have a patch series on the list for the Linux kernel to fix this
> > issue but it hasn't been merged yet:
> > 
> > https://marc.info/?l=linux-kernel&m=159001831406263&w=2
> 
> Just FYI, I pulled the changes on top of
>   https://github.com/raspberrypi/linux.git rpi-5.4.y
> Along with change
>   56e35f9c5b87ec dma-mapping: drop the dev argument to arch_sync_dma_for_*
> before the series so it applies on 5.4, and I was able to boot and
> create a domU.  So:
> 
> Tested-by: Corey Minyard <cminyard@mvista.com>
> 
> At least on 5.4.  If you think it would be valuable, I can test on
> rpi-5.7.y.

I'd feel better adding your Tested-by to my next upstream submission of
the series if you could also test on 5.7. Thank you in advance!


> I'll be integrating this in with our Pi Xen yocto layer at
> https://github.com/MontaVista-OpenSourceTechnology/meta-raspberrypi-xen

That's great!

^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-06-03 15:37                                                       ` Stefano Stabellini
@ 2020-06-03 19:49                                                         ` Corey Minyard
  2020-06-03 19:55                                                         ` Roman Shaposhnik
  1 sibling, 0 replies; 45+ messages in thread
From: Corey Minyard @ 2020-06-03 19:49 UTC (permalink / raw)
  To: Stefano Stabellini
  Cc: jgross, Peng Fan, Julien Grall, roman, jeff.kubascik,
	Julien Grall, Nataliya Korovkina, xen-devel, boris.ostrovsky,
	Stefano Stabellini

On Wed, Jun 03, 2020 at 08:37:09AM -0700, Stefano Stabellini wrote:
> On Wed, 3 Jun 2020, Corey Minyard wrote:
> > On Tue, Jun 02, 2020 at 12:24:05PM -0700, Stefano Stabellini wrote:
> > > On Tue, 2 Jun 2020, Corey Minyard wrote:
> > > > Snip
> > > > 
> > > > > > > > > whether
> > > > > > > > > this was already done:
> > > > > > > > >      1) Does the kernel boot on baremetal (i.e without Xen)? This should
> > > > > > > > > help
> > > > > > > > > to confirm whether the bug is Xen is related.
> > > > > > > > 
> > > > > > > > Yes it boots
> > > > > > > > 
> > > > > > > > >      2) Swiotlb should not be necessary for basic dom0 boot on Arm. Did
> > > > > > > > > you try
> > > > > > > > > to disable it? This should help to confirm whether swiotlb is the
> > > > > > > > > problem or
> > > > > > > > > not.
> > > > > > > > 
> > > > > > > > It boots disabling swiotlb-xen
> > > > > > > 
> > > > > > > Thank you for the answer! swiotlb-xen should basically be a NOP for dom0. So
> > > > > > > this suggests swiotlb is doing some transformation on the DMA address.
> > > > > > > 
> > > > > > > I have an idea what may have gone wrong. AFAICT, xen-swiotlb seems to assume
> > > > > > > the DMA address space and CPU address space is the same. Is RPI using the
> > > > > > > same address space?
> > > > > > 
> > > > > > Another question, is the DMA request bounced? If so, are we sure the bounce
> > > > > > buffer is in the first GB?
> > > > > 
> > > > > Yes, it is. This is actually where we spent the last few days, and I
> > > > > found another little related bug in the initialization of the
> > > > > swiotlb-xen but now I am sure the memory is under 1GB (0x34000000-0x38000000)
> > > > 
> > > > Was anything ever resolved on this issue?  It just kind of ended for me,
> > > > and I looked in the main kernel and didn't find anything that looked
> > > > related.
> > > 
> > > Yes, we have a patch series on the list for the Linux kernel to fix this
> > > issue but it hasn't been merged yet:
> > > 
> > > https://marc.info/?l=linux-kernel&m=159001831406263&w=2
> > 
> > Just FYI, I pulled the changes on top of
> >   https://github.com/raspberrypi/linux.git rpi-5.4.y
> > Along with change
> >   56e35f9c5b87ec dma-mapping: drop the dev argument to arch_sync_dma_for_*
> > before the series so it applies on 5.4, and I was able to boot and
> > create a domU.  So:
> > 
> > Tested-by: Corey Minyard <cminyard@mvista.com>
> > 
> > At least on 5.4.  If you think it would be valuable, I can test on
> > rpi-5.7.y.
> 
> I'd feel better adding your Tested-by to my next upstream submission of
> the series if you could also test on 5.7. Thank you in advance!

Well, rpi-5.7.y fails to bootup completely without Xen, and doesn't even
display any console output on top of Xen :-(.  So there are issues, but
probably not with Xen.

I did try rpi-5.6.y and it works.

-corey

> 
> 
> > I'll be integrating this in with our Pi Xen yocto layer at
> > https://github.com/MontaVista-OpenSourceTechnology/meta-raspberrypi-xen
> 
> That's great!



^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU
  2020-06-03 15:37                                                       ` Stefano Stabellini
  2020-06-03 19:49                                                         ` Corey Minyard
@ 2020-06-03 19:55                                                         ` Roman Shaposhnik
  1 sibling, 0 replies; 45+ messages in thread
From: Roman Shaposhnik @ 2020-06-03 19:55 UTC (permalink / raw)
  To: Stefano Stabellini
  Cc: Juergen Gross, Peng Fan, Julien Grall, Corey Minyard,
	jeff.kubascik, Julien Grall, Nataliya Korovkina, xen-devel,
	Boris Ostrovsky, Stefano Stabellini

Well it goes without saying, but both Julian's branch and your
patchset can have:

Tested-by: Roman Shaposhnik <roman@zededa.com>

Thanks,
Roman.

P.S. For anyone interested I'll be curating the patchset over here:
    https://github.com/rvs/eve/tree/rpi4/pkg/xen/arch/aarch64
    https://github.com/rvs/eve/tree/rpi4/pkg/new-kernel/patches-5.6.x


On Wed, Jun 3, 2020 at 8:37 AM Stefano Stabellini
<sstabellini@kernel.org> wrote:
>
> On Wed, 3 Jun 2020, Corey Minyard wrote:
> > On Tue, Jun 02, 2020 at 12:24:05PM -0700, Stefano Stabellini wrote:
> > > On Tue, 2 Jun 2020, Corey Minyard wrote:
> > > > Snip
> > > >
> > > > > > > > > whether
> > > > > > > > > this was already done:
> > > > > > > > >      1) Does the kernel boot on baremetal (i.e without Xen)? This should
> > > > > > > > > help
> > > > > > > > > to confirm whether the bug is Xen is related.
> > > > > > > >
> > > > > > > > Yes it boots
> > > > > > > >
> > > > > > > > >      2) Swiotlb should not be necessary for basic dom0 boot on Arm. Did
> > > > > > > > > you try
> > > > > > > > > to disable it? This should help to confirm whether swiotlb is the
> > > > > > > > > problem or
> > > > > > > > > not.
> > > > > > > >
> > > > > > > > It boots disabling swiotlb-xen
> > > > > > >
> > > > > > > Thank you for the answer! swiotlb-xen should basically be a NOP for dom0. So
> > > > > > > this suggests swiotlb is doing some transformation on the DMA address.
> > > > > > >
> > > > > > > I have an idea what may have gone wrong. AFAICT, xen-swiotlb seems to assume
> > > > > > > the DMA address space and CPU address space is the same. Is RPI using the
> > > > > > > same address space?
> > > > > >
> > > > > > Another question, is the DMA request bounced? If so, are we sure the bounce
> > > > > > buffer is in the first GB?
> > > > >
> > > > > Yes, it is. This is actually where we spent the last few days, and I
> > > > > found another little related bug in the initialization of the
> > > > > swiotlb-xen but now I am sure the memory is under 1GB (0x34000000-0x38000000)
> > > >
> > > > Was anything ever resolved on this issue?  It just kind of ended for me,
> > > > and I looked in the main kernel and didn't find anything that looked
> > > > related.
> > >
> > > Yes, we have a patch series on the list for the Linux kernel to fix this
> > > issue but it hasn't been merged yet:
> > >
> > > https://marc.info/?l=linux-kernel&m=159001831406263&w=2
> >
> > Just FYI, I pulled the changes on top of
> >   https://github.com/raspberrypi/linux.git rpi-5.4.y
> > Along with change
> >   56e35f9c5b87ec dma-mapping: drop the dev argument to arch_sync_dma_for_*
> > before the series so it applies on 5.4, and I was able to boot and
> > create a domU.  So:
> >
> > Tested-by: Corey Minyard <cminyard@mvista.com>
> >
> > At least on 5.4.  If you think it would be valuable, I can test on
> > rpi-5.7.y.
>
> I'd feel better adding your Tested-by to my next upstream submission of
> the series if you could also test on 5.7. Thank you in advance!
>
>
> > I'll be integrating this in with our Pi Xen yocto layer at
> > https://github.com/MontaVista-OpenSourceTechnology/meta-raspberrypi-xen
>
> That's great!


^ permalink raw reply	[flat|nested] 45+ messages in thread

end of thread, other threads:[~2020-06-03 19:56 UTC | newest]

Thread overview: 45+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-01  2:20 Troubles running Xen on Raspberry Pi 4 with 5.6.1 DomU Roman Shaposhnik
2020-05-01 11:42 ` Corey Minyard
2020-05-02  1:06   ` Roman Shaposhnik
2020-05-02  2:16     ` Corey Minyard
2020-05-02 11:46       ` Julien Grall
2020-05-02 17:35         ` Corey Minyard
2020-05-02 17:48           ` Julien Grall
2020-05-04 12:44             ` Corey Minyard
2020-05-04 20:54               ` Roman Shaposhnik
2020-05-05  3:52                 ` Stefano Stabellini
2020-05-05  5:36                   ` Roman Shaposhnik
2020-05-05 22:34                     ` Stefano Stabellini
2020-05-06  1:25                       ` Boris Ostrovsky
2020-05-06  4:19                       ` Roman Shaposhnik
2020-05-06  5:41                       ` Jürgen Groß
2020-05-06  8:54                         ` Peng Fan
2020-05-06 13:08                           ` Nataliya Korovkina
2020-05-06 13:42                             ` Boris Ostrovsky
2020-05-06 16:14                               ` Nataliya Korovkina
2020-05-06 17:34                                 ` Stefano Stabellini
2020-05-06 21:12                                   ` Roman Shaposhnik
2020-05-13  0:33                                     ` Stefano Stabellini
2020-05-13 10:11                                       ` Julien Grall
2020-05-13 15:11                                         ` Stefano Stabellini
2020-05-13 18:19                                           ` Julien Grall
2020-05-13 18:26                                             ` Julien Grall
2020-05-13 19:51                                               ` Stefano Stabellini
2020-06-02 18:34                                                 ` Corey Minyard
2020-06-02 19:24                                                   ` Stefano Stabellini
2020-06-03 15:29                                                     ` Corey Minyard
2020-06-03 15:37                                                       ` Stefano Stabellini
2020-06-03 19:49                                                         ` Corey Minyard
2020-06-03 19:55                                                         ` Roman Shaposhnik
2020-05-13 19:13                                             ` Roman Shaposhnik
2020-05-13 19:49                                             ` Stefano Stabellini
2020-05-06 17:35                                 ` Boris Ostrovsky
2020-05-06 21:10                                   ` Roman Shaposhnik
2020-05-06 17:16                           ` Stefano Stabellini
2020-05-06 17:32                         ` Stefano Stabellini
2020-05-02 18:48           ` Elliott Mitchell
2020-05-02 19:43             ` Julien Grall
2020-05-06 13:48         ` Corey Minyard
2020-05-06 13:56           ` Julien Grall
2020-05-02  0:05 ` Stefano Stabellini
2020-05-02  1:12   ` Roman Shaposhnik

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.