Hi,

> > - With relatively many elements fitting into a single HOB, on most
> > platforms, just one HOB is going to be used. While that may be good for
> > performance, it is not good for code coverage (testing). The quirky
> > indexing method will not be exercised by most platforms.
> 
> TRUE so I propose that the first version of the code change only expects
> the HOB.NumberOfCpus equals to the NumberOfCpus returned from MP
> service, meaning the code logic only supports single instance of the HOB.
> When a platform that contains >8000 cpu threads resulting in multiple HOBs
> produced, the expectation will break and remind us that the CpuSmm driver
> needs to update to handle multiple HOBs.

Given that this is already the second case where we hit the 64k size
limit and I expect it will not be the last one:  I think it makes sense
to introduce a generic and reusable concept of chunked HOBs, so you can
add helper functions to HobLib for splitting and reassembling, with a
struct along the lines of:

typedef struct {
        // offset and size of this particular chunk
        UINT32  ChunkOffset;
        UINT32  ChunkSize;

        // number of chunks and size of all chunks combined.
        UINT32  ChunkCount;
        UINT32  TotalSize;

        // chunk data
        UINT8   Data[0];
} EFI_HOB_CHUNK;

take care,
  Gerd



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


Reply via email to