[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-arm] [PATCH 4/8] boards.h: Define new flag ignore_memory_trans
From: |
Peter Maydell |
Subject: |
Re: [Qemu-arm] [PATCH 4/8] boards.h: Define new flag ignore_memory_transaction_failures |
Date: |
Sat, 5 Aug 2017 11:29:06 +0100 |
On 4 August 2017 at 19:09, Philippe Mathieu-Daudé <address@hidden> wrote:
> On 08/04/2017 02:20 PM, Peter Maydell wrote:
>> We need this for ARM boards, where we're about to implement support for
>> generating external aborts on memory transaction failures. Too many
>> of our legacy board models rely on the RAZ/WI behaviour and we
>> would break currently working guests when their "probe for device"
>> code provoked an external abort rather than a RAZ.
> I think some firmware will give some surprises, those probing device is not
> here and expect RAZ/WI. I remember some fw probing PCI space, or enumerating
> CS this way for ex.
PCI space is funny anyway because IIRC the PCI spec mandates
RAZ/WI (which is handled by QEMU's PCI implementation I think,
it doesn't fall out to the memory system's unmapped-address
handling).
That said: yes, possibly some guest code really wants the fault
(indeed the motivation for this patchset was having some test
guest code which wanted to see the faults), but that guest code
won't work on QEMU today, so if it doesn't boot on QEMU with
this patchsets that's not a regression. We can then (as the
issue arises) look at fixing whatever particular board model
it is to properly model or stub out all its devices so we
can boot that guest code without breaking existing working
guest code.
> RAZ/WI is a bus-feature, this is also bus-dependent to reply with abort or
> behave RAZ/WI. Maybe the effort should be done on how model/use buses in
> QEMU? Bus device would be an alias of unimplemented_device, which current
> purpose is more debugging than avoiding unassigned physical access aborts.
You can model this kind of bus-dependent behaviour by having
the bus register a background region which implements the
default behaviour that is desired. (That way accesses to
that part of the address space don't ever respond with
a transaction error, which is what's happening on hardware
where the bus doesn't report errors.)
thanks
-- PMM
- [Qemu-arm] [PATCH 6/8] target/arm: Factor out fault delivery code, (continued)
- [Qemu-arm] [PATCH 6/8] target/arm: Factor out fault delivery code, Peter Maydell, 2017/08/04
- [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 <=
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