ACK: [PATCH] acpi: acpidump: constify tables and func args, tidy up source

Alex Hung alex.hung at canonical.com
Mon Dec 9 04:04:27 UTC 2013


On 12/04/2013 09:58 PM, Colin King wrote:
> From: Colin Ian King <colin.king at canonical.com>
> 
> The acpidump tables and functions could do with some constification.
> Also tidy up the source a little.
> 
> Signed-off-by: Colin Ian King <colin.king at canonical.com>
> ---
>  src/acpi/acpidump/acpidump.c | 614 +++++++++++++++++++++----------------------
>  1 file changed, 299 insertions(+), 315 deletions(-)
> 
> diff --git a/src/acpi/acpidump/acpidump.c b/src/acpi/acpidump/acpidump.c
> index c592926..240f6a9 100644
> --- a/src/acpi/acpidump/acpidump.c
> +++ b/src/acpi/acpidump/acpidump.c
> @@ -27,25 +27,27 @@
>  
>  struct fwts_acpidump_field;
>  
> -typedef void (*fwts_acpidump_field_func)(fwts_framework *fw, struct fwts_acpidump_field *info, void *data, int offset);
> -typedef char *(*fwts_acpidump_str_func)(uint64_t val);
> +typedef void (*fwts_acpidump_field_func)(fwts_framework *fw,
> +	const struct fwts_acpidump_field *info, const void *data, const int offset);
> +typedef char *(*fwts_acpidump_str_func)(const uint64_t val);
>  
>  typedef struct fwts_acpidump_field {
> -	char *label;
> -	int   size;
> -	size_t offset;
> -	fwts_acpidump_field_func func;
> -	uint8_t  bit_field_nbits;
> -	uint8_t  bit_field_shift;
> -	char  **strings;
> -	size_t   strings_len;
> -	fwts_acpidump_str_func str_func;
> +	const char	*label;			/* Name of field */
> +	const int 	size;			/* Size of field in struct in bytes */
> +	const size_t	offset;			/* Offset of field from start of struct */
> +	const fwts_acpidump_field_func func;	/* Field dumping function */
> +	const uint8_t 	bit_field_nbits;	/* Number of bits in field to dump */
> +	const uint8_t	bit_field_shift;	/* Shift offset in field */
> +	const char 	**strings;		/* field lookup string table */
> +	const size_t	strings_len;		/* length of strings table (number of entries) */
> +	const fwts_acpidump_str_func str_func;	/* string dumping function */
>  } fwts_acpidump_field;
>  
> -#define FIELD(text, type, field, func, bit_field_nbits, bit_field_shift, strings, strings_len, str_func) \
> -	{						\
> -	text,						\
> -	sizeof(((type*)0)->field),			\
> +/* FIELD maps onto the fields in fwts_acpidump_field */
> +#define FIELD(label, type, field, func, bit_field_nbits, bit_field_shift, strings, strings_len, str_func) \
> +{							\
> +	label,						\
> +	sizeof(((type *)0)->field),			\
>  	offsetof(type, field),				\
>  	func,						\
>  	bit_field_nbits,				\
> @@ -53,7 +55,7 @@ typedef struct fwts_acpidump_field {
>  	strings,					\
>  	strings_len,					\
>  	str_func					\
> -	}
> +}
>  
>  #define FIELD_UINT(text, type, field)			\
>  	FIELD(text, type, field, acpi_dump_uint, 0, 0, NULL, 0, NULL)
> @@ -81,7 +83,10 @@ typedef struct fwts_acpidump_field {
>  
>  #define FIELD_END { NULL, 0, 0, NULL, 0, 0, NULL, 0, NULL}
>  
> -static char *acpi_dump_field_info(char *label, int size, int offset)
> +static char *acpi_dump_field_info(
> +	const char *label,
> +	const int size,
> +	const int offset)
>  {
>  	static char buffer[1024];
>  
> @@ -91,36 +96,42 @@ static char *acpi_dump_field_info(char *label, int size, int offset)
>  	return buffer;
>  }
>  
> -static void acpi_dump_str(fwts_framework *fw, fwts_acpidump_field *info, void *data, int offset)
> +static void acpi_dump_str(
> +	fwts_framework *fw,
> +	const fwts_acpidump_field *info,
> +	const void *data,
> +	const int offset)
>  {
>  	fwts_log_info_verbatum(fw, "%s %*.*s",
>  		acpi_dump_field_info(info->label, info->size, info->offset + offset),
> -		info->size, info->size,(char*)data);
> +		info->size, info->size, (char *)data);
>  }
>  
> -static uint64_t apci_dump_get_uint64_t(fwts_acpidump_field *info, void *data)
> +static uint64_t apci_dump_get_uint64_t(
> +	const fwts_acpidump_field *info,
> +	const void *data)
>  {
> -	uint64_t	ret;
> -	uint64_t	mask = (1ULL<<(uint64_t)info->bit_field_nbits) - 1;
> +	uint64_t ret;
> +	uint64_t mask = (1ULL << (uint64_t)info->bit_field_nbits) - 1;
>  	int i;
>  
>  	switch (info->size) {
>  	case 1:
> -		ret  = (uint64_t)*(uint8_t*)data;
> +		ret  = (uint64_t)*(uint8_t *)data;
>  		break;
>  	case 2:
> -		ret  = (uint64_t)*(uint16_t*)data;
> +		ret  = (uint64_t)*(uint16_t *)data;
>  		break;
>  	case 4:
> -		ret  = (uint64_t)*(uint32_t*)data;
> +		ret  = (uint64_t)*(uint32_t *)data;
>  		break;
>  	case 8:
> -		ret  = (uint64_t)*(uint64_t*)data;
> +		ret  = (uint64_t)*(uint64_t *)data;
>  		break;
>  	default:		
>  		ret = 0;
> -		for (i=0;(i<info->size) && (i<8); i++) {
> -			uint8_t val8 = *(uint8_t*)data++;
> +		for (i = 0; (i < info->size) && (i < 8); i++) {
> +			uint8_t val8 = *(uint8_t *)data++;
>  			ret = (ret << 8) | val8;
>  		}
>  		break;
> @@ -129,10 +140,13 @@ static uint64_t apci_dump_get_uint64_t(fwts_acpidump_field *info, void *data)
>  }
>  
>  
> -static void acpi_dump_uint(fwts_framework *fw, fwts_acpidump_field *info, void *data, int offset)
> +static void acpi_dump_uint(
> +	fwts_framework *fw,
> +	const fwts_acpidump_field *info,
> +	const void *data,
> +	const int offset)
>  {
> -	int i;
> -	int hexdigits = info->size << 1;
> +	int i, hexdigits = info->size << 1;
>  	uint64_t val = apci_dump_get_uint64_t(info, data);
>  
>  	switch (info->size) {
> @@ -141,7 +155,7 @@ static void acpi_dump_uint(fwts_framework *fw, fwts_acpidump_field *info, void *
>  	case 4:
>  	case 8:
>  		if (info->bit_field_nbits) {
> -			hexdigits = (3+info->bit_field_nbits) / 4;
> +			hexdigits = (3 + info->bit_field_nbits) / 4;
>  			fwts_log_info_verbatum(fw, "%57.57s: 0x%*.*" PRIx64, info->label,
>  				hexdigits, hexdigits, val);
>  		} else
> @@ -150,18 +164,22 @@ static void acpi_dump_uint(fwts_framework *fw, fwts_acpidump_field *info, void *
>  				hexdigits, hexdigits, val);
>  		break;
>  	default:		
> -		for (i=0; i<info->size; i++) {
> -			uint8_t val8 = *(uint8_t*)data++;
> -			fwts_log_info_verbatum(fw, "%s 0x%2.2x [%d]", acpi_dump_field_info(info->label, info->size, info->offset + offset), val8, i);
> +		for (i = 0; i < info->size; i++) {
> +			uint8_t val8 = *(uint8_t *)data++;
> +			fwts_log_info_verbatum(fw, "%s 0x%2.2x [%d]",
> +				acpi_dump_field_info(info->label, info->size, info->offset + offset), val8, i);
>  		}
>  		break;
>  	}
>  }
>  
> -static void acpi_dump_uints(fwts_framework *fw, fwts_acpidump_field *info, void *data, int offset)
> +static void acpi_dump_uints(
> +	fwts_framework *fw,
> +	const fwts_acpidump_field *info,
> +	const void *data,
> +	const int offset)
>  {
> -	int n;
> -	int length = info->size;
> +	size_t n, length = info->size;
>  	uint8_t *ptr = (uint8_t *)data;
>  
>          for (n = 0; n < length; n += 8) {
> @@ -179,7 +197,11 @@ static void acpi_dump_uints(fwts_framework *fw, fwts_acpidump_field *info, void
>  	}
>  }
>  
> -static void acpi_dump_guid(fwts_framework *fw, fwts_acpidump_field *info, void *data, int offset)
> +static void acpi_dump_guid(
> +	fwts_framework *fw,
> +	const fwts_acpidump_field *info,
> +	const void *data,
> +	const int offset)
>  {
>  	char guid[37];
>  
> @@ -188,44 +210,67 @@ static void acpi_dump_guid(fwts_framework *fw, fwts_acpidump_field *info, void *
>  		acpi_dump_field_info(info->label, info->size, info->offset + offset), guid);
>  }
>  
> -static void acpi_dump_strings(fwts_framework *fw, fwts_acpidump_field *info, void *data, int offset)
> +static void acpi_dump_strings(
> +	fwts_framework *fw,
> +	const fwts_acpidump_field *info,
> +	const void *data,
> +	const int offset)
>  {
>  	int hexdigits = info->size << 1;
>  	uint64_t val = apci_dump_get_uint64_t(info, data);
>  
> -	fwts_log_info_verbatum(fw, "%s 0x%*.*llx (%s)", acpi_dump_field_info(info->label, info->size, info->offset + offset),
> +	fwts_log_info_verbatum(fw, "%s 0x%*.*" PRIx64 " (%s)",
> +		acpi_dump_field_info(info->label, info->size, info->offset + offset),
>  		hexdigits, hexdigits,
> -		(unsigned long long)val, val > info->strings_len ? "Unknown" : info->strings[val]);
> +		val, val > info->strings_len ? "Unknown" : info->strings[val]);
>  }
>  
> -static void acpi_dump_string_func(fwts_framework *fw, fwts_acpidump_field *info, void *data, int offset)
> +static void acpi_dump_string_func(
> +	fwts_framework *fw,
> +	const fwts_acpidump_field *info,
> +	const void *data,
> +	const int offset)
>  {
>  	int hexdigits = info->size << 1;
>  	uint64_t val = apci_dump_get_uint64_t(info, data);
>  
> -	fwts_log_info_verbatum(fw, "%s 0x%*.*llx (%s)", acpi_dump_field_info(info->label, info->size, info->offset + offset),
> +	fwts_log_info_verbatum(fw, "%s 0x%*.*" PRIx64 " (%s)",
> +		acpi_dump_field_info(info->label, info->size, info->offset + offset),
>  		hexdigits, hexdigits,
> -		(unsigned long long)val, info->str_func(val));
> +		val, info->str_func(val));
>  }
>  
> -static void acpi_dump_table_fields(fwts_framework *fw, uint8_t *data, fwts_acpidump_field *fields, int offset, size_t table_len)
> +static void acpi_dump_table_fields(
> +	fwts_framework *fw,
> +	const uint8_t *data,
> +	const fwts_acpidump_field *fields,
> +	const int offset,
> +	const size_t table_len)
>  {
> -	fwts_acpidump_field *field = fields;
> +	const fwts_acpidump_field *field;
>  
>  	for (field = fields; field->label != NULL; field++)
>  		if ((field->offset + field->size) <= table_len)
>  			field->func(fw, field, data + field->offset, offset);
>  }
>  
> -static void __acpi_dump_table_fields(fwts_framework *fw, uint8_t *data, fwts_acpidump_field *fields, size_t offset)
> +static void __acpi_dump_table_fields(
> +	fwts_framework *fw,
> +	const uint8_t *data,
> +	const fwts_acpidump_field *fields,
> +	const size_t offset)
>  {
> -	fwts_acpidump_field *field = fields;
> +	const fwts_acpidump_field *field;
>  
>  	for (field = fields; field->label != NULL; field++)
>  		field->func(fw, field, data + field->offset, offset);
>  }
>  
> -static void acpi_dump_raw_data(fwts_framework *fw, uint8_t *data, size_t length, size_t offset)
> +static void acpi_dump_raw_data(
> +	fwts_framework *fw,
> +	const uint8_t *data,
> +	const size_t length,
> +	const size_t offset)
>  {
>          size_t n;
>  
> @@ -237,13 +282,13 @@ static void acpi_dump_raw_data(fwts_framework *fw, uint8_t *data, size_t length,
>          }
>  }
>  
> -static void acpi_dump_raw_table(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpi_dump_raw_table(fwts_framework *fw, const fwts_acpi_table_info *table)
>  {
>  	fwts_log_nl(fw);
>  	acpi_dump_raw_data(fw, (uint8_t *)table->data, table->length, 0);
>  }
>  
> -static char *acpi_dump_gas_address_space_id(uint64_t index)
> +static char *acpi_dump_gas_address_space_id(const uint64_t index)
>  {
>  	char *txt;
>  
> @@ -281,9 +326,13 @@ static char *acpi_dump_gas_address_space_id(uint64_t index)
>  	return txt;
>  }
>  
> -static void acpi_dump_gas(fwts_framework *fw, fwts_acpidump_field *info, void *data, int offset)
> +static void acpi_dump_gas(
> +	fwts_framework *fw,
> +	const fwts_acpidump_field *info,
> +	const void *data,
> +	const int offset)
>  {	
> -	static char *access_width[] = {
> +	static const char const *access_width[] = {
>  		"Undefined (legacy reasons)",
>  		"Byte Access",
>  		"Word Access",
> @@ -292,7 +341,7 @@ static void acpi_dump_gas(fwts_framework *fw, fwts_acpidump_field *info, void *d
>  		"Unknown",
>  	};
>  
> -	static fwts_acpidump_field fields[] = {
> +	static const fwts_acpidump_field fields[] = {
>  		FIELD_STRF("  addr_space_id", 	fwts_acpi_gas, address_space_id, acpi_dump_gas_address_space_id),
>  		FIELD_UINT("  reg_bit_width", 	fwts_acpi_gas, register_bit_width),
>  		FIELD_UINT("  reg_bit_offset",	fwts_acpi_gas, register_bit_offset),
> @@ -310,10 +359,12 @@ static void acpi_dump_gas(fwts_framework *fw, fwts_acpidump_field *info, void *d
>  	__acpi_dump_table_fields(fw, data, fields, info->offset);
>  }
>  
> -
> -static void acpidump_hdr(fwts_framework *fw, fwts_acpi_table_header *hdr, int length)
> +static void acpidump_hdr(
> +	fwts_framework *fw,
> +	const fwts_acpi_table_header *hdr,
> +	const int length)
>  {
> -	static fwts_acpidump_field fields[] = {
> +	static const fwts_acpidump_field fields[] = {
>  		FIELD_STR ("Signature", 	fwts_acpi_table_header, signature),
>  		FIELD_UINT("Length", 		fwts_acpi_table_header, length),
>  		FIELD_UINT("Revision", 		fwts_acpi_table_header, revision),
> @@ -326,17 +377,16 @@ static void acpidump_hdr(fwts_framework *fw, fwts_acpi_table_header *hdr, int le
>  		FIELD_END
>  	};
>  
> -	acpi_dump_table_fields(fw, (uint8_t*)hdr, fields, 0, length);
> +	acpi_dump_table_fields(fw, (uint8_t *)hdr, fields, 0, length);
>  }
>  
> -static void acpidump_boot(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpidump_boot(fwts_framework *fw, const fwts_acpi_table_info *table)
>  {
> -	uint8_t *data = (uint8_t *)table->data;
>  	size_t length = table->length;
>  	uint8_t cmos_data;
> -	fwts_acpi_table_boot *boot = (fwts_acpi_table_boot*)data;
> +	fwts_acpi_table_boot *boot = (fwts_acpi_table_boot *)table->data;
>  
> -	fwts_acpidump_field fields[] = {
> +	static const fwts_acpidump_field fields[] = {
>  		FIELD_UINT("CMOS offset", 	fwts_acpi_table_boot, cmos_index),
>  		FIELD_END
>  	};
> @@ -346,7 +396,7 @@ static void acpidump_boot(fwts_framework *fw, fwts_acpi_table_info *table)
>  		return;
>  	}
>  
> -	acpi_dump_table_fields(fw, data, fields, 0, length);
> +	acpi_dump_table_fields(fw, table->data, fields, 0, length);
>  
>  	/*
>  	 *  We can only run the CMOS validation if we are sure the
> @@ -371,28 +421,22 @@ static void acpidump_boot(fwts_framework *fw, fwts_acpi_table_info *table)
>  	
>  }
>  
> -static void acpidump_bert(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpidump_bert(fwts_framework *fw, const fwts_acpi_table_info *table)
>  {
> -	uint8_t *data = (uint8_t *)table->data;
> -	size_t length = table->length;
> -
> -	static fwts_acpidump_field fields[] = {
> +	static const fwts_acpidump_field fields[] = {
>  		FIELD_UINT("Region Length", 	fwts_acpi_table_bert, boot_error_region_length),
>  		FIELD_UINT("Region Addr", 	fwts_acpi_table_bert, boot_error_region),
>  		FIELD_END
>  	};
>  
> -	acpi_dump_table_fields(fw, data, fields, length, length);
> +	acpi_dump_table_fields(fw, table->data, fields, table->length, table->length);
>  }
>  
> -static void acpidump_cpep(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpidump_cpep(fwts_framework *fw, const fwts_acpi_table_info *table)
>  {
> -	uint8_t *data = (uint8_t *)table->data;
> -	size_t length = table->length;
> -	int i;
> -	int n = (length - sizeof(fwts_acpi_table_bert)) / sizeof(fwts_acpi_cpep_processor_info);
> +	size_t i, n = (table->length - sizeof(fwts_acpi_table_bert)) / sizeof(fwts_acpi_cpep_processor_info);
>  
> -	for (i=0; i<n; i++) {
> +	for (i = 0; i < n; i++) {
>  		fwts_acpidump_field fields[] = {
>  			FIELD_UINT("  Type", 		fwts_acpi_table_cpep, cpep_info[i].type),
>  			FIELD_UINT("  Length", 		fwts_acpi_table_cpep, cpep_info[i].length),
> @@ -401,19 +445,17 @@ static void acpidump_cpep(fwts_framework *fw, fwts_acpi_table_info *table)
>  			FIELD_UINT("  Poll Interval (ms)",fwts_acpi_table_cpep, cpep_info[i].polling_interval),
>  			FIELD_END
>  		};
> -		fwts_log_info_verbatum(fw, "CPEP #%d\n", i);
> -		__acpi_dump_table_fields(fw, data, fields, 0);
> +		fwts_log_info_verbatum(fw, "CPEP #%zu\n", i);
> +		__acpi_dump_table_fields(fw, table->data, fields, 0);
>  	};
>  }
>  
> -static void acpidump_ecdt(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpidump_ecdt(fwts_framework *fw, const fwts_acpi_table_info *table)
>  {
> -	uint8_t *data = (uint8_t *)table->data;
> -	size_t length = table->length;
> -	fwts_acpi_table_ecdt *ecdt = (fwts_acpi_table_ecdt*)data;
> -	int n = length - sizeof(fwts_acpi_table_ecdt);
> +	size_t n = table->length - sizeof(fwts_acpi_table_ecdt);
> +	fwts_acpi_table_ecdt *ecdt = (fwts_acpi_table_ecdt *)table->data;
>  
> -	static fwts_acpidump_field fields[] = {
> +	static const fwts_acpidump_field fields[] = {
>  		FIELD_GAS ("EC_CONTROL",fwts_acpi_table_ecdt,   ec_control),
>  		FIELD_GAS ("EC_DATA", 	fwts_acpi_table_ecdt,   ec_data),
>  		FIELD_UINT("UID", 	fwts_acpi_table_ecdt,	uid),
> @@ -421,20 +463,18 @@ static void acpidump_ecdt(fwts_framework *fw, fwts_acpi_table_info *table)
>  		FIELD_END
>  	};
>  
> -	acpi_dump_table_fields(fw, data, fields, 0, length);
> +	acpi_dump_table_fields(fw, table->data, fields, 0, table->length);
>  
>  	fwts_log_info_verbatum(fw, "EC_ID:");
>  	fwts_log_nl(fw);
>  	acpi_dump_raw_data(fw, ecdt->ec_id, n, sizeof(fwts_acpi_table_ecdt));
>  }
>  
> -static void acpidump_erst(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpidump_erst(fwts_framework *fw, const fwts_acpi_table_info *table)
>  {
> -	uint8_t *data = (uint8_t *)table->data;
> -	size_t length = table->length;
>  	uint32_t i;
>  
> -	static char *serialization_actions[] = {
> +	static const char *serialization_actions[] = {
>  		"BEGIN_WRITE_OPERATION",
>  		"BEGIN_READ_OPERATION",
>  		"BEGIN_CLEAR_OPERATION",
> @@ -456,7 +496,7 @@ static void acpidump_erst(fwts_framework *fw, fwts_acpi_table_info *table)
>  		"GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES"
>  	};
>  
> -	static char *instructions[] = {
> +	static const char *instructions[] = {
>  		"READ_REGISTER",
>  		"READ_REGISTER_VALUE",
>  		"WRITE_REGISTER",
> @@ -482,17 +522,17 @@ static void acpidump_erst(fwts_framework *fw, fwts_acpi_table_info *table)
>  		"MOVE_DATA"
>  	};
>  
> -	fwts_acpi_table_erst *erst = (fwts_acpi_table_erst*)data;
> +	fwts_acpi_table_erst *erst = (fwts_acpi_table_erst *)table->data;
>  
> -	static fwts_acpidump_field fields[] = {
> +	static const fwts_acpidump_field fields[] = {
>  		FIELD_UINT("Serialization Hdr. Size", fwts_acpi_table_erst, serialization_header_size),
>  		FIELD_UINT("Insrtuction Entry Count", fwts_acpi_table_erst, instruction_entry_count),
>  		FIELD_END
>  	};
>  
> -	acpi_dump_table_fields(fw, data, fields, 0, length);
> +	acpi_dump_table_fields(fw, table->data, fields, 0, table->length);
>  	
> -	for (i=0; i<erst->instruction_entry_count; i++) {
> +	for (i = 0; i < erst->instruction_entry_count; i++) {
>  		fwts_acpidump_field entry_fields[] = {
>  			FIELD_STRS("  Action", 		fwts_acpi_table_erst, entries[i].serialization_action, serialization_actions, 16),
>  			FIELD_STRS("  Instruction", 	fwts_acpi_table_erst, entries[i].instruction, instructions, 19),
> @@ -503,22 +543,19 @@ static void acpidump_erst(fwts_framework *fw, fwts_acpi_table_info *table)
>  			FIELD_END
>  		};
>  		fwts_log_info_verbatum(fw, "Entry #%" PRIu32, i+1);
> -		__acpi_dump_table_fields(fw, data, entry_fields, 0);
> +		__acpi_dump_table_fields(fw, table->data, entry_fields, 0);
>  	}
>  }
>  
> -static void acpidump_amlcode(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpidump_amlcode(fwts_framework *fw, const fwts_acpi_table_info *table)
>  {
>  	fwts_log_info_verbatum(fw, "Contains 0x%zx bytes of AML byte code",
>  		table->length-sizeof(fwts_acpi_table_header));
>  }
>  
> -static void acpidump_facs(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpidump_facs(fwts_framework *fw, const fwts_acpi_table_info *table)
>  {
> -	uint8_t *data = (uint8_t *)table->data;
> -	size_t length = table->length;
> -
> -	static fwts_acpidump_field fields[] = {
> +	static const fwts_acpidump_field fields[] = {
>  		FIELD_STR ("Signature", 	fwts_acpi_table_facs, 	signature),
>  		FIELD_UINT("Length", 		fwts_acpi_table_facs,	length),
>  		FIELD_UINT("H/W Signature", 	fwts_acpi_table_facs,	hardware_signature),
> @@ -531,15 +568,12 @@ static void acpidump_facs(fwts_framework *fw, fwts_acpi_table_info *table)
>  		FIELD_END
>  	};
>  
> -	acpi_dump_table_fields(fw, data, fields, 0, length);
> +	acpi_dump_table_fields(fw, table->data, fields, 0, table->length);
>  }
>  
> -static void acpidump_hpet(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpidump_hpet(fwts_framework *fw, const fwts_acpi_table_info *table)
>  {
> -	uint8_t *data = (uint8_t *)table->data;
> -	size_t length = table->length;
> -
> -	static fwts_acpidump_field fields[] = {
> +	static const fwts_acpidump_field fields[] = {
>  		FIELD_UINT("Event Timer ID", 	fwts_acpi_table_hpet, event_timer_block_id),
>  		FIELD_BITF("  Hardware Rev", 	fwts_acpi_table_hpet, event_timer_block_id, 8, 0),
>  		FIELD_BITF("  Num Comparitors", fwts_acpi_table_hpet, event_timer_block_id, 5, 8),
> @@ -556,33 +590,30 @@ static void acpidump_hpet(fwts_framework *fw, fwts_acpi_table_info *table)
>  		FIELD_END
>  	};
>  
> -	acpi_dump_table_fields(fw, data, fields, 0, length);
> +	acpi_dump_table_fields(fw, table->data, fields, 0, table->length);
>  }
>  
> -static void acpidump_fadt(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpidump_fadt(fwts_framework *fw, const fwts_acpi_table_info *table)
>  {
> -	uint8_t *data = (uint8_t *)table->data;
> -	size_t length = table->length;
> -
> -	static fwts_acpidump_field fields[] = {
> -		FIELD_UINT("FACS Address", 	fwts_acpi_table_fadt, firmware_control),
> -		FIELD_UINT("DSDT Address", 	fwts_acpi_table_fadt, dsdt),
> -		FIELD_UINT("Model",		fwts_acpi_table_fadt, reserved),
> -		FIELD_STRS("PM Profile",	fwts_acpi_table_fadt, preferred_pm_profile, fwts_acpi_fadt_preferred_pm_profile, 8),
> -		FIELD_UINT("SCI Interrupt", 	fwts_acpi_table_fadt, sci_int),
> -		FIELD_UINT("SMI Command Port",	fwts_acpi_table_fadt, smi_cmd),
> -		FIELD_UINT("ACPI Enable Value", fwts_acpi_table_fadt, acpi_enable),
> -		FIELD_UINT("ACPI Disable Value",fwts_acpi_table_fadt, acpi_disable),
> -		FIELD_UINT("S4BIOS Command", 	fwts_acpi_table_fadt, s4bios_req),
> -		FIELD_UINT("P-State Control",	fwts_acpi_table_fadt, pstate_cnt),
> -		FIELD_UINT("PM1A Event Block", 	fwts_acpi_table_fadt, pm1a_evt_blk),
> -		FIELD_UINT("PM1B Event Block", 	fwts_acpi_table_fadt, pm1b_evt_blk),
> -		FIELD_UINT("PM1A Control Block",fwts_acpi_table_fadt, pm1a_cnt_blk),
> -		FIELD_UINT("PM1B Control Block",fwts_acpi_table_fadt, pm1b_cnt_blk),
> -		FIELD_UINT("PM2 Control Block", fwts_acpi_table_fadt, pm2_cnt_blk),
> -		FIELD_UINT("PM Timer Block", 	fwts_acpi_table_fadt, pm_tmr_blk),
> -		FIELD_UINT("GPE0 Block", 	fwts_acpi_table_fadt, gpe0_blk),
> -		FIELD_UINT("GPE1 Block", 	fwts_acpi_table_fadt, gpe1_blk),
> +	static const fwts_acpidump_field fields[] = {
> +		FIELD_UINT("FACS Address", 				fwts_acpi_table_fadt, firmware_control),
> +		FIELD_UINT("DSDT Address", 				fwts_acpi_table_fadt, dsdt),
> +		FIELD_UINT("Model",					fwts_acpi_table_fadt, reserved),
> +		FIELD_STRS("PM Profile",				fwts_acpi_table_fadt, preferred_pm_profile, fwts_acpi_fadt_preferred_pm_profile, 8),
> +		FIELD_UINT("SCI Interrupt", 				fwts_acpi_table_fadt, sci_int),
> +		FIELD_UINT("SMI Command Port",				fwts_acpi_table_fadt, smi_cmd),
> +		FIELD_UINT("ACPI Enable Value", 			fwts_acpi_table_fadt, acpi_enable),
> +		FIELD_UINT("ACPI Disable Value",			fwts_acpi_table_fadt, acpi_disable),
> +		FIELD_UINT("S4BIOS Command", 				fwts_acpi_table_fadt, s4bios_req),
> +		FIELD_UINT("P-State Control",				fwts_acpi_table_fadt, pstate_cnt),
> +		FIELD_UINT("PM1A Event Block", 				fwts_acpi_table_fadt, pm1a_evt_blk),
> +		FIELD_UINT("PM1B Event Block", 				fwts_acpi_table_fadt, pm1b_evt_blk),
> +		FIELD_UINT("PM1A Control Block",			fwts_acpi_table_fadt, pm1a_cnt_blk),
> +		FIELD_UINT("PM1B Control Block",			fwts_acpi_table_fadt, pm1b_cnt_blk),
> +		FIELD_UINT("PM2 Control Block", 			fwts_acpi_table_fadt, pm2_cnt_blk),
> +		FIELD_UINT("PM Timer Block", 				fwts_acpi_table_fadt, pm_tmr_blk),
> +		FIELD_UINT("GPE0 Block", 				fwts_acpi_table_fadt, gpe0_blk),
> +		FIELD_UINT("GPE1 Block", 				fwts_acpi_table_fadt, gpe1_blk),
>  		FIELD_UINT("PM1 Event Block Length", 			fwts_acpi_table_fadt, pm1_evt_len),
>  		FIELD_UINT("PM1 Control Block Length", 			fwts_acpi_table_fadt, pm1_cnt_len),
>  		FIELD_UINT("PM2 Control Block Length", 			fwts_acpi_table_fadt, pm2_cnt_len),
> @@ -629,34 +660,30 @@ static void acpidump_fadt(fwts_framework *fw, fwts_acpi_table_info *table)
>  		FIELD_BITF("  Use APIC Physical Dest. Mode (V4)", 	fwts_acpi_table_fadt, flags, 1, 19),
>  		FIELD_BITF("  ACPI hardware is not implemented (V5)",	fwts_acpi_table_fadt, flags, 1, 20),
>  		FIELD_BITF("  S0 power savings are equal or better than S3 (V5)", fwts_acpi_table_fadt, flags, 1, 21),
> -		FIELD_BITF("  RESERVED", 	fwts_acpi_table_fadt, flags, 10, 22),
> -		FIELD_GAS ("RESET_REG", 	fwts_acpi_table_fadt, reset_reg),
> -		FIELD_UINT("RESET_VALUE", 	fwts_acpi_table_fadt, reset_value),
> -		FIELD_UINT("X_FIRMWARE_CTRL", 	fwts_acpi_table_fadt, x_firmware_ctrl),
> -		FIELD_UINT("X_DSDT", 		fwts_acpi_table_fadt, x_dsdt),
> -		FIELD_GAS ("X_PM1a_EVT_BLK", 	fwts_acpi_table_fadt, x_pm1a_evt_blk),
> -		FIELD_GAS ("X_PM1b_EVT_BLK", 	fwts_acpi_table_fadt, x_pm1b_evt_blk),
> -		FIELD_GAS ("X_PM1a_CNT_BLK", 	fwts_acpi_table_fadt, x_pm1a_cnt_blk),
> -		FIELD_GAS ("X_PM1b_CNT_BLK", 	fwts_acpi_table_fadt, x_pm1b_cnt_blk),
> -		FIELD_GAS ("X_PM2_CNT_BLK", 	fwts_acpi_table_fadt, x_pm2_cnt_blk),
> -		FIELD_GAS ("X_PM_TMR_BLK", 	fwts_acpi_table_fadt, x_pm_tmr_blk),
> -		FIELD_GAS ("X_GPE0_BLK", 	fwts_acpi_table_fadt, x_gpe0_blk),
> -		FIELD_GAS ("X_GPE1_BLK", 	fwts_acpi_table_fadt, x_gpe1_blk),
> -		FIELD_GAS ("SLEEP_CONTROL_REG", fwts_acpi_table_fadt, sleep_control_reg),
> -		FIELD_GAS ("SLEEP_STATUS_REG", 	fwts_acpi_table_fadt, sleep_status_reg),
> +		FIELD_BITF("  RESERVED", 				fwts_acpi_table_fadt, flags, 10, 22),
> +		FIELD_GAS ("RESET_REG", 				fwts_acpi_table_fadt, reset_reg),
> +		FIELD_UINT("RESET_VALUE", 				fwts_acpi_table_fadt, reset_value),
> +		FIELD_UINT("X_FIRMWARE_CTRL", 				fwts_acpi_table_fadt, x_firmware_ctrl),
> +		FIELD_UINT("X_DSDT", 					fwts_acpi_table_fadt, x_dsdt),
> +		FIELD_GAS ("X_PM1a_EVT_BLK", 				fwts_acpi_table_fadt, x_pm1a_evt_blk),
> +		FIELD_GAS ("X_PM1b_EVT_BLK", 				fwts_acpi_table_fadt, x_pm1b_evt_blk),
> +		FIELD_GAS ("X_PM1a_CNT_BLK", 				fwts_acpi_table_fadt, x_pm1a_cnt_blk),
> +		FIELD_GAS ("X_PM1b_CNT_BLK", 				fwts_acpi_table_fadt, x_pm1b_cnt_blk),
> +		FIELD_GAS ("X_PM2_CNT_BLK", 				fwts_acpi_table_fadt, x_pm2_cnt_blk),
> +		FIELD_GAS ("X_PM_TMR_BLK", 				fwts_acpi_table_fadt, x_pm_tmr_blk),
> +		FIELD_GAS ("X_GPE0_BLK", 				fwts_acpi_table_fadt, x_gpe0_blk),
> +		FIELD_GAS ("X_GPE1_BLK", 				fwts_acpi_table_fadt, x_gpe1_blk),
> +		FIELD_GAS ("SLEEP_CONTROL_REG", 			fwts_acpi_table_fadt, sleep_control_reg),
> +		FIELD_GAS ("SLEEP_STATUS_REG", 				fwts_acpi_table_fadt, sleep_status_reg),
>  		FIELD_END
>  	};
>  
> -	acpi_dump_table_fields(fw, data, fields, 0, length);
> -
> +	acpi_dump_table_fields(fw, table->data, fields, 0, table->length);
>  }
>  
> -static void acpidump_rsdp(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpidump_rsdp(fwts_framework *fw, const fwts_acpi_table_info *table)
>  {
> -	uint8_t *data = (uint8_t *)table->data;
> -	size_t length = table->length;
> -
> -	static fwts_acpidump_field fields[] = {
> +	static const fwts_acpidump_field fields[] = {
>  		FIELD_STR ("Signature", 	fwts_acpi_table_rsdp, signature),
>  		FIELD_UINT("Checksum", 		fwts_acpi_table_rsdp, checksum),
>  		FIELD_STR ("OEM ID", 		fwts_acpi_table_rsdp, oem_id),
> @@ -669,25 +696,21 @@ static void acpidump_rsdp(fwts_framework *fw, fwts_acpi_table_info *table)
>  		FIELD_END
>  	};
>  
> -	acpi_dump_table_fields(fw, data, fields, 0, length);
> +	acpi_dump_table_fields(fw, table->data, fields, 0, table->length);
>  }
>  
> -static void acpidump_rsdt(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpidump_rsdt(fwts_framework *fw, const fwts_acpi_table_info *table)
>  {
> -	uint8_t *data = (uint8_t *)table->data;
> -	size_t length = table->length;
> -	int i;
> -	int n;
> -	fwts_acpi_table_rsdt *rsdt = (fwts_acpi_table_rsdt*)data;
> +	size_t i, n = (table->length - sizeof(fwts_acpi_table_header)) / sizeof(uint32_t);
> +	fwts_acpi_table_rsdt *rsdt = (fwts_acpi_table_rsdt *)table->data;
>  
> -	n = (length - sizeof(fwts_acpi_table_header)) / sizeof(uint32_t);
> -	for (i=0; i<n; i++)  {
> +	for (i = 0; i < n; i++)  {
>  		char label[80];
>  		fwts_acpi_table_info *table;
>  
>  		if (fwts_acpi_find_table_by_addr(fw, (uint64_t)rsdt->entries[i], &table) == FWTS_OK) {
>  			char *name = table == NULL ? "unknown" : table->name;
> -			snprintf(label, sizeof(label), "Entry %2.2d %s", i, name);
> +			snprintf(label, sizeof(label), "Entry %2.2zu %s", i, name);
>  			fwts_log_info_verbatum(fw, "%s 0x%8.8x",
>  				acpi_dump_field_info(label, sizeof(rsdt->entries[i]), offsetof(fwts_acpi_table_rsdt, entries[i])),
>  				rsdt->entries[i]);
> @@ -695,37 +718,30 @@ static void acpidump_rsdt(fwts_framework *fw, fwts_acpi_table_info *table)
>  	}
>  }
>  
> -static void acpidump_sbst(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpidump_sbst(fwts_framework *fw, const fwts_acpi_table_info *table)
>  {
> -	uint8_t *data = (uint8_t *)table->data;
> -	size_t length = table->length;
> -
> -	static fwts_acpidump_field fields[] = {
> +	static const fwts_acpidump_field fields[] = {
>  		FIELD_UINT("Warn. Energy Level", 	fwts_acpi_table_sbst,	warning_energy_level),
>  		FIELD_UINT("Low  Energy Level", 	fwts_acpi_table_sbst,	low_energy_level),
>  		FIELD_UINT("Crit. Energy Level", 	fwts_acpi_table_sbst,	critical_energy_level),
>  		FIELD_END
>  	};
>  
> -	acpi_dump_table_fields(fw, data, fields, 0, length);
> +	acpi_dump_table_fields(fw, table->data, fields, 0, table->length);
>  }
>  
> -static void acpidump_xsdt(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpidump_xsdt(fwts_framework *fw, const fwts_acpi_table_info *table)
>  {
> -	uint8_t *data = (uint8_t *)table->data;
> -	size_t length = table->length;
> -	int i;
> -	int n;
> -	fwts_acpi_table_xsdt *xsdt = (fwts_acpi_table_xsdt*)data;
> +	size_t i, n = (table->length - sizeof(fwts_acpi_table_header)) / sizeof(uint64_t);
> +	fwts_acpi_table_xsdt *xsdt = (fwts_acpi_table_xsdt *)table->data;
>  
> -	n = (length - sizeof(fwts_acpi_table_header)) / sizeof(uint64_t);
> -	for (i=0; i<n; i++)  {
> +	for (i = 0; i < n; i++)  {
>  		char label[80];
>  		fwts_acpi_table_info *table;
>  
>  		if (fwts_acpi_find_table_by_addr(fw, xsdt->entries[i], &table) == FWTS_OK) {
>  			char *name = table == NULL ? "unknown" : table->name;
> -			snprintf(label, sizeof(label), "Entry %2.2d %s", i, name);
> +			snprintf(label, sizeof(label), "Entry %2.2zu %s", i, name);
>  			fwts_log_info_verbatum(fw, "%s 0x%16.16" PRIx64,
>  				acpi_dump_field_info(label, sizeof(xsdt->entries[i]), offsetof(fwts_acpi_table_xsdt, entries[i])),
>  				xsdt->entries[i]);
> @@ -733,14 +749,13 @@ static void acpidump_xsdt(fwts_framework *fw, fwts_acpi_table_info *table)
>  	}
>  }
>  
> -static void acpidump_madt(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpidump_madt(fwts_framework *fw, const fwts_acpi_table_info *table)
>  {
>  	uint8_t *data = (uint8_t *)table->data;
> -	size_t length = table->length;
> +	size_t offset = 0, length = table->length;
>  	int i = 0;
> -	size_t offset = 0;
>  	
> -	static fwts_acpidump_field fields[] = {
> +	static const fwts_acpidump_field fields[] = {
>  		FIELD_UINT("Local APIC Address", 	fwts_acpi_table_madt, lapic_address),
>  		FIELD_UINT("Flags", 			fwts_acpi_table_madt, flags),
>  		FIELD_BITF("  PCAT_COMPAT", 		fwts_acpi_table_madt, flags, 1, 0),
> @@ -754,7 +769,7 @@ static void acpidump_madt(fwts_framework *fw, fwts_acpi_table_info *table)
>  
>  	while (length > (int)sizeof(fwts_acpi_madt_sub_table_header)) {
>  		int skip = 0;
> -		fwts_acpi_madt_sub_table_header *hdr = (fwts_acpi_madt_sub_table_header*)data;
> +		fwts_acpi_madt_sub_table_header *hdr = (fwts_acpi_madt_sub_table_header *)data;
>  
>  		data += sizeof(fwts_acpi_madt_sub_table_header);
>  		length -= sizeof(fwts_acpi_madt_sub_table_header);
> @@ -765,7 +780,7 @@ static void acpidump_madt(fwts_framework *fw, fwts_acpi_table_info *table)
>  
>  		switch (hdr->type) {
>  		case 0: {
> -				static fwts_acpidump_field fields_processor_local_apic[] = {
> +				static const fwts_acpidump_field fields_processor_local_apic[] = {
>  					FIELD_UINT("  ACPI CPU ID", fwts_acpi_madt_processor_local_apic, acpi_processor_id),
>  					FIELD_UINT("  APIC ID",     fwts_acpi_madt_processor_local_apic, apic_id),
>  					FIELD_UINT("  Flags",       fwts_acpi_madt_processor_local_apic, flags),
> @@ -778,7 +793,7 @@ static void acpidump_madt(fwts_framework *fw, fwts_acpi_table_info *table)
>  			}
>  			break;
>  		case 1: {
> -				static fwts_acpidump_field fields_io_apic[] = {
> +				static const fwts_acpidump_field fields_io_apic[] = {
>  					FIELD_UINT("  I/O APIC ID", 	fwts_acpi_madt_io_apic, io_apic_id),
>  					FIELD_UINT("  I/O APIC Addr", 	fwts_acpi_madt_io_apic, io_apic_phys_address),
>  					FIELD_UINT("  Global IRQ Base", fwts_acpi_madt_io_apic, global_irq_base),
> @@ -790,7 +805,7 @@ static void acpidump_madt(fwts_framework *fw, fwts_acpi_table_info *table)
>  			}
>  			break;
>  		case 2: {
> -				static fwts_acpidump_field fields_madt_interrupt_override[] = {
> +				static const fwts_acpidump_field fields_madt_interrupt_override[] = {
>  					FIELD_UINT("  Bus", 		fwts_acpi_madt_interrupt_override, bus),
>  					FIELD_UINT("  Source", 		fwts_acpi_madt_interrupt_override, source),
>  					FIELD_UINT("  Gbl Sys Int", 	fwts_acpi_madt_interrupt_override, gsi),
> @@ -803,7 +818,7 @@ static void acpidump_madt(fwts_framework *fw, fwts_acpi_table_info *table)
>  			}
>  			break;
>  		case 3: {
> -				static fwts_acpidump_field fields_madt_nmi[] = {
> +				static const fwts_acpidump_field fields_madt_nmi[] = {
>  					FIELD_UINT("  Flags", 		fwts_acpi_madt_nmi, flags),
>  					FIELD_UINT("  Gbl Sys Int", 	fwts_acpi_madt_nmi, gsi),
>  					FIELD_END
> @@ -814,7 +829,7 @@ static void acpidump_madt(fwts_framework *fw, fwts_acpi_table_info *table)
>  			}
>  			break;
>  		case 4: {
> -				static fwts_acpidump_field fields_madt_local_apic_nmi[] = {
> +				static const fwts_acpidump_field fields_madt_local_apic_nmi[] = {
>  					FIELD_UINT("  ACPI CPU ID", 	fwts_acpi_madt_local_apic_nmi, acpi_processor_id),
>  					FIELD_UINT("  Flags", 		fwts_acpi_madt_local_apic_nmi, flags),
>  					FIELD_UINT("  Local APIC LINT", fwts_acpi_madt_local_apic_nmi, local_apic_lint),
> @@ -826,7 +841,7 @@ static void acpidump_madt(fwts_framework *fw, fwts_acpi_table_info *table)
>  			}
>  			break;
>  		case 5: {
> -				static fwts_acpidump_field fields_madt_local_apic_addr_override[] = {
> +				static const fwts_acpidump_field fields_madt_local_apic_addr_override[] = {
>  					FIELD_UINT("  Local APIC Addr", fwts_acpi_madt_local_apic_addr_override, address),
>  					FIELD_END
>  				};
> @@ -836,7 +851,7 @@ static void acpidump_madt(fwts_framework *fw, fwts_acpi_table_info *table)
>  			}
>  			break;
>  		case 6: {
> -				static fwts_acpidump_field fields_madt_io_sapic[] = {
> +				static const fwts_acpidump_field fields_madt_io_sapic[] = {
>  					FIELD_UINT("  I/O SAPIC ID", 	fwts_acpi_madt_io_sapic, io_sapic_id),
>  					FIELD_UINT("  Gbl Sys Int", 	fwts_acpi_madt_io_sapic, gsi),
>  					FIELD_UINT("  I/O SAPIC Addr", 	fwts_acpi_madt_io_sapic, address),
> @@ -848,8 +863,8 @@ static void acpidump_madt(fwts_framework *fw, fwts_acpi_table_info *table)
>  			}
>  			break;
>  		case 7: {
> -				fwts_acpi_madt_local_sapic *local_sapic = (fwts_acpi_madt_local_sapic*)data;
> -				static fwts_acpidump_field fields_madt_local_sapic[] = {
> +				fwts_acpi_madt_local_sapic *local_sapic = (fwts_acpi_madt_local_sapic *)data;
> +				static const fwts_acpidump_field fields_madt_local_sapic[] = {
>  					FIELD_UINT("  ACPI CPU ID", 	fwts_acpi_madt_local_sapic, acpi_processor_id),
>  					FIELD_UINT("  Local SAPIC ID", 	fwts_acpi_madt_local_sapic, local_sapic_id),
>  					FIELD_UINT("  Local SAPIC EID",	fwts_acpi_madt_local_sapic, local_sapic_eid),
> @@ -865,7 +880,7 @@ static void acpidump_madt(fwts_framework *fw, fwts_acpi_table_info *table)
>  			}
>  			break;
>  		case 8: {
> -				static fwts_acpidump_field fields_madt_local_sapic[] = {
> +				static const fwts_acpidump_field fields_madt_local_sapic[] = {
>  					FIELD_UINT("  Flags", 		fwts_acpi_madt_platform_int_source, flags),
>  					FIELD_UINT("  Type", 		fwts_acpi_madt_platform_int_source, type),
>  					FIELD_UINT("  Processor ID", 	fwts_acpi_madt_platform_int_source, processor_id),
> @@ -881,7 +896,7 @@ static void acpidump_madt(fwts_framework *fw, fwts_acpi_table_info *table)
>  			}
>  			break;
>  		case 9: {
> -				static fwts_acpidump_field fields_madt_local_x2apic[] = {
> +				static const fwts_acpidump_field fields_madt_local_x2apic[] = {
>  					FIELD_UINT("  x2APIC ID", 	fwts_acpi_madt_local_x2apic, x2apic_id),
>  					FIELD_UINT("  Flags", 		fwts_acpi_madt_local_x2apic, flags),
>  					FIELD_UINT("  Processor UID", 	fwts_acpi_madt_local_x2apic, processor_uid),
> @@ -893,7 +908,7 @@ static void acpidump_madt(fwts_framework *fw, fwts_acpi_table_info *table)
>  			}
>  			break;
>  		case 10: {
> -				static fwts_acpidump_field fields_madt_local_x2apic_nmi[] = {
> +				static const fwts_acpidump_field fields_madt_local_x2apic_nmi[] = {
>  					FIELD_UINT("  Flags", 		fwts_acpi_madt_local_x2apic_nmi, flags),
>  					FIELD_UINT("  Processor UID", 	fwts_acpi_madt_local_x2apic_nmi, processor_uid),
>  					FIELD_UINT("  LINT#", 		fwts_acpi_madt_local_x2apic_nmi, local_x2apic_lint),
> @@ -905,7 +920,7 @@ static void acpidump_madt(fwts_framework *fw, fwts_acpi_table_info *table)
>  			}
>  			break;
>  		case 11: {
> -				static fwts_acpidump_field fields_madt_gic[] = {
> +				static const fwts_acpidump_field fields_madt_gic[] = {
>  					FIELD_UINT("  Reserved", 	fwts_acpi_madt_gic, reserved),
>  					FIELD_UINT("  GIC ID", 		fwts_acpi_madt_gic, gic_id),
>  					FIELD_UINT("  Processor UID", 	fwts_acpi_madt_gic, processor_uid),
> @@ -921,7 +936,7 @@ static void acpidump_madt(fwts_framework *fw, fwts_acpi_table_info *table)
>  			}
>  			break;
>  		case 12: {
> -				static fwts_acpidump_field fields_madt_gicd[] = {
> +				static const fwts_acpidump_field fields_madt_gicd[] = {
>  					FIELD_UINT("  Reserved", 	fwts_acpi_madt_gicd, reserved),
>  					FIELD_UINT("  GIC ID", 		fwts_acpi_madt_gicd, gic_id),
>  					FIELD_UINT("  Phys. Base. Addr",fwts_acpi_madt_gicd, physical_base_address),
> @@ -944,26 +959,22 @@ static void acpidump_madt(fwts_framework *fw, fwts_acpi_table_info *table)
>  	}
>  }
>  
> -static void acpidump_mcfg(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpidump_mcfg(fwts_framework *fw, const fwts_acpi_table_info *table)
>  {
> -	uint8_t *data = (uint8_t *)table->data;
> -	size_t length = table->length;
> -	fwts_acpi_table_mcfg *mcfg = (fwts_acpi_table_mcfg*)data;
> -	size_t n;
> -	size_t i;
> +	fwts_acpi_table_mcfg *mcfg = (fwts_acpi_table_mcfg *)table->data;
> +	size_t i, n = table->length - sizeof(fwts_acpi_table_mcfg);
>  
> -	static fwts_acpidump_field fields[] = {
> +	static const fwts_acpidump_field fields[] = {
>  		FIELD_UINT("Reserved", 	fwts_acpi_table_mcfg,	reserved),
>  		FIELD_END
>  	};
>  
> -	acpi_dump_table_fields(fw, data, fields, 0, length);
> +	acpi_dump_table_fields(fw, table->data, fields, 0, table->length);
>  
> -	n = length - sizeof(fwts_acpi_table_mcfg);
>  	fwts_acpi_mcfg_configuration *config = mcfg->configuration;
>  
>  	for (i = 0; i < n / sizeof(fwts_acpi_mcfg_configuration); i++) {
> -		static fwts_acpidump_field fields_config[] = {
> +		static const fwts_acpidump_field fields_config[] = {
>  			FIELD_UINT("  Base Address", 	fwts_acpi_mcfg_configuration,	base_address),
>  			FIELD_UINT("  PCI Seg Grp Num", fwts_acpi_mcfg_configuration,	pci_segment_group_number),
>  			FIELD_UINT("  Start Bus Num", 	fwts_acpi_mcfg_configuration,	start_bus_number),
> @@ -974,20 +985,18 @@ static void acpidump_mcfg(fwts_framework *fw, fwts_acpi_table_info *table)
>  
>  		fwts_log_nl(fw);
>  		fwts_log_info_verbatum(fw, "Configuration #%zd:", i+1);
> -		acpi_dump_table_fields(fw, (uint8_t*)config, fields_config, 0, length);
> +		acpi_dump_table_fields(fw, (uint8_t *)config, fields_config, 0, table->length);
>  		config++;
>  	}
>  }
>  
> -static void acpidump_slit(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpidump_slit(fwts_framework *fw, const fwts_acpi_table_info *table)
>  {
> -	uint8_t *data = (uint8_t *)table->data;
> -	size_t length = table->length;
> -	fwts_acpi_table_slit *slit = (fwts_acpi_table_slit*)data;
> +	fwts_acpi_table_slit *slit = (fwts_acpi_table_slit *)table->data;
>  	uint64_t j = 0;
>  	uint64_t k = 0;
> -	uint64_t n = length - sizeof(fwts_acpi_table_slit);
> -	uint8_t *entry;
> +	uint64_t n = table->length - sizeof(fwts_acpi_table_slit);
> +	const uint8_t *entry;
>  
>  	fwts_log_info_verbatum(fw, "# Sys Localities: 0x%" PRIx64 "(%" PRIu64 ")",
>  		slit->num_of_system_localities, slit->num_of_system_localities);
> @@ -997,7 +1006,7 @@ static void acpidump_slit(fwts_framework *fw, fwts_acpi_table_info *table)
>  	}
>  	else {
>  		uint64_t i;
> -		entry = data + sizeof(fwts_acpi_table_slit);
> +		entry = table->data + sizeof(fwts_acpi_table_slit);
>  
>  		for (i = 0; i < n; i++) {
>  			fwts_log_info_verbatum(fw, "Entry[%2.2" PRIu64 "][%2.2" PRIu64 "]: %2.2x", j, k, *entry++);
> @@ -1010,21 +1019,15 @@ static void acpidump_slit(fwts_framework *fw, fwts_acpi_table_info *table)
>  	}
>  };
>  
> -
> -static void acpidump_srat(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpidump_srat(fwts_framework *fw, const fwts_acpi_table_info *table)
>  {
> -	uint8_t *data = (uint8_t *)table->data;
> -	size_t length = table->length;
> -	uint8_t *ptr;
> -	int   offset;
> -
> -	ptr = data + sizeof(fwts_acpi_table_srat);
> -	offset = sizeof(fwts_acpi_table_srat);
> +	uint8_t *ptr = (uint8_t *)table->data + sizeof(fwts_acpi_table_srat);
> +	int offset = sizeof(fwts_acpi_table_srat);
>  
> -	while (ptr < data + length) {
> +	while (ptr < (uint8_t *)table->data + table->length) {
>  		switch (*ptr) {
>  		case 0:	{
> -				static fwts_acpidump_field fields_lasa[] = {
> +				static const fwts_acpidump_field fields_lasa[] = {
>  					FIELD_UINT("  Proximity [7:0]", fwts_acpi_table_slit_local_apic_sapic_affinity, proximity_domain_0),
>  					FIELD_UINT("  APIC ID", fwts_acpi_table_slit_local_apic_sapic_affinity, apic_id),
>  					FIELD_UINT("  Flags", fwts_acpi_table_slit_local_apic_sapic_affinity, flags),
> @@ -1042,7 +1045,7 @@ static void acpidump_srat(fwts_framework *fw, fwts_acpi_table_info *table)
>  			}
>  			break;
>  		case 1:	{
> -				static fwts_acpidump_field fields_ma[] = {
> +				static const fwts_acpidump_field fields_ma[] = {
>  					FIELD_UINT("  Prox. Domain", fwts_acpi_table_slit_memory_affinity, proximity_domain),
>  					FIELD_UINT("  Base Addr Lo", fwts_acpi_table_slit_memory_affinity, base_addr_lo),
>  					FIELD_UINT("  Base Addr Hi", fwts_acpi_table_slit_memory_affinity, base_addr_hi),
> @@ -1058,7 +1061,7 @@ static void acpidump_srat(fwts_framework *fw, fwts_acpi_table_info *table)
>  			}
>  			break;
>  		case 2: {
> -				static fwts_acpidump_field fields_xa[] = {
> +				static const fwts_acpidump_field fields_xa[] = {
>  					FIELD_UINT("  Prox. Domain", fwts_acpi_table_slit_local_x2apic_affinity, proximity_domain),
>  					FIELD_UINT("  X2APIC ID",    fwts_acpi_table_slit_local_x2apic_affinity, x2apic_id),
>  					FIELD_UINT("  Flags",        fwts_acpi_table_slit_local_x2apic_affinity, flags),
> @@ -1072,25 +1075,22 @@ static void acpidump_srat(fwts_framework *fw, fwts_acpi_table_info *table)
>  			}
>  			break;
>  		default:
> -			ptr = data + length; /* force abort */
> +			ptr = (uint8_t *)table->data + table->length; /* force abort */
>  			break;
>  		}
>  	}
>  }
>  
> -static void acpidump_tcpa(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpidump_tcpa(fwts_framework *fw, const fwts_acpi_table_info *table)
>  {
> -	uint8_t *data = (uint8_t *)table->data;
> -	size_t length = table->length;
> -
> -	static fwts_acpidump_field fields[] = {
> +	static const fwts_acpidump_field fields[] = {
>  		FIELD_UINT("Reserved", 		fwts_acpi_table_tcpa, reserved),
>  		FIELD_UINT("Log Zone Length", 	fwts_acpi_table_tcpa, log_zone_length),
>  		FIELD_UINT("Log Zone Address", 	fwts_acpi_table_tcpa, log_zone_addr),
>  		FIELD_END
>  	};
>  
> -	acpi_dump_table_fields(fw, data, fields, length, length);
> +	acpi_dump_table_fields(fw, table->data, fields, table->length, table->length);
>  }
>  
>  /*
> @@ -1098,7 +1098,7 @@ static void acpidump_tcpa(fwts_framework *fw, fwts_acpi_table_info *table)
>   *	dump out ASF! descruption table
>   *	see: http://dmtf.org/documents/asf/alert-standard-format-asf-specification-200
>   */
> -static void acpidump_asf(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpidump_asf(fwts_framework *fw, const fwts_acpi_table_info *table)
>  {
>  	uint8_t *data = (uint8_t *)table->data;
>  	size_t length = table->length;
> @@ -1106,7 +1106,7 @@ static void acpidump_asf(fwts_framework *fw, fwts_acpi_table_info *table)
>  
>  	ptr = data + sizeof(fwts_acpi_table_header);
>  
> -	static fwts_acpidump_field asf_info_fields[] = {
> +	static const fwts_acpidump_field asf_info_fields[] = {
>  		FIELD_UINT("Watchdog Reset Value", 	fwts_acpi_table_asf_info, watchdog_reset_value),
>  		FIELD_UINT("Min Sensor Poll Wait Time", fwts_acpi_table_asf_info, min_sensor_poll_wait_time),
>  		FIELD_UINT("System ID",			fwts_acpi_table_asf_info, id),
> @@ -1118,7 +1118,7 @@ static void acpidump_asf(fwts_framework *fw, fwts_acpi_table_info *table)
>  		FIELD_END
>  	};
>  
> -	static fwts_acpidump_field asf_alrt_fields[] = {
> +	static const fwts_acpidump_field asf_alrt_fields[] = {
>  		FIELD_UINT("Assertion Event Bit Mask", 	fwts_acpi_table_asf_alrt, assertion_mask),
>  		FIELD_UINT("De-assertion Event Bit Mask", fwts_acpi_table_asf_alrt, deassertion_mask),
>  		FIELD_UINT("Number of Alerts", 		fwts_acpi_table_asf_alrt, number_of_alerts),
> @@ -1126,7 +1126,7 @@ static void acpidump_asf(fwts_framework *fw, fwts_acpi_table_info *table)
>  		FIELD_END
>  	};
>  
> -	static fwts_acpidump_field asf_alrt_element_fields[] = {
> +	static const fwts_acpidump_field asf_alrt_element_fields[] = {
>  		FIELD_UINT("Alert Device Address", 	fwts_acpi_table_asf_alrt_element, device_addr),
>  		FIELD_UINT("Alert Command", 		fwts_acpi_table_asf_alrt_element, command),
>  		FIELD_UINT("Alert Data Mask", 		fwts_acpi_table_asf_alrt_element, data_mask),
> @@ -1142,14 +1142,14 @@ static void acpidump_asf(fwts_framework *fw, fwts_acpi_table_info *table)
>  		FIELD_END
>  	};
>  
> -	static fwts_acpidump_field asf_rctl_fields[] = {
> +	static const fwts_acpidump_field asf_rctl_fields[] = {
>  		FIELD_UINT("Number of Controls", 	fwts_acpi_table_asf_rctl, number_of_controls),
>  		FIELD_UINT("Array Element Length", 	fwts_acpi_table_asf_rctl, array_element_length),
>  		FIELD_UINT("Reserved", 			fwts_acpi_table_asf_rctl, reserved),
>  		FIELD_END
>  	};
>  
> -	static fwts_acpidump_field asf_rctl_element_fields[] = {
> +	static const fwts_acpidump_field asf_rctl_element_fields[] = {
>  		FIELD_UINT("Control Function", 		fwts_acpi_table_asf_rctl_element, control_function),
>  		FIELD_UINT("Control Device Address", 	fwts_acpi_table_asf_rctl_element, control_device_addr),
>  		FIELD_UINT("Control Command", 		fwts_acpi_table_asf_rctl_element, control_command),
> @@ -1157,7 +1157,7 @@ static void acpidump_asf(fwts_framework *fw, fwts_acpi_table_info *table)
>  		FIELD_END
>  	};
>  
> -	static fwts_acpidump_field asf_rcmp_fields[] = {
> +	static const fwts_acpidump_field asf_rcmp_fields[] = {
>  		FIELD_UINT("Remote Control Capabilities", fwts_acpi_table_asf_rcmp, remote_control_capabilities),
>  		FIELD_UINT("RMCP Boot Options Completion Code", fwts_acpi_table_asf_rcmp, rcmp_completion_code),
>  		FIELD_UINT("RMCP IANA Enterprise ID", 	fwts_acpi_table_asf_rcmp, rcmp_iana),
> @@ -1168,26 +1168,26 @@ static void acpidump_asf(fwts_framework *fw, fwts_acpi_table_info *table)
>  		FIELD_END
>  	};
>  
> -	static fwts_acpidump_field asf_header_fields[] = {
> +	static const fwts_acpidump_field asf_header_fields[] = {
>  		FIELD_UINT("Type", fwts_acpi_table_asf_header, type),
>  		FIELD_UINT("Reserved", fwts_acpi_table_asf_header, reserved),
>  		FIELD_UINT("Length", fwts_acpi_table_asf_header, length),
>  		FIELD_END
>  	};
>  
> -	static fwts_acpidump_field asf_addr_fields[] = {
> +	static const fwts_acpidump_field asf_addr_fields[] = {
>  		FIELD_UINT("SEEPROM Address", 		fwts_acpi_table_asf_addr, seeprom_addr),
>  		FIELD_UINT("Number of Devices", 	fwts_acpi_table_asf_addr, number_of_devices),
>  		FIELD_END
>  	};
>  
> -	static fwts_acpidump_field asf_addr_element_fields[] = {
> +	static const fwts_acpidump_field asf_addr_element_fields[] = {
>  		FIELD_UINT("Fixed SMBus Address", 	fwts_acpi_table_asf_addr_element, fixed_smbus_addr),
>  		FIELD_END
>  	};
>  
>  	while (ptr < data + length) {
> -		fwts_acpi_table_asf_header *hdr = (fwts_acpi_table_asf_header*)ptr;
> +		fwts_acpi_table_asf_header *hdr = (fwts_acpi_table_asf_header *)ptr;
>  		fwts_acpi_table_asf_alrt *alrt;
>  		fwts_acpi_table_asf_rctl *rctl;
>  		fwts_acpi_table_asf_addr *addr;
> @@ -1261,11 +1261,13 @@ static void acpidump_asf(fwts_framework *fw, fwts_acpi_table_info *table)
>   */
>  static void acpidump_dmar_device_scope(
>  	fwts_framework *fw,
> -	uint8_t *data,
> -	uint8_t *device_scope,
> -	size_t device_scope_length)
> +	const uint8_t *data,
> +	const uint8_t *device_scope,
> +	const size_t device_scope_length)
>  {
> -	static fwts_acpidump_field dmar_device_scope_fields[] = {
> +	size_t length = device_scope_length;
> +
> +	static const fwts_acpidump_field dmar_device_scope_fields[] = {
>  		FIELD_UINT("Type",			fwts_acpi_table_dmar_device_scope, type),
>  		FIELD_UINT("Length",			fwts_acpi_table_dmar_device_scope, length),
>  		FIELD_UINT("Reserved",			fwts_acpi_table_dmar_device_scope, reserved),
> @@ -1275,7 +1277,7 @@ static void acpidump_dmar_device_scope(
>  	};
>  
>  	/* Parse through multiple device scope entries */
> -	while (device_scope_length > 0) {
> +	while (length > 0) {
>  		unsigned int i;
>  
>  		fwts_acpi_table_dmar_device_scope *device_scope_entry =
> @@ -1285,14 +1287,14 @@ static void acpidump_dmar_device_scope(
>  		 *  The device scope has a variable length path,
>  		 *  so just dump this raw data out for now.
>  		 */
> -		for (i=0; i < device_scope_entry->length - sizeof(fwts_acpi_table_dmar_device_scope); i++) {
> +		for (i = 0; i < device_scope_entry->length - sizeof(fwts_acpi_table_dmar_device_scope); i++) {
>  			uint8_t val8 = device_scope_entry->path[i];
>  			fwts_log_info_verbatum(fw, "%s 0x%2.2x [%d]", acpi_dump_field_info("Path", 1,
>  				(device_scope - data) + sizeof(fwts_acpi_table_dmar_device_scope) + i),
>  				val8, i);
>  		}
>  		device_scope += device_scope_entry->length;
> -		device_scope_length -= device_scope_entry->length;
> +		length -= device_scope_entry->length;
>  	}
>  }
>  
> @@ -1301,26 +1303,24 @@ static void acpidump_dmar_device_scope(
>   *	dump out DMAR
>   *	http://download.intel.com/technology/computing/vptech/Intel(r)_VT_for_Direct_IO.pdf
>   */
> -static void acpidump_dmar(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpidump_dmar(fwts_framework *fw, const fwts_acpi_table_info *table)
>  {
> -	uint8_t *data = (uint8_t *)table->data;
> -	size_t length = table->length;
> -	uint8_t *ptr = data;
> +	const uint8_t *data = table->data, *ptr = table->data;
>  
> -	static fwts_acpidump_field dmar_fields[] = {
> +	static const fwts_acpidump_field dmar_fields[] = {
>  		FIELD_UINT("Host Address Width", 	fwts_acpi_table_dmar, host_addr_width),
>  		FIELD_UINT("Flags", 			fwts_acpi_table_dmar, flags),
>  		FIELD_UINT("Reserved", 			fwts_acpi_table_dmar, reserved),
>  		FIELD_END
>  	};
>  
> -	static fwts_acpidump_field dmar_header_fields[] = {
> +	static const fwts_acpidump_field dmar_header_fields[] = {
>  		FIELD_UINT("Type",			fwts_acpi_table_dmar_header, type),
>  		FIELD_UINT("Length",			fwts_acpi_table_dmar_header, length),
>  		FIELD_END
>  	};
>  
> -	static fwts_acpidump_field dmar_hardware_unit_fields[] = {
> +	static const fwts_acpidump_field dmar_hardware_unit_fields[] = {
>  		FIELD_UINT("Flags",			fwts_acpi_table_dmar_hardware_unit, flags),
>  		FIELD_UINT("Reserved",			fwts_acpi_table_dmar_hardware_unit, reserved),
>  		FIELD_UINT("Segment Number",		fwts_acpi_table_dmar_hardware_unit, segment_number),
> @@ -1329,16 +1329,15 @@ static void acpidump_dmar(fwts_framework *fw, fwts_acpi_table_info *table)
>  		FIELD_END
>  	};
>  
> -	static fwts_acpidump_field dmar_reserved_memory_fields[] = {
> +	static const fwts_acpidump_field dmar_reserved_memory_fields[] = {
>  		FIELD_UINT("Reserved",			fwts_acpi_table_dmar_reserved_memory, reserved),
>  		FIELD_UINT("Segment",			fwts_acpi_table_dmar_reserved_memory, segment),
>  		FIELD_UINT("Base Address",		fwts_acpi_table_dmar_reserved_memory, base_address),
>  		FIELD_UINT("End Address",		fwts_acpi_table_dmar_reserved_memory, end_address),
> -
>  		FIELD_END
>  	};
>  
> -	static fwts_acpidump_field dmar_atsr_fields[] = {
> +	static const fwts_acpidump_field dmar_atsr_fields[] = {
>  		FIELD_UINT("Flags",			fwts_acpi_table_dmar_atsr, flags),
>  		FIELD_UINT("Reserved",			fwts_acpi_table_dmar_atsr, reserved),
>  		FIELD_UINT("Segment",			fwts_acpi_table_dmar_atsr, segment),
> @@ -1348,7 +1347,7 @@ static void acpidump_dmar(fwts_framework *fw, fwts_acpi_table_info *table)
>  	__acpi_dump_table_fields(fw, ptr, dmar_fields, ptr - data);
>  	ptr += sizeof(fwts_acpi_table_dmar);
>  
> -	while (ptr < data + length) {
> +	while (ptr < data + table->length) {
>  		fwts_acpi_table_dmar_header *header =
>  			(fwts_acpi_table_dmar_header *)ptr;
>  
> @@ -1395,19 +1394,19 @@ static void acpidump_dmar(fwts_framework *fw, fwts_acpi_table_info *table)
>   *  acpidump_slic()
>   *	dump out SLIC
>   */
> -static void acpidump_slic(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpidump_slic(fwts_framework *fw, const fwts_acpi_table_info *table)
>  {
>  	uint8_t *data = (uint8_t *)table->data;
>  	size_t length = table->length;
>  	uint8_t *ptr = data;
>  
> -	static fwts_acpidump_field slic_header_fields[] = {
> +	static const fwts_acpidump_field slic_header_fields[] = {
>  		FIELD_UINT("Type", 	fwts_acpi_table_slic_header, type),
>  		FIELD_UINT("Length", 	fwts_acpi_table_slic_header, length),
>  		FIELD_END
>  	};
>  
> -	static fwts_acpidump_field slic_key_fields[] = {
> +	static const fwts_acpidump_field slic_key_fields[] = {
>  		FIELD_UINT("Key Type", 	fwts_acpi_table_slic_key, key_type),
>  		FIELD_UINT("Version", 	fwts_acpi_table_slic_key, version),
>  		FIELD_UINT("Reserved", 	fwts_acpi_table_slic_key, reserved),
> @@ -1418,7 +1417,7 @@ static void acpidump_slic(fwts_framework *fw, fwts_acpi_table_info *table)
>  		FIELD_END
>  	};
>  
> -	static fwts_acpidump_field slic_marker_fields[] = {
> +	static const fwts_acpidump_field slic_marker_fields[] = {
>  		FIELD_UINT("Version", 		fwts_acpi_table_slic_marker, version),
>  		FIELD_STR("OEM ID", 		fwts_acpi_table_slic_marker, oem_id),
>  		FIELD_STR("OEM TABLE ID", 	fwts_acpi_table_slic_marker, oem_table_id),
> @@ -1469,17 +1468,16 @@ static void acpidump_slic(fwts_framework *fw, fwts_acpi_table_info *table)
>   *  acpidump_uefi()
>   *	dump out UEFI tables
>   */
> -static void acpidump_uefi(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpidump_uefi(fwts_framework *fw, const const fwts_acpi_table_info *table)
>  {
> -	uint8_t *data = (uint8_t *)table->data;
>  	fwts_acpi_table_uefi *uefi = (fwts_acpi_table_uefi *)table->data;
>  
> -	static fwts_acpidump_field uefi_fields[] = {
> +	static const fwts_acpidump_field uefi_fields[] = {
>  		FIELD_GUID("UUID", 	fwts_acpi_table_uefi, uuid),
>  		FIELD_END
>  	};
>  
> -	__acpi_dump_table_fields(fw, data, uefi_fields, 0);
> +	__acpi_dump_table_fields(fw, table->data, uefi_fields, 0);
>  	fwts_log_nl(fw);
>  	acpi_dump_raw_data(fw, uefi->data, table->length - sizeof(fwts_acpi_table_uefi),
>  		sizeof(fwts_acpi_table_uefi));
> @@ -1490,12 +1488,9 @@ static void acpidump_uefi(fwts_framework *fw, fwts_acpi_table_info *table)
>   *	dump BGRT, see 5.2.22 Boot Graphics Resource Table (BGRT)
>   *	of version 5.0 ACPI spec.
>   */
> -static void acpidump_bgrt(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpidump_bgrt(fwts_framework *fw, const fwts_acpi_table_info *table)
>  {
> -	uint8_t *data = (uint8_t *)table->data;
> -	size_t length = table->length;
> -
> -	static fwts_acpidump_field bgrt_fields[] = {
> +	static const fwts_acpidump_field bgrt_fields[] = {
>  		FIELD_UINT("Version", 		fwts_acpi_table_bgrt, version),
>  		FIELD_UINT("Status", 		fwts_acpi_table_bgrt, status),
>  		FIELD_UINT("Image Type", 	fwts_acpi_table_bgrt, image_type),
> @@ -1505,7 +1500,7 @@ static void acpidump_bgrt(fwts_framework *fw, fwts_acpi_table_info *table)
>  		FIELD_END
>  	};
>  
> -	acpi_dump_table_fields(fw, data, bgrt_fields, length, length);
> +	acpi_dump_table_fields(fw, table->data, bgrt_fields, table->length, table->length);
>  }
>  
>  /*
> @@ -1513,12 +1508,9 @@ static void acpidump_bgrt(fwts_framework *fw, fwts_acpi_table_info *table)
>   *	dump GTDT, see 5.2.24 Generic Timer Description Table (GTDT)
>   *	of version 5.0 ACPI spec.
>   */
> -static void acpidump_gtdt(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpidump_gtdt(fwts_framework *fw, const fwts_acpi_table_info *table)
>  {
> -	uint8_t *data = (uint8_t *)table->data;
> -	size_t length = table->length;
> -
> -	static fwts_acpidump_field gtdt_fields[] = {
> +	static const fwts_acpidump_field gtdt_fields[] = {
>  		FIELD_UINT("Physical Address", 		fwts_acpi_table_gtdt, phys_addr),
>  		FIELD_UINT("Global Flags", 		fwts_acpi_table_gtdt, global_flags),
>  		FIELD_UINT("Secure PL1 Timer GSIV", 	fwts_acpi_table_gtdt, secure_PL1_timer_GSIV),
> @@ -1532,7 +1524,7 @@ static void acpidump_gtdt(fwts_framework *fw, fwts_acpi_table_info *table)
>  		FIELD_END
>  	};
>  
> -	acpi_dump_table_fields(fw, data, gtdt_fields, length, length);
> +	acpi_dump_table_fields(fw, table->data, gtdt_fields, table->length, table->length);
>  }
>  
>  /*
> @@ -1540,27 +1532,25 @@ static void acpidump_gtdt(fwts_framework *fw, fwts_acpi_table_info *table)
>   *	dump FPDT, see 5.2.23 Firmware Performance Data Table (FPDT)
>   *	of version 5.0 ACPI spec.
>   */
> -static void acpidump_fpdt(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpidump_fpdt(fwts_framework *fw, const fwts_acpi_table_info *table)
>  {
> -	uint8_t *data = (uint8_t *)table->data;
> -	uint8_t *ptr  = data;
> -	size_t length = table->length;
> +	uint8_t *data = (uint8_t *)table->data, *ptr = data;
>  	const size_t fpdt_hdr_len = sizeof(fwts_acpi_table_fpdt_header);
>  
> -	static fwts_acpidump_field fpdt_header_fields[] = {
> +	static const fwts_acpidump_field fpdt_header_fields[] = {
>  		FIELD_UINT("Type", 		fwts_acpi_table_fpdt_header, type),
>  		FIELD_UINT("Length", 		fwts_acpi_table_fpdt_header, length),
>  		FIELD_UINT("Revision", 		fwts_acpi_table_fpdt_header, revision),
>  		FIELD_END
>  	};
>  
> -	static fwts_acpidump_field fpdt_basic_boot_perf_ptr_fields[] = {
> +	static const fwts_acpidump_field fpdt_basic_boot_perf_ptr_fields[] = {
>  		FIELD_UINT("Reserved", 		fwts_acpi_table_fpdt_basic_boot_perf_ptr, reserved),
>  		FIELD_UINT("FBPT Pointer", 	fwts_acpi_table_fpdt_basic_boot_perf_ptr, fbpt_addr),
>  		FIELD_END
>  	};
>  
> -	static fwts_acpidump_field fpdt_s3_perf_ptr_fields[] = {
> +	static const fwts_acpidump_field fpdt_s3_perf_ptr_fields[] = {
>  		FIELD_UINT("Reserved", 		fwts_acpi_table_fpdt_s3_perf_ptr, reserved),
>  		FIELD_UINT("S3PT Pointer", 	fwts_acpi_table_fpdt_s3_perf_ptr, s3pt_addr),
>  		FIELD_END
> @@ -1573,8 +1563,8 @@ static void acpidump_fpdt(fwts_framework *fw, fwts_acpi_table_info *table)
>  	 *  implementation should mmap the memory that the records point to and also
>  	 *  dump these out.  That's an implementation issue for later.
>  	 */
> -	while (ptr < data + length) {
> -		fwts_acpi_table_fpdt_header *fpdt = (fwts_acpi_table_fpdt_header*)ptr;
> +	while (ptr < data + table->length) {
> +		fwts_acpi_table_fpdt_header *fpdt = (fwts_acpi_table_fpdt_header *)ptr;
>  
>  		fwts_log_nl(fw);
>  
> @@ -1624,17 +1614,14 @@ static void acpidump_fpdt(fwts_framework *fw, fwts_acpi_table_info *table)
>   *	dump RASF, see 5.2.20 ACPI RAS FeatureTable (RASF)
>   *	of version 5.0 ACPI spec.
>   */
> -static void acpidump_rasf(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpidump_rasf(fwts_framework *fw, const fwts_acpi_table_info *table)
>  {
> -	uint8_t *data = (uint8_t *)table->data;
> -	size_t length = table->length;
> -
> -	static fwts_acpidump_field rasf_fields[] = {
> +	static const fwts_acpidump_field rasf_fields[] = {
>  		FIELD_UINTS("Comm. Channel ID", fwts_acpi_table_rasf, platform_cc_id),
>  		FIELD_END
>  	};
>  
> -	acpi_dump_table_fields(fw, data, rasf_fields, length, length);
> +	acpi_dump_table_fields(fw, table->data, rasf_fields, table->length, table->length);
>  
>  	/* No idea how to dump rest of table, spec is a rather poor */
>  	acpi_dump_raw_table(fw, table);
> @@ -1645,19 +1632,17 @@ static void acpidump_rasf(fwts_framework *fw, fwts_acpi_table_info *table)
>   *	dump RASF, see 14 ACPI PCCT (Platform Communications Channel)
>   *	of version 5.0 ACPI spec.
>   */
> -static void acpidump_pcct(fwts_framework *fw, fwts_acpi_table_info *table)
> +static void acpidump_pcct(fwts_framework *fw, const fwts_acpi_table_info *table)
>  {
> -	uint8_t *data = (uint8_t *)table->data;
> -	size_t length = table->length;
> -	uint8_t *ptr  = data;
> +	uint8_t *data = (uint8_t *)table->data, *ptr = data;
>  
> -	static fwts_acpidump_field pcct_fields[] = {
> +	static const fwts_acpidump_field pcct_fields[] = {
>  		FIELD_UINT ("Flags",	fwts_acpi_table_pcct, flags),
>  		FIELD_UINTS("Reserved", fwts_acpi_table_pcct, reserved),
>  		FIELD_END
>  	};
>  
> -	static fwts_acpidump_field type0_fields[] = {
> +	static const fwts_acpidump_field type0_fields[] = {
>  		FIELD_UINTS("Reserved",		fwts_acpi_table_pcct_subspace_type_0, reserved),
>  		FIELD_UINT ("Base Address",	fwts_acpi_table_pcct_subspace_type_0, base_address),
>  		FIELD_UINT ("Length",		fwts_acpi_table_pcct_subspace_type_0, length),
> @@ -1670,12 +1655,12 @@ static void acpidump_pcct(fwts_framework *fw, fwts_acpi_table_info *table)
>  		FIELD_END
>  	};
>  
> -	acpi_dump_table_fields(fw, data, pcct_fields, length, length);
> +	acpi_dump_table_fields(fw, data, pcct_fields, table->length, table->length);
>  
>  	ptr += sizeof(fwts_acpi_table_pcct);
>  
>  	/* Now scan through the array of subspace structures */
> -	while (ptr < data + length) {
> +	while (ptr < data + table->length) {
>  		fwts_acpi_table_pcct_subspace_header *header =
>  			(fwts_acpi_table_pcct_subspace_header *)ptr;
>  
> @@ -1695,9 +1680,9 @@ static void acpidump_pcct(fwts_framework *fw, fwts_acpi_table_info *table)
>  }
>  
>  typedef struct {
> -	char *name;
> -	void (*func)(fwts_framework *fw, fwts_acpi_table_info *table);
> -	int  standard_header;
> +	const char *name;
> +	void (*func)(fwts_framework *fw, const fwts_acpi_table_info *table);
> +	const int  standard_header;
>  } acpidump_table_vec;
>  
>  /* To be implemented */
> @@ -1706,7 +1691,7 @@ typedef struct {
>  #define acpidump_msct		acpi_dump_raw_table
>  #define acpidump_mpst		acpi_dump_raw_table
>  
> -static acpidump_table_vec table_vec[] = {
> +static const acpidump_table_vec table_vec[] = {
>  	{ "APIC", 	acpidump_madt, 	1 },
>  	{ "ASF!", 	acpidump_asf, 	1 },
>  	{ "BERT", 	acpidump_bert, 	1 },
> @@ -1750,8 +1735,8 @@ static int acpidump_table(fwts_framework *fw, fwts_acpi_table_info *table)
>  	size_t length = table->length;
>  	int i;
>  
> -	for (i=0; table_vec[i].name != NULL; i++) {
> -		if (strncmp(table_vec[i].name, (char*)data, strlen(table_vec[i].name)) == 0) {
> +	for (i = 0; table_vec[i].name != NULL; i++) {
> +		if (strncmp(table_vec[i].name, (char *)data, strlen(table_vec[i].name)) == 0) {
>  			if (table_vec[i].standard_header) {
>  				fwts_acpi_table_get_header(&hdr, data);
>  				acpidump_hdr(fw, &hdr, length);
> @@ -1772,12 +1757,11 @@ static int acpidump_table(fwts_framework *fw, fwts_acpi_table_info *table)
>  static int acpidump_test1(fwts_framework *fw)
>  {
>  	int i;
> -
>  	fwts_acpi_table_info *table;
>  
>  	fwts_infoonly(fw);
>  
> -	for (i=0; (fwts_acpi_get_table(fw, i, &table) == FWTS_OK) && (table !=NULL); i++) {
> +	for (i = 0; (fwts_acpi_get_table(fw, i, &table) == FWTS_OK) && (table !=NULL); i++) {
>  		fwts_log_info_verbatum(fw, "%s @ %4.4" PRIx32 " (%zd bytes)", table->name, (uint32_t)table->addr, table->length);
>  		fwts_log_info_verbatum(fw, "---------------");
>  		acpidump_table(fw, table);
> 

Acked-by: Alex Hung <alex.hung at canonicail.com>



More information about the fwts-devel mailing list