[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [qemu-s390x] [Qemu-devel] [PATCH v3 27/32] s390x/tcg: Provide probe_
From: |
David Hildenbrand |
Subject: |
Re: [qemu-s390x] [Qemu-devel] [PATCH v3 27/32] s390x/tcg: Provide probe_write_access helper |
Date: |
Thu, 7 Mar 2019 15:34:27 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 |
On 07.03.19 15:10, Richard Henderson wrote:
> On 3/7/19 4:15 AM, David Hildenbrand wrote:
>> +void probe_write_access(CPUS390XState *env, uint64_t addr, uint64_t len,
>> + uintptr_t ra)
>> +{
>> +#ifdef CONFIG_USER_ONLY
>> + if (!h2g_valid(addr) || !h2g_valid(addr + len - 1)) {
>> + s390_program_interrupt(env, PGM_ADDRESSING, ILEN_AUTO, ra);
>> + }
>
> You need
>
> || page_check_range(addr, len, PAGE_WRITE) < 0
>
> as well.
Indeed, thanks.
So it should be
+void probe_write_access(CPUS390XState *env, uint64_t addr, uint64_t len,
+ uintptr_t ra)
+{
+#ifdef CONFIG_USER_ONLY
+ if (!h2g_valid(addr) || !h2g_valid(addr + len - 1) ||
+ page_check_range(addr, len, PAGE_WRITE) < 0) {
+ s390_program_interrupt(env, PGM_ADDRESSING, ILEN_AUTO, ra);
+ }
+#else
+ /* test the actual access, not just any access to the page due to LAP */
+ while (len) {
+ const uint64_t pagelen = -(addr | -TARGET_PAGE_MASK);
+ const uint64_t curlen = MIN(pagelen, len);
+
+ probe_write(env, addr, curlen, cpu_mmu_index(env, false), ra);
+ addr = wrap_address(env, addr + curlen);
+ len -= curlen;
+ }
+#endif
+}
Conny, I can resend if you don't feel like fixing up (or there is more to do).
--
Thanks,
David / dhildenb
- [qemu-s390x] [PATCH v3 19/32] s390x/tcg: Implement VECTOR PACK *, (continued)
- [qemu-s390x] [PATCH v3 19/32] s390x/tcg: Implement VECTOR PACK *, David Hildenbrand, 2019/03/07
- [qemu-s390x] [PATCH v3 22/32] s390x/tcg: Implement VECTOR REPLICATE, David Hildenbrand, 2019/03/07
- [qemu-s390x] [PATCH v3 23/32] s390x/tcg: Implement VECTOR REPLICATE IMMEDIATE, David Hildenbrand, 2019/03/07
- [qemu-s390x] [PATCH v3 24/32] s390x/tcg: Implement VECTOR SCATTER ELEMENT, David Hildenbrand, 2019/03/07
- [qemu-s390x] [PATCH v3 25/32] s390x/tcg: Implement VECTOR SELECT, David Hildenbrand, 2019/03/07
- [qemu-s390x] [PATCH v3 26/32] s390x/tcg: Implement VECTOR SIGN EXTEND TO DOUBLEWORD, David Hildenbrand, 2019/03/07
- [qemu-s390x] [PATCH v3 28/32] s390x/tcg: Implement VECTOR STORE, David Hildenbrand, 2019/03/07
- [qemu-s390x] [PATCH v3 29/32] s390x/tcg: Implement VECTOR STORE ELEMENT, David Hildenbrand, 2019/03/07
- [qemu-s390x] [PATCH v3 27/32] s390x/tcg: Provide probe_write_access helper, David Hildenbrand, 2019/03/07
- [qemu-s390x] [PATCH v3 30/32] s390x/tcg: Implement VECTOR STORE MULTIPLE, David Hildenbrand, 2019/03/07
- [qemu-s390x] [PATCH v3 32/32] s390x/tcg: Implement VECTOR UNPACK *, David Hildenbrand, 2019/03/07
- [qemu-s390x] [PATCH v3 31/32] s390x/tcg: Implement VECTOR STORE WITH LENGTH, David Hildenbrand, 2019/03/07
- Re: [qemu-s390x] [Qemu-devel] [PATCH v3 00/32] s390x/tcg: Vector Instruction Support Part 1, no-reply, 2019/03/07
- Re: [qemu-s390x] [Qemu-devel] [PATCH v3 00/32] s390x/tcg: Vector Instruction Support Part 1, no-reply, 2019/03/07
- Re: [qemu-s390x] [Qemu-devel] [PATCH v3 00/32] s390x/tcg: Vector Instruction Support Part 1, no-reply, 2019/03/07
- Re: [qemu-s390x] [Qemu-devel] [PATCH v3 00/32] s390x/tcg: Vector Instruction Support Part 1, no-reply, 2019/03/07
- Re: [qemu-s390x] [Qemu-devel] [PATCH v3 00/32] s390x/tcg: Vector Instruction Support Part 1, no-reply, 2019/03/07