[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 08/13] s390x/mmu_helper: avoid setting the storage key if noth
From: |
David Hildenbrand |
Subject: |
[PATCH v3 08/13] s390x/mmu_helper: avoid setting the storage key if nothing changed |
Date: |
Fri, 3 Sep 2021 17:55:09 +0200 |
Avoid setting the key if nothing changed.
Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: David Hildenbrand <david@redhat.com>
---
target/s390x/mmu_helper.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/target/s390x/mmu_helper.c b/target/s390x/mmu_helper.c
index de6df928d2..e2b372efd9 100644
--- a/target/s390x/mmu_helper.c
+++ b/target/s390x/mmu_helper.c
@@ -301,7 +301,7 @@ static void mmu_handle_skey(target_ulong addr, int rw, int
*flags)
{
static S390SKeysClass *skeyclass;
static S390SKeysState *ss;
- uint8_t key;
+ uint8_t key, old_key;
int rc;
/*
@@ -337,6 +337,7 @@ static void mmu_handle_skey(target_ulong addr, int rw, int
*flags)
trace_get_skeys_nonzero(rc);
return;
}
+ old_key = key;
switch (rw) {
case MMU_DATA_LOAD:
@@ -360,9 +361,11 @@ static void mmu_handle_skey(target_ulong addr, int rw, int
*flags)
/* Any store/fetch sets the reference bit */
key |= SK_R;
- rc = skeyclass->set_skeys(ss, addr / TARGET_PAGE_SIZE, 1, &key);
- if (rc) {
- trace_set_skeys_nonzero(rc);
+ if (key != old_key) {
+ rc = skeyclass->set_skeys(ss, addr / TARGET_PAGE_SIZE, 1, &key);
+ if (rc) {
+ trace_set_skeys_nonzero(rc);
+ }
}
}
--
2.31.1
- [PATCH v3 01/13] s390x/tcg: wrap address for RRBE, (continued)
- [PATCH v3 01/13] s390x/tcg: wrap address for RRBE, David Hildenbrand, 2021/09/03
- [PATCH v3 02/13] s390x/tcg: fix ignoring bit 63 when setting the storage key in SSKE, David Hildenbrand, 2021/09/03
- [PATCH v3 03/13] s390x/tcg: convert real to absolute address for RRBE, SSKE and ISKE, David Hildenbrand, 2021/09/03
- [PATCH v3 04/13] s390x/tcg: check for addressing exceptions for RRBE, SSKE and ISKE, David Hildenbrand, 2021/09/03
- [PATCH v3 05/13] s390x/mmu_helper: no need to pass access type to mmu_translate_asce(), David Hildenbrand, 2021/09/03
- [PATCH v3 06/13] s390x/mmu_helper: fixup mmu_translate() documentation, David Hildenbrand, 2021/09/03
- [PATCH v3 07/13] s390x/mmu_helper: move address validation into mmu_translate*(), David Hildenbrand, 2021/09/03
- [PATCH v3 08/13] s390x/mmu_helper: avoid setting the storage key if nothing changed,
David Hildenbrand <=
- [PATCH v3 09/13] hw/s390x/s390-skeys: use memory mapping to detect which storage keys to migrate, David Hildenbrand, 2021/09/03
- [PATCH v3 10/13] hw/s390x/s390-skeys: use memory mapping to detect which storage keys to dump, David Hildenbrand, 2021/09/03
- [PATCH v3 11/13] hw/s390x/s390-skeys: check if an address is valid before dumping the key, David Hildenbrand, 2021/09/03
- [PATCH v3 13/13] hw/s390x/s390-skeys: lazy storage key enablement under TCG, David Hildenbrand, 2021/09/03
- [PATCH v3 12/13] hw/s390x/s390-skeys: rename skeys_enabled to skeys_are_enabled, David Hildenbrand, 2021/09/03
- Re: [PATCH v3 00/13] s390x: skey related fixes, cleanups, and memory device preparations, Thomas Huth, 2021/09/07