On 6/11/21 4:06 PM, Claudio Imbrenda wrote: > Introduce support for large (1M) and huge (2G) pages. > > Add a simple testcase for EDAT1 and EDAT2. > > v4->v5 > * fixed some typos and comment style issues > * introduced enum pgt_level, switched all functions to use it > > v3->v4 > * replace macros in patch 5 with a union representing TEID fields > * clear the teid in expect_pgm_int and clear_pgm_int > * update testcase to use expect_pgm_int, remove expect_dat_fault > * update testcase to use teid union > > v2->v3 > * Add proper macros for control register bits > * Improved patch titles and descriptions > * Moved definition of TEID bits to library > * Rebased on the lastest upstream branch > > v1->v2 > > * split patch 2 -> new patch 2 and new patch 3 > * patch 2: fixes pgtable.h, also fixes wrong usage of REGION_TABLE_LENGTH > instead of SEGMENT_TABLE_LENGTH > * patch 3: introduces new macros and functions for large pages > * patch 4: remove erroneous double call to pte_alloc in get_pte > * patch 4: added comment in mmu.c to bridge the s390x architecural names > with the Linux ones used in the kvm-unit-tests > * patch 5: added and fixed lots of comments to explain what's going on > * patch 5: set FC for region 3 after writing the canary, like for segments > * patch 5: use uintptr_t instead of intptr_t for set_prefix > * patch 5: introduce new macro PGD_PAGE_SHIFT instead of using magic value 41 > * patch 5: use VIRT(0) instead of mem to make it more clear what we are > doing, even though VIRT(0) expands to mem Thanks, picked > > > Claudio Imbrenda (7): > s390x: lib: add and use macros for control register bits > libcflat: add SZ_1M and SZ_2G > s390x: lib: fix pgtable.h > s390x: lib: Add idte and other huge pages functions/macros > s390x: lib: add teid union and clear teid from lowcore > s390x: mmu: add support for large pages > s390x: edat test > > s390x/Makefile | 1 + > lib/s390x/asm/arch_def.h | 12 ++ > lib/s390x/asm/float.h | 4 +- > lib/s390x/asm/interrupt.h | 28 +++- > lib/s390x/asm/pgtable.h | 44 +++++- > lib/libcflat.h | 2 + > lib/s390x/mmu.h | 84 +++++++++++- > lib/s390x/interrupt.c | 2 + > lib/s390x/mmu.c | 262 ++++++++++++++++++++++++++++++++---- > lib/s390x/sclp.c | 4 +- > s390x/diag288.c | 2 +- > s390x/edat.c | 274 ++++++++++++++++++++++++++++++++++++++ > s390x/gs.c | 2 +- > s390x/iep.c | 4 +- > s390x/skrf.c | 2 +- > s390x/smp.c | 8 +- > s390x/vector.c | 2 +- > s390x/unittests.cfg | 3 + > 18 files changed, 691 insertions(+), 49 deletions(-) > create mode 100644 s390x/edat.c >