All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oliver Upton <oliver.upton@linux.dev>
To: Ryan Roberts <ryan.roberts@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>,
	Will Deacon <will@kernel.org>, Marc Zyngier <maz@kernel.org>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	James Morse <james.morse@arm.com>,
	Zenghui Yu <yuzenghui@huawei.com>,
	Ard Biesheuvel <ardb@kernel.org>,
	Anshuman Khandual <anshuman.khandual@arm.com>,
	linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev
Subject: Re: [PATCH v5 11/12] KVM: selftests: arm64: Determine max ipa size per-page size
Date: Tue, 21 Nov 2023 23:34:06 +0000	[thread overview]
Message-ID: <ZV0-bmqsCM8o_gli@linux.dev> (raw)
In-Reply-To: <20231116142931.1675485-12-ryan.roberts@arm.com>

On Thu, Nov 16, 2023 at 02:29:30PM +0000, Ryan Roberts wrote:

[...]

> @@ -518,9 +530,14 @@ void aarch64_get_supported_page_sizes(uint32_t ipa,
>  	err = ioctl(vcpu_fd, KVM_GET_ONE_REG, &reg);
>  	TEST_ASSERT(err == 0, KVM_IOCTL_ERROR(KVM_GET_ONE_REG, vcpu_fd));
>  
> -	*ps4k = FIELD_GET(ARM64_FEATURE_MASK(ID_AA64MMFR0_EL1_TGRAN4), val) != 0xf;
> -	*ps64k = FIELD_GET(ARM64_FEATURE_MASK(ID_AA64MMFR0_EL1_TGRAN64), val) == 0;
> -	*ps16k = FIELD_GET(ARM64_FEATURE_MASK(ID_AA64MMFR0_EL1_TGRAN16), val) != 0;
> +	gran = FIELD_GET(ARM64_FEATURE_MASK(ID_AA64MMFR0_EL1_TGRAN4), val);
> +	*ipa4k = max_ipa_for_page_size(ipa, gran, 0xf, 1);
> +
> +	gran = FIELD_GET(ARM64_FEATURE_MASK(ID_AA64MMFR0_EL1_TGRAN64), val);
> +	*ipa64k = max_ipa_for_page_size(ipa, gran, 0xf, 0);
> +
> +	gran = FIELD_GET(ARM64_FEATURE_MASK(ID_AA64MMFR0_EL1_TGRAN16), val);
> +	*ipa16k = max_ipa_for_page_size(ipa, gran, 0, 2);

Oh, also: we have the generated system register definitions available in
KVM selftests at this point. It'd be a good idea to move away from
'magic' values and use the enumerations instead.

-- 
Thanks,
Oliver

WARNING: multiple messages have this Message-ID (diff)
From: Oliver Upton <oliver.upton@linux.dev>
To: Ryan Roberts <ryan.roberts@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>,
	Will Deacon <will@kernel.org>, Marc Zyngier <maz@kernel.org>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	James Morse <james.morse@arm.com>,
	Zenghui Yu <yuzenghui@huawei.com>,
	Ard Biesheuvel <ardb@kernel.org>,
	Anshuman Khandual <anshuman.khandual@arm.com>,
	linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev
Subject: Re: [PATCH v5 11/12] KVM: selftests: arm64: Determine max ipa size per-page size
Date: Tue, 21 Nov 2023 23:34:06 +0000	[thread overview]
Message-ID: <ZV0-bmqsCM8o_gli@linux.dev> (raw)
In-Reply-To: <20231116142931.1675485-12-ryan.roberts@arm.com>

On Thu, Nov 16, 2023 at 02:29:30PM +0000, Ryan Roberts wrote:

[...]

> @@ -518,9 +530,14 @@ void aarch64_get_supported_page_sizes(uint32_t ipa,
>  	err = ioctl(vcpu_fd, KVM_GET_ONE_REG, &reg);
>  	TEST_ASSERT(err == 0, KVM_IOCTL_ERROR(KVM_GET_ONE_REG, vcpu_fd));
>  
> -	*ps4k = FIELD_GET(ARM64_FEATURE_MASK(ID_AA64MMFR0_EL1_TGRAN4), val) != 0xf;
> -	*ps64k = FIELD_GET(ARM64_FEATURE_MASK(ID_AA64MMFR0_EL1_TGRAN64), val) == 0;
> -	*ps16k = FIELD_GET(ARM64_FEATURE_MASK(ID_AA64MMFR0_EL1_TGRAN16), val) != 0;
> +	gran = FIELD_GET(ARM64_FEATURE_MASK(ID_AA64MMFR0_EL1_TGRAN4), val);
> +	*ipa4k = max_ipa_for_page_size(ipa, gran, 0xf, 1);
> +
> +	gran = FIELD_GET(ARM64_FEATURE_MASK(ID_AA64MMFR0_EL1_TGRAN64), val);
> +	*ipa64k = max_ipa_for_page_size(ipa, gran, 0xf, 0);
> +
> +	gran = FIELD_GET(ARM64_FEATURE_MASK(ID_AA64MMFR0_EL1_TGRAN16), val);
> +	*ipa16k = max_ipa_for_page_size(ipa, gran, 0, 2);

Oh, also: we have the generated system register definitions available in
KVM selftests at this point. It'd be a good idea to move away from
'magic' values and use the enumerations instead.

-- 
Thanks,
Oliver

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2023-11-21 23:34 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-16 14:29 [PATCH v5 00/12] KVM: arm64: Support FEAT_LPA2 at hyp s1 and vm s2 Ryan Roberts
2023-11-16 14:29 ` Ryan Roberts
2023-11-16 14:29 ` [PATCH v5 01/12] arm64/mm: Modify range-based tlbi to decrement scale Ryan Roberts
2023-11-16 14:29   ` Ryan Roberts
2023-11-16 14:29 ` [PATCH v5 02/12] arm64/mm: Add lpa2_is_enabled() kvm_lpa2_is_enabled() stubs Ryan Roberts
2023-11-16 14:29   ` Ryan Roberts
2023-11-16 14:29 ` [PATCH v5 03/12] arm64/mm: Update tlb invalidation routines for FEAT_LPA2 Ryan Roberts
2023-11-16 14:29   ` Ryan Roberts
2023-11-16 14:29 ` [PATCH v5 04/12] arm64: Add ARM64_HAS_LPA2 CPU capability Ryan Roberts
2023-11-16 14:29   ` Ryan Roberts
2023-11-22 15:14   ` Marc Zyngier
2023-11-22 15:14     ` Marc Zyngier
2023-11-16 14:29 ` [PATCH v5 05/12] arm64/mm: Add FEAT_LPA2 specific ID_AA64MMFR0.TGRAN[2] Ryan Roberts
2023-11-16 14:29   ` Ryan Roberts
2023-11-16 14:29 ` [PATCH v5 06/12] KVM: arm64: Add new (V)TCR_EL2 field definitions for FEAT_LPA2 Ryan Roberts
2023-11-16 14:29   ` Ryan Roberts
2023-11-16 14:29 ` [PATCH v5 07/12] KVM: arm64: Use LPA2 page-tables for stage2 and hyp stage1 Ryan Roberts
2023-11-16 14:29   ` Ryan Roberts
2023-11-21 20:34   ` Oliver Upton
2023-11-21 20:34     ` Oliver Upton
2023-11-22 13:41     ` Ryan Roberts
2023-11-22 13:41       ` Ryan Roberts
2023-11-22 15:21       ` Marc Zyngier
2023-11-22 15:21         ` Marc Zyngier
2023-11-24 11:49         ` Ryan Roberts
2023-11-24 11:49           ` Ryan Roberts
2023-11-27  9:32           ` Marc Zyngier
2023-11-27  9:32             ` Marc Zyngier
2023-11-27  9:43             ` Ryan Roberts
2023-11-27  9:43               ` Ryan Roberts
2023-11-16 14:29 ` [PATCH v5 08/12] KVM: arm64: Convert translation level parameter to s8 Ryan Roberts
2023-11-16 14:29   ` Ryan Roberts
2023-11-16 14:29 ` [PATCH v5 09/12] KVM: arm64: Support up to 5 levels of translation in kvm_pgtable Ryan Roberts
2023-11-16 14:29   ` Ryan Roberts
2023-11-16 14:29 ` [PATCH v5 10/12] KVM: arm64: Allow guests with >48-bit IPA size on FEAT_LPA2 systems Ryan Roberts
2023-11-16 14:29   ` Ryan Roberts
2023-11-16 14:29 ` [PATCH v5 11/12] KVM: selftests: arm64: Determine max ipa size per-page size Ryan Roberts
2023-11-16 14:29   ` Ryan Roberts
2023-11-21 23:27   ` Oliver Upton
2023-11-21 23:27     ` Oliver Upton
2023-11-22 13:47     ` Ryan Roberts
2023-11-22 13:47       ` Ryan Roberts
2023-11-21 23:34   ` Oliver Upton [this message]
2023-11-21 23:34     ` Oliver Upton
2023-11-22 13:47     ` Ryan Roberts
2023-11-22 13:47       ` Ryan Roberts
2023-11-16 14:29 ` [PATCH v5 12/12] KVM: selftests: arm64: Support P52V48 4K and 16K guest_modes Ryan Roberts
2023-11-16 14:29   ` Ryan Roberts
2023-11-21 23:38 ` [PATCH v5 00/12] KVM: arm64: Support FEAT_LPA2 at hyp s1 and vm s2 Oliver Upton
2023-11-21 23:38   ` Oliver Upton
2023-11-22 13:37   ` Ryan Roberts
2023-11-22 13:37     ` Ryan Roberts

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=ZV0-bmqsCM8o_gli@linux.dev \
    --to=oliver.upton@linux.dev \
    --cc=anshuman.khandual@arm.com \
    --cc=ardb@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=james.morse@arm.com \
    --cc=kvmarm@lists.linux.dev \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=maz@kernel.org \
    --cc=ryan.roberts@arm.com \
    --cc=suzuki.poulose@arm.com \
    --cc=will@kernel.org \
    --cc=yuzenghui@huawei.com \
    /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.