diff mbox

fwts/madt: Remove TODO for x2apic > 255 check

Message ID 1469115264-22150-1-git-send-email-prarit@redhat.com
State Accepted
Headers show

Commit Message

Prarit Bhargava July 21, 2016, 3:34 p.m. UTC
The x2apic ID can be a 32-bit value starting from 0.  The TODO was likely
introduced by this comment in section 5.2.12.12, of the ACPI6.0
specification:

"Note: [Compatibility note] On some legacy OSes, Logical processors with APIC
ID values less than 255 (whether in XAPIC or X2 APIC mode) must use the
Processor Local APIC structure to convey their APIC information to OSPM, and
those processors must be declared in the DSDT using the Processor() keyword.
Logical processors with APIC ID values 255 and greater must use the Processor
Local x2APIC structure and be declared using the Device() keyword. See Section
19.6.102 "Processor (Declare Processor)" for more information."

This does not mean that the lower bound of the x2apic ID is 255, rather
that there are older OSes that will only interpret the lapic struct for
x[2]apic IDs 0-255, and will interpret the x2apic struct for x2apic IDs
greater than 255.

Signed-off-by: Prarit Bhargava <prarit@redhat.com>
---
 src/acpi/madt/madt.c |    2 --
 1 file changed, 2 deletions(-)

Comments

Colin Ian King July 21, 2016, 3:35 p.m. UTC | #1
On 21/07/16 16:34, Prarit Bhargava wrote:
> The x2apic ID can be a 32-bit value starting from 0.  The TODO was likely
> introduced by this comment in section 5.2.12.12, of the ACPI6.0
> specification:
> 
> "Note: [Compatibility note] On some legacy OSes, Logical processors with APIC
> ID values less than 255 (whether in XAPIC or X2 APIC mode) must use the
> Processor Local APIC structure to convey their APIC information to OSPM, and
> those processors must be declared in the DSDT using the Processor() keyword.
> Logical processors with APIC ID values 255 and greater must use the Processor
> Local x2APIC structure and be declared using the Device() keyword. See Section
> 19.6.102 "Processor (Declare Processor)" for more information."
> 
> This does not mean that the lower bound of the x2apic ID is 255, rather
> that there are older OSes that will only interpret the lapic struct for
> x[2]apic IDs 0-255, and will interpret the x2apic struct for x2apic IDs
> greater than 255.
> 
> Signed-off-by: Prarit Bhargava <prarit@redhat.com>
> ---
>  src/acpi/madt/madt.c |    2 --
>  1 file changed, 2 deletions(-)
> 
> diff --git a/src/acpi/madt/madt.c b/src/acpi/madt/madt.c
> index e260222a8b75..b2d636c1d9d3 100644
> --- a/src/acpi/madt/madt.c
> +++ b/src/acpi/madt/madt.c
> @@ -802,8 +802,6 @@ static int madt_local_x2apic(fwts_framework *fw,
>  			    "reserved and properly set to zero.",
>  			    madt_sub_names[hdr->type]);
>  
> -	/* TODO: do we need to verify that the x2APIC ID is > 255? */
> -
>  	if (lx2apic->flags & 0xfffffffe)
>  		fwts_failed(fw, LOG_LEVEL_MEDIUM,
>  			    "MADTX2APICFlagsNonZero",
> 
Acked-by: Colin Ian King <colin.king@canonical.com>
Al Stone July 21, 2016, 3:53 p.m. UTC | #2
On 07/21/2016 09:34 AM, Prarit Bhargava wrote:
> The x2apic ID can be a 32-bit value starting from 0.  The TODO was likely
> introduced by this comment in section 5.2.12.12, of the ACPI6.0
> specification:
> 
> "Note: [Compatibility note] On some legacy OSes, Logical processors with APIC
> ID values less than 255 (whether in XAPIC or X2 APIC mode) must use the
> Processor Local APIC structure to convey their APIC information to OSPM, and
> those processors must be declared in the DSDT using the Processor() keyword.
> Logical processors with APIC ID values 255 and greater must use the Processor
> Local x2APIC structure and be declared using the Device() keyword. See Section
> 19.6.102 "Processor (Declare Processor)" for more information."
> 
> This does not mean that the lower bound of the x2apic ID is 255, rather
> that there are older OSes that will only interpret the lapic struct for
> x[2]apic IDs 0-255, and will interpret the x2apic struct for x2apic IDs
> greater than 255.
> 
> Signed-off-by: Prarit Bhargava <prarit@redhat.com>

Either I write really good comments or Prarit can read minds :).  I prefer
to think Prarit is telepathic.

Yup, that was exactly the intent of the TODO.  Thanks for the clarification.
Alex Hung July 25, 2016, 1:18 a.m. UTC | #3
On 2016-07-21 11:34 PM, Prarit Bhargava wrote:
> The x2apic ID can be a 32-bit value starting from 0.  The TODO was likely
> introduced by this comment in section 5.2.12.12, of the ACPI6.0
> specification:
>
> "Note: [Compatibility note] On some legacy OSes, Logical processors with APIC
> ID values less than 255 (whether in XAPIC or X2 APIC mode) must use the
> Processor Local APIC structure to convey their APIC information to OSPM, and
> those processors must be declared in the DSDT using the Processor() keyword.
> Logical processors with APIC ID values 255 and greater must use the Processor
> Local x2APIC structure and be declared using the Device() keyword. See Section
> 19.6.102 "Processor (Declare Processor)" for more information."
>
> This does not mean that the lower bound of the x2apic ID is 255, rather
> that there are older OSes that will only interpret the lapic struct for
> x[2]apic IDs 0-255, and will interpret the x2apic struct for x2apic IDs
> greater than 255.
>
> Signed-off-by: Prarit Bhargava <prarit@redhat.com>
> ---
>  src/acpi/madt/madt.c |    2 --
>  1 file changed, 2 deletions(-)
>
> diff --git a/src/acpi/madt/madt.c b/src/acpi/madt/madt.c
> index e260222a8b75..b2d636c1d9d3 100644
> --- a/src/acpi/madt/madt.c
> +++ b/src/acpi/madt/madt.c
> @@ -802,8 +802,6 @@ static int madt_local_x2apic(fwts_framework *fw,
>  			    "reserved and properly set to zero.",
>  			    madt_sub_names[hdr->type]);
>
> -	/* TODO: do we need to verify that the x2APIC ID is > 255? */
> -
>  	if (lx2apic->flags & 0xfffffffe)
>  		fwts_failed(fw, LOG_LEVEL_MEDIUM,
>  			    "MADTX2APICFlagsNonZero",
>


Acked-by: Alex Hung <alex.hung@canonical.com>
diff mbox

Patch

diff --git a/src/acpi/madt/madt.c b/src/acpi/madt/madt.c
index e260222a8b75..b2d636c1d9d3 100644
--- a/src/acpi/madt/madt.c
+++ b/src/acpi/madt/madt.c
@@ -802,8 +802,6 @@  static int madt_local_x2apic(fwts_framework *fw,
 			    "reserved and properly set to zero.",
 			    madt_sub_names[hdr->type]);
 
-	/* TODO: do we need to verify that the x2APIC ID is > 255? */
-
 	if (lx2apic->flags & 0xfffffffe)
 		fwts_failed(fw, LOG_LEVEL_MEDIUM,
 			    "MADTX2APICFlagsNonZero",