Re: Debian/Xen on ARM: How to identify source of an unhandled SMC call during boot?
On Wed, 2024-01-31 at 21:59 +0100, hw wrote:
> On Wed, 2024-01-31 at 08:02 +0100, Paul Leiber wrote:
> > Am 25.01.2024 um 22:28 schrieb Paul Leiber:
> > [...]
> > > Some people on xen-devel pointed out to me two unhandled SMC calls in
> > > the boot logs which could be the root of the problem. I am now trying to
> > > find out where these calls come from to get closer to the root cause.
> > > The suspected calls are the following ones:
> > >
> > > (XEN) d0v0 Unhandled SMC/HVC: 0x84000050
> > > (XEN) d0v0 Unhandled SMC/HVC: 0x8600ff01
> > >
> > > These calls happen during the Dom0 boot process, so it's something from
> > > inside Linux and nothing Xen related, I've been told. The current
> > > working hypothesis is that the calls are trying to find some module not
> > > emulated by Xen and are therefore failing, leading to Linux waiting for
> > > the reply, and subsequently to the Xen watchdog triggering and rebooting.
> > >
> > > From what I could find out in ARM documentation, the unhandled SMC
> > > calls probably have the following purpose:
> > >
> > > 0x84000050 = TRNG_VERSION, returns the implemented TRNG (True Random
> > > Number Generator) ABI version [2]
> > > 0x8600ff01 = Call UID Query for Vendor Specific Hypervisor Service,
> > > Returns a unique identifier of the service provider [3]
> > >
> > > The more likely cause is the second call to the address 0x8600ff01.
> > >
> > > Now I simply have no idea how to find out where in the Linux boot
> > > process these calls are made. I tried poking into the Linux sources a
> > > bit, and I couldn't find an exact match for these call addresses, so I
> > > assume these addresses are assembled from different parts. There are
> > > some matches for "0x8600" and for "ff01", but I couldn't identify if
> > > these matches are relevant.
> > >
> > > I tried to find out if strace could help, but from what I understand,
> > > this is related to commands coming from userspace, so I am not sure that
> > > strace helps during the boot process.
> > >
> > > I'd appreciate it if somebody more knowledgeable would point me in the
> > > right direction. If more information is needed, I can provide it.
>
> I would search for the message 'Unhandled SMC/HVC' itself, or even for
> 'Unhandled', not for the address. The address is probably determined
> at runtime and not hardcoded.
I sure those hex values aren't 'addresses' but the ID's for the secure
monitor calls Paul already identified.
Looking at the Linux sources I found the header for constructing these
monitor calls: include/linux/arm-smccc.h
So it might be worth looking at the files that include that. There are
various drivers for firmware, and a watchdog driver amongst other
things... drivers/watchdog/arm_smc_wdt.c
--
Tixy
Reply to: