All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] hwrng: chaoskey - Add support for Araneus Alea I USB RNG
@ 2016-06-03 11:13 Bob Ham
       [not found] ` <1464952388-2405-1-git-send-email-bob.ham-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Bob Ham @ 2016-06-03 11:13 UTC (permalink / raw)
  To: linux-crypto-u79uwXL29TY76Z2rM5mHXA,
	linux-usb-u79uwXL29TY76Z2rM5mHXA, Keith Packard
  Cc: Matt Mackall, Herbert Xu, Clemens Ladisch, Greg KH

Two patches to add support for the Araneus Alea I USB RNG to the
chaoskey driver.  The first simply includes the Alea I as a device,
the second fixes an issue with the timeout on the first read.

Bob Ham (2):
  hwrng: chaoskey - Add support for Araneus Alea I USB RNG
  hwrng: chaoskey - Fix URB warning due to timeout on Alea

 drivers/usb/misc/Kconfig    | 11 ++++++-----
 drivers/usb/misc/chaoskey.c | 21 +++++++++++++++++++--
 2 files changed, 25 insertions(+), 7 deletions(-)

-- 
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* [PATCH 1/2] hwrng: chaoskey - Add support for Araneus Alea I USB RNG
       [not found] ` <1464952388-2405-1-git-send-email-bob.ham-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
@ 2016-06-03 11:13   ` Bob Ham
  0 siblings, 0 replies; 7+ messages in thread
From: Bob Ham @ 2016-06-03 11:13 UTC (permalink / raw)
  To: linux-crypto-u79uwXL29TY76Z2rM5mHXA,
	linux-usb-u79uwXL29TY76Z2rM5mHXA, Keith Packard
  Cc: Matt Mackall, Herbert Xu, Clemens Ladisch, Greg KH

Adds support for the Araneus Alea I USB hardware Random Number
Generator which is interfaced with in exactly the same way as the
Altus Metrum ChaosKey.  We just add the appropriate device ID and
modify the config help text.

Signed-off-by: Bob Ham <bob.ham-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
---
 drivers/usb/misc/Kconfig    | 11 ++++++-----
 drivers/usb/misc/chaoskey.c |  4 ++++
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/drivers/usb/misc/Kconfig b/drivers/usb/misc/Kconfig
index e9e5ae5..6e70597 100644
--- a/drivers/usb/misc/Kconfig
+++ b/drivers/usb/misc/Kconfig
@@ -260,11 +260,12 @@ config USB_CHAOSKEY
 	tristate "ChaosKey random number generator driver support"
 	depends on HW_RANDOM
 	help
-	  Say Y here if you want to connect an AltusMetrum ChaosKey to
-	  your computer's USB port. The ChaosKey is a hardware random
-	  number generator which hooks into the kernel entropy pool to
-	  ensure a large supply of entropy for /dev/random and
-	  /dev/urandom and also provides direct access via /dev/chaoskeyX
+	  Say Y here if you want to connect an AltusMetrum ChaosKey or
+	  Araneus Alea I to your computer's USB port. These devices
+	  are hardware random number generators which hook into the
+	  kernel entropy pool to ensure a large supply of entropy for
+	  /dev/random and /dev/urandom and also provides direct access
+	  via /dev/chaoskeyX
 
 	  To compile this driver as a module, choose M here: the
 	  module will be called chaoskey.
diff --git a/drivers/usb/misc/chaoskey.c b/drivers/usb/misc/chaoskey.c
index 76350e4..9aef46b 100644
--- a/drivers/usb/misc/chaoskey.c
+++ b/drivers/usb/misc/chaoskey.c
@@ -55,6 +55,9 @@ MODULE_LICENSE("GPL");
 #define CHAOSKEY_VENDOR_ID	0x1d50	/* OpenMoko */
 #define CHAOSKEY_PRODUCT_ID	0x60c6	/* ChaosKey */
 
+#define ALEA_VENDOR_ID		0x12d8	/* Araneus */
+#define ALEA_PRODUCT_ID		0x0001	/* Alea I */
+
 #define CHAOSKEY_BUF_LEN	64	/* max size of USB full speed packet */
 
 #define NAK_TIMEOUT (HZ)		/* stall/wait timeout for device */
@@ -69,6 +72,7 @@ MODULE_LICENSE("GPL");
 
 static const struct usb_device_id chaoskey_table[] = {
 	{ USB_DEVICE(CHAOSKEY_VENDOR_ID, CHAOSKEY_PRODUCT_ID) },
+	{ USB_DEVICE(ALEA_VENDOR_ID, ALEA_PRODUCT_ID) },
 	{ },
 };
 MODULE_DEVICE_TABLE(usb, chaoskey_table);
-- 
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* [PATCH 2/2] hwrng: chaoskey - Fix URB warning due to timeout on Alea
  2016-06-03 11:13 [PATCH 0/2] hwrng: chaoskey - Add support for Araneus Alea I USB RNG Bob Ham
       [not found] ` <1464952388-2405-1-git-send-email-bob.ham-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
@ 2016-06-03 11:13 ` Bob Ham
  2016-06-07 10:53 ` [PATCH 0/2] hwrng: chaoskey - Add support for Araneus Alea I USB RNG Herbert Xu
  2 siblings, 0 replies; 7+ messages in thread
From: Bob Ham @ 2016-06-03 11:13 UTC (permalink / raw)
  To: linux-crypto, linux-usb, Keith Packard
  Cc: Matt Mackall, Herbert Xu, Clemens Ladisch, Greg KH

The first read on an Alea takes about 1.8 seconds, more than the
timeout value waiting for the read.  As a consequence, later URB reuse
causes the warning given below.  To avoid this, we increase the wait
time for the first read on the Alea.

[   78.293247] WARNING: CPU: 3 PID: 1892 at drivers/usb/core/urb.c:338 usb_submit_urb+0x2b4/0x580 [usbcore]
[   78.293250] URB ffff8802135be3c0 submitted while active
[   78.293252] Modules linked in: chaoskey(+) rng_core rfcomm binfmt_misc bnep cfg80211 nfsd auth_rpcgss oid_registry nfs_acl nfs lockd grace fscache sunrpc bridge stp llc tun snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic iTCO_wdt iTCO_vendor_support nls_utf8 nls_cp437 vfat fat intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel efi_pstore kvm irqbypass pcspkr btusb btrtl btbcm btintel uvcvideo joydev bluetooth videobuf2_vmalloc videobuf2_memops efivars videobuf2_v4l2 serio_raw i2c_i801 videobuf2_core videodev cdc_mbim media lpc_ich shpchp mfd_core cdc_ncm usbnet mii cdc_wdm cdc_acm evdev snd_hda_intel snd_hda_codec snd_hwdep snd_hda_core i915 snd_pcm snd_timer i2c_algo_bit drm_kms_helper wmi thinkpad_acpi drm nvram mei_me mei snd soundcore rfkill ac batter
 y i2c_core
[   78.293335]  video button tpm_tis tpm fuse parport_pc ppdev lp parport autofs4 ext4 crc16 jbd2 mbcache algif_skcipher af_alg hid_generic usbhid hid dm_crypt dm_mod sg sr_mod cdrom sd_mod crct10dif_pclmul crc32_pclmul crc32c_intel jitterentropy_rng sha256_generic hmac drbg aesni_intel xhci_pci aes_x86_64 ahci glue_helper xhci_hcd ehci_pci lrw libahci gf128mul ablk_helper cryptd libata sdhci_pci psmouse sdhci scsi_mod ehci_hcd mmc_core usbcore usb_common thermal
[   78.293402] CPU: 3 PID: 1892 Comm: hwrng Not tainted 4.7.0-rc1-linux-14+ #16
[   78.293405] Hardware name: LENOVO 232577G/232577G, BIOS G2ET92WW (2.52 ) 02/22/2013
[   78.293408]  0000000000000000 ffffffff812dfa0f ffff8801fa5b3d68 0000000000000000
[   78.293413]  ffffffff81072224 ffff8802135be3c0 ffff8801fa5b3db8 ffff880212e44210
[   78.293418]  0000000000000040 ffff880209fb32c0 ffff880212e44200 ffffffff8107228f
[   78.293422] Call Trace:
[   78.293432]  [<ffffffff812dfa0f>] ? dump_stack+0x5c/0x7d
[   78.293437]  [<ffffffff81072224>] ? __warn+0xc4/0xe0
[   78.293441]  [<ffffffff8107228f>] ? warn_slowpath_fmt+0x4f/0x60
[   78.293451]  [<ffffffff810a46a2>] ? enqueue_task_fair+0xcd2/0x1260
[   78.293463]  [<ffffffffa001ec54>] ? usb_submit_urb+0x2b4/0x580 [usbcore]
[   78.293474]  [<ffffffff8140c2e5>] ? __pm_runtime_resume+0x55/0x70
[   78.293484]  [<ffffffffa0825212>] ? _chaoskey_fill+0x132/0x250 [chaoskey]
[   78.293485] usbcore: registered new interface driver chaoskey
[   78.293493]  [<ffffffff810aed50>] ? wait_woken+0x90/0x90
[   78.293500]  [<ffffffffa06448c0>] ? devm_hwrng_register+0x80/0x80 [rng_core]
[   78.293505]  [<ffffffffa0825907>] ? chaoskey_rng_read+0x127/0x140 [chaoskey]
[   78.293511]  [<ffffffffa06448c0>] ? devm_hwrng_register+0x80/0x80 [rng_core]
[   78.293515]  [<ffffffffa064492e>] ? hwrng_fillfn+0x6e/0x120 [rng_core]
[   78.293520]  [<ffffffff8108fb5f>] ? kthread+0xcf/0xf0
[   78.293529]  [<ffffffff81596d5f>] ? ret_from_fork+0x1f/0x40
[   78.293535]  [<ffffffff8108fa90>] ? kthread_park+0x50/0x50

Signed-off-by: Bob Ham <bob.ham@collabora.com>
---
 drivers/usb/misc/chaoskey.c | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/misc/chaoskey.c b/drivers/usb/misc/chaoskey.c
index 9aef46b..6ddd08a 100644
--- a/drivers/usb/misc/chaoskey.c
+++ b/drivers/usb/misc/chaoskey.c
@@ -60,7 +60,8 @@ MODULE_LICENSE("GPL");
 
 #define CHAOSKEY_BUF_LEN	64	/* max size of USB full speed packet */
 
-#define NAK_TIMEOUT (HZ)		/* stall/wait timeout for device */
+#define NAK_TIMEOUT (HZ)		/* normal stall/wait timeout */
+#define ALEA_FIRST_TIMEOUT (HZ*3)	/* first stall/wait timeout for Alea */
 
 #ifdef CONFIG_USB_DYNAMIC_MINORS
 #define USB_CHAOSKEY_MINOR_BASE 0
@@ -88,6 +89,7 @@ struct chaoskey {
 	int open;			/* open count */
 	bool present;			/* device not disconnected */
 	bool reading;			/* ongoing IO */
+	bool reads_started;		/* track first read for Alea */
 	int size;			/* size of buf */
 	int valid;			/* bytes of buf read */
 	int used;			/* bytes of buf consumed */
@@ -192,6 +194,9 @@ static int chaoskey_probe(struct usb_interface *interface,
 
 	dev->in_ep = in_ep;
 
+	if (udev->descriptor.idVendor != ALEA_VENDOR_ID)
+		dev->reads_started = 1;
+
 	dev->size = size;
 	dev->present = 1;
 
@@ -361,6 +366,7 @@ static int _chaoskey_fill(struct chaoskey *dev)
 {
 	DEFINE_WAIT(wait);
 	int result;
+	bool started;
 
 	usb_dbg(dev->interface, "fill");
 
@@ -393,10 +399,17 @@ static int _chaoskey_fill(struct chaoskey *dev)
 		goto out;
 	}
 
+	/* The first read on the Alea takes a little under 2 seconds.
+	 * Reads after the first read take only a few microseconds
+	 * though.  Presumably the entropy-generating circuit needs
+	 * time to ramp up.  So, we wait longer on the first read.
+	 */
+	started = dev->reads_started;
+	dev->reads_started = true;
 	result = wait_event_interruptible_timeout(
 		dev->wait_q,
 		!dev->reading,
-		NAK_TIMEOUT);
+		(started ? NAK_TIMEOUT : ALEA_FIRST_TIMEOUT) );
 
 	if (result < 0)
 		goto out;
-- 
2.1.4

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

* Re: [PATCH 0/2] hwrng: chaoskey - Add support for Araneus Alea I USB RNG
  2016-06-03 11:13 [PATCH 0/2] hwrng: chaoskey - Add support for Araneus Alea I USB RNG Bob Ham
       [not found] ` <1464952388-2405-1-git-send-email-bob.ham-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
  2016-06-03 11:13 ` [PATCH 2/2] hwrng: chaoskey - Fix URB warning due to timeout on Alea Bob Ham
@ 2016-06-07 10:53 ` Herbert Xu
  2016-06-07 22:03   ` Greg KH
  2 siblings, 1 reply; 7+ messages in thread
From: Herbert Xu @ 2016-06-07 10:53 UTC (permalink / raw)
  To: Bob Ham
  Cc: linux-crypto, linux-usb, Keith Packard, Matt Mackall,
	Clemens Ladisch, Greg KH

On Fri, Jun 03, 2016 at 12:13:06PM +0100, Bob Ham wrote:
> Two patches to add support for the Araneus Alea I USB RNG to the
> chaoskey driver.  The first simply includes the Alea I as a device,
> the second fixes an issue with the timeout on the first read.
> 
> Bob Ham (2):
>   hwrng: chaoskey - Add support for Araneus Alea I USB RNG
>   hwrng: chaoskey - Fix URB warning due to timeout on Alea
> 
>  drivers/usb/misc/Kconfig    | 11 ++++++-----
>  drivers/usb/misc/chaoskey.c | 21 +++++++++++++++++++--
>  2 files changed, 25 insertions(+), 7 deletions(-)

Both applied.  Thanks.
-- 
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

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

* Re: [PATCH 0/2] hwrng: chaoskey - Add support for Araneus Alea I USB RNG
  2016-06-07 10:53 ` [PATCH 0/2] hwrng: chaoskey - Add support for Araneus Alea I USB RNG Herbert Xu
@ 2016-06-07 22:03   ` Greg KH
       [not found]     ` <20160607220311.GB4744-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 7+ messages in thread
From: Greg KH @ 2016-06-07 22:03 UTC (permalink / raw)
  To: Herbert Xu
  Cc: Bob Ham, linux-crypto, linux-usb, Keith Packard, Matt Mackall,
	Clemens Ladisch

On Tue, Jun 07, 2016 at 06:53:45PM +0800, Herbert Xu wrote:
> On Fri, Jun 03, 2016 at 12:13:06PM +0100, Bob Ham wrote:
> > Two patches to add support for the Araneus Alea I USB RNG to the
> > chaoskey driver.  The first simply includes the Alea I as a device,
> > the second fixes an issue with the timeout on the first read.
> > 
> > Bob Ham (2):
> >   hwrng: chaoskey - Add support for Araneus Alea I USB RNG
> >   hwrng: chaoskey - Fix URB warning due to timeout on Alea
> > 
> >  drivers/usb/misc/Kconfig    | 11 ++++++-----
> >  drivers/usb/misc/chaoskey.c | 21 +++++++++++++++++++--
> >  2 files changed, 25 insertions(+), 7 deletions(-)
> 
> Both applied.  Thanks.

Ok, but usually drivers/usb/misc/ patches go through my tree :)

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

* Re: [PATCH 0/2] hwrng: chaoskey - Add support for Araneus Alea I USB RNG
       [not found]     ` <20160607220311.GB4744-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
@ 2016-06-08  0:49       ` Herbert Xu
       [not found]         ` <20160608004954.GA11545-lOAM2aK0SrRLBo1qDEOMRrpzq4S04n8Q@public.gmane.org>
  0 siblings, 1 reply; 7+ messages in thread
From: Herbert Xu @ 2016-06-08  0:49 UTC (permalink / raw)
  To: Greg KH
  Cc: Bob Ham, linux-crypto-u79uwXL29TY76Z2rM5mHXA,
	linux-usb-u79uwXL29TY76Z2rM5mHXA, Keith Packard, Matt Mackall,
	Clemens Ladisch

On Tue, Jun 07, 2016 at 03:03:11PM -0700, Greg KH wrote:
>
> Ok, but usually drivers/usb/misc/ patches go through my tree :)

Sorry.  But I do wonder whether this driver should be moved as
it is just an hwrng device like every other driver under hw_random,
except for the fact that it happens to be a USB physical device.

Cheers,
-- 
Email: Herbert Xu <herbert-lOAM2aK0SrRLBo1qDEOMRrpzq4S04n8Q@public.gmane.org>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH 0/2] hwrng: chaoskey - Add support for Araneus Alea I USB RNG
       [not found]         ` <20160608004954.GA11545-lOAM2aK0SrRLBo1qDEOMRrpzq4S04n8Q@public.gmane.org>
@ 2016-06-08  1:34           ` Greg KH
  0 siblings, 0 replies; 7+ messages in thread
From: Greg KH @ 2016-06-08  1:34 UTC (permalink / raw)
  To: Herbert Xu
  Cc: Bob Ham, linux-crypto-u79uwXL29TY76Z2rM5mHXA,
	linux-usb-u79uwXL29TY76Z2rM5mHXA, Keith Packard, Matt Mackall,
	Clemens Ladisch

On Wed, Jun 08, 2016 at 08:49:55AM +0800, Herbert Xu wrote:
> On Tue, Jun 07, 2016 at 03:03:11PM -0700, Greg KH wrote:
> >
> > Ok, but usually drivers/usb/misc/ patches go through my tree :)
> 
> Sorry.  But I do wonder whether this driver should be moved as
> it is just an hwrng device like every other driver under hw_random,
> except for the fact that it happens to be a USB physical device.

That's fine with me, but it uses the usb misc device major number,
unlike other hw_random drivers, so that might get messy.

It's your call...

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

end of thread, other threads:[~2016-06-08  1:34 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-03 11:13 [PATCH 0/2] hwrng: chaoskey - Add support for Araneus Alea I USB RNG Bob Ham
     [not found] ` <1464952388-2405-1-git-send-email-bob.ham-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2016-06-03 11:13   ` [PATCH 1/2] " Bob Ham
2016-06-03 11:13 ` [PATCH 2/2] hwrng: chaoskey - Fix URB warning due to timeout on Alea Bob Ham
2016-06-07 10:53 ` [PATCH 0/2] hwrng: chaoskey - Add support for Araneus Alea I USB RNG Herbert Xu
2016-06-07 22:03   ` Greg KH
     [not found]     ` <20160607220311.GB4744-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2016-06-08  0:49       ` Herbert Xu
     [not found]         ` <20160608004954.GA11545-lOAM2aK0SrRLBo1qDEOMRrpzq4S04n8Q@public.gmane.org>
2016-06-08  1:34           ` Greg KH

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.