qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v3 13/18] target/arm: Update contiguous first-fault and no-fa


From: Richard Henderson
Subject: Re: [PATCH v3 13/18] target/arm: Update contiguous first-fault and no-fault loads
Date: Mon, 27 Apr 2020 09:16:11 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0

On 4/27/20 4:03 AM, Peter Maydell wrote:
> On Wed, 22 Apr 2020 at 05:33, Richard Henderson
> <address@hidden> wrote:
>>
>> With sve_cont_ldst_pages, the differences between first-fault and no-fault
>> are minimal, so unify the routines.  With cpu_probe_watchpoint, we are able
>> to make progress through pages with TLB_WATCHPOINT set when the watchpoint
>> does not actually fire.
>>
>> Signed-off-by: Richard Henderson <address@hidden>
> 
> 
>>      /*
>> -     * Perform one normal read, which will fault or not.
>> -     * But it is likely to bring the page into the tlb.
>> +     * From this point on, all memory operations are MemSingleNF.
>> +     *
>> +     * Per the MemSingleNF pseudocode, a no-fault load from Device memory
>> +     * must not actually hit the bus -- it returns (UNKNOWN, FAULT) instead.
>> +     * If you map non-RAM with Normal memory attributes and do a NF
>> +     * load then it should access the bus -- but doing so is illegal.
>> +     *
>> +     * While we do not have access to the memory attributes from the PTE
>> +     * to tell Device memory from Normal memory, we can validly assume that
>> +     * non-RAM has been mapped as Device memory.  Thus we indicate fault
>> +     * on all MMIO.
> 
> I still don't understand why this is right. All non-RAM is MMIO
> but not all MMIO is non-RAM; so you might have something that's
> MMIO (at least for the moment) and has been mapped Normal. That
> shouldn't fault.

Everything that must go through the slow path has TLB_MMIO set.

What you're thinking of, romd, has TLB_MMIO set on the write comparator but not
the read comparator.

Have another browse through tlb_set_page_with_attrs, lines 859-893, and the
uses of is_romd.



r~



reply via email to

[Prev in Thread] Current Thread [Next in Thread]