public inbox for linux-ia64@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 04/32] ACPI: sleep: Update acpi_set_firmware_waking_vector() invocations to favor 32-bit firm
       [not found] <cover.1434684719.git.lv.zheng@intel.com>
@ 2015-06-19  3:38 ` Lv Zheng
  2015-06-19  6:26   ` [PATCH 04/32] ACPI: sleep: Update acpi_set_firmware_waking_vector() invocations to favor 32-bit Ingo Molnar
       [not found] ` <cover.1435114811.git.lv.zheng@intel.com>
  1 sibling, 1 reply; 10+ messages in thread
From: Lv Zheng @ 2015-06-19  3:38 UTC (permalink / raw)
  To: Rafael J. Wysocki, Len Brown
  Cc: Lv Zheng, Lv Zheng, linux-kernel, linux-acpi, Thomas Gleixner,
	Ingo Molnar, H. Peter Anvin, x86, Tony Luck, Fenghua Yu,
	linux-ia64

This patch updates acpi_set_firmware_waking_vector() invocations in order
to keep 32-bit firmware waking vector favor for Linux.

64-bit firmware waking vector has never been enabled by Linux.  The
(acpi_physical_address)0 for 64-bit address can be used to force ACPICA to
set only 32-bit firmware waking vector for Linux.

Reference: https://bugzilla.kernel.org/show_bug.cgi?idt021
Reported-and-tested-by: Oswald Buddenhagen <ossi@kde.org>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: x86@kernel.org
Cc: Tony Luck <tony.luck@intel.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: linux-ia64@vger.kernel.org
---
 arch/ia64/include/asm/acpi.h |    3 ++-
 arch/ia64/kernel/acpi.c      |    2 --
 arch/x86/include/asm/acpi.h  |    3 ++-
 drivers/acpi/sleep.c         |    8 ++++++--
 4 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h
index aa0fdf1..0ac4fab 100644
--- a/arch/ia64/include/asm/acpi.h
+++ b/arch/ia64/include/asm/acpi.h
@@ -79,7 +79,8 @@ int acpi_gsi_to_irq (u32 gsi, unsigned int *irq);
 /* Low-level suspend routine. */
 extern int acpi_suspend_lowlevel(void);
 
-extern unsigned long acpi_wakeup_address;
+#define acpi_wakeup_address	((acpi_physical_address)0)
+#define acpi_wakeup_address64	((acpi_physical_address)0)
 
 /*
  * Record the cpei override flag and current logical cpu. This is
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
index b1698bc..1b08d6f 100644
--- a/arch/ia64/kernel/acpi.c
+++ b/arch/ia64/kernel/acpi.c
@@ -60,8 +60,6 @@ int acpi_lapic;
 unsigned int acpi_cpei_override;
 unsigned int acpi_cpei_phys_cpuid;
 
-unsigned long acpi_wakeup_address = 0;
-
 #ifdef CONFIG_IA64_GENERIC
 static unsigned long __init acpi_find_rsdp(void)
 {
diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h
index 3a45668..fc9608d 100644
--- a/arch/x86/include/asm/acpi.h
+++ b/arch/x86/include/asm/acpi.h
@@ -72,7 +72,8 @@ static inline void acpi_disable_pci(void)
 extern int (*acpi_suspend_lowlevel)(void);
 
 /* Physical address to resume after wakeup */
-#define acpi_wakeup_address ((unsigned long)(real_mode_header->wakeup_start))
+#define acpi_wakeup_address	((acpi_physical_address)(real_mode_header->wakeup_start))
+#define acpi_wakeup_address64	((acpi_physical_address)(0))
 
 /*
  * Check if the CPU can handle C2 and deeper
diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
index 2f0d4db..3a6a2eb 100644
--- a/drivers/acpi/sleep.c
+++ b/drivers/acpi/sleep.c
@@ -25,6 +25,8 @@
 #include "internal.h"
 #include "sleep.h"
 
+#define ACPI_NO_WAKING_VECTOR		((acpi_physical_address)0)
+
 static u8 sleep_states[ACPI_S_STATE_COUNT];
 
 static void acpi_sleep_tts_switch(u32 acpi_state)
@@ -61,7 +63,8 @@ static int acpi_sleep_prepare(u32 acpi_state)
 	if (acpi_state = ACPI_STATE_S3) {
 		if (!acpi_wakeup_address)
 			return -EFAULT;
-		acpi_set_firmware_waking_vector(acpi_wakeup_address);
+		acpi_set_firmware_waking_vector(acpi_wakeup_address,
+						acpi_wakeup_address64);
 
 	}
 	ACPI_FLUSH_CPU_CACHE();
@@ -410,7 +413,8 @@ static void acpi_pm_finish(void)
 	acpi_leave_sleep_state(acpi_state);
 
 	/* reset firmware waking vector */
-	acpi_set_firmware_waking_vector((acpi_physical_address) 0);
+	acpi_set_firmware_waking_vector(ACPI_NO_WAKING_VECTOR,
+					ACPI_NO_WAKING_VECTOR);
 
 	acpi_target_sleep_state = ACPI_STATE_S0;
 
-- 
1.7.10


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH 04/32] ACPI: sleep: Update acpi_set_firmware_waking_vector() invocations to favor 32-bit
  2015-06-19  3:38 ` [PATCH 04/32] ACPI: sleep: Update acpi_set_firmware_waking_vector() invocations to favor 32-bit firm Lv Zheng
@ 2015-06-19  6:26   ` Ingo Molnar
  2015-06-19 23:42     ` Rafael J. Wysocki
  0 siblings, 1 reply; 10+ messages in thread
From: Ingo Molnar @ 2015-06-19  6:26 UTC (permalink / raw)
  To: Lv Zheng
  Cc: Rafael J. Wysocki, Len Brown, Lv Zheng, linux-kernel, linux-acpi,
	Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86, Tony Luck,
	Fenghua Yu, linux-ia64


* Lv Zheng <lv.zheng@intel.com> wrote:

> This patch updates acpi_set_firmware_waking_vector() invocations in order
> to keep 32-bit firmware waking vector favor for Linux.

This sentence does not parse.

> 64-bit firmware waking vector has never been enabled by Linux.  The
> (acpi_physical_address)0 for 64-bit address can be used to force ACPICA to
> set only 32-bit firmware waking vector for Linux.

So this is a change that affects a lot of systems - what is the expected 
compatibility of this? Does Windows enable the 64-bit address? Which versions of 
Windows?

> 
> Reference: https://bugzilla.kernel.org/show_bug.cgi?idt021
> Reported-and-tested-by: Oswald Buddenhagen <ossi@kde.org>
> Signed-off-by: Lv Zheng <lv.zheng@intel.com>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Ingo Molnar <mingo@redhat.com>
> Cc: "H. Peter Anvin" <hpa@zytor.com>
> Cc: x86@kernel.org
> Cc: Tony Luck <tony.luck@intel.com>
> Cc: Fenghua Yu <fenghua.yu@intel.com>
> Cc: linux-ia64@vger.kernel.org
> ---
>  arch/ia64/include/asm/acpi.h |    3 ++-
>  arch/ia64/kernel/acpi.c      |    2 --
>  arch/x86/include/asm/acpi.h  |    3 ++-
>  drivers/acpi/sleep.c         |    8 ++++++--
>  4 files changed, 10 insertions(+), 6 deletions(-)
> 
> diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h
> index aa0fdf1..0ac4fab 100644
> --- a/arch/ia64/include/asm/acpi.h
> +++ b/arch/ia64/include/asm/acpi.h
> @@ -79,7 +79,8 @@ int acpi_gsi_to_irq (u32 gsi, unsigned int *irq);
>  /* Low-level suspend routine. */
>  extern int acpi_suspend_lowlevel(void);
>  
> -extern unsigned long acpi_wakeup_address;
> +#define acpi_wakeup_address	((acpi_physical_address)0)
> +#define acpi_wakeup_address64	((acpi_physical_address)0)
>  
>  /*
>   * Record the cpei override flag and current logical cpu. This is
> diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
> index b1698bc..1b08d6f 100644
> --- a/arch/ia64/kernel/acpi.c
> +++ b/arch/ia64/kernel/acpi.c
> @@ -60,8 +60,6 @@ int acpi_lapic;
>  unsigned int acpi_cpei_override;
>  unsigned int acpi_cpei_phys_cpuid;
>  
> -unsigned long acpi_wakeup_address = 0;
> -
>  #ifdef CONFIG_IA64_GENERIC
>  static unsigned long __init acpi_find_rsdp(void)
>  {
> diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h
> index 3a45668..fc9608d 100644
> --- a/arch/x86/include/asm/acpi.h
> +++ b/arch/x86/include/asm/acpi.h
> @@ -72,7 +72,8 @@ static inline void acpi_disable_pci(void)
>  extern int (*acpi_suspend_lowlevel)(void);
>  
>  /* Physical address to resume after wakeup */
> -#define acpi_wakeup_address ((unsigned long)(real_mode_header->wakeup_start))
> +#define acpi_wakeup_address	((acpi_physical_address)(real_mode_header->wakeup_start))
> +#define acpi_wakeup_address64	((acpi_physical_address)(0))

Btw., 'acpi_physical_address' is a mouthful, and despite being a data type, it 
looks like a variable name. Please rename it to something more sensible, matching 
existing physical address patterns, like 'acpi_phys_addr_t'.

Also, is there any reason why it's not simply phys_addr_t? It's not like ACPI has 
a different notion of physical addresses.

> diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
> index 2f0d4db..3a6a2eb 100644
> --- a/drivers/acpi/sleep.c
> +++ b/drivers/acpi/sleep.c
> @@ -25,6 +25,8 @@
>  #include "internal.h"
>  #include "sleep.h"
>  
> +#define ACPI_NO_WAKING_VECTOR		((acpi_physical_address)0)

So in x86 speak, 'vectors' are the things that drive interrupts. They are not 
addresses. So calling it a 'vector' is a misnomer - it's a wakeup entry address 
point.

Secondly, when the 64-bit entry point is configured, in what mode does the 
firmware enter it - still real mode? Exactly what are the semantics when the 
64-bit entry point is set?

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 04/32] ACPI: sleep: Update acpi_set_firmware_waking_vector() invocations to favor 32-bit
  2015-06-19  6:26   ` [PATCH 04/32] ACPI: sleep: Update acpi_set_firmware_waking_vector() invocations to favor 32-bit Ingo Molnar
@ 2015-06-19 23:42     ` Rafael J. Wysocki
  0 siblings, 0 replies; 10+ messages in thread
From: Rafael J. Wysocki @ 2015-06-19 23:42 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Lv Zheng, Rafael J. Wysocki, Len Brown, Lv Zheng, linux-kernel,
	linux-acpi, Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86,
	Tony Luck, Fenghua Yu, linux-ia64

On Friday, June 19, 2015 08:26:31 AM Ingo Molnar wrote:
> 
> * Lv Zheng <lv.zheng@intel.com> wrote:
> 
> > This patch updates acpi_set_firmware_waking_vector() invocations in order
> > to keep 32-bit firmware waking vector favor for Linux.
> 
> This sentence does not parse.
> 
> > 64-bit firmware waking vector has never been enabled by Linux.  The
> > (acpi_physical_address)0 for 64-bit address can be used to force ACPICA to
> > set only 32-bit firmware waking vector for Linux.
> 
> So this is a change that affects a lot of systems - what is the expected 
> compatibility of this? Does Windows enable the 64-bit address? Which versions of 
> Windows?
> 
> > 
> > Reference: https://bugzilla.kernel.org/show_bug.cgi?idt021
> > Reported-and-tested-by: Oswald Buddenhagen <ossi@kde.org>
> > Signed-off-by: Lv Zheng <lv.zheng@intel.com>
> > Cc: Thomas Gleixner <tglx@linutronix.de>
> > Cc: Ingo Molnar <mingo@redhat.com>
> > Cc: "H. Peter Anvin" <hpa@zytor.com>
> > Cc: x86@kernel.org
> > Cc: Tony Luck <tony.luck@intel.com>
> > Cc: Fenghua Yu <fenghua.yu@intel.com>
> > Cc: linux-ia64@vger.kernel.org
> > ---
> >  arch/ia64/include/asm/acpi.h |    3 ++-
> >  arch/ia64/kernel/acpi.c      |    2 --
> >  arch/x86/include/asm/acpi.h  |    3 ++-
> >  drivers/acpi/sleep.c         |    8 ++++++--
> >  4 files changed, 10 insertions(+), 6 deletions(-)
> > 
> > diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h
> > index aa0fdf1..0ac4fab 100644
> > --- a/arch/ia64/include/asm/acpi.h
> > +++ b/arch/ia64/include/asm/acpi.h
> > @@ -79,7 +79,8 @@ int acpi_gsi_to_irq (u32 gsi, unsigned int *irq);
> >  /* Low-level suspend routine. */
> >  extern int acpi_suspend_lowlevel(void);
> >  
> > -extern unsigned long acpi_wakeup_address;
> > +#define acpi_wakeup_address	((acpi_physical_address)0)
> > +#define acpi_wakeup_address64	((acpi_physical_address)0)
> >  
> >  /*
> >   * Record the cpei override flag and current logical cpu. This is
> > diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
> > index b1698bc..1b08d6f 100644
> > --- a/arch/ia64/kernel/acpi.c
> > +++ b/arch/ia64/kernel/acpi.c
> > @@ -60,8 +60,6 @@ int acpi_lapic;
> >  unsigned int acpi_cpei_override;
> >  unsigned int acpi_cpei_phys_cpuid;
> >  
> > -unsigned long acpi_wakeup_address = 0;
> > -
> >  #ifdef CONFIG_IA64_GENERIC
> >  static unsigned long __init acpi_find_rsdp(void)
> >  {
> > diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h
> > index 3a45668..fc9608d 100644
> > --- a/arch/x86/include/asm/acpi.h
> > +++ b/arch/x86/include/asm/acpi.h
> > @@ -72,7 +72,8 @@ static inline void acpi_disable_pci(void)
> >  extern int (*acpi_suspend_lowlevel)(void);
> >  
> >  /* Physical address to resume after wakeup */
> > -#define acpi_wakeup_address ((unsigned long)(real_mode_header->wakeup_start))
> > +#define acpi_wakeup_address	((acpi_physical_address)(real_mode_header->wakeup_start))
> > +#define acpi_wakeup_address64	((acpi_physical_address)(0))
> 
> Btw., 'acpi_physical_address' is a mouthful, and despite being a data type, it 
> looks like a variable name. Please rename it to something more sensible, matching 
> existing physical address patterns, like 'acpi_phys_addr_t'.

This is an ACPICA data type which means that it is used by multiple OSes, not only
by Linux.  We're just a user here. :-)


> Also, is there any reason why it's not simply phys_addr_t? It's not like ACPI has 
> a different notion of physical addresses.

Portability between different OSes is the reason.


> > diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
> > index 2f0d4db..3a6a2eb 100644
> > --- a/drivers/acpi/sleep.c
> > +++ b/drivers/acpi/sleep.c
> > @@ -25,6 +25,8 @@
> >  #include "internal.h"
> >  #include "sleep.h"
> >  
> > +#define ACPI_NO_WAKING_VECTOR		((acpi_physical_address)0)
> 
> So in x86 speak, 'vectors' are the things that drive interrupts. They are not 
> addresses. So calling it a 'vector' is a misnomer - it's a wakeup entry address 
> point.

But it is called "the waking vector" by the spec, so the naming here follows
the spec.


> Secondly, when the 64-bit entry point is configured, in what mode does the 
> firmware enter it - still real mode? Exactly what are the semantics when the 
> 64-bit entry point is set?

It can't do that in real mode, because the 64-bit one is only supposed to be
used when the entry point is above 4 GB in the physical address space.

Thanks,
Rafael

--
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v2 03/28] ACPICA: Hardware: Enable 64-bit firmware waking vector for selected FACS.
       [not found] ` <cover.1435114811.git.lv.zheng@intel.com>
@ 2015-06-24  3:02   ` Lv Zheng
  2015-06-24 13:39     ` Rafael J. Wysocki
  0 siblings, 1 reply; 10+ messages in thread
From: Lv Zheng @ 2015-06-24  3:02 UTC (permalink / raw)
  To: Rafael J. Wysocki, Len Brown
  Cc: Lv Zheng, Lv Zheng, linux-kernel, linux-acpi, Bob Moore,
	Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86, Tony Luck,
	Fenghua Yu, linux-ia64

ACPICA commit 7aa598d711644ab0de5f70ad88f1e2de253115e4

The following commit is reported to have broken s2ram on some platforms:
 Commit: 0249ed2444d65d65fc3f3f64f398f1ad0b7e54cd
 ACPICA: Add option to favor 32-bit FADT addresses.
The platform reports 2 FACS tables (which is not allowed by ACPI
specification) and the new 32-bit address favor rule forces OSPMs to use
the FACS table reported via FADT's X_FIRMWARE_CTRL field.

The root cause of the reported bug might be one of the followings:
1. BIOS may favor the 64-bit firmware waking vector address when the
   version of the FACS is greater than 0 and Linux currently only supports
   resuming from the real mode, so the 64-bit firmware waking vector has
   never been set and might be invalid to BIOS while the commit enables
   higher version FACS.
2. BIOS may favor the FACS reported via the "FIRMWARE_CTRL" field in the
   FADT while the commit doesn't set the firmware waking vector address of
   the FACS reported by "FIRMWARE_CTRL", it only sets the firware waking
   vector address of the FACS reported by "X_FIRMWARE_CTRL".

This patch excludes the cases that can trigger the bugs caused by the root
cause 1.

ACPI specification says:
A. 32-bit FACS address (FIRMWARE_CTRL field in FADT):
   Physical memory address of the FACS, where OSPM and firmware exchange
   control information.
   If the X_FIRMWARE_CTRL field contains a non zero value then this field
   must be zero.
   A zero value indicates that no FACS is specified by this field.
B. 64-bit FACS address (X_FIRMWARE_CTRL field in FADT):
   64bit physical memory address of the FACS.
   This field is used when the physical address of the FACS is above 4GB.
   If the FIRMWARE_CTRL field contains a non zero value then this field
   must be zero.
   A zero value indicates that no FACS is specified by this field.
Thus the 32bit and 64bit firmware waking vector should indicate completely
different resuming environment - real mode (1MB addressable) and non real
mode (4GB+ addressable) and currently Linux only supports resuming from
real mode.

This patch enables 64-bit firmware waking vector for selected FACS via
acpi_set_firmware_waking_vector() so that it's up to OSPMs to determine which
resuming mode should be used by BIOS and ACPICA changes won't trigger the
bugs caused by the root cause 1. For example, Linux can pass
physical_address64=0 as the parameter of acpi_set_firmware_waking_vector() to
indicate no 64bit waking vector support. Lv Zheng.

This patch also updates acpi_set_firmware_waking_vector() invocations in
order to keep 32-bit firmware waking vector favor for Linux. 64-bit
firmware waking vector has never been enabled by Linux.  The
(acpi_physical_address)0 for 64-bit address can be used to force ACPICA to
set only 32-bit firmware waking vector for Linux.

Link: https://bugzilla.kernel.org/show_bug.cgi?idt021
Link: https://github.com/acpica/acpica/commit/7aa598d7
Cc: 3.14.1+ <stable@vger.kernel.org> # 3.14.1+
Reported-and-tested-by: Oswald Buddenhagen <ossi@kde.org>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: x86@kernel.org
Cc: Tony Luck <tony.luck@intel.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: linux-ia64@vger.kernel.org
---
 arch/ia64/include/asm/acpi.h    |    3 +-
 arch/ia64/kernel/acpi.c         |    2 --
 arch/x86/include/asm/acpi.h     |    3 +-
 drivers/acpi/acpica/hwxfsleep.c |   61 ++++++++++++---------------------------
 drivers/acpi/sleep.c            |    8 +++--
 include/acpi/acpixf.h           |   11 +++----
 6 files changed, 33 insertions(+), 55 deletions(-)

diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h
index aa0fdf1..0ac4fab 100644
--- a/arch/ia64/include/asm/acpi.h
+++ b/arch/ia64/include/asm/acpi.h
@@ -79,7 +79,8 @@ int acpi_gsi_to_irq (u32 gsi, unsigned int *irq);
 /* Low-level suspend routine. */
 extern int acpi_suspend_lowlevel(void);
 
-extern unsigned long acpi_wakeup_address;
+#define acpi_wakeup_address	((acpi_physical_address)0)
+#define acpi_wakeup_address64	((acpi_physical_address)0)
 
 /*
  * Record the cpei override flag and current logical cpu. This is
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
index b1698bc..1b08d6f 100644
--- a/arch/ia64/kernel/acpi.c
+++ b/arch/ia64/kernel/acpi.c
@@ -60,8 +60,6 @@ int acpi_lapic;
 unsigned int acpi_cpei_override;
 unsigned int acpi_cpei_phys_cpuid;
 
-unsigned long acpi_wakeup_address = 0;
-
 #ifdef CONFIG_IA64_GENERIC
 static unsigned long __init acpi_find_rsdp(void)
 {
diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h
index 3a45668..fc9608d 100644
--- a/arch/x86/include/asm/acpi.h
+++ b/arch/x86/include/asm/acpi.h
@@ -72,7 +72,8 @@ static inline void acpi_disable_pci(void)
 extern int (*acpi_suspend_lowlevel)(void);
 
 /* Physical address to resume after wakeup */
-#define acpi_wakeup_address ((unsigned long)(real_mode_header->wakeup_start))
+#define acpi_wakeup_address	((acpi_physical_address)(real_mode_header->wakeup_start))
+#define acpi_wakeup_address64	((acpi_physical_address)(0))
 
 /*
  * Check if the CPU can handle C2 and deeper
diff --git a/drivers/acpi/acpica/hwxfsleep.c b/drivers/acpi/acpica/hwxfsleep.c
index 82e310b..c67cd32 100644
--- a/drivers/acpi/acpica/hwxfsleep.c
+++ b/drivers/acpi/acpica/hwxfsleep.c
@@ -73,7 +73,6 @@ static struct acpi_sleep_functions acpi_sleep_dispatch[] = {
 /*
  * These functions are removed for the ACPI_REDUCED_HARDWARE case:
  *      acpi_set_firmware_waking_vector
- *      acpi_set_firmware_waking_vector64
  *      acpi_enter_sleep_state_s4bios
  */
 
@@ -83,15 +82,19 @@ static struct acpi_sleep_functions acpi_sleep_dispatch[] = {
  * FUNCTION:    acpi_set_firmware_waking_vector
  *
  * PARAMETERS:  physical_address    - 32-bit physical address of ACPI real mode
- *                                    entry point.
+ *                                    entry point
+ *              physical_address64  - 64-bit physical address of ACPI protected
+ *                                    entry point
  *
  * RETURN:      Status
  *
- * DESCRIPTION: Sets the 32-bit firmware_waking_vector field of the FACS
+ * DESCRIPTION: Sets the firmware_waking_vector fields of the FACS
  *
  ******************************************************************************/
 
-acpi_status acpi_set_firmware_waking_vector(u32 physical_address)
+acpi_status
+acpi_set_firmware_waking_vector(acpi_physical_address physical_address,
+				acpi_physical_address physical_address64)
 {
 	ACPI_FUNCTION_TRACE(acpi_set_firmware_waking_vector);
 
@@ -106,53 +109,27 @@ acpi_status acpi_set_firmware_waking_vector(u32 physical_address)
 
 	/* Set the 32-bit vector */
 
-	acpi_gbl_FACS->firmware_waking_vector = physical_address;
+	acpi_gbl_FACS->firmware_waking_vector = (u32)physical_address;
 
-	/* Clear the 64-bit vector if it exists */
+	if (acpi_gbl_FACS->length > 32) {
+		if (acpi_gbl_FACS->version >= 1) {
 
-	if ((acpi_gbl_FACS->length > 32) && (acpi_gbl_FACS->version >= 1)) {
-		acpi_gbl_FACS->xfirmware_waking_vector = 0;
-	}
-
-	return_ACPI_STATUS(AE_OK);
-}
-
-ACPI_EXPORT_SYMBOL(acpi_set_firmware_waking_vector)
-
-#if ACPI_MACHINE_WIDTH = 64
-/*******************************************************************************
- *
- * FUNCTION:    acpi_set_firmware_waking_vector64
- *
- * PARAMETERS:  physical_address    - 64-bit physical address of ACPI protected
- *                                    mode entry point.
- *
- * RETURN:      Status
- *
- * DESCRIPTION: Sets the 64-bit X_firmware_waking_vector field of the FACS, if
- *              it exists in the table. This function is intended for use with
- *              64-bit host operating systems.
- *
- ******************************************************************************/
-acpi_status acpi_set_firmware_waking_vector64(u64 physical_address)
-{
-	ACPI_FUNCTION_TRACE(acpi_set_firmware_waking_vector64);
+			/* Set the 64-bit vector */
 
-	/* Determine if the 64-bit vector actually exists */
+			acpi_gbl_FACS->xfirmware_waking_vector +			    physical_address64;
+		} else {
+			/* Clear the 64-bit vector if it exists */
 
-	if ((acpi_gbl_FACS->length <= 32) || (acpi_gbl_FACS->version < 1)) {
-		return_ACPI_STATUS(AE_NOT_EXIST);
+			acpi_gbl_FACS->xfirmware_waking_vector = 0;
+		}
 	}
 
-	/* Clear 32-bit vector, set the 64-bit X_ vector */
-
-	acpi_gbl_FACS->firmware_waking_vector = 0;
-	acpi_gbl_FACS->xfirmware_waking_vector = physical_address;
 	return_ACPI_STATUS(AE_OK);
 }
 
-ACPI_EXPORT_SYMBOL(acpi_set_firmware_waking_vector64)
-#endif
+ACPI_EXPORT_SYMBOL(acpi_set_firmware_waking_vector)
+
 /*******************************************************************************
  *
  * FUNCTION:    acpi_enter_sleep_state_s4bios
diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
index 2f0d4db..3a6a2eb 100644
--- a/drivers/acpi/sleep.c
+++ b/drivers/acpi/sleep.c
@@ -25,6 +25,8 @@
 #include "internal.h"
 #include "sleep.h"
 
+#define ACPI_NO_WAKING_VECTOR		((acpi_physical_address)0)
+
 static u8 sleep_states[ACPI_S_STATE_COUNT];
 
 static void acpi_sleep_tts_switch(u32 acpi_state)
@@ -61,7 +63,8 @@ static int acpi_sleep_prepare(u32 acpi_state)
 	if (acpi_state = ACPI_STATE_S3) {
 		if (!acpi_wakeup_address)
 			return -EFAULT;
-		acpi_set_firmware_waking_vector(acpi_wakeup_address);
+		acpi_set_firmware_waking_vector(acpi_wakeup_address,
+						acpi_wakeup_address64);
 
 	}
 	ACPI_FLUSH_CPU_CACHE();
@@ -410,7 +413,8 @@ static void acpi_pm_finish(void)
 	acpi_leave_sleep_state(acpi_state);
 
 	/* reset firmware waking vector */
-	acpi_set_firmware_waking_vector((acpi_physical_address) 0);
+	acpi_set_firmware_waking_vector(ACPI_NO_WAKING_VECTOR,
+					ACPI_NO_WAKING_VECTOR);
 
 	acpi_target_sleep_state = ACPI_STATE_S0;
 
diff --git a/include/acpi/acpixf.h b/include/acpi/acpixf.h
index d68f1cd..a68e4b9 100644
--- a/include/acpi/acpixf.h
+++ b/include/acpi/acpixf.h
@@ -814,13 +814,10 @@ ACPI_EXTERNAL_RETURN_STATUS(acpi_status
 ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_leave_sleep_state(u8 sleep_state))
 
 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
-				acpi_set_firmware_waking_vector(u32
-								physical_address))
-#if ACPI_MACHINE_WIDTH = 64
-ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
-				acpi_set_firmware_waking_vector64(u64
-								  physical_address))
-#endif
+				acpi_set_firmware_waking_vector
+				(acpi_physical_address physical_address,
+				 acpi_physical_address physical_address64))
+
 /*
  * ACPI Timer interfaces
  */
-- 
1.7.10


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH v2 03/28] ACPICA: Hardware: Enable 64-bit firmware waking vector for selected FACS.
  2015-06-24  3:02   ` [PATCH v2 03/28] ACPICA: Hardware: Enable 64-bit firmware waking vector for selected FACS Lv Zheng
@ 2015-06-24 13:39     ` Rafael J. Wysocki
  2015-06-24 22:58       ` Rafael J. Wysocki
  2015-06-25  1:09       ` Zheng, Lv
  0 siblings, 2 replies; 10+ messages in thread
From: Rafael J. Wysocki @ 2015-06-24 13:39 UTC (permalink / raw)
  To: Lv Zheng
  Cc: Rafael J. Wysocki, Len Brown, Lv Zheng, linux-kernel, linux-acpi,
	Bob Moore, Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86,
	Tony Luck, Fenghua Yu, linux-ia64

On Wednesday, June 24, 2015 11:02:10 AM Lv Zheng wrote:
> ACPICA commit 7aa598d711644ab0de5f70ad88f1e2de253115e4
> 
> The following commit is reported to have broken s2ram on some platforms:
>  Commit: 0249ed2444d65d65fc3f3f64f398f1ad0b7e54cd
>  ACPICA: Add option to favor 32-bit FADT addresses.
> The platform reports 2 FACS tables (which is not allowed by ACPI
> specification) and the new 32-bit address favor rule forces OSPMs to use
> the FACS table reported via FADT's X_FIRMWARE_CTRL field.
> 
> The root cause of the reported bug might be one of the followings:
> 1. BIOS may favor the 64-bit firmware waking vector address when the
>    version of the FACS is greater than 0 and Linux currently only supports
>    resuming from the real mode, so the 64-bit firmware waking vector has
>    never been set and might be invalid to BIOS while the commit enables
>    higher version FACS.
> 2. BIOS may favor the FACS reported via the "FIRMWARE_CTRL" field in the
>    FADT while the commit doesn't set the firmware waking vector address of
>    the FACS reported by "FIRMWARE_CTRL", it only sets the firware waking
>    vector address of the FACS reported by "X_FIRMWARE_CTRL".
> 
> This patch excludes the cases that can trigger the bugs caused by the root
> cause 1.
> 
> ACPI specification says:
> A. 32-bit FACS address (FIRMWARE_CTRL field in FADT):
>    Physical memory address of the FACS, where OSPM and firmware exchange
>    control information.
>    If the X_FIRMWARE_CTRL field contains a non zero value then this field
>    must be zero.
>    A zero value indicates that no FACS is specified by this field.
> B. 64-bit FACS address (X_FIRMWARE_CTRL field in FADT):
>    64bit physical memory address of the FACS.
>    This field is used when the physical address of the FACS is above 4GB.
>    If the FIRMWARE_CTRL field contains a non zero value then this field
>    must be zero.
>    A zero value indicates that no FACS is specified by this field.
> Thus the 32bit and 64bit firmware waking vector should indicate completely
> different resuming environment - real mode (1MB addressable) and non real
> mode (4GB+ addressable) and currently Linux only supports resuming from
> real mode.
> 
> This patch enables 64-bit firmware waking vector for selected FACS via
> acpi_set_firmware_waking_vector() so that it's up to OSPMs to determine which
> resuming mode should be used by BIOS and ACPICA changes won't trigger the
> bugs caused by the root cause 1. For example, Linux can pass
> physical_address64=0 as the parameter of acpi_set_firmware_waking_vector() to
> indicate no 64bit waking vector support. Lv Zheng.
> 
> This patch also updates acpi_set_firmware_waking_vector() invocations in
> order to keep 32-bit firmware waking vector favor for Linux. 64-bit
> firmware waking vector has never been enabled by Linux.  The
> (acpi_physical_address)0 for 64-bit address can be used to force ACPICA to
> set only 32-bit firmware waking vector for Linux.
> 
> Link: https://bugzilla.kernel.org/show_bug.cgi?idt021
> Link: https://github.com/acpica/acpica/commit/7aa598d7
> Cc: 3.14.1+ <stable@vger.kernel.org> # 3.14.1+
> Reported-and-tested-by: Oswald Buddenhagen <ossi@kde.org>
> Signed-off-by: Lv Zheng <lv.zheng@intel.com>
> Signed-off-by: Bob Moore <robert.moore@intel.com>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Ingo Molnar <mingo@redhat.com>
> Cc: "H. Peter Anvin" <hpa@zytor.com>
> Cc: x86@kernel.org
> Cc: Tony Luck <tony.luck@intel.com>
> Cc: Fenghua Yu <fenghua.yu@intel.com>
> Cc: linux-ia64@vger.kernel.org
> ---
>  arch/ia64/include/asm/acpi.h    |    3 +-
>  arch/ia64/kernel/acpi.c         |    2 --
>  arch/x86/include/asm/acpi.h     |    3 +-
>  drivers/acpi/acpica/hwxfsleep.c |   61 ++++++++++++---------------------------
>  drivers/acpi/sleep.c            |    8 +++--
>  include/acpi/acpixf.h           |   11 +++----
>  6 files changed, 33 insertions(+), 55 deletions(-)
> 
> diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h
> index aa0fdf1..0ac4fab 100644
> --- a/arch/ia64/include/asm/acpi.h
> +++ b/arch/ia64/include/asm/acpi.h
> @@ -79,7 +79,8 @@ int acpi_gsi_to_irq (u32 gsi, unsigned int *irq);
>  /* Low-level suspend routine. */
>  extern int acpi_suspend_lowlevel(void);
>  
> -extern unsigned long acpi_wakeup_address;
> +#define acpi_wakeup_address	((acpi_physical_address)0)
> +#define acpi_wakeup_address64	((acpi_physical_address)0)
>  
>  /*
>   * Record the cpei override flag and current logical cpu. This is
> diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
> index b1698bc..1b08d6f 100644
> --- a/arch/ia64/kernel/acpi.c
> +++ b/arch/ia64/kernel/acpi.c
> @@ -60,8 +60,6 @@ int acpi_lapic;
>  unsigned int acpi_cpei_override;
>  unsigned int acpi_cpei_phys_cpuid;
>  
> -unsigned long acpi_wakeup_address = 0;
> -
>  #ifdef CONFIG_IA64_GENERIC
>  static unsigned long __init acpi_find_rsdp(void)
>  {
> diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h
> index 3a45668..fc9608d 100644
> --- a/arch/x86/include/asm/acpi.h
> +++ b/arch/x86/include/asm/acpi.h
> @@ -72,7 +72,8 @@ static inline void acpi_disable_pci(void)
>  extern int (*acpi_suspend_lowlevel)(void);
>  
>  /* Physical address to resume after wakeup */
> -#define acpi_wakeup_address ((unsigned long)(real_mode_header->wakeup_start))
> +#define acpi_wakeup_address	((acpi_physical_address)(real_mode_header->wakeup_start))
> +#define acpi_wakeup_address64	((acpi_physical_address)(0))

Do we need this?

Why don't we define

static inline void acpi_set_wakeup_address(void)
{
	acpi_set_firmware_waking_vector((unsigned long)real_mode_header->wakeup_start, 0);
}

and

static inline void acpi_clear_wakeup_address(void)
{
	acpi_set_firmware_waking_vector(0, 0);
}

instead?

Which may be defined as empty stubs on ia64?

>  
>  /*
>   * Check if the CPU can handle C2 and deeper
> diff --git a/drivers/acpi/acpica/hwxfsleep.c b/drivers/acpi/acpica/hwxfsleep.c
> index 82e310b..c67cd32 100644
> --- a/drivers/acpi/acpica/hwxfsleep.c
> +++ b/drivers/acpi/acpica/hwxfsleep.c
> @@ -73,7 +73,6 @@ static struct acpi_sleep_functions acpi_sleep_dispatch[] = {
>  /*
>   * These functions are removed for the ACPI_REDUCED_HARDWARE case:
>   *      acpi_set_firmware_waking_vector
> - *      acpi_set_firmware_waking_vector64
>   *      acpi_enter_sleep_state_s4bios
>   */
>  
> @@ -83,15 +82,19 @@ static struct acpi_sleep_functions acpi_sleep_dispatch[] = {
>   * FUNCTION:    acpi_set_firmware_waking_vector
>   *
>   * PARAMETERS:  physical_address    - 32-bit physical address of ACPI real mode
> - *                                    entry point.
> + *                                    entry point
> + *              physical_address64  - 64-bit physical address of ACPI protected
> + *                                    entry point
>   *
>   * RETURN:      Status
>   *
> - * DESCRIPTION: Sets the 32-bit firmware_waking_vector field of the FACS
> + * DESCRIPTION: Sets the firmware_waking_vector fields of the FACS
>   *
>   ******************************************************************************/
>  
> -acpi_status acpi_set_firmware_waking_vector(u32 physical_address)
> +acpi_status
> +acpi_set_firmware_waking_vector(acpi_physical_address physical_address,
> +				acpi_physical_address physical_address64)
>  {
>  	ACPI_FUNCTION_TRACE(acpi_set_firmware_waking_vector);
>  
> @@ -106,53 +109,27 @@ acpi_status acpi_set_firmware_waking_vector(u32 physical_address)
>  
>  	/* Set the 32-bit vector */
>  
> -	acpi_gbl_FACS->firmware_waking_vector = physical_address;
> +	acpi_gbl_FACS->firmware_waking_vector = (u32)physical_address;
>  
> -	/* Clear the 64-bit vector if it exists */
> +	if (acpi_gbl_FACS->length > 32) {
> +		if (acpi_gbl_FACS->version >= 1) {
>  
> -	if ((acpi_gbl_FACS->length > 32) && (acpi_gbl_FACS->version >= 1)) {
> -		acpi_gbl_FACS->xfirmware_waking_vector = 0;
> -	}
> -
> -	return_ACPI_STATUS(AE_OK);
> -}
> -
> -ACPI_EXPORT_SYMBOL(acpi_set_firmware_waking_vector)
> -
> -#if ACPI_MACHINE_WIDTH = 64
> -/*******************************************************************************
> - *
> - * FUNCTION:    acpi_set_firmware_waking_vector64
> - *
> - * PARAMETERS:  physical_address    - 64-bit physical address of ACPI protected
> - *                                    mode entry point.
> - *
> - * RETURN:      Status
> - *
> - * DESCRIPTION: Sets the 64-bit X_firmware_waking_vector field of the FACS, if
> - *              it exists in the table. This function is intended for use with
> - *              64-bit host operating systems.
> - *
> - ******************************************************************************/
> -acpi_status acpi_set_firmware_waking_vector64(u64 physical_address)
> -{
> -	ACPI_FUNCTION_TRACE(acpi_set_firmware_waking_vector64);
> +			/* Set the 64-bit vector */
>  
> -	/* Determine if the 64-bit vector actually exists */
> +			acpi_gbl_FACS->xfirmware_waking_vector > +			    physical_address64;
> +		} else {
> +			/* Clear the 64-bit vector if it exists */
>  
> -	if ((acpi_gbl_FACS->length <= 32) || (acpi_gbl_FACS->version < 1)) {
> -		return_ACPI_STATUS(AE_NOT_EXIST);
> +			acpi_gbl_FACS->xfirmware_waking_vector = 0;
> +		}
>  	}
>  
> -	/* Clear 32-bit vector, set the 64-bit X_ vector */
> -
> -	acpi_gbl_FACS->firmware_waking_vector = 0;
> -	acpi_gbl_FACS->xfirmware_waking_vector = physical_address;
>  	return_ACPI_STATUS(AE_OK);
>  }
>  
> -ACPI_EXPORT_SYMBOL(acpi_set_firmware_waking_vector64)
> -#endif
> +ACPI_EXPORT_SYMBOL(acpi_set_firmware_waking_vector)
> +
>  /*******************************************************************************
>   *
>   * FUNCTION:    acpi_enter_sleep_state_s4bios
> diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
> index 2f0d4db..3a6a2eb 100644
> --- a/drivers/acpi/sleep.c
> +++ b/drivers/acpi/sleep.c
> @@ -25,6 +25,8 @@
>  #include "internal.h"
>  #include "sleep.h"
>  
> +#define ACPI_NO_WAKING_VECTOR		((acpi_physical_address)0)

Do we need this too?

> +
>  static u8 sleep_states[ACPI_S_STATE_COUNT];
>  
>  static void acpi_sleep_tts_switch(u32 acpi_state)
> @@ -61,7 +63,8 @@ static int acpi_sleep_prepare(u32 acpi_state)
>  	if (acpi_state = ACPI_STATE_S3) {
>  		if (!acpi_wakeup_address)
>  			return -EFAULT;
> -		acpi_set_firmware_waking_vector(acpi_wakeup_address);
> +		acpi_set_firmware_waking_vector(acpi_wakeup_address,
> +						acpi_wakeup_address64);
>  
>  	}
>  	ACPI_FLUSH_CPU_CACHE();
> @@ -410,7 +413,8 @@ static void acpi_pm_finish(void)
>  	acpi_leave_sleep_state(acpi_state);
>  
>  	/* reset firmware waking vector */
> -	acpi_set_firmware_waking_vector((acpi_physical_address) 0);
> +	acpi_set_firmware_waking_vector(ACPI_NO_WAKING_VECTOR,
> +					ACPI_NO_WAKING_VECTOR);
>  
>  	acpi_target_sleep_state = ACPI_STATE_S0;
>  
> diff --git a/include/acpi/acpixf.h b/include/acpi/acpixf.h
> index d68f1cd..a68e4b9 100644
> --- a/include/acpi/acpixf.h
> +++ b/include/acpi/acpixf.h
> @@ -814,13 +814,10 @@ ACPI_EXTERNAL_RETURN_STATUS(acpi_status
>  ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_leave_sleep_state(u8 sleep_state))
>  
>  ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
> -				acpi_set_firmware_waking_vector(u32
> -								physical_address))
> -#if ACPI_MACHINE_WIDTH = 64
> -ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
> -				acpi_set_firmware_waking_vector64(u64
> -								  physical_address))
> -#endif
> +				acpi_set_firmware_waking_vector
> +				(acpi_physical_address physical_address,
> +				 acpi_physical_address physical_address64))
> +
>  /*
>   * ACPI Timer interfaces
>   */
> 

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2 03/28] ACPICA: Hardware: Enable 64-bit firmware waking vector for selected FACS.
  2015-06-24 13:39     ` Rafael J. Wysocki
@ 2015-06-24 22:58       ` Rafael J. Wysocki
  2015-06-25  0:29         ` Zheng, Lv
  2015-06-25  1:09       ` Zheng, Lv
  1 sibling, 1 reply; 10+ messages in thread
From: Rafael J. Wysocki @ 2015-06-24 22:58 UTC (permalink / raw)
  To: Lv Zheng
  Cc: Rafael J. Wysocki, Len Brown, Lv Zheng, linux-kernel, linux-acpi,
	Bob Moore, Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86,
	Tony Luck, Fenghua Yu, linux-ia64

On Wednesday, June 24, 2015 04:05:42 PM Rafael J. Wysocki wrote:
> On Wednesday, June 24, 2015 11:02:10 AM Lv Zheng wrote:
> > ACPICA commit 7aa598d711644ab0de5f70ad88f1e2de253115e4
> > 
> > The following commit is reported to have broken s2ram on some platforms:
> >  Commit: 0249ed2444d65d65fc3f3f64f398f1ad0b7e54cd
> >  ACPICA: Add option to favor 32-bit FADT addresses.
> > The platform reports 2 FACS tables (which is not allowed by ACPI
> > specification) and the new 32-bit address favor rule forces OSPMs to use
> > the FACS table reported via FADT's X_FIRMWARE_CTRL field.
> > 
> > The root cause of the reported bug might be one of the followings:
> > 1. BIOS may favor the 64-bit firmware waking vector address when the
> >    version of the FACS is greater than 0 and Linux currently only supports
> >    resuming from the real mode, so the 64-bit firmware waking vector has
> >    never been set and might be invalid to BIOS while the commit enables
> >    higher version FACS.
> > 2. BIOS may favor the FACS reported via the "FIRMWARE_CTRL" field in the
> >    FADT while the commit doesn't set the firmware waking vector address of
> >    the FACS reported by "FIRMWARE_CTRL", it only sets the firware waking
> >    vector address of the FACS reported by "X_FIRMWARE_CTRL".
> > 
> > This patch excludes the cases that can trigger the bugs caused by the root
> > cause 1.
> > 
> > ACPI specification says:
> > A. 32-bit FACS address (FIRMWARE_CTRL field in FADT):
> >    Physical memory address of the FACS, where OSPM and firmware exchange
> >    control information.
> >    If the X_FIRMWARE_CTRL field contains a non zero value then this field
> >    must be zero.
> >    A zero value indicates that no FACS is specified by this field.
> > B. 64-bit FACS address (X_FIRMWARE_CTRL field in FADT):
> >    64bit physical memory address of the FACS.
> >    This field is used when the physical address of the FACS is above 4GB.
> >    If the FIRMWARE_CTRL field contains a non zero value then this field
> >    must be zero.
> >    A zero value indicates that no FACS is specified by this field.
> > Thus the 32bit and 64bit firmware waking vector should indicate completely
> > different resuming environment - real mode (1MB addressable) and non real
> > mode (4GB+ addressable) and currently Linux only supports resuming from
> > real mode.
> > 
> > This patch enables 64-bit firmware waking vector for selected FACS via
> > acpi_set_firmware_waking_vector() so that it's up to OSPMs to determine which
> > resuming mode should be used by BIOS and ACPICA changes won't trigger the
> > bugs caused by the root cause 1. For example, Linux can pass
> > physical_address64=0 as the parameter of acpi_set_firmware_waking_vector() to
> > indicate no 64bit waking vector support. Lv Zheng.
> > 
> > This patch also updates acpi_set_firmware_waking_vector() invocations in
> > order to keep 32-bit firmware waking vector favor for Linux. 64-bit
> > firmware waking vector has never been enabled by Linux.  The
> > (acpi_physical_address)0 for 64-bit address can be used to force ACPICA to
> > set only 32-bit firmware waking vector for Linux.
> > 
> > Link: https://bugzilla.kernel.org/show_bug.cgi?idt021
> > Link: https://github.com/acpica/acpica/commit/7aa598d7
> > Cc: 3.14.1+ <stable@vger.kernel.org> # 3.14.1+
> > Reported-and-tested-by: Oswald Buddenhagen <ossi@kde.org>
> > Signed-off-by: Lv Zheng <lv.zheng@intel.com>
> > Signed-off-by: Bob Moore <robert.moore@intel.com>
> > Cc: Thomas Gleixner <tglx@linutronix.de>
> > Cc: Ingo Molnar <mingo@redhat.com>
> > Cc: "H. Peter Anvin" <hpa@zytor.com>
> > Cc: x86@kernel.org
> > Cc: Tony Luck <tony.luck@intel.com>
> > Cc: Fenghua Yu <fenghua.yu@intel.com>
> > Cc: linux-ia64@vger.kernel.org
> > ---
> >  arch/ia64/include/asm/acpi.h    |    3 +-
> >  arch/ia64/kernel/acpi.c         |    2 --
> >  arch/x86/include/asm/acpi.h     |    3 +-
> >  drivers/acpi/acpica/hwxfsleep.c |   61 ++++++++++++---------------------------
> >  drivers/acpi/sleep.c            |    8 +++--
> >  include/acpi/acpixf.h           |   11 +++----
> >  6 files changed, 33 insertions(+), 55 deletions(-)
> > 
> > diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h
> > index aa0fdf1..0ac4fab 100644
> > --- a/arch/ia64/include/asm/acpi.h
> > +++ b/arch/ia64/include/asm/acpi.h
> > @@ -79,7 +79,8 @@ int acpi_gsi_to_irq (u32 gsi, unsigned int *irq);
> >  /* Low-level suspend routine. */
> >  extern int acpi_suspend_lowlevel(void);
> >  
> > -extern unsigned long acpi_wakeup_address;
> > +#define acpi_wakeup_address	((acpi_physical_address)0)
> > +#define acpi_wakeup_address64	((acpi_physical_address)0)
> >  
> >  /*
> >   * Record the cpei override flag and current logical cpu. This is
> > diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
> > index b1698bc..1b08d6f 100644
> > --- a/arch/ia64/kernel/acpi.c
> > +++ b/arch/ia64/kernel/acpi.c
> > @@ -60,8 +60,6 @@ int acpi_lapic;
> >  unsigned int acpi_cpei_override;
> >  unsigned int acpi_cpei_phys_cpuid;
> >  
> > -unsigned long acpi_wakeup_address = 0;
> > -
> >  #ifdef CONFIG_IA64_GENERIC
> >  static unsigned long __init acpi_find_rsdp(void)
> >  {
> > diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h
> > index 3a45668..fc9608d 100644
> > --- a/arch/x86/include/asm/acpi.h
> > +++ b/arch/x86/include/asm/acpi.h
> > @@ -72,7 +72,8 @@ static inline void acpi_disable_pci(void)
> >  extern int (*acpi_suspend_lowlevel)(void);
> >  
> >  /* Physical address to resume after wakeup */
> > -#define acpi_wakeup_address ((unsigned long)(real_mode_header->wakeup_start))
> > +#define acpi_wakeup_address	((acpi_physical_address)(real_mode_header->wakeup_start))
> > +#define acpi_wakeup_address64	((acpi_physical_address)(0))
> 
> Do we need this?

In fact, I don't see why we need to redefine the symbols at all.

Couldn't acpi_set_firmware_waking_vector() be defined to take u32 and u64 so
we could just pass acpi_wakeup_address (as already defined) as the first argument
and 0 as the second argument to it?  The back-and-forth type casts from and
to acpi_physical_address don't look entirely clean to me.

Moreover, I don't really see a functional difference between the old and the
new code.

The old code does "set the 32-bit waking vector and clear the 64-bit waking
vector if present".  The new code does "set the 32-bit waking vector and
either clear the 64-bit one if present, or assign the second function argument
to it", but we always pass 0 as the second argument (which is *extremely*
obfuscated in your patch), so I really don't see the difference here.

Am I missing anything?

Rafael


^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: [PATCH v2 03/28] ACPICA: Hardware: Enable 64-bit firmware waking vector for selected FACS.
  2015-06-24 22:58       ` Rafael J. Wysocki
@ 2015-06-25  0:29         ` Zheng, Lv
  2015-06-26  0:54           ` Rafael J. Wysocki
  0 siblings, 1 reply; 10+ messages in thread
From: Zheng, Lv @ 2015-06-25  0:29 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Wysocki, Rafael J, Brown, Len, Lv Zheng,
	linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org,
	Moore, Robert, Thomas Gleixner, Ingo Molnar, H. Peter Anvin,
	x86@kernel.org, Luck, Tony, Yu, Fenghua,
	linux-ia64@vger.kernel.org

SGksIFJhZmFlbA0KDQo+IEZyb206IFJhZmFlbCBKLiBXeXNvY2tpIFttYWlsdG86cmp3QHJqd3lz
b2NraS5uZXRdDQo+IFNlbnQ6IFRodXJzZGF5LCBKdW5lIDI1LCAyMDE1IDc6MjQgQU0NCj4gVG86
IFpoZW5nLCBMdg0KPiANCj4gT24gV2VkbmVzZGF5LCBKdW5lIDI0LCAyMDE1IDA0OjA1OjQyIFBN
IFJhZmFlbCBKLiBXeXNvY2tpIHdyb3RlOg0KPiA+IE9uIFdlZG5lc2RheSwgSnVuZSAyNCwgMjAx
NSAxMTowMjoxMCBBTSBMdiBaaGVuZyB3cm90ZToNCj4gPiA+IEFDUElDQSBjb21taXQgN2FhNTk4
ZDcxMTY0NGFiMGRlNWY3MGFkODhmMWUyZGUyNTMxMTVlNA0KPiA+ID4NCj4gPiA+IFRoZSBmb2xs
b3dpbmcgY29tbWl0IGlzIHJlcG9ydGVkIHRvIGhhdmUgYnJva2VuIHMycmFtIG9uIHNvbWUgcGxh
dGZvcm1zOg0KPiA+ID4gIENvbW1pdDogMDI0OWVkMjQ0NGQ2NWQ2NWZjM2YzZjY0ZjM5OGYxYWQw
YjdlNTRjZA0KPiA+ID4gIEFDUElDQTogQWRkIG9wdGlvbiB0byBmYXZvciAzMi1iaXQgRkFEVCBh
ZGRyZXNzZXMuDQo+ID4gPiBUaGUgcGxhdGZvcm0gcmVwb3J0cyAyIEZBQ1MgdGFibGVzICh3aGlj
aCBpcyBub3QgYWxsb3dlZCBieSBBQ1BJDQo+ID4gPiBzcGVjaWZpY2F0aW9uKSBhbmQgdGhlIG5l
dyAzMi1iaXQgYWRkcmVzcyBmYXZvciBydWxlIGZvcmNlcyBPU1BNcyB0byB1c2UNCj4gPiA+IHRo
ZSBGQUNTIHRhYmxlIHJlcG9ydGVkIHZpYSBGQURUJ3MgWF9GSVJNV0FSRV9DVFJMIGZpZWxkLg0K
PiA+ID4NCj4gPiA+IFRoZSByb290IGNhdXNlIG9mIHRoZSByZXBvcnRlZCBidWcgbWlnaHQgYmUg
b25lIG9mIHRoZSBmb2xsb3dpbmdzOg0KPiA+ID4gMS4gQklPUyBtYXkgZmF2b3IgdGhlIDY0LWJp
dCBmaXJtd2FyZSB3YWtpbmcgdmVjdG9yIGFkZHJlc3Mgd2hlbiB0aGUNCj4gPiA+ICAgIHZlcnNp
b24gb2YgdGhlIEZBQ1MgaXMgZ3JlYXRlciB0aGFuIDAgYW5kIExpbnV4IGN1cnJlbnRseSBvbmx5
IHN1cHBvcnRzDQo+ID4gPiAgICByZXN1bWluZyBmcm9tIHRoZSByZWFsIG1vZGUsIHNvIHRoZSA2
NC1iaXQgZmlybXdhcmUgd2FraW5nIHZlY3RvciBoYXMNCj4gPiA+ICAgIG5ldmVyIGJlZW4gc2V0
IGFuZCBtaWdodCBiZSBpbnZhbGlkIHRvIEJJT1Mgd2hpbGUgdGhlIGNvbW1pdCBlbmFibGVzDQo+
ID4gPiAgICBoaWdoZXIgdmVyc2lvbiBGQUNTLg0KPiA+ID4gMi4gQklPUyBtYXkgZmF2b3IgdGhl
IEZBQ1MgcmVwb3J0ZWQgdmlhIHRoZSAiRklSTVdBUkVfQ1RSTCIgZmllbGQgaW4gdGhlDQo+ID4g
PiAgICBGQURUIHdoaWxlIHRoZSBjb21taXQgZG9lc24ndCBzZXQgdGhlIGZpcm13YXJlIHdha2lu
ZyB2ZWN0b3IgYWRkcmVzcyBvZg0KPiA+ID4gICAgdGhlIEZBQ1MgcmVwb3J0ZWQgYnkgIkZJUk1X
QVJFX0NUUkwiLCBpdCBvbmx5IHNldHMgdGhlIGZpcndhcmUgd2FraW5nDQo+ID4gPiAgICB2ZWN0
b3IgYWRkcmVzcyBvZiB0aGUgRkFDUyByZXBvcnRlZCBieSAiWF9GSVJNV0FSRV9DVFJMIi4NCj4g
PiA+DQo+ID4gPiBUaGlzIHBhdGNoIGV4Y2x1ZGVzIHRoZSBjYXNlcyB0aGF0IGNhbiB0cmlnZ2Vy
IHRoZSBidWdzIGNhdXNlZCBieSB0aGUgcm9vdA0KPiA+ID4gY2F1c2UgMS4NCj4gPiA+DQo+ID4g
PiBBQ1BJIHNwZWNpZmljYXRpb24gc2F5czoNCj4gPiA+IEEuIDMyLWJpdCBGQUNTIGFkZHJlc3Mg
KEZJUk1XQVJFX0NUUkwgZmllbGQgaW4gRkFEVCk6DQo+ID4gPiAgICBQaHlzaWNhbCBtZW1vcnkg
YWRkcmVzcyBvZiB0aGUgRkFDUywgd2hlcmUgT1NQTSBhbmQgZmlybXdhcmUgZXhjaGFuZ2UNCj4g
PiA+ICAgIGNvbnRyb2wgaW5mb3JtYXRpb24uDQo+ID4gPiAgICBJZiB0aGUgWF9GSVJNV0FSRV9D
VFJMIGZpZWxkIGNvbnRhaW5zIGEgbm9uIHplcm8gdmFsdWUgdGhlbiB0aGlzIGZpZWxkDQo+ID4g
PiAgICBtdXN0IGJlIHplcm8uDQo+ID4gPiAgICBBIHplcm8gdmFsdWUgaW5kaWNhdGVzIHRoYXQg
bm8gRkFDUyBpcyBzcGVjaWZpZWQgYnkgdGhpcyBmaWVsZC4NCj4gPiA+IEIuIDY0LWJpdCBGQUNT
IGFkZHJlc3MgKFhfRklSTVdBUkVfQ1RSTCBmaWVsZCBpbiBGQURUKToNCj4gPiA+ICAgIDY0Yml0
IHBoeXNpY2FsIG1lbW9yeSBhZGRyZXNzIG9mIHRoZSBGQUNTLg0KPiA+ID4gICAgVGhpcyBmaWVs
ZCBpcyB1c2VkIHdoZW4gdGhlIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIEZBQ1MgaXMgYWJvdmUg
NEdCLg0KPiA+ID4gICAgSWYgdGhlIEZJUk1XQVJFX0NUUkwgZmllbGQgY29udGFpbnMgYSBub24g
emVybyB2YWx1ZSB0aGVuIHRoaXMgZmllbGQNCj4gPiA+ICAgIG11c3QgYmUgemVyby4NCj4gPiA+
ICAgIEEgemVybyB2YWx1ZSBpbmRpY2F0ZXMgdGhhdCBubyBGQUNTIGlzIHNwZWNpZmllZCBieSB0
aGlzIGZpZWxkLg0KPiA+ID4gVGh1cyB0aGUgMzJiaXQgYW5kIDY0Yml0IGZpcm13YXJlIHdha2lu
ZyB2ZWN0b3Igc2hvdWxkIGluZGljYXRlIGNvbXBsZXRlbHkNCj4gPiA+IGRpZmZlcmVudCByZXN1
bWluZyBlbnZpcm9ubWVudCAtIHJlYWwgbW9kZSAoMU1CIGFkZHJlc3NhYmxlKSBhbmQgbm9uIHJl
YWwNCj4gPiA+IG1vZGUgKDRHQisgYWRkcmVzc2FibGUpIGFuZCBjdXJyZW50bHkgTGludXggb25s
eSBzdXBwb3J0cyByZXN1bWluZyBmcm9tDQo+ID4gPiByZWFsIG1vZGUuDQo+ID4gPg0KPiA+ID4g
VGhpcyBwYXRjaCBlbmFibGVzIDY0LWJpdCBmaXJtd2FyZSB3YWtpbmcgdmVjdG9yIGZvciBzZWxl
Y3RlZCBGQUNTIHZpYQ0KPiA+ID4gYWNwaV9zZXRfZmlybXdhcmVfd2FraW5nX3ZlY3RvcigpIHNv
IHRoYXQgaXQncyB1cCB0byBPU1BNcyB0byBkZXRlcm1pbmUgd2hpY2gNCj4gPiA+IHJlc3VtaW5n
IG1vZGUgc2hvdWxkIGJlIHVzZWQgYnkgQklPUyBhbmQgQUNQSUNBIGNoYW5nZXMgd29uJ3QgdHJp
Z2dlciB0aGUNCj4gPiA+IGJ1Z3MgY2F1c2VkIGJ5IHRoZSByb290IGNhdXNlIDEuIEZvciBleGFt
cGxlLCBMaW51eCBjYW4gcGFzcw0KPiA+ID4gcGh5c2ljYWxfYWRkcmVzczY0PTAgYXMgdGhlIHBh
cmFtZXRlciBvZiBhY3BpX3NldF9maXJtd2FyZV93YWtpbmdfdmVjdG9yKCkgdG8NCj4gPiA+IGlu
ZGljYXRlIG5vIDY0Yml0IHdha2luZyB2ZWN0b3Igc3VwcG9ydC4gTHYgWmhlbmcuDQo+ID4gPg0K
PiA+ID4gVGhpcyBwYXRjaCBhbHNvIHVwZGF0ZXMgYWNwaV9zZXRfZmlybXdhcmVfd2FraW5nX3Zl
Y3RvcigpIGludm9jYXRpb25zIGluDQo+ID4gPiBvcmRlciB0byBrZWVwIDMyLWJpdCBmaXJtd2Fy
ZSB3YWtpbmcgdmVjdG9yIGZhdm9yIGZvciBMaW51eC4gNjQtYml0DQo+ID4gPiBmaXJtd2FyZSB3
YWtpbmcgdmVjdG9yIGhhcyBuZXZlciBiZWVuIGVuYWJsZWQgYnkgTGludXguICBUaGUNCj4gPiA+
IChhY3BpX3BoeXNpY2FsX2FkZHJlc3MpMCBmb3IgNjQtYml0IGFkZHJlc3MgY2FuIGJlIHVzZWQg
dG8gZm9yY2UgQUNQSUNBIHRvDQo+ID4gPiBzZXQgb25seSAzMi1iaXQgZmlybXdhcmUgd2FraW5n
IHZlY3RvciBmb3IgTGludXguDQo+ID4gPg0KPiA+ID4gTGluazogaHR0cHM6Ly9idWd6aWxsYS5r
ZXJuZWwub3JnL3Nob3dfYnVnLmNnaT9pZD03NDAyMQ0KPiA+ID4gTGluazogaHR0cHM6Ly9naXRo
dWIuY29tL2FjcGljYS9hY3BpY2EvY29tbWl0LzdhYTU5OGQ3DQo+ID4gPiBDYzogMy4xNC4xKyA8
c3RhYmxlQHZnZXIua2VybmVsLm9yZz4gIyAzLjE0LjErDQo+ID4gPiBSZXBvcnRlZC1hbmQtdGVz
dGVkLWJ5OiBPc3dhbGQgQnVkZGVuaGFnZW4gPG9zc2lAa2RlLm9yZz4NCj4gPiA+IFNpZ25lZC1v
ZmYtYnk6IEx2IFpoZW5nIDxsdi56aGVuZ0BpbnRlbC5jb20+DQo+ID4gPiBTaWduZWQtb2ZmLWJ5
OiBCb2IgTW9vcmUgPHJvYmVydC5tb29yZUBpbnRlbC5jb20+DQo+ID4gPiBDYzogVGhvbWFzIEds
ZWl4bmVyIDx0Z2x4QGxpbnV0cm9uaXguZGU+DQo+ID4gPiBDYzogSW5nbyBNb2xuYXIgPG1pbmdv
QHJlZGhhdC5jb20+DQo+ID4gPiBDYzogIkguIFBldGVyIEFudmluIiA8aHBhQHp5dG9yLmNvbT4N
Cj4gPiA+IENjOiB4ODZAa2VybmVsLm9yZw0KPiA+ID4gQ2M6IFRvbnkgTHVjayA8dG9ueS5sdWNr
QGludGVsLmNvbT4NCj4gPiA+IENjOiBGZW5naHVhIFl1IDxmZW5naHVhLnl1QGludGVsLmNvbT4N
Cj4gPiA+IENjOiBsaW51eC1pYTY0QHZnZXIua2VybmVsLm9yZw0KPiA+ID4gLS0tDQo+ID4gPiAg
YXJjaC9pYTY0L2luY2x1ZGUvYXNtL2FjcGkuaCAgICB8ICAgIDMgKy0NCj4gPiA+ICBhcmNoL2lh
NjQva2VybmVsL2FjcGkuYyAgICAgICAgIHwgICAgMiAtLQ0KPiA+ID4gIGFyY2gveDg2L2luY2x1
ZGUvYXNtL2FjcGkuaCAgICAgfCAgICAzICstDQo+ID4gPiAgZHJpdmVycy9hY3BpL2FjcGljYS9o
d3hmc2xlZXAuYyB8ICAgNjEgKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQo+ID4gPiAgZHJpdmVycy9hY3BpL3NsZWVwLmMgICAgICAgICAgICB8ICAgIDggKysrLS0NCj4g
PiA+ICBpbmNsdWRlL2FjcGkvYWNwaXhmLmggICAgICAgICAgIHwgICAxMSArKystLS0tDQo+ID4g
PiAgNiBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCA1NSBkZWxldGlvbnMoLSkNCj4g
PiA+DQo+ID4gPiBkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L2luY2x1ZGUvYXNtL2FjcGkuaCBiL2Fy
Y2gvaWE2NC9pbmNsdWRlL2FzbS9hY3BpLmgNCj4gPiA+IGluZGV4IGFhMGZkZjEuLjBhYzRmYWIg
MTAwNjQ0DQo+ID4gPiAtLS0gYS9hcmNoL2lhNjQvaW5jbHVkZS9hc20vYWNwaS5oDQo+ID4gPiAr
KysgYi9hcmNoL2lhNjQvaW5jbHVkZS9hc20vYWNwaS5oDQo+ID4gPiBAQCAtNzksNyArNzksOCBA
QCBpbnQgYWNwaV9nc2lfdG9faXJxICh1MzIgZ3NpLCB1bnNpZ25lZCBpbnQgKmlycSk7DQo+ID4g
PiAgLyogTG93LWxldmVsIHN1c3BlbmQgcm91dGluZS4gKi8NCj4gPiA+ICBleHRlcm4gaW50IGFj
cGlfc3VzcGVuZF9sb3dsZXZlbCh2b2lkKTsNCj4gPiA+DQo+ID4gPiAtZXh0ZXJuIHVuc2lnbmVk
IGxvbmcgYWNwaV93YWtldXBfYWRkcmVzczsNCj4gPiA+ICsjZGVmaW5lIGFjcGlfd2FrZXVwX2Fk
ZHJlc3MJKChhY3BpX3BoeXNpY2FsX2FkZHJlc3MpMCkNCj4gPiA+ICsjZGVmaW5lIGFjcGlfd2Fr
ZXVwX2FkZHJlc3M2NAkoKGFjcGlfcGh5c2ljYWxfYWRkcmVzcykwKQ0KPiA+ID4NCj4gPiA+ICAv
Kg0KPiA+ID4gICAqIFJlY29yZCB0aGUgY3BlaSBvdmVycmlkZSBmbGFnIGFuZCBjdXJyZW50IGxv
Z2ljYWwgY3B1LiBUaGlzIGlzDQo+ID4gPiBkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L2tlcm5lbC9h
Y3BpLmMgYi9hcmNoL2lhNjQva2VybmVsL2FjcGkuYw0KPiA+ID4gaW5kZXggYjE2OThiYy4uMWIw
OGQ2ZiAxMDA2NDQNCj4gPiA+IC0tLSBhL2FyY2gvaWE2NC9rZXJuZWwvYWNwaS5jDQo+ID4gPiAr
KysgYi9hcmNoL2lhNjQva2VybmVsL2FjcGkuYw0KPiA+ID4gQEAgLTYwLDggKzYwLDYgQEAgaW50
IGFjcGlfbGFwaWM7DQo+ID4gPiAgdW5zaWduZWQgaW50IGFjcGlfY3BlaV9vdmVycmlkZTsNCj4g
PiA+ICB1bnNpZ25lZCBpbnQgYWNwaV9jcGVpX3BoeXNfY3B1aWQ7DQo+ID4gPg0KPiA+ID4gLXVu
c2lnbmVkIGxvbmcgYWNwaV93YWtldXBfYWRkcmVzcyA9IDA7DQo+ID4gPiAtDQo+ID4gPiAgI2lm
ZGVmIENPTkZJR19JQTY0X0dFTkVSSUMNCj4gPiA+ICBzdGF0aWMgdW5zaWduZWQgbG9uZyBfX2lu
aXQgYWNwaV9maW5kX3JzZHAodm9pZCkNCj4gPiA+ICB7DQo+ID4gPiBkaWZmIC0tZ2l0IGEvYXJj
aC94ODYvaW5jbHVkZS9hc20vYWNwaS5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vYWNwaS5oDQo+
ID4gPiBpbmRleCAzYTQ1NjY4Li5mYzk2MDhkIDEwMDY0NA0KPiA+ID4gLS0tIGEvYXJjaC94ODYv
aW5jbHVkZS9hc20vYWNwaS5oDQo+ID4gPiArKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hY3Bp
LmgNCj4gPiA+IEBAIC03Miw3ICs3Miw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhY3BpX2Rpc2Fi
bGVfcGNpKHZvaWQpDQo+ID4gPiAgZXh0ZXJuIGludCAoKmFjcGlfc3VzcGVuZF9sb3dsZXZlbCko
dm9pZCk7DQo+ID4gPg0KPiA+ID4gIC8qIFBoeXNpY2FsIGFkZHJlc3MgdG8gcmVzdW1lIGFmdGVy
IHdha2V1cCAqLw0KPiA+ID4gLSNkZWZpbmUgYWNwaV93YWtldXBfYWRkcmVzcyAoKHVuc2lnbmVk
IGxvbmcpKHJlYWxfbW9kZV9oZWFkZXItPndha2V1cF9zdGFydCkpDQo+ID4gPiArI2RlZmluZSBh
Y3BpX3dha2V1cF9hZGRyZXNzCSgoYWNwaV9waHlzaWNhbF9hZGRyZXNzKShyZWFsX21vZGVfaGVh
ZGVyLT53YWtldXBfc3RhcnQpKQ0KPiA+ID4gKyNkZWZpbmUgYWNwaV93YWtldXBfYWRkcmVzczY0
CSgoYWNwaV9waHlzaWNhbF9hZGRyZXNzKSgwKSkNCj4gPg0KPiA+IERvIHdlIG5lZWQgdGhpcz8N
Cj4gDQo+IEluIGZhY3QsIEkgZG9uJ3Qgc2VlIHdoeSB3ZSBuZWVkIHRvIHJlZGVmaW5lIHRoZSBz
eW1ib2xzIGF0IGFsbC4NCj4gDQo+IENvdWxkbid0IGFjcGlfc2V0X2Zpcm13YXJlX3dha2luZ192
ZWN0b3IoKSBiZSBkZWZpbmVkIHRvIHRha2UgdTMyIGFuZCB1NjQgc28NCj4gd2UgY291bGQganVz
dCBwYXNzIGFjcGlfd2FrZXVwX2FkZHJlc3MgKGFzIGFscmVhZHkgZGVmaW5lZCkgYXMgdGhlIGZp
cnN0IGFyZ3VtZW50DQo+IGFuZCAwIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gaXQ/ICBUaGUg
YmFjay1hbmQtZm9ydGggdHlwZSBjYXN0cyBmcm9tIGFuZA0KPiB0byBhY3BpX3BoeXNpY2FsX2Fk
ZHJlc3MgZG9uJ3QgbG9vayBlbnRpcmVseSBjbGVhbiB0byBtZS4NCj4gDQo+IE1vcmVvdmVyLCBJ
IGRvbid0IHJlYWxseSBzZWUgYSBmdW5jdGlvbmFsIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgb2xk
IGFuZCB0aGUNCj4gbmV3IGNvZGUuDQo+IA0KPiBUaGUgb2xkIGNvZGUgZG9lcyAic2V0IHRoZSAz
Mi1iaXQgd2FraW5nIHZlY3RvciBhbmQgY2xlYXIgdGhlIDY0LWJpdCB3YWtpbmcNCj4gdmVjdG9y
IGlmIHByZXNlbnQiLiAgVGhlIG5ldyBjb2RlIGRvZXMgInNldCB0aGUgMzItYml0IHdha2luZyB2
ZWN0b3IgYW5kDQo+IGVpdGhlciBjbGVhciB0aGUgNjQtYml0IG9uZSBpZiBwcmVzZW50LCBvciBh
c3NpZ24gdGhlIHNlY29uZCBmdW5jdGlvbiBhcmd1bWVudA0KPiB0byBpdCIsIGJ1dCB3ZSBhbHdh
eXMgcGFzcyAwIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQgKHdoaWNoIGlzICpleHRyZW1lbHkqDQo+
IG9iZnVzY2F0ZWQgaW4geW91ciBwYXRjaCksIHNvIEkgcmVhbGx5IGRvbid0IHNlZSB0aGUgZGlm
ZmVyZW5jZSBoZXJlLg0KPiANCj4gQW0gSSBtaXNzaW5nIGFueXRoaW5nPw0KDQpUaGUgc3Rvcnkg
aXM6DQpBY2NvcmRpbmcgdG8gdGhlIHRlc3QsIGlmIGJvdGggMzItYml0IHdha2luZyB2ZWN0b3Ig
YW5kIDY0LWJpdCB3YWtpbmcgdmVjdG9yIGlzIHNldCBieSB0aGUgT1NQTSwgQklPU2VzIG9ubHkg
c3VwcG9ydCAzMi1iaXQgcmVzdW1lIGVudmlyb25tZW50IHdpbGwganVtcCB0byB0aGUgMzItYml0
IHdha2luZyB2ZWN0b3IgYWRkcmVzcyBhbmQgQklPU2VzIHN1cHBvcnQgNjQtYml0IHJlc3VtZSBl
bnZpcm9ubWVudCB3aWxsIGp1bXAgdG8gNjQtYml0IHdha2luZyB2ZWN0b3IuDQpTbyB0aGV5IGNh
biBiZSBzZXQgYnkgdGhlIE9TUE1zIHNpbXVsdGFuZW91c2x5IHRvIGluZGljYXRlIHRoYXQgdGhl
IE9TUE0gY2FuIHN1cHBvcnQgYm90aCByZXN1bWUgZW52aXJvbm1lbnRzLg0KVGhhdCdzIHdoeSBB
Q1BJQ0EgaW50ZXJmYWNlIGlzIGNoYW5nZWQuDQoNClRoYW5rcyBhbmQgYmVzdCByZWdhcmRzDQot
THYNCg=

^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: [PATCH v2 03/28] ACPICA: Hardware: Enable 64-bit firmware waking vector for selected FACS.
  2015-06-24 13:39     ` Rafael J. Wysocki
  2015-06-24 22:58       ` Rafael J. Wysocki
@ 2015-06-25  1:09       ` Zheng, Lv
  1 sibling, 0 replies; 10+ messages in thread
From: Zheng, Lv @ 2015-06-25  1:09 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Wysocki, Rafael J, Brown, Len, Lv Zheng,
	linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org,
	Moore, Robert, Thomas Gleixner, Ingo Molnar, H. Peter Anvin,
	x86@kernel.org, Luck, Tony, Yu, Fenghua,
	linux-ia64@vger.kernel.org

SGksIFJhZmFlbA0KDQo+IEZyb206IFJhZmFlbCBKLiBXeXNvY2tpIFttYWlsdG86cmp3QHJqd3lz
b2NraS5uZXRdDQo+IFNlbnQ6IFdlZG5lc2RheSwgSnVuZSAyNCwgMjAxNSAxMDowNiBQTQ0KPiAN
Cj4gT24gV2VkbmVzZGF5LCBKdW5lIDI0LCAyMDE1IDExOjAyOjEwIEFNIEx2IFpoZW5nIHdyb3Rl
Og0KPiA+IEFDUElDQSBjb21taXQgN2FhNTk4ZDcxMTY0NGFiMGRlNWY3MGFkODhmMWUyZGUyNTMx
MTVlNA0KPiA+DQo+ID4gVGhlIGZvbGxvd2luZyBjb21taXQgaXMgcmVwb3J0ZWQgdG8gaGF2ZSBi
cm9rZW4gczJyYW0gb24gc29tZSBwbGF0Zm9ybXM6DQo+ID4gIENvbW1pdDogMDI0OWVkMjQ0NGQ2
NWQ2NWZjM2YzZjY0ZjM5OGYxYWQwYjdlNTRjZA0KPiA+ICBBQ1BJQ0E6IEFkZCBvcHRpb24gdG8g
ZmF2b3IgMzItYml0IEZBRFQgYWRkcmVzc2VzLg0KPiA+IFRoZSBwbGF0Zm9ybSByZXBvcnRzIDIg
RkFDUyB0YWJsZXMgKHdoaWNoIGlzIG5vdCBhbGxvd2VkIGJ5IEFDUEkNCj4gPiBzcGVjaWZpY2F0
aW9uKSBhbmQgdGhlIG5ldyAzMi1iaXQgYWRkcmVzcyBmYXZvciBydWxlIGZvcmNlcyBPU1BNcyB0
byB1c2UNCj4gPiB0aGUgRkFDUyB0YWJsZSByZXBvcnRlZCB2aWEgRkFEVCdzIFhfRklSTVdBUkVf
Q1RSTCBmaWVsZC4NCj4gPg0KPiA+IFRoZSByb290IGNhdXNlIG9mIHRoZSByZXBvcnRlZCBidWcg
bWlnaHQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmdzOg0KPiA+IDEuIEJJT1MgbWF5IGZhdm9yIHRo
ZSA2NC1iaXQgZmlybXdhcmUgd2FraW5nIHZlY3RvciBhZGRyZXNzIHdoZW4gdGhlDQo+ID4gICAg
dmVyc2lvbiBvZiB0aGUgRkFDUyBpcyBncmVhdGVyIHRoYW4gMCBhbmQgTGludXggY3VycmVudGx5
IG9ubHkgc3VwcG9ydHMNCj4gPiAgICByZXN1bWluZyBmcm9tIHRoZSByZWFsIG1vZGUsIHNvIHRo
ZSA2NC1iaXQgZmlybXdhcmUgd2FraW5nIHZlY3RvciBoYXMNCj4gPiAgICBuZXZlciBiZWVuIHNl
dCBhbmQgbWlnaHQgYmUgaW52YWxpZCB0byBCSU9TIHdoaWxlIHRoZSBjb21taXQgZW5hYmxlcw0K
PiA+ICAgIGhpZ2hlciB2ZXJzaW9uIEZBQ1MuDQo+ID4gMi4gQklPUyBtYXkgZmF2b3IgdGhlIEZB
Q1MgcmVwb3J0ZWQgdmlhIHRoZSAiRklSTVdBUkVfQ1RSTCIgZmllbGQgaW4gdGhlDQo+ID4gICAg
RkFEVCB3aGlsZSB0aGUgY29tbWl0IGRvZXNuJ3Qgc2V0IHRoZSBmaXJtd2FyZSB3YWtpbmcgdmVj
dG9yIGFkZHJlc3Mgb2YNCj4gPiAgICB0aGUgRkFDUyByZXBvcnRlZCBieSAiRklSTVdBUkVfQ1RS
TCIsIGl0IG9ubHkgc2V0cyB0aGUgZmlyd2FyZSB3YWtpbmcNCj4gPiAgICB2ZWN0b3IgYWRkcmVz
cyBvZiB0aGUgRkFDUyByZXBvcnRlZCBieSAiWF9GSVJNV0FSRV9DVFJMIi4NCj4gPg0KPiA+IFRo
aXMgcGF0Y2ggZXhjbHVkZXMgdGhlIGNhc2VzIHRoYXQgY2FuIHRyaWdnZXIgdGhlIGJ1Z3MgY2F1
c2VkIGJ5IHRoZSByb290DQo+ID4gY2F1c2UgMS4NCj4gPg0KPiA+IEFDUEkgc3BlY2lmaWNhdGlv
biBzYXlzOg0KPiA+IEEuIDMyLWJpdCBGQUNTIGFkZHJlc3MgKEZJUk1XQVJFX0NUUkwgZmllbGQg
aW4gRkFEVCk6DQo+ID4gICAgUGh5c2ljYWwgbWVtb3J5IGFkZHJlc3Mgb2YgdGhlIEZBQ1MsIHdo
ZXJlIE9TUE0gYW5kIGZpcm13YXJlIGV4Y2hhbmdlDQo+ID4gICAgY29udHJvbCBpbmZvcm1hdGlv
bi4NCj4gPiAgICBJZiB0aGUgWF9GSVJNV0FSRV9DVFJMIGZpZWxkIGNvbnRhaW5zIGEgbm9uIHpl
cm8gdmFsdWUgdGhlbiB0aGlzIGZpZWxkDQo+ID4gICAgbXVzdCBiZSB6ZXJvLg0KPiA+ICAgIEEg
emVybyB2YWx1ZSBpbmRpY2F0ZXMgdGhhdCBubyBGQUNTIGlzIHNwZWNpZmllZCBieSB0aGlzIGZp
ZWxkLg0KPiA+IEIuIDY0LWJpdCBGQUNTIGFkZHJlc3MgKFhfRklSTVdBUkVfQ1RSTCBmaWVsZCBp
biBGQURUKToNCj4gPiAgICA2NGJpdCBwaHlzaWNhbCBtZW1vcnkgYWRkcmVzcyBvZiB0aGUgRkFD
Uy4NCj4gPiAgICBUaGlzIGZpZWxkIGlzIHVzZWQgd2hlbiB0aGUgcGh5c2ljYWwgYWRkcmVzcyBv
ZiB0aGUgRkFDUyBpcyBhYm92ZSA0R0IuDQo+ID4gICAgSWYgdGhlIEZJUk1XQVJFX0NUUkwgZmll
bGQgY29udGFpbnMgYSBub24gemVybyB2YWx1ZSB0aGVuIHRoaXMgZmllbGQNCj4gPiAgICBtdXN0
IGJlIHplcm8uDQo+ID4gICAgQSB6ZXJvIHZhbHVlIGluZGljYXRlcyB0aGF0IG5vIEZBQ1MgaXMg
c3BlY2lmaWVkIGJ5IHRoaXMgZmllbGQuDQo+ID4gVGh1cyB0aGUgMzJiaXQgYW5kIDY0Yml0IGZp
cm13YXJlIHdha2luZyB2ZWN0b3Igc2hvdWxkIGluZGljYXRlIGNvbXBsZXRlbHkNCj4gPiBkaWZm
ZXJlbnQgcmVzdW1pbmcgZW52aXJvbm1lbnQgLSByZWFsIG1vZGUgKDFNQiBhZGRyZXNzYWJsZSkg
YW5kIG5vbiByZWFsDQo+ID4gbW9kZSAoNEdCKyBhZGRyZXNzYWJsZSkgYW5kIGN1cnJlbnRseSBM
aW51eCBvbmx5IHN1cHBvcnRzIHJlc3VtaW5nIGZyb20NCj4gPiByZWFsIG1vZGUuDQo+ID4NCj4g
PiBUaGlzIHBhdGNoIGVuYWJsZXMgNjQtYml0IGZpcm13YXJlIHdha2luZyB2ZWN0b3IgZm9yIHNl
bGVjdGVkIEZBQ1MgdmlhDQo+ID4gYWNwaV9zZXRfZmlybXdhcmVfd2FraW5nX3ZlY3RvcigpIHNv
IHRoYXQgaXQncyB1cCB0byBPU1BNcyB0byBkZXRlcm1pbmUgd2hpY2gNCj4gPiByZXN1bWluZyBt
b2RlIHNob3VsZCBiZSB1c2VkIGJ5IEJJT1MgYW5kIEFDUElDQSBjaGFuZ2VzIHdvbid0IHRyaWdn
ZXIgdGhlDQo+ID4gYnVncyBjYXVzZWQgYnkgdGhlIHJvb3QgY2F1c2UgMS4gRm9yIGV4YW1wbGUs
IExpbnV4IGNhbiBwYXNzDQo+ID4gcGh5c2ljYWxfYWRkcmVzczY0PTAgYXMgdGhlIHBhcmFtZXRl
ciBvZiBhY3BpX3NldF9maXJtd2FyZV93YWtpbmdfdmVjdG9yKCkgdG8NCj4gPiBpbmRpY2F0ZSBu
byA2NGJpdCB3YWtpbmcgdmVjdG9yIHN1cHBvcnQuIEx2IFpoZW5nLg0KPiA+DQo+ID4gVGhpcyBw
YXRjaCBhbHNvIHVwZGF0ZXMgYWNwaV9zZXRfZmlybXdhcmVfd2FraW5nX3ZlY3RvcigpIGludm9j
YXRpb25zIGluDQo+ID4gb3JkZXIgdG8ga2VlcCAzMi1iaXQgZmlybXdhcmUgd2FraW5nIHZlY3Rv
ciBmYXZvciBmb3IgTGludXguIDY0LWJpdA0KPiA+IGZpcm13YXJlIHdha2luZyB2ZWN0b3IgaGFz
IG5ldmVyIGJlZW4gZW5hYmxlZCBieSBMaW51eC4gIFRoZQ0KPiA+IChhY3BpX3BoeXNpY2FsX2Fk
ZHJlc3MpMCBmb3IgNjQtYml0IGFkZHJlc3MgY2FuIGJlIHVzZWQgdG8gZm9yY2UgQUNQSUNBIHRv
DQo+ID4gc2V0IG9ubHkgMzItYml0IGZpcm13YXJlIHdha2luZyB2ZWN0b3IgZm9yIExpbnV4Lg0K
PiA+DQo+ID4gTGluazogaHR0cHM6Ly9idWd6aWxsYS5rZXJuZWwub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NDAyMQ0KPiA+IExpbms6IGh0dHBzOi8vZ2l0aHViLmNvbS9hY3BpY2EvYWNwaWNhL2NvbW1p
dC83YWE1OThkNw0KPiA+IENjOiAzLjE0LjErIDxzdGFibGVAdmdlci5rZXJuZWwub3JnPiAjIDMu
MTQuMSsNCj4gPiBSZXBvcnRlZC1hbmQtdGVzdGVkLWJ5OiBPc3dhbGQgQnVkZGVuaGFnZW4gPG9z
c2lAa2RlLm9yZz4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBMdiBaaGVuZyA8bHYuemhlbmdAaW50ZWwu
Y29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IEJvYiBNb29yZSA8cm9iZXJ0Lm1vb3JlQGludGVsLmNv
bT4NCj4gPiBDYzogVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0cm9uaXguZGU+DQo+ID4gQ2M6
IEluZ28gTW9sbmFyIDxtaW5nb0ByZWRoYXQuY29tPg0KPiA+IENjOiAiSC4gUGV0ZXIgQW52aW4i
IDxocGFAenl0b3IuY29tPg0KPiA+IENjOiB4ODZAa2VybmVsLm9yZw0KPiA+IENjOiBUb255IEx1
Y2sgPHRvbnkubHVja0BpbnRlbC5jb20+DQo+ID4gQ2M6IEZlbmdodWEgWXUgPGZlbmdodWEueXVA
aW50ZWwuY29tPg0KPiA+IENjOiBsaW51eC1pYTY0QHZnZXIua2VybmVsLm9yZw0KPiA+IC0tLQ0K
PiA+ICBhcmNoL2lhNjQvaW5jbHVkZS9hc20vYWNwaS5oICAgIHwgICAgMyArLQ0KPiA+ICBhcmNo
L2lhNjQva2VybmVsL2FjcGkuYyAgICAgICAgIHwgICAgMiAtLQ0KPiA+ICBhcmNoL3g4Ni9pbmNs
dWRlL2FzbS9hY3BpLmggICAgIHwgICAgMyArLQ0KPiA+ICBkcml2ZXJzL2FjcGkvYWNwaWNhL2h3
eGZzbGVlcC5jIHwgICA2MSArKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N
Cj4gPiAgZHJpdmVycy9hY3BpL3NsZWVwLmMgICAgICAgICAgICB8ICAgIDggKysrLS0NCj4gPiAg
aW5jbHVkZS9hY3BpL2FjcGl4Zi5oICAgICAgICAgICB8ICAgMTEgKysrLS0tLQ0KPiA+ICA2IGZp
bGVzIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDU1IGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4g
ZGlmZiAtLWdpdCBhL2FyY2gvaWE2NC9pbmNsdWRlL2FzbS9hY3BpLmggYi9hcmNoL2lhNjQvaW5j
bHVkZS9hc20vYWNwaS5oDQo+ID4gaW5kZXggYWEwZmRmMS4uMGFjNGZhYiAxMDA2NDQNCj4gPiAt
LS0gYS9hcmNoL2lhNjQvaW5jbHVkZS9hc20vYWNwaS5oDQo+ID4gKysrIGIvYXJjaC9pYTY0L2lu
Y2x1ZGUvYXNtL2FjcGkuaA0KPiA+IEBAIC03OSw3ICs3OSw4IEBAIGludCBhY3BpX2dzaV90b19p
cnEgKHUzMiBnc2ksIHVuc2lnbmVkIGludCAqaXJxKTsNCj4gPiAgLyogTG93LWxldmVsIHN1c3Bl
bmQgcm91dGluZS4gKi8NCj4gPiAgZXh0ZXJuIGludCBhY3BpX3N1c3BlbmRfbG93bGV2ZWwodm9p
ZCk7DQo+ID4NCj4gPiAtZXh0ZXJuIHVuc2lnbmVkIGxvbmcgYWNwaV93YWtldXBfYWRkcmVzczsN
Cj4gPiArI2RlZmluZSBhY3BpX3dha2V1cF9hZGRyZXNzCSgoYWNwaV9waHlzaWNhbF9hZGRyZXNz
KTApDQo+ID4gKyNkZWZpbmUgYWNwaV93YWtldXBfYWRkcmVzczY0CSgoYWNwaV9waHlzaWNhbF9h
ZGRyZXNzKTApDQo+ID4NCj4gPiAgLyoNCj4gPiAgICogUmVjb3JkIHRoZSBjcGVpIG92ZXJyaWRl
IGZsYWcgYW5kIGN1cnJlbnQgbG9naWNhbCBjcHUuIFRoaXMgaXMNCj4gPiBkaWZmIC0tZ2l0IGEv
YXJjaC9pYTY0L2tlcm5lbC9hY3BpLmMgYi9hcmNoL2lhNjQva2VybmVsL2FjcGkuYw0KPiA+IGlu
ZGV4IGIxNjk4YmMuLjFiMDhkNmYgMTAwNjQ0DQo+ID4gLS0tIGEvYXJjaC9pYTY0L2tlcm5lbC9h
Y3BpLmMNCj4gPiArKysgYi9hcmNoL2lhNjQva2VybmVsL2FjcGkuYw0KPiA+IEBAIC02MCw4ICs2
MCw2IEBAIGludCBhY3BpX2xhcGljOw0KPiA+ICB1bnNpZ25lZCBpbnQgYWNwaV9jcGVpX292ZXJy
aWRlOw0KPiA+ICB1bnNpZ25lZCBpbnQgYWNwaV9jcGVpX3BoeXNfY3B1aWQ7DQo+ID4NCj4gPiAt
dW5zaWduZWQgbG9uZyBhY3BpX3dha2V1cF9hZGRyZXNzID0gMDsNCj4gPiAtDQo+ID4gICNpZmRl
ZiBDT05GSUdfSUE2NF9HRU5FUklDDQo+ID4gIHN0YXRpYyB1bnNpZ25lZCBsb25nIF9faW5pdCBh
Y3BpX2ZpbmRfcnNkcCh2b2lkKQ0KPiA+ICB7DQo+ID4gZGlmZiAtLWdpdCBhL2FyY2gveDg2L2lu
Y2x1ZGUvYXNtL2FjcGkuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FjcGkuaA0KPiA+IGluZGV4
IDNhNDU2NjguLmZjOTYwOGQgMTAwNjQ0DQo+ID4gLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20v
YWNwaS5oDQo+ID4gKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vYWNwaS5oDQo+ID4gQEAgLTcy
LDcgKzcyLDggQEAgc3RhdGljIGlubGluZSB2b2lkIGFjcGlfZGlzYWJsZV9wY2kodm9pZCkNCj4g
PiAgZXh0ZXJuIGludCAoKmFjcGlfc3VzcGVuZF9sb3dsZXZlbCkodm9pZCk7DQo+ID4NCj4gPiAg
LyogUGh5c2ljYWwgYWRkcmVzcyB0byByZXN1bWUgYWZ0ZXIgd2FrZXVwICovDQo+ID4gLSNkZWZp
bmUgYWNwaV93YWtldXBfYWRkcmVzcyAoKHVuc2lnbmVkIGxvbmcpKHJlYWxfbW9kZV9oZWFkZXIt
Pndha2V1cF9zdGFydCkpDQo+ID4gKyNkZWZpbmUgYWNwaV93YWtldXBfYWRkcmVzcwkoKGFjcGlf
cGh5c2ljYWxfYWRkcmVzcykocmVhbF9tb2RlX2hlYWRlci0+d2FrZXVwX3N0YXJ0KSkNCj4gPiAr
I2RlZmluZSBhY3BpX3dha2V1cF9hZGRyZXNzNjQJKChhY3BpX3BoeXNpY2FsX2FkZHJlc3MpKDAp
KQ0KPiANCj4gRG8gd2UgbmVlZCB0aGlzPw0KPiANCj4gV2h5IGRvbid0IHdlIGRlZmluZQ0KPiAN
Cj4gc3RhdGljIGlubGluZSB2b2lkIGFjcGlfc2V0X3dha2V1cF9hZGRyZXNzKHZvaWQpDQo+IHsN
Cj4gCWFjcGlfc2V0X2Zpcm13YXJlX3dha2luZ192ZWN0b3IoKHVuc2lnbmVkIGxvbmcpcmVhbF9t
b2RlX2hlYWRlci0+d2FrZXVwX3N0YXJ0LCAwKTsNCj4gfQ0KPiANCj4gYW5kDQo+IA0KPiBzdGF0
aWMgaW5saW5lIHZvaWQgYWNwaV9jbGVhcl93YWtldXBfYWRkcmVzcyh2b2lkKQ0KPiB7DQo+IAlh
Y3BpX3NldF9maXJtd2FyZV93YWtpbmdfdmVjdG9yKDAsIDApOw0KPiB9DQo+IA0KPiBpbnN0ZWFk
Pw0KPiANCj4gV2hpY2ggbWF5IGJlIGRlZmluZWQgYXMgZW1wdHkgc3R1YnMgb24gaWE2ND8NCj4g
DQoNClRoaXMgaXMgcmVhc29uYWJsZSwgd2UgY2FuIGRvIHRoaXMgaW4gTGludXggc28gdGhhdCB3
ZSBjYW4gbGVhdmUgdGhlIG1heGltdW0gY2FwYWJpbGl0eSBvbmx5IGluIEFDUElDQSBhbmQgcmVm
bGVjdCB0aGUgTGludXggZmF2b3IgaW4gdGhlIExpbnV4IHNpZGUuDQpBbmQgdGhpcyBjYW4gYWxz
byBtYWtlIHRoZSBwYXRjaCBjbGVhbmVyLg0KSSdsbCBtb2RpZnkgdGhpcyBwYXRjaCBhbmQgcmUt
c2VuZCBhbiB1cGRhdGUgZm9yIHRoaXMgcGF0Y2guDQoNClRoYW5rcyBhbmQgYmVzdCByZWdhcmRz
DQotTHYNCg0KPiA+DQo+ID4gIC8qDQo+ID4gICAqIENoZWNrIGlmIHRoZSBDUFUgY2FuIGhhbmRs
ZSBDMiBhbmQgZGVlcGVyDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9hY3BpY2EvaHd4
ZnNsZWVwLmMgYi9kcml2ZXJzL2FjcGkvYWNwaWNhL2h3eGZzbGVlcC5jDQo+ID4gaW5kZXggODJl
MzEwYi4uYzY3Y2QzMiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2FjcGkvYWNwaWNhL2h3eGZz
bGVlcC5jDQo+ID4gKysrIGIvZHJpdmVycy9hY3BpL2FjcGljYS9od3hmc2xlZXAuYw0KPiA+IEBA
IC03Myw3ICs3Myw2IEBAIHN0YXRpYyBzdHJ1Y3QgYWNwaV9zbGVlcF9mdW5jdGlvbnMgYWNwaV9z
bGVlcF9kaXNwYXRjaFtdID0gew0KPiA+ICAvKg0KPiA+ICAgKiBUaGVzZSBmdW5jdGlvbnMgYXJl
IHJlbW92ZWQgZm9yIHRoZSBBQ1BJX1JFRFVDRURfSEFSRFdBUkUgY2FzZToNCj4gPiAgICogICAg
ICBhY3BpX3NldF9maXJtd2FyZV93YWtpbmdfdmVjdG9yDQo+ID4gLSAqICAgICAgYWNwaV9zZXRf
ZmlybXdhcmVfd2FraW5nX3ZlY3RvcjY0DQo+ID4gICAqICAgICAgYWNwaV9lbnRlcl9zbGVlcF9z
dGF0ZV9zNGJpb3MNCj4gPiAgICovDQo+ID4NCj4gPiBAQCAtODMsMTUgKzgyLDE5IEBAIHN0YXRp
YyBzdHJ1Y3QgYWNwaV9zbGVlcF9mdW5jdGlvbnMgYWNwaV9zbGVlcF9kaXNwYXRjaFtdID0gew0K
PiA+ICAgKiBGVU5DVElPTjogICAgYWNwaV9zZXRfZmlybXdhcmVfd2FraW5nX3ZlY3Rvcg0KPiA+
ICAgKg0KPiA+ICAgKiBQQVJBTUVURVJTOiAgcGh5c2ljYWxfYWRkcmVzcyAgICAtIDMyLWJpdCBw
aHlzaWNhbCBhZGRyZXNzIG9mIEFDUEkgcmVhbCBtb2RlDQo+ID4gLSAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZW50cnkgcG9pbnQuDQo+ID4gKyAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZW50cnkgcG9pbnQNCj4gPiArICogICAgICAgICAgICAgIHBo
eXNpY2FsX2FkZHJlc3M2NCAgLSA2NC1iaXQgcGh5c2ljYWwgYWRkcmVzcyBvZiBBQ1BJIHByb3Rl
Y3RlZA0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5IHBv
aW50DQo+ID4gICAqDQo+ID4gICAqIFJFVFVSTjogICAgICBTdGF0dXMNCj4gPiAgICoNCj4gPiAt
ICogREVTQ1JJUFRJT046IFNldHMgdGhlIDMyLWJpdCBmaXJtd2FyZV93YWtpbmdfdmVjdG9yIGZp
ZWxkIG9mIHRoZSBGQUNTDQo+ID4gKyAqIERFU0NSSVBUSU9OOiBTZXRzIHRoZSBmaXJtd2FyZV93
YWtpbmdfdmVjdG9yIGZpZWxkcyBvZiB0aGUgRkFDUw0KPiA+ICAgKg0KPiA+ICAgKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqLw0KPiA+DQo+ID4gLWFjcGlfc3RhdHVzIGFjcGlfc2V0X2Zpcm13YXJlX3dh
a2luZ192ZWN0b3IodTMyIHBoeXNpY2FsX2FkZHJlc3MpDQo+ID4gK2FjcGlfc3RhdHVzDQo+ID4g
K2FjcGlfc2V0X2Zpcm13YXJlX3dha2luZ192ZWN0b3IoYWNwaV9waHlzaWNhbF9hZGRyZXNzIHBo
eXNpY2FsX2FkZHJlc3MsDQo+ID4gKwkJCQlhY3BpX3BoeXNpY2FsX2FkZHJlc3MgcGh5c2ljYWxf
YWRkcmVzczY0KQ0KPiA+ICB7DQo+ID4gIAlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGFjcGlfc2V0X2Zp
cm13YXJlX3dha2luZ192ZWN0b3IpOw0KPiA+DQo+ID4gQEAgLTEwNiw1MyArMTA5LDI3IEBAIGFj
cGlfc3RhdHVzIGFjcGlfc2V0X2Zpcm13YXJlX3dha2luZ192ZWN0b3IodTMyIHBoeXNpY2FsX2Fk
ZHJlc3MpDQo+ID4NCj4gPiAgCS8qIFNldCB0aGUgMzItYml0IHZlY3RvciAqLw0KPiA+DQo+ID4g
LQlhY3BpX2dibF9GQUNTLT5maXJtd2FyZV93YWtpbmdfdmVjdG9yID0gcGh5c2ljYWxfYWRkcmVz
czsNCj4gPiArCWFjcGlfZ2JsX0ZBQ1MtPmZpcm13YXJlX3dha2luZ192ZWN0b3IgPSAodTMyKXBo
eXNpY2FsX2FkZHJlc3M7DQo+ID4NCj4gPiAtCS8qIENsZWFyIHRoZSA2NC1iaXQgdmVjdG9yIGlm
IGl0IGV4aXN0cyAqLw0KPiA+ICsJaWYgKGFjcGlfZ2JsX0ZBQ1MtPmxlbmd0aCA+IDMyKSB7DQo+
ID4gKwkJaWYgKGFjcGlfZ2JsX0ZBQ1MtPnZlcnNpb24gPj0gMSkgew0KPiA+DQo+ID4gLQlpZiAo
KGFjcGlfZ2JsX0ZBQ1MtPmxlbmd0aCA+IDMyKSAmJiAoYWNwaV9nYmxfRkFDUy0+dmVyc2lvbiA+
PSAxKSkgew0KPiA+IC0JCWFjcGlfZ2JsX0ZBQ1MtPnhmaXJtd2FyZV93YWtpbmdfdmVjdG9yID0g
MDsNCj4gPiAtCX0NCj4gPiAtDQo+ID4gLQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfT0spOw0KPiA+
IC19DQo+ID4gLQ0KPiA+IC1BQ1BJX0VYUE9SVF9TWU1CT0woYWNwaV9zZXRfZmlybXdhcmVfd2Fr
aW5nX3ZlY3RvcikNCj4gPiAtDQo+ID4gLSNpZiBBQ1BJX01BQ0hJTkVfV0lEVEggPT0gNjQNCj4g
PiAtLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioNCj4gPiAtICoNCj4gPiAtICogRlVOQ1RJT046ICAg
IGFjcGlfc2V0X2Zpcm13YXJlX3dha2luZ192ZWN0b3I2NA0KPiA+IC0gKg0KPiA+IC0gKiBQQVJB
TUVURVJTOiAgcGh5c2ljYWxfYWRkcmVzcyAgICAtIDY0LWJpdCBwaHlzaWNhbCBhZGRyZXNzIG9m
IEFDUEkgcHJvdGVjdGVkDQo+ID4gLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbW9kZSBlbnRyeSBwb2ludC4NCj4gPiAtICoNCj4gPiAtICogUkVUVVJOOiAgICAgIFN0YXR1
cw0KPiA+IC0gKg0KPiA+IC0gKiBERVNDUklQVElPTjogU2V0cyB0aGUgNjQtYml0IFhfZmlybXdh
cmVfd2FraW5nX3ZlY3RvciBmaWVsZCBvZiB0aGUgRkFDUywgaWYNCj4gPiAtICogICAgICAgICAg
ICAgIGl0IGV4aXN0cyBpbiB0aGUgdGFibGUuIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgZm9y
IHVzZSB3aXRoDQo+ID4gLSAqICAgICAgICAgICAgICA2NC1iaXQgaG9zdCBvcGVyYXRpbmcgc3lz
dGVtcy4NCj4gPiAtICoNCj4gPiAtICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCj4gPiAtYWNwaV9z
dGF0dXMgYWNwaV9zZXRfZmlybXdhcmVfd2FraW5nX3ZlY3RvcjY0KHU2NCBwaHlzaWNhbF9hZGRy
ZXNzKQ0KPiA+IC17DQo+ID4gLQlBQ1BJX0ZVTkNUSU9OX1RSQUNFKGFjcGlfc2V0X2Zpcm13YXJl
X3dha2luZ192ZWN0b3I2NCk7DQo+ID4gKwkJCS8qIFNldCB0aGUgNjQtYml0IHZlY3RvciAqLw0K
PiA+DQo+ID4gLQkvKiBEZXRlcm1pbmUgaWYgdGhlIDY0LWJpdCB2ZWN0b3IgYWN0dWFsbHkgZXhp
c3RzICovDQo+ID4gKwkJCWFjcGlfZ2JsX0ZBQ1MtPnhmaXJtd2FyZV93YWtpbmdfdmVjdG9yID0N
Cj4gPiArCQkJICAgIHBoeXNpY2FsX2FkZHJlc3M2NDsNCj4gPiArCQl9IGVsc2Ugew0KPiA+ICsJ
CQkvKiBDbGVhciB0aGUgNjQtYml0IHZlY3RvciBpZiBpdCBleGlzdHMgKi8NCj4gPg0KPiA+IC0J
aWYgKChhY3BpX2dibF9GQUNTLT5sZW5ndGggPD0gMzIpIHx8IChhY3BpX2dibF9GQUNTLT52ZXJz
aW9uIDwgMSkpIHsNCj4gPiAtCQlyZXR1cm5fQUNQSV9TVEFUVVMoQUVfTk9UX0VYSVNUKTsNCj4g
PiArCQkJYWNwaV9nYmxfRkFDUy0+eGZpcm13YXJlX3dha2luZ192ZWN0b3IgPSAwOw0KPiA+ICsJ
CX0NCj4gPiAgCX0NCj4gPg0KPiA+IC0JLyogQ2xlYXIgMzItYml0IHZlY3Rvciwgc2V0IHRoZSA2
NC1iaXQgWF8gdmVjdG9yICovDQo+ID4gLQ0KPiA+IC0JYWNwaV9nYmxfRkFDUy0+ZmlybXdhcmVf
d2FraW5nX3ZlY3RvciA9IDA7DQo+ID4gLQlhY3BpX2dibF9GQUNTLT54ZmlybXdhcmVfd2FraW5n
X3ZlY3RvciA9IHBoeXNpY2FsX2FkZHJlc3M7DQo+ID4gIAlyZXR1cm5fQUNQSV9TVEFUVVMoQUVf
T0spOw0KPiA+ICB9DQo+ID4NCj4gPiAtQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfc2V0X2Zpcm13
YXJlX3dha2luZ192ZWN0b3I2NCkNCj4gPiAtI2VuZGlmDQo+ID4gK0FDUElfRVhQT1JUX1NZTUJP
TChhY3BpX3NldF9maXJtd2FyZV93YWtpbmdfdmVjdG9yKQ0KPiA+ICsNCj4gPiAgLyoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioNCj4gPiAgICoNCj4gPiAgICogRlVOQ1RJT046ICAgIGFjcGlfZW50ZXJf
c2xlZXBfc3RhdGVfczRiaW9zDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9zbGVlcC5j
IGIvZHJpdmVycy9hY3BpL3NsZWVwLmMNCj4gPiBpbmRleCAyZjBkNGRiLi4zYTZhMmViIDEwMDY0
NA0KPiA+IC0tLSBhL2RyaXZlcnMvYWNwaS9zbGVlcC5jDQo+ID4gKysrIGIvZHJpdmVycy9hY3Bp
L3NsZWVwLmMNCj4gPiBAQCAtMjUsNiArMjUsOCBAQA0KPiA+ICAjaW5jbHVkZSAiaW50ZXJuYWwu
aCINCj4gPiAgI2luY2x1ZGUgInNsZWVwLmgiDQo+ID4NCj4gPiArI2RlZmluZSBBQ1BJX05PX1dB
S0lOR19WRUNUT1IJCSgoYWNwaV9waHlzaWNhbF9hZGRyZXNzKTApDQo+IA0KPiBEbyB3ZSBuZWVk
IHRoaXMgdG9vPw0KPiANCj4gPiArDQo+ID4gIHN0YXRpYyB1OCBzbGVlcF9zdGF0ZXNbQUNQSV9T
X1NUQVRFX0NPVU5UXTsNCj4gPg0KPiA+ICBzdGF0aWMgdm9pZCBhY3BpX3NsZWVwX3R0c19zd2l0
Y2godTMyIGFjcGlfc3RhdGUpDQo+ID4gQEAgLTYxLDcgKzYzLDggQEAgc3RhdGljIGludCBhY3Bp
X3NsZWVwX3ByZXBhcmUodTMyIGFjcGlfc3RhdGUpDQo+ID4gIAlpZiAoYWNwaV9zdGF0ZSA9PSBB
Q1BJX1NUQVRFX1MzKSB7DQo+ID4gIAkJaWYgKCFhY3BpX3dha2V1cF9hZGRyZXNzKQ0KPiA+ICAJ
CQlyZXR1cm4gLUVGQVVMVDsNCj4gPiAtCQlhY3BpX3NldF9maXJtd2FyZV93YWtpbmdfdmVjdG9y
KGFjcGlfd2FrZXVwX2FkZHJlc3MpOw0KPiA+ICsJCWFjcGlfc2V0X2Zpcm13YXJlX3dha2luZ192
ZWN0b3IoYWNwaV93YWtldXBfYWRkcmVzcywNCj4gPiArCQkJCQkJYWNwaV93YWtldXBfYWRkcmVz
czY0KTsNCj4gPg0KPiA+ICAJfQ0KPiA+ICAJQUNQSV9GTFVTSF9DUFVfQ0FDSEUoKTsNCj4gPiBA
QCAtNDEwLDcgKzQxMyw4IEBAIHN0YXRpYyB2b2lkIGFjcGlfcG1fZmluaXNoKHZvaWQpDQo+ID4g
IAlhY3BpX2xlYXZlX3NsZWVwX3N0YXRlKGFjcGlfc3RhdGUpOw0KPiA+DQo+ID4gIAkvKiByZXNl
dCBmaXJtd2FyZSB3YWtpbmcgdmVjdG9yICovDQo+ID4gLQlhY3BpX3NldF9maXJtd2FyZV93YWtp
bmdfdmVjdG9yKChhY3BpX3BoeXNpY2FsX2FkZHJlc3MpIDApOw0KPiA+ICsJYWNwaV9zZXRfZmly
bXdhcmVfd2FraW5nX3ZlY3RvcihBQ1BJX05PX1dBS0lOR19WRUNUT1IsDQo+ID4gKwkJCQkJQUNQ
SV9OT19XQUtJTkdfVkVDVE9SKTsNCj4gPg0KPiA+ICAJYWNwaV90YXJnZXRfc2xlZXBfc3RhdGUg
PSBBQ1BJX1NUQVRFX1MwOw0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvYWNwaS9hY3Bp
eGYuaCBiL2luY2x1ZGUvYWNwaS9hY3BpeGYuaA0KPiA+IGluZGV4IGQ2OGYxY2QuLmE2OGU0Yjkg
MTAwNjQ0DQo+ID4gLS0tIGEvaW5jbHVkZS9hY3BpL2FjcGl4Zi5oDQo+ID4gKysrIGIvaW5jbHVk
ZS9hY3BpL2FjcGl4Zi5oDQo+ID4gQEAgLTgxNCwxMyArODE0LDEwIEBAIEFDUElfRVhURVJOQUxf
UkVUVVJOX1NUQVRVUyhhY3BpX3N0YXR1cw0KPiA+ICBBQ1BJX0VYVEVSTkFMX1JFVFVSTl9TVEFU
VVMoYWNwaV9zdGF0dXMgYWNwaV9sZWF2ZV9zbGVlcF9zdGF0ZSh1OCBzbGVlcF9zdGF0ZSkpDQo+
ID4NCj4gPiAgQUNQSV9IV19ERVBFTkRFTlRfUkVUVVJOX1NUQVRVUyhhY3BpX3N0YXR1cw0KPiA+
IC0JCQkJYWNwaV9zZXRfZmlybXdhcmVfd2FraW5nX3ZlY3Rvcih1MzINCj4gPiAtCQkJCQkJCQlw
aHlzaWNhbF9hZGRyZXNzKSkNCj4gPiAtI2lmIEFDUElfTUFDSElORV9XSURUSCA9PSA2NA0KPiA+
IC1BQ1BJX0hXX0RFUEVOREVOVF9SRVRVUk5fU1RBVFVTKGFjcGlfc3RhdHVzDQo+ID4gLQkJCQlh
Y3BpX3NldF9maXJtd2FyZV93YWtpbmdfdmVjdG9yNjQodTY0DQo+ID4gLQkJCQkJCQkJICBwaHlz
aWNhbF9hZGRyZXNzKSkNCj4gPiAtI2VuZGlmDQo+ID4gKwkJCQlhY3BpX3NldF9maXJtd2FyZV93
YWtpbmdfdmVjdG9yDQo+ID4gKwkJCQkoYWNwaV9waHlzaWNhbF9hZGRyZXNzIHBoeXNpY2FsX2Fk
ZHJlc3MsDQo+ID4gKwkJCQkgYWNwaV9waHlzaWNhbF9hZGRyZXNzIHBoeXNpY2FsX2FkZHJlc3M2
NCkpDQo+ID4gKw0KPiA+ICAvKg0KPiA+ICAgKiBBQ1BJIFRpbWVyIGludGVyZmFjZXMNCj4gPiAg
ICovDQo+ID4NCj4gDQo+IC0tDQo+IEkgc3BlYWsgb25seSBmb3IgbXlzZWxmLg0KPiBSYWZhZWwg
Si4gV3lzb2NraSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIuDQo

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2 03/28] ACPICA: Hardware: Enable 64-bit firmware waking vector for selected FACS.
  2015-06-25  0:29         ` Zheng, Lv
@ 2015-06-26  0:54           ` Rafael J. Wysocki
  2015-06-26  1:39             ` Zheng, Lv
  0 siblings, 1 reply; 10+ messages in thread
From: Rafael J. Wysocki @ 2015-06-26  0:54 UTC (permalink / raw)
  To: Zheng, Lv
  Cc: Wysocki, Rafael J, Brown, Len, Lv Zheng,
	linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org,
	Moore, Robert, Thomas Gleixner, Ingo Molnar, H. Peter Anvin,
	x86@kernel.org, Luck, Tony, Yu, Fenghua,
	linux-ia64@vger.kernel.org

On Thursday, June 25, 2015 12:29:02 AM Zheng, Lv wrote:
> Hi, Rafael
> 
> > From: Rafael J. Wysocki [mailto:rjw@rjwysocki.net]
> > Sent: Thursday, June 25, 2015 7:24 AM
> > To: Zheng, Lv

[cut]

> > 
> > In fact, I don't see why we need to redefine the symbols at all.
> > 
> > Couldn't acpi_set_firmware_waking_vector() be defined to take u32 and u64 so
> > we could just pass acpi_wakeup_address (as already defined) as the first argument
> > and 0 as the second argument to it?  The back-and-forth type casts from and
> > to acpi_physical_address don't look entirely clean to me.
> > 
> > Moreover, I don't really see a functional difference between the old and the
> > new code.
> > 
> > The old code does "set the 32-bit waking vector and clear the 64-bit waking
> > vector if present".  The new code does "set the 32-bit waking vector and
> > either clear the 64-bit one if present, or assign the second function argument
> > to it", but we always pass 0 as the second argument (which is *extremely*
> > obfuscated in your patch), so I really don't see the difference here.
> > 
> > Am I missing anything?
> 
> The story is:
> According to the test, if both 32-bit waking vector and 64-bit waking vector is
> set by the OSPM,

The current code in Linux never does that.

It never calls acpi_set_firmware_waking_vector64() and the acpi_set_firmware_waking_vector()
(before your patch) explicitly clears the 64-bit vector address.

> BIOSes only support 32-bit resume environment will jump to the 32-bit waking
> vector address and BIOSes support 64-bit resume environment will jump to
> 64-bit waking vector.

Which doesn't matter for Linux one whit.

> So they can be set by the OSPMs simultaneously to indicate that the OSPM can
> support both resume environments.  That's why ACPICA interface is changed.

It shouldn't.  It just forces host OSes to make pointless changes to their
non-ACPICA code.

As I said elsewhere, the old acpi_set_firmware_waking_vector() should still be
available to the OSes that don't care about the 64-bit waking vector and a *new*
interface should be added for those OSes that do care about it.  And *internally*
acpi_set_firmware_waking_vector() can be defined in terms of the new interface,
but there's no reason at all for a host OS to care about that.

So the $subject patch is entirely poitless.  It doesn't fix anything and it
doesn't even change the way the code works today in Linux.  It just adds
complexity and pointlessly redefines some stuff.

So I'm not going to apply it.

Thanks,
Rafael


^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: [PATCH v2 03/28] ACPICA: Hardware: Enable 64-bit firmware waking vector for selected FACS.
  2015-06-26  0:54           ` Rafael J. Wysocki
@ 2015-06-26  1:39             ` Zheng, Lv
  0 siblings, 0 replies; 10+ messages in thread
From: Zheng, Lv @ 2015-06-26  1:39 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Wysocki, Rafael J, Brown, Len, Lv Zheng,
	linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org,
	Moore, Robert, Thomas Gleixner, Ingo Molnar, H. Peter Anvin,
	x86@kernel.org, Luck, Tony, Yu, Fenghua,
	linux-ia64@vger.kernel.org

SGksIFJhZmFlbA0KDQo+IEZyb206IFJhZmFlbCBKLiBXeXNvY2tpIFttYWlsdG86cmp3QHJqd3lz
b2NraS5uZXRdDQo+IFNlbnQ6IEZyaWRheSwgSnVuZSAyNiwgMjAxNSA5OjIxIEFNDQo+IA0KPiBP
biBUaHVyc2RheSwgSnVuZSAyNSwgMjAxNSAxMjoyOTowMiBBTSBaaGVuZywgTHYgd3JvdGU6DQo+
ID4gSGksIFJhZmFlbA0KPiA+DQo+ID4gPiBGcm9tOiBSYWZhZWwgSi4gV3lzb2NraSBbbWFpbHRv
OnJqd0Byand5c29ja2kubmV0XQ0KPiA+ID4gU2VudDogVGh1cnNkYXksIEp1bmUgMjUsIDIwMTUg
NzoyNCBBTQ0KPiA+ID4gVG86IFpoZW5nLCBMdg0KPiANCj4gW2N1dF0NCj4gDQo+ID4gPg0KPiA+
ID4gSW4gZmFjdCwgSSBkb24ndCBzZWUgd2h5IHdlIG5lZWQgdG8gcmVkZWZpbmUgdGhlIHN5bWJv
bHMgYXQgYWxsLg0KPiA+ID4NCj4gPiA+IENvdWxkbid0IGFjcGlfc2V0X2Zpcm13YXJlX3dha2lu
Z192ZWN0b3IoKSBiZSBkZWZpbmVkIHRvIHRha2UgdTMyIGFuZCB1NjQgc28NCj4gPiA+IHdlIGNv
dWxkIGp1c3QgcGFzcyBhY3BpX3dha2V1cF9hZGRyZXNzIChhcyBhbHJlYWR5IGRlZmluZWQpIGFz
IHRoZSBmaXJzdCBhcmd1bWVudA0KPiA+ID4gYW5kIDAgYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0
byBpdD8gIFRoZSBiYWNrLWFuZC1mb3J0aCB0eXBlIGNhc3RzIGZyb20gYW5kDQo+ID4gPiB0byBh
Y3BpX3BoeXNpY2FsX2FkZHJlc3MgZG9uJ3QgbG9vayBlbnRpcmVseSBjbGVhbiB0byBtZS4NCj4g
PiA+DQo+ID4gPiBNb3Jlb3ZlciwgSSBkb24ndCByZWFsbHkgc2VlIGEgZnVuY3Rpb25hbCBkaWZm
ZXJlbmNlIGJldHdlZW4gdGhlIG9sZCBhbmQgdGhlDQo+ID4gPiBuZXcgY29kZS4NCj4gPiA+DQo+
ID4gPiBUaGUgb2xkIGNvZGUgZG9lcyAic2V0IHRoZSAzMi1iaXQgd2FraW5nIHZlY3RvciBhbmQg
Y2xlYXIgdGhlIDY0LWJpdCB3YWtpbmcNCj4gPiA+IHZlY3RvciBpZiBwcmVzZW50Ii4gIFRoZSBu
ZXcgY29kZSBkb2VzICJzZXQgdGhlIDMyLWJpdCB3YWtpbmcgdmVjdG9yIGFuZA0KPiA+ID4gZWl0
aGVyIGNsZWFyIHRoZSA2NC1iaXQgb25lIGlmIHByZXNlbnQsIG9yIGFzc2lnbiB0aGUgc2Vjb25k
IGZ1bmN0aW9uIGFyZ3VtZW50DQo+ID4gPiB0byBpdCIsIGJ1dCB3ZSBhbHdheXMgcGFzcyAwIGFz
IHRoZSBzZWNvbmQgYXJndW1lbnQgKHdoaWNoIGlzICpleHRyZW1lbHkqDQo+ID4gPiBvYmZ1c2Nh
dGVkIGluIHlvdXIgcGF0Y2gpLCBzbyBJIHJlYWxseSBkb24ndCBzZWUgdGhlIGRpZmZlcmVuY2Ug
aGVyZS4NCj4gPiA+DQo+ID4gPiBBbSBJIG1pc3NpbmcgYW55dGhpbmc/DQo+ID4NCj4gPiBUaGUg
c3RvcnkgaXM6DQo+ID4gQWNjb3JkaW5nIHRvIHRoZSB0ZXN0LCBpZiBib3RoIDMyLWJpdCB3YWtp
bmcgdmVjdG9yIGFuZCA2NC1iaXQgd2FraW5nIHZlY3RvciBpcw0KPiA+IHNldCBieSB0aGUgT1NQ
TSwNCj4gDQo+IFRoZSBjdXJyZW50IGNvZGUgaW4gTGludXggbmV2ZXIgZG9lcyB0aGF0Lg0KPiAN
Cj4gSXQgbmV2ZXIgY2FsbHMgYWNwaV9zZXRfZmlybXdhcmVfd2FraW5nX3ZlY3RvcjY0KCkgYW5k
IHRoZSBhY3BpX3NldF9maXJtd2FyZV93YWtpbmdfdmVjdG9yKCkNCj4gKGJlZm9yZSB5b3VyIHBh
dGNoKSBleHBsaWNpdGx5IGNsZWFycyB0aGUgNjQtYml0IHZlY3RvciBhZGRyZXNzLg0KDQpJbiBB
Q1BJQ0EgdXBzdHJlYW0sIHRoaXMgaXMgYW4gaXNzdWUgYmVmb3JlIGFwcGx5aW5nIHRoaXMgcGF0
Y2guDQphY3BpX3NldF9maXJtd2FyZV93YWtpbmdfdmVjdG9yNjQoKSBhbmQgYWNwaV9zZXRfZmly
bXdhcmVfd2FraW5nX3ZlY3RvcigpIGRlcGVuZHMgb24gQUNQSV9NQUNISU5FX1dJRFRIIGRlZmlu
aXRpb24sIHRodXMgY2Fubm90IGJlIHVzZWQgZm9yIHRoaXMgcHVycG9zZS4NCg0KPiANCj4gPiBC
SU9TZXMgb25seSBzdXBwb3J0IDMyLWJpdCByZXN1bWUgZW52aXJvbm1lbnQgd2lsbCBqdW1wIHRv
IHRoZSAzMi1iaXQgd2FraW5nDQo+ID4gdmVjdG9yIGFkZHJlc3MgYW5kIEJJT1NlcyBzdXBwb3J0
IDY0LWJpdCByZXN1bWUgZW52aXJvbm1lbnQgd2lsbCBqdW1wIHRvDQo+ID4gNjQtYml0IHdha2lu
ZyB2ZWN0b3IuDQo+IA0KPiBXaGljaCBkb2Vzbid0IG1hdHRlciBmb3IgTGludXggb25lIHdoaXQu
DQoNClRoZSBidWcgcmVwb3J0IGlzIGFnYWluc3QgdGhlIDY0LWJpdCBhZGRyZXNzIGZhdm9yIG1l
Y2hhbmlzbS4NCkJ1dCBpZiB0aGUgT1NQTSBjYW4gc3VwcG9ydCByZXN1bWluZyBmcm9tIDY0LWJp
dCB3YWtpbmcgdmVjdG9yLCB0aGUgNjQtYml0IGFkZHJlc3MgZmF2b3IgbWVjaGFuaXNtIGRvZXNu
J3Qgc2VlbSB0byBiZSBidWdneS4NCg0KPiANCj4gPiBTbyB0aGV5IGNhbiBiZSBzZXQgYnkgdGhl
IE9TUE1zIHNpbXVsdGFuZW91c2x5IHRvIGluZGljYXRlIHRoYXQgdGhlIE9TUE0gY2FuDQo+ID4g
c3VwcG9ydCBib3RoIHJlc3VtZSBlbnZpcm9ubWVudHMuICBUaGF0J3Mgd2h5IEFDUElDQSBpbnRl
cmZhY2UgaXMgY2hhbmdlZC4NCj4gDQo+IEl0IHNob3VsZG4ndC4gIEl0IGp1c3QgZm9yY2VzIGhv
c3QgT1NlcyB0byBtYWtlIHBvaW50bGVzcyBjaGFuZ2VzIHRvIHRoZWlyDQo+IG5vbi1BQ1BJQ0Eg
Y29kZS4NCj4gDQo+IEFzIEkgc2FpZCBlbHNld2hlcmUsIHRoZSBvbGQgYWNwaV9zZXRfZmlybXdh
cmVfd2FraW5nX3ZlY3RvcigpIHNob3VsZCBzdGlsbCBiZQ0KPiBhdmFpbGFibGUgdG8gdGhlIE9T
ZXMgdGhhdCBkb24ndCBjYXJlIGFib3V0IHRoZSA2NC1iaXQgd2FraW5nIHZlY3RvciBhbmQgYSAq
bmV3Kg0KPiBpbnRlcmZhY2Ugc2hvdWxkIGJlIGFkZGVkIGZvciB0aG9zZSBPU2VzIHRoYXQgZG8g
Y2FyZSBhYm91dCBpdC4gIEFuZCAqaW50ZXJuYWxseSoNCj4gYWNwaV9zZXRfZmlybXdhcmVfd2Fr
aW5nX3ZlY3RvcigpIGNhbiBiZSBkZWZpbmVkIGluIHRlcm1zIG9mIHRoZSBuZXcgaW50ZXJmYWNl
LA0KPiBidXQgdGhlcmUncyBubyByZWFzb24gYXQgYWxsIGZvciBhIGhvc3QgT1MgdG8gY2FyZSBh
Ym91dCB0aGF0Lg0KDQpPSywgd2UgY2FuIHJlZmluZSB0aGUgaW50ZXJmYWNlIGluc2lkZSBvZiBB
Q1BJQ0EuDQoNCj4gDQo+IFNvIHRoZSAkc3ViamVjdCBwYXRjaCBpcyBlbnRpcmVseSBwb2l0bGVz
cy4gIEl0IGRvZXNuJ3QgZml4IGFueXRoaW5nIGFuZCBpdA0KPiBkb2Vzbid0IGV2ZW4gY2hhbmdl
IHRoZSB3YXkgdGhlIGNvZGUgd29ya3MgdG9kYXkgaW4gTGludXguICBJdCBqdXN0IGFkZHMNCj4g
Y29tcGxleGl0eSBhbmQgcG9pbnRsZXNzbHkgcmVkZWZpbmVzIHNvbWUgc3R1ZmYuDQo+IA0KDQpJ
dCBkb2Vzbid0IGZpeCBhbnkgZnVuY3Rpb25hbGl0eSBwcm9ibGVtIHJpZ2h0IGhlcmUgaW4gdGhp
cyBwYXRjaC4NCkJ1dCBpdCBmaXhlcyB0aGUgY29kZSBsb2dpYyBwcm9ibGVtIHRoYXQgYWNwaV9z
ZXRfZmlybXdhcmVfd2FraW5nX3ZlY3RvcjY0KCkvYWNwaV9zZXRfZmlybXdhcmVfd2FraW5nX3Zl
Y3RvcigpIGRlcGVuZHMgb24gQUNQSV9NQUNISU5FX1dJRFRIIGRlZmluaXRpb24uDQpBbmQgaXQg
ZmFjaWxpdGF0ZXMgdGhlIE9TUE1zIHdpdGggdGhlIGNhcGFiaWxpdHkgdG8gc3VwcG9ydCBib3Ro
IDMyLWJpdC82NC1iaXQgcmVzdW1pbmcgZW52aXJvbm1lbnQuDQoNCj4gU28gSSdtIG5vdCBnb2lu
ZyB0byBhcHBseSBpdC4NCg0KT0ssIEknbGwgZ28gYmFjayB0byByZWZpbmUgdGhlIGludGVyZmFj
ZSBjaGFuZ2UuDQoNClRoYW5rcyBhbmQgYmVzdCByZWdhcmRzDQotTHYNCg=

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2015-06-26  1:39 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <cover.1434684719.git.lv.zheng@intel.com>
2015-06-19  3:38 ` [PATCH 04/32] ACPI: sleep: Update acpi_set_firmware_waking_vector() invocations to favor 32-bit firm Lv Zheng
2015-06-19  6:26   ` [PATCH 04/32] ACPI: sleep: Update acpi_set_firmware_waking_vector() invocations to favor 32-bit Ingo Molnar
2015-06-19 23:42     ` Rafael J. Wysocki
     [not found] ` <cover.1435114811.git.lv.zheng@intel.com>
2015-06-24  3:02   ` [PATCH v2 03/28] ACPICA: Hardware: Enable 64-bit firmware waking vector for selected FACS Lv Zheng
2015-06-24 13:39     ` Rafael J. Wysocki
2015-06-24 22:58       ` Rafael J. Wysocki
2015-06-25  0:29         ` Zheng, Lv
2015-06-26  0:54           ` Rafael J. Wysocki
2015-06-26  1:39             ` Zheng, Lv
2015-06-25  1:09       ` Zheng, Lv

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox