Re: [PATCH] crypto: crc32: make crc32 available in PBL

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Ahmad,

thank you for your review.

On 8/29/23 12:45, Ahmad Fatoum wrote:
On 29.08.23 12:29, Ahmad Fatoum wrote:
On 29.08.23 11:28, Johannes Zink wrote:
crc32 may be required in PBL for checking data integrity. Add
CONFIG_CRC32_EARLY to kconfig which allows adding crc32 also in the PBL.

As the PBL has no dynamic allocation, do not use dynamic CRC table
generation when CRC32 is added in PBL.

Signed-off-by: Johannes Zink <j.zink@xxxxxxxxxxxxxx>
---
To: Barebox Mailing List <barebox@xxxxxxxxxxxxxxxxxxx>
Cc: Johannes Zink <j.zink@xxxxxxxxxxxxxx>
Cc: patchwork-jzi@xxxxxxxxxxxxxx
---
  crypto/Kconfig  | 3 +++
  crypto/Makefile | 1 +
  crypto/crc32.c  | 6 +++---
  3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/crypto/Kconfig b/crypto/Kconfig
index 04e5ef43705b..6e18b5868061 100644
--- a/crypto/Kconfig
+++ b/crypto/Kconfig
@@ -5,6 +5,9 @@ menu "Crypto support"
  config CRC32
  	bool
+config CRC32_EARLY
+	bool
+
  config CRC_ITU_T
  	bool
diff --git a/crypto/Makefile b/crypto/Makefile
index 22035d4f69ee..24e1f3d91797 100644
--- a/crypto/Makefile
+++ b/crypto/Makefile
@@ -11,6 +11,7 @@ obj-$(CONFIG_DIGEST_SHA1_GENERIC)	+= sha1.o
  obj-$(CONFIG_DIGEST_SHA224_GENERIC)	+= sha2.o
  obj-$(CONFIG_DIGEST_SHA256_GENERIC)	+= sha2.o
  pbl-y					+= sha2.o digest.o
+lwl-$(CONFIG_CRC32_EARLY)		+= crc32.o

pbl-obj- is the correct prefix. lwl- means pbl- if we have PBL
support at all and obj- otherwise (for legacy systems without PBL),
while pbl-obj- is equivalent to duplicating the line once with pbl-
and once with obj-

s/pbl-obj-/obj-pbl-/ :)


ack, gonna fix this for v2.


  obj-$(CONFIG_DIGEST_SHA384_GENERIC)	+= sha4.o
  obj-$(CONFIG_DIGEST_SHA512_GENERIC)	+= sha4.o
  obj-y	+= memneq.o
diff --git a/crypto/crc32.c b/crypto/crc32.c
index 95cb2212db2b..284d39351682 100644
--- a/crypto/crc32.c
+++ b/crypto/crc32.c
@@ -22,7 +22,7 @@
  #define STATIC static inline
  #endif
-#ifdef CONFIG_DYNAMIC_CRC_TABLE
+#if defined(CONFIG_DYNAMIC_CRC_TABLE) && !defined(__PBL__)

You could also replace the dynamic allocation with a static array initialized
to zero. That way you can have a dynamic crc table even in PBL without affecting
image size as the BSS is not part of the image.

ack. Is this ok?

#ifdef __PBL__
  static uint32_t _crc_table_memory[sizeof(uint32_t) * 256] = { 0 };
#endif

static void *alloc_crc_table() {
#ifdef __PBL__
	return _crc_table_memory;
#else
	return xmalloc(sizeof(uint32_t) * 256);
#endif
}

If so, I can change it for v2.

Best regards
Johannes



static uint32_t *crc_table; @@ -145,7 +145,7 @@ STATIC uint32_t crc32(uint32_t crc, const void *_buf, unsigned int len)
  {
      const unsigned char *buf = _buf;
-#ifdef CONFIG_DYNAMIC_CRC_TABLE
+#if defined(CONFIG_DYNAMIC_CRC_TABLE) && !defined(__PBL__)
  	if (!crc_table)
  		make_crc_table();
  #endif
@@ -171,7 +171,7 @@ STATIC uint32_t crc32_no_comp(uint32_t crc, const void *_buf, unsigned int len)
  {
     const unsigned char *buf = _buf;
-#ifdef CONFIG_DYNAMIC_CRC_TABLE
+#if defined(CONFIG_DYNAMIC_CRC_TABLE) && !defined(__PBL__)
  	if (!crc_table)
  		make_crc_table();
  #endif

---
base-commit: bef38b18eeb5d2f1fac334fb8b831e47261e099c
change-id: 20230829-crc32_in_pbl-4d824629d4e2

Best regards,



--
Pengutronix e.K.                | Johannes Zink                  |
Steuerwalder Str. 21            | https://www.pengutronix.de/    |
31137 Hildesheim, Germany       | Phone: +49-5121-206917-0       |
Amtsgericht Hildesheim, HRA 2686| Fax:   +49-5121-206917-5555    |





[Index of Archives]     [Linux Embedded]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux