[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH RFC 14/35] ACPI / ACPICA: Add GTDT support updated by ACPI 5.1



On Wed, 4 Feb 2015, parth.dixit@xxxxxxxxxx wrote:
> From: Naresh Bhat <naresh.bhat@xxxxxxxxxx>
> 
> With ACPI 5.0, we got per-processor timer support in GTDT,
> and ACPI 5.1 introduced the support for platform (memory-mapped)
> timers: GT Block and SBSA watchdog timer, add the code needed
> in this patch.
> 
> Signed-off-by: Hanjun Guo <hanjun.guo@xxxxxxxxxx>
> Signed-off-by: Naresh Bhat <naresh.bhat@xxxxxxxxxx>
> ---
>  xen/include/acpi/actbl3.h | 90 
> ++++++++++++++++++++++++++++++++++++++++-------
>  1 file changed, 77 insertions(+), 13 deletions(-)
> 
> diff --git a/xen/include/acpi/actbl3.h b/xen/include/acpi/actbl3.h
> index 8c61b5f..0d1ff52 100644
> --- a/xen/include/acpi/actbl3.h
> +++ b/xen/include/acpi/actbl3.h
> @@ -241,34 +241,98 @@ struct acpi_s3pt_suspend {
>  
>  
> /*******************************************************************************
>   *
> - * GTDT - Generic Timer Description Table (ACPI 5.0)
> + * GTDT - Generic Timer Description Table (ACPI 5.1)
>   *        Version 1
>   *
>   
> ******************************************************************************/
>  
>  struct acpi_table_gtdt {
>       struct acpi_table_header header;        /* Common ACPI table header */
> -     u64 address;
> -     u32 flags;
> -     u32 secure_pl1_interrupt;
> -     u32 secure_pl1_flags;
> -     u32 non_secure_pl1_interrupt;
> -     u32 non_secure_pl1_flags;
> +     u64 cnt_control_base_address;
> +     u32 reserved;
> +     u32 secure_el1_interrupt;
> +     u32 secure_el1_flags;
> +     u32 non_secure_el1_interrupt;
> +     u32 non_secure_el1_flags;
>       u32 virtual_timer_interrupt;
>       u32 virtual_timer_flags;
> -     u32 non_secure_pl2_interrupt;
> -     u32 non_secure_pl2_flags;
> +     u32 non_secure_el2_interrupt;
> +     u32 non_secure_el2_flags;
> +     u64 cnt_read_base_address;
> +     u32 platform_timer_count;
> +     u32 platform_timer_offset;
>  };
>  
> -/* Values for Flags field above */
> -
> -#define ACPI_GTDT_MAPPED_BLOCK_PRESENT      1
> -
>  /* Values for all "TimerFlags" fields above */
>  
>  #define ACPI_GTDT_INTERRUPT_MODE            1

I would prefer if you used the notation (1<<0)


>  #define ACPI_GTDT_INTERRUPT_POLARITY        2

                                               ^ (1<<1)

> +#define ACPI_GTDT_ALWAYS_ON                4

                                              ^ (1<<2)


> +/* Values for GTDT subtable type in struct acpi_subtable_header */
> +
> +enum acpi_gtdt_type {
> +     ACPI_GTDT_TYPE_GT_BLOCK = 0,    /* memory-mapped generic timer */
> +     ACPI_GTDT_TYPE_SBSA_GENERIC_WATCHDOG = 1,
> +     ACPI_GTDT_TYPE_RESERVED = 2     /* 2 and greater are reserved */
> +};
> +
> +/*
> + * GTDT Subtables, correspond to Type in struct acpi_subtable_header
> + */
> +
> +/* 0: Generic Timer Block */
> +
> +struct acpi_gtdt_gt_block {
> +     struct acpi_subtable_header header;
> +     u16 reserved;
> +     u64 gt_block_address;
> +     u32 gt_block_timer_count;       /* must be less than or equal to 8 */
> +     u32 gt_block_timer_offset;
> +};
> +
> +/* GT Block Timer Structure */
> +
> +struct acpi_gt_block_timer {
> +     u8 gt_frame_number;
> +     u8 reseved[3];
> +     u64 cnt_base_address;
> +     u64 cnt_el0_base_adress;
> +     u32 physical_timer_interrupt;
> +     u32 physical_timer_flags;
> +     u32 vitual_timer_interrupt;
> +     u32 vitual_timer_flags;
> +     u32 timer_common_flags;
> +};
> +
> +/* Flag Definitions: GT Block Physical Timers and Virtual timers */
> +
> +#define ACPI_GT_BLOCK_INTERRUPT_MODE           1
> +#define ACPI_GT_BLOCK_INTERRUPT_POLARITY       2

same here:  (1<<0) and (1<<1)


> +/* Flag Definitions: Common Flags */
> +
> +#define ACPI_GT_BLOCK_IS_SECURE_TIMER  1
> +#define ACPI_GT_BLOCK_ALWAYS_ON                2

same here:  (1<<0) and (1<<1)


> +/* 1: SBSA Generic Watchdog Structure */
> +
> +struct acpi_sbsa_generic_watchdog {
> +     struct acpi_subtable_header header;
> +     u16 reserved;
> +     u64 refresh_frame_address;
> +     u64 control_frame_address;
> +     u32 interrupt;
> +     u32 flags;
> +};
> +
> +/* Flag Definitions: SBSA Generic Watchdog */
> +
> +#define ACPI_SBSA_WATCHDOG_INTERRUPT_MODE      1
> +#define ACPI_SBSA_WATCHDOG_INTERRUPT_POLARITY  2
> +#define ACPI_SBSA_WATCHDOG_IS_SECURE_TIMER     4

same here


>  
> /*******************************************************************************
>   *
>   * MPST - Memory Power State Table (ACPI 5.0)
> -- 
> 1.9.1
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.