[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |