On Thu, 4 Apr 2024, David E. Box wrote: > The maximum number of bundles in the meter certificate was set to 8 which > is much less than the maximum. Instead, since the bundles appear at the end > of the file, set it based on the remaining file size from the bundle start > position. > > Fixes: 7fdc03a7370f ("tools/arch/x86: intel_sdsi: Add support for reading meter certificates") > Signed-off-by: David E. Box <david.e.box@xxxxxxxxxxxxxxx> > --- > > V3 - Add suggested macros for the number of bundles and bundle size. > > V2 - Split of V1 patch 7 > > tools/arch/x86/intel_sdsi/intel_sdsi.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/tools/arch/x86/intel_sdsi/intel_sdsi.c b/tools/arch/x86/intel_sdsi/intel_sdsi.c > index 2cd92761f171..7eaffcbff788 100644 > --- a/tools/arch/x86/intel_sdsi/intel_sdsi.c > +++ b/tools/arch/x86/intel_sdsi/intel_sdsi.c > @@ -43,7 +43,6 @@ > #define METER_CERT_MAX_SIZE 4096 > #define STATE_MAX_NUM_LICENSES 16 > #define STATE_MAX_NUM_IN_BUNDLE (uint32_t)8 > -#define METER_MAX_NUM_BUNDLES 8 > > #define __round_mask(x, y) ((__typeof__(x))((y) - 1)) > #define round_up(x, y) ((((x) - 1) | __round_mask(x, y)) + 1) > @@ -167,6 +166,11 @@ struct bundle_encoding_counter { > uint32_t encoding; > uint32_t counter; > }; > +#define METER_BUNDLE_SIZE sizeof(struct bundle_encoding_counter) > +#define BUNDLE_COUNT(length) ((length) / METER_BUNDLE_SIZE) > +#define METER_MAX_NUM_BUNDLES \ > + ((METER_CERT_MAX_SIZE - sizeof(struct meter_certificate)) / \ > + sizeof(struct bundle_encoding_counter)) > > struct sdsi_dev { > struct sdsi_regs regs; > @@ -386,9 +390,9 @@ static int sdsi_meter_cert_show(struct sdsi_dev *s) > return -1; > } > > - if (mc->bundle_length > METER_MAX_NUM_BUNDLES * 8) { > - fprintf(stderr, "More than %d bundles: %d\n", > - METER_MAX_NUM_BUNDLES, mc->bundle_length / 8); > + if (mc->bundle_length > METER_MAX_NUM_BUNDLES * METER_BUNDLE_SIZE) { > + fprintf(stderr, "More than %ld bundles: actual %ld\n", > + METER_MAX_NUM_BUNDLES, BUNDLE_COUNT(mc->bundle_length)); > return -1; > } Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@xxxxxxxxxxxxxxx> -- i.