Re: [edk2-devel] [PATCH v1 17/19] ArmPlatformPkg: Fix UART divisor warning

2019-11-21 Thread Philippe Mathieu-Daudé

On 8/23/19 12:55 PM, Sami Mujawar wrote:

The VS2017 compiler reports 'warning C4244: '=': conversion
from 'UINT64' to 'UINT32', possible loss of data' for the
calculation of the UART Divisor value.

Fix this warning by adding appropriate typecast and a validation
that ensures that the UART divisor value generated does not exceed
MAX_UINT32.

Signed-off-by: Sami Mujawar 
---
  ArmPlatformPkg/Library/PL011UartLib/PL011UartLib.c | 10 --
  1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/ArmPlatformPkg/Library/PL011UartLib/PL011UartLib.c 
b/ArmPlatformPkg/Library/PL011UartLib/PL011UartLib.c
index 
801990d9551a638c17d560d4226137b8a3ee47bb..2d3c279cce49304959953ec4a34b50e09a7d0045
 100644
--- a/ArmPlatformPkg/Library/PL011UartLib/PL011UartLib.c
+++ b/ArmPlatformPkg/Library/PL011UartLib/PL011UartLib.c
@@ -2,7 +2,7 @@
Serial I/O Port library functions with no library constructor/destructor
  
Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.

-  Copyright (c) 2011 - 2016, ARM Ltd. All rights reserved.
+  Copyright (c) 2011 - 2019, ARM Ltd. All rights reserved.
  
SPDX-License-Identifier: BSD-2-Clause-Patent
  
@@ -78,6 +78,7 @@ PL011UartInitializePort (

UINT32  Integer;
UINT32  Fractional;
UINT32  HardwareFifoDepth;
+  UINT64  DivisorValue;
  
HardwareFifoDepth = (PL011_UARTPID2_VER (MmioRead32 (UartBase + UARTPID2)) \

 > PL011_VER_R1P4) \
@@ -188,7 +189,12 @@ PL011UartInitializePort (
return RETURN_INVALID_PARAMETER;
  }
  
-Divisor = (UartClkInHz * 4) / *BaudRate;

+DivisorValue = (((UINT64)UartClkInHz * 4) / *BaudRate);
+if (DivisorValue > MAX_UINT32) {
+  return RETURN_INVALID_PARAMETER;
+}
+
+Divisor = (UINT32)DivisorValue;
  Integer = Divisor >> FRACTION_PART_SIZE_IN_BITS;
  Fractional = Divisor & FRACTION_PART_MASK;
}



Reviewed-by: Philippe Mathieu-Daude 


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#51067): https://edk2.groups.io/g/devel/message/51067
Mute This Topic: https://groups.io/mt/32999802/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-



Re: [edk2-devel] [PATCH v1 17/19] ArmPlatformPkg: Fix UART divisor warning

2019-11-21 Thread Leif Lindholm
On Fri, Aug 23, 2019 at 11:55:37 +0100, Sami Mujawar wrote:
> The VS2017 compiler reports 'warning C4244: '=': conversion
> from 'UINT64' to 'UINT32', possible loss of data' for the
> calculation of the UART Divisor value.
> 
> Fix this warning by adding appropriate typecast and a validation
> that ensures that the UART divisor value generated does not exceed
> MAX_UINT32.
> 
> Signed-off-by: Sami Mujawar 

Reviewed-by: Leif Lindholm 

Apologies for missing this set.

> ---
>  ArmPlatformPkg/Library/PL011UartLib/PL011UartLib.c | 10 --
>  1 file changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/ArmPlatformPkg/Library/PL011UartLib/PL011UartLib.c 
> b/ArmPlatformPkg/Library/PL011UartLib/PL011UartLib.c
> index 
> 801990d9551a638c17d560d4226137b8a3ee47bb..2d3c279cce49304959953ec4a34b50e09a7d0045
>  100644
> --- a/ArmPlatformPkg/Library/PL011UartLib/PL011UartLib.c
> +++ b/ArmPlatformPkg/Library/PL011UartLib/PL011UartLib.c
> @@ -2,7 +2,7 @@
>Serial I/O Port library functions with no library constructor/destructor
>  
>Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.
> -  Copyright (c) 2011 - 2016, ARM Ltd. All rights reserved.
> +  Copyright (c) 2011 - 2019, ARM Ltd. All rights reserved.
>  
>SPDX-License-Identifier: BSD-2-Clause-Patent
>  
> @@ -78,6 +78,7 @@ PL011UartInitializePort (
>UINT32  Integer;
>UINT32  Fractional;
>UINT32  HardwareFifoDepth;
> +  UINT64  DivisorValue;
>  
>HardwareFifoDepth = (PL011_UARTPID2_VER (MmioRead32 (UartBase + UARTPID2)) 
> \
> > PL011_VER_R1P4) \
> @@ -188,7 +189,12 @@ PL011UartInitializePort (
>return RETURN_INVALID_PARAMETER;
>  }
>  
> -Divisor = (UartClkInHz * 4) / *BaudRate;
> +DivisorValue = (((UINT64)UartClkInHz * 4) / *BaudRate);
> +if (DivisorValue > MAX_UINT32) {
> +  return RETURN_INVALID_PARAMETER;
> +}
> +
> +Divisor = (UINT32)DivisorValue;
>  Integer = Divisor >> FRACTION_PART_SIZE_IN_BITS;
>  Fractional = Divisor & FRACTION_PART_MASK;
>}
> -- 
> 'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)'
> 
> 

-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#51055): https://edk2.groups.io/g/devel/message/51055
Mute This Topic: https://groups.io/mt/32999802/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-



Re: [edk2-devel] [PATCH v1 17/19] ArmPlatformPkg: Fix UART divisor warning

2019-08-23 Thread Alexei Fedorov
Reviewed-by: Alexei Fedorov 


Alexei


From: Sami Mujawar 
Sent: 23 August 2019 11:55
To: devel@edk2.groups.io 
Cc: Sami Mujawar ; Alexei Fedorov 
; ard.biesheu...@linaro.org 
; leif.lindh...@linaro.org 
; Matteo Carlini ; nd 

Subject: [PATCH v1 17/19] ArmPlatformPkg: Fix UART divisor warning

The VS2017 compiler reports 'warning C4244: '=': conversion
from 'UINT64' to 'UINT32', possible loss of data' for the
calculation of the UART Divisor value.

Fix this warning by adding appropriate typecast and a validation
that ensures that the UART divisor value generated does not exceed
MAX_UINT32.

Signed-off-by: Sami Mujawar 
---
 ArmPlatformPkg/Library/PL011UartLib/PL011UartLib.c | 10 --
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/ArmPlatformPkg/Library/PL011UartLib/PL011UartLib.c 
b/ArmPlatformPkg/Library/PL011UartLib/PL011UartLib.c
index 
801990d9551a638c17d560d4226137b8a3ee47bb..2d3c279cce49304959953ec4a34b50e09a7d0045
 100644
--- a/ArmPlatformPkg/Library/PL011UartLib/PL011UartLib.c
+++ b/ArmPlatformPkg/Library/PL011UartLib/PL011UartLib.c
@@ -2,7 +2,7 @@
   Serial I/O Port library functions with no library constructor/destructor

   Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.
-  Copyright (c) 2011 - 2016, ARM Ltd. All rights reserved.
+  Copyright (c) 2011 - 2019, ARM Ltd. All rights reserved.

   SPDX-License-Identifier: BSD-2-Clause-Patent

@@ -78,6 +78,7 @@ PL011UartInitializePort (
   UINT32  Integer;
   UINT32  Fractional;
   UINT32  HardwareFifoDepth;
+  UINT64  DivisorValue;

   HardwareFifoDepth = (PL011_UARTPID2_VER (MmioRead32 (UartBase + UARTPID2)) \
> PL011_VER_R1P4) \
@@ -188,7 +189,12 @@ PL011UartInitializePort (
   return RETURN_INVALID_PARAMETER;
 }

-Divisor = (UartClkInHz * 4) / *BaudRate;
+DivisorValue = (((UINT64)UartClkInHz * 4) / *BaudRate);
+if (DivisorValue > MAX_UINT32) {
+  return RETURN_INVALID_PARAMETER;
+}
+
+Divisor = (UINT32)DivisorValue;
 Integer = Divisor >> FRACTION_PART_SIZE_IN_BITS;
 Fractional = Divisor & FRACTION_PART_MASK;
   }
--
'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)'


IMPORTANT NOTICE: The contents of this email and any attachments are 
confidential and may also be privileged. If you are not the intended recipient, 
please notify the sender immediately and do not disclose the contents to any 
other person, use it for any purpose, or store or copy the information in any 
medium. Thank you.

-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#46284): https://edk2.groups.io/g/devel/message/46284
Mute This Topic: https://groups.io/mt/32999802/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-



[edk2-devel] [PATCH v1 17/19] ArmPlatformPkg: Fix UART divisor warning

2019-08-23 Thread Sami Mujawar
The VS2017 compiler reports 'warning C4244: '=': conversion
from 'UINT64' to 'UINT32', possible loss of data' for the
calculation of the UART Divisor value.

Fix this warning by adding appropriate typecast and a validation
that ensures that the UART divisor value generated does not exceed
MAX_UINT32.

Signed-off-by: Sami Mujawar 
---
 ArmPlatformPkg/Library/PL011UartLib/PL011UartLib.c | 10 --
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/ArmPlatformPkg/Library/PL011UartLib/PL011UartLib.c 
b/ArmPlatformPkg/Library/PL011UartLib/PL011UartLib.c
index 
801990d9551a638c17d560d4226137b8a3ee47bb..2d3c279cce49304959953ec4a34b50e09a7d0045
 100644
--- a/ArmPlatformPkg/Library/PL011UartLib/PL011UartLib.c
+++ b/ArmPlatformPkg/Library/PL011UartLib/PL011UartLib.c
@@ -2,7 +2,7 @@
   Serial I/O Port library functions with no library constructor/destructor
 
   Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.
-  Copyright (c) 2011 - 2016, ARM Ltd. All rights reserved.
+  Copyright (c) 2011 - 2019, ARM Ltd. All rights reserved.
 
   SPDX-License-Identifier: BSD-2-Clause-Patent
 
@@ -78,6 +78,7 @@ PL011UartInitializePort (
   UINT32  Integer;
   UINT32  Fractional;
   UINT32  HardwareFifoDepth;
+  UINT64  DivisorValue;
 
   HardwareFifoDepth = (PL011_UARTPID2_VER (MmioRead32 (UartBase + UARTPID2)) \
> PL011_VER_R1P4) \
@@ -188,7 +189,12 @@ PL011UartInitializePort (
   return RETURN_INVALID_PARAMETER;
 }
 
-Divisor = (UartClkInHz * 4) / *BaudRate;
+DivisorValue = (((UINT64)UartClkInHz * 4) / *BaudRate);
+if (DivisorValue > MAX_UINT32) {
+  return RETURN_INVALID_PARAMETER;
+}
+
+Divisor = (UINT32)DivisorValue;
 Integer = Divisor >> FRACTION_PART_SIZE_IN_BITS;
 Fractional = Divisor & FRACTION_PART_MASK;
   }
-- 
'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)'



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#46279): https://edk2.groups.io/g/devel/message/46279
Mute This Topic: https://groups.io/mt/32999802/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-