From: "Philippe Mathieu-Daudé" <philmd@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Philippe Mathieu-Daudé" <f4bug@amsat.org>,
"Andrew Baumann" <Andrew.Baumann@microsoft.com>,
qemu-arm@nongnu.org,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@redhat.com>,
"Guenter Roeck" <linux@roeck-us.net>
Subject: [Qemu-devel] [RFC PATCH 0/2] hw/char/bcm2835_aux: Provide full 16550 UART support
Date: Tue, 20 Aug 2019 14:34:15 +0200 [thread overview]
Message-ID: <20190820123417.27930-1-philmd@redhat.com> (raw)
Hi,
Since there has been some activity on the list asking about
Rasberry PI USB support, I had a look a some previous unfinished
work and rebased it to share, in case it helps hobbyist interested
in improving these machines.
This series is some proof-of-concept on improving the AUX UART
support. See the commit description for various TODO/questions.
This can be tested using files documented by Peter Maydell in
his blog post:
https://translatedcode.wordpress.com/2018/04/25/debian-on-qemus-raspberry-pi-3-model/
And using the kernel command line arguments suggested by Guenter Roeck:
qemu-system-aarch64 -M raspi3 -m 1024 \
-kernel raspi3/bootpart/vmlinuz-4.14.0-3-arm64 \
-initrd raspi3/bootpart/initrd.img-4.14.0-3-arm64 \
-dtb raspi3/bootpart/bcm2837-rpi-3-b.dtb \
-append 'earlycon=uart8250,mmio32,0x3f215040 rdinit=/sbin/init panic=-1 console=ttyS1,115200' \
-drive file=raspi3/2018-01-08-raspberry-pi-3-buster-PREVIEW.img,format=raw,if=sd \
-serial null -serial stdio \
-d unimp,guest_errors -trace bcm283\*
27459@1566304158.228297:bcm2835_sdhost_edm_change (device reset) EDM now 0xc60f
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 4.14.0-3-arm64 (debian-kernel@lists.debian.org) (gcc version 7.2.0 (Debian 7.2.0-18)) #1 SMP Debian 4.14.12-2 (2018-01-06)
[ 0.000000] Boot CPU: AArch64 Processor [410fd034]
[ 0.000000] Machine model: Raspberry Pi 3 Model B
[ 0.000000] earlycon: uart8250 at MMIO32 0x000000003f215040 (options '')
[ 0.000000] bootconsole [uart8250] enabled
[ 0.000000] efi: Getting EFI parameters from FDT:
[ 0.000000] efi: UEFI not found.
[ 0.000000] cma: Reserved 64 MiB at 0x0000000038000000
[ 0.000000] NUMA: No NUMA configuration found
[ 0.000000] NUMA: Faking a node at [mem 0x0000000000000000-0x000000003bffffff]
[ 0.000000] NUMA: NODE_DATA [mem 0x37fdf180-0x37fe0c7f]
[ 0.000000] Zone ranges:
[ 0.000000] DMA [mem 0x0000000000000000-0x000000003bffffff]
[ 0.000000] Normal empty
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000000000000-0x000000003bffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000003bffffff]
[ 0.000000] random: fast init done
[ 0.000000] percpu: Embedded 22 pages/cpu @ffff800037f74000 s51608 r8192 d30312 u90112
[ 0.000000] Detected VIPT I-cache on CPU0
[ 0.000000] CPU features: enabling workaround for ARM erratum 845719
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 241920
[ 0.000000] Policy zone: DMA
[ 0.000000] Kernel command line: earlycon=uart8250,mmio32,0x3f215040 rdinit=/sbin/init panic=-1 console=ttyS1,115200
[ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[ 0.000000] Memory: 864772K/983040K available (8252K kernel code, 1448K rwdata, 2692K rodata, 4480K init, 601K bss, 52732K reserved, 65536K cma-reserved)
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] modules : 0xffff000000000000 - 0xffff000008000000 ( 128 MB)
[ 0.000000] vmalloc : 0xffff000008000000 - 0xffff7dffbfff0000 (129022 GB)
[ 0.000000] .text : 0xffff000008080000 - 0xffff000008890000 ( 8256 KB)
[ 0.000000] .rodata : 0xffff000008890000 - 0xffff000008b40000 ( 2752 KB)
[ 0.000000] .init : 0xffff000008b40000 - 0xffff000008fa0000 ( 4480 KB)
[ 0.000000] .data : 0xffff000008fa0000 - 0xffff00000910a200 ( 1449 KB)
[ 0.000000] .bss : 0xffff00000910a200 - 0xffff0000091a0910 ( 602 KB)
[ 0.000000] fixed : 0xffff7dfffe7fd000 - 0xffff7dfffec00000 ( 4108 KB)
[ 0.000000] PCI I/O : 0xffff7dfffee00000 - 0xffff7dffffe00000 ( 16 MB)
[ 0.000000] vmemmap : 0xffff7e0000000000 - 0xffff800000000000 ( 2048 GB maximum)
[ 0.000000] 0xffff7e0000000000 - 0xffff7e0000f00000 ( 15 MB actual)
[ 0.000000] memory : 0xffff800000000000 - 0xffff80003c000000 ( 960 MB)
[ 0.000000] ftrace: allocating 30760 entries in 121 pages
[ 0.000000] Hierarchical RCU implementation.
[ 0.000000] RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=4.
[ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
bcm2836_control_write: Bad offset 0
bcm2836_control_write: Bad offset 8
[ 0.000000] arch_timer: WARNING: Invalid trigger for IRQ2, assuming level low
[ 0.000000] arch_timer: WARNING: Please fix your firmware
[ 0.000000] arch_timer: cp15 timer(s) running at 62.50MHz (phys).
[ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x1cd42e208c, max_idle_ns: 881590405314 ns
[ 0.001154] sched_clock: 56 bits at 62MHz, resolution 16ns, wraps every 4398046511096ns
[ 0.068563] Console: colour dummy device 80x25
[ 0.081268] Calibrating delay loop (skipped), value calculated using timer frequency.. 125.00 BogoMIPS (lpj=250000)
[ 0.083225] pid_max: default: 32768 minimum: 301
[ 0.094763] Security Framework initialized
[ 0.096254] Yama: disabled by default; enable with sysctl kernel.yama.*
[ 0.113385] AppArmor: AppArmor initialized
[ 0.127602] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes)
[ 0.135573] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes)
[ 0.137705] Mount-cache hash table entries: 2048 (order: 2, 16384 bytes)
[ 0.138861] Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes)
[ 0.369415] ASID allocator initialised with 65536 entries
[ 0.376083] Hierarchical SRCU implementation.
[ 0.437838] EFI services will not be available.
[ 0.462860] smp: Bringing up secondary CPUs ...
[ 0.487588] Detected VIPT I-cache on CPU1
[ 0.490893] arch_timer: WARNING: Invalid trigger for IRQ2, assuming level low
[ 0.490944] arch_timer: WARNING: Please fix your firmware
[ 0.491388] CPU1: Booted secondary processor [410fd034]
[ 0.546624] Detected VIPT I-cache on CPU2
[ 0.547535] arch_timer: WARNING: Invalid trigger for IRQ2, assuming level low
[ 0.547632] arch_timer: WARNING: Please fix your firmware
[ 0.548032] CPU2: Booted secondary processor [410fd034]
[ 0.574539] Detected VIPT I-cache on CPU3
[ 0.575101] arch_timer: WARNING: Invalid trigger for IRQ2, assuming level low
[ 0.575150] arch_timer: WARNING: Please fix your firmware
[ 0.575367] CPU3: Booted secondary processor [410fd034]
[ 0.578684] smp: Brought up 1 node, 4 CPUs
[ 0.584515] SMP: Total of 4 processors activated.
[ 0.585656] CPU features: detected feature: 32-bit EL0 Support
[ 0.603653] CPU: All CPU(s) started at EL2
[ 0.607831] alternatives: patching kernel code
[ 0.695440] devtmpfs: initialized
[ 0.806025] Registered cp15_barrier emulation handler
[ 0.806837] Registered setend emulation handler
[ 0.816246] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[ 0.818294] futex hash table entries: 1024 (order: 5, 131072 bytes)
[ 0.864640] pinctrl core: initialized pinctrl subsystem
[ 0.929209] DMI not present or invalid.
[ 0.955714] NET: Registered protocol family 16
[ 1.063727] cpuidle: using governor ladder
[ 1.068747] cpuidle: using governor menu
[ 1.079439] vdso: 2 pages (1 code @ ffff000008896000, 1 data @ ffff000008fa5000)
[ 1.081031] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[ 1.127784] DMA: preallocated 256 KiB pool for atomic allocations
[ 1.137470] Serial: AMBA PL011 UART driver
[ 1.195277] uart-pl011 3f201000.serial: could not find pctldev for node /soc/gpio@7e200000/uart0_gpio32, deferring probe
[ 1.398312] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[ 1.436505] ACPI: Interpreter disabled.
[ 1.461028] vgaarb: loaded
[ 1.473307] EDAC MC: Ver: 3.0.0
[ 1.481644] dmi: Firmware registration failed.
[ 1.543428] clocksource: Switched to clocksource arch_sys_counter
[ 2.815434] VFS: Disk quotas dquot_6.6.0
[ 2.817156] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[ 2.850332] AppArmor: AppArmor Filesystem Enabled
[ 2.854670] pnp: PnP ACPI: disabled
[ 3.035675] NET: Registered protocol family 2
[ 3.071712] TCP established hash table entries: 8192 (order: 4, 65536 bytes)
[ 3.073599] TCP bind hash table entries: 8192 (order: 5, 131072 bytes)
[ 3.075011] TCP: Hash tables configured (established 8192 bind 8192)
[ 3.082515] UDP hash table entries: 512 (order: 2, 16384 bytes)
[ 3.083954] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[ 3.094971] NET: Registered protocol family 1
[ 3.123313] Unpacking initramfs...
Here it hangs, even with CPRMAN patch from Guenter:
https://lists.gnu.org/archive/html/qemu-devel/2018-07/msg03153.html
Regards,
Phil.
Philippe Mathieu-Daudé (2):
hw/char/serial: Add a helper to set the divisor register
hw/char/bcm2835_aux: Provide full 16550 UART support
hw/arm/bcm2835_peripherals.c | 2 -
hw/char/bcm2835_aux.c | 211 +++-------------------------------
hw/char/serial.c | 6 +
include/hw/char/bcm2835_aux.h | 7 +-
include/hw/char/serial.h | 1 +
5 files changed, 27 insertions(+), 200 deletions(-)
--
2.20.1
next reply other threads:[~2019-08-20 12:36 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-20 12:34 Philippe Mathieu-Daudé [this message]
2019-08-20 12:34 ` [Qemu-devel] [PATCH 1/2] hw/char/serial: Add a helper to set the divisor register Philippe Mathieu-Daudé
2019-08-20 12:34 ` [Qemu-devel] [RFC PATCH 2/2] hw/char/bcm2835_aux: Provide full 16550 UART support Philippe Mathieu-Daudé
2019-08-20 12:58 ` [Qemu-devel] [RFC PATCH 0/2] " Philippe Mathieu-Daudé
2019-08-20 14:31 ` Guenter Roeck
2019-08-20 14:34 ` Peter Maydell
2019-08-20 14:45 ` Guenter Roeck
2019-08-20 14:53 ` Guenter Roeck
2019-08-20 15:08 ` Philippe Mathieu-Daudé
2019-08-20 15:16 ` Guenter Roeck
2019-09-23 13:26 ` Peter Maydell
2019-09-23 15:39 ` Philippe Mathieu-Daudé
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190820123417.27930-1-philmd@redhat.com \
--to=philmd@redhat.com \
--cc=Andrew.Baumann@microsoft.com \
--cc=f4bug@amsat.org \
--cc=linux@roeck-us.net \
--cc=marcandre.lureau@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).