On Fri, 2021-11-26 at 16:43 +0100, Martin Kletzander wrote: > On Wed, Nov 10, 2021 at 10:24:25PM +0800, Luke Yue wrote: > > Currently it will only be used in the test driver. > > > > Signed-off-by: Luke Yue <lukedyue@xxxxxxxxx> > > --- > > src/conf/domain_conf.c | 67 > > ++++++++++++++++++++++++++++++++++++++++ > > src/conf/domain_conf.h | 6 ++++ > > src/libvirt_private.syms | 2 ++ > > 3 files changed, 75 insertions(+) > > > > diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c > > index 3193120b79..512bfab9e9 100644 > > --- a/src/conf/domain_conf.c > > +++ b/src/conf/domain_conf.c > > @@ -16931,6 +16931,73 @@ virDomainVsockDefEquals(const > > virDomainVsockDef *a, > > } > > > > > > +static bool > > +virDomainTPMDefEquals(const virDomainTPMDef *a, > > + const virDomainTPMDef *b) > > +{ > > + if (a->type != b->type) > > + return false; > > + > > + if (a->model != b->model) > > + return false; > > + > > + if (a->version != b->version) > > + return false; > > + > > + if (a->type == VIR_DOMAIN_TPM_TYPE_PASSTHROUGH) { > > + if (STRNEQ_NULLABLE(a- > > >data.passthrough.source.data.file.path, > > + b- > > >data.passthrough.source.data.file.path)) > > This will not compile as `source` is a pointer here. > I just noticed in commit 42b0000, the `source` was changed to be a pointer, will fix in next version. > > + return false; > > + } else { > > + if (a->data.emulator.hassecretuuid != b- > > >data.emulator.hassecretuuid) > > + return false; > > + > > + if (a->data.emulator.hassecretuuid == true && > > + memcmp(a->data.emulator.secretuuid, > > + b->data.emulator.secretuuid, > > + VIR_UUID_BUFLEN)) > > + return false; > > + > > + if (a->data.emulator.persistent_state != > > + b->data.emulator.persistent_state) > > Also it would make sense to try to detach a device without all the > information, e.g. those that libvirt itself adds by default if they > are > missing, or in this case when persistent_state is set to the > specified > default (in formatdomain.html this is said to be "no" currently, but > not > filled in). Luckily the test driver itself does not do any of this, > so > I guess it's fine here. Hmm, I will look into how libvirt adds these default devices and refine this function in next version or in the future. Thanks, Luke