On 6 September 2014 01:26, Peter Crosthwaite
<peter.crosthwa...@xilinx.com> wrote:
> On Fri, Sep 5, 2014 at 3:47 AM, Peter Maydell <peter.mayd...@linaro.org> 
> wrote:
>> (Another oddball usecase is the Cortex-M split I and D
>> bus for low memory, where instruction and data accesses
>> go out via different buses and might map to different things,
>> but for now I think I'm happy to ignore this as more a
>> theoretical question than a practical one...)

> Similar problem that I ran into was trying to differentiate I from D
> for unassigned memory accesses. I'm trying to correctly implement
> prefetch and data aborts for unassigned but the memory API has no
> information on whether an access is I or D. Attributes could solve
> this.

Nice; that's been something I've vaguely thought we should
do for a while now. (Watch out for all the places which do
ldl_phys() or equivalent and implicitly assume it won't
longjump out on them, though.)

>> Here's one idea which deals with some of these...
>>
>> We introduce the concept of memory transaction attributes,
>> which are a guest-CPU specific bunch of bits (say, a
>> uint32_t). We also allow the CPU to have more than one
>> AddressSpace,
>
> Or any master for that matter. I have an example of this for a dma
> device already:
>
> http://lists.gnu.org/archive/html/qemu-devel/2014-06/msg00370.html

Sure, but non-CPU masters are much simpler because they
don't have to deal with the TLB data structure. The DMA
APIs already take an AddressSpace, I think. You're right
that TZ-aware bus masters will want to have multiple
AddressSpaces though.

>  and have the guest CPU code provide
>> a function returning the AddressSpace to use for a
>> given set of transaction attributes. For ARM we'd
>> put all of (S/NS, mmu_idx, CPU number) into the attributes,
>
> Many buses have master ID or transaction ID for master identification,
> so I think the concept of CPU number should be softened to just
> master-id.

Yes, I was sort of using CPU number as a shorthand there.

>> Thoughts?

> The transaction attributes concept you are proposing sounds orthogonal
> to the multi-address space work I have been working on, so I guess I
> should proceed with that series to solve some of the multi-address
> space requirements independently of the transaction attrs extension.
>
> Overall sounds ok, more than just addr and data needs to come on IO
> bus transactions and there's lots of features that require it.

Sounds good.

-- PMM

Reply via email to