diff mbox

[2/2] kvm tools: change option type of RNG from increment to boolean

Message ID 1313574294-23123-2-git-send-email-walimisdev@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

walimis Aug. 17, 2011, 9:44 a.m. UTC
Becasue virtio random generator is a single device, change its option
type to boolean.

Signed-off-by: Liming Wang <walimisdev@gmail.com>
---
 tools/kvm/builtin-run.c |    7 +++----
 1 files changed, 3 insertions(+), 4 deletions(-)

Comments

Pekka Enberg Aug. 17, 2011, 11:44 a.m. UTC | #1
On 8/17/11 12:44 PM, Liming Wang wrote:
> Becasue virtio random generator is a single device, change its option
> type to boolean.
>
> Signed-off-by: Liming Wang<walimisdev@gmail.com>

I suppose the idea here was to support multiple rng devices. Sasha?

> ---
>   tools/kvm/builtin-run.c |    7 +++----
>   1 files changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/tools/kvm/builtin-run.c b/tools/kvm/builtin-run.c
> index 2816774..646ba21 100644
> --- a/tools/kvm/builtin-run.c
> +++ b/tools/kvm/builtin-run.c
> @@ -60,7 +60,7 @@ __thread struct kvm_cpu *current_kvm_cpu;
>
>   static u64 ram_size;
>   static u8  image_count;
> -static int virtio_rng;
> +static bool virtio_rng;
>   static const char *kernel_cmdline;
>   static const char *kernel_filename;
>   static const char *vmlinux_filename;
> @@ -161,7 +161,7 @@ static const struct option options[] = {
>   	OPT_BOOLEAN('\0', "balloon",&balloon, "Enable virtio balloon"),
>   	OPT_BOOLEAN('\0', "vnc",&vnc, "Enable VNC framebuffer"),
>   	OPT_BOOLEAN('\0', "sdl",&sdl, "Enable SDL framebuffer"),
> -	OPT_INCR('\0', "rng",&virtio_rng, "Enable virtio Random Number Generator"),
> +	OPT_BOOLEAN('\0', "rng",&virtio_rng, "Enable virtio Random Number Generator"),
>   	OPT_CALLBACK('\0', "9p", NULL, "dir_to_share,tag_name",
>   		     "Enable virtio 9p to share files between host and guest", virtio_9p_rootdir_parser),
>   	OPT_STRING('\0', "console",&console, "serial or virtio",
> @@ -641,8 +641,7 @@ int kvm_cmd_run(int argc, const char **argv, const char *prefix)
>   		virtio_console__init(kvm);
>
>   	if (virtio_rng)
> -		while (virtio_rng--)
> -			virtio_rng__init(kvm);
> +		virtio_rng__init(kvm);
>
>   	if (balloon)
>   		virtio_bln__init(kvm);

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sasha Levin Aug. 17, 2011, 12:02 p.m. UTC | #2
On Wed, Aug 17, 2011 at 2:44 PM, Pekka Enberg <penberg@kernel.org> wrote:
> On 8/17/11 12:44 PM, Liming Wang wrote:
>>
>> Becasue virtio random generator is a single device, change its option
>> type to boolean.
>>
>> Signed-off-by: Liming Wang<walimisdev@gmail.com>
>
> I suppose the idea here was to support multiple rng devices. Sasha?

I wrote the idea behind supporting multiple rng devices in the commit
message of that patch:

Since multiple hardware rng devices of the same type are currently
unsupported by the kernel, this serves more as an example of a basic
virtio driver under kvm tools and can be used to debug the PCI layer.

Currently I use it mostly to easily test the virtio-pci and related
code, for example - when I added MSI-X I've tried creating a bunch of
virtio-rng devices and seeing how the kernel handles them.

Since it having multiple virtio-rng devices doesn't really do anything
in the guest at the moment it could also be removed (unless we fix the
kernel to support them :) ).

IMO this can go either way, theres no reason to keep support for
multiple devices besides making development a bit easier.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
walimis Aug. 17, 2011, 3:14 p.m. UTC | #3
On Wed, Aug 17, 2011 at 03:02:55PM +0300, Sasha Levin wrote:
>On Wed, Aug 17, 2011 at 2:44 PM, Pekka Enberg <penberg@kernel.org> wrote:
>> On 8/17/11 12:44 PM, Liming Wang wrote:
>>>
>>> Becasue virtio random generator is a single device, change its option
>>> type to boolean.
>>>
>>> Signed-off-by: Liming Wang<walimisdev@gmail.com>
>>
>> I suppose the idea here was to support multiple rng devices. Sasha?
>
>I wrote the idea behind supporting multiple rng devices in the commit
>message of that patch:
>
>Since multiple hardware rng devices of the same type are currently
>unsupported by the kernel, this serves more as an example of a basic
>virtio driver under kvm tools and can be used to debug the PCI layer.
>
>Currently I use it mostly to easily test the virtio-pci and related
>code, for example - when I added MSI-X I've tried creating a bunch of
>virtio-rng devices and seeing how the kernel handles them.
I see.
I found this issue because kvm tools crashed when I used multiple rng devices
to test.
>
>Since it having multiple virtio-rng devices doesn't really do anything
>in the guest at the moment it could also be removed (unless we fix the
>kernel to support them :) ).
>
>IMO this can go either way, theres no reason to keep support for
>multiple devices besides making development a bit easier.
OK, as you said, we can keep it for development.

walimis
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sasha Levin Aug. 17, 2011, 3:53 p.m. UTC | #4
On Wed, Aug 17, 2011 at 6:14 PM, walimis <walimisdev@gmail.com> wrote:
> On Wed, Aug 17, 2011 at 03:02:55PM +0300, Sasha Levin wrote:
>>On Wed, Aug 17, 2011 at 2:44 PM, Pekka Enberg <penberg@kernel.org> wrote:
>>> On 8/17/11 12:44 PM, Liming Wang wrote:
>>>>
>>>> Becasue virtio random generator is a single device, change its option
>>>> type to boolean.
>>>>
>>>> Signed-off-by: Liming Wang<walimisdev@gmail.com>
>>>
>>> I suppose the idea here was to support multiple rng devices. Sasha?
>>
>>I wrote the idea behind supporting multiple rng devices in the commit
>>message of that patch:
>>
>>Since multiple hardware rng devices of the same type are currently
>>unsupported by the kernel, this serves more as an example of a basic
>>virtio driver under kvm tools and can be used to debug the PCI layer.
>>
>>Currently I use it mostly to easily test the virtio-pci and related
>>code, for example - when I added MSI-X I've tried creating a bunch of
>>virtio-rng devices and seeing how the kernel handles them.
> I see.
> I found this issue because kvm tools crashed when I used multiple rng devices
> to test.

virtio-rng itself wasn't written to support multiple devices either,
what you see when you cat /dev/hwrng with more than one device is the
guest driver hitting a BUG(). Execution should resume within the
guest.

kvm tools is innocent :)
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/tools/kvm/builtin-run.c b/tools/kvm/builtin-run.c
index 2816774..646ba21 100644
--- a/tools/kvm/builtin-run.c
+++ b/tools/kvm/builtin-run.c
@@ -60,7 +60,7 @@  __thread struct kvm_cpu *current_kvm_cpu;
 
 static u64 ram_size;
 static u8  image_count;
-static int virtio_rng;
+static bool virtio_rng;
 static const char *kernel_cmdline;
 static const char *kernel_filename;
 static const char *vmlinux_filename;
@@ -161,7 +161,7 @@  static const struct option options[] = {
 	OPT_BOOLEAN('\0', "balloon", &balloon, "Enable virtio balloon"),
 	OPT_BOOLEAN('\0', "vnc", &vnc, "Enable VNC framebuffer"),
 	OPT_BOOLEAN('\0', "sdl", &sdl, "Enable SDL framebuffer"),
-	OPT_INCR('\0', "rng", &virtio_rng, "Enable virtio Random Number Generator"),
+	OPT_BOOLEAN('\0', "rng", &virtio_rng, "Enable virtio Random Number Generator"),
 	OPT_CALLBACK('\0', "9p", NULL, "dir_to_share,tag_name",
 		     "Enable virtio 9p to share files between host and guest", virtio_9p_rootdir_parser),
 	OPT_STRING('\0', "console", &console, "serial or virtio",
@@ -641,8 +641,7 @@  int kvm_cmd_run(int argc, const char **argv, const char *prefix)
 		virtio_console__init(kvm);
 
 	if (virtio_rng)
-		while (virtio_rng--)
-			virtio_rng__init(kvm);
+		virtio_rng__init(kvm);
 
 	if (balloon)
 		virtio_bln__init(kvm);