On Tue, 2024-04-16 at 15:13 +0100, Daniel P. Berrangé wrote:
> On Wed, Apr 03, 2024 at 12:11:32PM +0100, Roy Hopkins wrote:
> > The IGVM library allows Independent Guest Virtual Machine files to be
> > parsed and processed. IGVM files are used to configure guest memory
> > layout, initial processor state and other configuration pertaining to
> > secure virtual machines.
> 
> Looking at the generated header file for the IGVM library, I see
> some quite bad namespace pollution. eg igvm_defs.h has:
> 
> typedef uint64_t u64_le;
> typedef uint32_t u32_le;
> 
> #define UINT32_FLAGS_VALUE(x) *((uint32_t*)&(x))
> 
> #define MAKE_INVALID_IMPL(x, y) x##y
> #define MAKE_INVALID(x, y) MAKE_INVALID_IMPL(x, y)
> #define INVALID MAKE_INVALID(INVALID_, __COUNTER__)
> 
> enum IgvmPageDataType {
>   NORMAL = 0,
>   SECRETS = 1,
>   CPUID_DATA = 2,
>   CPUID_XF = 3,
> };
> 
> enum IgvmPlatformType {
>   NATIVE = 0,
>   VSM_ISOLATION = 1,
>   SEV_SNP = 2,
>   TDX = 3,
> };
> 
> 
> 
> enum IgvmVariableHeaderType {
>   INVALID = 0,
>   ...
> }
> 
> There are soo many more examples in igvm_defs.h that I won't
> list them all here.
> 
> 
> These are all way too generic as names to be exposing in library
> header file. We may be lucky right now that these definitions
> don't clash with anything else defined in the compilation namespace
> of the consuming application, but that's a bad bet to make long
> term.
> 
> IMHO this really needs fixing before there's any use of this igvm
> library, since fixing it will be a backwards-incompatible change.
> 
> Essentially everything in the header needs to have an 'IGVM/Igvm/igvm'
> prefix on it.
> 
> With regards,
> Daniel

Daniel,

I've just submitted a patch for the IGVM C library to fix this, ensuring
everything is now uniquely identified with an IGVM_/Igvm_ prefix and fixing some
of the other issues in the generated header file:
https://github.com/microsoft/igvm/pull/52

I'll update this with the changes once merged.

Thanks,
Roy

Reply via email to