All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
To: Lv Zheng <lv.zheng@intel.com>, Len Brown <len.brown@intel.com>
Cc: Lv Zheng <zetalog@gmail.com>, linux-acpi@vger.kernel.org
Subject: Re: [PATCH v2 1/2] ACPI: Fix the issue that auto SSDT loading is conflict with customized SSDT that is included by the customized DSDT.
Date: Fri, 09 May 2014 12:40:25 +0200	[thread overview]
Message-ID: <536CB099.6000104@intel.com> (raw)
In-Reply-To: <f31e537e671ca01168e98e555cdee4154bb6c136.1399624932.git.lv.zheng@intel.com>

On 5/9/2014 10:44 AM, Lv Zheng wrote:
> This patch fixes the following issue:
> User can specify a DSDT with SSDT embedded, in which case, no_static_ssdt
> must be enforced.  If we don't do that, then:
> 1. The namespace object conflicts will result in an AE_ALREADY_EXISTS
>     exception;
> 2. The namespace objects that are deleted from the original SSDT will be
>     restored by the auto loading of the original SSDT.
>
> Note that the DSDT customization is a compile-time feature, thus the SSDT
> inclusion indication of the DSDT customization is also implemented as a
> compile-time configurable.
>
> Buglink: https://bugzilla.kernel.org/show_bug.cgi?id=69711
> Original-by: Enrico Etxe Arte <goitizena.generoa@gmail.com>
> Signed-off-by: Lv Zheng <lv.zheng@intel.com>
> ---
>   drivers/acpi/Kconfig    |    8 ++++++++
>   drivers/acpi/internal.h |    5 +++++
>   drivers/acpi/osl.c      |   14 +++++++++++++-
>   drivers/acpi/tables.c   |    2 ++
>   4 files changed, 28 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
> index c0160bb..6fef394 100644
> --- a/drivers/acpi/Kconfig
> +++ b/drivers/acpi/Kconfig
> @@ -233,6 +233,14 @@ config ACPI_CUSTOM_DSDT
>   	bool
>   	default ACPI_CUSTOM_DSDT_FILE != ""
>   
> +config ACPI_CUSTOM_DSDT_WITH_SSDT
> +	bool "Customize DSDT with SSDT tables included"
> +	depends on ACPI_CUSTOM_DSDT

If you think that we really have to have a separate CONFIG_ option here, 
I would prefer ACPI_CUSTOM_DSDT to become a menu with a choice to build 
it either with or without embedded SSDTs.

> +	help
> +	  This option turns on acpi.no_static_ssdt by default.

This description requires the user building the kernel to know what the 
above command line option means which isn't very useful.

> +
> +	  If the SSDT tables has been merged into the custom DSDT file, say Y.
> +
>   config ACPI_INITRD_TABLE_OVERRIDE
>   	bool "ACPI tables override via initrd"
>   	depends on BLK_DEV_INITRD && X86
> diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h
> index 9573913..f84ef59 100644
> --- a/drivers/acpi/internal.h
> +++ b/drivers/acpi/internal.h
> @@ -57,6 +57,11 @@ void acpi_cmos_rtc_init(void);
>   #else
>   static inline void acpi_cmos_rtc_init(void) {}
>   #endif
> +#ifdef CONFIG_ACPI_CUSTOM_DSDT_WITH_SSDT
> +void __init acpi_ssdt_customized(void);
> +#else
> +static inline void acpi_ssdt_customized(void) {}
> +#endif
>   
>   extern bool acpi_force_hot_remove;
>   
> diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
> index 9aeae41..089e55d 100644
> --- a/drivers/acpi/osl.c
> +++ b/drivers/acpi/osl.c
> @@ -1770,15 +1770,27 @@ acpi_status acpi_os_release_object(acpi_cache_t * cache, void *object)
>   }
>   #endif
>   
> -static int __init acpi_no_static_ssdt_setup(char *s)
> +static void __init acpi_set_no_static_ssdt(void)
>   {
>   	acpi_gbl_disable_ssdt_table_install = TRUE;
>   	pr_info("ACPI: static SSDT installation disabled\n");
> +}
> +
> +#ifdef CONFIG_ACPI_CUSTOM_DSDT_WITH_SSDT
> +void __init acpi_ssdt_customized(void)
> +{
> +	acpi_set_no_static_ssdt();
> +}
> +#else
> +static int __init acpi_no_static_ssdt_setup(char *s)
> +{
> +	acpi_set_no_static_ssdt();
>   
>   	return 0;
>   }
>   
>   early_param("acpi_no_static_ssdt", acpi_no_static_ssdt_setup);
> +#endif
>   
>   static int __init acpi_disable_return_repair(char *s)
>   {
> diff --git a/drivers/acpi/tables.c b/drivers/acpi/tables.c
> index 2178229..aaf2177 100644
> --- a/drivers/acpi/tables.c
> +++ b/drivers/acpi/tables.c
> @@ -184,6 +184,7 @@ void acpi_table_print_madt_entry(struct acpi_subtable_header *header)
>   	}
>   }
>   
> +#include "internal.h"
>   
>   int __init
>   acpi_table_parse_entries(char *id,
> @@ -333,6 +334,7 @@ int __init acpi_table_init(void)
>   {
>   	acpi_status status;
>   
> +	acpi_ssdt_customized();
>   	status = acpi_initialize_tables(initial_tables, ACPI_MAX_TABLES, 0);
>   	if (ACPI_FAILURE(status))
>   		return -EINVAL;


  reply	other threads:[~2014-05-09 10:40 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-08  2:48 [PATCH 0/2] ACPI: Fix issues related to the DSDT customization Lv Zheng
2014-04-08  2:49 ` [PATCH 1/2] ACPI: Fix the issue that auto SSDT loading is conflict with customized SSDT that is included by the customized DSDT Lv Zheng
2014-04-21 21:14   ` Rafael J. Wysocki
2014-04-22  0:50     ` Zheng, Lv
2014-04-22 11:19       ` Rafael J. Wysocki
2014-04-23  1:21         ` Zheng, Lv
2014-04-23 10:48           ` Rafael J. Wysocki
2014-04-25  0:37             ` Zheng, Lv
2014-04-08  2:49 ` [PATCH 2/2] ACPI: Fix the issue that the DSDT local copy is conflict with " Lv Zheng
2014-04-21 21:16   ` Rafael J. Wysocki
2014-04-22  0:43     ` Zheng, Lv
2014-05-09  8:44 ` [PATCH v2 1/2] ACPI: Fix the issue that auto SSDT loading is conflict with customized SSDT that is included by " Lv Zheng
2014-05-09 10:40   ` Rafael J. Wysocki [this message]
2014-05-10  3:55     ` Lv Zheng
2014-05-09  8:44 ` [PATCH v2 2/2] ACPI: Fix the issue that the DSDT local copy is conflict with " Lv Zheng
2014-05-12  0:29   ` Rafael J. Wysocki
2014-05-12  0:30     ` Zheng, Lv
2014-05-12  7:49 ` [PATCH v3 1/2] ACPI: Cleanup to convert acpi.no_static_ssdt into a compile-time configurable Lv Zheng
2014-05-12  7:49   ` Lv Zheng
2014-05-19 22:49   ` Rafael J. Wysocki
2014-05-19 22:52     ` Rafael J. Wysocki
2014-05-20  2:01       ` Zheng, Lv
2014-05-20  2:01         ` Zheng, Lv
2014-05-12  7:50 ` [PATCH v3 2/2] ACPI: Fix the issue that the DSDT local copy is conflict with the customized DSDT Lv Zheng
2014-05-12  7:50   ` Lv Zheng
2014-05-19 22:34   ` Rafael J. Wysocki

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=536CB099.6000104@intel.com \
    --to=rafael.j.wysocki@intel.com \
    --cc=len.brown@intel.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=lv.zheng@intel.com \
    --cc=zetalog@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.