On 11/13/24 17:13, Philippe Mathieu-Daudé wrote:
> Move methods related to the ram_addr_t type to
> the specific "exec/ram_addr.h" header.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
> include/exec/cpu-common.h | 56 +-------------------------------
> include/exec/ram_addr.h | 56 ++++++++++++++++++++++++++++++++
> include/exec/translation-block.h | 2 +-
> 3 files changed, 58 insertions(+), 56 deletions(-)
>
> diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h
> index 638dc806a5..b790202c56 100644
> --- a/include/exec/cpu-common.h
> +++ b/include/exec/cpu-common.h
> @@ -54,61 +54,7 @@ enum device_endian {
> #define DEVICE_HOST_ENDIAN DEVICE_LITTLE_ENDIAN
> #endif
>
> -/* address in the RAM (different from a physical address) */
> -#if defined(CONFIG_XEN_BACKEND)
> -typedef uint64_t ram_addr_t;
> -# define RAM_ADDR_MAX UINT64_MAX
> -# define RAM_ADDR_FMT "%" PRIx64
> -#else
> -typedef uintptr_t ram_addr_t;
> -# define RAM_ADDR_MAX UINTPTR_MAX
> -# define RAM_ADDR_FMT "%" PRIxPTR
> -#endif
> -
> -/* memory API */
> -
> -void qemu_ram_remap(ram_addr_t addr, ram_addr_t length);
> -/* This should not be used by devices. */
> -ram_addr_t qemu_ram_addr_from_host(void *ptr);
> -ram_addr_t qemu_ram_addr_from_host_nofail(void *ptr);
> -RAMBlock *qemu_ram_block_by_name(const char *name);
> -
> -/*
> - * Translates a host ptr back to a RAMBlock and an offset in that RAMBlock.
> - *
> - * @ptr: The host pointer to translate.
> - * @round_offset: Whether to round the result offset down to a target page
> - * @offset: Will be set to the offset within the returned RAMBlock.
> - *
> - * Returns: RAMBlock (or NULL if not found)
> - *
> - * By the time this function returns, the returned pointer is not protected
> - * by RCU anymore. If the caller is not within an RCU critical section and
> - * does not hold the BQL, it must have other means of protecting the
> - * pointer, such as a reference to the memory region that owns the RAMBlock.
> - */
> -RAMBlock *qemu_ram_block_from_host(void *ptr, bool round_offset,
> - ram_addr_t *offset);
> -ram_addr_t qemu_ram_block_host_offset(RAMBlock *rb, void *host);
> -void qemu_ram_set_idstr(RAMBlock *block, const char *name, DeviceState *dev);
> -void qemu_ram_unset_idstr(RAMBlock *block);
> -const char *qemu_ram_get_idstr(RAMBlock *rb);
> -void *qemu_ram_get_host_addr(RAMBlock *rb);
> -ram_addr_t qemu_ram_get_offset(RAMBlock *rb);
> -ram_addr_t qemu_ram_get_used_length(RAMBlock *rb);
> -ram_addr_t qemu_ram_get_max_length(RAMBlock *rb);
> -bool qemu_ram_is_shared(RAMBlock *rb);
> -bool qemu_ram_is_noreserve(RAMBlock *rb);
> -bool qemu_ram_is_uf_zeroable(RAMBlock *rb);
> -void qemu_ram_set_uf_zeroable(RAMBlock *rb);
> -bool qemu_ram_is_migratable(RAMBlock *rb);
> -void qemu_ram_set_migratable(RAMBlock *rb);
> -void qemu_ram_unset_migratable(RAMBlock *rb);
> -bool qemu_ram_is_named_file(RAMBlock *rb);
> -int qemu_ram_get_fd(RAMBlock *rb);
> -
> -size_t qemu_ram_pagesize(RAMBlock *block);
> -size_t qemu_ram_pagesize_largest(void);
> +#include "exec/ram_addr.h"
>
> /**
> * cpu_address_space_init:
> diff --git a/include/exec/ram_addr.h b/include/exec/ram_addr.h
> index 80f6dc7564..e0620ddb03 100644
> --- a/include/exec/ram_addr.h
> +++ b/include/exec/ram_addr.h
> @@ -21,6 +21,62 @@
>
> #ifndef CONFIG_USER_ONLY
>
> +/* address in the RAM (different from a physical address) */
> +#if defined(CONFIG_XEN_BACKEND)
> +typedef uint64_t ram_addr_t;
> +# define RAM_ADDR_MAX UINT64_MAX
> +# define RAM_ADDR_FMT "%" PRIx64
> +#else
> +typedef uintptr_t ram_addr_t;
> +# define RAM_ADDR_MAX UINTPTR_MAX
> +# define RAM_ADDR_FMT "%" PRIxPTR
> +#endif
> +
> +/* memory API */
> +
> +void qemu_ram_remap(ram_addr_t addr, ram_addr_t length);
> +/* This should not be used by devices. */
> +ram_addr_t qemu_ram_addr_from_host(void *ptr);
> +ram_addr_t qemu_ram_addr_from_host_nofail(void *ptr);
> +RAMBlock *qemu_ram_block_by_name(const char *name);
> +
> +/*
> + * Translates a host ptr back to a RAMBlock and an offset in that RAMBlock.
> + *
> + * @ptr: The host pointer to translate.
> + * @round_offset: Whether to round the result offset down to a target page
> + * @offset: Will be set to the offset within the returned RAMBlock.
> + *
> + * Returns: RAMBlock (or NULL if not found)
> + *
> + * By the time this function returns, the returned pointer is not protected
> + * by RCU anymore. If the caller is not within an RCU critical section and
> + * does not hold the BQL, it must have other means of protecting the
> + * pointer, such as a reference to the memory region that owns the RAMBlock.
> + */
> +RAMBlock *qemu_ram_block_from_host(void *ptr, bool round_offset,
> + ram_addr_t *offset);
> +ram_addr_t qemu_ram_block_host_offset(RAMBlock *rb, void *host);
> +void qemu_ram_set_idstr(RAMBlock *block, const char *name, DeviceState *dev);
> +void qemu_ram_unset_idstr(RAMBlock *block);
> +const char *qemu_ram_get_idstr(RAMBlock *rb);
> +void *qemu_ram_get_host_addr(RAMBlock *rb);
> +ram_addr_t qemu_ram_get_offset(RAMBlock *rb);
> +ram_addr_t qemu_ram_get_used_length(RAMBlock *rb);
> +ram_addr_t qemu_ram_get_max_length(RAMBlock *rb);
> +bool qemu_ram_is_shared(RAMBlock *rb);
> +bool qemu_ram_is_noreserve(RAMBlock *rb);
> +bool qemu_ram_is_uf_zeroable(RAMBlock *rb);
> +void qemu_ram_set_uf_zeroable(RAMBlock *rb);
> +bool qemu_ram_is_migratable(RAMBlock *rb);
> +void qemu_ram_set_migratable(RAMBlock *rb);
> +void qemu_ram_unset_migratable(RAMBlock *rb);
> +bool qemu_ram_is_named_file(RAMBlock *rb);
> +int qemu_ram_get_fd(RAMBlock *rb);
> +
> +size_t qemu_ram_pagesize(RAMBlock *block);
> +size_t qemu_ram_pagesize_largest(void);
> +
> bool ramblock_is_pmem(RAMBlock *rb);
>
> long qemu_minrampagesize(void);
> diff --git a/include/exec/translation-block.h b/include/exec/translation-block.h
> index b99afb0077..9c4757882c 100644
> --- a/include/exec/translation-block.h
> +++ b/include/exec/translation-block.h
> @@ -8,7 +8,7 @@
> #define EXEC_TRANSLATION_BLOCK_H
>
> #include "qemu/thread.h"
> -#include "exec/cpu-common.h"
> +#include "exec/ram_addr.h"
> #include "exec/vaddr.h"
> #ifdef CONFIG_USER_ONLY
> #include "qemu/interval-tree.h"
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>