Re: [PATCH v1 07/24] kvm: arm64: Create nVHE copy of cpu_logical_map

From: Marc Zyngier
Date: Wed Nov 11 2020 - 08:52:18 EST


On 2020-11-11 13:45, David Brazdil wrote:
On Wed, Nov 11, 2020 at 01:29:29PM +0000, Marc Zyngier wrote:
On 2020-11-11 13:03, David Brazdil wrote:
> > > +/*
> > > + * nVHE copy of data structures tracking available CPU cores.
> > > + * Only entries for CPUs that were online at KVM init are populated.
> > > + * Other CPUs should not be allowed to boot because their features were
> > > + * not checked against the finalized system capabilities.
> > > + */
> > > +u64 __ro_after_init __cpu_logical_map[NR_CPUS] = { [0 ... NR_CPUS-1]
> > > = INVALID_HWID };
> >
> > I'm not sure what __ro_after_init means once we get S2 isolation.
>
> It is stretching the definition of 'init' a bit, I know, but I don't see
> what
> your worry is about S2? The intention is to mark this read-only for
> .hyp.text
> at runtime. With S2, the host won't be able to write to it after KVM
> init.
> Obviously that's currently not the case.

More importantly, EL2 can write to it at any time, which is the bit I'm
worried
about, as it makes the annotation misleading.

EL2 can't, at least not accidentally. The hyp memory mapping is PAGE_HYP_RO
(see patch 05).

Ah, I obviously overlooked that. Thanks for setting me straight.

Shouldn't clash with include files. Where fixing the kernel might clash is
all the users of for_each_*_cpu that use an int for the iterator var.

I don't think that's a problem (nobody expects that many CPUs). But if you
are confident that we don't have a problem, no need to change the kernel
itself.

M.
--
Jazz is not dead. It just smells funny...