|
From: | David Hildenbrand |
Subject: | Re: [PATCH v4] target/s390x: Implement the MVPG condition-code-option bit |
Date: | Thu, 11 Mar 2021 17:00:48 +0100 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.0 |
On 11.03.21 16:58, Richard Henderson wrote:
On 3/11/21 8:03 AM, David Hildenbrand wrote:As talked with Thomas off-list, there is no trusting on host==NULL as well (see comment in struct S390Access). host==NULL simply means we have to do individual ld/st.I think that comment is stale with the use of probe_access instead of tlb_vaddr_to_host -- TLB_DIRTY is in fact handled now.
Yes, it might be worth exploring in which cases we will still have issues and updating the comment. LAP is certainly one.
+ env->tlb_fill_exc = 0; flags = probe_access_flags(env, vaddr1, access_type, mmu_idx, nofault, &haddr1, ra); + if (env->tlb_fill_exc) { + /* We cannot rely on TLB_INVALID_MASK or haddr being NULL. */ + return env->tlb_fill_exc; + } if (unlikely(size2)) { /* The access crosses page boundaries. */ vaddr2 = wrap_address(env, vaddr1 + size1); flags |= probe_access_flags(env, vaddr2, access_type, mmu_idx, nofault, &haddr2, ra); + if (env->tlb_fill_exc) { + /* We cannot rely on TLB_INVALID_MASK or haddr being NULL. */ + return env->tlb_fill_exc;But this is pretty clean, and definitely works.
Except that I need to special case CONFIG_USER_ONLY .... I'll send a v5 later, then we can discuss when looking at the full diff (including an addon patch to handle r1/r2).
-- Thanks, David / dhildenb
[Prev in Thread] | Current Thread | [Next in Thread] |