linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] rng-tools: add udev rule for virtio-rng
@ 2014-08-07 13:08 Amit Shah
  2014-08-07 13:08 ` [PATCH 1/2] rngd: add udev rule to source from hwrng if virtio-rng present Amit Shah
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Amit Shah @ 2014-08-07 13:08 UTC (permalink / raw)
  To: jgarzik
  Cc: hpa, Virtualization List, Amos Kong, Rusty Russell, linux-kernel,
	Amit Shah

Hello,

I didn't find a mailing list for rng-tools, so CC'ing the kernel lists
and the last few committers.

The first patch in this series adds a udev rule to start rngd for
guests that have a virtio-rng device available.

The second patch attempts to add autoconf magic to install the udev
rule in the system dirs.  However, installing as non-root will
obviously fail.  Prefixes are also not honoured.  I don't know of a
better way, and we probably should leave this to distributions.
However, if someone has a better idea on how to expand this, please
suggest.


Amit Shah (2):
  rngd: add udev rule to source from hwrng if virtio-rng present
  Install udev rules in system-default directory

 90-virtio-rng.rules | 1 +
 Makefile.am         | 1 +
 configure.ac        | 8 ++++++++
 3 files changed, 10 insertions(+)
 create mode 100644 90-virtio-rng.rules

-- 
1.9.3


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

* [PATCH 1/2] rngd: add udev rule to source from hwrng if virtio-rng present
  2014-08-07 13:08 [PATCH 0/2] rng-tools: add udev rule for virtio-rng Amit Shah
@ 2014-08-07 13:08 ` Amit Shah
  2014-08-07 19:31   ` H. Peter Anvin
  2014-08-07 13:09 ` [PATCH 2/2] Install udev rules in system-default directory Amit Shah
       [not found] ` <3df55388b1b3acd142f391494f102c3ddb2270ed.1407416628.git.amit.shah__45224.3810439997$1407417016$gmane$org@redhat.com>
  2 siblings, 1 reply; 11+ messages in thread
From: Amit Shah @ 2014-08-07 13:08 UTC (permalink / raw)
  To: jgarzik
  Cc: hpa, Virtualization List, Amos Kong, Rusty Russell, linux-kernel,
	Amit Shah

On KVM guests where the virtio-rng device is available, and set as the
current rng, this udev rule will start rngd which will feed in the
host-provided entropy to /dev/random.

Signed-off-by: Amit Shah <amit.shah@redhat.com>
---
 90-virtio-rng.rules | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 90-virtio-rng.rules

diff --git a/90-virtio-rng.rules b/90-virtio-rng.rules
new file mode 100644
index 0000000..07f2f9c
--- /dev/null
+++ b/90-virtio-rng.rules
@@ -0,0 +1 @@
+KERNEL=="hw_random", ATTR{rng_current}=="virtio*", RUN+="/sbin/rngd -r /dev/hwrng"
-- 
1.9.3


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

* [PATCH 2/2] Install udev rules in system-default directory
  2014-08-07 13:08 [PATCH 0/2] rng-tools: add udev rule for virtio-rng Amit Shah
  2014-08-07 13:08 ` [PATCH 1/2] rngd: add udev rule to source from hwrng if virtio-rng present Amit Shah
@ 2014-08-07 13:09 ` Amit Shah
       [not found] ` <3df55388b1b3acd142f391494f102c3ddb2270ed.1407416628.git.amit.shah__45224.3810439997$1407417016$gmane$org@redhat.com>
  2 siblings, 0 replies; 11+ messages in thread
From: Amit Shah @ 2014-08-07 13:09 UTC (permalink / raw)
  To: jgarzik
  Cc: hpa, Virtualization List, Amos Kong, Rusty Russell, linux-kernel,
	Amit Shah

not-quite-Signed-off-by: Amit Shah <amit.shah@redhat.com>
---
 Makefile.am  | 1 +
 configure.ac | 8 ++++++++
 2 files changed, 9 insertions(+)

diff --git a/Makefile.am b/Makefile.am
index f8490a3..a2b8173 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -8,6 +8,7 @@ sbin_PROGRAMS	 = rngd
 bin_PROGRAMS	 = rngtest
 man_MANS	 = rngd.8 rngtest.1
 noinst_LIBRARIES = librngd.a
+udevrules_DATA	 = 90-virtio-rng.rules
 
 rngd_SOURCES	= rngd.h rngd.c	rngd_entsource.h rngd_entsource.c	\
 		  rngd_linux.h rngd_linux.c util.c 			\
diff --git a/configure.ac b/configure.ac
index 27a2dba..4187aca 100644
--- a/configure.ac
+++ b/configure.ac
@@ -32,6 +32,14 @@ AC_ARG_WITH([libgcrypt],
 	[with_libgcrypt=check]
 )
 
+PKG_PROG_PKG_CONFIG
+
+AC_ARG_WITH([udevrulesdir],
+	AS_HELP_STRING([--with-udevrulesdir=DIR], [Directory for udev rules]),
+	[],
+	[with_udevrulesdir=$($PKG_CONFIG --variable=udevdir udev)"/rules.d"])
+AC_SUBST([udevrulesdir], [$with_udevrulesdir])
+
 dnl Make sure anyone changing configure.ac/Makefile.am has a clue
 AM_MAINTAINER_MODE
 
-- 
1.9.3


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

* Re: [PATCH 1/2] rngd: add udev rule to source from hwrng if virtio-rng present
  2014-08-07 13:08 ` [PATCH 1/2] rngd: add udev rule to source from hwrng if virtio-rng present Amit Shah
@ 2014-08-07 19:31   ` H. Peter Anvin
  2014-08-08  9:07     ` Amit Shah
  0 siblings, 1 reply; 11+ messages in thread
From: H. Peter Anvin @ 2014-08-07 19:31 UTC (permalink / raw)
  To: Amit Shah, jgarzik
  Cc: Virtualization List, Amos Kong, Rusty Russell, linux-kernel,
	Ricardo Neri

On 08/07/2014 06:08 AM, Amit Shah wrote:
> On KVM guests where the virtio-rng device is available, and set as the
> current rng, this udev rule will start rngd which will feed in the
> host-provided entropy to /dev/random.
> 
> Signed-off-by: Amit Shah <amit.shah@redhat.com>
> ---
>  90-virtio-rng.rules | 1 +
>  1 file changed, 1 insertion(+)
>  create mode 100644 90-virtio-rng.rules
> 
> diff --git a/90-virtio-rng.rules b/90-virtio-rng.rules
> new file mode 100644
> index 0000000..07f2f9c
> --- /dev/null
> +++ b/90-virtio-rng.rules
> @@ -0,0 +1 @@
> +KERNEL=="hw_random", ATTR{rng_current}=="virtio*", RUN+="/sbin/rngd -r /dev/hwrng"
> 

I'm not sure this is really right.  rngd can receive input from a number
of sources, and I suspect it would be better to rngd to be started much
earlier and perhaps get sent a SIGHUP to reconfigure when a hw_random
device appears ... not just the virtio one.

Currently rngd exits if there is no daemon.  There are a few ways to
deal with that: one is to run rngd on changes and leave a pid file
around; the rngd can try to signal the old rngd or launch itself;
another option would be to have a different rngd for each source.  To
some degree the above is obsolete when we get khwrngd widely deployed,
but that is a new-kernel-only kind of thing.

	-hpa


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

* Re: [PATCH 1/2] rngd: add udev rule to source from hwrng if virtio-rng present
  2014-08-07 19:31   ` H. Peter Anvin
@ 2014-08-08  9:07     ` Amit Shah
  2014-08-08 21:46       ` H. Peter Anvin
  0 siblings, 1 reply; 11+ messages in thread
From: Amit Shah @ 2014-08-08  9:07 UTC (permalink / raw)
  To: H. Peter Anvin
  Cc: jgarzik, Virtualization List, Amos Kong, Rusty Russell,
	linux-kernel, Ricardo Neri

On (Thu) 07 Aug 2014 [12:31:11], H. Peter Anvin wrote:
> On 08/07/2014 06:08 AM, Amit Shah wrote:
> > On KVM guests where the virtio-rng device is available, and set as the
> > current rng, this udev rule will start rngd which will feed in the
> > host-provided entropy to /dev/random.
> > 
> > Signed-off-by: Amit Shah <amit.shah@redhat.com>
> > ---
> >  90-virtio-rng.rules | 1 +
> >  1 file changed, 1 insertion(+)
> >  create mode 100644 90-virtio-rng.rules
> > 
> > diff --git a/90-virtio-rng.rules b/90-virtio-rng.rules
> > new file mode 100644
> > index 0000000..07f2f9c
> > --- /dev/null
> > +++ b/90-virtio-rng.rules
> > @@ -0,0 +1 @@
> > +KERNEL=="hw_random", ATTR{rng_current}=="virtio*", RUN+="/sbin/rngd -r /dev/hwrng"
> > 
> 
> I'm not sure this is really right.  rngd can receive input from a number
> of sources, and I suspect it would be better to rngd to be started much
> earlier and perhaps get sent a SIGHUP to reconfigure when a hw_random
> device appears ... not just the virtio one.

Right - yea.  Modern distros do start rngd by default (at least Fedora
and RHEL do), so this does make sense.

But as you note below, not all distros may start rngd...

> Currently rngd exits if there is no daemon.  There are a few ways to
> deal with that: one is to run rngd on changes and leave a pid file
> around; the rngd can try to signal the old rngd or launch itself;
> another option would be to have a different rngd for each source.

Currently the kernel can only have one rng_current, which is a pity.
So in the current case, rngd only needs one instance -- and it'll
always accept stuff from /dev/hwrng and it doesn't matter if the
rng_current is changed as long as there's some rng there.

>  To
> some degree the above is obsolete when we get khwrngd widely deployed,
> but that is a new-kernel-only kind of thing.

Right - I'm wondering if any such changes as propsed here are now
obsolted already by khwrngd?

Thanks,

		Amit

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

* Re: [PATCH 1/2] rngd: add udev rule to source from hwrng if virtio-rng present
  2014-08-08  9:07     ` Amit Shah
@ 2014-08-08 21:46       ` H. Peter Anvin
  2014-08-11  7:15         ` Amit Shah
  0 siblings, 1 reply; 11+ messages in thread
From: H. Peter Anvin @ 2014-08-08 21:46 UTC (permalink / raw)
  To: Amit Shah
  Cc: jgarzik, Virtualization List, Amos Kong, Rusty Russell,
	linux-kernel, Ricardo Neri

On 08/08/2014 02:07 AM, Amit Shah wrote:
>
> 
>>  To
>> some degree the above is obsolete when we get khwrngd widely deployed,
>> but that is a new-kernel-only kind of thing.
> 
> Right - I'm wondering if any such changes as propsed here are now
> obsolted already by khwrngd?
> 

In this case, yes, khwrngd would be a better solution for current kernels.

	-hpa



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

* Re: [PATCH 1/2] rngd: add udev rule to source from hwrng if virtio-rng present
  2014-08-08 21:46       ` H. Peter Anvin
@ 2014-08-11  7:15         ` Amit Shah
  2014-08-11 13:30           ` Torsten Duwe
  0 siblings, 1 reply; 11+ messages in thread
From: Amit Shah @ 2014-08-11  7:15 UTC (permalink / raw)
  To: H. Peter Anvin
  Cc: jgarzik, Virtualization List, Amos Kong, Rusty Russell,
	linux-kernel, Ricardo Neri, duwe

On (Fri) 08 Aug 2014 [14:46:27], H. Peter Anvin wrote:
> On 08/08/2014 02:07 AM, Amit Shah wrote:
> >
> > 
> >>  To
> >> some degree the above is obsolete when we get khwrngd widely deployed,
> >> but that is a new-kernel-only kind of thing.
> > 
> > Right - I'm wondering if any such changes as propsed here are now
> > obsolted already by khwrngd?
> > 
> 
> In this case, yes, khwrngd would be a better solution for current kernels.

I think that's OK with me.

What's the suggested value for rng->quality, though, for virtio-rng
that I can use to ensure the kthread starts?

Should I use the 700 (70%) as proposed in the original patchset?  I'm
not exactly sure how that value will be used as well..


		Amit

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

* Re: [PATCH 1/2] rngd: add udev rule to source from hwrng if virtio-rng present
  2014-08-11  7:15         ` Amit Shah
@ 2014-08-11 13:30           ` Torsten Duwe
  2014-08-11 16:50             ` H. Peter Anvin
  0 siblings, 1 reply; 11+ messages in thread
From: Torsten Duwe @ 2014-08-11 13:30 UTC (permalink / raw)
  To: Amit Shah
  Cc: H. Peter Anvin, jgarzik, Virtualization List, Amos Kong,
	Rusty Russell, linux-kernel, Ricardo Neri

On Mon, Aug 11, 2014 at 12:45:27PM +0530, Amit Shah wrote:
> 
> What's the suggested value for rng->quality, though, for virtio-rng
> that I can use to ensure the kthread starts?
> 
> Should I use the 700 (70%) as proposed in the original patchset?  I'm
> not exactly sure how that value will be used as well..

There is no such thing as a suggested value, every number is wrong
to some degree.  The quality is an estimation of how random your
source really is; it's a property of your hardware. If the device is
virtual you're in trouble ;-)

Either you have a way to query the underlying real hardware, or
you do your whitening and entropy estimation in the backend driver --
then you can claim 100%.

	Torsten


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

* Re: [PATCH 1/2] rngd: add udev rule to source from hwrng if virtio-rng present
  2014-08-11 13:30           ` Torsten Duwe
@ 2014-08-11 16:50             ` H. Peter Anvin
  0 siblings, 0 replies; 11+ messages in thread
From: H. Peter Anvin @ 2014-08-11 16:50 UTC (permalink / raw)
  To: Torsten Duwe, Amit Shah
  Cc: jgarzik, Virtualization List, Amos Kong, Rusty Russell,
	linux-kernel, Ricardo Neri

On 08/11/2014 06:30 AM, Torsten Duwe wrote:
> On Mon, Aug 11, 2014 at 12:45:27PM +0530, Amit Shah wrote:
>>
>> What's the suggested value for rng->quality, though, for virtio-rng
>> that I can use to ensure the kthread starts?
>>
>> Should I use the 700 (70%) as proposed in the original patchset?  I'm
>> not exactly sure how that value will be used as well..
> 
> There is no such thing as a suggested value, every number is wrong
> to some degree.  The quality is an estimation of how random your
> source really is; it's a property of your hardware. If the device is
> virtual you're in trouble ;-)
> 
> Either you have a way to query the underlying real hardware, or
> you do your whitening and entropy estimation in the backend driver --
> then you can claim 100%.
> 

virtio-rng I feel we could rank at 100%; it is supposed to feed
/dev/random-quality randomness from the VMM.  If the VMM is hostile you
have already lost anyway.

	-hpa


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

* Re: [PATCH 2/2] Install udev rules in system-default directory
       [not found] ` <3df55388b1b3acd142f391494f102c3ddb2270ed.1407416628.git.amit.shah__45224.3810439997$1407417016$gmane$org@redhat.com>
@ 2014-08-19 17:20   ` Paolo Bonzini
  2014-08-20  4:36     ` Amit Shah
  0 siblings, 1 reply; 11+ messages in thread
From: Paolo Bonzini @ 2014-08-19 17:20 UTC (permalink / raw)
  To: Amit Shah, jgarzik; +Cc: linux-kernel, Virtualization List, hpa

Il 07/08/2014 15:09, Amit Shah ha scritto:
> +udevrules_DATA	 = 90-virtio-rng.rules

If rng-tools is packaged with "make dist" you need this to be

dist_udevrules_DATA	 = 90-virtio-rng.rules

or alternatively

EXTRA_DIST = 90-virtio-rng.rules
udevrules_DATA	 = 90-virtio-rng.rules

> +AC_ARG_WITH([udevrulesdir],
> +	AS_HELP_STRING([--with-udevrulesdir=DIR], [Directory for udev rules]),
> +	[],
> +	[with_udevrulesdir=$($PKG_CONFIG --variable=udevdir udev)"/rules.d"])
> +AC_SUBST([udevrulesdir], [$with_udevrulesdir])

You can use AM_CONDITIONAL to skip the installation if
$with_udevrulesdir is "no" (aka --without-udevrulesdir).  Then you'd have

EXTRA_DIST = 90-virtio-rng.rules
if INSTALL_UDEV_RULES
udevrules_DATA	 = 90-virtio-rng.rules
endif

I don't know offhand if this works:

if INSTALL_UDEV_RULES
dist_udevrules_DATA	 = 90-virtio-rng.rules
endif

but I think so; you can check with "./configure --without-udevrulesdir
&& make && make dist".

Thanks,

Paolo

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

* Re: [PATCH 2/2] Install udev rules in system-default directory
  2014-08-19 17:20   ` Paolo Bonzini
@ 2014-08-20  4:36     ` Amit Shah
  0 siblings, 0 replies; 11+ messages in thread
From: Amit Shah @ 2014-08-20  4:36 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: jgarzik, linux-kernel, Virtualization List, hpa

On (Tue) 19 Aug 2014 [19:20:20], Paolo Bonzini wrote:
> Il 07/08/2014 15:09, Amit Shah ha scritto:
> > +udevrules_DATA	 = 90-virtio-rng.rules
> 
> If rng-tools is packaged with "make dist" you need this to be
> 
> dist_udevrules_DATA	 = 90-virtio-rng.rules
> 
> or alternatively
> 
> EXTRA_DIST = 90-virtio-rng.rules
> udevrules_DATA	 = 90-virtio-rng.rules
> 
> > +AC_ARG_WITH([udevrulesdir],
> > +	AS_HELP_STRING([--with-udevrulesdir=DIR], [Directory for udev rules]),
> > +	[],
> > +	[with_udevrulesdir=$($PKG_CONFIG --variable=udevdir udev)"/rules.d"])
> > +AC_SUBST([udevrulesdir], [$with_udevrulesdir])
> 
> You can use AM_CONDITIONAL to skip the installation if
> $with_udevrulesdir is "no" (aka --without-udevrulesdir).  Then you'd have
> 
> EXTRA_DIST = 90-virtio-rng.rules
> if INSTALL_UDEV_RULES
> udevrules_DATA	 = 90-virtio-rng.rules
> endif
> 
> I don't know offhand if this works:
> 
> if INSTALL_UDEV_RULES
> dist_udevrules_DATA	 = 90-virtio-rng.rules
> endif
> 
> but I think so; you can check with "./configure --without-udevrulesdir
> && make && make dist".

Thanks!  Will give this a shot for curiosity's sake.  The
khwrngd-based patch has already been merged upstream, so this is now
obsolete.


		Amit

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

end of thread, other threads:[~2014-08-20  4:37 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-08-07 13:08 [PATCH 0/2] rng-tools: add udev rule for virtio-rng Amit Shah
2014-08-07 13:08 ` [PATCH 1/2] rngd: add udev rule to source from hwrng if virtio-rng present Amit Shah
2014-08-07 19:31   ` H. Peter Anvin
2014-08-08  9:07     ` Amit Shah
2014-08-08 21:46       ` H. Peter Anvin
2014-08-11  7:15         ` Amit Shah
2014-08-11 13:30           ` Torsten Duwe
2014-08-11 16:50             ` H. Peter Anvin
2014-08-07 13:09 ` [PATCH 2/2] Install udev rules in system-default directory Amit Shah
     [not found] ` <3df55388b1b3acd142f391494f102c3ddb2270ed.1407416628.git.amit.shah__45224.3810439997$1407417016$gmane$org@redhat.com>
2014-08-19 17:20   ` Paolo Bonzini
2014-08-20  4:36     ` Amit Shah

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).