[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH RFC 12/21] migration: Introduce page size for-migration-only
From: |
Juan Quintela |
Subject: |
Re: [PATCH RFC 12/21] migration: Introduce page size for-migration-only |
Date: |
Mon, 30 Jan 2023 06:17:05 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux) |
Peter Xu <peterx@redhat.com> wrote:
> Migration may not want to recognize memory chunks in page size of the host
> only, but sometimes we may want to recognize the memory in smaller chunks
> if e.g. they're doubly mapped as both huge and small.
>
> In those cases we'll prefer to assume the memory page size is always mapped
> small (qemu_real_host_page_size) and we'll do things just like when the
> pages was only smally mapped.
>
> Let's do this to be prepared of postcopy double-mapping for hugetlbfs.
>
> Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
> ---
> migration/migration.c | 6 ++++--
> migration/postcopy-ram.c | 16 +++++++++-------
> migration/ram.c | 29 ++++++++++++++++++++++-------
> migration/ram.h | 1 +
> 4 files changed, 36 insertions(+), 16 deletions(-)
>
> diff --git a/migration/migration.c b/migration/migration.c
> index b174f2af92..f6fe474fc3 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -408,7 +408,7 @@ int
> migrate_send_rp_message_req_pages(MigrationIncomingState *mis,
> {
> uint8_t bufc[12 + 1 + 255]; /* start (8), len (4), rbname up to 256 */
> size_t msglen = 12; /* start + len */
> - size_t len = qemu_ram_pagesize(rb);
> + size_t len = migration_ram_pagesize(rb);
> enum mig_rp_message_type msg_type;
> const char *rbname;
> int rbname_len;
> @@ -443,8 +443,10 @@ int
> migrate_send_rp_message_req_pages(MigrationIncomingState *mis,
> int migrate_send_rp_req_pages(MigrationIncomingState *mis,
> RAMBlock *rb, ram_addr_t start, uint64_t haddr)
> {
> - void *aligned = (void *)(uintptr_t)ROUND_DOWN(haddr,
> qemu_ram_pagesize(rb));
> bool received = false;
> + void *aligned;
> +
> + aligned = (void *)(uintptr_t)ROUND_DOWN(haddr,
> migration_ram_pagesize(rb));
I am trying that all new code declares variables at 1st use, and this
goes in the wrong direction. As this happens more than once in this
patch, can we change the macro (or create another macro) that also does
the cast?
- Re: [PATCH RFC 09/21] ramblock: Add RAM_READONLY, (continued)
- [PATCH RFC 13/21] migration: Add migration_ram_pagesize_largest(), Peter Xu, 2023/01/17
- [PATCH RFC 14/21] migration: Map hugetlbfs ramblocks twice, and pre-allocate, Peter Xu, 2023/01/17
- [PATCH RFC 16/21] migration: Enable doublemap with MADV_SPLIT, Peter Xu, 2023/01/17
- [PATCH RFC 18/21] migration: Allow postcopy_register_shared_ufd() to fail, Peter Xu, 2023/01/17
- [PATCH RFC 19/21] migration: Add postcopy_mark_received(), Peter Xu, 2023/01/17