All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gleb Natapov <gleb@redhat.com>
To: Michael Ellerman <michael@ellerman.id.au>
Cc: Alexander Graf <agraf@suse.de>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Paul Mackerras <paulus@samba.org>,
	linux-kernel@vger.kernel.org, mpm@selenic.com,
	herbert@gondor.hengli.com.au, linuxppc-dev@ozlabs.org,
	kvm@vger.kernel.org, kvm-ppc@vger.kernel.org, tytso@mit.edu
Subject: Re: [PATCH 3/3] KVM: PPC: Book3S: Add support for hwrng found on some powernv systems
Date: Wed, 02 Oct 2013 14:10:32 +0000	[thread overview]
Message-ID: <20131002141032.GI17294@redhat.com> (raw)
In-Reply-To: <1380722275.12149.28.camel@concordia>

On Wed, Oct 02, 2013 at 11:57:55PM +1000, Michael Ellerman wrote:
> On Wed, 2013-10-02 at 13:02 +0300, Gleb Natapov wrote:
> > On Wed, Oct 02, 2013 at 11:50:50AM +0200, Alexander Graf wrote:
> > > 
> > > On 02.10.2013, at 11:11, Alexander Graf wrote:
> > > 
> > > So how do you solve live migration between a kernel that has this patch and one that doesn't?
> > > 
> > Yes, I alluded to it in my email to Paul and Paolo asked also. How this
> > interface is disabled? 
> 
> Yes that is a valid point.
> 
> We can't disable the interface at runtime, the guest detects its
> presence at boot.
> 
> What will happen is the hcall will come through to QEMU, which will
> reject it with H_FUNCTION (~= ENOSYS).
> 
> The current pseries-rng driver does not handle that case well, which is
> exactly why I sent patches to fix it recently.
> 
> The only other option would be to feed it with /dev/random.
> 
What about other way, if guest migrates from kvm that has no this
hypercall to one that has? We try to not change HW under guest during
migration.

> > Also hwrnd is MMIO in a host why guest needs to
> > use hypercall instead of emulating the device (in kernel or somewhere
> > else?). 
> 
> Because PAPR is a platform specification and it specifies that the
> interface is a hypervisor call. We can't just decide we want to do it
> differently.
Any insights on why it was specified this what. What is special about
hwrnd device that hypercall is needed to access it? I got that you didn't
just decide to implement it that way :) Also what will happen if guest
will find emulated hwrnd device, will it use it?

> 
> > Another things is that on a host hwrnd is protected from
> > direct userspace access by virtue of been a device, but guest code (event
> > kernel mode) is userspace as far as hosts security model goes, so by
> > implementing this hypercall in a way that directly access hwrnd you
> > expose hwrnd to a userspace unconditionally. Why is this a good idea? 
> 
> I'm not sure I follow you.
> 
> The hwrng is accessible by host userspace via /dev/mem.
> 
Regular user has no access to /dev/mem, but he can start kvm guest and
gain access to the device.

--
			Gleb.

WARNING: multiple messages have this Message-ID (diff)
From: Gleb Natapov <gleb@redhat.com>
To: Michael Ellerman <michael@ellerman.id.au>
Cc: tytso@mit.edu, kvm@vger.kernel.org, linuxppc-dev@ozlabs.org,
	Alexander Graf <agraf@suse.de>,
	kvm-ppc@vger.kernel.org, linux-kernel@vger.kernel.org,
	herbert@gondor.hengli.com.au, Paul Mackerras <paulus@samba.org>,
	mpm@selenic.com, Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [PATCH 3/3] KVM: PPC: Book3S: Add support for hwrng found on some powernv systems
Date: Wed, 2 Oct 2013 17:10:32 +0300	[thread overview]
Message-ID: <20131002141032.GI17294@redhat.com> (raw)
In-Reply-To: <1380722275.12149.28.camel@concordia>

On Wed, Oct 02, 2013 at 11:57:55PM +1000, Michael Ellerman wrote:
> On Wed, 2013-10-02 at 13:02 +0300, Gleb Natapov wrote:
> > On Wed, Oct 02, 2013 at 11:50:50AM +0200, Alexander Graf wrote:
> > > 
> > > On 02.10.2013, at 11:11, Alexander Graf wrote:
> > > 
> > > So how do you solve live migration between a kernel that has this patch and one that doesn't?
> > > 
> > Yes, I alluded to it in my email to Paul and Paolo asked also. How this
> > interface is disabled? 
> 
> Yes that is a valid point.
> 
> We can't disable the interface at runtime, the guest detects its
> presence at boot.
> 
> What will happen is the hcall will come through to QEMU, which will
> reject it with H_FUNCTION (~= ENOSYS).
> 
> The current pseries-rng driver does not handle that case well, which is
> exactly why I sent patches to fix it recently.
> 
> The only other option would be to feed it with /dev/random.
> 
What about other way, if guest migrates from kvm that has no this
hypercall to one that has? We try to not change HW under guest during
migration.

> > Also hwrnd is MMIO in a host why guest needs to
> > use hypercall instead of emulating the device (in kernel or somewhere
> > else?). 
> 
> Because PAPR is a platform specification and it specifies that the
> interface is a hypervisor call. We can't just decide we want to do it
> differently.
Any insights on why it was specified this what. What is special about
hwrnd device that hypercall is needed to access it? I got that you didn't
just decide to implement it that way :) Also what will happen if guest
will find emulated hwrnd device, will it use it?

> 
> > Another things is that on a host hwrnd is protected from
> > direct userspace access by virtue of been a device, but guest code (event
> > kernel mode) is userspace as far as hosts security model goes, so by
> > implementing this hypercall in a way that directly access hwrnd you
> > expose hwrnd to a userspace unconditionally. Why is this a good idea? 
> 
> I'm not sure I follow you.
> 
> The hwrng is accessible by host userspace via /dev/mem.
> 
Regular user has no access to /dev/mem, but he can start kvm guest and
gain access to the device.

--
			Gleb.

WARNING: multiple messages have this Message-ID (diff)
From: Gleb Natapov <gleb@redhat.com>
To: Michael Ellerman <michael@ellerman.id.au>
Cc: Alexander Graf <agraf@suse.de>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Paul Mackerras <paulus@samba.org>,
	linux-kernel@vger.kernel.org, mpm@selenic.com,
	herbert@gondor.hengli.com.au, linuxppc-dev@ozlabs.org,
	kvm@vger.kernel.org, kvm-ppc@vger.kernel.org, tytso@mit.edu
Subject: Re: [PATCH 3/3] KVM: PPC: Book3S: Add support for hwrng found on some powernv systems
Date: Wed, 2 Oct 2013 17:10:32 +0300	[thread overview]
Message-ID: <20131002141032.GI17294@redhat.com> (raw)
In-Reply-To: <1380722275.12149.28.camel@concordia>

On Wed, Oct 02, 2013 at 11:57:55PM +1000, Michael Ellerman wrote:
> On Wed, 2013-10-02 at 13:02 +0300, Gleb Natapov wrote:
> > On Wed, Oct 02, 2013 at 11:50:50AM +0200, Alexander Graf wrote:
> > > 
> > > On 02.10.2013, at 11:11, Alexander Graf wrote:
> > > 
> > > So how do you solve live migration between a kernel that has this patch and one that doesn't?
> > > 
> > Yes, I alluded to it in my email to Paul and Paolo asked also. How this
> > interface is disabled? 
> 
> Yes that is a valid point.
> 
> We can't disable the interface at runtime, the guest detects its
> presence at boot.
> 
> What will happen is the hcall will come through to QEMU, which will
> reject it with H_FUNCTION (~= ENOSYS).
> 
> The current pseries-rng driver does not handle that case well, which is
> exactly why I sent patches to fix it recently.
> 
> The only other option would be to feed it with /dev/random.
> 
What about other way, if guest migrates from kvm that has no this
hypercall to one that has? We try to not change HW under guest during
migration.

> > Also hwrnd is MMIO in a host why guest needs to
> > use hypercall instead of emulating the device (in kernel or somewhere
> > else?). 
> 
> Because PAPR is a platform specification and it specifies that the
> interface is a hypervisor call. We can't just decide we want to do it
> differently.
Any insights on why it was specified this what. What is special about
hwrnd device that hypercall is needed to access it? I got that you didn't
just decide to implement it that way :) Also what will happen if guest
will find emulated hwrnd device, will it use it?

> 
> > Another things is that on a host hwrnd is protected from
> > direct userspace access by virtue of been a device, but guest code (event
> > kernel mode) is userspace as far as hosts security model goes, so by
> > implementing this hypercall in a way that directly access hwrnd you
> > expose hwrnd to a userspace unconditionally. Why is this a good idea? 
> 
> I'm not sure I follow you.
> 
> The hwrng is accessible by host userspace via /dev/mem.
> 
Regular user has no access to /dev/mem, but he can start kvm guest and
gain access to the device.

--
			Gleb.

  parent reply	other threads:[~2013-10-02 14:10 UTC|newest]

Thread overview: 146+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-26  6:31 [PATCH 1/3] powerpc: Implement arch_get_random_long/int() for powernv Michael Ellerman
2013-09-26  6:31 ` Michael Ellerman
2013-09-26  6:31 ` Michael Ellerman
2013-09-26  6:31 ` Michael Ellerman
2013-09-26  6:31 ` [PATCH 2/3] hwrng: Add a driver for the hwrng found in power7+ systems Michael Ellerman
2013-09-26  6:31   ` Michael Ellerman
2013-09-26  6:31   ` Michael Ellerman
2013-09-26  6:31   ` Michael Ellerman
2013-09-26  8:01   ` Benjamin Herrenschmidt
2013-09-26  8:01     ` Benjamin Herrenschmidt
2013-09-26  8:01     ` Benjamin Herrenschmidt
2013-10-01  8:25     ` Michael Ellerman
2013-10-01  8:25       ` Michael Ellerman
2013-10-01  8:25       ` Michael Ellerman
2013-09-26  6:31 ` [PATCH 3/3] KVM: PPC: Book3S: Add support for hwrng found on some powernv systems Michael Ellerman
2013-09-26  6:31   ` Michael Ellerman
2013-09-26  6:31   ` Michael Ellerman
2013-09-26  6:31   ` Michael Ellerman
2013-09-26  9:06   ` Paolo Bonzini
2013-09-26  9:06     ` Paolo Bonzini
2013-09-26  9:06     ` Paolo Bonzini
2013-09-26  9:06     ` Paolo Bonzini
2013-10-01  8:34     ` Michael Ellerman
2013-10-01  8:34       ` Michael Ellerman
2013-10-01  8:34       ` Michael Ellerman
2013-10-01  8:34       ` Michael Ellerman
2013-10-01  8:39       ` Gleb Natapov
2013-10-01  8:39         ` Gleb Natapov
2013-10-01  8:39         ` Gleb Natapov
2013-10-01  9:23         ` Paul Mackerras
2013-10-01  9:23           ` Paul Mackerras
2013-10-01  9:23           ` Paul Mackerras
2013-10-01  9:57           ` Gleb Natapov
2013-10-01  9:57             ` Gleb Natapov
2013-10-01  9:57             ` Gleb Natapov
2013-10-01 10:00           ` Alexander Graf
2013-10-01 10:00             ` Alexander Graf
2013-10-01 10:00             ` Alexander Graf
2013-10-01  9:38         ` Benjamin Herrenschmidt
2013-10-01  9:38           ` Benjamin Herrenschmidt
2013-10-01  9:38           ` Benjamin Herrenschmidt
2013-10-01 11:19           ` Paolo Bonzini
2013-10-01 11:19             ` Paolo Bonzini
2013-10-01 11:19             ` Paolo Bonzini
2013-10-01 21:44             ` Benjamin Herrenschmidt
2013-10-01 21:44               ` Benjamin Herrenschmidt
2013-10-01 21:44               ` Benjamin Herrenschmidt
2013-10-02  8:38               ` Paolo Bonzini
2013-10-02  8:38                 ` Paolo Bonzini
2013-10-02  8:38                 ` Paolo Bonzini
2013-10-02  5:09             ` Paul Mackerras
2013-10-02  5:09               ` Paul Mackerras
2013-10-02  5:09               ` Paul Mackerras
2013-10-02  8:46               ` Paolo Bonzini
2013-10-02  8:46                 ` Paolo Bonzini
2013-10-02  8:46                 ` Paolo Bonzini
2013-10-02  9:06                 ` Benjamin Herrenschmidt
2013-10-02  9:06                   ` Benjamin Herrenschmidt
2013-10-02  9:06                   ` Benjamin Herrenschmidt
2013-10-02  9:11                   ` Alexander Graf
2013-10-02  9:11                     ` Alexander Graf
2013-10-02  9:11                     ` Alexander Graf
2013-10-02  9:50                     ` Alexander Graf
2013-10-02  9:50                       ` Alexander Graf
2013-10-02  9:50                       ` Alexander Graf
2013-10-02 10:02                       ` Gleb Natapov
2013-10-02 10:02                         ` Gleb Natapov
2013-10-02 10:02                         ` Gleb Natapov
2013-10-02 13:57                         ` Michael Ellerman
2013-10-02 13:57                           ` Michael Ellerman
2013-10-02 13:57                           ` Michael Ellerman
2013-10-02 14:08                           ` Alexander Graf
2013-10-02 14:08                             ` Alexander Graf
2013-10-02 14:08                             ` Alexander Graf
2013-10-02 14:33                             ` Paolo Bonzini
2013-10-02 14:33                               ` Paolo Bonzini
2013-10-02 14:33                               ` Paolo Bonzini
2013-10-02 14:36                               ` Alexander Graf
2013-10-02 14:36                                 ` Alexander Graf
2013-10-02 14:36                                 ` Alexander Graf
2013-10-02 14:38                                 ` Paolo Bonzini
2013-10-02 14:38                                   ` Paolo Bonzini
2013-10-02 14:38                                   ` Paolo Bonzini
2013-10-02 22:45                                 ` Paul Mackerras
2013-10-02 22:45                                   ` Paul Mackerras
2013-10-02 22:45                                   ` Paul Mackerras
2013-10-03  5:48                                   ` Gleb Natapov
2013-10-03  5:48                                     ` Gleb Natapov
2013-10-03  5:48                                     ` Gleb Natapov
2013-10-03 10:06                                     ` Paul Mackerras
2013-10-03 10:06                                       ` Paul Mackerras
2013-10-03 10:06                                       ` Paul Mackerras
2013-10-03 12:08                                       ` Gleb Natapov
2013-10-03 12:08                                         ` Gleb Natapov
2013-10-03 12:08                                         ` Gleb Natapov
2013-10-02 14:37                               ` Gleb Natapov
2013-10-02 14:37                                 ` Gleb Natapov
2013-10-02 14:37                                 ` Gleb Natapov
2013-10-02 22:21                                 ` Benjamin Herrenschmidt
2013-10-02 22:21                                   ` Benjamin Herrenschmidt
2013-10-02 22:21                                   ` Benjamin Herrenschmidt
2013-10-03  6:08                                   ` Gleb Natapov
2013-10-03  6:08                                     ` Gleb Natapov
2013-10-03  6:08                                     ` Gleb Natapov
2013-10-02 22:13                             ` Benjamin Herrenschmidt
2013-10-02 22:13                               ` Benjamin Herrenschmidt
2013-10-02 22:13                               ` Benjamin Herrenschmidt
2013-10-02 14:10                           ` Gleb Natapov [this message]
2013-10-02 14:10                             ` Gleb Natapov
2013-10-02 14:10                             ` Gleb Natapov
2013-10-02 22:15                             ` Benjamin Herrenschmidt
2013-10-02 22:15                               ` Benjamin Herrenschmidt
2013-10-02 22:15                               ` Benjamin Herrenschmidt
2013-10-02 22:02                         ` Benjamin Herrenschmidt
2013-10-02 22:02                           ` Benjamin Herrenschmidt
2013-10-02 22:02                           ` Benjamin Herrenschmidt
2013-10-03  5:43                           ` Gleb Natapov
2013-10-03  5:43                             ` Gleb Natapov
2013-10-03  5:43                             ` Gleb Natapov
2013-10-03  7:22                             ` Benjamin Herrenschmidt
2013-10-03  7:22                               ` Benjamin Herrenschmidt
2013-10-03  7:22                               ` Benjamin Herrenschmidt
2013-10-02 22:07                         ` Benjamin Herrenschmidt
2013-10-02 22:07                           ` Benjamin Herrenschmidt
2013-10-02 22:07                           ` Benjamin Herrenschmidt
2013-10-03  6:28                           ` Gleb Natapov
2013-10-03  6:28                             ` Gleb Natapov
2013-10-03  6:28                             ` Gleb Natapov
2013-10-02 21:58                     ` Benjamin Herrenschmidt
2013-10-02 21:58                       ` Benjamin Herrenschmidt
2013-10-02 21:58                       ` Benjamin Herrenschmidt
2013-10-01  9:58       ` Paolo Bonzini
2013-10-01  9:58         ` Paolo Bonzini
2013-10-01  9:58         ` Paolo Bonzini
2013-10-01  9:58         ` Paolo Bonzini
2013-09-27 14:15   ` Anshuman Khandual
2013-09-27 14:27     ` Anshuman Khandual
2013-09-27 14:15     ` Anshuman Khandual
2013-09-27 14:15     ` Anshuman Khandual
2013-10-01  8:36     ` Michael Ellerman
2013-10-01  8:36       ` Michael Ellerman
2013-10-01  8:36       ` Michael Ellerman
2013-10-01  8:36       ` Michael Ellerman
2013-09-26  7:58 ` [PATCH 1/3] powerpc: Implement arch_get_random_long/int() for powernv Benjamin Herrenschmidt
2013-09-26  7:58   ` Benjamin Herrenschmidt
2013-09-26  7:58   ` Benjamin Herrenschmidt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20131002141032.GI17294@redhat.com \
    --to=gleb@redhat.com \
    --cc=agraf@suse.de \
    --cc=benh@kernel.crashing.org \
    --cc=herbert@gondor.hengli.com.au \
    --cc=kvm-ppc@vger.kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@ozlabs.org \
    --cc=michael@ellerman.id.au \
    --cc=mpm@selenic.com \
    --cc=paulus@samba.org \
    --cc=pbonzini@redhat.com \
    --cc=tytso@mit.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.