diff mbox

[Xen-devel,RFC,07/35] ACPI / ACPICA: Add new features for MADT which introduced by ACPI 5.1

Message ID 1423058539-26403-8-git-send-email-parth.dixit@linaro.org
State New
Headers show

Commit Message

Parth Dixit Feb. 4, 2015, 2:01 p.m. UTC
From: Naresh Bhat <naresh.bhat@linaro.org>

Add new features for MADT which introduced by ACPI 5.1:
-comment on the GIC ID field of the GIC structure which is replaced
 by CPU Interface Number.
-add new fields: Redistributor Base Address, GICV, GICH, and MPIDR.
-add new structures for GIC MSI frame and GICR.
-add flag definition for GICC flags.

Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org>
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
Signed-off-by: Naresh Bhat <naresh.bhat@linaro.org>
---
 xen/include/acpi/actbl1.h | 38 ++++++++++++++++++++++++++++++++++----
 1 file changed, 34 insertions(+), 4 deletions(-)

Comments

Tomasz Nowicki Feb. 8, 2015, 2:27 p.m. UTC | #1
Hi Parth,

I see lots of old code where some of the issues were already solved in 
latest one. Can you please rebase your patches on top of latest ACPI 
core set and compose xen specific patches as separate? That would 
simplify review process and allows to see the delta.

Regards,
Tomasz

On 02/04/2015 10:01 PM, parth.dixit@linaro.org wrote:
> From: Naresh Bhat <naresh.bhat@linaro.org>
>
> Add new features for MADT which introduced by ACPI 5.1:
> -comment on the GIC ID field of the GIC structure which is replaced
>   by CPU Interface Number.
> -add new fields: Redistributor Base Address, GICV, GICH, and MPIDR.
> -add new structures for GIC MSI frame and GICR.
> -add flag definition for GICC flags.
>
> Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org>
> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
> Signed-off-by: Naresh Bhat <naresh.bhat@linaro.org>
> ---
>   xen/include/acpi/actbl1.h | 38 ++++++++++++++++++++++++++++++++++----
>   1 file changed, 34 insertions(+), 4 deletions(-)
>
> diff --git a/xen/include/acpi/actbl1.h b/xen/include/acpi/actbl1.h
> index dd6dc27..d16670d 100644
> --- a/xen/include/acpi/actbl1.h
> +++ b/xen/include/acpi/actbl1.h
> @@ -641,7 +641,9 @@ enum acpi_madt_type {
>   	ACPI_MADT_TYPE_LOCAL_X2APIC_NMI = 10,
>   	ACPI_MADT_TYPE_GENERIC_INTERRUPT = 11,
>   	ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR = 12,
> -	ACPI_MADT_TYPE_RESERVED = 13	/* 13 and greater are reserved */
> +	ACPI_MADT_TYPE_GIC_MSI_FRAME = 13,
> +	ACPI_MADT_TYPE_GIC_REDISTRIBUTOR = 14,
> +	ACPI_MADT_TYPE_RESERVED = 15    /* 15 and greater are reserved */
>   };
>
>   /*
> @@ -762,18 +764,23 @@ struct acpi_madt_local_x2apic_nmi {
>   	u8 reserved[3];
>   };
>
> -/* 11: Generic Interrupt (ACPI 5.0) */
> +/* 11: Generic Interrupt (ACPI 5.1) */
>
>   struct acpi_madt_generic_interrupt {
>       struct acpi_subtable_header header;
>       u16 reserved;           /* reserved - must be zero */
> -    u32 gic_id;
> +    u32 gic_id;		/* it was renamed to cpu interface number in ACPI 5.1 */
>       u32 uid;
>       u32 flags;
>       u32 parking_version;
>       u32 performance_interrupt;
>       u64 parked_address;
>       u64 base_address;
> +    u64 gicv_base_address;
> +    u64 gich_base_address;
> +    u32 vgic_maintenance_interrupt;
> +    u64 redist_base_address;
> +    u64 mpidr;
>   };
>
>   /* 12: Generic Distributor (ACPI 5.0) */
> @@ -787,14 +794,37 @@ struct acpi_madt_generic_distributor {
>       u32 reserved2;          /* reserved - must be zero */
>   };
>
> +/* 13: GIC MSI Frame (ACPI 5.1) */
> +
> +struct acpi_madt_gic_msi_frame {
> +       struct acpi_subtable_header header;
> +       u16 reserved;           /* reserved - must be zero */
> +       u32 gic_msi_frame_id;
> +       u64 base_address;
> +};
> +
> +/* 14: GIC Redistributor (ACPI 5.1) */
> +
> +struct acpi_madt_gic_redistributor {
> +       struct acpi_subtable_header header;
> +       u16 reserved;           /* reserved - must be zero */
> +       u64 base_address;
> +       u32 region_size;
> +};
> +
>   /*
>    * Common flags fields for MADT subtables
>    */
>
> -/* MADT Local APIC flags (lapic_flags) */
> +/* MADT Local APIC flags (lapic_flags) and GICC flags */
>
>   #define ACPI_MADT_ENABLED           (1)	/* 00: Processor is usable if set */
>
> +/* MADT GICC flags only */
> +
> +#define ACPI_MADT_PERF_INT_MODE     (1<<1)     /* 01: Performance Interrupt Mode */
> +#define ACPI_MADT_VGIC              (1<<2)     /* 02: VGIC Maintenance interrupt mode */
> +
>   /* MADT MPS INTI flags (inti_flags) */
>
>   #define ACPI_MADT_POLARITY_MASK     (3)	/* 00-01: Polarity of APIC I/O input signals */
>
diff mbox

Patch

diff --git a/xen/include/acpi/actbl1.h b/xen/include/acpi/actbl1.h
index dd6dc27..d16670d 100644
--- a/xen/include/acpi/actbl1.h
+++ b/xen/include/acpi/actbl1.h
@@ -641,7 +641,9 @@  enum acpi_madt_type {
 	ACPI_MADT_TYPE_LOCAL_X2APIC_NMI = 10,
 	ACPI_MADT_TYPE_GENERIC_INTERRUPT = 11,
 	ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR = 12,
-	ACPI_MADT_TYPE_RESERVED = 13	/* 13 and greater are reserved */
+	ACPI_MADT_TYPE_GIC_MSI_FRAME = 13,
+	ACPI_MADT_TYPE_GIC_REDISTRIBUTOR = 14,
+	ACPI_MADT_TYPE_RESERVED = 15    /* 15 and greater are reserved */
 };
 
 /*
@@ -762,18 +764,23 @@  struct acpi_madt_local_x2apic_nmi {
 	u8 reserved[3];
 };
 
-/* 11: Generic Interrupt (ACPI 5.0) */
+/* 11: Generic Interrupt (ACPI 5.1) */
 
 struct acpi_madt_generic_interrupt {
     struct acpi_subtable_header header;
     u16 reserved;           /* reserved - must be zero */
-    u32 gic_id;
+    u32 gic_id;		/* it was renamed to cpu interface number in ACPI 5.1 */
     u32 uid;
     u32 flags;
     u32 parking_version;
     u32 performance_interrupt;
     u64 parked_address;
     u64 base_address;
+    u64 gicv_base_address;
+    u64 gich_base_address;
+    u32 vgic_maintenance_interrupt;
+    u64 redist_base_address;
+    u64 mpidr;
 };
 
 /* 12: Generic Distributor (ACPI 5.0) */
@@ -787,14 +794,37 @@  struct acpi_madt_generic_distributor {
     u32 reserved2;          /* reserved - must be zero */
 };
 
+/* 13: GIC MSI Frame (ACPI 5.1) */
+
+struct acpi_madt_gic_msi_frame {
+       struct acpi_subtable_header header;
+       u16 reserved;           /* reserved - must be zero */
+       u32 gic_msi_frame_id;
+       u64 base_address;
+};
+
+/* 14: GIC Redistributor (ACPI 5.1) */
+
+struct acpi_madt_gic_redistributor {
+       struct acpi_subtable_header header;
+       u16 reserved;           /* reserved - must be zero */
+       u64 base_address;
+       u32 region_size;
+};
+
 /*
  * Common flags fields for MADT subtables
  */
 
-/* MADT Local APIC flags (lapic_flags) */
+/* MADT Local APIC flags (lapic_flags) and GICC flags */
 
 #define ACPI_MADT_ENABLED           (1)	/* 00: Processor is usable if set */
 
+/* MADT GICC flags only */
+
+#define ACPI_MADT_PERF_INT_MODE     (1<<1)     /* 01: Performance Interrupt Mode */
+#define ACPI_MADT_VGIC              (1<<2)     /* 02: VGIC Maintenance interrupt mode */
+
 /* MADT MPS INTI flags (inti_flags) */
 
 #define ACPI_MADT_POLARITY_MASK     (3)	/* 00-01: Polarity of APIC I/O input signals */