From: Alexandru Elisei <alexandru.elisei@arm.com> To: pbonzini@redhat.com, thuth@redhat.com, andrew.jones@linux.dev, kvm@vger.kernel.org, kvmarm@lists.cs.columbia.edu, nikos.nikoleris@arm.com Subject: [kvm-unit-tests RFC PATCH 05/19] lib/alloc_phys: Remove locking Date: Tue, 9 Aug 2022 10:15:44 +0100 [thread overview] Message-ID: <20220809091558.14379-6-alexandru.elisei@arm.com> (raw) In-Reply-To: <20220809091558.14379-1-alexandru.elisei@arm.com> With powerpc moving the page allocator, there are no architectures left which use the physical allocator after the boot setup: arm, arm64, s390x and powerpc drain the physical allocator to initialize the page allocator; and x86 calls setup_vm() to drain the allocator for each of the tests that allocate memory. Signed-off-by: Alexandru Elisei <alexandru.elisei@arm.com> --- lib/alloc_phys.c | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/lib/alloc_phys.c b/lib/alloc_phys.c index efb783b34002..2e0b9c079d1d 100644 --- a/lib/alloc_phys.c +++ b/lib/alloc_phys.c @@ -21,7 +21,6 @@ struct phys_alloc_region { static struct phys_alloc_region regions[PHYS_ALLOC_NR_REGIONS]; static int nr_regions; -static struct spinlock lock; static phys_addr_t base, top; #define DEFAULT_MINIMUM_ALIGNMENT 32 @@ -37,7 +36,6 @@ void phys_alloc_show(void) { int i; - spin_lock(&lock); printf("phys_alloc minimum alignment: %#" PRIx64 "\n", (u64)align_min); for (i = 0; i < nr_regions; ++i) printf("%016" PRIx64 "-%016" PRIx64 " [%s]\n", @@ -46,24 +44,19 @@ void phys_alloc_show(void) "USED"); printf("%016" PRIx64 "-%016" PRIx64 " [%s]\n", (u64)base, (u64)(top - 1), "FREE"); - spin_unlock(&lock); } void phys_alloc_init(phys_addr_t base_addr, phys_addr_t size) { - spin_lock(&lock); base = base_addr; top = base + size; nr_regions = 0; - spin_unlock(&lock); } void phys_alloc_set_minimum_alignment(phys_addr_t align) { assert(align && !(align & (align - 1))); - spin_lock(&lock); align_min = align; - spin_unlock(&lock); } static void *memalign_early(size_t alignment, size_t sz) @@ -76,8 +69,6 @@ static void *memalign_early(size_t alignment, size_t sz) assert(align && !(align & (align - 1))); - spin_lock(&lock); - top_safe = top; if (sizeof(long) == 4) @@ -97,7 +88,6 @@ static void *memalign_early(size_t alignment, size_t sz) "top=%#" PRIx64 ", top_safe=%#" PRIx64 "\n", (u64)size_orig, (u64)align, (u64)size, (u64)(top_safe - base), (u64)top, (u64)top_safe); - spin_unlock(&lock); return NULL; } @@ -113,8 +103,6 @@ static void *memalign_early(size_t alignment, size_t sz) warned = true; } - spin_unlock(&lock); - return phys_to_virt(addr); } @@ -124,10 +112,8 @@ void phys_alloc_get_unused(phys_addr_t *p_base, phys_addr_t *p_top) *p_top = top; if (base == top) return; - spin_lock(&lock); regions[nr_regions].base = base; regions[nr_regions].size = top - base; ++nr_regions; base = top; - spin_unlock(&lock); } -- 2.37.1
WARNING: multiple messages have this Message-ID (diff)
From: Alexandru Elisei <alexandru.elisei@arm.com> To: pbonzini@redhat.com, thuth@redhat.com, andrew.jones@linux.dev, kvm@vger.kernel.org, kvmarm@lists.cs.columbia.edu, nikos.nikoleris@arm.com Subject: [kvm-unit-tests RFC PATCH 05/19] lib/alloc_phys: Remove locking Date: Tue, 9 Aug 2022 10:15:44 +0100 [thread overview] Message-ID: <20220809091558.14379-6-alexandru.elisei@arm.com> (raw) In-Reply-To: <20220809091558.14379-1-alexandru.elisei@arm.com> With powerpc moving the page allocator, there are no architectures left which use the physical allocator after the boot setup: arm, arm64, s390x and powerpc drain the physical allocator to initialize the page allocator; and x86 calls setup_vm() to drain the allocator for each of the tests that allocate memory. Signed-off-by: Alexandru Elisei <alexandru.elisei@arm.com> --- lib/alloc_phys.c | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/lib/alloc_phys.c b/lib/alloc_phys.c index efb783b34002..2e0b9c079d1d 100644 --- a/lib/alloc_phys.c +++ b/lib/alloc_phys.c @@ -21,7 +21,6 @@ struct phys_alloc_region { static struct phys_alloc_region regions[PHYS_ALLOC_NR_REGIONS]; static int nr_regions; -static struct spinlock lock; static phys_addr_t base, top; #define DEFAULT_MINIMUM_ALIGNMENT 32 @@ -37,7 +36,6 @@ void phys_alloc_show(void) { int i; - spin_lock(&lock); printf("phys_alloc minimum alignment: %#" PRIx64 "\n", (u64)align_min); for (i = 0; i < nr_regions; ++i) printf("%016" PRIx64 "-%016" PRIx64 " [%s]\n", @@ -46,24 +44,19 @@ void phys_alloc_show(void) "USED"); printf("%016" PRIx64 "-%016" PRIx64 " [%s]\n", (u64)base, (u64)(top - 1), "FREE"); - spin_unlock(&lock); } void phys_alloc_init(phys_addr_t base_addr, phys_addr_t size) { - spin_lock(&lock); base = base_addr; top = base + size; nr_regions = 0; - spin_unlock(&lock); } void phys_alloc_set_minimum_alignment(phys_addr_t align) { assert(align && !(align & (align - 1))); - spin_lock(&lock); align_min = align; - spin_unlock(&lock); } static void *memalign_early(size_t alignment, size_t sz) @@ -76,8 +69,6 @@ static void *memalign_early(size_t alignment, size_t sz) assert(align && !(align & (align - 1))); - spin_lock(&lock); - top_safe = top; if (sizeof(long) == 4) @@ -97,7 +88,6 @@ static void *memalign_early(size_t alignment, size_t sz) "top=%#" PRIx64 ", top_safe=%#" PRIx64 "\n", (u64)size_orig, (u64)align, (u64)size, (u64)(top_safe - base), (u64)top, (u64)top_safe); - spin_unlock(&lock); return NULL; } @@ -113,8 +103,6 @@ static void *memalign_early(size_t alignment, size_t sz) warned = true; } - spin_unlock(&lock); - return phys_to_virt(addr); } @@ -124,10 +112,8 @@ void phys_alloc_get_unused(phys_addr_t *p_base, phys_addr_t *p_top) *p_top = top; if (base == top) return; - spin_lock(&lock); regions[nr_regions].base = base; regions[nr_regions].size = top - base; ++nr_regions; base = top; - spin_unlock(&lock); } -- 2.37.1 _______________________________________________ kvmarm mailing list kvmarm@lists.cs.columbia.edu https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
next prev parent reply other threads:[~2022-08-09 9:15 UTC|newest] Thread overview: 102+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-08-09 9:15 [kvm-unit-tests RFC PATCH 00/19] arm/arm64: Rework cache maintenance at boot Alexandru Elisei 2022-08-09 9:15 ` Alexandru Elisei 2022-08-09 9:15 ` [kvm-unit-tests RFC PATCH 01/19] Makefile: Define __ASSEMBLY__ for assembly files Alexandru Elisei 2022-08-09 9:15 ` Alexandru Elisei 2022-08-09 12:36 ` Nikos Nikoleris 2022-08-09 12:36 ` Nikos Nikoleris 2022-09-20 8:11 ` Andrew Jones 2022-09-20 8:11 ` Andrew Jones 2022-08-09 9:15 ` [kvm-unit-tests RFC PATCH 02/19] lib/alloc_phys: Initialize align_min Alexandru Elisei 2022-08-09 9:15 ` Alexandru Elisei 2022-09-20 8:20 ` Andrew Jones 2022-09-20 8:20 ` Andrew Jones 2022-08-09 9:15 ` [kvm-unit-tests RFC PATCH 03/19] lib/alloc_phys: Use phys_alloc_aligned_safe and rename it to memalign_early Alexandru Elisei 2022-08-09 9:15 ` Alexandru Elisei 2022-09-20 8:27 ` Andrew Jones 2022-09-20 8:27 ` Andrew Jones 2022-08-09 9:15 ` [kvm-unit-tests RFC PATCH 04/19] powerpc: Use the page allocator Alexandru Elisei 2022-08-09 9:15 ` Alexandru Elisei 2022-08-09 9:15 ` Alexandru Elisei 2022-08-09 9:15 ` Alexandru Elisei [this message] 2022-08-09 9:15 ` [kvm-unit-tests RFC PATCH 05/19] lib/alloc_phys: Remove locking Alexandru Elisei 2022-09-20 8:45 ` Andrew Jones 2022-09-20 8:45 ` Andrew Jones 2022-09-20 13:20 ` Alexandru Elisei 2022-09-20 13:20 ` Alexandru Elisei 2022-09-20 14:59 ` Andrew Jones 2022-09-20 14:59 ` Andrew Jones 2022-09-26 15:04 ` Alexandru Elisei 2022-09-26 15:04 ` Alexandru Elisei 2022-08-09 9:15 ` [kvm-unit-tests RFC PATCH 06/19] lib/alloc_phys: Remove allocation accounting Alexandru Elisei 2022-08-09 9:15 ` Alexandru Elisei 2022-09-20 8:40 ` Andrew Jones 2022-09-20 8:40 ` Andrew Jones 2022-09-20 13:19 ` Alexandru Elisei 2022-09-20 13:19 ` Alexandru Elisei 2022-08-09 9:15 ` [kvm-unit-tests RFC PATCH 07/19] arm/arm64: Mark the phys_end parameter as unused in setup_mmu() Alexandru Elisei 2022-08-09 9:15 ` Alexandru Elisei 2022-09-20 8:58 ` Andrew Jones 2022-09-20 8:58 ` Andrew Jones 2022-09-26 11:01 ` Alexandru Elisei 2022-09-26 11:01 ` Alexandru Elisei 2022-08-09 9:15 ` [kvm-unit-tests RFC PATCH 08/19] arm/arm64: Use pgd_alloc() to allocate mmu_idmap Alexandru Elisei 2022-08-09 9:15 ` Alexandru Elisei 2022-09-20 9:05 ` Andrew Jones 2022-09-20 9:05 ` Andrew Jones 2022-08-09 9:15 ` [kvm-unit-tests RFC PATCH 09/19] arm/arm64: Zero secondary CPUs' stack Alexandru Elisei 2022-08-09 9:15 ` Alexandru Elisei 2022-08-09 12:56 ` Nikos Nikoleris 2022-08-09 12:56 ` Nikos Nikoleris 2022-08-10 9:42 ` Alexandru Elisei 2022-08-10 9:42 ` Alexandru Elisei 2022-08-10 10:00 ` Nikos Nikoleris 2022-08-10 10:00 ` Nikos Nikoleris 2022-09-20 9:24 ` Andrew Jones 2022-09-20 9:24 ` Andrew Jones 2022-08-09 9:15 ` [kvm-unit-tests RFC PATCH 10/19] arm/arm64: Enable the MMU early Alexandru Elisei 2022-08-09 9:15 ` Alexandru Elisei 2022-08-09 9:15 ` [kvm-unit-tests RFC PATCH 11/19] arm/arm64: Map the UART when creating the translation tables Alexandru Elisei 2022-08-09 9:15 ` Alexandru Elisei 2022-08-09 9:15 ` [kvm-unit-tests RFC PATCH 12/19] arm/arm64: assembler.h: Replace size with end address for dcache_by_line_op Alexandru Elisei 2022-08-09 9:15 ` Alexandru Elisei 2022-08-09 13:01 ` Nikos Nikoleris 2022-08-09 13:01 ` Nikos Nikoleris 2022-09-20 9:37 ` Andrew Jones 2022-09-20 9:37 ` Andrew Jones 2022-08-09 9:15 ` [kvm-unit-tests RFC PATCH 13/19] arm: page.h: Add missing libcflat.h include Alexandru Elisei 2022-08-09 9:15 ` Alexandru Elisei 2022-09-20 9:39 ` Andrew Jones 2022-09-20 9:39 ` Andrew Jones 2022-09-26 11:02 ` Alexandru Elisei 2022-09-26 11:02 ` Alexandru Elisei 2022-08-09 9:15 ` [kvm-unit-tests RFC PATCH 14/19] arm/arm64: Add C functions for doing cache maintenance Alexandru Elisei 2022-08-09 9:15 ` Alexandru Elisei 2022-08-09 9:15 ` [kvm-unit-tests RFC PATCH 15/19] lib/alloc_phys: Add callback to perform " Alexandru Elisei 2022-08-09 9:15 ` Alexandru Elisei 2022-08-09 9:15 ` [kvm-unit-tests RFC PATCH 16/19] arm/arm64: Allocate secondaries' stack using the page allocator Alexandru Elisei 2022-08-09 9:15 ` Alexandru Elisei 2022-09-20 9:58 ` Andrew Jones 2022-09-20 9:58 ` Andrew Jones 2022-08-09 9:15 ` [kvm-unit-tests RFC PATCH 17/19] arm/arm64: Configure secondaries' stack before enabling the MMU Alexandru Elisei 2022-08-09 9:15 ` Alexandru Elisei 2022-08-09 9:15 ` [kvm-unit-tests RFC PATCH 18/19] arm/arm64: Perform dcache maintenance at boot Alexandru Elisei 2022-08-09 9:15 ` Alexandru Elisei 2022-08-09 9:15 ` [kvm-unit-tests RFC PATCH 19/19] arm/arm64: Rework the cache maintenance in asm_mmu_disable Alexandru Elisei 2022-08-09 9:15 ` Alexandru Elisei 2022-08-09 13:53 ` Nikos Nikoleris 2022-08-09 13:53 ` Nikos Nikoleris 2022-08-09 14:22 ` Alexandru Elisei 2022-08-09 14:22 ` Alexandru Elisei 2022-08-09 15:53 ` Nikos Nikoleris 2022-08-09 15:53 ` Nikos Nikoleris 2022-08-09 16:53 ` Alexandru Elisei 2022-08-09 16:53 ` Alexandru Elisei 2022-08-09 19:48 ` Nikos Nikoleris 2022-08-09 19:48 ` Nikos Nikoleris 2022-08-10 8:52 ` Alexandru Elisei 2022-08-10 8:52 ` Alexandru Elisei 2022-08-09 9:49 ` [kvm-unit-tests RFC PATCH 00/19] arm/arm64: Rework cache maintenance at boot Alexandru Elisei 2022-08-09 9:49 ` Alexandru Elisei 2023-11-05 10:16 ` Alexandru Elisei 2023-11-06 9:37 ` Shaoqin Huang 2023-11-07 9:01 ` Alexandru Elisei
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=20220809091558.14379-6-alexandru.elisei@arm.com \ --to=alexandru.elisei@arm.com \ --cc=andrew.jones@linux.dev \ --cc=kvm@vger.kernel.org \ --cc=kvmarm@lists.cs.columbia.edu \ --cc=nikos.nikoleris@arm.com \ --cc=pbonzini@redhat.com \ --cc=thuth@redhat.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.