RE: [PATCH] ACPICA: Log Exceptions and Errors as warning while loading extra tables

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

 



Hi, Hans

> From: Hans de Goede [mailto:hdegoede@xxxxxxxxxx]
> Subject: Re: [PATCH] ACPICA: Log Exceptions and Errors as warning while loading extra tables
> 
> Hi,
> 
> On 13-03-17 10:52, Zheng, Lv wrote:
> > Hi, Hans
> >
> > For log level issue, is this fix useful for you?
> > https://github.com/acpica/acpica/pull/121/commits/a505d3942
> 
> That fixes reloading already loaded tables, the problem I'm
> getting errors about its loading a different table with identical
> contents.
> 
> I will look into your suggestion to do something similar to
> AcpiTbInstallStandardTable using AcpiTbCompareTables for the
> SSDT tables. I will send a new patch when I can make some time
> to look into this.

I just completed a prototype here:
https://github.com/acpica/acpica/pull/121

I guess the original "duplicate table check" couldn't cover static SSDTs.
Actually the duplicate table check should be a sanity check of table load.
And for table install, we should have a different sanity check like:
https://github.com/acpica/acpica/pull/121/commits/6e825cae5e5
I'm not sure if this is what you want.

Thanks
Lv

> 
> Regards,
> 
> Hans
> 
> 
> 
> >
> > Thanks and best regards
> > Lv
> >
> >> From: Hans de Goede [mailto:hdegoede@xxxxxxxxxx]
> >> Subject: Re: [PATCH] ACPICA: Log Exceptions and Errors as warning while loading extra tables
> >>
> >> Hi,
> >>
> >> On 03-03-17 03:48, Zheng, Lv wrote:
> >>> Hi,
> >>>
> >>>> From: Hans de Goede [mailto:hdegoede@xxxxxxxxxx]
> >>>> Subject: Re: [PATCH] ACPICA: Log Exceptions and Errors as warning while loading extra tables
> >>>>
> >>>> Hi,
> >>>>
> >>>> On 02-03-17 03:03, Zheng, Lv wrote:
> >>>>> Hi,
> >>>>>
> >>>>>> From: Hans de Goede [mailto:hdegoede@xxxxxxxxxx]
> >>>>>> Subject: [PATCH] ACPICA: Log Exceptions and Errors as warning while loading extra tables
> >>>>>>
> >>>>>> Honor the "Ignore errors while loading tables, get as many as possible"
> >>>>>> comment in the tbxfload.c code and log any exceptions and errors during
> >>>>>> loading extra tables as warnings.
> >>>>>>
> >>>>>> This is important because many desktop and embedded applicance Linux
> >>>>>> use-cases have a hard requirement of not showing any (scary) text
> >>>>>> messages during system bootup, which get broken by errors reported
> >>>>>> by attempts to load the extra tables, as messaged logged at a KERN_ERR
> >>>>>> level are always shown even if the quiet kernel cmdline option is used.
> >>>>>
> >>>>> This looks worse than comparing the tables.
> >>>>
> >>>> This is really another patch entirely, it would also make the duplicate
> >>>> table thing less of an issue, but even with a fix for the duplicate tables
> >>>> we still need something like this to lower the log level of errors while
> >>>> loading extra tables as that currently causes errors to be spewn on
> >>>> way to many machines, e.g. on my main workstation I get:
> >>>>
> >>>> [    0.019856] ACPI Warning: [\_SB_.PCI0.XHC_.RHUB.HS11] Namespace lookup failure, AE_NOT_FOUND
> >>>> (20160930/dswload-210)
> >>>> [    0.019859] ACPI Warning: AE_NOT_FOUND, During name lookup/catalog (20160930/psobject-227)
> >>>> [    0.019886] ACPI Warning: AE_NOT_FOUND, (SSDT:xh_rvp08) while loading table
> (20160930/tbxfload-
> >> 268)
> >>>> [    0.026491] ACPI Warning: 1 table load failures, 5 successful (20160930/tbxfload-287)
> >>>
> >>> However some of them indicating a real issue that can be fixed by:
> >>> 1. Merging this pull request: https://github.com/acpica/acpica/pull/189 (I made it no longer
> >> dependent on other fixes)
> >>> 2. Setting acpi_gbl_parse_table_as_term_list to TRUE.
> >>> It's not far away than actually solving the real issues.
> >>> So why do we use a one-size-fits-all solution for such kind of errors?
> >>
> >> Ok, I agree that doing proper fixes for errors like this is better,
> >> so lets drop this patch.
> >>
> >> Regards,
> >>
> >> Hans
> >>
> >>
> >>>
> >>> Thanks and best regards
> >>> Lv
> >>>
> >>>
> >>>>
> >>>> (this is with the patch, before that this were all errors and exceptions).
> >>>>
> >>>> Add IIRC I'm getting yet another set of errors on my XPS 15, etc.
> >>>>
> >>>> Regards,
> >>>>
> >>>> Hans
> >>>>
> >>>>
> >>>>
> >>>>> So before determining what should be done for the check of the duplicated aml tables.
> >>>>> Let's skip this submission.
> >>>>>
> >>>>> Thanks
> >>>>> Lv
> >>>>>
> >>>>>>
> >>>>>> Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>
> >>>>>> ---
> >>>>>>  drivers/acpi/acpica/acglobal.h  |  1 +
> >>>>>>  drivers/acpi/acpica/tbxfload.c  |  4 +++-
> >>>>>>  drivers/acpi/acpica/uterror.c   | 10 ++++++++--
> >>>>>>  drivers/acpi/acpica/utxferror.c | 19 ++++++++++---------
> >>>>>>  4 files changed, 22 insertions(+), 12 deletions(-)
> >>>>>>
> >>>>>> diff --git a/drivers/acpi/acpica/acglobal.h b/drivers/acpi/acpica/acglobal.h
> >>>>>> index edbb42e..5ae9eee 100644
> >>>>>> --- a/drivers/acpi/acpica/acglobal.h
> >>>>>> +++ b/drivers/acpi/acpica/acglobal.h
> >>>>>> @@ -146,6 +146,7 @@ ACPI_GLOBAL(acpi_cache_t *, acpi_gbl_operand_cache);
> >>>>>>  ACPI_INIT_GLOBAL(u32, acpi_gbl_startup_flags, 0);
> >>>>>>  ACPI_INIT_GLOBAL(u8, acpi_gbl_shutdown, TRUE);
> >>>>>>  ACPI_INIT_GLOBAL(u8, acpi_gbl_early_initialization, TRUE);
> >>>>>> +ACPI_INIT_GLOBAL(u8, acpi_gbl_log_errors_exceptions_as_warnings, FALSE);
> >>>>>>
> >>>>>>  /* Global handlers */
> >>>>>>
> >>>>>> diff --git a/drivers/acpi/acpica/tbxfload.c b/drivers/acpi/acpica/tbxfload.c
> >>>>>> index 1971cd7..b0c5478 100644
> >>>>>> --- a/drivers/acpi/acpica/tbxfload.c
> >>>>>> +++ b/drivers/acpi/acpica/tbxfload.c
> >>>>>> @@ -256,6 +256,7 @@ acpi_status acpi_tb_load_namespace(void)
> >>>>>>  		}
> >>>>>>
> >>>>>>  		/* Ignore errors while loading tables, get as many as possible */
> >>>>>> +		acpi_gbl_log_errors_exceptions_as_warnings = TRUE;
> >>>>>>
> >>>>>>  		(void)acpi_ut_release_mutex(ACPI_MTX_TABLES);
> >>>>>>  		status = acpi_ns_load_table(i, acpi_gbl_root_node);
> >>>>>> @@ -276,11 +277,12 @@ acpi_status acpi_tb_load_namespace(void)
> >>>>>>  			tables_loaded++;
> >>>>>>  		}
> >>>>>>  	}
> >>>>>> +	acpi_gbl_log_errors_exceptions_as_warnings = FALSE;
> >>>>>>
> >>>>>>  	if (!tables_failed) {
> >>>>>>  		ACPI_INFO(("%u ACPI AML tables successfully acquired and loaded", tables_loaded));
> >>>>>>  	} else {
> >>>>>> -		ACPI_ERROR((AE_INFO,
> >>>>>> +		ACPI_WARNING((AE_INFO,
> >>>>>>  			    "%u table load failures, %u successful",
> >>>>>>  			    tables_failed, tables_loaded));
> >>>>>>
> >>>>>> diff --git a/drivers/acpi/acpica/uterror.c b/drivers/acpi/acpica/uterror.c
> >>>>>> index 475932c..e01ff1f 100644
> >>>>>> --- a/drivers/acpi/acpica/uterror.c
> >>>>>> +++ b/drivers/acpi/acpica/uterror.c
> >>>>>> @@ -205,7 +205,10 @@ acpi_ut_namespace_error(const char *module_name,
> >>>>>>  	char *name = NULL;
> >>>>>>
> >>>>>>  	ACPI_MSG_REDIRECT_BEGIN;
> >>>>>> -	acpi_os_printf(ACPI_MSG_ERROR);
> >>>>>> +	if (acpi_gbl_log_errors_exceptions_as_warnings)
> >>>>>> +		acpi_os_printf(ACPI_MSG_WARNING);
> >>>>>> +	else
> >>>>>> +		acpi_os_printf(ACPI_MSG_ERROR);
> >>>>>>
> >>>>>>  	if (lookup_status == AE_BAD_CHARACTER) {
> >>>>>>
> >>>>>> @@ -269,7 +272,10 @@ acpi_ut_method_error(const char *module_name,
> >>>>>>  	struct acpi_namespace_node *node = prefix_node;
> >>>>>>
> >>>>>>  	ACPI_MSG_REDIRECT_BEGIN;
> >>>>>> -	acpi_os_printf(ACPI_MSG_ERROR);
> >>>>>> +	if (acpi_gbl_log_errors_exceptions_as_warnings)
> >>>>>> +		acpi_os_printf(ACPI_MSG_WARNING);
> >>>>>> +	else
> >>>>>> +		acpi_os_printf(ACPI_MSG_ERROR);
> >>>>>>
> >>>>>>  	if (path) {
> >>>>>>  		status = acpi_ns_get_node(prefix_node, path,
> >>>>>> diff --git a/drivers/acpi/acpica/utxferror.c b/drivers/acpi/acpica/utxferror.c
> >>>>>> index d9f15cb..c8ca25af 100644
> >>>>>> --- a/drivers/acpi/acpica/utxferror.c
> >>>>>> +++ b/drivers/acpi/acpica/utxferror.c
> >>>>>> @@ -73,7 +73,10 @@ acpi_error(const char *module_name, u32 line_number, const char *format, ...)
> >>>>>>  	va_list arg_list;
> >>>>>>
> >>>>>>  	ACPI_MSG_REDIRECT_BEGIN;
> >>>>>> -	acpi_os_printf(ACPI_MSG_ERROR);
> >>>>>> +	if (acpi_gbl_log_errors_exceptions_as_warnings)
> >>>>>> +		acpi_os_printf(ACPI_MSG_WARNING);
> >>>>>> +	else
> >>>>>> +		acpi_os_printf(ACPI_MSG_ERROR);
> >>>>>>
> >>>>>>  	va_start(arg_list, format);
> >>>>>>  	acpi_os_vprintf(format, arg_list);
> >>>>>> @@ -107,16 +110,14 @@ acpi_exception(const char *module_name,
> >>>>>>  	va_list arg_list;
> >>>>>>
> >>>>>>  	ACPI_MSG_REDIRECT_BEGIN;
> >>>>>> -
> >>>>>> -	/* For AE_OK, just print the message */
> >>>>>> -
> >>>>>> -	if (ACPI_SUCCESS(status)) {
> >>>>>> +	if (acpi_gbl_log_errors_exceptions_as_warnings)
> >>>>>> +		acpi_os_printf(ACPI_MSG_WARNING);
> >>>>>> +	else
> >>>>>>  		acpi_os_printf(ACPI_MSG_EXCEPTION);
> >>>>>>
> >>>>>> -	} else {
> >>>>>> -		acpi_os_printf(ACPI_MSG_EXCEPTION "%s, ",
> >>>>>> -			       acpi_format_exception(status));
> >>>>>> -	}
> >>>>>> +	/* For AE_OK, just print the message */
> >>>>>> +	if (ACPI_FAILURE(status))
> >>>>>> +		acpi_os_printf("%s, ", acpi_format_exception(status));
> >>>>>>
> >>>>>>  	va_start(arg_list, format);
> >>>>>>  	acpi_os_vprintf(format, arg_list);
> >>>>>> --
> >>>>>> 2.9.3
> >>>>>
--
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



[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux