|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v4 3/4] xen/hap: make hap_track_dirty_vram use non-contiguous memory for temporary map
Just like it's done for shadow_track_dirty_vram allocate the temporary
buffer using non-contiguous memory.
Signed-off-by: Roger Pau Monnà <roger.pau@xxxxxxxxxx>
Cc: Tim Deegan <tim@xxxxxxx>
Cc: Jan Beulich <jbeulich@xxxxxxxx>
Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
---
xen/arch/x86/mm/hap/hap.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c
index c28a6e3..61123b0 100644
--- a/xen/arch/x86/mm/hap/hap.c
+++ b/xen/arch/x86/mm/hap/hap.c
@@ -74,11 +74,10 @@ int hap_track_dirty_vram(struct domain *d,
long rc = 0;
struct sh_dirty_vram *dirty_vram;
uint8_t *dirty_bitmap = NULL;
+ int size = DIV_ROUND_UP(nr, BITS_PER_BYTE);
if ( nr )
{
- int size = (nr + BITS_PER_BYTE - 1) / BITS_PER_BYTE;
-
if ( !paging_mode_log_dirty(d) )
{
rc = paging_log_dirty_enable(d, 0);
@@ -87,7 +86,8 @@ int hap_track_dirty_vram(struct domain *d,
}
rc = -ENOMEM;
- dirty_bitmap = xzalloc_bytes(size);
+ dirty_bitmap = alloc_xenheap_noncontiguous(
+ DIV_ROUND_UP(size, PAGE_SIZE), 0);
if ( !dirty_bitmap )
goto out;
@@ -174,7 +174,7 @@ int hap_track_dirty_vram(struct domain *d,
p2m_ram_logdirty, p2m_ram_rw);
}
out:
- xfree(dirty_bitmap);
+ free_xenheap_noncontiguous(dirty_bitmap, DIV_ROUND_UP(size, PAGE_SIZE));
return rc;
}
--
1.9.5 (Apple Git-50.3)
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |