From: Christoffer Dall <christoffer.dall@linaro.org>
To: kvm-ia64@vger.kernel.org
Subject: Re: [PATCH v15 11/11] KVM: arm/arm64: Add support to dissolve huge PUD
Date: Fri, 09 Jan 2015 10:23:19 +0000 [thread overview]
Message-ID: <20150109102319.GM21092@cbox> (raw)
In-Reply-To: <1418628488-3696-12-git-send-email-m.smarduch@samsung.com>
On Thu, Jan 08, 2015 at 08:41:15AM -0800, Mario Smarduch wrote:
[...]
> >>>
> >>> I'm just thinking here, why do we need to check if we get a valid pud
> >>> back here, but we don't need the equivalent check in dissolve_pmd from
> >>> patch 7?
> >>
> >> kvm_pud_huge() doesn't check bit 0 for invalid entry, but
> >> pud_none() is not the right way to check either, maybe pud_bad()
> >> first. Nothing is done in patch 7 since the pmd is retrieved from
> >> stage2_get_pmd().
> >>
> >
> > hmmm, but stage2_get_pmd() can return a NULL pointer if you have the
> > IOMAP flag set...
> >
> >>>
> >>> I think the rationale is that it should never happen because we never
> >>> call these functions with the logging and iomap flags at the same
> >>> time...
> >>
> >> I'm little lost here, not sure how it's related to above.
> >> But I think a VFIO device will have a memslot and
> >> it would be possible to enable logging. But to what
> >> end I'm not sure.
> >>
> >
> > As I said above, if you call the set_s2pte function with the IOMAP and
> > LOGGING flags set, then you'll end up in a situation where you can get a
> > NULL pointer back from stage2_get_pmd() but you're never checking
> > against that.
>
> I see what you're saying now.
> >
> > Now, this raises an interesting point, we have now added code that
> > prevents faults from ever happening on device maps, but introducing a
> > path here where the user can set logging on a memslot with device memory
> > regions, which introduces write faults on such regions. My gut feeling
> > is that we should avoid that from ever happening, and not allow this
> > function to be called with both flags set.
>
> Maybe kvm_arch_prepare_memory_region() can check if
> KVM_MEM_LOG_DIRTY_PAGES is being enabled for an IO region
> and don't allow it.
>
Yeah, I think we need to add a check for that somewhere as part of this
series (patch 7 perhaps?).
-Christoffer
WARNING: multiple messages have this Message-ID (diff)
From: Christoffer Dall <christoffer.dall@linaro.org>
To: Mario Smarduch <m.smarduch@samsung.com>
Cc: pbonzini@redhat.com, james.hogan@imgtec.com, agraf@suse.de,
marc.zyngier@arm.com, cornelia.huck@de.ibm.com,
borntraeger@de.ibm.com, catalin.marinas@arm.com,
kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org,
kvm-ppc@vger.kernel.org, kvm-ia64@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, steve.capper@arm.com,
peter.maydell@linaro.org,
Ard Biesheuvel <ard.biesheuvel@linaro.org>
Subject: Re: [PATCH v15 11/11] KVM: arm/arm64: Add support to dissolve huge PUD
Date: Fri, 09 Jan 2015 10:23:19 +0000 [thread overview]
Message-ID: <20150109102319.GM21092@cbox> (raw)
In-Reply-To: <54AEB32B.3060504@samsung.com>
On Thu, Jan 08, 2015 at 08:41:15AM -0800, Mario Smarduch wrote:
[...]
> >>>
> >>> I'm just thinking here, why do we need to check if we get a valid pud
> >>> back here, but we don't need the equivalent check in dissolve_pmd from
> >>> patch 7?
> >>
> >> kvm_pud_huge() doesn't check bit 0 for invalid entry, but
> >> pud_none() is not the right way to check either, maybe pud_bad()
> >> first. Nothing is done in patch 7 since the pmd is retrieved from
> >> stage2_get_pmd().
> >>
> >
> > hmmm, but stage2_get_pmd() can return a NULL pointer if you have the
> > IOMAP flag set...
> >
> >>>
> >>> I think the rationale is that it should never happen because we never
> >>> call these functions with the logging and iomap flags at the same
> >>> time...
> >>
> >> I'm little lost here, not sure how it's related to above.
> >> But I think a VFIO device will have a memslot and
> >> it would be possible to enable logging. But to what
> >> end I'm not sure.
> >>
> >
> > As I said above, if you call the set_s2pte function with the IOMAP and
> > LOGGING flags set, then you'll end up in a situation where you can get a
> > NULL pointer back from stage2_get_pmd() but you're never checking
> > against that.
>
> I see what you're saying now.
> >
> > Now, this raises an interesting point, we have now added code that
> > prevents faults from ever happening on device maps, but introducing a
> > path here where the user can set logging on a memslot with device memory
> > regions, which introduces write faults on such regions. My gut feeling
> > is that we should avoid that from ever happening, and not allow this
> > function to be called with both flags set.
>
> Maybe kvm_arch_prepare_memory_region() can check if
> KVM_MEM_LOG_DIRTY_PAGES is being enabled for an IO region
> and don't allow it.
>
Yeah, I think we need to add a check for that somewhere as part of this
series (patch 7 perhaps?).
-Christoffer
WARNING: multiple messages have this Message-ID (diff)
From: christoffer.dall@linaro.org (Christoffer Dall)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v15 11/11] KVM: arm/arm64: Add support to dissolve huge PUD
Date: Fri, 9 Jan 2015 11:23:19 +0100 [thread overview]
Message-ID: <20150109102319.GM21092@cbox> (raw)
In-Reply-To: <54AEB32B.3060504@samsung.com>
On Thu, Jan 08, 2015 at 08:41:15AM -0800, Mario Smarduch wrote:
[...]
> >>>
> >>> I'm just thinking here, why do we need to check if we get a valid pud
> >>> back here, but we don't need the equivalent check in dissolve_pmd from
> >>> patch 7?
> >>
> >> kvm_pud_huge() doesn't check bit 0 for invalid entry, but
> >> pud_none() is not the right way to check either, maybe pud_bad()
> >> first. Nothing is done in patch 7 since the pmd is retrieved from
> >> stage2_get_pmd().
> >>
> >
> > hmmm, but stage2_get_pmd() can return a NULL pointer if you have the
> > IOMAP flag set...
> >
> >>>
> >>> I think the rationale is that it should never happen because we never
> >>> call these functions with the logging and iomap flags at the same
> >>> time...
> >>
> >> I'm little lost here, not sure how it's related to above.
> >> But I think a VFIO device will have a memslot and
> >> it would be possible to enable logging. But to what
> >> end I'm not sure.
> >>
> >
> > As I said above, if you call the set_s2pte function with the IOMAP and
> > LOGGING flags set, then you'll end up in a situation where you can get a
> > NULL pointer back from stage2_get_pmd() but you're never checking
> > against that.
>
> I see what you're saying now.
> >
> > Now, this raises an interesting point, we have now added code that
> > prevents faults from ever happening on device maps, but introducing a
> > path here where the user can set logging on a memslot with device memory
> > regions, which introduces write faults on such regions. My gut feeling
> > is that we should avoid that from ever happening, and not allow this
> > function to be called with both flags set.
>
> Maybe kvm_arch_prepare_memory_region() can check if
> KVM_MEM_LOG_DIRTY_PAGES is being enabled for an IO region
> and don't allow it.
>
Yeah, I think we need to add a check for that somewhere as part of this
series (patch 7 perhaps?).
-Christoffer
WARNING: multiple messages have this Message-ID (diff)
From: Christoffer Dall <christoffer.dall@linaro.org>
To: Mario Smarduch <m.smarduch@samsung.com>
Cc: pbonzini@redhat.com, james.hogan@imgtec.com, agraf@suse.de,
marc.zyngier@arm.com, cornelia.huck@de.ibm.com,
borntraeger@de.ibm.com, catalin.marinas@arm.com,
kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org,
kvm-ppc@vger.kernel.org, kvm-ia64@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, steve.capper@arm.com,
peter.maydell@linaro.org,
Ard Biesheuvel <ard.biesheuvel@linaro.org>
Subject: Re: [PATCH v15 11/11] KVM: arm/arm64: Add support to dissolve huge PUD
Date: Fri, 9 Jan 2015 11:23:19 +0100 [thread overview]
Message-ID: <20150109102319.GM21092@cbox> (raw)
In-Reply-To: <54AEB32B.3060504@samsung.com>
On Thu, Jan 08, 2015 at 08:41:15AM -0800, Mario Smarduch wrote:
[...]
> >>>
> >>> I'm just thinking here, why do we need to check if we get a valid pud
> >>> back here, but we don't need the equivalent check in dissolve_pmd from
> >>> patch 7?
> >>
> >> kvm_pud_huge() doesn't check bit 0 for invalid entry, but
> >> pud_none() is not the right way to check either, maybe pud_bad()
> >> first. Nothing is done in patch 7 since the pmd is retrieved from
> >> stage2_get_pmd().
> >>
> >
> > hmmm, but stage2_get_pmd() can return a NULL pointer if you have the
> > IOMAP flag set...
> >
> >>>
> >>> I think the rationale is that it should never happen because we never
> >>> call these functions with the logging and iomap flags at the same
> >>> time...
> >>
> >> I'm little lost here, not sure how it's related to above.
> >> But I think a VFIO device will have a memslot and
> >> it would be possible to enable logging. But to what
> >> end I'm not sure.
> >>
> >
> > As I said above, if you call the set_s2pte function with the IOMAP and
> > LOGGING flags set, then you'll end up in a situation where you can get a
> > NULL pointer back from stage2_get_pmd() but you're never checking
> > against that.
>
> I see what you're saying now.
> >
> > Now, this raises an interesting point, we have now added code that
> > prevents faults from ever happening on device maps, but introducing a
> > path here where the user can set logging on a memslot with device memory
> > regions, which introduces write faults on such regions. My gut feeling
> > is that we should avoid that from ever happening, and not allow this
> > function to be called with both flags set.
>
> Maybe kvm_arch_prepare_memory_region() can check if
> KVM_MEM_LOG_DIRTY_PAGES is being enabled for an IO region
> and don't allow it.
>
Yeah, I think we need to add a check for that somewhere as part of this
series (patch 7 perhaps?).
-Christoffer
next prev parent reply other threads:[~2015-01-09 10:23 UTC|newest]
Thread overview: 110+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-15 7:28 [PATCH v15 11/11] KVM: arm/arm64: Add support to dissolve huge PUD Mario Smarduch
2014-12-15 7:28 ` Mario Smarduch
2014-12-15 7:28 ` Mario Smarduch
2014-12-15 7:28 ` Mario Smarduch
2015-01-07 13:05 ` Christoffer Dall
2015-01-07 13:05 ` Christoffer Dall
2015-01-07 13:05 ` Christoffer Dall
2015-01-07 13:05 ` Christoffer Dall
2015-01-08 3:01 ` Mario Smarduch
2015-01-08 3:01 ` Mario Smarduch
2015-01-08 3:01 ` Mario Smarduch
2015-01-08 3:01 ` Mario Smarduch
2015-01-08 11:32 ` Christoffer Dall
2015-01-08 11:32 ` Christoffer Dall
2015-01-08 11:32 ` Christoffer Dall
2015-01-08 11:32 ` Christoffer Dall
2015-01-08 16:41 ` Mario Smarduch
2015-01-08 16:41 ` Mario Smarduch
2015-01-08 16:41 ` Mario Smarduch
2015-01-08 16:41 ` Mario Smarduch
2015-01-08 16:42 ` Mario Smarduch
2015-01-08 16:42 ` Mario Smarduch
2015-01-08 16:42 ` Mario Smarduch
2015-01-08 16:42 ` Mario Smarduch
2015-01-09 10:23 ` Christoffer Dall [this message]
2015-01-09 10:23 ` Christoffer Dall
2015-01-09 10:23 ` Christoffer Dall
2015-01-09 10:23 ` Christoffer Dall
-- strict thread matches above, loose matches on Subject: below --
2015-01-07 13:05 [PATCH v15 06/11] KVM: arm: dirty logging write protect support Christoffer Dall
2015-01-07 13:05 ` Christoffer Dall
2015-01-07 13:05 ` Christoffer Dall
2015-01-07 13:05 ` Christoffer Dall
2015-01-07 13:05 [PATCH v15 05/11] KVM: arm: Add initial dirty page locking support Christoffer Dall
2015-01-07 13:05 ` Christoffer Dall
2015-01-07 13:05 ` Christoffer Dall
2015-01-07 13:05 ` Christoffer Dall
2014-12-15 7:28 [PATCH v15 10/11] KVM: arm/arm64: Enable Dirty Page logging for ARMv8 Mario Smarduch
2014-12-15 7:28 ` Mario Smarduch
2014-12-15 7:28 ` Mario Smarduch
2014-12-15 7:28 ` Mario Smarduch
2015-01-07 12:47 ` Christoffer Dall
2015-01-07 12:47 ` Christoffer Dall
2015-01-07 12:47 ` Christoffer Dall
2015-01-07 12:47 ` Christoffer Dall
2015-01-08 1:51 ` Mario Smarduch
2015-01-08 1:51 ` Mario Smarduch
2015-01-08 1:51 ` Mario Smarduch
2015-01-08 1:51 ` Mario Smarduch
2015-01-08 10:56 ` Christoffer Dall
2015-01-08 10:56 ` Christoffer Dall
2015-01-08 10:56 ` Christoffer Dall
2015-01-08 10:56 ` Christoffer Dall
2015-01-08 16:30 ` Mario Smarduch
2015-01-08 16:30 ` Mario Smarduch
2015-01-08 16:30 ` Mario Smarduch
2015-01-08 16:30 ` Mario Smarduch
2014-12-15 7:28 [PATCH v15 09/11] KVM: arm64: Add HYP interface to flush VM Stage 1/2 TLB entires Mario Smarduch
2014-12-15 7:28 ` Mario Smarduch
2014-12-15 7:28 ` Mario Smarduch
2014-12-15 7:28 ` Mario Smarduch
2014-12-15 7:28 [PATCH v15 08/11] KVM: arm64: ARMv8 header changes for page logging Mario Smarduch
2014-12-15 7:28 ` Mario Smarduch
2014-12-15 7:28 ` Mario Smarduch
2014-12-15 7:28 ` Mario Smarduch
2014-12-15 7:28 [PATCH v15 07/11] KVM: arm: page logging 2nd stage fault handling Mario Smarduch
2014-12-15 7:28 ` Mario Smarduch
2014-12-15 7:28 ` Mario Smarduch
2014-12-15 7:28 ` Mario Smarduch
2014-12-15 7:28 [PATCH v15 06/11] KVM: arm: dirty logging write protect support Mario Smarduch
2014-12-15 7:28 ` Mario Smarduch
2014-12-15 7:28 ` Mario Smarduch
2014-12-15 7:28 ` Mario Smarduch
2014-12-15 7:28 [PATCH v15 05/11] KVM: arm: Add initial dirty page locking support Mario Smarduch
2014-12-15 7:28 ` Mario Smarduch
2014-12-15 7:28 ` Mario Smarduch
2014-12-15 7:28 ` Mario Smarduch
2014-12-15 7:28 [PATCH v15 04/11] KVM: arm: Add ARMv7 API to flush TLBs Mario Smarduch
2014-12-15 7:28 ` Mario Smarduch
2014-12-15 7:28 ` Mario Smarduch
2014-12-15 7:28 ` Mario Smarduch
2014-12-15 7:28 [PATCH v15 03/11] KVM: x86: switch to kvm_get_dirty_log_protect Mario Smarduch
2014-12-15 7:28 ` Mario Smarduch
2014-12-15 7:28 ` Mario Smarduch
2014-12-15 7:28 ` Mario Smarduch
2014-12-15 7:27 [PATCH v15 02/11] KVM: Add generic support for dirty page logging Mario Smarduch
2014-12-15 7:27 ` Mario Smarduch
2014-12-15 7:27 ` Mario Smarduch
2014-12-15 7:27 ` Mario Smarduch
2014-12-15 7:27 [PATCH v15 01/11] KVM: Add architecture-defined TLB flush support Mario Smarduch
2014-12-15 7:27 ` Mario Smarduch
2014-12-15 7:27 ` Mario Smarduch
2014-12-15 7:27 ` Mario Smarduch
2014-12-15 7:27 [PATCH v15 00/11] KVM//x86/arm/arm64: dirty page logging for ARMv7/8 (3.18.0-rc2) Mario Smarduch
2014-12-15 7:27 ` Mario Smarduch
2014-12-15 7:27 ` Mario Smarduch
2014-12-15 7:27 ` Mario Smarduch
2014-12-18 2:07 ` [RESEND PATCH v15 07/11] KVM: arm: page logging 2nd stage fault handling Mario Smarduch
2014-12-18 2:07 ` Mario Smarduch
2015-01-07 12:38 ` Christoffer Dall
2015-01-07 12:38 ` Christoffer Dall
2015-01-08 1:43 ` Mario Smarduch
2015-01-08 1:43 ` Mario Smarduch
2015-01-08 10:45 ` Christoffer Dall
2015-01-08 10:45 ` Christoffer Dall
2015-01-08 16:28 ` Mario Smarduch
2015-01-08 16:28 ` Mario Smarduch
2015-01-09 10:24 ` Christoffer Dall
2015-01-09 10:24 ` Christoffer Dall
2015-01-10 4:38 ` Mario Smarduch
2015-01-10 4:38 ` Mario Smarduch
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=20150109102319.GM21092@cbox \
--to=christoffer.dall@linaro.org \
--cc=kvm-ia64@vger.kernel.org \
/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.