Hi Kun,
On 3/3/25 23:55, Kun Qin wrote:
Hi Leif & Peter,
Thanks for the comments. I will address them in a v2 patch.
Please also Cc me in your v2 :)
Regards,
Phil.
Regards,
Kun
On Mon, Mar 3, 2025 at 12:44 PM Leif Lindholm
<leif.lindh...@oss.qualcomm.com <mailto:leif.lindh...@oss.qualcomm.com>>
wrote:
Doh! Add the lists back in. (No idea how I dropped them off.)
On Mon, 3 Mar 2025 at 17:02, Leif Lindholm
<leif.lindh...@oss.qualcomm.com
<mailto:leif.lindh...@oss.qualcomm.com>> wrote:
>
> Hi Kun,
>
> Apologies for delay in responding - I was out last week.
> I agree with this addition, since a TPM is a requirement for servers.
>
> However, to help simplify review, could you add some detail in the
> commit message
> as to which SystemReady requirements this resolves and whether this
> implementation
> fulfills all requirements across BSA/SBSA/BBSA?
>
> I agree with Peter that since this is a non-discoverable
component, it
> would make sense
> to step the machine minor version number. A major version bump would
> not be required
> since simply adding this component will not break any existing
> firmware (which will have
> no way of knowing it even exists).
>
> Regards,
>
> Leif
>
> On Tue, 25 Feb 2025 at 07:41, Kun Qin <kuqi...@gmail.com
<mailto:kuqi...@gmail.com>> wrote:
> >
> > From: Kun Qin <ku...@microsoft.com <mailto:ku...@microsoft.com>>
> >
> > Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2625
<https://gitlab.com/qemu-project/qemu/-/issues/2625>
> >
> > This change aims to add a TPM device for SBSA ref machine.
> >
> > The implementation adds a TPM create routine during machine
> > initialization.
> >
> > The backend can be the same as the rest of TPM support, by
using swtpm.
> >
> > Signed-off-by: Kun Qin <kuqi...@gmail.com
<mailto:kuqi...@gmail.com>>
> > ---
> > hw/arm/sbsa-ref.c | 24 ++++++++++++++++++++++++
> > 1 file changed, 24 insertions(+)
> >
> > diff --git a/hw/arm/sbsa-ref.c b/hw/arm/sbsa-ref.c
> > index e720de306419..93eb3d1e363b 100644
> > --- a/hw/arm/sbsa-ref.c
> > +++ b/hw/arm/sbsa-ref.c
> > @@ -28,6 +28,8 @@
> > #include "system/numa.h"
> > #include "system/runstate.h"
> > #include "system/system.h"
> > +#include "system/tpm.h"
> > +#include "system/tpm_backend.h"
> > #include "exec/hwaddr.h"
> > #include "kvm_arm.h"
> > #include "hw/arm/boot.h"
> > @@ -94,6 +96,7 @@ enum {
> > SBSA_SECURE_MEM,
> > SBSA_AHCI,
> > SBSA_XHCI,
> > + SBSA_TPM,
> > };
> >
> > struct SBSAMachineState {
> > @@ -132,6 +135,7 @@ static const MemMapEntry sbsa_ref_memmap[] = {
> > /* Space here reserved for more SMMUs */
> > [SBSA_AHCI] = { 0x60100000, 0x00010000 },
> > [SBSA_XHCI] = { 0x60110000, 0x00010000 },
> > + [SBSA_TPM] = { 0x60120000, 0x00010000 },
> > /* Space here reserved for other devices */
> > [SBSA_PCIE_PIO] = { 0x7fff0000, 0x00010000 },
> > /* 32-bit address PCIE MMIO space */
> > @@ -629,6 +633,24 @@ static void create_smmu(const
SBSAMachineState *sms, PCIBus *bus)
> > }
> > }
> >
> > +static void create_tpm(SBSAMachineState *sbsa, PCIBus *bus)
> > +{
> > + Error *errp = NULL;
> > + DeviceState *dev;
> > +
> > + TPMBackend *be = qemu_find_tpm_be("tpm0");
> > + if (be == NULL) {
> > + error_report("Couldn't find tmp0 backend");
> > + return;
> > + }
> > +
> > + dev = qdev_new(TYPE_TPM_TIS_SYSBUS);
> > + object_property_set_link(OBJECT(dev), "tpmdev",
OBJECT(be), &errp);
> > + object_property_set_str(OBJECT(dev), "tpmdev", be->id, &errp);
> > + sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
> > + sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0,
sbsa_ref_memmap[SBSA_TPM].base);
> > +}
> > +
> > static void create_pcie(SBSAMachineState *sms)
> > {
> > hwaddr base_ecam = sbsa_ref_memmap[SBSA_PCIE_ECAM].base;
> > @@ -686,6 +708,8 @@ static void create_pcie(SBSAMachineState *sms)
> > pci_create_simple(pci->bus, -1, "bochs-display");
> >
> > create_smmu(sms, pci->bus);
> > +
> > + create_tpm(sms, pci->bus);
> > }
> >
> > static void *sbsa_ref_dtb(const struct arm_boot_info *binfo,
int *fdt_size)
> > --
> > 2.43.0
> >