[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v1 08/22] cpu: Add per-cpu address space
From: |
Edgar E. Iglesias |
Subject: |
Re: [Qemu-devel] [PATCH v1 08/22] cpu: Add per-cpu address space |
Date: |
Tue, 17 Dec 2013 11:01:50 +1000 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Tue, Dec 17, 2013 at 12:54:19AM +0000, Peter Maydell wrote:
> On 17 December 2013 00:34, Edgar E. Iglesias <address@hidden> wrote:
> > On Mon, Dec 16, 2013 at 01:11:47PM +0100, Andreas Färber wrote:
> >> Why are you adding this field here rather than in CPUState alongside the
> >> other field? This being a pointer I can't imagine problems for
> >> non-softmmu, and I had posted patches a while ago to move the
> >> surrounding fields there. Having it in CPUState would avoid some of the
> >> env_ptr accesses above, which were supposed to be an interim solution only.
>
> > This was discussed when I posted the RFC. My first try had this member in
> > CPUState but some of the hot paths for mmio accesses needed to do
> > ENV_GET_CPU() to get hold of the CS and AS. ENV_GET_CPU does a runtime type
> > check that would slow things down. That's the reason I moved it to env.
> >
> > I'm not against moving the field back if it doesnt cost too much. Maybe we
> > should consider removing the CPU() around ENV_GET_CPU()?
> >
> > See:
> > http://lists.gnu.org/archive/html/qemu-devel/2013-11/msg02889.html
>
> I think that's the wrong way round. We should put the field in the right
> place in the code, which is CPUState. To the extent that that means we
> discover that our dynamic cast macros are not fast enough for hot
> paths we should make the actual error checking be debug builds
> only. (There's been pushback on dynamic-casts in fastpaths before
> and the preferred approach so far has been "optimise the cast".
> I think we should take "...and do it only in debug builds" over "do
> the wrong thing because a purely-debug-purposes type check
> isn't as fast as we'd like".)
Sounds reasonable to me, I'll move the AS back into CPUState for v2.
Thanks,
Edgar
- [Qemu-devel] [PATCH v1 03/22] exec: Always initialize MemorySection address spaces, (continued)
- [Qemu-devel] [PATCH v1 03/22] exec: Always initialize MemorySection address spaces, edgar . iglesias, 2013/12/16
- [Qemu-devel] [PATCH v1 04/22] exec: Make memory_region_section_get_iotlb use section AS, edgar . iglesias, 2013/12/16
- [Qemu-devel] [PATCH v1 05/22] memory: Add MemoryListener to typedefs.h, edgar . iglesias, 2013/12/16
- [Qemu-devel] [PATCH v1 06/22] memory: Add address_space_find_by_name(), edgar . iglesias, 2013/12/16
- [Qemu-devel] [PATCH v1 07/22] qdev: Add qdev property type for AddressSpaces, edgar . iglesias, 2013/12/16
- [Qemu-devel] [PATCH v1 08/22] cpu: Add per-cpu address space, edgar . iglesias, 2013/12/16
[Qemu-devel] [PATCH v1 09/22] target-microblaze: Add address-space property, edgar . iglesias, 2013/12/16
[Qemu-devel] [PATCH v1 10/22] exec: On AS changes, only flush affected CPU TLBs, edgar . iglesias, 2013/12/16
[Qemu-devel] [PATCH v1 11/22] exec: Make ldl_*_phys input an AddressSpace, edgar . iglesias, 2013/12/16
[Qemu-devel] [PATCH v1 12/22] exec: Make ldq/ldub_*_phys input an AddressSpace, edgar . iglesias, 2013/12/16
[Qemu-devel] [PATCH v1 13/22] exec: Make lduw_*_phys input an AddressSpace, edgar . iglesias, 2013/12/16
[Qemu-devel] [PATCH v1 14/22] exec: Make stq_*_phys input an AddressSpace, edgar . iglesias, 2013/12/16
[Qemu-devel] [PATCH v1 15/22] exec: Make stl_*_phys input an AddressSpace, edgar . iglesias, 2013/12/16
[Qemu-devel] [PATCH v1 16/22] exec: Make stl_phys_notdirty input an AddressSpace, edgar . iglesias, 2013/12/16