[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-arm] [PATCH 2/8] cpu: Define new cpu_transaction_failed() hook
From: |
Richard Henderson |
Subject: |
Re: [Qemu-arm] [PATCH 2/8] cpu: Define new cpu_transaction_failed() hook |
Date: |
Fri, 4 Aug 2017 11:42:26 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 |
On 08/04/2017 10:20 AM, Peter Maydell wrote:
> Currently we have a rather half-baked setup for allowing CPUs to
> generate exceptions on accesses to invalid memory: the CPU has a
> cpu_unassigned_access() hook which the memory system calls in
> unassigned_mem_write() and unassigned_mem_read() if the current_cpu
> pointer is non-NULL. This was originally designed before we
> implemented the MemTxResult type that allows memory operations to
> report a success or failure code, which is why the hook is called
> right at the bottom of the memory system. The major problem with
> this is that it means that the hook can be called even when the
> access was not actually done by the CPU: for instance if the CPU
> writes to a DMA engine register which causes the DMA engine to begin
> a transaction which has been set up by the guest to operate on
> invalid memory then this will casue the CPU to take an exception
> incorrectly. Another minor problem is that currently if a device
> returns a transaction error then this won't turn into a CPU exception
> at all.
>
> The right way to do this is to have allow the CPU to respond
> to memory system transaction failures at the point where the
> CPU specific code calls into the memory system.
>
> Define a new QOM CPU method and utility function
> cpu_transaction_failed() which is called in these cases.
> The functionality here overlaps with the existing
> cpu_unassigned_access() because individual target CPUs will
> need some work to convert them to the new system. When this
> transition is complete we can remove the old cpu_unassigned_access()
> code.
>
> Signed-off-by: Peter Maydell <address@hidden>
> ---
> include/qom/cpu.h | 21 +++++++++++++++++++++
> 1 file changed, 21 insertions(+)
Reviewed-by: Richard Henderson <address@hidden>
r~
- [Qemu-arm] [PATCH 4/8] boards.h: Define new flag ignore_memory_transaction_failures, (continued)
- [Qemu-arm] [PATCH 4/8] boards.h: Define new flag ignore_memory_transaction_failures, Peter Maydell, 2017/08/04
- Re: [Qemu-arm] [PATCH 4/8] boards.h: Define new flag ignore_memory_transaction_failures, Philippe Mathieu-Daudé, 2017/08/04
- Re: [Qemu-arm] [PATCH 4/8] boards.h: Define new flag ignore_memory_transaction_failures, Richard Henderson, 2017/08/04
- Re: [Qemu-arm] [PATCH 4/8] boards.h: Define new flag ignore_memory_transaction_failures, Peter Maydell, 2017/08/05
- Re: [Qemu-arm] [PATCH 4/8] boards.h: Define new flag ignore_memory_transaction_failures, Peter Maydell, 2017/08/17
- Re: [Qemu-arm] [PATCH 4/8] boards.h: Define new flag ignore_memory_transaction_failures, Philippe Mathieu-Daudé, 2017/08/21
- Re: [Qemu-arm] [PATCH 4/8] boards.h: Define new flag ignore_memory_transaction_failures, Peter Maydell, 2017/08/22
- Re: [Qemu-arm] [PATCH 4/8] boards.h: Define new flag ignore_memory_transaction_failures, Peter Maydell, 2017/08/05
Re: [Qemu-arm] [PATCH 4/8] boards.h: Define new flag ignore_memory_transaction_failures, Edgar E. Iglesias, 2017/08/04
[Qemu-arm] [PATCH 2/8] cpu: Define new cpu_transaction_failed() hook, Peter Maydell, 2017/08/04
[Qemu-arm] [PATCH 1/8] memory.h: Move MemTxResult type to memattrs.h, Peter Maydell, 2017/08/04
[Qemu-arm] [PATCH 3/8] cputlb: Support generating CPU exceptions on memory transaction failures, Peter Maydell, 2017/08/04