[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v3 5/6] target/arm: Do memory type alignment check when trans
From: |
Jonathan Cameron |
Subject: |
Re: [PATCH v3 5/6] target/arm: Do memory type alignment check when translation disabled |
Date: |
Thu, 18 Apr 2024 18:40:54 +0100 |
On Thu, 18 Apr 2024 09:15:55 +0100
Jonathan Cameron via <qemu-devel@nongnu.org> wrote:
> On Wed, 17 Apr 2024 13:07:35 -0700
> Richard Henderson <richard.henderson@linaro.org> wrote:
>
> > On 4/16/24 08:11, Jonathan Cameron wrote:
> > > On Fri, 1 Mar 2024 10:41:09 -1000
> > > Richard Henderson <richard.henderson@linaro.org> wrote:
> > >
> > >> If translation is disabled, the default memory type is Device, which
> > >> requires alignment checking. This is more optimally done early via
> > >> the MemOp given to the TCG memory operation.
> > >>
> > >> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> > >> Reported-by: Idan Horowitz <idan.horowitz@gmail.com>
> > >> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1204
> > >> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> > >
> > > Hi Richard.
> > >
> > > I noticed some tests I was running stopped booting with master.
> > > (it's a fun and complex stack of QEMU + kvm on QEMU for vCPU Hotplug
> > > kernel work,
> > > but this is the host booting)
> > >
> > > EDK2 build from upstream as of somepoint last week.
> > >
> > > Bisects to this patch.
> > >
> > > qemu-system-aarch64 -M virt,gic-version=3,virtualization=true -m
> > > 4g,maxmem=8G,slots=8 -cpu cortex-a76 -smp
> > > cpus=4,threads=2,clusters=2,sockets=1 \
> > > -kernel Image \
> > > -drive if=none,file=full.qcow2,format=qcow2,id=hd \
> > > -device ioh3420,id=root_port1 -device virtio-blk-pci,drive=hd \
> > > -netdev user,id=mynet,hostfwd=tcp::5555-:22 -device
> > > virtio-net-pci,netdev=mynet,id=bob \
> > > -nographic -no-reboot -append 'earlycon root=/dev/vda2 fsck.mode=skip
> > > tp_printk' \
> > > -monitor telnet:127.0.0.1:1235,server,nowait -bios QEMU_EFI.fd \
> > > -object memory-backend-ram,size=4G,id=mem0 \
> > > -numa node,nodeid=0,cpus=0-3,memdev=mem0
> > >
> > > Symptoms: Nothing on console from edk2 which is built in debug mode so is
> > > normally very noisy.
> > > No sign of anything much happening at all :(
> >
> > This isn't a fantastic bug report.
> >
> > (1) If it doesn't boot efi, then none of the -kernel parameters are
> > necessary.
> > (2) I'd be surprised if the full.qcow2 drive parameters are necessary
> > either.
> > But if they are, what contents? Is a new empty drive sufficient, just
> > enough to send the bios through the correct device initialization?
> > (3) edk2 build from ...
> > Well, this is partly edk2's fault, as the build documentation is awful.
> > I spent an entire afternoon trying to figure it out and gave up.
> >
> > I will say that the edk2 shipped with qemu does work, so... are you
> > absolutely
> > certain that it isn't a bug in edk2 since then? Firmware bugs are exactly
> > what
> > that patch is supposed to expose, as requested by issue #1204.
> >
> > I'd say you should boot with "-d int" and see what kind of interrupts
> > you're getting very
> > early on. I suspect that you'll see data aborts with ESR xx/yy where the
> > last 6 bits of
> > yy are 0x21 (alignment fault).
>
> Hi Richard,
>
> Sorry for lack of details, I was aware it wasn't great and should have stated
> I planned
> to come back with more details when I had time to debug. Snowed under so for
> now I've
> just dropped back to 8.2 and will get back to this perhaps next week.
+CC EDK2 list and Gerd.
Still not a thorough report but some breadcrumbs.
May be something about my local build setup as the shipped EDK2 succeeds,
but the one I'm building via
uefi-tools/edk2-build.sh armvirtqemu64
(some aged instructions here that are more or less working still)
https://people.kernel.org/jic23/
Indeed starts out with some alignment faults.
Gerd, any ideas? Maybe I needs something subtly different in my
edk2 build? I've not looked at this bit of the qemu infrastructure
before - is there a document on how that image is built?
As Richard observed, EDK2 isn't the simplest thing to build - I've
been using uefitools for this for a long time, so maybe I missed some
new requirement?
Build machine is x86_64 ubuntu, gcc 12.2.0.
I need to build it because of some necessary tweaks to debug a
PCI enumeration issue in Linux. (these tests were without those
tweaks)
As Richard observed, most of the command line isn't needed.
qemu-system-aarch64 -M virt,virtualization=true, -m 4g -cpu cortex-a76 \
-bios QEMU_EFI.fd -d int
Jonathan
>
> Jonathan
>
> >
> >
> > r~
>
>