All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH] package/libnss: fix build failure due to HW PPC Crypto bug
@ 2019-12-27 16:54 Giulio Benetti
  2019-12-27 17:05 ` Giulio Benetti
  2019-12-31 17:07 ` Thomas Petazzoni
  0 siblings, 2 replies; 15+ messages in thread
From: Giulio Benetti @ 2019-12-27 16:54 UTC (permalink / raw)
  To: buildroot

Add patch to fix how NSS check if we're on a Big Endian machine.

Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
---
Pending here:
https://bugzilla.mozilla.org/show_bug.cgi?id=1606119
---
 ...6119-Fix-PPC-HW-Crypto-build-failure.patch | 37 +++++++++++++++++++
 1 file changed, 37 insertions(+)
 create mode 100644 package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch

diff --git a/package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch b/package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch
new file mode 100644
index 0000000000..0b891b5ebc
--- /dev/null
+++ b/package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch
@@ -0,0 +1,37 @@
+From 09b3776a924736049693a118d5a8d883e8c794ca Mon Sep 17 00:00:00 2001
+From: Giulio Benetti <giulio.benetti@benettiengineering.com>
+Date: Fri, 27 Dec 2019 17:41:04 +0100
+Subject: [PATCH] Bug 1606119 - Fix PPC HW Crypto build failure
+
+Only Big Endian Altivec functions are used, not Little Endian ones, so
+let's change check if USE_PPC_CRYPTO by changing to IS_BIG_ENDIAN
+instead of IS_LITTLE_ENDIAN.
+
+Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
+---
+ nss/lib/freebl/gcm.h | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/nss/lib/freebl/gcm.h b/nss/lib/freebl/gcm.h
+index 571b9ec55..de8b51db8 100644
+--- a/nss/lib/freebl/gcm.h
++++ b/nss/lib/freebl/gcm.h
+@@ -41,12 +41,12 @@
+ #endif
+ 
+ /*
+- * PPC CRYPTO requires at least gcc 5 or clang. The LE check is purely
+- * because it's only been tested on LE. If you're interested in BE,
++ * PPC CRYPTO requires at least gcc 5 or clang. The BE check is purely
++ * because it's only been tested on BE. If you're interested in LE,
+  * please send a patch.
+  */
+ #if (defined(__clang__) || (defined(__GNUC__) && __GNUC__ >= 5)) && \
+-    defined(IS_LITTLE_ENDIAN)
++    defined(IS_BIG_ENDIAN)
+ #define USE_PPC_CRYPTO
+ #endif
+ 
+-- 
+2.20.1
+
-- 
2.20.1

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

* [Buildroot] [PATCH] package/libnss: fix build failure due to HW PPC Crypto bug
  2019-12-27 16:54 [Buildroot] [PATCH] package/libnss: fix build failure due to HW PPC Crypto bug Giulio Benetti
@ 2019-12-27 17:05 ` Giulio Benetti
  2019-12-31 17:07 ` Thomas Petazzoni
  1 sibling, 0 replies; 15+ messages in thread
From: Giulio Benetti @ 2019-12-27 17:05 UTC (permalink / raw)
  To: buildroot

On 12/27/19 5:54 PM, Giulio Benetti wrote:
> Add patch to fix how NSS check if we're on a Big Endian machine.

Fixes:
http://autobuild.buildroot.net/results/e42/e42005d1bb70b3f2741eb77242b2fd8dbf2a55d6/

> Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
> ---
> Pending here:
> https://bugzilla.mozilla.org/show_bug.cgi?id=1606119
> ---
>   ...6119-Fix-PPC-HW-Crypto-build-failure.patch | 37 +++++++++++++++++++
>   1 file changed, 37 insertions(+)
>   create mode 100644 package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch
> 
> diff --git a/package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch b/package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch
> new file mode 100644
> index 0000000000..0b891b5ebc
> --- /dev/null
> +++ b/package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch
> @@ -0,0 +1,37 @@
> +From 09b3776a924736049693a118d5a8d883e8c794ca Mon Sep 17 00:00:00 2001
> +From: Giulio Benetti <giulio.benetti@benettiengineering.com>
> +Date: Fri, 27 Dec 2019 17:41:04 +0100
> +Subject: [PATCH] Bug 1606119 - Fix PPC HW Crypto build failure
> +
> +Only Big Endian Altivec functions are used, not Little Endian ones, so
> +let's change check if USE_PPC_CRYPTO by changing to IS_BIG_ENDIAN
> +instead of IS_LITTLE_ENDIAN.
> +
> +Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
> +---
> + nss/lib/freebl/gcm.h | 6 +++---
> + 1 file changed, 3 insertions(+), 3 deletions(-)
> +
> +diff --git a/nss/lib/freebl/gcm.h b/nss/lib/freebl/gcm.h
> +index 571b9ec55..de8b51db8 100644
> +--- a/nss/lib/freebl/gcm.h
> ++++ b/nss/lib/freebl/gcm.h
> +@@ -41,12 +41,12 @@
> + #endif
> +
> + /*
> +- * PPC CRYPTO requires at least gcc 5 or clang. The LE check is purely
> +- * because it's only been tested on LE. If you're interested in BE,
> ++ * PPC CRYPTO requires at least gcc 5 or clang. The BE check is purely
> ++ * because it's only been tested on BE. If you're interested in LE,
> +  * please send a patch.
> +  */
> + #if (defined(__clang__) || (defined(__GNUC__) && __GNUC__ >= 5)) && \
> +-    defined(IS_LITTLE_ENDIAN)
> ++    defined(IS_BIG_ENDIAN)
> + #define USE_PPC_CRYPTO
> + #endif
> +
> +--
> +2.20.1
> +
> 

-- 
Giulio Benetti
Benetti Engineering sas

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

* [Buildroot] [PATCH] package/libnss: fix build failure due to HW PPC Crypto bug
  2019-12-27 16:54 [Buildroot] [PATCH] package/libnss: fix build failure due to HW PPC Crypto bug Giulio Benetti
  2019-12-27 17:05 ` Giulio Benetti
@ 2019-12-31 17:07 ` Thomas Petazzoni
  2019-12-31 21:24   ` Giulio Benetti
  1 sibling, 1 reply; 15+ messages in thread
From: Thomas Petazzoni @ 2019-12-31 17:07 UTC (permalink / raw)
  To: buildroot

On Fri, 27 Dec 2019 17:54:27 +0100
Giulio Benetti <giulio.benetti@benettiengineering.com> wrote:

> diff --git a/package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch b/package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch
> new file mode 100644
> index 0000000000..0b891b5ebc
> --- /dev/null
> +++ b/package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch
> @@ -0,0 +1,37 @@
> +From 09b3776a924736049693a118d5a8d883e8c794ca Mon Sep 17 00:00:00 2001
> +From: Giulio Benetti <giulio.benetti@benettiengineering.com>
> +Date: Fri, 27 Dec 2019 17:41:04 +0100
> +Subject: [PATCH] Bug 1606119 - Fix PPC HW Crypto build failure
> +
> +Only Big Endian Altivec functions are used, not Little Endian ones, so
> +let's change check if USE_PPC_CRYPTO by changing to IS_BIG_ENDIAN
> +instead of IS_LITTLE_ENDIAN.
> +
> +Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>

I don't understand the reasoning here. From a quick look, the undefined
symbols reported in the build log come from the file
./nss/lib/freebl/gcm-ppc.c.

This file is included in the build in nss/lib/freebl/Makefile if
CPU_ARCH=ppc.

However CPU_ARCH=ppc is only set in nss/coreconf/Linux.mk as follows:

ifeq (,$(filter-out ppc64 ppc64le,$(OS_TEST)))
        CPU_ARCH        = ppc
ifeq ($(USE_64),1)
        ARCHFLAG        = -m64
endif

In libnss.mk, we pass OS_TEST=$(LIBNSS_ARCH), which basically is the
value of $(BR2_ARCH), which is powerpc64 or powerpc64le in Buildroot.

So, regardless of whether we are big endian PPC64 or little endian
PPC64, the gcm-ppc.c file will not be included in the build.

Am I missing something ? Could you explain a bit better how you came to
the conclusion you have in this patch ?

Thanks!


Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

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

* [Buildroot] [PATCH] package/libnss: fix build failure due to HW PPC Crypto bug
  2019-12-31 17:07 ` Thomas Petazzoni
@ 2019-12-31 21:24   ` Giulio Benetti
  2019-12-31 22:49     ` Vincent Fazio
  0 siblings, 1 reply; 15+ messages in thread
From: Giulio Benetti @ 2019-12-31 21:24 UTC (permalink / raw)
  To: buildroot

Hi Thomas,

On 12/31/19 6:07 PM, Thomas Petazzoni wrote:
> On Fri, 27 Dec 2019 17:54:27 +0100
> Giulio Benetti <giulio.benetti@benettiengineering.com> wrote:
> 
>> diff --git a/package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch b/package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch
>> new file mode 100644
>> index 0000000000..0b891b5ebc
>> --- /dev/null
>> +++ b/package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch
>> @@ -0,0 +1,37 @@
>> +From 09b3776a924736049693a118d5a8d883e8c794ca Mon Sep 17 00:00:00 2001
>> +From: Giulio Benetti <giulio.benetti@benettiengineering.com>
>> +Date: Fri, 27 Dec 2019 17:41:04 +0100
>> +Subject: [PATCH] Bug 1606119 - Fix PPC HW Crypto build failure
>> +
>> +Only Big Endian Altivec functions are used, not Little Endian ones, so
>> +let's change check if USE_PPC_CRYPTO by changing to IS_BIG_ENDIAN
>> +instead of IS_LITTLE_ENDIAN.
>> +
>> +Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
> 
> I don't understand the reasoning here. From a quick look, the undefined
> symbols reported in the build log come from the file
> ./nss/lib/freebl/gcm-ppc.c.
> 
> This file is included in the build in nss/lib/freebl/Makefile if
> CPU_ARCH=ppc.
> 
> However CPU_ARCH=ppc is only set in nss/coreconf/Linux.mk as follows:
> 
> ifeq (,$(filter-out ppc64 ppc64le,$(OS_TEST)))
>          CPU_ARCH        = ppc
> ifeq ($(USE_64),1)
>          ARCHFLAG        = -m64
> endif
> 
> In libnss.mk, we pass OS_TEST=$(LIBNSS_ARCH), which basically is the
> value of $(BR2_ARCH), which is powerpc64 or powerpc64le in Buildroot.
> 
> So, regardless of whether we are big endian PPC64 or little endian
> PPC64, the gcm-ppc.c file will not be included in the build.
> 
> Am I missing something ? Could you explain a bit better how you came to
> the conclusion you have in this patch ?

The point is that gcm-ppc.c gets compiled, but inside it there's an #if 
defined(USE_PPC_CRYPTO) on top of the file, that is defined in gsm.h 
only #if __powerpc64__ and LITTLE_ENDIAN. But inside gcm-ppc.c they use 
_be() Altivec functions. Basically they have inverted LITTLE_ENDIAN with 
BIB_ENDIAN, since they use Big Endian only Altivec functions in 
gcm-ppc.c so the only wrong piece of code is in gcm.h, where 
USE_PPC_CRYPTO is defined.

Need only to invert the condition by which USE_PPC_CRYPTO is defined: 
BIG_ENDIAN instead of LITTLE_ENDIAN.

Best regards
-- 
Giulio Benetti
Benetti Engineering sas

> 
> Thanks!
> 
> 
> Thomas
> 

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

* [Buildroot] [PATCH] package/libnss: fix build failure due to HW PPC Crypto bug
  2019-12-31 21:24   ` Giulio Benetti
@ 2019-12-31 22:49     ` Vincent Fazio
  2019-12-31 23:31       ` Vincent Fazio
  0 siblings, 1 reply; 15+ messages in thread
From: Vincent Fazio @ 2019-12-31 22:49 UTC (permalink / raw)
  To: buildroot

Gang,

Just going to toss my $.02 in...

On 12/31/19 3:24 PM, Giulio Benetti wrote:
> Hi Thomas,
>
> On 12/31/19 6:07 PM, Thomas Petazzoni wrote:
>> On Fri, 27 Dec 2019 17:54:27 +0100
>> Giulio Benetti <giulio.benetti@benettiengineering.com> wrote:
>>
>>> diff --git 
>>> a/package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch 
>>> b/package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch
>>> new file mode 100644
>>> index 0000000000..0b891b5ebc
>>> --- /dev/null
>>> +++ 
>>> b/package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch
>>> @@ -0,0 +1,37 @@
>>> +From 09b3776a924736049693a118d5a8d883e8c794ca Mon Sep 17 00:00:00 2001
>>> +From: Giulio Benetti <giulio.benetti@benettiengineering.com>
>>> +Date: Fri, 27 Dec 2019 17:41:04 +0100
>>> +Subject: [PATCH] Bug 1606119 - Fix PPC HW Crypto build failure
>>> +
>>> +Only Big Endian Altivec functions are used, not Little Endian ones, so
>>> +let's change check if USE_PPC_CRYPTO by changing to IS_BIG_ENDIAN
>>> +instead of IS_LITTLE_ENDIAN.
>>> +
>>> +Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
>>
>> I don't understand the reasoning here. From a quick look, the undefined
>> symbols reported in the build log come from the file
>> ./nss/lib/freebl/gcm-ppc.c.
>>
>> This file is included in the build in nss/lib/freebl/Makefile if
>> CPU_ARCH=ppc.
>>
>> However CPU_ARCH=ppc is only set in nss/coreconf/Linux.mk as follows:
>>
>> ifeq (,$(filter-out ppc64 ppc64le,$(OS_TEST)))
>> ???????? CPU_ARCH??????? = ppc
>> ifeq ($(USE_64),1)
>> ???????? ARCHFLAG??????? = -m64
>> endif
>>
>> In libnss.mk, we pass OS_TEST=$(LIBNSS_ARCH), which basically is the
>> value of $(BR2_ARCH), which is powerpc64 or powerpc64le in Buildroot.
>>
>> So, regardless of whether we are big endian PPC64 or little endian
>> PPC64, the gcm-ppc.c file will not be included in the build.
>>
>> Am I missing something ? Could you explain a bit better how you came to
>> the conclusion you have in this patch ?
>
> The point is that gcm-ppc.c gets compiled, but inside it there's an 
> #if defined(USE_PPC_CRYPTO) on top of the file, that is defined in 
> gsm.h only #if __powerpc64__ and LITTLE_ENDIAN. But inside gcm-ppc.c 
> they use _be() Altivec functions. Basically they have inverted 
> LITTLE_ENDIAN with BIB_ENDIAN, since they use Big Endian only Altivec 
> functions in gcm-ppc.c so the only wrong piece of code is in gcm.h, 
> where USE_PPC_CRYPTO is defined.
>
I assume you mean this in gcm_HashMult_hw:

 ??????? /* clang needs the following cast away from const; maybe a bug 
in 7.0.0 */
 ??????? v = (vec_u64)vec_xl_be(0, (unsigned char *)buf);

It should be fine to call endian specific functions if you know how the 
data is stored.

> Need only to invert the condition by which USE_PPC_CRYPTO is defined: 
> BIG_ENDIAN instead of LITTLE_ENDIAN.
>
> Best regards

Based on the below commit, it was tested on a POWER8, presumably in LE 
mode, so I'd be hesitant to switch any endian checks:
https://hg.mozilla.org/projects/nss/rev/3d7e509d6d20ecd607a28fa6ce42e4ffd9c51443

The bigger issue may be that 'vec_xl_be' wasn't introduced until GCC 8 
and the toolchain used in the failed build is GCC 7, so that function is 
not available in altivec.h:
https://github.com/gcc-mirror/gcc/commit/f7b0548e5eba54b637977e3df4d4daf0cabe474d

So if we stick with nss-3.48, the package should likely depend on 
BR2_TOOLCHAIN_GCC_AT_LEAST_8.

-- 
Vincent Fazio
Embedded Software Engineer - Linux
Extreme Engineering Solutions, Inc
http://www.xes-inc.com

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

* [Buildroot] [PATCH] package/libnss: fix build failure due to HW PPC Crypto bug
  2019-12-31 22:49     ` Vincent Fazio
@ 2019-12-31 23:31       ` Vincent Fazio
  2019-12-31 23:44         ` Giulio Benetti
  0 siblings, 1 reply; 15+ messages in thread
From: Vincent Fazio @ 2019-12-31 23:31 UTC (permalink / raw)
  To: buildroot


On 12/31/19 4:49 PM, Vincent Fazio wrote:
> Gang,
>
> Just going to toss my $.02 in...
>
> On 12/31/19 3:24 PM, Giulio Benetti wrote:
>> Hi Thomas,
>>
>> On 12/31/19 6:07 PM, Thomas Petazzoni wrote:
>>> On Fri, 27 Dec 2019 17:54:27 +0100
>>> Giulio Benetti <giulio.benetti@benettiengineering.com> wrote:
>>>
>>>> diff --git 
>>>> a/package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch 
>>>> b/package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch 
>>>>
>>>> new file mode 100644
>>>> index 0000000000..0b891b5ebc
>>>> --- /dev/null
>>>> +++ 
>>>> b/package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch 
>>>>
>>>> @@ -0,0 +1,37 @@
>>>> +From 09b3776a924736049693a118d5a8d883e8c794ca Mon Sep 17 00:00:00 
>>>> 2001
>>>> +From: Giulio Benetti <giulio.benetti@benettiengineering.com>
>>>> +Date: Fri, 27 Dec 2019 17:41:04 +0100
>>>> +Subject: [PATCH] Bug 1606119 - Fix PPC HW Crypto build failure
>>>> +
>>>> +Only Big Endian Altivec functions are used, not Little Endian 
>>>> ones, so
>>>> +let's change check if USE_PPC_CRYPTO by changing to IS_BIG_ENDIAN
>>>> +instead of IS_LITTLE_ENDIAN.
>>>> +
>>>> +Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
>>>
>>> I don't understand the reasoning here. From a quick look, the undefined
>>> symbols reported in the build log come from the file
>>> ./nss/lib/freebl/gcm-ppc.c.
>>>
>>> This file is included in the build in nss/lib/freebl/Makefile if
>>> CPU_ARCH=ppc.
>>>
>>> However CPU_ARCH=ppc is only set in nss/coreconf/Linux.mk as follows:
>>>
>>> ifeq (,$(filter-out ppc64 ppc64le,$(OS_TEST)))
>>> ???????? CPU_ARCH??????? = ppc
>>> ifeq ($(USE_64),1)
>>> ???????? ARCHFLAG??????? = -m64
>>> endif
>>>
>>> In libnss.mk, we pass OS_TEST=$(LIBNSS_ARCH), which basically is the
>>> value of $(BR2_ARCH), which is powerpc64 or powerpc64le in Buildroot.
>>>
>>> So, regardless of whether we are big endian PPC64 or little endian
>>> PPC64, the gcm-ppc.c file will not be included in the build.
>>>
>>> Am I missing something ? Could you explain a bit better how you came to
>>> the conclusion you have in this patch ?
>>
>> The point is that gcm-ppc.c gets compiled, but inside it there's an 
>> #if defined(USE_PPC_CRYPTO) on top of the file, that is defined in 
>> gsm.h only #if __powerpc64__ and LITTLE_ENDIAN. But inside gcm-ppc.c 
>> they use _be() Altivec functions. Basically they have inverted 
>> LITTLE_ENDIAN with BIB_ENDIAN, since they use Big Endian only Altivec 
>> functions in gcm-ppc.c so the only wrong piece of code is in gcm.h, 
>> where USE_PPC_CRYPTO is defined.
>>
> I assume you mean this in gcm_HashMult_hw:
>
> ??????? /* clang needs the following cast away from const; maybe a bug 
> in 7.0.0 */
> ??????? v = (vec_u64)vec_xl_be(0, (unsigned char *)buf);
>
> It should be fine to call endian specific functions if you know how 
> the data is stored.
>
>> Need only to invert the condition by which USE_PPC_CRYPTO is defined: 
>> BIG_ENDIAN instead of LITTLE_ENDIAN.
>>
>> Best regards
>
> Based on the below commit, it was tested on a POWER8, presumably in LE 
> mode, so I'd be hesitant to switch any endian checks:
> https://hg.mozilla.org/projects/nss/rev/3d7e509d6d20ecd607a28fa6ce42e4ffd9c51443 
>
>
> The bigger issue may be that 'vec_xl_be' wasn't introduced until GCC 8 
> and the toolchain used in the failed build is GCC 7, so that function 
> is not available in altivec.h:
> https://github.com/gcc-mirror/gcc/commit/f7b0548e5eba54b637977e3df4d4daf0cabe474d 
>
>
> So if we stick with nss-3.48, the package should likely depend on 
> BR2_TOOLCHAIN_GCC_AT_LEAST_8.
Or don't utilize PPC hardware accelerated instructions by undefining 
USE_PPC_CRYPTO... which is probably the saner option :-). This would 
give the semblance that the compile worked as expected since the hashing 
function will now be available, but Thomas' concern re CPU_ARCH and the 
future inclusion of ppc specific source is still valid.


-- 
Vincent Fazio
Embedded Software Engineer - Linux
Extreme Engineering Solutions, Inc
http://www.xes-inc.com

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

* [Buildroot] [PATCH] package/libnss: fix build failure due to HW PPC Crypto bug
  2019-12-31 23:31       ` Vincent Fazio
@ 2019-12-31 23:44         ` Giulio Benetti
  2020-01-01  8:47           ` Yann E. MORIN
  2020-01-01 15:32           ` Thomas Petazzoni
  0 siblings, 2 replies; 15+ messages in thread
From: Giulio Benetti @ 2019-12-31 23:44 UTC (permalink / raw)
  To: buildroot

Hi Vincent,


On 1/1/20 12:31 AM, Vincent Fazio wrote:
> 
> On 12/31/19 4:49 PM, Vincent Fazio wrote:
>> Gang,
>>
>> Just going to toss my $.02 in...
>>
>> On 12/31/19 3:24 PM, Giulio Benetti wrote:
>>> Hi Thomas,
>>>
>>> On 12/31/19 6:07 PM, Thomas Petazzoni wrote:
>>>> On Fri, 27 Dec 2019 17:54:27 +0100
>>>> Giulio Benetti <giulio.benetti@benettiengineering.com> wrote:
>>>>
>>>>> diff --git
>>>>> a/package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch
>>>>> b/package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch
>>>>>
>>>>> new file mode 100644
>>>>> index 0000000000..0b891b5ebc
>>>>> --- /dev/null
>>>>> +++
>>>>> b/package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch
>>>>>
>>>>> @@ -0,0 +1,37 @@
>>>>> +From 09b3776a924736049693a118d5a8d883e8c794ca Mon Sep 17 00:00:00
>>>>> 2001
>>>>> +From: Giulio Benetti <giulio.benetti@benettiengineering.com>
>>>>> +Date: Fri, 27 Dec 2019 17:41:04 +0100
>>>>> +Subject: [PATCH] Bug 1606119 - Fix PPC HW Crypto build failure
>>>>> +
>>>>> +Only Big Endian Altivec functions are used, not Little Endian
>>>>> ones, so
>>>>> +let's change check if USE_PPC_CRYPTO by changing to IS_BIG_ENDIAN
>>>>> +instead of IS_LITTLE_ENDIAN.
>>>>> +
>>>>> +Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
>>>>
>>>> I don't understand the reasoning here. From a quick look, the undefined
>>>> symbols reported in the build log come from the file
>>>> ./nss/lib/freebl/gcm-ppc.c.
>>>>
>>>> This file is included in the build in nss/lib/freebl/Makefile if
>>>> CPU_ARCH=ppc.
>>>>
>>>> However CPU_ARCH=ppc is only set in nss/coreconf/Linux.mk as follows:
>>>>
>>>> ifeq (,$(filter-out ppc64 ppc64le,$(OS_TEST)))
>>>>  ???????? CPU_ARCH??????? = ppc
>>>> ifeq ($(USE_64),1)
>>>>  ???????? ARCHFLAG??????? = -m64
>>>> endif
>>>>
>>>> In libnss.mk, we pass OS_TEST=$(LIBNSS_ARCH), which basically is the
>>>> value of $(BR2_ARCH), which is powerpc64 or powerpc64le in Buildroot.
>>>>
>>>> So, regardless of whether we are big endian PPC64 or little endian
>>>> PPC64, the gcm-ppc.c file will not be included in the build.
>>>>
>>>> Am I missing something ? Could you explain a bit better how you came to
>>>> the conclusion you have in this patch ?
>>>
>>> The point is that gcm-ppc.c gets compiled, but inside it there's an
>>> #if defined(USE_PPC_CRYPTO) on top of the file, that is defined in
>>> gsm.h only #if __powerpc64__ and LITTLE_ENDIAN. But inside gcm-ppc.c
>>> they use _be() Altivec functions. Basically they have inverted
>>> LITTLE_ENDIAN with BIB_ENDIAN, since they use Big Endian only Altivec
>>> functions in gcm-ppc.c so the only wrong piece of code is in gcm.h,
>>> where USE_PPC_CRYPTO is defined.
>>>
>> I assume you mean this in gcm_HashMult_hw:

Yes

>>
>>  ??????? /* clang needs the following cast away from const; maybe a bug
>> in 7.0.0 */
>>  ??????? v = (vec_u64)vec_xl_be(0, (unsigned char *)buf);
>>
>> It should be fine to call endian specific functions if you know how
>> the data is stored.

I've completely understood vec_xl_be() wrong.

>>
>>> Need only to invert the condition by which USE_PPC_CRYPTO is defined:
>>> BIG_ENDIAN instead of LITTLE_ENDIAN.
>>>
>>> Best regards
>>
>> Based on the below commit, it was tested on a POWER8, presumably in LE
>> mode, so I'd be hesitant to switch any endian checks:
>> https://hg.mozilla.org/projects/nss/rev/3d7e509d6d20ecd607a28fa6ce42e4ffd9c51443

Right.

>>
>>
>> The bigger issue may be that 'vec_xl_be' wasn't introduced until GCC 8
>> and the toolchain used in the failed build is GCC 7, so that function
>> is not available in altivec.h:
>> https://github.com/gcc-mirror/gcc/commit/f7b0548e5eba54b637977e3df4d4daf0cabe474d

Ok

>>
>>
>> So if we stick with nss-3.48, the package should likely depend on
>> BR2_TOOLCHAIN_GCC_AT_LEAST_8.

This ^^^ is too restrictive, but...

> Or don't utilize PPC hardware accelerated instructions by undefining
> USE_PPC_CRYPTO... which is probably the saner option :-). This would
> give the semblance that the compile worked as expected since the hashing
> function will now be available, but Thomas' concern re CPU_ARCH and the
> future inclusion of ppc specific source is still valid.

...this is a good idea. So with gcc version < 8.x let's disable 
USE_PPC_CRYPTO and with gcc version >= 8.x let's enable it only if 
LITTLE_ENDIAN. So at this point I would change my upstream patch to do 
that in NSS, since there's already a gcc version check but only against 
version 5.x(>=) that instead needs to be >= 8.x.

Thanks for all the explanations!

Best regards
and
happy new year! For me at least :-)
-- 
Giulio Benetti
Benetti Engineering sas

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

* [Buildroot] [PATCH] package/libnss: fix build failure due to HW PPC Crypto bug
  2019-12-31 23:44         ` Giulio Benetti
@ 2020-01-01  8:47           ` Yann E. MORIN
  2020-01-01 15:32           ` Thomas Petazzoni
  1 sibling, 0 replies; 15+ messages in thread
From: Yann E. MORIN @ 2020-01-01  8:47 UTC (permalink / raw)
  To: buildroot

Giulio, Vincent, All,

On 2020-01-01 00:44 +0100, Giulio Benetti spake thusly:
> On 1/1/20 12:31 AM, Vincent Fazio wrote:
> >On 12/31/19 4:49 PM, Vincent Fazio wrote:
[--SNIP--]
> >> ??????? /* clang needs the following cast away from const; maybe a bug
> >>in 7.0.0 */
> >> ??????? v = (vec_u64)vec_xl_be(0, (unsigned char *)buf);
> >>
> >>It should be fine to call endian specific functions if you know how
> >>the data is stored.
[--SNIP--]
> >>Based on the below commit, it was tested on a POWER8, presumably in LE
> >>mode, so I'd be hesitant to switch any endian checks:
> >>https://hg.mozilla.org/projects/nss/rev/3d7e509d6d20ecd607a28fa6ce42e4ffd9c51443
[--SNIP--]
> >>The bigger issue may be that 'vec_xl_be' wasn't introduced until GCC 8
> >>and the toolchain used in the failed build is GCC 7, so that function
> >>is not available in altivec.h:
> >>https://github.com/gcc-mirror/gcc/commit/f7b0548e5eba54b637977e3df4d4daf0cabe474d

Thanks Vincent for digging all this info, very informative. :-)

> ...this is a good idea. So with gcc version < 8.x let's disable
> USE_PPC_CRYPTO and with gcc version >= 8.x let's enable it only if
> LITTLE_ENDIAN. So at this point I would change my upstream patch to do that
> in NSS, since there's already a gcc version check but only against version
> 5.x(>=) that instead needs to be >= 8.x.

Yes, that sounds like a good plan. I've marked this patch as changes
requested in ptachwork in the meantime.

Thanks! :-)

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

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

* [Buildroot] [PATCH] package/libnss: fix build failure due to HW PPC Crypto bug
  2019-12-31 23:44         ` Giulio Benetti
  2020-01-01  8:47           ` Yann E. MORIN
@ 2020-01-01 15:32           ` Thomas Petazzoni
  2020-01-01 16:51             ` Giulio Benetti
  2020-01-01 16:58             ` [Buildroot] [PATCH v2] " Giulio Benetti
  1 sibling, 2 replies; 15+ messages in thread
From: Thomas Petazzoni @ 2020-01-01 15:32 UTC (permalink / raw)
  To: buildroot

On Wed, 1 Jan 2020 00:44:09 +0100
Giulio Benetti <giulio.benetti@benettiengineering.com> wrote:

> >> So if we stick with nss-3.48, the package should likely depend on
> >> BR2_TOOLCHAIN_GCC_AT_LEAST_8.  
> 
> This ^^^ is too restrictive, but...
> 
> > Or don't utilize PPC hardware accelerated instructions by undefining
> > USE_PPC_CRYPTO... which is probably the saner option :-). This would
> > give the semblance that the compile worked as expected since the hashing
> > function will now be available, but Thomas' concern re CPU_ARCH and the
> > future inclusion of ppc specific source is still valid.  
> 
> ...this is a good idea. So with gcc version < 8.x let's disable 
> USE_PPC_CRYPTO and with gcc version >= 8.x let's enable it only if 
> LITTLE_ENDIAN. So at this point I would change my upstream patch to do 
> that in NSS, since there's already a gcc version check but only against 
> version 5.x(>=) that instead needs to be >= 8.x.

As I said in my previous e-mail, I also don't see how it can work with
the current OS_TEST value that we pass in libnss.mk, which is never set
to ppc64 or ppc64le as the libnss build system expects.

Best regards,

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

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

* [Buildroot] [PATCH] package/libnss: fix build failure due to HW PPC Crypto bug
  2020-01-01 15:32           ` Thomas Petazzoni
@ 2020-01-01 16:51             ` Giulio Benetti
  2020-01-01 16:58             ` [Buildroot] [PATCH v2] " Giulio Benetti
  1 sibling, 0 replies; 15+ messages in thread
From: Giulio Benetti @ 2020-01-01 16:51 UTC (permalink / raw)
  To: buildroot

Hi Thomas,

On 1/1/20 4:32 PM, Thomas Petazzoni wrote:
> On Wed, 1 Jan 2020 00:44:09 +0100
> Giulio Benetti <giulio.benetti@benettiengineering.com> wrote:
> 
>>>> So if we stick with nss-3.48, the package should likely depend on
>>>> BR2_TOOLCHAIN_GCC_AT_LEAST_8.
>>
>> This ^^^ is too restrictive, but...
>>
>>> Or don't utilize PPC hardware accelerated instructions by undefining
>>> USE_PPC_CRYPTO... which is probably the saner option :-). This would
>>> give the semblance that the compile worked as expected since the hashing
>>> function will now be available, but Thomas' concern re CPU_ARCH and the
>>> future inclusion of ppc specific source is still valid.
>>
>> ...this is a good idea. So with gcc version < 8.x let's disable
>> USE_PPC_CRYPTO and with gcc version >= 8.x let's enable it only if
>> LITTLE_ENDIAN. So at this point I would change my upstream patch to do
>> that in NSS, since there's already a gcc version check but only against
>> version 5.x(>=) that instead needs to be >= 8.x.
> 
> As I said in my previous e-mail, I also don't see how it can work with
> the current OS_TEST value that we pass in libnss.mk, which is never set
> to ppc64 or ppc64le as the libnss build system expects.

You're right, the problem is that it doesn't compile gcm-ppc.c because 
Buildroot sets OS_TEST to powerpc64le in this case but libnss expects 
ppc64le, so I'm testing a patch where I remap:
BR2_powerpc => ppc
BR2_powerpc64 => ppc64
BR2_powerpc64le => ppc64le

And I'm going to add a patch too to modify minimum gcc version required 
from 5.x to 8.x, because as Vincent pointed vec_xst_be() has been 
introduced only in version 8.x.
This way we avoid BR2_TOOLCHAIN_GCC_AT_LEAST_8 and later I send it upstream.

Thank you and
Best regards
-- 
Giulio Benetti
Benetti Engineering sas

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

* [Buildroot] [PATCH v2] package/libnss: fix build failure due to HW PPC Crypto bug
  2020-01-01 15:32           ` Thomas Petazzoni
  2020-01-01 16:51             ` Giulio Benetti
@ 2020-01-01 16:58             ` Giulio Benetti
  2020-01-01 18:41               ` Yann E. MORIN
  2020-01-02  9:06               ` Thomas Petazzoni
  1 sibling, 2 replies; 15+ messages in thread
From: Giulio Benetti @ 2020-01-01 16:58 UTC (permalink / raw)
  To: buildroot

libnss expects OS_TEST to be set to ppc or ppc64 or ppc64le instead of
powerpc, powerpc64, powerpc64le. At the moment gcm.h header checks if
__powerpc64__ is defined, but Makefile expects OS_TEST to be set to
ppc64 or ppc64le to build gcm-ppc.c. This way we end with having gcm
prototypes defined, but without implementation compiled. So remap
OS_TEST to what libnss expects depending on BR2_powerpc* enabled. This
way Makefile will build gcm-ppc.c too, that contains gcm-ppc function
implementations using Altivec. But add also a patch that modify
minimum gcc version required for using Altivec functions from 5.x to 8.x
since some Altivec intrinsics have been instroduced only in 8.x(i.e.
vec_xst_be()).

Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
---
V1 -> V2:
* changed completely approach
Pending upstream:
https://bugzilla.mozilla.org/show_bug.cgi?id=1606119
---
 ...6119-Fix-PPC-HW-Crypto-build-failure.patch | 35 +++++++++++++++++++
 package/libnss/libnss.mk                      |  6 ++++
 2 files changed, 41 insertions(+)
 create mode 100644 package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch

diff --git a/package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch b/package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch
new file mode 100644
index 0000000000..2439eb1625
--- /dev/null
+++ b/package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch
@@ -0,0 +1,35 @@
+From ebf185f8e48b5aec622dc949cef1b19b0a7669ef Mon Sep 17 00:00:00 2001
+From: Giulio Benetti <giulio.benetti@benettiengineering.com>
+Date: Wed, 1 Jan 2020 12:54:45 +0100
+Subject: [PATCH] Bug 1606119 - Fix PPC HW Crypto build failure
+
+All Altivec *_be() functions are supported from gcc version 8.x not 5.x
+so modify gcc version check that at the moment cause build failure due
+to missing Altivec *_be() functions.
+
+Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
+---
+ nss/lib/freebl/gcm.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/nss/lib/freebl/gcm.h b/nss/lib/freebl/gcm.h
+index 571b9ec55..aa4dee824 100644
+--- a/nss/lib/freebl/gcm.h
++++ b/nss/lib/freebl/gcm.h
+@@ -41,11 +41,11 @@
+ #endif
+ 
+ /*
+- * PPC CRYPTO requires at least gcc 5 or clang. The LE check is purely
++ * PPC CRYPTO requires at least gcc 8 or clang. The LE check is purely
+  * because it's only been tested on LE. If you're interested in BE,
+  * please send a patch.
+  */
+-#if (defined(__clang__) || (defined(__GNUC__) && __GNUC__ >= 5)) && \
++#if (defined(__clang__) || (defined(__GNUC__) && __GNUC__ >= 8)) && \
+     defined(IS_LITTLE_ENDIAN)
+ #define USE_PPC_CRYPTO
+ #endif
+-- 
+2.20.1
+
diff --git a/package/libnss/libnss.mk b/package/libnss/libnss.mk
index 9349276a90..23dfdb11e4 100644
--- a/package/libnss/libnss.mk
+++ b/package/libnss/libnss.mk
@@ -39,6 +39,12 @@ endif
 
 ifeq ($(BR2_aarch64_be),y)
 LIBNSS_ARCH = aarch64
+else ifeq ($(BR2_powerpc),y)
+LIBNSS_ARCH = ppc
+else ifeq ($(BR2_powerpc64),y)
+LIBNSS_ARCH = ppc64
+else ifeq ($(BR2_powerpc64le),y)
+LIBNSS_ARCH = ppc64le
 else
 LIBNSS_ARCH = $(ARCH)
 endif
-- 
2.20.1

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

* [Buildroot] [PATCH v2] package/libnss: fix build failure due to HW PPC Crypto bug
  2020-01-01 16:58             ` [Buildroot] [PATCH v2] " Giulio Benetti
@ 2020-01-01 18:41               ` Yann E. MORIN
  2020-01-02  9:06               ` Thomas Petazzoni
  1 sibling, 0 replies; 15+ messages in thread
From: Yann E. MORIN @ 2020-01-01 18:41 UTC (permalink / raw)
  To: buildroot

Giulio, All,

On 2020-01-01 17:58 +0100, Giulio Benetti spake thusly:
> libnss expects OS_TEST to be set to ppc or ppc64 or ppc64le instead of
> powerpc, powerpc64, powerpc64le. At the moment gcm.h header checks if
> __powerpc64__ is defined, but Makefile expects OS_TEST to be set to
> ppc64 or ppc64le to build gcm-ppc.c. This way we end with having gcm
> prototypes defined, but without implementation compiled. So remap
> OS_TEST to what libnss expects depending on BR2_powerpc* enabled. This
> way Makefile will build gcm-ppc.c too, that contains gcm-ppc function
> implementations using Altivec. But add also a patch that modify
> minimum gcc version required for using Altivec functions from 5.x to 8.x
> since some Altivec intrinsics have been instroduced only in 8.x(i.e.
> vec_xst_be()).
> 
> Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>

Applied to master, after doing a few tweaks:

  - move the arch setting to kconfig (like recently done in e3159cad71)
  - add the build failure
  - add pointer to upstream bug report and patch sybmission
  - reformat and reword commit log

Pushed now, thanks.

Regards,
Yann E. MORIN.

> ---
> V1 -> V2:
> * changed completely approach
> Pending upstream:
> https://bugzilla.mozilla.org/show_bug.cgi?id=1606119
> ---
>  ...6119-Fix-PPC-HW-Crypto-build-failure.patch | 35 +++++++++++++++++++
>  package/libnss/libnss.mk                      |  6 ++++
>  2 files changed, 41 insertions(+)
>  create mode 100644 package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch
> 
> diff --git a/package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch b/package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch
> new file mode 100644
> index 0000000000..2439eb1625
> --- /dev/null
> +++ b/package/libnss/0005-Bug-1606119-Fix-PPC-HW-Crypto-build-failure.patch
> @@ -0,0 +1,35 @@
> +From ebf185f8e48b5aec622dc949cef1b19b0a7669ef Mon Sep 17 00:00:00 2001
> +From: Giulio Benetti <giulio.benetti@benettiengineering.com>
> +Date: Wed, 1 Jan 2020 12:54:45 +0100
> +Subject: [PATCH] Bug 1606119 - Fix PPC HW Crypto build failure
> +
> +All Altivec *_be() functions are supported from gcc version 8.x not 5.x
> +so modify gcc version check that at the moment cause build failure due
> +to missing Altivec *_be() functions.
> +
> +Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
> +---
> + nss/lib/freebl/gcm.h | 4 ++--
> + 1 file changed, 2 insertions(+), 2 deletions(-)
> +
> +diff --git a/nss/lib/freebl/gcm.h b/nss/lib/freebl/gcm.h
> +index 571b9ec55..aa4dee824 100644
> +--- a/nss/lib/freebl/gcm.h
> ++++ b/nss/lib/freebl/gcm.h
> +@@ -41,11 +41,11 @@
> + #endif
> + 
> + /*
> +- * PPC CRYPTO requires at least gcc 5 or clang. The LE check is purely
> ++ * PPC CRYPTO requires at least gcc 8 or clang. The LE check is purely
> +  * because it's only been tested on LE. If you're interested in BE,
> +  * please send a patch.
> +  */
> +-#if (defined(__clang__) || (defined(__GNUC__) && __GNUC__ >= 5)) && \
> ++#if (defined(__clang__) || (defined(__GNUC__) && __GNUC__ >= 8)) && \
> +     defined(IS_LITTLE_ENDIAN)
> + #define USE_PPC_CRYPTO
> + #endif
> +-- 
> +2.20.1
> +
> diff --git a/package/libnss/libnss.mk b/package/libnss/libnss.mk
> index 9349276a90..23dfdb11e4 100644
> --- a/package/libnss/libnss.mk
> +++ b/package/libnss/libnss.mk
> @@ -39,6 +39,12 @@ endif
>  
>  ifeq ($(BR2_aarch64_be),y)
>  LIBNSS_ARCH = aarch64
> +else ifeq ($(BR2_powerpc),y)
> +LIBNSS_ARCH = ppc
> +else ifeq ($(BR2_powerpc64),y)
> +LIBNSS_ARCH = ppc64
> +else ifeq ($(BR2_powerpc64le),y)
> +LIBNSS_ARCH = ppc64le
>  else
>  LIBNSS_ARCH = $(ARCH)
>  endif
> -- 
> 2.20.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

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

* [Buildroot] [PATCH v2] package/libnss: fix build failure due to HW PPC Crypto bug
  2020-01-01 16:58             ` [Buildroot] [PATCH v2] " Giulio Benetti
  2020-01-01 18:41               ` Yann E. MORIN
@ 2020-01-02  9:06               ` Thomas Petazzoni
  2020-01-02 17:19                 ` Giulio Benetti
  1 sibling, 1 reply; 15+ messages in thread
From: Thomas Petazzoni @ 2020-01-02  9:06 UTC (permalink / raw)
  To: buildroot

Hello Giulio,

Thanks for the patch. One comment below.

On Wed,  1 Jan 2020 17:58:11 +0100
Giulio Benetti <giulio.benetti@benettiengineering.com> wrote:

>  ifeq ($(BR2_aarch64_be),y)
>  LIBNSS_ARCH = aarch64
> +else ifeq ($(BR2_powerpc),y)
> +LIBNSS_ARCH = ppc
> +else ifeq ($(BR2_powerpc64),y)
> +LIBNSS_ARCH = ppc64
> +else ifeq ($(BR2_powerpc64le),y)
> +LIBNSS_ARCH = ppc64le
>  else
>  LIBNSS_ARCH = $(ARCH)
>  endif

Shouldn't we globally review the values that libnss wants for the
OS_TEST variable (which we set to $(LIBNSS_ARCH)) and see if other
architectures need similar tweaks ?

Thanks,

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

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

* [Buildroot] [PATCH v2] package/libnss: fix build failure due to HW PPC Crypto bug
  2020-01-02  9:06               ` Thomas Petazzoni
@ 2020-01-02 17:19                 ` Giulio Benetti
  2020-01-02 22:07                   ` Giulio Benetti
  0 siblings, 1 reply; 15+ messages in thread
From: Giulio Benetti @ 2020-01-02 17:19 UTC (permalink / raw)
  To: buildroot

Hi Thomas,

On 1/2/20 10:06 AM, Thomas Petazzoni wrote:
> Hello Giulio,
> 
> Thanks for the patch. One comment below.
> 
> On Wed,  1 Jan 2020 17:58:11 +0100
> Giulio Benetti <giulio.benetti@benettiengineering.com> wrote:
> 
>>   ifeq ($(BR2_aarch64_be),y)
>>   LIBNSS_ARCH = aarch64
>> +else ifeq ($(BR2_powerpc),y)
>> +LIBNSS_ARCH = ppc
>> +else ifeq ($(BR2_powerpc64),y)
>> +LIBNSS_ARCH = ppc64
>> +else ifeq ($(BR2_powerpc64le),y)
>> +LIBNSS_ARCH = ppc64le
>>   else
>>   LIBNSS_ARCH = $(ARCH)
>>   endif
> 
> Shouldn't we globally review the values that libnss wants for the
> OS_TEST variable (which we set to $(LIBNSS_ARCH)) and see if other
> architectures need similar tweaks ?

Absolutely yes, going to do that.

Best regards
-- 
Giulio Benetti
Benetti Engineering sas

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

* [Buildroot] [PATCH v2] package/libnss: fix build failure due to HW PPC Crypto bug
  2020-01-02 17:19                 ` Giulio Benetti
@ 2020-01-02 22:07                   ` Giulio Benetti
  0 siblings, 0 replies; 15+ messages in thread
From: Giulio Benetti @ 2020-01-02 22:07 UTC (permalink / raw)
  To: buildroot

On 1/2/20 6:19 PM, Giulio Benetti wrote:
> Hi Thomas,
> 
> On 1/2/20 10:06 AM, Thomas Petazzoni wrote:
>> Hello Giulio,
>>
>> Thanks for the patch. One comment below.
>>
>> On Wed,  1 Jan 2020 17:58:11 +0100
>> Giulio Benetti <giulio.benetti@benettiengineering.com> wrote:
>>
>>>    ifeq ($(BR2_aarch64_be),y)
>>>    LIBNSS_ARCH = aarch64
>>> +else ifeq ($(BR2_powerpc),y)
>>> +LIBNSS_ARCH = ppc
>>> +else ifeq ($(BR2_powerpc64),y)
>>> +LIBNSS_ARCH = ppc64
>>> +else ifeq ($(BR2_powerpc64le),y)
>>> +LIBNSS_ARCH = ppc64le
>>>    else
>>>    LIBNSS_ARCH = $(ARCH)
>>>    endif
>>
>> Shouldn't we globally review the values that libnss wants for the
>> OS_TEST variable (which we set to $(LIBNSS_ARCH)) and see if other
>> architectures need similar tweaks ?

It turns out that all specific architectures checked in 
coreconf/Linux.mk are already correct(after changing powerpc* to ppc*). 
All the others are directly copied from OS_TEST to OS_ARCH in 
coreconf/Linux.mk:
https://hg.mozilla.org/projects/nss/file/tip/coreconf/Linux.mk#l93
and OS_ARCH is the variable NSS uses internally.

So it seems that at the moment there is nothing more to do about this.

Best regards
-- 
Giulio Benetti
Benetti Engineering sas

> Absolutely yes, going to do that.
> 
> Best regards
> 

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

end of thread, other threads:[~2020-01-02 22:07 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-27 16:54 [Buildroot] [PATCH] package/libnss: fix build failure due to HW PPC Crypto bug Giulio Benetti
2019-12-27 17:05 ` Giulio Benetti
2019-12-31 17:07 ` Thomas Petazzoni
2019-12-31 21:24   ` Giulio Benetti
2019-12-31 22:49     ` Vincent Fazio
2019-12-31 23:31       ` Vincent Fazio
2019-12-31 23:44         ` Giulio Benetti
2020-01-01  8:47           ` Yann E. MORIN
2020-01-01 15:32           ` Thomas Petazzoni
2020-01-01 16:51             ` Giulio Benetti
2020-01-01 16:58             ` [Buildroot] [PATCH v2] " Giulio Benetti
2020-01-01 18:41               ` Yann E. MORIN
2020-01-02  9:06               ` Thomas Petazzoni
2020-01-02 17:19                 ` Giulio Benetti
2020-01-02 22:07                   ` Giulio Benetti

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.