Re: [Qemu-devel] [RFC PATCH 3/4] ppc: Use split I/D mmu modes to avoid flushes on interrupts

2015-07-20 Thread Aurelien Jarno
On 2015-07-20 09:33, Benjamin Herrenschmidt wrote: On Mon, 2015-07-20 at 01:01 +0200, Aurelien Jarno wrote: One way to improve this would be to reduce the size of a TLB entry. Currently we store the page address separately for read, write and code. The information is therefore quite

Re: [Qemu-devel] [RFC PATCH 3/4] ppc: Use split I/D mmu modes to avoid flushes on interrupts

2015-07-20 Thread Benjamin Herrenschmidt
On Mon, 2015-07-20 at 09:11 +0200, Aurelien Jarno wrote: Understood. I did some tests showing that the number of instructions in the fast path doesn't not have a big performance impact. In that case, there is dependency between instructions, but anyway the CPU is likely to be stalled by the

Re: [Qemu-devel] [RFC PATCH 3/4] ppc: Use split I/D mmu modes to avoid flushes on interrupts

2015-07-19 Thread Paolo Bonzini
On 19/07/2015 00:20, Benjamin Herrenschmidt wrote: + * For BookE, we need in theory 8 MMU modes, which would + * reduce performance, so instead, we ignore msr_hv and + * will flush on HV context switches. We *could* improve + * things a bit if needed by using 4 and 5 as HV

Re: [Qemu-devel] [RFC PATCH 3/4] ppc: Use split I/D mmu modes to avoid flushes on interrupts

2015-07-19 Thread Benjamin Herrenschmidt
On Sun, 2015-07-19 at 13:56 +0200, Paolo Bonzini wrote: On 19/07/2015 00:20, Benjamin Herrenschmidt wrote: + * For BookE, we need in theory 8 MMU modes, which would + * reduce performance, so instead, we ignore msr_hv and + * will flush on HV context switches. We *could*

Re: [Qemu-devel] [RFC PATCH 3/4] ppc: Use split I/D mmu modes to avoid flushes on interrupts

2015-07-19 Thread Paolo Bonzini
On 19/07/2015 14:11, Benjamin Herrenschmidt wrote: Ok, I assumed incorrectly that 8 was too much based on your changeset comment: At 8k per TLB (for 64-bit host or target), 8 or more modes make the TLBs bigger than 64k, and some RISC TCG backends do not like that. On the

Re: [Qemu-devel] [RFC PATCH 3/4] ppc: Use split I/D mmu modes to avoid flushes on interrupts

2015-07-19 Thread Aurelien Jarno
On 2015-07-19 13:56, Paolo Bonzini wrote: On 19/07/2015 00:20, Benjamin Herrenschmidt wrote: + * For BookE, we need in theory 8 MMU modes, which would + * reduce performance, so instead, we ignore msr_hv and + * will flush on HV context switches. We *could* improve + *

Re: [Qemu-devel] [RFC PATCH 3/4] ppc: Use split I/D mmu modes to avoid flushes on interrupts

2015-07-19 Thread Benjamin Herrenschmidt
On Mon, 2015-07-20 at 01:01 +0200, Aurelien Jarno wrote: One way to improve this would be to reduce the size of a TLB entry. Currently we store the page address separately for read, write and code. The information is therefore quite redundant. We might want to have only one page address

Re: [Qemu-devel] [RFC PATCH 3/4] ppc: Use split I/D mmu modes to avoid flushes on interrupts

2015-07-19 Thread Benjamin Herrenschmidt
On Sun, 2015-07-19 at 19:42 +0200, Paolo Bonzini wrote: On 19/07/2015 14:11, Benjamin Herrenschmidt wrote: Ok, I assumed incorrectly that 8 was too much based on your changeset comment: At 8k per TLB (for 64-bit host or target), 8 or more modes make the TLBs bigger than 64k,

[Qemu-devel] [RFC PATCH 3/4] ppc: Use split I/D mmu modes to avoid flushes on interrupts

2015-07-18 Thread Benjamin Herrenschmidt
We rework the way the MMU indices are calculated, providing separate indices for I and D side based on MSR:IR and MSR:DR respectively, and thus no longer need to flush the TLB on context changes. This also adds correct support for HV as a separate address space. Signed-off-by: Benjamin