[Qemu-devel] [PATCH v2 04/23] memory: merge adjacent segments of a single memory region

2011-07-26 Thread Avi Kivity
Simple implementations of memory routers, for example the Cirrus VGA memory banks or the 440FX PAM registers can generate adjacent memory regions which are contiguous. Detect these and merge them; this saves kvm memory slots and shortens lookup times. Signed-off-by: Avi Kivity a...@redhat.com

Re: [Qemu-devel] [PATCH v2 04/23] memory: merge adjacent segments of a single memory region

2011-07-26 Thread Paolo Bonzini
On 07/26/2011 01:26 PM, Avi Kivity wrote: +while (i view-nr) { +j = i + 1; +while (j view-nr +can_merge(view-ranges[j-1], view-ranges[j])) { +view-ranges[i].addr.size += view-ranges[j].addr.size; +++j; +} +++i; if (j

Re: [Qemu-devel] [PATCH v2 04/23] memory: merge adjacent segments of a single memory region

2011-07-26 Thread Avi Kivity
On 07/26/2011 02:36 PM, Paolo Bonzini wrote: On 07/26/2011 01:26 PM, Avi Kivity wrote: +while (i view-nr) { +j = i + 1; +while (j view-nr + can_merge(view-ranges[j-1], view-ranges[j])) { +view-ranges[i].addr.size += view-ranges[j].addr.size; +++j;

Re: [Qemu-devel] [PATCH v2 04/23] memory: merge adjacent segments of a single memory region

2011-07-26 Thread Paolo Bonzini
On 07/26/2011 01:38 PM, Avi Kivity wrote: if (j != i) { +memmove(view-ranges[i], view-ranges[j], +(view-nr - j) * sizeof(view-ranges[j])); +view-nr -= j - i; +} } Seems to work both ways? Sure, but you're pointlessly memmove-ing memory over itself.

Re: [Qemu-devel] [PATCH v2 04/23] memory: merge adjacent segments of a single memory region

2011-07-26 Thread Avi Kivity
On 07/26/2011 02:51 PM, Paolo Bonzini wrote: On 07/26/2011 01:38 PM, Avi Kivity wrote: if (j != i) { +memmove(view-ranges[i], view-ranges[j], +(view-nr - j) * sizeof(view-ranges[j])); +view-nr -= j - i; +} } Seems to work both ways? Sure, but you're

Re: [Qemu-devel] [PATCH v2 04/23] memory: merge adjacent segments of a single memory region

2011-07-26 Thread Richard Henderson
On 07/26/2011 04:36 AM, Paolo Bonzini wrote: On 07/26/2011 01:26 PM, Avi Kivity wrote: +while (i view-nr) { +j = i + 1; +while (j view-nr +can_merge(view-ranges[j-1], view-ranges[j])) { +view-ranges[i].addr.size += view-ranges[j].addr.size;

Re: [Qemu-devel] [PATCH v2 04/23] memory: merge adjacent segments of a single memory region

2011-07-26 Thread Avi Kivity
On 07/26/2011 06:41 PM, Richard Henderson wrote: On 07/26/2011 04:36 AM, Paolo Bonzini wrote: On 07/26/2011 01:26 PM, Avi Kivity wrote: +while (i view-nr) { +j = i + 1; +while (j view-nr + can_merge(view-ranges[j-1],view-ranges[j])) { +