public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL
@ 2016-12-01 17:55 Laszlo Ersek
  2016-12-01 17:55 ` [PATCH 1/3] MdePkg, MdeModulePkg: S3BootScriptSaveMemPoll(): accept 64-bit LoopTimes Laszlo Ersek
                   ` (3 more replies)
  0 siblings, 4 replies; 12+ messages in thread
From: Laszlo Ersek @ 2016-12-01 17:55 UTC (permalink / raw)
  To: edk2-devel-01
  Cc: David Wei, Feng Tian, Liming Gao, Mang Guo, Michael D Kinney,
	Star Zeng

While working on S3 boot script related stuff in OVMF, I wanted to see
if infinite blocking was possible in the various POLL opcodes. While
edk2's implementation of IO_POLL, PCI_CONFIG_POLL and PCI_CONFIG2_POLL
follows the PI spec vol5 closely, even internally (using 100ns delay
units), the MEM_POLL internals differ -- they are microseconds based.

That's not a problem per se (it's just a different internal opcode
representation, which is fine); the problem is that the current
internals don't conform to the spec: in 32-bit builds, the UINT64 number
of 100ns units that the caller intends to wait for is silently
truncated, for no good reason. This issue is not hard to fix (we can
even keep the microseconds-based internals), so let's fix it.

Repo:   https://github.com/lersek/edk2/
Branch: mempoll_looptimes_64bit

Cc: David Wei <david.wei@intel.com>
Cc: Feng Tian <feng.tian@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Mang Guo <mang.guo@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Star Zeng <star.zeng@intel.com>

Thanks
Laszlo

Laszlo Ersek (3):
  MdePkg, MdeModulePkg: S3BootScriptSaveMemPoll(): accept 64-bit
    LoopTimes
  MdeModulePkg: S3SaveStateDxe, SmmS3SaveState: save 64-bit LoopTimes
  Vlv2TbltDevicePkg/BootScriptSaveDxe: save 64-bit LoopTimes

 MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptSave.c  | 2 +-
 MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveState.c    | 8 ++++----
 MdeModulePkg/Universal/Acpi/SmmS3SaveState/SmmS3SaveState.c | 8 ++++----
 MdePkg/Include/Library/S3BootScriptLib.h                    | 2 +-
 MdePkg/Library/BaseS3BootScriptLibNull/BootScriptLib.c      | 2 +-
 Vlv2TbltDevicePkg/BootScriptSaveDxe/ScriptSave.c            | 4 ++--
 6 files changed, 13 insertions(+), 13 deletions(-)

-- 
2.9.2



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

* [PATCH 1/3] MdePkg, MdeModulePkg: S3BootScriptSaveMemPoll(): accept 64-bit LoopTimes
  2016-12-01 17:55 [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL Laszlo Ersek
@ 2016-12-01 17:55 ` Laszlo Ersek
  2016-12-01 17:55 ` [PATCH 2/3] MdeModulePkg: S3SaveStateDxe, SmmS3SaveState: save " Laszlo Ersek
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 12+ messages in thread
From: Laszlo Ersek @ 2016-12-01 17:55 UTC (permalink / raw)
  To: edk2-devel-01; +Cc: Feng Tian, Liming Gao, Michael D Kinney, Star Zeng

The BaseNull instance of S3BootScriptLib obviously doesn't care about the
type of the S3BootScriptSaveMemPoll() function's LoopTimes parameter; this
lib instance doesn't do anything with the parameters received in
S3BootScriptSaveMemPoll().

The PiDxe instance saves the LoopTimes parameter in
EFI_BOOT_SCRIPT_MEM_POLL.LoopTimes. This target field already has UINT64
type. Furthermore, the BootScriptExecuteMemPoll() function in the same
library instance already uses a local UINT64 variable called LoopTimes to
count up to EFI_BOOT_SCRIPT_MEM_POLL.LoopTimes. This means that the the
UINTN type for S3BootScriptSaveMemPoll()'s LoopTimes parameter is an
unnecessary restriction.

The callers of S3BootScriptSaveMemPoll() will be updated in the next
patches, functionally. At this stage, they will continue to compile, since
UINT64 parameters can accept UINTN arguments.

Cc: Feng Tian <feng.tian@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
---
 MdePkg/Include/Library/S3BootScriptLib.h                   | 2 +-
 MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptSave.c | 2 +-
 MdePkg/Library/BaseS3BootScriptLibNull/BootScriptLib.c     | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/MdePkg/Include/Library/S3BootScriptLib.h b/MdePkg/Include/Library/S3BootScriptLib.h
index 0a8cbe355aff..3f43da879469 100644
--- a/MdePkg/Include/Library/S3BootScriptLib.h
+++ b/MdePkg/Include/Library/S3BootScriptLib.h
@@ -343,7 +343,7 @@ S3BootScriptSaveMemPoll (
   IN  VOID                      *BitMask,
   IN  VOID                      *BitValue,
   IN  UINTN                     Duration,
-  IN  UINTN                     LoopTimes
+  IN  UINT64                    LoopTimes
   );
 
 /**
diff --git a/MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptSave.c b/MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptSave.c
index 9ff5b80e7a36..5698c9166399 100644
--- a/MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptSave.c
+++ b/MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptSave.c
@@ -1672,7 +1672,7 @@ S3BootScriptSaveMemPoll (
   IN  VOID                              *BitMask,
   IN  VOID                              *BitValue,
   IN  UINTN                             Duration,
-  IN  UINTN                             LoopTimes
+  IN  UINT64                            LoopTimes
   )
 {
   UINT8                 Length;
diff --git a/MdePkg/Library/BaseS3BootScriptLibNull/BootScriptLib.c b/MdePkg/Library/BaseS3BootScriptLibNull/BootScriptLib.c
index 373ce6b388e5..3dee64746ad9 100644
--- a/MdePkg/Library/BaseS3BootScriptLibNull/BootScriptLib.c
+++ b/MdePkg/Library/BaseS3BootScriptLibNull/BootScriptLib.c
@@ -303,7 +303,7 @@ S3BootScriptSaveMemPoll (
   IN  VOID                              *BitMask,
   IN  VOID                              *BitValue,
   IN  UINTN                             Duration,
-  IN  UINTN                             LoopTimes
+  IN  UINT64                            LoopTimes
   )
 {
 	return RETURN_SUCCESS;
-- 
2.9.2




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

* [PATCH 2/3] MdeModulePkg: S3SaveStateDxe, SmmS3SaveState: save 64-bit LoopTimes
  2016-12-01 17:55 [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL Laszlo Ersek
  2016-12-01 17:55 ` [PATCH 1/3] MdePkg, MdeModulePkg: S3BootScriptSaveMemPoll(): accept 64-bit LoopTimes Laszlo Ersek
@ 2016-12-01 17:55 ` Laszlo Ersek
  2016-12-01 17:55 ` [PATCH 3/3] Vlv2TbltDevicePkg/BootScriptSaveDxe: " Laszlo Ersek
  2016-12-02  1:53 ` [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL Yao, Jiewen
  3 siblings, 0 replies; 12+ messages in thread
From: Laszlo Ersek @ 2016-12-01 17:55 UTC (permalink / raw)
  To: edk2-devel-01; +Cc: Feng Tian, Star Zeng

The BootScriptWriteMemPoll() helper function in both drivers does the
following:

- pop Delay from the variable argument list as UINT64, then truncate it to
  UINTN,

- divide Delay by 10, using DivU64x32Remainder(), then store the quotient
  in LoopTimes (also UINTN),

- pass LoopTimes to S3BootScriptSaveMemPoll() as last argument.

The truncation to UINTN is superfluous and wrong in this logic (not to
mention incompatible with the PI spec); it prevents callers from
specifying Delays longer than 0xFFFF_FFFF * 100ns (approximately 429
seconds == 7 minutes 9 seconds) on Ia32. In particular it prevents callers
from specifying an infinite timeout (for example, 0xFFFF_FFFF_FFFF_FFFF *
100ns, approximately 58494 years).

Change the type of Delay and LoopTimes to UINT64. Keep the same logic,
just remove the truncations. The resultant LoopTimes values can be safely
passed to S3BootScriptSaveMemPoll() thanks to the previous patch.

Cc: Feng Tian <feng.tian@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
---
 MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveState.c    | 8 ++++----
 MdeModulePkg/Universal/Acpi/SmmS3SaveState/SmmS3SaveState.c | 8 ++++----
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveState.c b/MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveState.c
index 32263c96c56b..efc0ef914064 100644
--- a/MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveState.c
+++ b/MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveState.c
@@ -343,15 +343,15 @@ BootScriptWriteMemPoll (
   UINT64                     Address;                                    
   VOID                      *Data;                                    
   VOID                      *DataMask;                                  
-  UINTN                     Delay;                                   
-  UINTN                     LoopTimes;
+  UINT64                    Delay;
+  UINT64                    LoopTimes;
   UINT32                    Remainder;
 
   Width    = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);                  
   Address  = VA_ARG (Marker, UINT64);                                    
   Data     = VA_ARG (Marker, VOID *);                                    
   DataMask = VA_ARG (Marker, VOID *);                                    
-  Delay    = (UINTN)VA_ARG (Marker, UINT64);                            
+  Delay    = VA_ARG (Marker, UINT64);
   //
   // According to the spec, the interval between 2 polls is 100ns,
   // but the unit of Duration for S3BootScriptSaveMemPoll() is microsecond(1000ns).
@@ -359,7 +359,7 @@ BootScriptWriteMemPoll (
   // Duration will be minimum 1(microsecond) to be minimum deviation,
   // so LoopTimes = Delay / 10.
   //
-  LoopTimes = (UINTN) DivU64x32Remainder (
+  LoopTimes = DivU64x32Remainder (
                 Delay,
                 10,
                 &Remainder
diff --git a/MdeModulePkg/Universal/Acpi/SmmS3SaveState/SmmS3SaveState.c b/MdeModulePkg/Universal/Acpi/SmmS3SaveState/SmmS3SaveState.c
index 739f19eac437..0d1580dc35ab 100644
--- a/MdeModulePkg/Universal/Acpi/SmmS3SaveState/SmmS3SaveState.c
+++ b/MdeModulePkg/Universal/Acpi/SmmS3SaveState/SmmS3SaveState.c
@@ -342,15 +342,15 @@ BootScriptWriteMemPoll (
   UINT64                     Address;                                    
   VOID                      *Data;                                       
   VOID                      *DataMask;                                   
-  UINTN                      Delay;                                       
-  UINTN                      LoopTimes;
+  UINT64                     Delay;
+  UINT64                     LoopTimes;
   UINT32                     Remainder;
 
   Width    = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);                  
   Address  = VA_ARG (Marker, UINT64);                                    
   Data     = VA_ARG (Marker, VOID *);                                    
   DataMask = VA_ARG (Marker, VOID *);                                    
-  Delay    = (UINTN)VA_ARG (Marker, UINT64);                            
+  Delay    = VA_ARG (Marker, UINT64);
   //
   // According to the spec, the interval between 2 polls is 100ns,
   // but the unit of Duration for S3BootScriptSaveMemPoll() is microsecond(1000ns).
@@ -358,7 +358,7 @@ BootScriptWriteMemPoll (
   // Duration will be minimum 1(microsecond) to be minimum deviation,
   // so LoopTimes = Delay / 10.
   //
-  LoopTimes = (UINTN) DivU64x32Remainder (
+  LoopTimes = DivU64x32Remainder (
                 Delay,
                 10,
                 &Remainder
-- 
2.9.2




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

* [PATCH 3/3] Vlv2TbltDevicePkg/BootScriptSaveDxe: save 64-bit LoopTimes
  2016-12-01 17:55 [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL Laszlo Ersek
  2016-12-01 17:55 ` [PATCH 1/3] MdePkg, MdeModulePkg: S3BootScriptSaveMemPoll(): accept 64-bit LoopTimes Laszlo Ersek
  2016-12-01 17:55 ` [PATCH 2/3] MdeModulePkg: S3SaveStateDxe, SmmS3SaveState: save " Laszlo Ersek
@ 2016-12-01 17:55 ` Laszlo Ersek
  2016-12-02  1:53 ` [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL Yao, Jiewen
  3 siblings, 0 replies; 12+ messages in thread
From: Laszlo Ersek @ 2016-12-01 17:55 UTC (permalink / raw)
  To: edk2-devel-01; +Cc: David Wei, Mang Guo

The BootScriptMemPoll() helper function does the following:

- pop LoopTimes from the variable argument list as UINT64, then truncate
  it to UINTN,

- pass the truncated value to S3BootScriptSaveMemPoll() as last argument.

The truncation to UINTN is now superfluous, thanks to the patch titled
"MdePkg, MdeModulePkg: S3BootScriptSaveMemPoll(): accept 64-bit
LoopTimes".

Cc: David Wei <david.wei@intel.com>
Cc: Mang Guo <mang.guo@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
---
 Vlv2TbltDevicePkg/BootScriptSaveDxe/ScriptSave.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Vlv2TbltDevicePkg/BootScriptSaveDxe/ScriptSave.c b/Vlv2TbltDevicePkg/BootScriptSaveDxe/ScriptSave.c
index af7b9680b643..4c6667df0c61 100644
--- a/Vlv2TbltDevicePkg/BootScriptSaveDxe/ScriptSave.c
+++ b/Vlv2TbltDevicePkg/BootScriptSaveDxe/ScriptSave.c
@@ -348,14 +348,14 @@ BootScriptMemPoll (
   UINT8                 *BitMask;
   UINT8                 *BitValue;
   UINTN                Duration;
-  UINTN                LoopTimes;
+  UINT64               LoopTimes;
 
   Width       = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);
   Address     = VA_ARG (Marker, UINT64);
   BitMask     = VA_ARG (Marker, UINT8 *);
   BitValue    = VA_ARG (Marker, UINT8 *);
   Duration    = (UINTN)VA_ARG (Marker, UINT64);
-  LoopTimes   = (UINTN)VA_ARG (Marker, UINT64);
+  LoopTimes   = VA_ARG (Marker, UINT64);
 
   return S3BootScriptSaveMemPoll (Width, Address, BitMask, BitValue, Duration, LoopTimes);
 }
-- 
2.9.2



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

* Re: [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL
  2016-12-01 17:55 [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL Laszlo Ersek
                   ` (2 preceding siblings ...)
  2016-12-01 17:55 ` [PATCH 3/3] Vlv2TbltDevicePkg/BootScriptSaveDxe: " Laszlo Ersek
@ 2016-12-02  1:53 ` Yao, Jiewen
  2016-12-02  4:54   ` Zeng, Star
  3 siblings, 1 reply; 12+ messages in thread
From: Yao, Jiewen @ 2016-12-02  1:53 UTC (permalink / raw)
  To: Laszlo Ersek, edk2-devel-01
  Cc: Tian, Feng, Gao, Liming, Kinney, Michael D, Zeng, Star,
	Wei, David

HI Laszlo
Thank you to raise this long time existing issue. :-)

There is historic reason that we inherit this undocumented API from EDK-I to EDKII.

I do not object your update.
I am thinking if it is time to create a new API which can match PI specification, and suggest all consumers use the new API.

RETURN_STATUS
EFIAPI
S3BootScriptSavePiMemPoll (
  IN  S3_BOOT_SCRIPT_LIB_WIDTH  Width,
  IN  UINT64                    Address,
  IN  VOID                      *Data,
  IN  VOID                      *DataMask,
  IN  UINT64                    Delay,
  );

Thank you
Yao Jiewen


> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of
> Laszlo Ersek
> Sent: Friday, December 2, 2016 1:56 AM
> To: edk2-devel-01 <edk2-devel@ml01.01.org>
> Cc: Tian, Feng <feng.tian@intel.com>; Gao, Liming <liming.gao@intel.com>;
> Kinney, Michael D <michael.d.kinney@intel.com>; Zeng, Star
> <star.zeng@intel.com>; Wei, David <david.wei@intel.com>
> Subject: [edk2] [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg:
> 64-bit LoopTimes in S3 MEM_POLL
> 
> While working on S3 boot script related stuff in OVMF, I wanted to see
> if infinite blocking was possible in the various POLL opcodes. While
> edk2's implementation of IO_POLL, PCI_CONFIG_POLL and
> PCI_CONFIG2_POLL
> follows the PI spec vol5 closely, even internally (using 100ns delay
> units), the MEM_POLL internals differ -- they are microseconds based.
> 
> That's not a problem per se (it's just a different internal opcode
> representation, which is fine); the problem is that the current
> internals don't conform to the spec: in 32-bit builds, the UINT64 number
> of 100ns units that the caller intends to wait for is silently
> truncated, for no good reason. This issue is not hard to fix (we can
> even keep the microseconds-based internals), so let's fix it.
> 
> Repo:   https://github.com/lersek/edk2/
> Branch: mempoll_looptimes_64bit
> 
> Cc: David Wei <david.wei@intel.com>
> Cc: Feng Tian <feng.tian@intel.com>
> Cc: Liming Gao <liming.gao@intel.com>
> Cc: Mang Guo <mang.guo@intel.com>
> Cc: Michael D Kinney <michael.d.kinney@intel.com>
> Cc: Star Zeng <star.zeng@intel.com>
> 
> Thanks
> Laszlo
> 
> Laszlo Ersek (3):
>   MdePkg, MdeModulePkg: S3BootScriptSaveMemPoll(): accept 64-bit
>     LoopTimes
>   MdeModulePkg: S3SaveStateDxe, SmmS3SaveState: save 64-bit
> LoopTimes
>   Vlv2TbltDevicePkg/BootScriptSaveDxe: save 64-bit LoopTimes
> 
>  MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptSave.c  | 2 +-
>  MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveState.c    | 8
> ++++----
>  MdeModulePkg/Universal/Acpi/SmmS3SaveState/SmmS3SaveState.c | 8
> ++++----
>  MdePkg/Include/Library/S3BootScriptLib.h                    | 2 +-
>  MdePkg/Library/BaseS3BootScriptLibNull/BootScriptLib.c      | 2 +-
>  Vlv2TbltDevicePkg/BootScriptSaveDxe/ScriptSave.c            | 4 ++--
>  6 files changed, 13 insertions(+), 13 deletions(-)
> 
> --
> 2.9.2
> 
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel


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

* Re: [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL
  2016-12-02  1:53 ` [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL Yao, Jiewen
@ 2016-12-02  4:54   ` Zeng, Star
  2016-12-02  9:46     ` Laszlo Ersek
  0 siblings, 1 reply; 12+ messages in thread
From: Zeng, Star @ 2016-12-02  4:54 UTC (permalink / raw)
  To: Yao, Jiewen, Laszlo Ersek, edk2-devel-01
  Cc: Kinney, Michael D, Tian, Feng, Gao, Liming, Wei, David, star.zeng

On 2016/12/2 9:53, Yao, Jiewen wrote:
> HI Laszlo
> Thank you to raise this long time existing issue. :-)
>
> There is historic reason that we inherit this undocumented API from EDK-I to EDKII.
>
> I do not object your update.
> I am thinking if it is time to create a new API which can match PI specification, and suggest all consumers use the new API.
>
> RETURN_STATUS
> EFIAPI
> S3BootScriptSavePiMemPoll (
>   IN  S3_BOOT_SCRIPT_LIB_WIDTH  Width,
>   IN  UINT64                    Address,
>   IN  VOID                      *Data,
>   IN  VOID                      *DataMask,
>   IN  UINT64                    Delay,
>   );

If the new API is introduced, the old one could be marked as deprecated 
by DISABLE_NEW_DEPRECATED_INTERFACES.

Thanks,
Star

>
> Thank you
> Yao Jiewen
>
>
>> -----Original Message-----
>> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of
>> Laszlo Ersek
>> Sent: Friday, December 2, 2016 1:56 AM
>> To: edk2-devel-01 <edk2-devel@ml01.01.org>
>> Cc: Tian, Feng <feng.tian@intel.com>; Gao, Liming <liming.gao@intel.com>;
>> Kinney, Michael D <michael.d.kinney@intel.com>; Zeng, Star
>> <star.zeng@intel.com>; Wei, David <david.wei@intel.com>
>> Subject: [edk2] [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg:
>> 64-bit LoopTimes in S3 MEM_POLL
>>
>> While working on S3 boot script related stuff in OVMF, I wanted to see
>> if infinite blocking was possible in the various POLL opcodes. While
>> edk2's implementation of IO_POLL, PCI_CONFIG_POLL and
>> PCI_CONFIG2_POLL
>> follows the PI spec vol5 closely, even internally (using 100ns delay
>> units), the MEM_POLL internals differ -- they are microseconds based.
>>
>> That's not a problem per se (it's just a different internal opcode
>> representation, which is fine); the problem is that the current
>> internals don't conform to the spec: in 32-bit builds, the UINT64 number
>> of 100ns units that the caller intends to wait for is silently
>> truncated, for no good reason. This issue is not hard to fix (we can
>> even keep the microseconds-based internals), so let's fix it.
>>
>> Repo:   https://github.com/lersek/edk2/
>> Branch: mempoll_looptimes_64bit
>>
>> Cc: David Wei <david.wei@intel.com>
>> Cc: Feng Tian <feng.tian@intel.com>
>> Cc: Liming Gao <liming.gao@intel.com>
>> Cc: Mang Guo <mang.guo@intel.com>
>> Cc: Michael D Kinney <michael.d.kinney@intel.com>
>> Cc: Star Zeng <star.zeng@intel.com>
>>
>> Thanks
>> Laszlo
>>
>> Laszlo Ersek (3):
>>   MdePkg, MdeModulePkg: S3BootScriptSaveMemPoll(): accept 64-bit
>>     LoopTimes
>>   MdeModulePkg: S3SaveStateDxe, SmmS3SaveState: save 64-bit
>> LoopTimes
>>   Vlv2TbltDevicePkg/BootScriptSaveDxe: save 64-bit LoopTimes
>>
>>  MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptSave.c  | 2 +-
>>  MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveState.c    | 8
>> ++++----
>>  MdeModulePkg/Universal/Acpi/SmmS3SaveState/SmmS3SaveState.c | 8
>> ++++----
>>  MdePkg/Include/Library/S3BootScriptLib.h                    | 2 +-
>>  MdePkg/Library/BaseS3BootScriptLibNull/BootScriptLib.c      | 2 +-
>>  Vlv2TbltDevicePkg/BootScriptSaveDxe/ScriptSave.c            | 4 ++--
>>  6 files changed, 13 insertions(+), 13 deletions(-)
>>
>> --
>> 2.9.2
>>
>> _______________________________________________
>> edk2-devel mailing list
>> edk2-devel@lists.01.org
>> https://lists.01.org/mailman/listinfo/edk2-devel



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

* Re: [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL
  2016-12-02  4:54   ` Zeng, Star
@ 2016-12-02  9:46     ` Laszlo Ersek
  2016-12-02 23:56       ` Yao, Jiewen
  0 siblings, 1 reply; 12+ messages in thread
From: Laszlo Ersek @ 2016-12-02  9:46 UTC (permalink / raw)
  To: Zeng, Star, Yao, Jiewen, edk2-devel-01
  Cc: Kinney, Michael D, Tian, Feng, Gao, Liming, Wei, David

On 12/02/16 05:54, Zeng, Star wrote:
> On 2016/12/2 9:53, Yao, Jiewen wrote:
>> HI Laszlo
>> Thank you to raise this long time existing issue. :-)
>>
>> There is historic reason that we inherit this undocumented API from
>> EDK-I to EDKII.
>>
>> I do not object your update.

Thanks!

>> I am thinking if it is time to create a new API which can match PI
>> specification, and suggest all consumers use the new API.
>>
>> RETURN_STATUS
>> EFIAPI
>> S3BootScriptSavePiMemPoll (
>>   IN  S3_BOOT_SCRIPT_LIB_WIDTH  Width,
>>   IN  UINT64                    Address,
>>   IN  VOID                      *Data,
>>   IN  VOID                      *DataMask,
>>   IN  UINT64                    Delay,
>>   );
> 
> If the new API is introduced, the old one could be marked as deprecated
> by DISABLE_NEW_DEPRECATED_INTERFACES.

That's cool, but until then, can we please accept these patches? :)

Thanks!
Laszlo

> Thanks,
> Star
> 
>>
>> Thank you
>> Yao Jiewen
>>
>>
>>> -----Original Message-----
>>> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of
>>> Laszlo Ersek
>>> Sent: Friday, December 2, 2016 1:56 AM
>>> To: edk2-devel-01 <edk2-devel@ml01.01.org>
>>> Cc: Tian, Feng <feng.tian@intel.com>; Gao, Liming
>>> <liming.gao@intel.com>;
>>> Kinney, Michael D <michael.d.kinney@intel.com>; Zeng, Star
>>> <star.zeng@intel.com>; Wei, David <david.wei@intel.com>
>>> Subject: [edk2] [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg:
>>> 64-bit LoopTimes in S3 MEM_POLL
>>>
>>> While working on S3 boot script related stuff in OVMF, I wanted to see
>>> if infinite blocking was possible in the various POLL opcodes. While
>>> edk2's implementation of IO_POLL, PCI_CONFIG_POLL and
>>> PCI_CONFIG2_POLL
>>> follows the PI spec vol5 closely, even internally (using 100ns delay
>>> units), the MEM_POLL internals differ -- they are microseconds based.
>>>
>>> That's not a problem per se (it's just a different internal opcode
>>> representation, which is fine); the problem is that the current
>>> internals don't conform to the spec: in 32-bit builds, the UINT64 number
>>> of 100ns units that the caller intends to wait for is silently
>>> truncated, for no good reason. This issue is not hard to fix (we can
>>> even keep the microseconds-based internals), so let's fix it.
>>>
>>> Repo:   https://github.com/lersek/edk2/
>>> Branch: mempoll_looptimes_64bit
>>>
>>> Cc: David Wei <david.wei@intel.com>
>>> Cc: Feng Tian <feng.tian@intel.com>
>>> Cc: Liming Gao <liming.gao@intel.com>
>>> Cc: Mang Guo <mang.guo@intel.com>
>>> Cc: Michael D Kinney <michael.d.kinney@intel.com>
>>> Cc: Star Zeng <star.zeng@intel.com>
>>>
>>> Thanks
>>> Laszlo
>>>
>>> Laszlo Ersek (3):
>>>   MdePkg, MdeModulePkg: S3BootScriptSaveMemPoll(): accept 64-bit
>>>     LoopTimes
>>>   MdeModulePkg: S3SaveStateDxe, SmmS3SaveState: save 64-bit
>>> LoopTimes
>>>   Vlv2TbltDevicePkg/BootScriptSaveDxe: save 64-bit LoopTimes
>>>
>>>  MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptSave.c  | 2 +-
>>>  MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveState.c    | 8
>>> ++++----
>>>  MdeModulePkg/Universal/Acpi/SmmS3SaveState/SmmS3SaveState.c | 8
>>> ++++----
>>>  MdePkg/Include/Library/S3BootScriptLib.h                    | 2 +-
>>>  MdePkg/Library/BaseS3BootScriptLibNull/BootScriptLib.c      | 2 +-
>>>  Vlv2TbltDevicePkg/BootScriptSaveDxe/ScriptSave.c            | 4 ++--
>>>  6 files changed, 13 insertions(+), 13 deletions(-)
>>>
>>> -- 
>>> 2.9.2
>>>
>>> _______________________________________________
>>> edk2-devel mailing list
>>> edk2-devel@lists.01.org
>>> https://lists.01.org/mailman/listinfo/edk2-devel
> 



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

* Re: [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL
  2016-12-02  9:46     ` Laszlo Ersek
@ 2016-12-02 23:56       ` Yao, Jiewen
  2016-12-03 18:33         ` Laszlo Ersek
  0 siblings, 1 reply; 12+ messages in thread
From: Yao, Jiewen @ 2016-12-02 23:56 UTC (permalink / raw)
  To: Laszlo Ersek, Zeng, Star, edk2-devel-01
  Cc: Kinney, Michael D, Tian, Feng, Gao, Liming, Wei, David

HI Laszlo
Would you please give me some time, so that I could discuss internal team to see if there is any concern on this API update?

The estimation will be 1 work week at most.

Usually adding a new API does not need compatibility check, but updating an existing API always need.

Thank you
Yao Jiewen

From: Laszlo Ersek [mailto:lersek@redhat.com]
Sent: Friday, December 2, 2016 5:47 PM
To: Zeng, Star <star.zeng@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>; edk2-devel-01 <edk2-devel@ml01.01.org>
Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Tian, Feng <feng.tian@intel.com>; Gao, Liming <liming.gao@intel.com>; Wei, David <david.wei@intel.com>
Subject: Re: [edk2] [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL

On 12/02/16 05:54, Zeng, Star wrote:
> On 2016/12/2 9:53, Yao, Jiewen wrote:
>> HI Laszlo
>> Thank you to raise this long time existing issue. :-)
>>
>> There is historic reason that we inherit this undocumented API from
>> EDK-I to EDKII.
>>
>> I do not object your update.

Thanks!

>> I am thinking if it is time to create a new API which can match PI
>> specification, and suggest all consumers use the new API.
>>
>> RETURN_STATUS
>> EFIAPI
>> S3BootScriptSavePiMemPoll (
>>   IN  S3_BOOT_SCRIPT_LIB_WIDTH  Width,
>>   IN  UINT64                    Address,
>>   IN  VOID                      *Data,
>>   IN  VOID                      *DataMask,
>>   IN  UINT64                    Delay,
>>   );
>
> If the new API is introduced, the old one could be marked as deprecated
> by DISABLE_NEW_DEPRECATED_INTERFACES.

That's cool, but until then, can we please accept these patches? :)

Thanks!
Laszlo

> Thanks,
> Star
>
>>
>> Thank you
>> Yao Jiewen
>>
>>
>>> -----Original Message-----
>>> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of
>>> Laszlo Ersek
>>> Sent: Friday, December 2, 2016 1:56 AM
>>> To: edk2-devel-01 <edk2-devel@ml01.01.org<mailto:edk2-devel@ml01.01.org>>
>>> Cc: Tian, Feng <feng.tian@intel.com<mailto:feng.tian@intel.com>>; Gao, Liming
>>> <liming.gao@intel.com<mailto:liming.gao@intel.com>>;
>>> Kinney, Michael D <michael.d.kinney@intel.com<mailto:michael.d.kinney@intel.com>>; Zeng, Star
>>> <star.zeng@intel.com<mailto:star.zeng@intel.com>>; Wei, David <david.wei@intel.com<mailto:david.wei@intel.com>>
>>> Subject: [edk2] [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg:
>>> 64-bit LoopTimes in S3 MEM_POLL
>>>
>>> While working on S3 boot script related stuff in OVMF, I wanted to see
>>> if infinite blocking was possible in the various POLL opcodes. While
>>> edk2's implementation of IO_POLL, PCI_CONFIG_POLL and
>>> PCI_CONFIG2_POLL
>>> follows the PI spec vol5 closely, even internally (using 100ns delay
>>> units), the MEM_POLL internals differ -- they are microseconds based.
>>>
>>> That's not a problem per se (it's just a different internal opcode
>>> representation, which is fine); the problem is that the current
>>> internals don't conform to the spec: in 32-bit builds, the UINT64 number
>>> of 100ns units that the caller intends to wait for is silently
>>> truncated, for no good reason. This issue is not hard to fix (we can
>>> even keep the microseconds-based internals), so let's fix it.
>>>
>>> Repo:   https://github.com/lersek/edk2/
>>> Branch: mempoll_looptimes_64bit
>>>
>>> Cc: David Wei <david.wei@intel.com<mailto:david.wei@intel.com>>
>>> Cc: Feng Tian <feng.tian@intel.com<mailto:feng.tian@intel.com>>
>>> Cc: Liming Gao <liming.gao@intel.com<mailto:liming.gao@intel.com>>
>>> Cc: Mang Guo <mang.guo@intel.com<mailto:mang.guo@intel.com>>
>>> Cc: Michael D Kinney <michael.d.kinney@intel.com<mailto:michael.d.kinney@intel.com>>
>>> Cc: Star Zeng <star.zeng@intel.com<mailto:star.zeng@intel.com>>
>>>
>>> Thanks
>>> Laszlo
>>>
>>> Laszlo Ersek (3):
>>>   MdePkg, MdeModulePkg: S3BootScriptSaveMemPoll(): accept 64-bit
>>>     LoopTimes
>>>   MdeModulePkg: S3SaveStateDxe, SmmS3SaveState: save 64-bit
>>> LoopTimes
>>>   Vlv2TbltDevicePkg/BootScriptSaveDxe: save 64-bit LoopTimes
>>>
>>>  MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptSave.c  | 2 +-
>>>  MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveState.c    | 8
>>> ++++----
>>>  MdeModulePkg/Universal/Acpi/SmmS3SaveState/SmmS3SaveState.c | 8
>>> ++++----
>>>  MdePkg/Include/Library/S3BootScriptLib.h                    | 2 +-
>>>  MdePkg/Library/BaseS3BootScriptLibNull/BootScriptLib.c      | 2 +-
>>>  Vlv2TbltDevicePkg/BootScriptSaveDxe/ScriptSave.c            | 4 ++--
>>>  6 files changed, 13 insertions(+), 13 deletions(-)
>>>
>>> --
>>> 2.9.2
>>>
>>> _______________________________________________
>>> edk2-devel mailing list
>>> edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org>
>>> https://lists.01.org/mailman/listinfo/edk2-devel
>


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

* Re: [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL
  2016-12-02 23:56       ` Yao, Jiewen
@ 2016-12-03 18:33         ` Laszlo Ersek
  2016-12-09 22:58           ` Yao, Jiewen
  0 siblings, 1 reply; 12+ messages in thread
From: Laszlo Ersek @ 2016-12-03 18:33 UTC (permalink / raw)
  To: Yao, Jiewen, Zeng, Star, edk2-devel-01
  Cc: Kinney, Michael D, Tian, Feng, Gao, Liming, Wei, David

On 12/03/16 00:56, Yao, Jiewen wrote:
> HI Laszlo
> 
> Would you please give me some time, so that I could discuss internal
> team to see if there is any concern on this API update?
> 
>  
> 
> The estimation will be 1 work week at most.
> 
>  
> 
> Usually adding a new API does not need compatibility check, but updating
> an existing API always need.

Sure, thanks.
Laszlo

> *From:*Laszlo Ersek [mailto:lersek@redhat.com]
> *Sent:* Friday, December 2, 2016 5:47 PM
> *To:* Zeng, Star <star.zeng@intel.com>; Yao, Jiewen
> <jiewen.yao@intel.com>; edk2-devel-01 <edk2-devel@ml01.01.org>
> *Cc:* Kinney, Michael D <michael.d.kinney@intel.com>; Tian, Feng
> <feng.tian@intel.com>; Gao, Liming <liming.gao@intel.com>; Wei, David
> <david.wei@intel.com>
> *Subject:* Re: [edk2] [PATCH 0/3] MdePkg, MdeModulePkg,
> Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL
> 
>  
> 
> On 12/02/16 05:54, Zeng, Star wrote:
>> On 2016/12/2 9:53, Yao, Jiewen wrote:
>>> HI Laszlo
>>> Thank you to raise this long time existing issue. :-)
>>>
>>> There is historic reason that we inherit this undocumented API from
>>> EDK-I to EDKII.
>>>
>>> I do not object your update.
> 
> Thanks!
> 
>>> I am thinking if it is time to create a new API which can match PI
>>> specification, and suggest all consumers use the new API.
>>>
>>> RETURN_STATUS
>>> EFIAPI
>>> S3BootScriptSavePiMemPoll (
>>>   IN  S3_BOOT_SCRIPT_LIB_WIDTH  Width,
>>>   IN  UINT64                    Address,
>>>   IN  VOID                      *Data,
>>>   IN  VOID                      *DataMask,
>>>   IN  UINT64                    Delay,
>>>   );
>> 
>> If the new API is introduced, the old one could be marked as deprecated
>> by DISABLE_NEW_DEPRECATED_INTERFACES.
> 
> That's cool, but until then, can we please accept these patches? :)
> 
> Thanks!
> Laszlo
> 
>> Thanks,
>> Star
>> 
>>>
>>> Thank you
>>> Yao Jiewen
>>>
>>>
>>>> -----Original Message-----
>>>> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of
>>>> Laszlo Ersek
>>>> Sent: Friday, December 2, 2016 1:56 AM
>>>> To: edk2-devel-01 <edk2-devel@ml01.01.org <mailto:edk2-devel@ml01.01.org>>
>>>> Cc: Tian, Feng <feng.tian@intel.com <mailto:feng.tian@intel.com>>; Gao, Liming
>>>> <liming.gao@intel.com <mailto:liming.gao@intel.com>>;
>>>> Kinney, Michael D <michael.d.kinney@intel.com <mailto:michael.d.kinney@intel.com>>; Zeng, Star
>>>> <star.zeng@intel.com
> <mailto:star.zeng@intel.com>>; Wei, David <david.wei@intel.com
> <mailto:david.wei@intel.com>>
>>>> Subject: [edk2] [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg:
>>>> 64-bit LoopTimes in S3 MEM_POLL
>>>>
>>>> While working on S3 boot script related stuff in OVMF, I wanted to see
>>>> if infinite blocking was possible in the various POLL opcodes. While
>>>> edk2's implementation of IO_POLL, PCI_CONFIG_POLL and
>>>> PCI_CONFIG2_POLL
>>>> follows the PI spec vol5 closely, even internally (using 100ns delay
>>>> units), the MEM_POLL internals differ -- they are microseconds based.
>>>>
>>>> That's not a problem per se (it's just a different internal opcode
>>>> representation, which is fine); the problem is that the current
>>>> internals don't conform to the spec: in 32-bit builds, the UINT64 number
>>>> of 100ns units that the caller intends to wait for is silently
>>>> truncated, for no good reason. This issue is not hard to fix (we can
>>>> even keep the microseconds-based internals), so let's fix it.
>>>>
>>>> Repo:   https://github.com/lersek/edk2/
>>>> Branch: mempoll_looptimes_64bit
>>>>
>>>> Cc: David Wei <david.wei@intel.com <mailto:david.wei@intel.com>>
>>>> Cc: Feng Tian <feng.tian@intel.com <mailto:feng.tian@intel.com>>
>>>> Cc: Liming Gao <liming.gao@intel.com <mailto:liming.gao@intel.com>>
>>>> Cc: Mang Guo <mang.guo@intel.com <mailto:mang.guo@intel.com>>
>>>> Cc: Michael D Kinney <michael.d.kinney@intel.com <mailto:michael.d.kinney@intel.com>>
>>>> Cc: Star Zeng <star.zeng@intel.com <mailto:star.zeng@intel.com>>
>>>>
>>>> Thanks
>>>> Laszlo
>>>>
>>>> Laszlo Ersek (3):
>>>>   MdePkg, MdeModulePkg: S3BootScriptSaveMemPoll(): accept 64-bit
>>>>     LoopTimes
>>>>   MdeModulePkg: S3SaveStateDxe, SmmS3SaveState: save 64-bit
>>>> LoopTimes
>>>>   Vlv2TbltDevicePkg/BootScriptSaveDxe: save 64-bit LoopTimes
>>>>
>>>>  MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptSave.c  | 2 +-
>>>>  MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveState.c    | 8
>>>> ++++----
>>>>  MdeModulePkg/Universal/Acpi/SmmS3SaveState/SmmS3SaveState.c | 8
>>>> ++++----
>>>>  MdePkg/Include/Library/S3BootScriptLib.h                    | 2 +-
>>>>  MdePkg/Library/BaseS3BootScriptLibNull/BootScriptLib.c      | 2 +-
>>>>  Vlv2TbltDevicePkg/BootScriptSaveDxe/ScriptSave.c            | 4 ++--
>>>>  6 files changed, 13 insertions(+), 13 deletions(-)
>>>>
>>>> -- 
>>>> 2.9.2
>>>>
>>>> _______________________________________________
>>>> edk2-devel mailing list
>>>> edk2-devel@lists.01.org <mailto:edk2-devel@lists.01.org>
>>>> https://lists.01.org/mailman/listinfo/edk2-devel
>> 
> 



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

* Re: [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL
  2016-12-03 18:33         ` Laszlo Ersek
@ 2016-12-09 22:58           ` Yao, Jiewen
  2016-12-16  1:00             ` Kinney, Michael D
  0 siblings, 1 reply; 12+ messages in thread
From: Yao, Jiewen @ 2016-12-09 22:58 UTC (permalink / raw)
  To: Laszlo Ersek, Zeng, Star, edk2-devel-01
  Cc: Kinney, Michael D, Tian, Feng, Gao, Liming, Wei, David

Hi Laszlo
According to your description on compatibility, I do not have concern.
So far, I do not receive any concern from any other people, so I think it is good.

Reviewed-by: Jiewen.Yao@intel.com<mailto:Jiewen.Yao@intel.com>

Thank you
Yao Jiewen

From: Laszlo Ersek [mailto:lersek@redhat.com]
Sent: Sunday, December 4, 2016 2:34 AM
To: Yao, Jiewen <jiewen.yao@intel.com>; Zeng, Star <star.zeng@intel.com>; edk2-devel-01 <edk2-devel@ml01.01.org>
Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Tian, Feng <feng.tian@intel.com>; Gao, Liming <liming.gao@intel.com>; Wei, David <david.wei@intel.com>
Subject: Re: [edk2] [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL

On 12/03/16 00:56, Yao, Jiewen wrote:
> HI Laszlo
>
> Would you please give me some time, so that I could discuss internal
> team to see if there is any concern on this API update?
>
>
>
> The estimation will be 1 work week at most.
>
>
>
> Usually adding a new API does not need compatibility check, but updating
> an existing API always need.

Sure, thanks.
Laszlo

> *From:*Laszlo Ersek [mailto:lersek@redhat.com]
> *Sent:* Friday, December 2, 2016 5:47 PM
> *To:* Zeng, Star <star.zeng@intel.com<mailto:star.zeng@intel.com>>; Yao, Jiewen
> <jiewen.yao@intel.com<mailto:jiewen.yao@intel.com>>; edk2-devel-01 <edk2-devel@ml01.01.org<mailto:edk2-devel@ml01.01.org>>
> *Cc:* Kinney, Michael D <michael.d.kinney@intel.com<mailto:michael.d.kinney@intel.com>>; Tian, Feng
> <feng.tian@intel.com<mailto:feng.tian@intel.com>>; Gao, Liming <liming.gao@intel.com<mailto:liming.gao@intel.com>>; Wei, David
> <david.wei@intel.com<mailto:david.wei@intel.com>>
> *Subject:* Re: [edk2] [PATCH 0/3] MdePkg, MdeModulePkg,
> Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL
>
>
>
> On 12/02/16 05:54, Zeng, Star wrote:
>> On 2016/12/2 9:53, Yao, Jiewen wrote:
>>> HI Laszlo
>>> Thank you to raise this long time existing issue. :-)
>>>
>>> There is historic reason that we inherit this undocumented API from
>>> EDK-I to EDKII.
>>>
>>> I do not object your update.
>
> Thanks!
>
>>> I am thinking if it is time to create a new API which can match PI
>>> specification, and suggest all consumers use the new API.
>>>
>>> RETURN_STATUS
>>> EFIAPI
>>> S3BootScriptSavePiMemPoll (
>>>   IN  S3_BOOT_SCRIPT_LIB_WIDTH  Width,
>>>   IN  UINT64                    Address,
>>>   IN  VOID                      *Data,
>>>   IN  VOID                      *DataMask,
>>>   IN  UINT64                    Delay,
>>>   );
>>
>> If the new API is introduced, the old one could be marked as deprecated
>> by DISABLE_NEW_DEPRECATED_INTERFACES.
>
> That's cool, but until then, can we please accept these patches? :)
>
> Thanks!
> Laszlo
>
>> Thanks,
>> Star
>>
>>>
>>> Thank you
>>> Yao Jiewen
>>>
>>>
>>>> -----Original Message-----
>>>> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of
>>>> Laszlo Ersek
>>>> Sent: Friday, December 2, 2016 1:56 AM
>>>> To: edk2-devel-01 <edk2-devel@ml01.01.org <mailto:edk2-devel@ml01.01.org<mailto:edk2-devel@ml01.01.org %3cmailto:edk2-devel@ml01.01.org>>>
>>>> Cc: Tian, Feng <feng.tian@intel.com <mailto:feng.tian@intel.com<mailto:feng.tian@intel.com %3cmailto:feng.tian@intel.com>>>; Gao, Liming
>>>> <liming.gao@intel.com <mailto:liming.gao@intel.com<mailto:liming.gao@intel.com %3cmailto:liming.gao@intel.com>>>;
>>>> Kinney, Michael D <michael.d.kinney@intel.com <mailto:michael.d.kinney@intel.com<mailto:michael.d.kinney@intel.com %3cmailto:michael.d.kinney@intel.com>>>; Zeng, Star
>>>> <star.zeng@intel.com
<mailto:star.zeng@intel.com%0b>> <mailto:star.zeng@intel.com>>; Wei, David <david.wei@intel.com
<mailto:david.wei@intel.com%0b>> <mailto:david.wei@intel.com>>
>>>> Subject: [edk2] [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg:
>>>> 64-bit LoopTimes in S3 MEM_POLL
>>>>
>>>> While working on S3 boot script related stuff in OVMF, I wanted to see
>>>> if infinite blocking was possible in the various POLL opcodes. While
>>>> edk2's implementation of IO_POLL, PCI_CONFIG_POLL and
>>>> PCI_CONFIG2_POLL
>>>> follows the PI spec vol5 closely, even internally (using 100ns delay
>>>> units), the MEM_POLL internals differ -- they are microseconds based.
>>>>
>>>> That's not a problem per se (it's just a different internal opcode
>>>> representation, which is fine); the problem is that the current
>>>> internals don't conform to the spec: in 32-bit builds, the UINT64 number
>>>> of 100ns units that the caller intends to wait for is silently
>>>> truncated, for no good reason. This issue is not hard to fix (we can
>>>> even keep the microseconds-based internals), so let's fix it.
>>>>
>>>> Repo:   https://github.com/lersek/edk2/
>>>> Branch: mempoll_looptimes_64bit
>>>>
>>>> Cc: David Wei <david.wei@intel.com <mailto:david.wei@intel.com<mailto:david.wei@intel.com %3cmailto:david.wei@intel.com>>>
>>>> Cc: Feng Tian <feng.tian@intel.com <mailto:feng.tian@intel.com<mailto:feng.tian@intel.com %3cmailto:feng.tian@intel.com>>>
>>>> Cc: Liming Gao <liming.gao@intel.com <mailto:liming.gao@intel.com<mailto:liming.gao@intel.com %3cmailto:liming.gao@intel.com>>>
>>>> Cc: Mang Guo <mang.guo@intel.com <mailto:mang.guo@intel.com<mailto:mang.guo@intel.com %3cmailto:mang.guo@intel.com>>>
>>>> Cc: Michael D Kinney <michael.d.kinney@intel.com <mailto:michael.d.kinney@intel.com<mailto:michael.d.kinney@intel.com %3cmailto:michael.d.kinney@intel.com>>>
>>>> Cc: Star Zeng <star.zeng@intel.com <mailto:star.zeng@intel.com<mailto:star.zeng@intel.com %3cmailto:star.zeng@intel.com>>>
>>>>
>>>> Thanks
>>>> Laszlo
>>>>
>>>> Laszlo Ersek (3):
>>>>   MdePkg, MdeModulePkg: S3BootScriptSaveMemPoll(): accept 64-bit
>>>>     LoopTimes
>>>>   MdeModulePkg: S3SaveStateDxe, SmmS3SaveState: save 64-bit
>>>> LoopTimes
>>>>   Vlv2TbltDevicePkg/BootScriptSaveDxe: save 64-bit LoopTimes
>>>>
>>>>  MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptSave.c  | 2 +-
>>>>  MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveState.c    | 8
>>>> ++++----
>>>>  MdeModulePkg/Universal/Acpi/SmmS3SaveState/SmmS3SaveState.c | 8
>>>> ++++----
>>>>  MdePkg/Include/Library/S3BootScriptLib.h                    | 2 +-
>>>>  MdePkg/Library/BaseS3BootScriptLibNull/BootScriptLib.c      | 2 +-
>>>>  Vlv2TbltDevicePkg/BootScriptSaveDxe/ScriptSave.c            | 4 ++--
>>>>  6 files changed, 13 insertions(+), 13 deletions(-)
>>>>
>>>> --
>>>> 2.9.2
>>>>
>>>> _______________________________________________
>>>> edk2-devel mailing list
>>>> edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org> <mailto:edk2-devel@lists.01.org>
>>>> https://lists.01.org/mailman/listinfo/edk2-devel
>>
>

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

* Re: [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL
  2016-12-09 22:58           ` Yao, Jiewen
@ 2016-12-16  1:00             ` Kinney, Michael D
  2017-01-03 11:35               ` Laszlo Ersek
  0 siblings, 1 reply; 12+ messages in thread
From: Kinney, Michael D @ 2016-12-16  1:00 UTC (permalink / raw)
  To: Yao, Jiewen, Laszlo Ersek, Zeng, Star, edk2-devel-01,
	Kinney, Michael D
  Cc: Tian, Feng, Gao, Liming, Wei, David

Laszlo,

I agree with Jiewen that this is a compatible change.

Reviewed-by: Michael Kinney <michael.d.kinney@intel.com>

Mike

From: Yao, Jiewen
Sent: Friday, December 9, 2016 2:58 PM
To: Laszlo Ersek <lersek@redhat.com>; Zeng, Star <star.zeng@intel.com>; edk2-devel-01 <edk2-devel@ml01.01.org>
Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Tian, Feng <feng.tian@intel.com>; Gao, Liming <liming.gao@intel.com>; Wei, David <david.wei@intel.com>
Subject: RE: [edk2] [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL

Hi Laszlo
According to your description on compatibility, I do not have concern.
So far, I do not receive any concern from any other people, so I think it is good.

Reviewed-by: Jiewen.Yao@intel.com<mailto:Jiewen.Yao@intel.com>

Thank you
Yao Jiewen

From: Laszlo Ersek [mailto:lersek@redhat.com]
Sent: Sunday, December 4, 2016 2:34 AM
To: Yao, Jiewen <jiewen.yao@intel.com<mailto:jiewen.yao@intel.com>>; Zeng, Star <star.zeng@intel.com<mailto:star.zeng@intel.com>>; edk2-devel-01 <edk2-devel@ml01.01.org<mailto:edk2-devel@ml01.01.org>>
Cc: Kinney, Michael D <michael.d.kinney@intel.com<mailto:michael.d.kinney@intel.com>>; Tian, Feng <feng.tian@intel.com<mailto:feng.tian@intel.com>>; Gao, Liming <liming.gao@intel.com<mailto:liming.gao@intel.com>>; Wei, David <david.wei@intel.com<mailto:david.wei@intel.com>>
Subject: Re: [edk2] [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL

On 12/03/16 00:56, Yao, Jiewen wrote:
> HI Laszlo
>
> Would you please give me some time, so that I could discuss internal
> team to see if there is any concern on this API update?
>
>
>
> The estimation will be 1 work week at most.
>
>
>
> Usually adding a new API does not need compatibility check, but updating
> an existing API always need.

Sure, thanks.
Laszlo

> *From:*Laszlo Ersek [mailto:lersek@redhat.com]
> *Sent:* Friday, December 2, 2016 5:47 PM
> *To:* Zeng, Star <star.zeng@intel.com<mailto:star.zeng@intel.com>>; Yao, Jiewen
> <jiewen.yao@intel.com<mailto:jiewen.yao@intel.com>>; edk2-devel-01 <edk2-devel@ml01.01.org<mailto:edk2-devel@ml01.01.org>>
> *Cc:* Kinney, Michael D <michael.d.kinney@intel.com<mailto:michael.d.kinney@intel.com>>; Tian, Feng
> <feng.tian@intel.com<mailto:feng.tian@intel.com>>; Gao, Liming <liming.gao@intel.com<mailto:liming.gao@intel.com>>; Wei, David
> <david.wei@intel.com<mailto:david.wei@intel.com>>
> *Subject:* Re: [edk2] [PATCH 0/3] MdePkg, MdeModulePkg,
> Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL
>
>
>
> On 12/02/16 05:54, Zeng, Star wrote:
>> On 2016/12/2 9:53, Yao, Jiewen wrote:
>>> HI Laszlo
>>> Thank you to raise this long time existing issue. :-)
>>>
>>> There is historic reason that we inherit this undocumented API from
>>> EDK-I to EDKII.
>>>
>>> I do not object your update.
>
> Thanks!
>
>>> I am thinking if it is time to create a new API which can match PI
>>> specification, and suggest all consumers use the new API.
>>>
>>> RETURN_STATUS
>>> EFIAPI
>>> S3BootScriptSavePiMemPoll (
>>>   IN  S3_BOOT_SCRIPT_LIB_WIDTH  Width,
>>>   IN  UINT64                    Address,
>>>   IN  VOID                      *Data,
>>>   IN  VOID                      *DataMask,
>>>   IN  UINT64                    Delay,
>>>   );
>>
>> If the new API is introduced, the old one could be marked as deprecated
>> by DISABLE_NEW_DEPRECATED_INTERFACES.
>
> That's cool, but until then, can we please accept these patches? :)
>
> Thanks!
> Laszlo
>
>> Thanks,
>> Star
>>
>>>
>>> Thank you
>>> Yao Jiewen
>>>
>>>
>>>> -----Original Message-----
>>>> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of
>>>> Laszlo Ersek
>>>> Sent: Friday, December 2, 2016 1:56 AM
>>>> To: edk2-devel-01 <edk2-devel@ml01.01.org <mailto:edk2-devel@ml01.01.org<mailto:edk2-devel@ml01.01.org %3cmailto:edk2-devel@ml01.01.org>>>
>>>> Cc: Tian, Feng <feng.tian@intel.com <mailto:feng.tian@intel.com<mailto:feng.tian@intel.com %3cmailto:feng.tian@intel.com>>>; Gao, Liming
>>>> <liming.gao@intel.com <mailto:liming.gao@intel.com<mailto:liming.gao@intel.com %3cmailto:liming.gao@intel.com>>>;
>>>> Kinney, Michael D <michael.d.kinney@intel.com <mailto:michael.d.kinney@intel.com<mailto:michael.d.kinney@intel.com %3cmailto:michael.d.kinney@intel.com>>>; Zeng, Star
>>>> <star.zeng@intel.com
<mailto:star.zeng@intel.com%0b>> <mailto:star.zeng@intel.com>>; Wei, David <david.wei@intel.com
<mailto:david.wei@intel.com%0b>> <mailto:david.wei@intel.com>>
>>>> Subject: [edk2] [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg:
>>>> 64-bit LoopTimes in S3 MEM_POLL
>>>>
>>>> While working on S3 boot script related stuff in OVMF, I wanted to see
>>>> if infinite blocking was possible in the various POLL opcodes. While
>>>> edk2's implementation of IO_POLL, PCI_CONFIG_POLL and
>>>> PCI_CONFIG2_POLL
>>>> follows the PI spec vol5 closely, even internally (using 100ns delay
>>>> units), the MEM_POLL internals differ -- they are microseconds based.
>>>>
>>>> That's not a problem per se (it's just a different internal opcode
>>>> representation, which is fine); the problem is that the current
>>>> internals don't conform to the spec: in 32-bit builds, the UINT64 number
>>>> of 100ns units that the caller intends to wait for is silently
>>>> truncated, for no good reason. This issue is not hard to fix (we can
>>>> even keep the microseconds-based internals), so let's fix it.
>>>>
>>>> Repo:   https://github.com/lersek/edk2/
>>>> Branch: mempoll_looptimes_64bit
>>>>
>>>> Cc: David Wei <david.wei@intel.com <mailto:david.wei@intel.com<mailto:david.wei@intel.com %3cmailto:david.wei@intel.com>>>
>>>> Cc: Feng Tian <feng.tian@intel.com <mailto:feng.tian@intel.com<mailto:feng.tian@intel.com %3cmailto:feng.tian@intel.com>>>
>>>> Cc: Liming Gao <liming.gao@intel.com <mailto:liming.gao@intel.com<mailto:liming.gao@intel.com %3cmailto:liming.gao@intel.com>>>
>>>> Cc: Mang Guo <mang.guo@intel.com <mailto:mang.guo@intel.com<mailto:mang.guo@intel.com %3cmailto:mang.guo@intel.com>>>
>>>> Cc: Michael D Kinney <michael.d.kinney@intel.com <mailto:michael.d.kinney@intel.com<mailto:michael.d.kinney@intel.com %3cmailto:michael.d.kinney@intel.com>>>
>>>> Cc: Star Zeng <star.zeng@intel.com <mailto:star.zeng@intel.com<mailto:star.zeng@intel.com %3cmailto:star.zeng@intel.com>>>
>>>>
>>>> Thanks
>>>> Laszlo
>>>>
>>>> Laszlo Ersek (3):
>>>>   MdePkg, MdeModulePkg: S3BootScriptSaveMemPoll(): accept 64-bit
>>>>     LoopTimes
>>>>   MdeModulePkg: S3SaveStateDxe, SmmS3SaveState: save 64-bit
>>>> LoopTimes
>>>>   Vlv2TbltDevicePkg/BootScriptSaveDxe: save 64-bit LoopTimes
>>>>
>>>>  MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptSave.c  | 2 +-
>>>>  MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveState.c    | 8
>>>> ++++----
>>>>  MdeModulePkg/Universal/Acpi/SmmS3SaveState/SmmS3SaveState.c | 8
>>>> ++++----
>>>>  MdePkg/Include/Library/S3BootScriptLib.h                    | 2 +-
>>>>  MdePkg/Library/BaseS3BootScriptLibNull/BootScriptLib.c      | 2 +-
>>>>  Vlv2TbltDevicePkg/BootScriptSaveDxe/ScriptSave.c            | 4 ++--
>>>>  6 files changed, 13 insertions(+), 13 deletions(-)
>>>>
>>>> --
>>>> 2.9.2
>>>>
>>>> _______________________________________________
>>>> edk2-devel mailing list
>>>> edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org> <mailto:edk2-devel@lists.01.org>
>>>> https://lists.01.org/mailman/listinfo/edk2-devel
>>
>

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

* Re: [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL
  2016-12-16  1:00             ` Kinney, Michael D
@ 2017-01-03 11:35               ` Laszlo Ersek
  0 siblings, 0 replies; 12+ messages in thread
From: Laszlo Ersek @ 2017-01-03 11:35 UTC (permalink / raw)
  To: Kinney, Michael D, Yao, Jiewen, Zeng, Star, edk2-devel-01
  Cc: Tian, Feng, Gao, Liming, Wei, David

On 12/16/16 02:00, Kinney, Michael D wrote:
> Laszlo,
> 
> I agree with Jiewen that this is a compatible change.
> 
> Reviewed-by: Michael Kinney <michael.d.kinney@intel.com>

Thank you both for the reviews, I pushed the series:
7c6075e2546d..32ea56f0a65b.

Laszlo

> 
> Mike
> 
> From: Yao, Jiewen
> Sent: Friday, December 9, 2016 2:58 PM
> To: Laszlo Ersek <lersek@redhat.com>; Zeng, Star <star.zeng@intel.com>; edk2-devel-01 <edk2-devel@ml01.01.org>
> Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Tian, Feng <feng.tian@intel.com>; Gao, Liming <liming.gao@intel.com>; Wei, David <david.wei@intel.com>
> Subject: RE: [edk2] [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL
> 
> Hi Laszlo
> According to your description on compatibility, I do not have concern.
> So far, I do not receive any concern from any other people, so I think it is good.
> 
> Reviewed-by: Jiewen.Yao@intel.com<mailto:Jiewen.Yao@intel.com>
> 
> Thank you
> Yao Jiewen
> 
> From: Laszlo Ersek [mailto:lersek@redhat.com]
> Sent: Sunday, December 4, 2016 2:34 AM
> To: Yao, Jiewen <jiewen.yao@intel.com<mailto:jiewen.yao@intel.com>>; Zeng, Star <star.zeng@intel.com<mailto:star.zeng@intel.com>>; edk2-devel-01 <edk2-devel@ml01.01.org<mailto:edk2-devel@ml01.01.org>>
> Cc: Kinney, Michael D <michael.d.kinney@intel.com<mailto:michael.d.kinney@intel.com>>; Tian, Feng <feng.tian@intel.com<mailto:feng.tian@intel.com>>; Gao, Liming <liming.gao@intel.com<mailto:liming.gao@intel.com>>; Wei, David <david.wei@intel.com<mailto:david.wei@intel.com>>
> Subject: Re: [edk2] [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL
> 
> On 12/03/16 00:56, Yao, Jiewen wrote:
>> HI Laszlo
>>
>> Would you please give me some time, so that I could discuss internal
>> team to see if there is any concern on this API update?
>>
>>
>>
>> The estimation will be 1 work week at most.
>>
>>
>>
>> Usually adding a new API does not need compatibility check, but updating
>> an existing API always need.
> 
> Sure, thanks.
> Laszlo
> 
>> *From:*Laszlo Ersek [mailto:lersek@redhat.com]
>> *Sent:* Friday, December 2, 2016 5:47 PM
>> *To:* Zeng, Star <star.zeng@intel.com<mailto:star.zeng@intel.com>>; Yao, Jiewen
>> <jiewen.yao@intel.com<mailto:jiewen.yao@intel.com>>; edk2-devel-01 <edk2-devel@ml01.01.org<mailto:edk2-devel@ml01.01.org>>
>> *Cc:* Kinney, Michael D <michael.d.kinney@intel.com<mailto:michael.d.kinney@intel.com>>; Tian, Feng
>> <feng.tian@intel.com<mailto:feng.tian@intel.com>>; Gao, Liming <liming.gao@intel.com<mailto:liming.gao@intel.com>>; Wei, David
>> <david.wei@intel.com<mailto:david.wei@intel.com>>
>> *Subject:* Re: [edk2] [PATCH 0/3] MdePkg, MdeModulePkg,
>> Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL
>>
>>
>>
>> On 12/02/16 05:54, Zeng, Star wrote:
>>> On 2016/12/2 9:53, Yao, Jiewen wrote:
>>>> HI Laszlo
>>>> Thank you to raise this long time existing issue. :-)
>>>>
>>>> There is historic reason that we inherit this undocumented API from
>>>> EDK-I to EDKII.
>>>>
>>>> I do not object your update.
>>
>> Thanks!
>>
>>>> I am thinking if it is time to create a new API which can match PI
>>>> specification, and suggest all consumers use the new API.
>>>>
>>>> RETURN_STATUS
>>>> EFIAPI
>>>> S3BootScriptSavePiMemPoll (
>>>>   IN  S3_BOOT_SCRIPT_LIB_WIDTH  Width,
>>>>   IN  UINT64                    Address,
>>>>   IN  VOID                      *Data,
>>>>   IN  VOID                      *DataMask,
>>>>   IN  UINT64                    Delay,
>>>>   );
>>>
>>> If the new API is introduced, the old one could be marked as deprecated
>>> by DISABLE_NEW_DEPRECATED_INTERFACES.
>>
>> That's cool, but until then, can we please accept these patches? :)
>>
>> Thanks!
>> Laszlo
>>
>>> Thanks,
>>> Star
>>>
>>>>
>>>> Thank you
>>>> Yao Jiewen
>>>>
>>>>
>>>>> -----Original Message-----
>>>>> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of
>>>>> Laszlo Ersek
>>>>> Sent: Friday, December 2, 2016 1:56 AM
>>>>> To: edk2-devel-01 <edk2-devel@ml01.01.org <mailto:edk2-devel@ml01.01.org<mailto:edk2-devel@ml01.01.org %3cmailto:edk2-devel@ml01.01.org>>>
>>>>> Cc: Tian, Feng <feng.tian@intel.com <mailto:feng.tian@intel.com<mailto:feng.tian@intel.com %3cmailto:feng.tian@intel.com>>>; Gao, Liming
>>>>> <liming.gao@intel.com <mailto:liming.gao@intel.com<mailto:liming.gao@intel.com %3cmailto:liming.gao@intel.com>>>;
>>>>> Kinney, Michael D <michael.d.kinney@intel.com <mailto:michael.d.kinney@intel.com<mailto:michael.d.kinney@intel.com %3cmailto:michael.d.kinney@intel.com>>>; Zeng, Star
>>>>> <star.zeng@intel.com
> <mailto:star.zeng@intel.com%0b>> <mailto:star.zeng@intel.com>>; Wei, David <david.wei@intel.com
> <mailto:david.wei@intel.com%0b>> <mailto:david.wei@intel.com>>
>>>>> Subject: [edk2] [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg:
>>>>> 64-bit LoopTimes in S3 MEM_POLL
>>>>>
>>>>> While working on S3 boot script related stuff in OVMF, I wanted to see
>>>>> if infinite blocking was possible in the various POLL opcodes. While
>>>>> edk2's implementation of IO_POLL, PCI_CONFIG_POLL and
>>>>> PCI_CONFIG2_POLL
>>>>> follows the PI spec vol5 closely, even internally (using 100ns delay
>>>>> units), the MEM_POLL internals differ -- they are microseconds based.
>>>>>
>>>>> That's not a problem per se (it's just a different internal opcode
>>>>> representation, which is fine); the problem is that the current
>>>>> internals don't conform to the spec: in 32-bit builds, the UINT64 number
>>>>> of 100ns units that the caller intends to wait for is silently
>>>>> truncated, for no good reason. This issue is not hard to fix (we can
>>>>> even keep the microseconds-based internals), so let's fix it.
>>>>>
>>>>> Repo:   https://github.com/lersek/edk2/
>>>>> Branch: mempoll_looptimes_64bit
>>>>>
>>>>> Cc: David Wei <david.wei@intel.com <mailto:david.wei@intel.com<mailto:david.wei@intel.com %3cmailto:david.wei@intel.com>>>
>>>>> Cc: Feng Tian <feng.tian@intel.com <mailto:feng.tian@intel.com<mailto:feng.tian@intel.com %3cmailto:feng.tian@intel.com>>>
>>>>> Cc: Liming Gao <liming.gao@intel.com <mailto:liming.gao@intel.com<mailto:liming.gao@intel.com %3cmailto:liming.gao@intel.com>>>
>>>>> Cc: Mang Guo <mang.guo@intel.com <mailto:mang.guo@intel.com<mailto:mang.guo@intel.com %3cmailto:mang.guo@intel.com>>>
>>>>> Cc: Michael D Kinney <michael.d.kinney@intel.com <mailto:michael.d.kinney@intel.com<mailto:michael.d.kinney@intel.com %3cmailto:michael.d.kinney@intel.com>>>
>>>>> Cc: Star Zeng <star.zeng@intel.com <mailto:star.zeng@intel.com<mailto:star.zeng@intel.com %3cmailto:star.zeng@intel.com>>>
>>>>>
>>>>> Thanks
>>>>> Laszlo
>>>>>
>>>>> Laszlo Ersek (3):
>>>>>   MdePkg, MdeModulePkg: S3BootScriptSaveMemPoll(): accept 64-bit
>>>>>     LoopTimes
>>>>>   MdeModulePkg: S3SaveStateDxe, SmmS3SaveState: save 64-bit
>>>>> LoopTimes
>>>>>   Vlv2TbltDevicePkg/BootScriptSaveDxe: save 64-bit LoopTimes
>>>>>
>>>>>  MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptSave.c  | 2 +-
>>>>>  MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveState.c    | 8
>>>>> ++++----
>>>>>  MdeModulePkg/Universal/Acpi/SmmS3SaveState/SmmS3SaveState.c | 8
>>>>> ++++----
>>>>>  MdePkg/Include/Library/S3BootScriptLib.h                    | 2 +-
>>>>>  MdePkg/Library/BaseS3BootScriptLibNull/BootScriptLib.c      | 2 +-
>>>>>  Vlv2TbltDevicePkg/BootScriptSaveDxe/ScriptSave.c            | 4 ++--
>>>>>  6 files changed, 13 insertions(+), 13 deletions(-)
>>>>>
>>>>> --
>>>>> 2.9.2
>>>>>
>>>>> _______________________________________________
>>>>> edk2-devel mailing list
>>>>> edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org> <mailto:edk2-devel@lists.01.org>
>>>>> https://lists.01.org/mailman/listinfo/edk2-devel
>>>
>>
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
> 



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

end of thread, other threads:[~2017-01-03 11:36 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-12-01 17:55 [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL Laszlo Ersek
2016-12-01 17:55 ` [PATCH 1/3] MdePkg, MdeModulePkg: S3BootScriptSaveMemPoll(): accept 64-bit LoopTimes Laszlo Ersek
2016-12-01 17:55 ` [PATCH 2/3] MdeModulePkg: S3SaveStateDxe, SmmS3SaveState: save " Laszlo Ersek
2016-12-01 17:55 ` [PATCH 3/3] Vlv2TbltDevicePkg/BootScriptSaveDxe: " Laszlo Ersek
2016-12-02  1:53 ` [PATCH 0/3] MdePkg, MdeModulePkg, Vlv2TbltDevicePkg: 64-bit LoopTimes in S3 MEM_POLL Yao, Jiewen
2016-12-02  4:54   ` Zeng, Star
2016-12-02  9:46     ` Laszlo Ersek
2016-12-02 23:56       ` Yao, Jiewen
2016-12-03 18:33         ` Laszlo Ersek
2016-12-09 22:58           ` Yao, Jiewen
2016-12-16  1:00             ` Kinney, Michael D
2017-01-03 11:35               ` Laszlo Ersek

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