Re: linux-next: Tree for May 15 (crypto /crct10dif)

From: Herbert Xu
Date: Tue May 21 2013 - 09:47:18 EST

On Mon, May 20, 2013 at 12:09:45PM -0700, Tim Chen wrote:
> On Mon, 2013-05-20 at 19:47 +0800, Herbert Xu wrote:
> >
> > Nope this is still broken. We need to move the actual crct10dif
> > code into crypto/. I'll fix up the patch in the tree.
> >
> > Also I'm going to get rid of crc_t10dif_update_lib function. If you
> > still want to maintain the ordering you should do so using the
> > *_init constructs.
> >
> Herbert,
> I used the following constructs in the pclmulqdq version of t10dif
> to get the module loaded.
> static const struct x86_cpu_id crct10dif_cpu_id[] = {
> {}
> };
> MODULE_DEVICE_TABLE(x86cpu, crct10dif_cpu_id);
> However, the default generic algorithm is used
> in the library function. The options CRC_T10DIF, CRYPTO_CRCT10DIF
> and CRYPTO_CRCT10DIF_PCLMUL are selected as modules (which
> is most likely usage scenario in distribution) on my
> test machine. The library module and generic crypto module was loaded
> before the pclmulqdq t10dif module during boot. How should
> things be changed to get this crypto module loaded earlier before the
> library? Should we add another init call level between fs and device
> init calls for loading the available crypto algorithms?
> The crc_t10dif_update_lib was originally used to side step this issue.

OK, the way it's meant to work is that the all versions generic
or otherwise do not call themselves by the name of the algorithm.

Instead every implementation links itself to the algorithm via
a module alias. That way the first user will cause modprobe
to load all available versions and then rank them by priority.

However, now that I've looked at it it appears that crc32c and
crct10dif have not done this properly. I'll fix that up.

Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
Home Page:
PGP Key:
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at