2012-11-13 03:31:47

by ethan zhao

[permalink] [raw]
Subject: [PATCH ] tbfadt.c: output warning only when 64bit 32bit address of FACS/DSDT all have value but not equal to each other

Hi, Len, Robert,

Please help to check the following patch, add more conditions
when validate the 64bit 32bit FACS/DSDT address in FADT to follow ACPI
spec, In the meantime, keep the compatibility and latitude.


Thanks,
Ethan



>From c1116211a7b329c26b0370565c36b084ceb08f71 Mon Sep 17 00:00:00 2001
From: ethan.zhao <[email protected]>
Date: Tue, 13 Nov 2012 22:21:12 -0800
Subject: [PATCH 642/642] To follow the ACPI spec 3,4&5 and keep the
compatibility and latitude,only
output mismatch warning when 64bit address and 32bit address of
FACS/DSDT are all
valid but not equal to each other.


Signed-off-by: ethan.zhao <[email protected]>
---
drivers/acpi/acpica/tbfadt.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/acpi/acpica/tbfadt.c b/drivers/acpi/acpica/tbfadt.c
index 3906518..f23f512 100644
--- a/drivers/acpi/acpica/tbfadt.c
+++ b/drivers/acpi/acpica/tbfadt.c
@@ -512,7 +512,7 @@ static void acpi_tb_validate_fadt(void)
* the 32-bit and 64-bit address fields
(FIRMWARE_CTRL/X_FIRMWARE_CTRL and
* DSDT/X_DSDT) would indicate the presence of two FACS or two
DSDT tables.
*/
- if (acpi_gbl_FADT.facs &&
+ if ((acpi_gbl_FADT.facs && acpi_gbl_FADT.Xfacs) &&
(acpi_gbl_FADT.Xfacs != (u64)acpi_gbl_FADT.facs)) {
ACPI_BIOS_WARNING((AE_INFO,
"32/64X FACS address mismatch in FADT - "
@@ -523,7 +523,7 @@ static void acpi_tb_validate_fadt(void)
acpi_gbl_FADT.Xfacs = (u64)acpi_gbl_FADT.facs;
}

- if (acpi_gbl_FADT.dsdt &&
+ if ((acpi_gbl_FADT.dsdt && acpi_gbl_FADT.Xdsdt) &&
(acpi_gbl_FADT.Xdsdt != (u64)acpi_gbl_FADT.dsdt)) {
ACPI_BIOS_WARNING((AE_INFO,
"32/64X DSDT address mismatch in FADT - "
--
1.7.1


Attachments:
To-follow-the-ACPI-spec-3-4-5-and-keep-the-compatibi.patch (1.45 kB)

2012-11-13 16:26:52

by Moore, Robert

[permalink] [raw]
Subject: RE: [PATCH ] tbfadt.c: output warning only when 64bit 32bit address of FACS/DSDT all have value but not equal to each other

Ethan,

Does this actually solve a problem that you have seen?

I ask because of the code that converts the FADT to the common internal format:

acpi_tb_convert_fadt (
...
/*
* Expand the 32-bit FACS and DSDT addresses to 64-bit as necessary.
* Later code will always use the X 64-bit field.
*/
if (!acpi_gbl_FADT.Xfacs) {
acpi_gbl_FADT.Xfacs = (u64) acpi_gbl_FADT.facs;
}
if (!acpi_gbl_FADT.Xdsdt) {
acpi_gbl_FADT.Xdsdt = (u64) acpi_gbl_FADT.dsdt;
}

This function is called before the call to validate_fadt, so if the 64-bit address was originally zero, it is set to be equal to the 32-bit address. Later, only the 64-bit address field is used.

So, after convert_fadt, we have the following possible conditions:

1) Both facs and Xfacs are zero
2) facs is zero, but Xfacs in non-zero
3) Both facs and Xfacs are non-zero but equal
4) Both facs and Xfacs are non-zero and not equal

Issues for each condition above:

1) There is no FACS
2) No error, we are going to use Xfacs anyway
3) No error, we will use Xfacs
4) This is the error condition, Xfacs != facs


The check for case (4) is what appears in validate_facs:

If ((facs > 0) && (facs != Xfacs))

I don't think we need to check the value of Xfacs against zero because we know we are in case (3) or (4) after the check for facs nonzero:

if
(facs > 0) - if true, we are in case (3) or (4)
if
(facs != Xfacs) - if true, we now know we are in case (4) --> error.


Unless I'm missing something early this morning.
Bob


> -----Original Message-----
> From: Ethan Zhao [mailto:[email protected]]
> Sent: Monday, November 12, 2012 7:32 PM
> To: Brown, Len
> Cc: Moore, Robert; Zheng, Lv; LKML
> Subject: [PATCH ] tbfadt.c: output warning only when 64bit 32bit address
> of FACS/DSDT all have value but not equal to each other
>
> Hi, Len, Robert,
>
> Please help to check the following patch, add more conditions when
> validate the 64bit 32bit FACS/DSDT address in FADT to follow ACPI spec, In
> the meantime, keep the compatibility and latitude.
>
>
> Thanks,
> Ethan
>
>
>
> From c1116211a7b329c26b0370565c36b084ceb08f71 Mon Sep 17 00:00:00 2001
> From: ethan.zhao <[email protected]>
> Date: Tue, 13 Nov 2012 22:21:12 -0800
> Subject: [PATCH 642/642] To follow the ACPI spec 3,4&5 and keep the
> compatibility and latitude,only output mismatch warning when 64bit
> address and 32bit address of FACS/DSDT are all valid but not equal to
> each other.
>
>
> Signed-off-by: ethan.zhao <[email protected]>
> ---
> drivers/acpi/acpica/tbfadt.c | 4 ++--
> 1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/acpi/acpica/tbfadt.c b/drivers/acpi/acpica/tbfadt.c
> index 3906518..f23f512 100644
> --- a/drivers/acpi/acpica/tbfadt.c
> +++ b/drivers/acpi/acpica/tbfadt.c
> @@ -512,7 +512,7 @@ static void acpi_tb_validate_fadt(void)
> * the 32-bit and 64-bit address fields
> (FIRMWARE_CTRL/X_FIRMWARE_CTRL and
> * DSDT/X_DSDT) would indicate the presence of two FACS or two
> DSDT tables.
> */
> - if (acpi_gbl_FADT.facs &&
> + if ((acpi_gbl_FADT.facs && acpi_gbl_FADT.Xfacs) &&
> (acpi_gbl_FADT.Xfacs != (u64)acpi_gbl_FADT.facs)) {
> ACPI_BIOS_WARNING((AE_INFO,
> "32/64X FACS address mismatch in FADT -
> "
> @@ -523,7 +523,7 @@ static void acpi_tb_validate_fadt(void)
> acpi_gbl_FADT.Xfacs = (u64)acpi_gbl_FADT.facs;
> }
>
> - if (acpi_gbl_FADT.dsdt &&
> + if ((acpi_gbl_FADT.dsdt && acpi_gbl_FADT.Xdsdt) &&
> (acpi_gbl_FADT.Xdsdt != (u64)acpi_gbl_FADT.dsdt)) {
> ACPI_BIOS_WARNING((AE_INFO,
> "32/64X DSDT address mismatch in FADT -
> "
> --
> 1.7.1

2012-11-16 02:28:46

by ethan zhao

[permalink] [raw]
Subject: Re: [PATCH ] tbfadt.c: output warning only when 64bit 32bit address of FACS/DSDT all have value but not equal to each other

Bob,
Thanks for your detailed reviewing about the whole possible conditions.
I.C. So that is impossible zero value for Xfacs /Xdsdt if
facs/dsdt >0, for they are assigned in acpi_tb_convert_fadt(), I need
to move my eyes one line code higher to see why it yelled twice
but not using the 32bit address at once in acpi_tb_convert_fadt().
Do you agree to move the checking code warning and into
acpi_tb_convert_fadt to make the code more simple and clear ? Or just
keep it for more rework, more bug?


Thanks,
Ethan

2012-11-16 03:27:32

by Moore, Robert

[permalink] [raw]
Subject: RE: [PATCH ] tbfadt.c: output warning only when 64bit 32bit address of FACS/DSDT all have value but not equal to each other

Basically, the flow goes like this:

1) We convert the original FADT (multiple versions) to a common internal FADT.
2) Then we check the common internal FADT for errors/inconsistencies.

In this way, we don't need to have different error checking for different versions of the FADT, and this is probably not going to change.

One thing we are going to add is to make a decision on whether to favor a 32-bit address or a 64-bit address (if they are different) based upon the age of the machine/BIOS. This is for Windows compatibility.

Bob


> -----Original Message-----
> From: Ethan Zhao [mailto:[email protected]]
> Sent: Thursday, November 15, 2012 6:29 PM
> To: Moore, Robert
> Cc: Brown, Len; Zheng, Lv; LKML
> Subject: Re: [PATCH ] tbfadt.c: output warning only when 64bit 32bit
> address of FACS/DSDT all have value but not equal to each other
>
> Bob,
> Thanks for your detailed reviewing about the whole possible
> conditions.
> I.C. So that is impossible zero value for Xfacs /Xdsdt if
> facs/dsdt >0, for they are assigned in acpi_tb_convert_fadt(), I need to
> move my eyes one line code higher to see why it yelled twice but not using
> the 32bit address at once in acpi_tb_convert_fadt().
> Do you agree to move the checking code warning and into
> acpi_tb_convert_fadt to make the code more simple and clear ? Or just keep
> it for more rework, more bug?
>
>
> Thanks,
> Ethan

2012-11-16 05:46:48

by ethan zhao

[permalink] [raw]
Subject: Re: [PATCH ] tbfadt.c: output warning only when 64bit 32bit address of FACS/DSDT all have value but not equal to each other

Bob,
How about moving some checking code as following patch ?

From f46d539d81c763aa4e3e98f9fc1e94e0af48bd15 Mon Sep 17 00:00:00 2001
From: ethan.zhao <[email protected]>
Date: Sat, 17 Nov 2012 00:48:41 -0800
Subject: [PATCH]acpica/tbfadt.c Move some checking and 32bit to 64bit
assignment code from acpi_tb_validate_fadt() to
acpi_tb_convert_fadt to make the logic clearer and void multiple same
kind of warning.


Signed-off-by: ethan.zhao <[email protected]>
---
drivers/acpi/acpica/tbfadt.c | 51 ++++++++++++++---------------------------
1 files changed, 18 insertions(+), 33 deletions(-)

diff --git a/drivers/acpi/acpica/tbfadt.c b/drivers/acpi/acpica/tbfadt.c
index f23f512..dd18aba 100644
--- a/drivers/acpi/acpica/tbfadt.c
+++ b/drivers/acpi/acpica/tbfadt.c
@@ -388,18 +388,30 @@ static void acpi_tb_convert_fadt(void)
*/
if (!acpi_gbl_FADT.Xfacs) {
acpi_gbl_FADT.Xfacs = (u64) acpi_gbl_FADT.facs;
- } else if (acpi_gbl_FADT.facs &&
+ } else if ((acpi_gbl_FADT.facs && acpi_gbl_FADT.Xfacs) &&
(acpi_gbl_FADT.Xfacs != (u64) acpi_gbl_FADT.facs)) {
- ACPI_WARNING((AE_INFO,
- "32/64 FACS address mismatch in FADT - two FACS tables!"));
+ ACPI_BIOS_WARNING((AE_INFO,
+ "32/64X FACS address mismatch in FADT - "
+ "0x%8.8X/0x%8.8X%8.8X, using 32",
+ acpi_gbl_FADT.facs,
+ ACPI_FORMAT_UINT64(acpi_gbl_FADT.Xfacs)));
+
+ acpi_gbl_FADT.Xfacs = (u64)acpi_gbl_FADT.facs;
+
}

if (!acpi_gbl_FADT.Xdsdt) {
acpi_gbl_FADT.Xdsdt = (u64) acpi_gbl_FADT.dsdt;
- } else if (acpi_gbl_FADT.dsdt &&
+ } else if ((acpi_gbl_FADT.dsdt && acpi_gbl_FADT.Xdsdt) &&
(acpi_gbl_FADT.Xdsdt != (u64) acpi_gbl_FADT.dsdt)) {
- ACPI_WARNING((AE_INFO,
- "32/64 DSDT address mismatch in FADT - two DSDT tables!"));
+ ACPI_BIOS_WARNING((AE_INFO,
+ "32/64X DSDT address mismatch in FADT - "
+ "0x%8.8X/0x%8.8X%8.8X, using 32",
+ acpi_gbl_FADT.dsdt,
+ ACPI_FORMAT_UINT64(acpi_gbl_FADT.Xdsdt)));
+
+ acpi_gbl_FADT.Xdsdt = (u64)acpi_gbl_FADT.dsdt;
+
}

/*
@@ -507,33 +519,6 @@ static void acpi_tb_validate_fadt(void)
u8 length;
u32 i;

- /*
- * Check for FACS and DSDT address mismatches. An address mismatch between
- * the 32-bit and 64-bit address fields (FIRMWARE_CTRL/X_FIRMWARE_CTRL and
- * DSDT/X_DSDT) would indicate the presence of two FACS or two DSDT tables.
- */
- if (acpi_gbl_FADT.facs &&
- (acpi_gbl_FADT.Xfacs != (u64)acpi_gbl_FADT.facs)) {
- ACPI_BIOS_WARNING((AE_INFO,
- "32/64X FACS address mismatch in FADT - "
- "0x%8.8X/0x%8.8X%8.8X, using 32",
- acpi_gbl_FADT.facs,
- ACPI_FORMAT_UINT64(acpi_gbl_FADT.Xfacs)));
-
- acpi_gbl_FADT.Xfacs = (u64)acpi_gbl_FADT.facs;
- }
-
- if (acpi_gbl_FADT.dsdt &&
- (acpi_gbl_FADT.Xdsdt != (u64)acpi_gbl_FADT.dsdt)) {
- ACPI_BIOS_WARNING((AE_INFO,
- "32/64X DSDT address mismatch in FADT - "
- "0x%8.8X/0x%8.8X%8.8X, using 32",
- acpi_gbl_FADT.dsdt,
- ACPI_FORMAT_UINT64(acpi_gbl_FADT.Xdsdt)));
-
- acpi_gbl_FADT.Xdsdt = (u64)acpi_gbl_FADT.dsdt;
- }
-
/* If Hardware Reduced flag is set, we are all done */

if (acpi_gbl_reduced_hardware) {
--
1.7.1


Thanks,
Ethan


On Fri, Nov 16, 2012 at 11:49 AM, Moore, Robert <[email protected]> wrote:
> No decision(s) yet, we are still investigating
>
>
>> -----Original Message-----
>> From: Ethan Zhao [mailto:[email protected]]
>> Sent: Thursday, November 15, 2012 7:47 PM
>> To: Moore, Robert
>> Subject: Re: [PATCH ] tbfadt.c: output warning only when 64bit 32bit
>> address of FACS/DSDT all have value but not equal to each other
>>
>> Bob,
>> I read the discussion you have done
>>
>> https://www.acpica.org/bugzilla/show_bug.cgi?id=885
>>
>> Why method do you prefer ?
>>
>> Thanks,
>> Ethan
>>
>> On Fri, Nov 16, 2012 at 11:38 AM, Ethan Zhao <[email protected]>
>> wrote:
>> > Bob,
>> > In fact, you know if 32bit and 64bit address are all valid but not
>> > equal to each other, that does not follow ACPI 4&5 ,not follow 3 too.
>> > Do you mean we need to guess why they declare two different
>> > FACS/DSDT, and so kernel should collect some clue to figure out why ?
>> > that is amazing thing to keep system to work though its buggy BIOS.
>> >
>> > Ethan
>> >
>> >
>> > On Fri, Nov 16, 2012 at 11:27 AM, Moore, Robert <[email protected]>
>> wrote:
>> >> Basically, the flow goes like this:
>> >>
>> >> 1) We convert the original FADT (multiple versions) to a common
>> internal FADT.
>> >> 2) Then we check the common internal FADT for errors/inconsistencies.
>> >>
>> >> In this way, we don't need to have different error checking for
>> different versions of the FADT, and this is probably not going to change.
>> >>
>> >> One thing we are going to add is to make a decision on whether to favor
>> a 32-bit address or a 64-bit address (if they are different) based upon
>> the age of the machine/BIOS. This is for Windows compatibility.
>> >>
>> >> Bob
>> >>
>> >>
>> >>> -----Original Message-----
>> >>> From: Ethan Zhao [mailto:[email protected]]
>> >>> Sent: Thursday, November 15, 2012 6:29 PM
>> >>> To: Moore, Robert
>> >>> Cc: Brown, Len; Zheng, Lv; LKML
>> >>> Subject: Re: [PATCH ] tbfadt.c: output warning only when 64bit 32bit
>> >>> address of FACS/DSDT all have value but not equal to each other
>> >>>
>> >>> Bob,
>> >>> Thanks for your detailed reviewing about the whole possible
>> >>> conditions.
>> >>> I.C. So that is impossible zero value for Xfacs /Xdsdt if
>> >>> facs/dsdt >0, for they are assigned in acpi_tb_convert_fadt(), I
>> >>> need to move my eyes one line code higher to see why it yelled twice
>> >>> but not using the 32bit address at once in acpi_tb_convert_fadt().
>> >>> Do you agree to move the checking code warning and into
>> >>> acpi_tb_convert_fadt to make the code more simple and clear ? Or
>> >>> just keep it for more rework, more bug?
>> >>>
>> >>>
>> >>> Thanks,
>> >>> Ethan

2012-11-16 06:02:24

by Moore, Robert

[permalink] [raw]
Subject: RE: [PATCH ] tbfadt.c: output warning only when 64bit 32bit address of FACS/DSDT all have value but not equal to each other

As I mentioned, we are going to be rewriting this part of the code, so I would rather wait to until then to make changes. However, this looks like a reasonable approach to the error check, at first glance.

Thanks,
Bob


> -----Original Message-----
> From: Ethan Zhao [mailto:[email protected]]
> Sent: Thursday, November 15, 2012 9:47 PM
> To: Moore, Robert
> Cc: LKML
> Subject: Re: [PATCH ] tbfadt.c: output warning only when 64bit 32bit
> address of FACS/DSDT all have value but not equal to each other
>
> Bob,
> How about moving some checking code as following patch ?
>
> From f46d539d81c763aa4e3e98f9fc1e94e0af48bd15 Mon Sep 17 00:00:00
> 2001
> From: ethan.zhao <[email protected]>
> Date: Sat, 17 Nov 2012 00:48:41 -0800
> Subject: [PATCH]acpica/tbfadt.c Move some checking and 32bit to 64bit
> assignment code from acpi_tb_validate_fadt() to acpi_tb_convert_fadt to
> make the logic clearer and void multiple same kind of warning.
>
>
> Signed-off-by: ethan.zhao <[email protected]>
> ---
> drivers/acpi/acpica/tbfadt.c | 51 ++++++++++++++-----------------------
> ----
> 1 files changed, 18 insertions(+), 33 deletions(-)
>
> diff --git a/drivers/acpi/acpica/tbfadt.c b/drivers/acpi/acpica/tbfadt.c
> index f23f512..dd18aba 100644
> --- a/drivers/acpi/acpica/tbfadt.c
> +++ b/drivers/acpi/acpica/tbfadt.c
> @@ -388,18 +388,30 @@ static void acpi_tb_convert_fadt(void)
> */
> if (!acpi_gbl_FADT.Xfacs) {
> acpi_gbl_FADT.Xfacs = (u64) acpi_gbl_FADT.facs;
> - } else if (acpi_gbl_FADT.facs &&
> + } else if ((acpi_gbl_FADT.facs && acpi_gbl_FADT.Xfacs) &&
> (acpi_gbl_FADT.Xfacs != (u64) acpi_gbl_FADT.facs)) {
> - ACPI_WARNING((AE_INFO,
> - "32/64 FACS address mismatch in FADT - two FACS
> tables!"));
> + ACPI_BIOS_WARNING((AE_INFO,
> + "32/64X FACS address mismatch in FADT
> - "
> + "0x%8.8X/0x%8.8X%8.8X, using 32",
> + acpi_gbl_FADT.facs,
> +
> +ACPI_FORMAT_UINT64(acpi_gbl_FADT.Xfacs)));
> +
> + acpi_gbl_FADT.Xfacs = (u64)acpi_gbl_FADT.facs;
> +
> }
>
> if (!acpi_gbl_FADT.Xdsdt) {
> acpi_gbl_FADT.Xdsdt = (u64) acpi_gbl_FADT.dsdt;
> - } else if (acpi_gbl_FADT.dsdt &&
> + } else if ((acpi_gbl_FADT.dsdt && acpi_gbl_FADT.Xdsdt) &&
> (acpi_gbl_FADT.Xdsdt != (u64) acpi_gbl_FADT.dsdt)) {
> - ACPI_WARNING((AE_INFO,
> - "32/64 DSDT address mismatch in FADT - two DSDT
> tables!"));
> + ACPI_BIOS_WARNING((AE_INFO,
> + "32/64X DSDT address mismatch in FADT
> - "
> + "0x%8.8X/0x%8.8X%8.8X, using 32",
> + acpi_gbl_FADT.dsdt,
> +
> +ACPI_FORMAT_UINT64(acpi_gbl_FADT.Xdsdt)));
> +
> + acpi_gbl_FADT.Xdsdt = (u64)acpi_gbl_FADT.dsdt;
> +
> }
>
> /*
> @@ -507,33 +519,6 @@ static void acpi_tb_validate_fadt(void)
> u8 length;
> u32 i;
>
> - /*
> - * Check for FACS and DSDT address mismatches. An address mismatch
> between
> - * the 32-bit and 64-bit address fields
> (FIRMWARE_CTRL/X_FIRMWARE_CTRL and
> - * DSDT/X_DSDT) would indicate the presence of two FACS or two DSDT
> tables.
> - */
> - if (acpi_gbl_FADT.facs &&
> - (acpi_gbl_FADT.Xfacs != (u64)acpi_gbl_FADT.facs)) {
> - ACPI_BIOS_WARNING((AE_INFO,
> - "32/64X FACS address mismatch in FADT - "
> - "0x%8.8X/0x%8.8X%8.8X, using 32",
> - acpi_gbl_FADT.facs,
> - ACPI_FORMAT_UINT64(acpi_gbl_FADT.Xfacs)));
> -
> - acpi_gbl_FADT.Xfacs = (u64)acpi_gbl_FADT.facs;
> - }
> -
> - if (acpi_gbl_FADT.dsdt &&
> - (acpi_gbl_FADT.Xdsdt != (u64)acpi_gbl_FADT.dsdt)) {
> - ACPI_BIOS_WARNING((AE_INFO,
> - "32/64X DSDT address mismatch in FADT - "
> - "0x%8.8X/0x%8.8X%8.8X, using 32",
> - acpi_gbl_FADT.dsdt,
> - ACPI_FORMAT_UINT64(acpi_gbl_FADT.Xdsdt)));
> -
> - acpi_gbl_FADT.Xdsdt = (u64)acpi_gbl_FADT.dsdt;
> - }
> -
> /* If Hardware Reduced flag is set, we are all done */
>
> if (acpi_gbl_reduced_hardware) {
> --
> 1.7.1
>
>
> Thanks,
> Ethan
>
>
> On Fri, Nov 16, 2012 at 11:49 AM, Moore, Robert <[email protected]>
> wrote:
> > No decision(s) yet, we are still investigating
> >
> >
> >> -----Original Message-----
> >> From: Ethan Zhao [mailto:[email protected]]
> >> Sent: Thursday, November 15, 2012 7:47 PM
> >> To: Moore, Robert
> >> Subject: Re: [PATCH ] tbfadt.c: output warning only when 64bit 32bit
> >> address of FACS/DSDT all have value but not equal to each other
> >>
> >> Bob,
> >> I read the discussion you have done
> >>
> >> https://www.acpica.org/bugzilla/show_bug.cgi?id=885
> >>
> >> Why method do you prefer ?
> >>
> >> Thanks,
> >> Ethan
> >>
> >> On Fri, Nov 16, 2012 at 11:38 AM, Ethan Zhao <[email protected]>
> >> wrote:
> >> > Bob,
> >> > In fact, you know if 32bit and 64bit address are all valid but not
> >> > equal to each other, that does not follow ACPI 4&5 ,not follow 3 too.
> >> > Do you mean we need to guess why they declare two different
> >> > FACS/DSDT, and so kernel should collect some clue to figure out why ?
> >> > that is amazing thing to keep system to work though its buggy BIOS.
> >> >
> >> > Ethan
> >> >
> >> >
> >> > On Fri, Nov 16, 2012 at 11:27 AM, Moore, Robert
> <[email protected]>
> >> wrote:
> >> >> Basically, the flow goes like this:
> >> >>
> >> >> 1) We convert the original FADT (multiple versions) to a common
> >> internal FADT.
> >> >> 2) Then we check the common internal FADT for
> errors/inconsistencies.
> >> >>
> >> >> In this way, we don't need to have different error checking for
> >> different versions of the FADT, and this is probably not going to
> change.
> >> >>
> >> >> One thing we are going to add is to make a decision on whether to
> favor
> >> a 32-bit address or a 64-bit address (if they are different) based upon
> >> the age of the machine/BIOS. This is for Windows compatibility.
> >> >>
> >> >> Bob
> >> >>
> >> >>
> >> >>> -----Original Message-----
> >> >>> From: Ethan Zhao [mailto:[email protected]]
> >> >>> Sent: Thursday, November 15, 2012 6:29 PM
> >> >>> To: Moore, Robert
> >> >>> Cc: Brown, Len; Zheng, Lv; LKML
> >> >>> Subject: Re: [PATCH ] tbfadt.c: output warning only when 64bit
> 32bit
> >> >>> address of FACS/DSDT all have value but not equal to each other
> >> >>>
> >> >>> Bob,
> >> >>> Thanks for your detailed reviewing about the whole possible
> >> >>> conditions.
> >> >>> I.C. So that is impossible zero value for Xfacs /Xdsdt if
> >> >>> facs/dsdt >0, for they are assigned in acpi_tb_convert_fadt(), I
> >> >>> need to move my eyes one line code higher to see why it yelled
> twice
> >> >>> but not using the 32bit address at once in acpi_tb_convert_fadt().
> >> >>> Do you agree to move the checking code warning and into
> >> >>> acpi_tb_convert_fadt to make the code more simple and clear ? Or
> >> >>> just keep it for more rework, more bug?
> >> >>>
> >> >>>
> >> >>> Thanks,
> >> >>> Ethan