[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Fri, 11 Nov 2022 10:48:49 -0800
From: Dave Hansen <dave.hansen@...el.com>
To: Borislav Petkov <bp@...en8.de>,
Jithu Joseph <jithu.joseph@...el.com>
Cc: hdegoede@...hat.com, markgross@...nel.org, tglx@...utronix.de,
mingo@...hat.com, dave.hansen@...ux.intel.com, x86@...nel.org,
hpa@...or.com, gregkh@...uxfoundation.org, ashok.raj@...el.com,
tony.luck@...el.com, linux-kernel@...r.kernel.org,
platform-driver-x86@...r.kernel.org, patches@...ts.linux.dev,
ravi.v.shankar@...el.com, thiago.macieira@...el.com,
athenas.jimenez.gonzalez@...el.com, sohil.mehta@...el.com
Subject: Re: [PATCH v2 10/14] platform/x86/intel/ifs: Add metadata validation
On 11/11/22 10:39, Borislav Petkov wrote:
>> +struct meta_data {
>> + unsigned int meta_type; // metadata type
>> + unsigned int meta_size; // size of this entire struct including hdrs.
>> + unsigned int test_type; // IFS test type
>> + unsigned int fusa_info; // Fusa info
>> + unsigned int total_images; // Total number of images
>> + unsigned int current_image; // Current Image #
>> + unsigned int total_chunks; // Total number of chunks in this image
>> + unsigned int starting_chunk; // Starting chunk number in this image
>> + unsigned int size_per_chunk; // size of each chunk
>> + unsigned int chunks_per_stride; // number of chunks in a stride
>> + unsigned int reserved[54]; // Align to 256 bytes for chunk alignment.
> That looks weird.
>
> __packed and __aligned doesn't work?
... and don't we try to use fixed-size typed in hardware structures,
like u32?
There are also much nicer ways to do this:
union meta_data {
struct {
u32 meta_type; // metadata type
u32 meta_size; // size of ...
};
u8 padding[IFS_CHUNK_ALIGNMENT];
}
That doesn't have any magic linkage between the magic "54" (times 4) and
IFS_CHUNK_ALIGNMENT. It makes the compiler do the hard work for you.
Voila, you have a union that's always IFS_CHUNK_ALIGNMENT in size, No
magic 54's necessary.
Powered by blists - more mailing lists