[PATCH 3/5] ACPI tables: when bodging up an RSDP, do the right thing for the arch

Alex Hung alex.hung at canonical.com
Wed Jan 27 03:01:55 UTC 2016


On 2016-01-22 09:14 AM, Al Stone wrote:
> If it is necessary to create an RSDP table because there is none that
> can be read, add in only the RSDT or XSDT pointers as needed.  For x86,
> it can be either, but for arm64 it should only be the XSDT address that
> is used in the RSDP.
>
> Signed-off-by: Al Stone <al.stone at linaro.org>
> ---
>   src/lib/src/fwts_acpi_tables.c | 19 +++++++++++--------
>   1 file changed, 11 insertions(+), 8 deletions(-)
>
> diff --git a/src/lib/src/fwts_acpi_tables.c b/src/lib/src/fwts_acpi_tables.c
> index 0191b6b..83bd1dd 100644
> --- a/src/lib/src/fwts_acpi_tables.c
> +++ b/src/lib/src/fwts_acpi_tables.c
> @@ -1101,14 +1101,17 @@ static int fwts_acpi_load_tables_fixup(fwts_framework *fw)
>   	}
>
>   	/* Now we have all the tables, final fix up is required */
> -	if (rsdp->rsdt_address != rsdt_fake_addr) {
> -		rsdp->rsdt_address = rsdt_fake_addr;
> -		redo_rsdp_checksum = true;
> -	}
> -	if ((rsdp->revision > 0) && (rsdp->length >= 36) &&
> -	    (rsdp->xsdt_address != xsdt_fake_addr)) {
> -		rsdp->xsdt_address = xsdt_fake_addr;
> -		redo_rsdp_checksum = true;
> +	if (fw->target_arch == FWTS_ARCH_ARM64) {
> +		if ((rsdp->revision > 0) && (rsdp->length >= 36) &&
> +		    (rsdp->xsdt_address != xsdt_fake_addr)) {
> +			rsdp->xsdt_address = xsdt_fake_addr;
> +			redo_rsdp_checksum = true;
> +		}
> +	} else {
> +		if (rsdp->rsdt_address != rsdt_fake_addr) {
> +			rsdp->rsdt_address = rsdt_fake_addr;
> +			redo_rsdp_checksum = true;
> +		}

Since non-ARM (ex. x86) can have either RSDP or XSDP, should the below 
statements be included here as well?

		if ((rsdp->revision > 0) && (rsdp->length >= 36) &&
		    (rsdp->xsdt_address != xsdt_fake_addr)) {
			rsdp->xsdt_address = xsdt_fake_addr;
			redo_rsdp_checksum = true;
		}
>   	}
>   	/* And update checksum if we've updated the rsdp */
>   	if (redo_rsdp_checksum) {
>


-- 
Cheers,
Alex Hung



More information about the fwts-devel mailing list