All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Suzuki K. Poulose" <Suzuki.Poulose@arm.com>
To: Christoffer Dall <christoffer.dall@linaro.org>
Cc: kvm@vger.kernel.org, ard.biesheuvel@linaro.org,
	Marc.Zyngier@arm.com, Catalin.Marinas@arm.com,
	Will.Deacon@arm.com, linux-kernel@vger.kernel.org,
	kvmarm@lists.cs.columbia.edu,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 13/15] arm64: kvm: Rewrite fake pgd handling
Date: Tue, 13 Oct 2015 17:04:12 +0100	[thread overview]
Message-ID: <561D2B7C.5050005@arm.com> (raw)
In-Reply-To: <20151013153915.GC21861@cbox>

On 13/10/15 16:39, Christoffer Dall wrote:
> On Mon, Oct 12, 2015 at 10:55:24AM +0100, Suzuki K. Poulose wrote:
>> On 10/10/15 15:52, Christoffer Dall wrote:
>>> Hi Suzuki,
>>
>> Hi Christoffer,
>>
>> Thanks for being patient enough to review the code :-) without much of
>> the comments. I now realise there needs much more documentation than
>> what I have put in already. I am taking care of this in the next
>> revision already.
>>
>>> I had to refresh my mind a fair bit to be able to review this, so I
>>> thought it may be useful to just remind us all what the constraints of
>>> this whole thing is, and make sure we agree on this:
>>>
>>> 1. We fix the IPA max width to 40 bits
>>> 2. We don't support systems with a PARange smaller than 40 bits (do we
>>>     check this anywhere or document this anywhere?)
>>
>> AFAIT, no we don't check it anywhere. May be we should. We could plug this
>> into my CPU feature infrastructure[1] and let the is_hype_mode_available()
>> use the info to decide if we can support 40bit IPA ?
>>
>
> If we support 40bit IPA or more, yes, I think that would be sane.  Or at
> least put a comment somewhere, perhaps in Documenation.

OK

>>> 3. We always assume we are running on a system with PARange of 40 bits
>>>     and we are therefore constrained to use concatination.
>>>
>>> As an implication of (3) above, this code will attempt to allocate 256K
>>> of physically contiguous memory for each VM on the system.  That is
>>> probably ok, but I just wanted to point it out in case it raises any
>>> eyebrows for other people following this thread.
>>
>> Right, I will document this in a comment.
>>
>>>> level:  0       1         2         3
>>>> bits : [47] [46 - 36] [35 - 25] [24 - 14] [13 - 0]
>>>>           ^       ^     ^
>>>>           |       |     |
>>>>     host entry    |     x---- stage-2 entry
>>>>                   |
>>>>          IPA -----x
>>>
>>> Isn't the stage-2 entry using bits [39:25], because you resolve
>>> more than 11 bits on the initial level of lookup when you concatenate
>>> tables?
>>
>> Yes, the stage-2 entry is just supposed to show the entry level (2).
>>
>
> I don't understand, the stage-2 entry level will be at bit 39, not 35?
>

That picture shows the 'level 2' at which the stage-2 translations begin,
with 16 pages concatenated, which gives 39-25. The host kernel macros,
normally only sees upto bit 35, which is fixed using the kvm_pgd_index()
to pick the right PGD entry for a VA.

Thanks
Suzuki

WARNING: multiple messages have this Message-ID (diff)
From: Suzuki.Poulose@arm.com (Suzuki K. Poulose)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 13/15] arm64: kvm: Rewrite fake pgd handling
Date: Tue, 13 Oct 2015 17:04:12 +0100	[thread overview]
Message-ID: <561D2B7C.5050005@arm.com> (raw)
In-Reply-To: <20151013153915.GC21861@cbox>

On 13/10/15 16:39, Christoffer Dall wrote:
> On Mon, Oct 12, 2015 at 10:55:24AM +0100, Suzuki K. Poulose wrote:
>> On 10/10/15 15:52, Christoffer Dall wrote:
>>> Hi Suzuki,
>>
>> Hi Christoffer,
>>
>> Thanks for being patient enough to review the code :-) without much of
>> the comments. I now realise there needs much more documentation than
>> what I have put in already. I am taking care of this in the next
>> revision already.
>>
>>> I had to refresh my mind a fair bit to be able to review this, so I
>>> thought it may be useful to just remind us all what the constraints of
>>> this whole thing is, and make sure we agree on this:
>>>
>>> 1. We fix the IPA max width to 40 bits
>>> 2. We don't support systems with a PARange smaller than 40 bits (do we
>>>     check this anywhere or document this anywhere?)
>>
>> AFAIT, no we don't check it anywhere. May be we should. We could plug this
>> into my CPU feature infrastructure[1] and let the is_hype_mode_available()
>> use the info to decide if we can support 40bit IPA ?
>>
>
> If we support 40bit IPA or more, yes, I think that would be sane.  Or at
> least put a comment somewhere, perhaps in Documenation.

OK

>>> 3. We always assume we are running on a system with PARange of 40 bits
>>>     and we are therefore constrained to use concatination.
>>>
>>> As an implication of (3) above, this code will attempt to allocate 256K
>>> of physically contiguous memory for each VM on the system.  That is
>>> probably ok, but I just wanted to point it out in case it raises any
>>> eyebrows for other people following this thread.
>>
>> Right, I will document this in a comment.
>>
>>>> level:  0       1         2         3
>>>> bits : [47] [46 - 36] [35 - 25] [24 - 14] [13 - 0]
>>>>           ^       ^     ^
>>>>           |       |     |
>>>>     host entry    |     x---- stage-2 entry
>>>>                   |
>>>>          IPA -----x
>>>
>>> Isn't the stage-2 entry using bits [39:25], because you resolve
>>> more than 11 bits on the initial level of lookup when you concatenate
>>> tables?
>>
>> Yes, the stage-2 entry is just supposed to show the entry level (2).
>>
>
> I don't understand, the stage-2 entry level will be at bit 39, not 35?
>

That picture shows the 'level 2' at which the stage-2 translations begin,
with 16 pages concatenated, which gives 39-25. The host kernel macros,
normally only sees upto bit 35, which is fixed using the kvm_pgd_index()
to pick the right PGD entry for a VA.

Thanks
Suzuki

WARNING: multiple messages have this Message-ID (diff)
From: "Suzuki K. Poulose" <Suzuki.Poulose@arm.com>
To: Christoffer Dall <christoffer.dall@linaro.org>
Cc: linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, Catalin.Marinas@arm.com,
	Will.Deacon@arm.com, Mark.Rutland@arm.com, Marc.Zyngier@arm.com,
	kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org,
	ard.biesheuvel@linaro.org
Subject: Re: [PATCH 13/15] arm64: kvm: Rewrite fake pgd handling
Date: Tue, 13 Oct 2015 17:04:12 +0100	[thread overview]
Message-ID: <561D2B7C.5050005@arm.com> (raw)
In-Reply-To: <20151013153915.GC21861@cbox>

On 13/10/15 16:39, Christoffer Dall wrote:
> On Mon, Oct 12, 2015 at 10:55:24AM +0100, Suzuki K. Poulose wrote:
>> On 10/10/15 15:52, Christoffer Dall wrote:
>>> Hi Suzuki,
>>
>> Hi Christoffer,
>>
>> Thanks for being patient enough to review the code :-) without much of
>> the comments. I now realise there needs much more documentation than
>> what I have put in already. I am taking care of this in the next
>> revision already.
>>
>>> I had to refresh my mind a fair bit to be able to review this, so I
>>> thought it may be useful to just remind us all what the constraints of
>>> this whole thing is, and make sure we agree on this:
>>>
>>> 1. We fix the IPA max width to 40 bits
>>> 2. We don't support systems with a PARange smaller than 40 bits (do we
>>>     check this anywhere or document this anywhere?)
>>
>> AFAIT, no we don't check it anywhere. May be we should. We could plug this
>> into my CPU feature infrastructure[1] and let the is_hype_mode_available()
>> use the info to decide if we can support 40bit IPA ?
>>
>
> If we support 40bit IPA or more, yes, I think that would be sane.  Or at
> least put a comment somewhere, perhaps in Documenation.

OK

>>> 3. We always assume we are running on a system with PARange of 40 bits
>>>     and we are therefore constrained to use concatination.
>>>
>>> As an implication of (3) above, this code will attempt to allocate 256K
>>> of physically contiguous memory for each VM on the system.  That is
>>> probably ok, but I just wanted to point it out in case it raises any
>>> eyebrows for other people following this thread.
>>
>> Right, I will document this in a comment.
>>
>>>> level:  0       1         2         3
>>>> bits : [47] [46 - 36] [35 - 25] [24 - 14] [13 - 0]
>>>>           ^       ^     ^
>>>>           |       |     |
>>>>     host entry    |     x---- stage-2 entry
>>>>                   |
>>>>          IPA -----x
>>>
>>> Isn't the stage-2 entry using bits [39:25], because you resolve
>>> more than 11 bits on the initial level of lookup when you concatenate
>>> tables?
>>
>> Yes, the stage-2 entry is just supposed to show the entry level (2).
>>
>
> I don't understand, the stage-2 entry level will be at bit 39, not 35?
>

That picture shows the 'level 2' at which the stage-2 translations begin,
with 16 pages concatenated, which gives 39-25. The host kernel macros,
normally only sees upto bit 35, which is fixed using the kvm_pgd_index()
to pick the right PGD entry for a VA.

Thanks
Suzuki


  reply	other threads:[~2015-10-13 16:02 UTC|newest]

Thread overview: 121+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-15 15:41 [PATCHv2 00/15] arm64: 16K translation granule support Suzuki K. Poulose
2015-09-15 15:41 ` Suzuki K. Poulose
2015-09-15 15:41 ` Suzuki K. Poulose
2015-09-15 15:41 ` [PATCH 01/15] arm64: Move swapper pagetable definitions Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose
2015-09-15 15:41 ` [PATCH 02/15] arm64: Handle section maps for swapper/idmap Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose
2015-09-15 15:41 ` [PATCH 03/15] arm64: Introduce helpers for page table levels Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose
2015-10-07  8:26   ` Christoffer Dall
2015-10-07  8:26     ` Christoffer Dall
2015-10-07  8:26     ` Christoffer Dall
2015-10-07  9:26     ` Marc Zyngier
2015-10-07  9:26       ` Marc Zyngier
2015-10-07  9:26       ` Marc Zyngier
2015-10-07  9:48       ` Suzuki K. Poulose
2015-10-07  9:48         ` Suzuki K. Poulose
2015-10-07  9:48         ` Suzuki K. Poulose
2015-10-08 14:45       ` Christoffer Dall
2015-10-08 14:45         ` Christoffer Dall
2015-10-08 14:45         ` Christoffer Dall
2015-10-08 17:22         ` Suzuki K. Poulose
2015-10-08 17:22           ` Suzuki K. Poulose
2015-10-08 17:28           ` Catalin Marinas
2015-10-08 17:28             ` Catalin Marinas
2015-10-09  9:22             ` Suzuki K. Poulose
2015-10-09  9:22               ` Suzuki K. Poulose
2015-10-09  9:22               ` Suzuki K. Poulose
2015-10-07  9:51     ` Suzuki K. Poulose
2015-10-07  9:51       ` Suzuki K. Poulose
2015-10-07  9:51       ` Suzuki K. Poulose
2015-09-15 15:41 ` [PATCH 04/15] arm64: Calculate size for idmap_pg_dir at compile time Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose
2015-09-15 15:41 ` [PATCH 05/15] arm64: Handle 4 level page table for swapper Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose
2015-09-15 15:41 ` [PATCH 06/15] arm64: Clean config usages for page size Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose
2015-09-15 15:41 ` [PATCH 07/15] arm64: Kconfig: Fix help text about AArch32 support with 64K pages Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose
2015-09-15 15:41 ` [PATCH 08/15] arm64: Check for selected granule support Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose
2015-09-15 15:41 ` [PATCH 09/15] arm64: Add page size to the kernel image header Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose
2015-10-02 15:49   ` Catalin Marinas
2015-10-02 15:49     ` Catalin Marinas
2015-10-02 15:49     ` Catalin Marinas
2015-10-02 16:31     ` Catalin Marinas
2015-10-02 16:31       ` Catalin Marinas
2015-10-02 16:50       ` Marc Zyngier
2015-10-02 16:50         ` Marc Zyngier
2015-10-02 16:50         ` Marc Zyngier
2015-10-05 15:43         ` Christoffer Dall
2015-10-05 15:43           ` Christoffer Dall
2015-10-05 13:02     ` Suzuki K. Poulose
2015-10-05 13:02       ` Suzuki K. Poulose
2015-10-05 13:02       ` Suzuki K. Poulose
2015-10-05 13:22       ` Ard Biesheuvel
2015-10-05 13:22         ` Ard Biesheuvel
2015-10-05 13:22         ` Ard Biesheuvel
2015-10-10 17:22   ` Christoffer Dall
2015-10-10 17:22     ` Christoffer Dall
2015-10-10 17:22     ` Christoffer Dall
2015-09-15 15:41 ` [PATCH 10/15] arm64: kvm: Fix {V}TCR_EL2_TG0 mask Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose
2015-10-08 15:17   ` Christoffer Dall
2015-10-08 15:17     ` Christoffer Dall
2015-10-08 15:17     ` Christoffer Dall
2015-09-15 15:41 ` [PATCH 11/15] arm64: Cleanup VTCR_EL2 computation Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose
2015-10-07 10:11   ` Marc Zyngier
2015-10-07 10:11     ` Marc Zyngier
2015-10-07 10:23     ` Suzuki K. Poulose
2015-10-07 10:23       ` Suzuki K. Poulose
2015-10-07 10:23       ` Suzuki K. Poulose
2015-10-10 17:22   ` Christoffer Dall
2015-10-10 17:22     ` Christoffer Dall
2015-10-10 17:22     ` Christoffer Dall
2015-09-15 15:41 ` [PATCH 12/15] arm: kvm: Move fake PGD handling to arch specific files Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose
2015-10-07 10:23   ` Marc Zyngier
2015-10-07 10:23     ` Marc Zyngier
2015-10-07 10:23     ` Marc Zyngier
2015-10-10 17:22     ` Christoffer Dall
2015-10-10 17:22       ` Christoffer Dall
2015-10-10 17:22       ` Christoffer Dall
2015-09-15 15:41 ` [PATCH 13/15] arm64: kvm: Rewrite fake pgd handling Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose
2015-10-07 11:13   ` Marc Zyngier
2015-10-07 11:13     ` Marc Zyngier
2015-10-07 11:13     ` Marc Zyngier
2015-10-07 12:21     ` Suzuki K. Poulose
2015-10-07 12:21       ` Suzuki K. Poulose
2015-10-07 12:21       ` Suzuki K. Poulose
2015-10-10 14:52   ` Christoffer Dall
2015-10-10 14:52     ` Christoffer Dall
2015-10-10 14:52     ` Christoffer Dall
2015-10-12  9:55     ` Suzuki K. Poulose
2015-10-12  9:55       ` Suzuki K. Poulose
2015-10-13 15:39       ` Christoffer Dall
2015-10-13 15:39         ` Christoffer Dall
2015-10-13 15:39         ` Christoffer Dall
2015-10-13 16:04         ` Suzuki K. Poulose [this message]
2015-10-13 16:04           ` Suzuki K. Poulose
2015-10-13 16:04           ` Suzuki K. Poulose
2015-09-15 15:41 ` [PATCH 14/15] arm64: Add 16K page size support Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose
2015-09-15 15:41 ` [PATCH 15/15] arm64: 36 bit VA Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose
2015-09-15 15:41   ` Suzuki K. Poulose

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=561D2B7C.5050005@arm.com \
    --to=suzuki.poulose@arm.com \
    --cc=Catalin.Marinas@arm.com \
    --cc=Marc.Zyngier@arm.com \
    --cc=Will.Deacon@arm.com \
    --cc=ard.biesheuvel@linaro.org \
    --cc=christoffer.dall@linaro.org \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@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.