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
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
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;
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.
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
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;
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])) {
+