#
201b9e8b |
| 03-Jul-2024 |
Andrew Jones <andrew.jones@linux.dev> |
Merge branch 'arm/queue' into 'master'
arm/arm64: LPA2 support and fpu/sve s/r test
See merge request kvm-unit-tests/kvm-unit-tests!61
|
#
e521b107 |
| 12-Apr-2024 |
Suzuki K Poulose <suzuki.poulose@arm.com> |
arm: Add necessary header files in asm/pgtable.h
We use memalign() and other symbols defined elsewhere without explicitly including them, which could cause build failures. Add the necessary header f
arm: Add necessary header files in asm/pgtable.h
We use memalign() and other symbols defined elsewhere without explicitly including them, which could cause build failures. Add the necessary header files.
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com> Signed-off-by: Andrew Jones <andrew.jones@linux.dev>
show more ...
|
#
1a00120a |
| 11-Nov-2020 |
Andrew Jones <drjones@redhat.com> |
Merge branch 'arm-pull-11-11-2020' into 'master'
Arm pull 11.11.2020
See merge request kvm-unit-tests/kvm-unit-tests!2
|
#
a2d06852 |
| 04-Nov-2020 |
Nikos Nikoleris <nikos.nikoleris@arm.com> |
arm64: Add support for configuring the translation granule
Make the translation granule configurable for arm64. arm64 supports page sizes of 4K, 16K and 64K. By default, arm64 is configured with 64K
arm64: Add support for configuring the translation granule
Make the translation granule configurable for arm64. arm64 supports page sizes of 4K, 16K and 64K. By default, arm64 is configured with 64K pages. configure has been extended with a new argument:
--page-size=PAGE_SIZE
which allows the user to set the page shift and therefore the page size for arm64. Using the --page-size for any other architecture results an error message.
In addition, bump the VA size from 42 to 48 bits. To enable 48 bit VAs for all translation granules, add support for 4-level and 3-level page tables. At compile time, we determine how many levels in the page tables we needed.
Reviewed-by: Andrew Jones <drjones@redhat.com> Reviewed-by: Alexandru Elisei <alexandru.elisei@arm.com> Tested-by: Alexandru Elisei <alexandru.elisei@arm.com> Signed-off-by: Nikos Nikoleris <nikos.nikoleris@arm.com> Signed-off-by: Andrew Jones <drjones@redhat.com>
show more ...
|
#
3c13c642 |
| 08-Jan-2020 |
Paolo Bonzini <pbonzini@redhat.com> |
Merge branch 'arm/queue' of https://github.com/rhdrjones/kvm-unit-tests into HEAD
|
#
02f1cdc8 |
| 31-Dec-2019 |
Alexandru Elisei <alexandru.elisei@arm.com> |
lib: arm/arm64: Teach mmu_clear_user about block mappings
kvm-unit-tests uses block mappings, so let's expand the mmu_clear_user function to handle those as well.
Now that the function knows about
lib: arm/arm64: Teach mmu_clear_user about block mappings
kvm-unit-tests uses block mappings, so let's expand the mmu_clear_user function to handle those as well.
Now that the function knows about block mappings, we cannot simply assume that if an address isn't mapped we can map it as a regular page. Change the semantics of the function to fail quite loudly if the address isn't mapped, and shift the burden on the caller to map the address as a page or block mapping before calling mmu_clear_user.
Also make mmu_clear_user more flexible by adding a pgtable parameter, instead of assuming that the change always applies to the current translation tables.
Signed-off-by: Alexandru Elisei <alexandru.elisei@arm.com> Signed-off-by: Andrew Jones <drjones@redhat.com>
show more ...
|
#
7510bc97 |
| 31-Dec-2019 |
Alexandru Elisei <alexandru.elisei@arm.com> |
lib: arm/arm64: Add missing include for alloc_page.h in pgtable.h
pgtable.h is used only by mmu.c, where it is included after alloc_page.h.
Reviewed-by: Andrew Jones <drjones@redhat.com> Signed-off
lib: arm/arm64: Add missing include for alloc_page.h in pgtable.h
pgtable.h is used only by mmu.c, where it is included after alloc_page.h.
Reviewed-by: Andrew Jones <drjones@redhat.com> Signed-off-by: Alexandru Elisei <alexandru.elisei@arm.com> Signed-off-by: Andrew Jones <drjones@redhat.com>
show more ...
|
#
70cea146 |
| 31-Dec-2019 |
Alexandru Elisei <alexandru.elisei@arm.com> |
lib: arm/arm64: Use WRITE_ONCE to update the translation tables
Use WRITE_ONCE to prevent store tearing when updating an entry in the translation tables. Without WRITE_ONCE, the compiler, even thoug
lib: arm/arm64: Use WRITE_ONCE to update the translation tables
Use WRITE_ONCE to prevent store tearing when updating an entry in the translation tables. Without WRITE_ONCE, the compiler, even though it is unlikely, can emit several stores when changing the table, and we might end up with bogus TLB entries.
It's worth noting that the existing code is mostly fine without any changes because the translation tables are updated in one of the following situations:
- When the tables are being created with the MMU off, which means no TLB caching is being performed.
- When new page table entries are added as a result of vmalloc'ing a stack for a secondary CPU, which doesn't happen very often.
- When clearing the PTE_USER bit for the cache test, and store tearing has no effect on the table walker because there are no intermediate values between bit values 0 and 1. We still use WRITE_ONCE in this case for consistency.
However, the functions are global and there is nothing preventing someone from writing a test that uses them in a different scenario. Let's make sure that when that happens, there will be no breakage once in a blue moon.
Reported-by: Mark Rutland <mark.rutland@arm.com> Signed-off-by: Alexandru Elisei <alexandru.elisei@arm.com> Reviewed-by: Andre Przywara <andre.przywara@arm.com> Signed-off-by: Andrew Jones <drjones@redhat.com>
show more ...
|
#
6ca8c283 |
| 03-May-2019 |
Nadav Amit <nadav.amit@gmail.com> |
arm: Remove redundant page zeroing
Now that alloc_page() zeros the page, remove the redundant page zeroing.
Suggested-by: Andrew Jones <drjones@redhat.com> Signed-off-by: Nadav Amit <nadav.amit@gma
arm: Remove redundant page zeroing
Now that alloc_page() zeros the page, remove the redundant page zeroing.
Suggested-by: Andrew Jones <drjones@redhat.com> Signed-off-by: Nadav Amit <nadav.amit@gmail.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
show more ...
|
#
f02b6363 |
| 17-Jan-2018 |
Andrew Jones <drjones@redhat.com> |
arm/arm64: fix virt_to_phys
Since switching to the vm_memalign() allocator virt_to_phys() hasn't been returning the correct address, as it was assuming an identity map.
Signed-off-by: Andrew Jones
arm/arm64: fix virt_to_phys
Since switching to the vm_memalign() allocator virt_to_phys() hasn't been returning the correct address, as it was assuming an identity map.
Signed-off-by: Andrew Jones <drjones@redhat.com> Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
show more ...
|
#
031755db |
| 23-Oct-2017 |
Paolo Bonzini <pbonzini@redhat.com> |
arm: enable vmalloc
Unlike x86, ARM always enables virtual memory so it always switches early from phys_alloc to vmalloc. The changes mostly involve using alloc_page directly whenever physical addr
arm: enable vmalloc
Unlike x86, ARM always enables virtual memory so it always switches early from phys_alloc to vmalloc. The changes mostly involve using alloc_page directly whenever physical addresses are needed, and of course implementing the architecture-dependent callbacks that vmalloc needs.
The 32-bit root page table doesn't need a full page, but it is simpler to just allocate one. With split files for 32-bit and 64-bit, we could just place mmu_idmap in .bss.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
show more ...
|
#
0226e262 |
| 23-Oct-2017 |
Paolo Bonzini <pbonzini@redhat.com> |
arm: get rid of pud
We do not need four levels of page tables in either 32-bit or 64-bit ARM, so remove the useless indirection.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
#
c2a95639 |
| 23-Oct-2017 |
Paolo Bonzini <pbonzini@redhat.com> |
arm: make pgtable.h private to mmu.c
The pgd/pmd/pud definitions are not needed outside the architecture- dependent MMU functions. In fact, it probably would be simpler to have completely different
arm: make pgtable.h private to mmu.c
The pgd/pmd/pud definitions are not needed outside the architecture- dependent MMU functions. In fact, it probably would be simpler to have completely different files for 32-bit and 64-bit ARM. However, as a first and possibly less controversial step, hide them inside that file.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
show more ...
|
#
49f758b8 |
| 29-May-2017 |
Andrew Jones <drjones@redhat.com> |
arm/arm64: code derived from Linux must be GPL not LGPL
Also update copyrights.
Reported-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Andrew Jones <drjones@redhat.com> [Amend two other "Adapat
arm/arm64: code derived from Linux must be GPL not LGPL
Also update copyrights.
Reported-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Andrew Jones <drjones@redhat.com> [Amend two other "Adapated" typos as well.] Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
show more ...
|
#
a796123f |
| 10-Dec-2014 |
Andrew Jones <drjones@redhat.com> |
arm: import more linux page table api
To use page level descriptors we need some pgd/pud/pmd/pte methods, and a few more flags defined.
Signed-off-by: Andrew Jones <drjones@redhat.com> Signed-off-b
arm: import more linux page table api
To use page level descriptors we need some pgd/pud/pmd/pte methods, and a few more flags defined.
Signed-off-by: Andrew Jones <drjones@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
show more ...
|