> -----Original Message----- > From: Abdulhamid, Harb [mailto:harba@xxxxxxxxxxxxxx] > Sent: Saturday, February 20, 2016 1:41 PM > To: Zheng, Lv; Wysocki, Rafael J; Rafael J. Wysocki; Brown, Len > Cc: Lv Zheng; linux-kernel@xxxxxxxxxxxxxxx; linux-acpi@xxxxxxxxxxxxxxx; > Moore, Robert; Al Stone; fu.wei@xxxxxxxxxx; tbaicar@xxxxxxxxxxxxxx; > rruigrok@xxxxxxxxxxxxxx > Subject: Re: [PATCH 12/15] ACPICA: ACPI 6.1: Add full support for this > version of ACPI spec > > On 2/19/2016 1:17 AM, Lv Zheng wrote: > > From: Bob Moore <robert.moore@xxxxxxxxx> > > > > ACPICA commit 5f21bddaa2cec035ca80608803ce2f0858d4f387 > > > > Small changes: > > 1) A couple new predefined names > > 2) New _HID values > I don't see where you are adding new _HID values in this patch. > Not everything in the patch actually makes it into the Linux kernel. The new _HID values are for the AcpiHelp tables, which in turn are also used by the disassembler. > > 3) New subtable for HEST > > > > Link: https://github.com/acpica/acpica/commit/5f21bdda > > Signed-off-by: Bob Moore <robert.moore@xxxxxxxxx> > > Signed-off-by: Lv Zheng <lv.zheng@xxxxxxxxx> > > --- > > drivers/acpi/acpica/acpredef.h | 9 +++++++++ > > drivers/acpi/acpica/utdecode.c | 30 +++++++++++++++++------------- > > include/acpi/actbl.h | 2 +- > > include/acpi/actbl1.h | 29 ++++++++++++++++++++++++++--- > > include/acpi/actypes.h | 3 ++- > > 5 files changed, 55 insertions(+), 18 deletions(-) > > > > diff --git a/drivers/acpi/acpica/acpredef.h > > b/drivers/acpi/acpica/acpredef.h index 5faeab4..4ca426b 100644 > > --- a/drivers/acpi/acpica/acpredef.h > > +++ b/drivers/acpi/acpica/acpredef.h > > @@ -523,6 +523,9 @@ const union acpi_predefined_info > acpi_gbl_predefined_methods[] = { > > METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (4 Int) */ > > PACKAGE_INFO(ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4, 0, 0, 0), > > > > + {{"_FIT", METHOD_0ARGS, > > + METHOD_RETURNS(ACPI_RTYPE_BUFFER)}}, /* ACPI 6.0 */ > > + > > {{"_FIX", METHOD_0ARGS, > > METHOD_RETURNS(ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Ints) > */ > > PACKAGE_INFO(ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 0, 0, 0, 0), @@ > > -1053,6 +1056,12 @@ const union acpi_predefined_info > acpi_gbl_predefined_methods[] = { > > METHOD_RETURNS(ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING | > > ACPI_RTYPE_BUFFER)}}, > > > > + {{"_WPC", METHOD_0ARGS, > > + METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, /* ACPI 6.1 */ > > + > > + {{"_WPP", METHOD_0ARGS, > > + METHOD_RETURNS(ACPI_RTYPE_INTEGER)}}, /* ACPI 6.1 */ > > + > > PACKAGE_INFO(0, 0, 0, 0, 0, 0) /* Table terminator */ > > }; > > #else > > diff --git a/drivers/acpi/acpica/utdecode.c > > b/drivers/acpi/acpica/utdecode.c index 6ba65b0..efd7988 100644 > > --- a/drivers/acpi/acpica/utdecode.c > > +++ b/drivers/acpi/acpica/utdecode.c > > @@ -446,7 +446,7 @@ const char *acpi_ut_get_mutex_name(u32 mutex_id) > > > > /* Names for Notify() values, used for debug output */ > > > > -static const char *acpi_gbl_generic_notify[ACPI_NOTIFY_MAX + 1] = { > > +static const char *acpi_gbl_generic_notify[ACPI_GENERIC_NOTIFY_MAX + > > +1] = { > > /* 00 */ "Bus Check", > > /* 01 */ "Device Check", > > /* 02 */ "Device Wake", > > @@ -459,49 +459,53 @@ static const char > *acpi_gbl_generic_notify[ACPI_NOTIFY_MAX + 1] = { > > /* 09 */ "Device PLD Check", > > /* 0A */ "Reserved", > > /* 0B */ "System Locality Update", > > - /* 0C */ "Shutdown Request", > > + /* 0C */ "Shutdown Request", > > + /* Reserved in ACPI 6.0 */ > > /* 0D */ "System Resource Affinity Update" > > }; > > > > -static const char *acpi_gbl_device_notify[4] = { > > +static const char *acpi_gbl_device_notify[5] = { > > /* 80 */ "Status Change", > > /* 81 */ "Information Change", > > /* 82 */ "Device-Specific Change", > > - /* 83 */ "Device-Specific Change" > > + /* 83 */ "Device-Specific Change", > > + /* 84 */ "Reserved" > > }; > > > > -static const char *acpi_gbl_processor_notify[4] = { > > +static const char *acpi_gbl_processor_notify[5] = { > > /* 80 */ "Performance Capability Change", > > /* 81 */ "C-State Change", > > /* 82 */ "Throttling Capability Change", > > - /* 83 */ "Device-Specific Change" > > + /* 83 */ "Guaranteed Change", > > + /* 84 */ "Minimum Excursion" > > }; > > > > -static const char *acpi_gbl_thermal_notify[4] = { > > +static const char *acpi_gbl_thermal_notify[5] = { > > /* 80 */ "Thermal Status Change", > > /* 81 */ "Thermal Trip Point Change", > > /* 82 */ "Thermal Device List Change", > > - /* 83 */ "Thermal Relationship Change" > > + /* 83 */ "Thermal Relationship Change", > > + /* 84 */ "Reserved" > > }; > > > > const char *acpi_ut_get_notify_name(u32 notify_value, > > acpi_object_type type) { > > > > - /* 00 - 0D are common to all object types */ > > + /* 00 - 0D are "common to all object types" (from ACPI Spec) */ > > > > - if (notify_value <= ACPI_NOTIFY_MAX) { > > + if (notify_value <= ACPI_GENERIC_NOTIFY_MAX) { > > return (acpi_gbl_generic_notify[notify_value]); > > } > > > > - /* 0D - 7F are reserved */ > > + /* 0E - 7F are reserved */ > > > > if (notify_value <= ACPI_MAX_SYS_NOTIFY) { > > return ("Reserved"); > > } > > > > - /* 80 - 83 are per-object-type */ > > + /* 80 - 84 are per-object-type */ > > > > - if (notify_value <= 0x83) { > > + if (notify_value <= ACPI_SPECIFIC_NOTIFY_MAX) { > > switch (type) { > > case ACPI_TYPE_ANY: > > case ACPI_TYPE_DEVICE: > > diff --git a/include/acpi/actbl.h b/include/acpi/actbl.h index > > 0cb1a00..6a4e521 100644 > > --- a/include/acpi/actbl.h > > +++ b/include/acpi/actbl.h > > @@ -223,7 +223,7 @@ struct acpi_table_facs { > > > /************************************************************************* > ****** > > * > > * FADT - Fixed ACPI Description Table (Signature "FACP") > > - * Version 4 > > + * Version 6 > > * > > > > ********************************************************************** > > ********/ > > > > diff --git a/include/acpi/actbl1.h b/include/acpi/actbl1.h index > > 16e0136..26494dd 100644 > > --- a/include/acpi/actbl1.h > > +++ b/include/acpi/actbl1.h > > @@ -236,7 +236,8 @@ enum acpi_einj_actions { > > ACPI_EINJ_CHECK_BUSY_STATUS = 6, > > ACPI_EINJ_GET_COMMAND_STATUS = 7, > > ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS = 8, > > - ACPI_EINJ_ACTION_RESERVED = 9, /* 9 and greater are reserved */ > > + ACPI_EINJ_GET_EXECUTE_TIMINGS = 9, > > + ACPI_EINJ_ACTION_RESERVED = 10, /* 10 and greater are reserved > */ > > ACPI_EINJ_TRIGGER_ERROR = 0xFF /* Except for this value */ > > }; > > > > @@ -348,7 +349,8 @@ enum acpi_erst_actions { > > ACPI_ERST_GET_ERROR_RANGE = 13, > > ACPI_ERST_GET_ERROR_LENGTH = 14, > > ACPI_ERST_GET_ERROR_ATTRIBUTES = 15, > > - ACPI_ERST_ACTION_RESERVED = 16 /* 16 and greater are reserved > */ > > + ACPI_ERST_EXECUTE_TIMINGS = 16, > > + ACPI_ERST_ACTION_RESERVED = 17 /* 17 and greater are reserved > */ > > }; > > > > /* Values for Instruction field above */ @@ -427,7 +429,8 @@ enum > > acpi_hest_types { > > ACPI_HEST_TYPE_AER_ENDPOINT = 7, > > ACPI_HEST_TYPE_AER_BRIDGE = 8, > > ACPI_HEST_TYPE_GENERIC_ERROR = 9, > > - ACPI_HEST_TYPE_RESERVED = 10 /* 10 and greater are reserved */ > > + ACPI_HEST_TYPE_GENERIC_ERROR_V2 = 10, > > + ACPI_HEST_TYPE_RESERVED = 11 /* 11 and greater are reserved */ > > }; > > > > /* > > @@ -603,6 +606,24 @@ struct acpi_hest_generic { > > u32 error_block_length; > > }; > > > > +/* 10: Generic Hardware Error Source, version 2 */ > > + > > +struct acpi_hest_generic_v2 { > > + struct acpi_hest_header header; > > + u16 related_source_id; > > + u8 reserved; > > + u8 enabled; > > + u32 records_to_preallocate; > > + u32 max_sections_per_record; > > + u32 max_raw_data_length; > > + struct acpi_generic_address error_status_address; > > + struct acpi_hest_notify notify; > > + u32 error_block_length; > > + struct acpi_generic_address read_ack_register; > > + u64 read_ack_preserve; > > + u64 read_ack_write; > > +}; > > + > > /* Generic Error Status block */ > > > > struct acpi_hest_generic_status { > > @@ -632,6 +653,7 @@ struct acpi_hest_generic_data { > > u32 error_data_length; > > u8 fru_id[16]; > > u8 fru_text[20]; > > + u64 time_stamp; > > }; > There is quite a bit of overlap between this patch and our patch series > (https://lkml.org/lkml/2016/2/5/544) > > There are few things I see missing in this patch in your updates made to > actbl1.h, I list them below: > > 1) Adding time stamp as you did breaks backwards compatibility (something > we discovered during our testing). We tried to remedy this by adding a > new version of the acpi_hest_generic_data structure. Note that we named > it v3 to reflect this was the updated version number in ACPI 6.1. (see > https://lkml.org/lkml/2016/2/5/549) > > 2) Missing definition of generic error data validation bits, needed to > determine whether or not field being read are valid or not (see > https://lkml.org/lkml/2016/2/5/549) > > 3) Need to extend acpi_hest_notify_types to add GPIO, SEA, SEI, and GSIV > (see https://lkml.org/lkml/2016/2/5/545) > > 4) Also for the purpose of backwards compatibility, we needed to add both > acpi_hest_generic and acpi_hest_generic_v2 to the structure "ghes", > referencing the v2 pointer when needed. > (https://lkml.org/lkml/2016/2/5/550) > > Can you please review the above patch series patches for comparison, and > if in agreement, can you please update this patch to better align with the > changes we need? We can rework our patch series to depend on your patch > series (i.e. leaving actbl1.h untouched on our side). > > > > > > > /********************************************************************* > > ********** @@ -1015,6 +1037,7 @@ struct acpi_nfit_memory_map { > > #define ACPI_NFIT_MEM_NOT_ARMED (1<<3) /* 03: Memory Device > is not armed */ > > #define ACPI_NFIT_MEM_HEALTH_OBSERVED (1<<4) /* 04: Memory Device > observed SMART/health events */ > > #define ACPI_NFIT_MEM_HEALTH_ENABLED (1<<5) /* 05: SMART/health > events enabled */ > > +#define ACPI_NFIT_MEM_MAP_FAILED (1<<6) /* 06: Mapping to > SPA failed */ > > > > /* 2: Interleave Structure */ > > > > diff --git a/include/acpi/actypes.h b/include/acpi/actypes.h index > > db46546..140886e 100644 > > --- a/include/acpi/actypes.h > > +++ b/include/acpi/actypes.h > > @@ -630,7 +630,8 @@ typedef u64 acpi_integer; > > #define ACPI_NOTIFY_SHUTDOWN_REQUEST (u8) 0x0C > > #define ACPI_NOTIFY_AFFINITY_UPDATE (u8) 0x0D > > > > -#define ACPI_NOTIFY_MAX 0x0D > > +#define ACPI_GENERIC_NOTIFY_MAX 0x0D > > +#define ACPI_SPECIFIC_NOTIFY_MAX 0x84 > > > > /* > > * Types associated with ACPI names and objects. The first group of > > > > Harb > -- > Qualcomm Technologies, Inc. > on behalf of Qualcomm Innovation Center, Inc. > Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux > Foundation Collaborative Project -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html