On Fri, 18 Nov 2022 at 11:32, PierreGondois <pierre.gond...@arm.com> wrote:
>
>
>
> On 11/18/22 11:14, Ard Biesheuvel wrote:
> > On Fri, 18 Nov 2022 at 11:10, Sami Mujawar <sami.muja...@arm.com> wrote:
> >>
> >> Hi Ard,
> >>
> >> Please find my response inline marked [SAMI].
> >>
> >> Regards,
> >>
> >> Sami Mujawar
> >>
> >> On 18/11/2022, 09:56, "Ard Biesheuvel" <a...@kernel.org> wrote:
> >>
> >>      On Wed, 16 Nov 2022 at 16:02, PierreGondois <pierre.gond...@arm.com> 
> >> wrote:
> >>      >
> >>      > From: Pierre Gondois <pierre.gond...@arm.com>
> >>      >
> >>      > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=4151
> >>      >
> >>      > The EFI_RNG_PROTOCOL can advertise multiple algorithms through
> >>      > Guids. The PcdCpuRngSupportedAlgorithm contains a Guid that
> >>      > can be configured. It represents the algorithm used in RngLib.
> >>      > PcdCpuRngSupportedAlgorithm is set to the Zero Guid for KvmTool.
> >>      >
> >>      > When running KvmTool on a platform platform only having the RngLib,
> >>      > the only Guid available for EFI_RNG_PROTOCOL will be the zero Guid.
> >>      >
> >>      > To select the default algorithm in EFI_RNG_PROTOCOL.GetRng():
> >>      > a. Zero Guids are skipped
> >>      > b. If no algorithm is found, an ASSERT is triggered
> >>      >
> >>      > To allow using the RngLib to be used for the case above, Zero Guids
> >>      > should not be skipped (a.).
> >>      > If no algorithm is found, don't prevent from booting on DEBUG builds
> >>      > (b.).
> >>      >
> >>      > Allow Zero Guids to be selected and don't ASSERT if no algorithm is
> >>      > found. Also simplify the selection of the Rng algorithm when the
> >>      > default one is selected by just picking up the first element of
> >>      > mAvailableAlgoArray.
> >>      >
> >>      > Reported-by: Sami Mujawar <sami.muja...@arm.com>
> >>      > Signed-off-by: Pierre Gondois <pierre.gond...@arm.com>
> >>
> >>      I am still confused by this.
> >>
> >>      Does this mean we might register the RNG protocol if we don't have
> >>      anything to back it up?
> >> [SAMI] From a Guest firmware implementation perspective, we do not know 
> >> the available RNG source.
> >> It may be CPU RNG, Arm FW TRNG or VIRTIO RNG.
> >> I would assume either one of CPU RNG or Arm FW TRNG would be implemented 
> >> on the host platform. If none of these are present, we would want to fall 
> >> back to VIRTIO RNG.
> >>
> >> Considering this, I think we should not register the EFI_RNG_PRTOCOL if no 
> >> supported algorithms are present.
> >>
> >> The other argument would be that the protocol allows discovery of 
> >> supported RNG source. But looking how this is consumed in Linux, I think 
> >> it is better to not register EFI_RNG_PRTOCOL if no supported algorithms 
> >> are present.
> >>
> >> Please do let me know your thoughts.
> >
> > Agreed. I am adding support for the TRNG to the QEMU firmware, and if
> > this is supported, there is really no point in attaching a driver to
> > virtio-rng as well.
> >
> > This means that checking for the existence of the EFI_RNG_PROTOCOL
> > should be sufficient to decide whether or not install another one.
>
> Hello,
> There would maybe be a case where the consumer explicitly requests the
> gEfiRngAlgorithmRaw GUID and the RngDxe doesn't detect it. So there would be
> two EFI_RNG_PRTOCOL registered on different handles with different
> algorithms available. I am not sure of what should happen then.
>

Fair point. So in the QEMU case, I should test
- whether EFI_RNG_PROTOCOL exists
- whether it implements the raw flavor

and only in that case, avoid virtio-rng (which only supports raw as well)

> But about the inital point, EFI_RNG_PRTOCOL should indeed not be registered
> if no algorithm is available.
>

Indeed.

And btw, I noticed that the TrngLib has a whole bunch of ASSERT()s
that trigger when trying to use it on QEMU - can we rip those out as
well please?


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#96495): https://edk2.groups.io/g/devel/message/96495
Mute This Topic: https://groups.io/mt/95067856/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to