Hi Jerry,

On Wed, 14 May 2025 16:29:49 -0600, Jerry Hoemann wrote:
> OEM Type 193: Other ROM Info.
> 
> Signed-off-by: Jerry Hoemann <jerry.hoem...@hpe.com>
> ---
>  dmioem.c | 31 +++++++++++++++++++++++++++++++
>  1 file changed, 31 insertions(+)
> 
> diff --git a/dmioem.c b/dmioem.c
> index ffbcd95..f158a77 100644
> --- a/dmioem.c
> +++ b/dmioem.c
> @@ -1001,6 +1001,37 @@ static int dmi_decode_hp(const struct dmi_header *h)
>  
>       switch (h->type)
>       {
> +             case 193:
> +                     /*
> +                      * Vendor Specific: Other ROM Info
> +                      *
> +                      * Offset |  Name      | Width | Description
> +                      * -------------------------------------
> +                      *  0x00  | Type       | BYTE  | 0xC1, ROM Structure 
> Indicator
> +                      *  0x01  | Length     | BYTE  | Length of structure
> +                      *  0x02  | Handle     | WORD  | Unique handle
> +                      *  0x04  | ROM        | BYTE  | 01: Redundant ROM 
> installed
> +                      *  0x05  | ROM vers   | STRING| Version of the 
> Redundant ROM
> +                      *  0x06  | Reserved   | BYTE  | Reserved in Gen9 
> forward
> +                      *  0x07  | OEM ROM    | STRING| If not blank, OEM ROM 
> binary file name
> +                      *  0x08  | OEM Date   | STRING| If not blank, OEM ROM 
> binary build date
> +                      */
> +                     if (gen < G9) return 0;
> +                     pr_handle_name("%s ProLiant Other ROM Info", company);
> +                     if (h->length < 0x09) break;
> +                     if ((gen < G12) && data[0x04])

Don't you want to mask with 0x01 to explicitly check bit 0? I imagine
the other bits may be used for something else in the future.

> +                             pr_attr("Redundant ROM Version", "%s", 
> dmi_string(h, data[0x05]));
> +                     if (data[0x07])
> +                     {
> +                             const char * str = dmi_string(h, data[0x07]);
> +                             if (str && *str && *str++ != ' ' && *str && 
> *str != ' ')

dmi_string() can't return NULL so the first test isn't needed.

For the rest, I think strncmp(str, "  ", 2) would be more readable. If
you still prefer to open-code it, note that you could use str[0] to
test the first char and str[1] to test the second char, which would
make the intentions more obvious. Both options would let you reuse str
in pr_attr().

(Personally I would only test the first char as I can't imagine a valid
filename starting with a space, but you'll know better.)

You can tell me what you prefer and I'll edit before committing, if you
don't want to resend.

> +                             {
> +                                     pr_attr("OEM ROM Binary Filename", 
> "%s", dmi_string(h, data[0x07]));
> +                                     pr_attr("OEM ROM Binary Build Date", 
> "%s", dmi_string(h, data[0x08]));
> +                             }
> +                     }
> +                     break;
> +
>               case 194:
>                       /*
>                        * Vendor Specific: Super IO Enable/Disable Features

Thanks,
-- 
Jean Delvare
SUSE L3 Support

Reply via email to