On 2/27/24 4:00 PM, 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: aad129780bae ("platform/x86/intel/sdsi: Add support for reading the current meter state") > Signed-off-by: David E. Box <david.e.box@xxxxxxxxxxxxxxx> > --- > > V2 - Split of V1 patch 7 > > tools/arch/x86/intel_sdsi/intel_sdsi.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/tools/arch/x86/intel_sdsi/intel_sdsi.c b/tools/arch/x86/intel_sdsi/intel_sdsi.c > index 2cd92761f171..a02850a710ee 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,9 @@ struct bundle_encoding_counter { > uint32_t encoding; > uint32_t counter; > }; > +#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; > @@ -387,7 +389,7 @@ static int sdsi_meter_cert_show(struct sdsi_dev *s) > } > > if (mc->bundle_length > METER_MAX_NUM_BUNDLES * 8) { > - fprintf(stderr, "More than %d bundles: %d\n", > + fprintf(stderr, "More than %ld bundles: actual %d\n", > METER_MAX_NUM_BUNDLES, mc->bundle_length / 8); I think you can avoid hardcoding here as well. sizeof(struct bundle_encoding_counter) > return -1; > } -- Sathyanarayanan Kuppuswamy Linux Kernel Developer