Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 617e164c authored by Christian Borntraeger's avatar Christian Borntraeger Committed by Martin Schwidefsky
Browse files

s390: disable pfmf for clear page instruction



Wit the introduction of large pages Linux also used pfmf for page
clearing. The current implementation is not ideal, though:
- currently we set usage intent=0, but cleared pages are often used
directly after the clearing
- z/VM does not yet provide EDAT
- KVM does have to intercept PFMF even for resident pages

Lets just the mvcl loop in all cases until we have a well defined
pattern were pfmf is besser.

Signed-off-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 7678dcfb
Loading
Loading
Loading
Loading
+8 −12
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@

void storage_key_init_range(unsigned long start, unsigned long end);

static unsigned long pfmf(unsigned long function, unsigned long address)
static inline unsigned long pfmf(unsigned long function, unsigned long address)
{
	asm volatile(
		"	.insn	rre,0xb9af0000,%[function],%[address]"
@@ -44,9 +44,6 @@ static unsigned long pfmf(unsigned long function, unsigned long address)

static inline void clear_page(void *page)
{
	if (MACHINE_HAS_PFMF) {
		pfmf(0x10000, (unsigned long)page);
	} else {
	register unsigned long reg1 asm ("1") = 0;
	register void *reg2 asm ("2") = page;
	register unsigned long reg3 asm ("3") = 4096;
@@ -55,7 +52,6 @@ static inline void clear_page(void *page)
		: "+d" (reg2), "+d" (reg3) : "d" (reg1)
		: "memory", "cc");
}
}

static inline void copy_page(void *to, void *from)
{