[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC v1] Add declarations for hierarchical memory regio
From: |
Alex Williamson |
Subject: |
Re: [Qemu-devel] [RFC v1] Add declarations for hierarchical memory region API |
Date: |
Thu, 19 May 2011 13:07:02 -0600 |
On Thu, 2011-05-19 at 10:12 -0400, Avi Kivity wrote:
> The memory API separates the attributes of a memory region (its size, how
> reads or writes are handled, dirty logging, and coalescing) from where it
> is mapped and whether it is enabled. This allows a device to configure
> a memory region once, then hand it off to its parent bus to map it according
> to the bus configuration.
>
> Hierarchical registration also allows a device to compose a region out of
> a number of sub-regions with different properties; for example some may be
> RAM while others may be MMIO.
>
> Signed-off-by: Avi Kivity <address@hidden>
> ---
> memory.h | 142
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 files changed, 142 insertions(+), 0 deletions(-)
> create mode 100644 memory.h
>
> diff --git a/memory.h b/memory.h
> new file mode 100644
> index 0000000..77c5951
> --- /dev/null
> +++ b/memory.h
> @@ -0,0 +1,142 @@
> +#ifndef MEMORY_H
> +#define MEMORY_H
> +
> +#include <stdint.h>
> +#include <stdbool.h>
> +#include "qemu-common.h"
> +#include "cpu-common.h"
> +#include "targphys.h"
> +#include "qemu-queue.h"
> +
> +typedef struct MemoryRegionOps MemoryRegionOps;
> +typedef struct MemoryRegion MemoryRegion;
> +
> +/*
> + * Memory region callbacks
> + */
> +struct MemoryRegionOps {
> + /* Read from the memory region. @addr is relative to @mr; @size is
> + * in bytes. */
> + uint64_t (*read)(MemoryRegion *mr,
> + target_phys_addr_t addr,
> + unsigned size);
> + /* Write to the memory region. @addr is relative to @mr; @size is
> + * in bytes. */
> + void (*write)(MemoryRegion *mr,
> + target_phys_addr_t addr,
> + uint64_t data,
> + unsigned size);
> + /* Guest-visible constraints: */
> + struct {
> + /* If nonzero, specify bounds on access sizes beyond which a machine
> + * check is thrown.
> + */
> + unsigned min_access_size;
> + unsigned max_access_size;
Do we always support all access sizes between min and max? This might
be easier to describe as a bitmap of supported power of 2 access sizes.
Thanks,
Alex
- [Qemu-devel] [RFC v1] Memory API, Avi Kivity, 2011/05/19
- [Qemu-devel] [RFC v1] Add declarations for hierarchical memory region API, Avi Kivity, 2011/05/19
- Re: [Qemu-devel] [RFC v1] Add declarations for hierarchical memory region API,
Alex Williamson <=
- Re: [Qemu-devel] [RFC v1] Add declarations for hierarchical memory region API, Jan Kiszka, 2011/05/19
- Re: [Qemu-devel] [RFC v1] Add declarations for hierarchical memory region API, Anthony Liguori, 2011/05/19
- Re: [Qemu-devel] [RFC v1] Add declarations for hierarchical memory region API, Avi Kivity, 2011/05/20
- Re: [Qemu-devel] [RFC v1] Add declarations for hierarchical memory region API, Richard Henderson, 2011/05/20
- Re: [Qemu-devel] [RFC v1] Add declarations for hierarchical memory region API, Anthony Liguori, 2011/05/20
- Re: [Qemu-devel] [RFC v1] Add declarations for hierarchical memory region API, Richard Henderson, 2011/05/20
- Re: [Qemu-devel] [RFC v1] Add declarations for hierarchical memory region API, Anthony Liguori, 2011/05/20
- Re: [Qemu-devel] [RFC v1] Add declarations for hierarchical memory region API, Blue Swirl, 2011/05/20