From: Steven Price <steven.price@arm.com> To: kvm@vger.kernel.org, kvmarm@lists.linux.dev Cc: Steven Price <steven.price@arm.com>, Catalin Marinas <catalin.marinas@arm.com>, Marc Zyngier <maz@kernel.org>, Will Deacon <will@kernel.org>, James Morse <james.morse@arm.com>, Oliver Upton <oliver.upton@linux.dev>, Suzuki K Poulose <suzuki.poulose@arm.com>, Zenghui Yu <yuzenghui@huawei.com>, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Joey Gouly <joey.gouly@arm.com>, Alexandru Elisei <alexandru.elisei@arm.com>, Christoffer Dall <christoffer.dall@arm.com>, Fuad Tabba <tabba@google.com>, linux-coco@lists.linux.dev Subject: [RFC PATCH 13/28] arm64: RME: Allow VMM to set RIPAS Date: Fri, 27 Jan 2023 11:29:17 +0000 [thread overview] Message-ID: <20230127112932.38045-14-steven.price@arm.com> (raw) In-Reply-To: <20230127112932.38045-1-steven.price@arm.com> Each page within the protected region of the realm guest can be marked as either RAM or EMPTY. Allow the VMM to control this before the guest has started and provide the equivalent functions to change this (with the guest's approval) at runtime. Signed-off-by: Steven Price <steven.price@arm.com> --- arch/arm64/include/asm/kvm_rme.h | 4 + arch/arm64/kvm/rme.c | 288 +++++++++++++++++++++++++++++++ 2 files changed, 292 insertions(+) diff --git a/arch/arm64/include/asm/kvm_rme.h b/arch/arm64/include/asm/kvm_rme.h index 4b219ebe1400..3e75cedaad18 100644 --- a/arch/arm64/include/asm/kvm_rme.h +++ b/arch/arm64/include/asm/kvm_rme.h @@ -47,6 +47,10 @@ void kvm_realm_destroy_rtts(struct realm *realm, u32 ia_bits, u32 start_level); int kvm_create_rec(struct kvm_vcpu *vcpu); void kvm_destroy_rec(struct kvm_vcpu *vcpu); +int realm_set_ipa_state(struct kvm_vcpu *vcpu, + unsigned long addr, unsigned long end, + unsigned long ripas); + #define RME_RTT_BLOCK_LEVEL 2 #define RME_RTT_MAX_LEVEL 3 diff --git a/arch/arm64/kvm/rme.c b/arch/arm64/kvm/rme.c index d79ed889ca4d..b3ea79189839 100644 --- a/arch/arm64/kvm/rme.c +++ b/arch/arm64/kvm/rme.c @@ -73,6 +73,58 @@ static int rmi_check_version(void) return 0; } +static phys_addr_t __alloc_delegated_page(struct realm *realm, + struct kvm_mmu_memory_cache *mc, gfp_t flags) +{ + phys_addr_t phys = PHYS_ADDR_MAX; + void *virt; + + if (realm->spare_page != PHYS_ADDR_MAX) { + swap(realm->spare_page, phys); + goto out; + } + + if (mc) + virt = kvm_mmu_memory_cache_alloc(mc); + else + virt = (void *)__get_free_page(flags); + + if (!virt) + goto out; + + phys = virt_to_phys(virt); + + if (rmi_granule_delegate(phys)) { + free_page((unsigned long)virt); + + phys = PHYS_ADDR_MAX; + } + +out: + return phys; +} + +static phys_addr_t alloc_delegated_page(struct realm *realm, + struct kvm_mmu_memory_cache *mc) +{ + return __alloc_delegated_page(realm, mc, GFP_KERNEL); +} + +static void free_delegated_page(struct realm *realm, phys_addr_t phys) +{ + if (realm->spare_page == PHYS_ADDR_MAX) { + realm->spare_page = phys; + return; + } + + if (WARN_ON(rmi_granule_undelegate(phys))) { + /* Undelegate failed: leak the page */ + return; + } + + free_page((unsigned long)phys_to_virt(phys)); +} + static void realm_destroy_undelegate_range(struct realm *realm, unsigned long ipa, unsigned long addr, @@ -220,6 +272,30 @@ static int realm_rtt_create(struct realm *realm, return rmi_rtt_create(phys, virt_to_phys(realm->rd), addr, level); } +static int realm_create_rtt_levels(struct realm *realm, + unsigned long ipa, + int level, + int max_level, + struct kvm_mmu_memory_cache *mc) +{ + if (WARN_ON(level == max_level)) + return 0; + + while (level++ < max_level) { + phys_addr_t rtt = alloc_delegated_page(realm, mc); + + if (rtt == PHYS_ADDR_MAX) + return -ENOMEM; + + if (realm_rtt_create(realm, ipa, level, rtt)) { + free_delegated_page(realm, rtt); + return -ENXIO; + } + } + + return 0; +} + static int realm_tear_down_rtt_range(struct realm *realm, int level, unsigned long start, unsigned long end) { @@ -309,6 +385,206 @@ void kvm_realm_destroy_rtts(struct realm *realm, u32 ia_bits, u32 start_level) realm_tear_down_rtt_range(realm, start_level, 0, (1UL << ia_bits)); } +void kvm_realm_unmap_range(struct kvm *kvm, unsigned long ipa, u64 size) +{ + u32 ia_bits = kvm->arch.mmu.pgt->ia_bits; + u32 start_level = kvm->arch.mmu.pgt->start_level; + unsigned long end = ipa + size; + struct realm *realm = &kvm->arch.realm; + phys_addr_t tmp_rtt = PHYS_ADDR_MAX; + + if (end > (1UL << ia_bits)) + end = 1UL << ia_bits; + /* + * Make sure we have a spare delegated page for tearing down the + * block mappings. We must use Atomic allocations as we are called + * with kvm->mmu_lock held. + */ + if (realm->spare_page == PHYS_ADDR_MAX) { + tmp_rtt = __alloc_delegated_page(realm, NULL, GFP_ATOMIC); + /* + * We don't have to check the status here, as we may not + * have a block level mapping. Delay any error to the point + * where we need it. + */ + realm->spare_page = tmp_rtt; + } + + realm_tear_down_rtt_range(&kvm->arch.realm, start_level, ipa, end); + + /* Free up the atomic page, if there were any */ + if (tmp_rtt != PHYS_ADDR_MAX) { + free_delegated_page(realm, tmp_rtt); + /* + * Update the spare_page after we have freed the + * above page to make sure it doesn't get cached + * in spare_page. + * We should re-write this part and always have + * a dedicated page for handling block mappings. + */ + realm->spare_page = PHYS_ADDR_MAX; + } +} + +static int set_ipa_state(struct kvm_vcpu *vcpu, + unsigned long ipa, + unsigned long end, + int level, + unsigned long ripas) +{ + struct kvm *kvm = vcpu->kvm; + struct realm *realm = &kvm->arch.realm; + struct rec *rec = &vcpu->arch.rec; + phys_addr_t rd_phys = virt_to_phys(realm->rd); + phys_addr_t rec_phys = virt_to_phys(rec->rec_page); + unsigned long map_size = rme_rtt_level_mapsize(level); + int ret; + + while (ipa < end) { + ret = rmi_rtt_set_ripas(rd_phys, rec_phys, ipa, level, ripas); + + if (!ret) { + if (!ripas) + kvm_realm_unmap_range(kvm, ipa, map_size); + } else if (RMI_RETURN_STATUS(ret) == RMI_ERROR_RTT) { + int walk_level = RMI_RETURN_INDEX(ret); + + if (walk_level < level) { + ret = realm_create_rtt_levels(realm, ipa, + walk_level, + level, NULL); + if (ret) + return ret; + continue; + } + + if (WARN_ON(level >= RME_RTT_MAX_LEVEL)) + return -EINVAL; + + /* Recurse one level lower */ + ret = set_ipa_state(vcpu, ipa, ipa + map_size, + level + 1, ripas); + if (ret) + return ret; + } else { + WARN(1, "Unexpected error in %s: %#x\n", __func__, + ret); + return -EINVAL; + } + ipa += map_size; + } + + return 0; +} + +static int realm_init_ipa_state(struct realm *realm, + unsigned long ipa, + unsigned long end, + int level) +{ + unsigned long map_size = rme_rtt_level_mapsize(level); + phys_addr_t rd_phys = virt_to_phys(realm->rd); + int ret; + + while (ipa < end) { + ret = rmi_rtt_init_ripas(rd_phys, ipa, level); + + if (RMI_RETURN_STATUS(ret) == RMI_ERROR_RTT) { + int cur_level = RMI_RETURN_INDEX(ret); + + if (cur_level < level) { + ret = realm_create_rtt_levels(realm, ipa, + cur_level, + level, NULL); + if (ret) + return ret; + /* Retry with the RTT levels in place */ + continue; + } + + /* There's an entry at a lower level, recurse */ + if (WARN_ON(level >= RME_RTT_MAX_LEVEL)) + return -EINVAL; + + realm_init_ipa_state(realm, ipa, ipa + map_size, + level + 1); + } else if (WARN_ON(ret)) { + return -ENXIO; + } + + ipa += map_size; + } + + return 0; +} + +static int find_map_level(struct kvm *kvm, unsigned long start, unsigned long end) +{ + int level = RME_RTT_MAX_LEVEL; + + while (level > get_start_level(kvm) + 1) { + unsigned long map_size = rme_rtt_level_mapsize(level - 1); + + if (!IS_ALIGNED(start, map_size) || + (start + map_size) > end) + break; + + level--; + } + + return level; +} + +int realm_set_ipa_state(struct kvm_vcpu *vcpu, + unsigned long addr, unsigned long end, + unsigned long ripas) +{ + int ret = 0; + + while (addr < end) { + int level = find_map_level(vcpu->kvm, addr, end); + unsigned long map_size = rme_rtt_level_mapsize(level); + + ret = set_ipa_state(vcpu, addr, addr + map_size, level, ripas); + if (ret) + break; + + addr += map_size; + } + + return ret; +} + +static int kvm_init_ipa_range_realm(struct kvm *kvm, + struct kvm_cap_arm_rme_init_ipa_args *args) +{ + int ret = 0; + gpa_t addr, end; + struct realm *realm = &kvm->arch.realm; + + addr = args->init_ipa_base; + end = addr + args->init_ipa_size; + + if (end < addr) + return -EINVAL; + + if (kvm_realm_state(kvm) != REALM_STATE_NEW) + return -EBUSY; + + while (addr < end) { + int level = find_map_level(kvm, addr, end); + unsigned long map_size = rme_rtt_level_mapsize(level); + + ret = realm_init_ipa_state(realm, addr, addr + map_size, level); + if (ret) + break; + + addr += map_size; + } + + return ret; +} + /* Protects access to rme_vmid_bitmap */ static DEFINE_SPINLOCK(rme_vmid_lock); static unsigned long *rme_vmid_bitmap; @@ -460,6 +736,18 @@ int kvm_realm_enable_cap(struct kvm *kvm, struct kvm_enable_cap *cap) r = kvm_create_realm(kvm); break; + case KVM_CAP_ARM_RME_INIT_IPA_REALM: { + struct kvm_cap_arm_rme_init_ipa_args args; + void __user *argp = u64_to_user_ptr(cap->args[1]); + + if (copy_from_user(&args, argp, sizeof(args))) { + r = -EFAULT; + break; + } + + r = kvm_init_ipa_range_realm(kvm, &args); + break; + } default: r = -EINVAL; break; -- 2.34.1
WARNING: multiple messages have this Message-ID (diff)
From: Steven Price <steven.price@arm.com> To: kvm@vger.kernel.org, kvmarm@lists.linux.dev Cc: Steven Price <steven.price@arm.com>, Catalin Marinas <catalin.marinas@arm.com>, Marc Zyngier <maz@kernel.org>, Will Deacon <will@kernel.org>, James Morse <james.morse@arm.com>, Oliver Upton <oliver.upton@linux.dev>, Suzuki K Poulose <suzuki.poulose@arm.com>, Zenghui Yu <yuzenghui@huawei.com>, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Joey Gouly <joey.gouly@arm.com>, Alexandru Elisei <alexandru.elisei@arm.com>, Christoffer Dall <christoffer.dall@arm.com>, Fuad Tabba <tabba@google.com>, linux-coco@lists.linux.dev Subject: [RFC PATCH 13/28] arm64: RME: Allow VMM to set RIPAS Date: Fri, 27 Jan 2023 11:29:17 +0000 [thread overview] Message-ID: <20230127112932.38045-14-steven.price@arm.com> (raw) In-Reply-To: <20230127112932.38045-1-steven.price@arm.com> Each page within the protected region of the realm guest can be marked as either RAM or EMPTY. Allow the VMM to control this before the guest has started and provide the equivalent functions to change this (with the guest's approval) at runtime. Signed-off-by: Steven Price <steven.price@arm.com> --- arch/arm64/include/asm/kvm_rme.h | 4 + arch/arm64/kvm/rme.c | 288 +++++++++++++++++++++++++++++++ 2 files changed, 292 insertions(+) diff --git a/arch/arm64/include/asm/kvm_rme.h b/arch/arm64/include/asm/kvm_rme.h index 4b219ebe1400..3e75cedaad18 100644 --- a/arch/arm64/include/asm/kvm_rme.h +++ b/arch/arm64/include/asm/kvm_rme.h @@ -47,6 +47,10 @@ void kvm_realm_destroy_rtts(struct realm *realm, u32 ia_bits, u32 start_level); int kvm_create_rec(struct kvm_vcpu *vcpu); void kvm_destroy_rec(struct kvm_vcpu *vcpu); +int realm_set_ipa_state(struct kvm_vcpu *vcpu, + unsigned long addr, unsigned long end, + unsigned long ripas); + #define RME_RTT_BLOCK_LEVEL 2 #define RME_RTT_MAX_LEVEL 3 diff --git a/arch/arm64/kvm/rme.c b/arch/arm64/kvm/rme.c index d79ed889ca4d..b3ea79189839 100644 --- a/arch/arm64/kvm/rme.c +++ b/arch/arm64/kvm/rme.c @@ -73,6 +73,58 @@ static int rmi_check_version(void) return 0; } +static phys_addr_t __alloc_delegated_page(struct realm *realm, + struct kvm_mmu_memory_cache *mc, gfp_t flags) +{ + phys_addr_t phys = PHYS_ADDR_MAX; + void *virt; + + if (realm->spare_page != PHYS_ADDR_MAX) { + swap(realm->spare_page, phys); + goto out; + } + + if (mc) + virt = kvm_mmu_memory_cache_alloc(mc); + else + virt = (void *)__get_free_page(flags); + + if (!virt) + goto out; + + phys = virt_to_phys(virt); + + if (rmi_granule_delegate(phys)) { + free_page((unsigned long)virt); + + phys = PHYS_ADDR_MAX; + } + +out: + return phys; +} + +static phys_addr_t alloc_delegated_page(struct realm *realm, + struct kvm_mmu_memory_cache *mc) +{ + return __alloc_delegated_page(realm, mc, GFP_KERNEL); +} + +static void free_delegated_page(struct realm *realm, phys_addr_t phys) +{ + if (realm->spare_page == PHYS_ADDR_MAX) { + realm->spare_page = phys; + return; + } + + if (WARN_ON(rmi_granule_undelegate(phys))) { + /* Undelegate failed: leak the page */ + return; + } + + free_page((unsigned long)phys_to_virt(phys)); +} + static void realm_destroy_undelegate_range(struct realm *realm, unsigned long ipa, unsigned long addr, @@ -220,6 +272,30 @@ static int realm_rtt_create(struct realm *realm, return rmi_rtt_create(phys, virt_to_phys(realm->rd), addr, level); } +static int realm_create_rtt_levels(struct realm *realm, + unsigned long ipa, + int level, + int max_level, + struct kvm_mmu_memory_cache *mc) +{ + if (WARN_ON(level == max_level)) + return 0; + + while (level++ < max_level) { + phys_addr_t rtt = alloc_delegated_page(realm, mc); + + if (rtt == PHYS_ADDR_MAX) + return -ENOMEM; + + if (realm_rtt_create(realm, ipa, level, rtt)) { + free_delegated_page(realm, rtt); + return -ENXIO; + } + } + + return 0; +} + static int realm_tear_down_rtt_range(struct realm *realm, int level, unsigned long start, unsigned long end) { @@ -309,6 +385,206 @@ void kvm_realm_destroy_rtts(struct realm *realm, u32 ia_bits, u32 start_level) realm_tear_down_rtt_range(realm, start_level, 0, (1UL << ia_bits)); } +void kvm_realm_unmap_range(struct kvm *kvm, unsigned long ipa, u64 size) +{ + u32 ia_bits = kvm->arch.mmu.pgt->ia_bits; + u32 start_level = kvm->arch.mmu.pgt->start_level; + unsigned long end = ipa + size; + struct realm *realm = &kvm->arch.realm; + phys_addr_t tmp_rtt = PHYS_ADDR_MAX; + + if (end > (1UL << ia_bits)) + end = 1UL << ia_bits; + /* + * Make sure we have a spare delegated page for tearing down the + * block mappings. We must use Atomic allocations as we are called + * with kvm->mmu_lock held. + */ + if (realm->spare_page == PHYS_ADDR_MAX) { + tmp_rtt = __alloc_delegated_page(realm, NULL, GFP_ATOMIC); + /* + * We don't have to check the status here, as we may not + * have a block level mapping. Delay any error to the point + * where we need it. + */ + realm->spare_page = tmp_rtt; + } + + realm_tear_down_rtt_range(&kvm->arch.realm, start_level, ipa, end); + + /* Free up the atomic page, if there were any */ + if (tmp_rtt != PHYS_ADDR_MAX) { + free_delegated_page(realm, tmp_rtt); + /* + * Update the spare_page after we have freed the + * above page to make sure it doesn't get cached + * in spare_page. + * We should re-write this part and always have + * a dedicated page for handling block mappings. + */ + realm->spare_page = PHYS_ADDR_MAX; + } +} + +static int set_ipa_state(struct kvm_vcpu *vcpu, + unsigned long ipa, + unsigned long end, + int level, + unsigned long ripas) +{ + struct kvm *kvm = vcpu->kvm; + struct realm *realm = &kvm->arch.realm; + struct rec *rec = &vcpu->arch.rec; + phys_addr_t rd_phys = virt_to_phys(realm->rd); + phys_addr_t rec_phys = virt_to_phys(rec->rec_page); + unsigned long map_size = rme_rtt_level_mapsize(level); + int ret; + + while (ipa < end) { + ret = rmi_rtt_set_ripas(rd_phys, rec_phys, ipa, level, ripas); + + if (!ret) { + if (!ripas) + kvm_realm_unmap_range(kvm, ipa, map_size); + } else if (RMI_RETURN_STATUS(ret) == RMI_ERROR_RTT) { + int walk_level = RMI_RETURN_INDEX(ret); + + if (walk_level < level) { + ret = realm_create_rtt_levels(realm, ipa, + walk_level, + level, NULL); + if (ret) + return ret; + continue; + } + + if (WARN_ON(level >= RME_RTT_MAX_LEVEL)) + return -EINVAL; + + /* Recurse one level lower */ + ret = set_ipa_state(vcpu, ipa, ipa + map_size, + level + 1, ripas); + if (ret) + return ret; + } else { + WARN(1, "Unexpected error in %s: %#x\n", __func__, + ret); + return -EINVAL; + } + ipa += map_size; + } + + return 0; +} + +static int realm_init_ipa_state(struct realm *realm, + unsigned long ipa, + unsigned long end, + int level) +{ + unsigned long map_size = rme_rtt_level_mapsize(level); + phys_addr_t rd_phys = virt_to_phys(realm->rd); + int ret; + + while (ipa < end) { + ret = rmi_rtt_init_ripas(rd_phys, ipa, level); + + if (RMI_RETURN_STATUS(ret) == RMI_ERROR_RTT) { + int cur_level = RMI_RETURN_INDEX(ret); + + if (cur_level < level) { + ret = realm_create_rtt_levels(realm, ipa, + cur_level, + level, NULL); + if (ret) + return ret; + /* Retry with the RTT levels in place */ + continue; + } + + /* There's an entry at a lower level, recurse */ + if (WARN_ON(level >= RME_RTT_MAX_LEVEL)) + return -EINVAL; + + realm_init_ipa_state(realm, ipa, ipa + map_size, + level + 1); + } else if (WARN_ON(ret)) { + return -ENXIO; + } + + ipa += map_size; + } + + return 0; +} + +static int find_map_level(struct kvm *kvm, unsigned long start, unsigned long end) +{ + int level = RME_RTT_MAX_LEVEL; + + while (level > get_start_level(kvm) + 1) { + unsigned long map_size = rme_rtt_level_mapsize(level - 1); + + if (!IS_ALIGNED(start, map_size) || + (start + map_size) > end) + break; + + level--; + } + + return level; +} + +int realm_set_ipa_state(struct kvm_vcpu *vcpu, + unsigned long addr, unsigned long end, + unsigned long ripas) +{ + int ret = 0; + + while (addr < end) { + int level = find_map_level(vcpu->kvm, addr, end); + unsigned long map_size = rme_rtt_level_mapsize(level); + + ret = set_ipa_state(vcpu, addr, addr + map_size, level, ripas); + if (ret) + break; + + addr += map_size; + } + + return ret; +} + +static int kvm_init_ipa_range_realm(struct kvm *kvm, + struct kvm_cap_arm_rme_init_ipa_args *args) +{ + int ret = 0; + gpa_t addr, end; + struct realm *realm = &kvm->arch.realm; + + addr = args->init_ipa_base; + end = addr + args->init_ipa_size; + + if (end < addr) + return -EINVAL; + + if (kvm_realm_state(kvm) != REALM_STATE_NEW) + return -EBUSY; + + while (addr < end) { + int level = find_map_level(kvm, addr, end); + unsigned long map_size = rme_rtt_level_mapsize(level); + + ret = realm_init_ipa_state(realm, addr, addr + map_size, level); + if (ret) + break; + + addr += map_size; + } + + return ret; +} + /* Protects access to rme_vmid_bitmap */ static DEFINE_SPINLOCK(rme_vmid_lock); static unsigned long *rme_vmid_bitmap; @@ -460,6 +736,18 @@ int kvm_realm_enable_cap(struct kvm *kvm, struct kvm_enable_cap *cap) r = kvm_create_realm(kvm); break; + case KVM_CAP_ARM_RME_INIT_IPA_REALM: { + struct kvm_cap_arm_rme_init_ipa_args args; + void __user *argp = u64_to_user_ptr(cap->args[1]); + + if (copy_from_user(&args, argp, sizeof(args))) { + r = -EFAULT; + break; + } + + r = kvm_init_ipa_range_realm(kvm, &args); + break; + } default: r = -EINVAL; break; -- 2.34.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2023-01-27 11:30 UTC|newest] Thread overview: 386+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-01-27 11:22 [RFC] Support for Arm CCA VMs on Linux Suzuki K Poulose 2023-01-27 11:22 ` Suzuki K Poulose 2023-01-27 11:27 ` [RFC PATCH 00/14] arm64: Support for running as a guest in Arm CCA Steven Price 2023-01-27 11:27 ` Steven Price 2023-01-27 11:27 ` [RFC PATCH 01/14] arm64: remove redundant 'extern' Steven Price 2023-01-27 11:27 ` Steven Price 2023-01-27 11:27 ` [RFC PATCH 02/14] arm64: rsi: Add RSI definitions Steven Price 2023-01-27 11:27 ` Steven Price 2023-01-27 11:27 ` [RFC PATCH 03/14] arm64: Detect if in a realm and set RIPAS RAM Steven Price 2023-01-27 11:27 ` Steven Price 2023-01-27 11:27 ` [RFC PATCH 04/14] arm64: realm: Query IPA size from the RMM Steven Price 2023-01-27 11:27 ` Steven Price 2023-01-27 11:27 ` [RFC PATCH 05/14] arm64: Mark all I/O as non-secure shared Steven Price 2023-01-27 11:27 ` Steven Price 2023-01-27 11:27 ` [RFC PATCH 06/14] fixmap: Allow architecture overriding set_fixmap_io Steven Price 2023-01-27 11:27 ` Steven Price 2023-01-27 11:27 ` [RFC PATCH 07/14] arm64: Override set_fixmap_io Steven Price 2023-01-27 11:27 ` Steven Price 2023-01-27 11:27 ` [RFC PATCH 08/14] arm64: Make the PHYS_MASK_SHIFT dynamic Steven Price 2023-01-27 11:27 ` Steven Price 2023-01-29 2:59 ` kernel test robot 2023-01-29 20:54 ` kernel test robot 2023-01-27 11:27 ` [RFC PATCH 09/14] arm64: Enforce bounce buffers for realm DMA Steven Price 2023-01-27 11:27 ` Steven Price 2023-01-27 11:27 ` [RFC PATCH 10/14] arm64: Enable memory encrypt for Realms Steven Price 2023-01-27 11:27 ` Steven Price 2023-01-27 11:27 ` [RFC PATCH 11/14] arm64: Force device mappings to be non-secure shared Steven Price 2023-01-27 11:27 ` Steven Price 2023-01-27 11:27 ` [RFC PATCH 12/14] efi: arm64: Map Device with Prot Shared Steven Price 2023-01-27 11:27 ` Steven Price 2023-01-27 11:27 ` [RFC PATCH 13/14] arm64: realm: Support nonsecure ITS emulation shared Steven Price 2023-01-27 11:27 ` Steven Price 2023-01-27 11:27 ` [RFC PATCH 14/14] HACK: Accept prototype RSI version Steven Price 2023-01-27 11:27 ` Steven Price 2023-01-27 11:29 ` [RFC PATCH 00/28] arm64: Support for Arm CCA in KVM Steven Price 2023-01-27 11:29 ` Steven Price 2023-01-27 11:29 ` [RFC PATCH 01/28] arm64: RME: Handle Granule Protection Faults (GPFs) Steven Price 2023-01-27 11:29 ` Steven Price 2023-01-27 11:29 ` [RFC PATCH 02/28] arm64: RME: Add SMC definitions for calling the RMM Steven Price 2023-01-27 11:29 ` Steven Price 2023-01-27 11:29 ` [RFC PATCH 03/28] arm64: RME: Add wrappers for RMI calls Steven Price 2023-01-27 11:29 ` Steven Price 2023-02-13 16:43 ` Zhi Wang 2023-02-13 16:43 ` Zhi Wang 2024-03-18 7:03 ` Ganapatrao Kulkarni 2024-03-18 7:03 ` Ganapatrao Kulkarni 2024-03-18 11:22 ` Steven Price 2024-03-18 11:22 ` Steven Price 2023-01-27 11:29 ` [RFC PATCH 04/28] arm64: RME: Check for RME support at KVM init Steven Price 2023-01-27 11:29 ` Steven Price 2023-02-13 15:48 ` Zhi Wang 2023-02-13 15:48 ` Zhi Wang 2023-02-13 15:59 ` Steven Price 2023-02-13 15:59 ` Steven Price 2023-03-04 12:07 ` Zhi Wang 2023-03-04 12:07 ` Zhi Wang 2023-02-13 15:55 ` Zhi Wang 2023-02-13 15:55 ` Zhi Wang 2024-03-18 7:17 ` Ganapatrao Kulkarni 2024-03-18 7:17 ` Ganapatrao Kulkarni 2024-03-18 11:22 ` Steven Price 2024-03-18 11:22 ` Steven Price 2023-01-27 11:29 ` [RFC PATCH 05/28] arm64: RME: Define the user ABI Steven Price 2023-01-27 11:29 ` Steven Price 2023-01-29 0:46 ` kernel test robot 2023-02-13 16:04 ` Zhi Wang 2023-02-13 16:04 ` Zhi Wang 2023-03-01 11:54 ` Steven Price 2023-03-01 11:54 ` Steven Price 2023-03-01 20:21 ` Zhi Wang 2023-03-01 20:21 ` Zhi Wang 2023-01-27 11:29 ` [RFC PATCH 06/28] arm64: RME: ioctls to create and configure realms Steven Price 2023-01-27 11:29 ` Steven Price 2023-01-29 6:34 ` kernel test robot 2023-02-07 12:25 ` Jean-Philippe Brucker 2023-02-07 12:25 ` Jean-Philippe Brucker 2023-02-07 12:55 ` Suzuki K Poulose 2023-02-07 12:55 ` Suzuki K Poulose 2023-02-13 16:10 ` Zhi Wang 2023-02-13 16:10 ` Zhi Wang 2023-03-01 11:55 ` Steven Price 2023-03-01 11:55 ` Steven Price 2023-03-01 20:33 ` Zhi Wang 2023-03-01 20:33 ` Zhi Wang 2023-03-06 19:10 ` Zhi Wang 2023-03-06 19:10 ` Zhi Wang 2023-03-10 15:47 ` Steven Price 2023-03-10 15:47 ` Steven Price 2024-03-18 7:40 ` Ganapatrao Kulkarni 2024-03-18 7:40 ` Ganapatrao Kulkarni 2024-03-18 11:22 ` Steven Price 2024-03-18 11:22 ` Steven Price 2023-01-27 11:29 ` [RFC PATCH 07/28] arm64: kvm: Allow passing machine type in KVM creation Steven Price 2023-01-27 11:29 ` Steven Price 2023-02-13 16:35 ` Zhi Wang 2023-02-13 16:35 ` Zhi Wang 2023-03-01 11:55 ` Steven Price 2023-03-01 11:55 ` Steven Price 2023-01-27 11:29 ` [RFC PATCH 08/28] arm64: RME: Keep a spare page delegated to the RMM Steven Price 2023-01-27 11:29 ` Steven Price 2023-02-13 16:47 ` Zhi Wang 2023-02-13 16:47 ` Zhi Wang 2023-03-01 11:55 ` Steven Price 2023-03-01 11:55 ` Steven Price 2023-03-01 20:50 ` Zhi Wang 2023-03-01 20:50 ` Zhi Wang 2023-01-27 11:29 ` [RFC PATCH 09/28] arm64: RME: RTT handling Steven Price 2023-01-27 11:29 ` Steven Price 2023-02-13 17:44 ` Zhi Wang 2023-02-13 17:44 ` Zhi Wang 2023-03-03 14:04 ` Steven Price 2023-03-03 14:04 ` Steven Price 2023-03-04 12:32 ` Zhi Wang 2023-03-04 12:32 ` Zhi Wang 2024-03-18 11:01 ` Ganapatrao Kulkarni 2024-03-18 11:01 ` Ganapatrao Kulkarni 2024-03-18 11:25 ` Steven Price 2024-03-18 11:25 ` Steven Price 2023-01-27 11:29 ` [RFC PATCH 10/28] arm64: RME: Allocate/free RECs to match vCPUs Steven Price 2023-01-27 11:29 ` Steven Price 2023-02-13 18:08 ` Zhi Wang 2023-02-13 18:08 ` Zhi Wang 2023-03-03 14:05 ` Steven Price 2023-03-03 14:05 ` Steven Price 2023-03-04 12:46 ` Zhi Wang 2023-03-04 12:46 ` Zhi Wang 2023-01-27 11:29 ` [RFC PATCH 11/28] arm64: RME: Support for the VGIC in realms Steven Price 2023-01-27 11:29 ` Steven Price 2023-01-27 11:29 ` [RFC PATCH 12/28] KVM: arm64: Support timers in realm RECs Steven Price 2023-01-27 11:29 ` Steven Price 2024-03-18 11:28 ` Ganapatrao Kulkarni 2024-03-18 11:28 ` Ganapatrao Kulkarni 2024-03-18 14:14 ` Steven Price 2024-03-18 14:14 ` Steven Price 2023-01-27 11:29 ` Steven Price [this message] 2023-01-27 11:29 ` [RFC PATCH 13/28] arm64: RME: Allow VMM to set RIPAS Steven Price 2023-02-17 13:07 ` Zhi Wang 2023-02-17 13:07 ` Zhi Wang 2023-03-03 14:05 ` Steven Price 2023-03-03 14:05 ` Steven Price 2023-01-27 11:29 ` [RFC PATCH 14/28] arm64: RME: Handle realm enter/exit Steven Price 2023-01-27 11:29 ` Steven Price 2023-01-27 11:29 ` [RFC PATCH 15/28] KVM: arm64: Handle realm MMIO emulation Steven Price 2023-01-27 11:29 ` Steven Price 2023-03-06 15:37 ` Zhi Wang 2023-03-06 15:37 ` Zhi Wang 2023-03-10 15:47 ` Steven Price 2023-03-10 15:47 ` Steven Price 2023-03-14 15:44 ` Zhi Wang 2023-03-14 15:44 ` Zhi Wang 2023-03-22 11:51 ` Steven Price 2023-03-22 11:51 ` Steven Price 2023-01-27 11:29 ` [RFC PATCH 16/28] arm64: RME: Allow populating initial contents Steven Price 2023-01-27 11:29 ` Steven Price 2023-03-06 17:34 ` Zhi Wang 2023-03-06 17:34 ` Zhi Wang 2023-03-10 15:47 ` Steven Price 2023-03-10 15:47 ` Steven Price 2023-03-14 15:31 ` Zhi Wang 2023-03-14 15:31 ` Zhi Wang 2023-03-22 11:51 ` Steven Price 2023-03-22 11:51 ` Steven Price 2023-01-27 11:29 ` [RFC PATCH 17/28] arm64: RME: Runtime faulting of memory Steven Price 2023-01-27 11:29 ` Steven Price 2023-03-06 18:20 ` Zhi Wang 2023-03-06 18:20 ` Zhi Wang 2023-03-10 15:47 ` Steven Price 2023-03-10 15:47 ` Steven Price 2023-03-14 16:41 ` Zhi Wang 2023-03-14 16:41 ` Zhi Wang 2023-01-27 11:29 ` [RFC PATCH 18/28] KVM: arm64: Handle realm VCPU load Steven Price 2023-01-27 11:29 ` Steven Price 2023-01-27 11:29 ` [RFC PATCH 19/28] KVM: arm64: Validate register access for a Realm VM Steven Price 2023-01-27 11:29 ` Steven Price 2023-01-27 11:29 ` [RFC PATCH 20/28] KVM: arm64: Handle Realm PSCI requests Steven Price 2023-01-27 11:29 ` Steven Price 2023-01-27 11:29 ` [RFC PATCH 21/28] KVM: arm64: WARN on injected undef exceptions Steven Price 2023-01-27 11:29 ` Steven Price 2023-01-27 11:29 ` [RFC PATCH 22/28] arm64: Don't expose stolen time for realm guests Steven Price 2023-01-27 11:29 ` Steven Price 2023-01-27 11:29 ` [RFC PATCH 23/28] KVM: arm64: Allow activating realms Steven Price 2023-01-27 11:29 ` Steven Price 2023-01-27 11:29 ` [RFC PATCH 24/28] arm64: rme: allow userspace to inject aborts Steven Price 2023-01-27 11:29 ` Steven Price 2023-01-27 11:29 ` [RFC PATCH 25/28] arm64: rme: support RSI_HOST_CALL Steven Price 2023-01-27 11:29 ` Steven Price 2023-01-27 11:29 ` [RFC PATCH 26/28] arm64: rme: Allow checking SVE on VM instance Steven Price 2023-01-27 11:29 ` Steven Price 2023-01-27 11:29 ` [RFC PATCH 27/28] arm64: RME: Always use 4k pages for realms Steven Price 2023-01-27 11:29 ` Steven Price 2023-01-27 11:29 ` [RFC PATCH 28/28] HACK: Accept prototype RMI versions Steven Price 2023-01-27 11:29 ` Steven Price 2023-01-27 11:39 ` [RFC kvmtool 00/31] arm64: Support for Arm Confidential Compute Architecture Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 01/31] arm64: Disable MTE when CFI flash is emulated Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 02/31] script: update_headers: Ignore missing architectures Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 03/31] hw: cfi flash: Handle errors in memory transitions Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 04/31] Add --nocompat option to disable compat warnings Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 12:19 ` Alexandru Elisei 2023-01-27 12:19 ` Alexandru Elisei 2023-01-27 11:39 ` [RFC kvmtool 05/31] arm64: Check pvtime support against the KVM instance Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 06/31] arm64: Check SVE capability on the VM instance Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 07/31] arm64: Add option to disable SVE Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 08/31] linux: Update kernel headers for RME support Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 09/31] arm64: Add --realm command line option Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 10/31] arm64: Create a realm virtual machine Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 11/31] arm64: Lock realm RAM in memory Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 12/31] arm64: Create Realm Descriptor Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 13/31] arm64: Add --measurement-algo command line option for a realm Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 14/31] arm64: Add configuration step for Realms Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 15/31] arm64: Add support for Realm Personalisation Value Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 16/31] arm64: Add support for specifying the SVE vector length for Realm Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 17/31] arm: Add kernel size to VM context Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 18/31] arm64: Populate initial realm contents Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-03-02 14:03 ` Piotr Sawicki 2023-03-02 14:03 ` Piotr Sawicki 2023-03-02 14:06 ` Suzuki K Poulose 2023-03-02 14:06 ` Suzuki K Poulose 2023-10-02 9:28 ` Piotr Sawicki 2023-10-02 9:28 ` Piotr Sawicki 2023-01-27 11:39 ` [RFC kvmtool 19/31] arm64: Don't try to set PSTATE for VCPUs belonging to a realm Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 20/31] arm64: Finalize realm VCPU after reset Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 21/31] init: Add last_{init, exit} list macros Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 22/31] arm64: Activate realm before the first VCPU is run Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 23/31] arm64: Specify SMC as the PSCI conduits for realms Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 24/31] arm64: Don't try to debug a realm Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 25/31] arm64: realm: Double the IPA space Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 26/31] virtio: Add a wrapper for get_host_features Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 27/31] virtio: Add arch specific hook for virtio host flags Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 28/31] arm64: realm: Enforce virtio F_ACCESS_PLATFORM flag Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 29/31] mmio: add arch hook for an unhandled MMIO access Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 30/31] arm64: realm: inject an abort on " Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-01-27 11:39 ` [RFC kvmtool 31/31] arm64: Allow the user to create a realm Suzuki K Poulose 2023-01-27 11:39 ` Suzuki K Poulose 2023-10-02 9:45 ` [RFC kvmtool 00/31] arm64: Support for Arm Confidential Compute Architecture Piotr Sawicki 2023-10-02 9:45 ` Piotr Sawicki 2023-01-27 11:40 ` [RFC kvm-unit-tests 00/27] " Joey Gouly 2023-01-27 11:40 ` Joey Gouly 2023-01-27 11:40 ` [RFC kvm-unit-tests 01/27] lib/string: include stddef.h for size_t Joey Gouly 2023-01-27 11:40 ` Joey Gouly 2023-01-31 14:43 ` Thomas Huth 2023-01-31 14:43 ` Thomas Huth 2023-01-27 11:40 ` [RFC kvm-unit-tests 02/27] arm: Expand SMCCC arguments and return values Joey Gouly 2023-01-27 11:40 ` Joey Gouly 2023-01-27 11:40 ` [RFC kvm-unit-tests 03/27] arm: realm: Add RSI interface header Joey Gouly 2023-01-27 11:40 ` Joey Gouly 2023-01-27 11:40 ` [RFC kvm-unit-tests 04/27] arm: Make physical address mask dynamic Joey Gouly 2023-01-27 11:40 ` Joey Gouly 2023-01-27 11:40 ` [RFC kvm-unit-tests 05/27] arm: Introduce NS_SHARED PTE attribute Joey Gouly 2023-01-27 11:40 ` Joey Gouly 2023-01-27 11:40 ` [RFC kvm-unit-tests 06/27] arm: Move io_init after vm initialization Joey Gouly 2023-01-27 11:40 ` Joey Gouly 2023-01-27 11:40 ` [RFC kvm-unit-tests 07/27] arm: realm: Make uart available before MMU is enabled Joey Gouly 2023-01-27 11:40 ` Joey Gouly 2023-01-27 11:40 ` [RFC kvm-unit-tests 08/27] arm: realm: Realm initialisation Joey Gouly 2023-01-27 11:40 ` Joey Gouly 2023-01-27 11:40 ` [RFC kvm-unit-tests 09/27] arm: realm: Add support for changing the state of memory Joey Gouly 2023-01-27 11:40 ` Joey Gouly 2023-01-27 11:40 ` [RFC kvm-unit-tests 10/27] arm: realm: Set RIPAS state for RAM Joey Gouly 2023-01-27 11:40 ` Joey Gouly 2023-01-27 11:40 ` [RFC kvm-unit-tests 11/27] arm: realm: Early memory setup Joey Gouly 2023-01-27 11:40 ` Joey Gouly 2023-01-27 11:40 ` [RFC kvm-unit-tests 12/27] arm: realm: Add RSI version test Joey Gouly 2023-01-27 11:40 ` Joey Gouly 2023-01-27 11:40 ` [RFC kvm-unit-tests 13/27] arm: selftest: realm: skip pabt test when running in a realm Joey Gouly 2023-01-27 11:40 ` Joey Gouly 2023-01-27 11:40 ` [RFC kvm-unit-tests 14/27] arm: realm: add hvc and RSI_HOST_CALL tests Joey Gouly 2023-01-27 11:40 ` Joey Gouly 2023-01-27 11:40 ` [RFC kvm-unit-tests 15/27] arm: realm: Add test for FPU/SIMD context save/restore Joey Gouly 2023-01-27 11:40 ` Joey Gouly 2023-01-27 11:40 ` [RFC kvm-unit-tests 16/27] arm: realm: Add tests for in realm SEA Joey Gouly 2023-01-27 11:40 ` Joey Gouly 2023-01-27 11:40 ` [RFC kvm-unit-tests 17/27] lib/alloc_page: Add shared page allocation support Joey Gouly 2023-01-27 11:40 ` Joey Gouly 2023-01-27 11:40 ` [RFC kvm-unit-tests 18/27] arm: gic-v3-its: Use shared pages wherever needed Joey Gouly 2023-01-27 11:40 ` Joey Gouly 2023-01-27 11:41 ` [RFC kvm-unit-tests 19/27] arm: realm: Enable memory encryption Joey Gouly 2023-01-27 11:41 ` Joey Gouly 2023-01-27 11:41 ` [RFC kvm-unit-tests 20/27] qcbor: Add QCBOR as a submodule Joey Gouly 2023-01-27 11:41 ` Joey Gouly 2023-01-27 11:41 ` [RFC kvm-unit-tests 21/27] arm: Add build steps for QCBOR library Joey Gouly 2023-01-27 11:41 ` Joey Gouly 2023-01-27 11:41 ` [RFC kvm-unit-tests 22/27] arm: Add a library to verify tokens using the " Joey Gouly 2023-01-27 11:41 ` Joey Gouly 2023-01-27 11:41 ` [RFC kvm-unit-tests 23/27] arm: realm: add RSI interface for attestation measurements Joey Gouly 2023-01-27 11:41 ` Joey Gouly 2023-01-27 11:41 ` [RFC kvm-unit-tests 24/27] arm: realm: Add helpers to decode RSI return codes Joey Gouly 2023-01-27 11:41 ` Joey Gouly 2023-01-27 11:41 ` [RFC kvm-unit-tests 25/27] arm: realm: Add Realm attestation tests Joey Gouly 2023-01-27 11:41 ` Joey Gouly 2023-01-27 11:41 ` [RFC kvm-unit-tests 26/27] arm: realm: Add a test for shared memory Joey Gouly 2023-01-27 11:41 ` Joey Gouly 2023-01-27 11:41 ` [RFC kvm-unit-tests 27/27] NOT-FOR-MERGING: add run-realm-tests Joey Gouly 2023-01-27 11:41 ` Joey Gouly 2023-01-27 15:26 ` [RFC] Support for Arm CCA VMs on Linux Jean-Philippe Brucker 2023-01-27 15:26 ` Jean-Philippe Brucker 2023-02-28 23:35 ` Itaru Kitayama 2023-02-28 23:35 ` Itaru Kitayama 2023-03-01 9:20 ` Jean-Philippe Brucker 2023-03-01 9:20 ` Jean-Philippe Brucker 2023-03-01 22:12 ` Itaru Kitayama 2023-03-01 22:12 ` Itaru Kitayama 2023-03-02 9:18 ` Jean-Philippe Brucker 2023-03-02 9:18 ` Jean-Philippe Brucker 2023-03-03 9:46 ` Jean-Philippe Brucker 2023-03-03 9:46 ` Jean-Philippe Brucker 2023-03-03 9:54 ` Suzuki K Poulose 2023-03-03 9:54 ` Suzuki K Poulose 2023-03-03 11:39 ` Jean-Philippe Brucker 2023-03-03 11:39 ` Jean-Philippe Brucker 2023-03-03 12:08 ` Andrew Jones 2023-03-03 12:08 ` Andrew Jones 2023-03-03 12:19 ` Suzuki K Poulose 2023-03-03 12:19 ` Suzuki K Poulose 2023-03-03 13:06 ` Cornelia Huck 2023-03-03 13:06 ` Cornelia Huck 2023-03-03 13:57 ` Jean-Philippe Brucker 2023-03-03 13:57 ` Jean-Philippe Brucker 2023-02-10 16:51 ` Ryan Roberts 2023-02-10 16:51 ` Ryan Roberts 2023-02-10 22:53 ` Itaru Kitayama 2023-02-10 22:53 ` Itaru Kitayama 2023-02-17 8:02 ` Itaru Kitayama 2023-02-17 8:02 ` Itaru Kitayama 2023-02-20 10:51 ` Ryan Roberts 2023-02-20 10:51 ` Ryan Roberts 2023-02-14 17:13 ` Dr. David Alan Gilbert 2023-02-14 17:13 ` Dr. David Alan Gilbert 2023-03-01 9:58 ` Suzuki K Poulose 2023-03-01 9:58 ` Suzuki K Poulose 2023-03-02 16:46 ` Dr. David Alan Gilbert 2023-03-02 16:46 ` Dr. David Alan Gilbert 2023-03-02 19:02 ` Suzuki K Poulose 2023-03-02 19:02 ` Suzuki K Poulose 2023-07-14 13:46 ` Jonathan Cameron 2023-07-14 13:46 ` Jonathan Cameron 2023-07-14 13:46 ` Jonathan Cameron 2023-07-14 15:03 ` Suzuki K Poulose 2023-07-14 15:03 ` Suzuki K Poulose 2023-07-14 16:28 ` Jonathan Cameron 2023-07-14 16:28 ` Jonathan Cameron 2023-07-14 16:28 ` Jonathan Cameron 2023-07-17 9:40 ` Suzuki K Poulose 2023-07-17 9:40 ` Suzuki K Poulose 2023-10-02 12:43 ` Suzuki K Poulose 2023-10-02 12:43 ` Suzuki K Poulose 2024-01-10 5:40 ` Itaru Kitayama 2024-01-10 5:40 ` Itaru Kitayama 2024-01-10 11:41 ` Suzuki K Poulose 2024-01-10 11:41 ` Suzuki K Poulose 2024-01-10 13:44 ` Suzuki K Poulose 2024-01-10 13:44 ` Suzuki K Poulose 2024-01-19 1:26 ` Itaru Kitayama 2024-01-19 1:26 ` Itaru Kitayama 2024-01-12 5:01 ` Itaru Kitayama 2024-01-12 5:01 ` Itaru Kitayama
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=20230127112932.38045-14-steven.price@arm.com \ --to=steven.price@arm.com \ --cc=alexandru.elisei@arm.com \ --cc=catalin.marinas@arm.com \ --cc=christoffer.dall@arm.com \ --cc=james.morse@arm.com \ --cc=joey.gouly@arm.com \ --cc=kvm@vger.kernel.org \ --cc=kvmarm@lists.linux.dev \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-coco@lists.linux.dev \ --cc=linux-kernel@vger.kernel.org \ --cc=maz@kernel.org \ --cc=oliver.upton@linux.dev \ --cc=suzuki.poulose@arm.com \ --cc=tabba@google.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: linkBe 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.