Statistics
| Branch: | Revision:

root / memory.c @ 5a37532d

History | View | Annotate | Download (53.7 kB)

# Date Author Comment
2c7cfd65 03/22/2013 02:21 pm Hu Tao

memory: fix a bug of detection of memory region collision

The collision reports before and after this patch are:

before:

warning: subregion collision cfc/4 (pci-conf-data) vs cf8/4 (pci-conf-idx)
warning: subregion collision 8000000/f8000000 (pci-hole) vs 0/8000000 (ram-below-4g)...

5bbf90be 02/16/2013 01:12 pm Richard Henderson

memory: Use non-bitops ctzl

A memory size of zero is invalid, and so that edge condition
does not occur.

Signed-off-by: Richard Henderson <>
Reviewed-by: Eric Blake <>
Signed-off-by: Blue Swirl <>

fbeadf50 02/02/2013 10:16 pm Paolo Bonzini

bitops: unify bitops_ffsl with the one in host-utils.h, call it bitops_ctzl

We had two copies of a ffs function for longs with subtly different
semantics and, for the one in bitops.h, a confusing name: the result
was off-by-one compared to the library function ffsl....

6c279db8 12/21/2012 12:09 am Juan Quintela

memory: introduce memory_region_test_and_clear_dirty

This function avoids having to do two calls, one to test the dirty bit, and
other to reset it.

Signed-off-by: Juan Quintela <>

9c17d615 12/19/2012 09:32 am Paolo Bonzini

softmmu: move include files to include/sysemu/

Signed-off-by: Paolo Bonzini <>

1de7afc9 12/19/2012 09:32 am Paolo Bonzini

misc: move include files to include/qemu/

Signed-off-by: Paolo Bonzini <>

022c62cb 12/19/2012 09:31 am Paolo Bonzini

exec: move include files to include/exec/

Signed-off-by: Paolo Bonzini <>

7ea692b2 11/10/2012 03:24 pm Jan Kiszka

memory: Don't dump disabled regions

This makes "info mtree" output readable again.

Signed-off-by: Jan Kiszka <>
Signed-off-by: Blue Swirl <>

22bde714 11/10/2012 02:30 pm Jan Kiszka

memory: Reintroduce dirty flag to optimize changes on disabled regions

Cirrus is triggering this, e.g. during Win2k boot: Changes only on
disabled regions require no topology update when transaction depth drops
to 0 again.

Signed-off-by: Jan Kiszka <>...

d26a8cae 10/29/2012 09:32 pm Avi Kivity

memory: fix rendering of a region obscured by another

The memory core drops regions that are hidden by another region (for example,
during BAR sizing), but it doesn't do so correctly if the lower address of the
existing range is below the lower address of the new range....

a8170e5e 10/23/2012 04:58 pm Avi Kivity

Rename target_phys_addr_t to hwaddr

target_phys_addr_t is unwieldly, violates the C standard (_t suffixes are
reserved) and its purpose doesn't match the name (most target_phys_addr_t
addresses are not target specific). Replace it with a finger-friendly,...

50d2b4d9 10/22/2012 10:49 pm Anthony Liguori

Merge remote-tracking branch 'qemu-kvm/memory/urgent' into staging

  • qemu-kvm/memory/urgent:
    memory: abort if a memory region is destroyed during a transaction
    i440fx: avoid destroying memory regions within a transaction
    memory: Make eventfd adhere to device endianness
ac1970fb 10/22/2012 03:50 pm Avi Kivity

memory: per-AddressSpace dispatch

Currently we use a global radix tree to dispatch memory access. This only
works with a single address space; to support multiple address spaces we
make the radix tree a member of AddressSpace (via an intermediate structure...

83f3c251 10/22/2012 03:50 pm Avi Kivity

memory: add address_space_destroy()

Since address spaces can be created dynamically by device hotplug, they
can also be destroyed dynamically.

Signed-off-by: Avi Kivity <>

2673a5da 10/22/2012 03:50 pm Avi Kivity

memory: move address_space_memory and address_space_io out of memory core

With this change, memory.c no longer knows anything about special address
spaces, so it is prepared for AddressSpace based DMA.

Reviewed-by: Anthony Liguori <>
Signed-off-by: Avi Kivity <>

f6790af6 10/22/2012 03:50 pm Avi Kivity

memory: use AddressSpace for MemoryListener filtering

Using the AddressSpace type reduces confusion, as you can't accidentally
supply the MemoryRegion you're interested in.

Reviewed-by: Anthony Liguori <>
Signed-off-by: Avi Kivity <>

95d2994a 10/22/2012 03:50 pm Avi Kivity

memory: manage coalesced mmio via a MemoryListener

Instead of calling a global function on coalesced mmio changes, which
routes the call to kvm if enabled, add coalesced mmio hooks to
MemoryListener and make kvm use that instead.

The motivation is support for multiple address spaces (which means we...

2be0e25f 10/17/2012 06:14 pm Avi Kivity

memory: abort if a memory region is destroyed during a transaction

Destroying a memory region is illegal within a transaction, as until
the transaction is committed, the memory core may hold references to
the region. Add an assert to check for violations of this rule....

28f362be 10/17/2012 05:47 pm Alexander Graf

memory: Make eventfd adhere to device endianness

Our memory API MMIO regions know the concept of device endianness. This
is used to automatically swap endianness between devices and host CPU,
depending on whether buses in between would swizzle the bits.
...

8786db7c 10/15/2012 12:43 pm Avi Kivity

memory: prepare AddressSpace for exporting

AddressSpace contains a member, current_map, of type FlatView. Since we
want to limit the leakage of internal types to public headers, switch to
a pointer to a FlatView. There is no performance impact as this isn't used...

9ad2bbc1 10/15/2012 12:43 pm Avi Kivity

memory: export AddressSpace

The DMA API will use an AddressSpace to differentiate among different
initiators.

Reviewed-by: Anthony Liguori <>
Signed-off-by: Avi Kivity <>

0d673e36 10/15/2012 12:43 pm Avi Kivity

memory: maintain a list of address spaces

Instead of embedding knowledge of the memory and I/O address spaces in the
memory core, maintain a list of all address spaces. This list will later
be extended dynamically for other bus masters.

Reviewed-by: Anthony Liguori <>...

975aefe0 10/15/2012 12:43 pm Avi Kivity

memory: provide defaults for MemoryListener operations

Many listeners don't need to respond to all MemoryListener callbacks;
provide suitable no-op defaults instead.

Signed-off-by: Avi Kivity <>

7762c2c1 10/15/2012 12:43 pm Avi Kivity

memory: rename 'exec-obsolete.h'

exec-obsolete.h used to hold pre-memory-API functions that were used from
device code prior to the transition to the memory API. Now that the
transition is complete, the name no longer describes the file. The
functions still need to be merged better into the memory core, but there's...

bb880ded 09/12/2012 12:15 am Jan Kiszka

memory: Flush coalesced MMIO on mapping and state changes

Flush pending coalesced MMIO before performing mapping or state changes
that could affect the event orderings or route the buffered requests to
a wrong region.

Signed-off-by: Jan Kiszka <>...

02e2b95f 09/12/2012 12:15 am Jan Kiszka

memory: Fold memory_region_update_topology into memory_region_transaction_commit

Simplify the code as we are using now only a subset of the original
features of memory_region_update_topology.

Signed-off-by: Jan Kiszka <>
Signed-off-by: Marcelo Tosatti <>

59023ef4 09/12/2012 12:15 am Jan Kiszka

memory: Use transaction_begin/commit also for single-step operations

Wrap also simple operations consisting only of a single step with
memory_region_transaction_begin/commit. This allows to perform
additional steps like coalesced MMIO flushing from a single place....

d410515e 09/12/2012 12:15 am Jan Kiszka

memory: Flush coalesced MMIO on selected region access

Instead of flushing pending coalesced MMIO requests on every vmexit,
this provides a mechanism to selectively flush when memory regions
related to the coalesced one are accessed. This first of all includes...

7e2a62d8 08/29/2012 04:25 pm Jan Kiszka

memory: Fix copy&paste mistake in memory_region_iorange_write

The last argument of find_portio is "write", so this must be true here.

Signed-off-by: Jan Kiszka <>
Signed-off-by: Anthony Liguori <>

753d5e14 07/12/2012 02:08 pm Paolo Bonzini

memory: pass EventNotifier, not eventfd

Under Win32, EventNotifiers will not have event_notifier_get_fd, so we
cannot call it in common code such as hw/virtio-pci.c. Pass a pointer to
the notifier, and only retrieve the file descriptor in kvm-specific code....

221b3a3f 04/05/2012 01:09 pm Julien Grall

memory: check address space when a listener is registered

This patch resolves a bug in memory listener registration.
"range_add" callback was called on each section of the both
address space (IO and memory space) even if it doesn't match
the address space filter....

b9f9be88 03/19/2012 03:17 pm Blue Swirl

memory: print aliased IO ranges in info mtree

Print also I/O ports behind bridges and other aliases.

Signed-off-by: Blue Swirl <>
Signed-off-by: Avi Kivity <>

97161e17 03/08/2012 07:16 pm Avi Kivity

memory: get rid of cpu_register_io_memory()

The return value of cpu_register_io_memory() is no longer used anywhere, so
we can remove it and all associated data and code.

Signed-off-by: Avi Kivity <>

37ec01d4 03/08/2012 07:06 pm Avi Kivity

memory: dispatch directly via MemoryRegion

Instead of indirecting via io_mem_region, dispatch directly
through the MemoryRegion obtained from the iotlb or phys_page_find().

Signed-off-by: Avi Kivity <>

a2d33521 03/05/2012 05:40 pm Avi Kivity

memory: fix I/O port aliases

Commit e58ac72b6a0 ("ioport: change portio_list not to use
memory_region_set_offset()") started using aliases of I/O memory
regions. Since the IORange used for the I/O was contained in the
target region, the alias information (specifically, the offset...

d7ec83e6 02/29/2012 01:44 pm Avi Kivity

memory: don't pass ->readable attribute to cpu_register_physical_memory_log

It can be derived from the MemoryRegion itself (which is why it is not
used there).

Signed-off-by: Avi Kivity <>
Reviewed-by: Richard Henderson <>

93632747 02/29/2012 01:44 pm Avi Kivity

memory: use a MemoryListener for core memory map updates too

This transforms memory.c into a library which can then be unit tested
easily, by feeding it inputs and listening to its outputs.

Signed-off-by: Avi Kivity <>
Reviewed-by: Richard Henderson <>

8df8a843 02/29/2012 01:44 pm Avi Kivity

memory: drop AddressSpaceOps

All functionality has been moved to various MemoryListeners.

Signed-off-by: Avi Kivity <>
Reviewed-by: Richard Henderson <>

7376e582 02/29/2012 01:44 pm Avi Kivity

memory: allow MemoryListeners to observe a specific address space

Ignore any regions not belonging to a specified address space.

Signed-off-by: Avi Kivity <>

50c1e149 02/29/2012 01:44 pm Avi Kivity

memory: support stateless memory listeners

Current memory listeners are incremental; that is, they are expected to
maintain their own state, and receive callbacks for changes to that state.

This patch adds support for stateless listeners; these work by receiving...

2b50aa1f 02/29/2012 01:44 pm Avi Kivity

memory: remove memory_region_set_offset()

memory_region_set_offset() complicates the API, and has been deprecated
since its introduction. Now that it is no longer used, remove it.

Signed-off-by: Avi Kivity <>
Reviewed-by: Richard Henderson <>

946996e9 02/29/2012 01:44 pm Avi Kivity

memory: add shorthand for invoking a callback on all listeners

Signed-off-by: Avi Kivity <>
Reviewed-by: Richard Henderson <>

72e22d2f 02/29/2012 01:44 pm Avi Kivity

memory: switch memory listeners to a QTAILQ

This allows reverse iteration, which in turns allows consistent ordering
among multiple listeners:

l1->add
l2->add
l2->del
l1->del

Signed-off-by: Avi Kivity <>
Reviewed-by: Richard Henderson <>

0e0d36b4 02/29/2012 01:44 pm Avi Kivity

memory: code motion: move MEMORY_LISTENER_CALL()

So it can be used in earlier code.

Signed-off-by: Avi Kivity <>
Reviewed-by: Richard Henderson <>

80a1ea37 02/29/2012 01:44 pm Avi Kivity

memory: move ioeventfd ops to MemoryListener

This way the accelerator (kvm) can handle them directly.

Signed-off-by: Avi Kivity <>
Reviewed-by: Richard Henderson <>

7a8499e8 02/29/2012 01:44 pm Avi Kivity

memory: add a readonly attribute to MemoryRegionSection

.readonly cannot be obtained from the MemoryRegion, since it is
inherited from aliases (so you can have a MemoryRegion mapped RW
at one address and RO at another). Record it in a MemoryRegionSection...

4896d74b 02/11/2012 12:49 pm Jan Kiszka

memory-region: Report if region is read-only or write-only on info mtree

Helpful to understand guest configurations of things like the i440FX's
PAM or the state of ROM devices.

Signed-off-by: Jan Kiszka <>
Signed-off-by: Blue Swirl <>

cd7a45c9 02/04/2012 02:45 pm Blue Swirl

memory: change dirty getting API to take a size

Instead of each device knowing or guessing the guest page size,
just pass the desired size of dirtied memory area.

Signed-off-by: Blue Swirl <>

fd4aa979 01/25/2012 08:32 pm Blue Swirl

memory: change dirty setting APIs to take a size

Instead of each target knowing or guessing the guest page size,
just pass the desired size of dirtied memory area.

Signed-off-by: Blue Swirl <>

1660e72d 01/19/2012 01:14 pm Jan Kiszka

memory: Introduce memory_region_init_reservation

Introduce a memory region type that can reserve I/O space. Such regions
are useful for modeling I/O that is only handled outside of QEMU, i.e.
in the context of an accelerator like KVM.

Any access to such a region from QEMU is a bug, but could theoretically...

6b620ca3 01/13/2012 06:55 pm Paolo Bonzini

prepare for future GPLv2+ relicensing

All files under GPLv2 will get GPLv2+ changes starting tomorrow.
event_notifier.c and exec-obsolete.h were only ever touched by Red Hat
employees and can be relicensed now.

Signed-off-by: Paolo Bonzini <>...

1470a0cd 01/08/2012 01:10 pm Andreas Färber

memory: Fix adjust_endianness()

Commit a621f38de85598a13d8d8524d1a94fc6a1818215 (Direct dispatch
through MemoryRegion) moved byte swaps to a central function.

Add a missing break, so that long-sized byte swaps don't abort.

Signed-off-by: Andreas Färber <>...

2c3579ab 01/08/2012 01:10 pm Andreas Färber

memory: Fix memory_region_wrong_endianness()

Since commit be675c972088eba210e18dc125613e9f205a6bfb (memory: move
endianness compensation to memory core) it was checking for
TARGET_BIG_ENDIAN instead of TARGET_WORDS_BIGENDIAN, thereby not
swapping correctly for Big Endian targets....

0e0df1e2 01/04/2012 01:34 pm Avi Kivity

Convert IO_MEM_{RAM,ROM,UNASSIGNED,NOTDIRTY} to MemoryRegions

Convert the fixed-address IO_MEM_RAM, IO_MEM_ROM, IO_MEM_UNASSIGNED,
and IO_MEM_NOTDIRTY io handlers to MemoryRegions. These aren't real
regions, since they are never added to the memory hierarchy, but they...

dd81124b 01/04/2012 01:34 pm Avi Kivity

Switch cpu_register_physical_memory_log() to use MemoryRegions

Still internally using ram_addr.

Signed-off-by: Avi Kivity <>
Reviewed-by: Richard Henderson <>

a621f38d 01/04/2012 01:34 pm Avi Kivity

Direct dispatch through MemoryRegion

Now that all mmio goes through MemoryRegions, we can convert
io_mem_opaque to be a MemoryRegion pointer, and remove the thunks
that convert from old-style CPU{Read,Write}MemoryFunc to MemoryRegionOps.

Signed-off-by: Avi Kivity <>...

b3b00c78 01/04/2012 01:34 pm Avi Kivity

Remove IO_MEM_SUBPAGE

Replace with a MemoryRegion flag.

Signed-off-by: Avi Kivity <>
Reviewed-by: Richard Henderson <>

75c578dc 01/04/2012 01:34 pm Avi Kivity

Drop IO_MEM_ROMD

Unlike ->readonly, ->readable is not inherited from aliase, so we can simply
query the memory region.

Signed-off-by: Avi Kivity <>
Reviewed-by: Richard Henderson <>

8f77558f 01/04/2012 01:34 pm Avi Kivity

memory: obsolete cpu_physical_memory_[gs]et_dirty_tracking()

The getter is no longer used, so it is completely removed.

Reviewed-by: Anthony Liguori <>
Signed-off-by: Avi Kivity <>

be675c97 01/04/2012 01:34 pm Avi Kivity

memory: move endianness compensation to memory core

Instead of doing device endianness compensation in cpu_register_io_memory(),
do it in the memory core.

Signed-off-by: Avi Kivity <>
Reviewed-by: Richard Henderson <>

acbbec5d 01/04/2012 01:34 pm Avi Kivity

memory: move mmio access to functions

Currently mmio access goes directly to the io_mem_{read,write} arrays.
In preparation for eliminating them, add indirection via a function.

Signed-off-by: Avi Kivity <>
Reviewed-by: Richard Henderson <>

26a83ad0 01/04/2012 01:34 pm Avi Kivity

memory: remove MemoryRegion::backend_registered

backend_registered was used to lazify the process of registering an
mmio region, since the it is different for the I/O address space and
the memory address space. However, it also makes registration dependent...

1d393fa2 01/04/2012 01:34 pm Avi Kivity

Avoid range comparisons on io index types

The code sometimes uses range comparisons on io indexes (e.g.
index =< IO_MEM_ROM). Avoid these as they make moving to objects harder.

Signed-off-by: Avi Kivity <>
Reviewed-by: Richard Henderson <>

c5705a77 01/04/2012 01:34 pm Avi Kivity

vmstate, memory: decouple vmstate from memory API

Currently creating a memory region automatically registers it for
live migration. This differs from other state (which is enumerated
in a VMStateDescription structure) and ties the live migration code
into the memory core....

8991c79b 01/04/2012 01:34 pm Avi Kivity

memory: introduce memory_region_name()

Trivial accessor for the name attribute.

Signed-off-by: Avi Kivity <>

dcd97e33 01/03/2012 07:19 pm Avi Kivity

memory: remove CPUPhysMemoryClient

No longer used.

Signed-off-by: Avi Kivity <>

e34911c4 12/20/2011 02:14 pm Avi Kivity

memory: temporarily add memory_region_get_ram_addr()

This is a layering violation, but needed while the code contains
naked calls to qemu_get_ram_ptr() and the like.

Signed-off-by: Avi Kivity <>

e2177955 12/20/2011 02:14 pm Avi Kivity

memory: introduce memory_region_find()

Given an address space (represented by the top-level memory region),
returns the memory region that maps a given range. Useful for implementing
DMA.

The implementation is a simplistic binary search. Once we have a tree...

86e775c6 12/20/2011 02:14 pm Avi Kivity

memory: replace cpu_physical_sync_dirty_bitmap() with a memory API

The function is still used as the implementation.

Signed-off-by: Avi Kivity <>

7664e80c 12/20/2011 02:14 pm Avi Kivity

memory: add API for observing updates to the physical memory map

Add an API that allows a client to observe changes in the global
memory map:
- region added (possibly with logging enabled)
- region removed (possibly with logging enabled)
- logging started on a region...

9f213ed9 12/20/2011 02:14 pm Avi Kivity

kvm: switch kvm slots to use host virtual address instead of ram_addr_t

This simplifies a later switch to the memory API in slot management.

Signed-off-by: Avi Kivity <>

8ea9252a 12/20/2011 02:14 pm Avi Kivity

memory: add memory_region_is_ram()

Signed-off-by: Avi Kivity <>

ce7923da 12/20/2011 02:14 pm Avi Kivity

memory: add memory_region_is_rom()

Signed-off-by: Avi Kivity <>

55043ba3 12/20/2011 02:14 pm Avi Kivity

memory: add memory_region_is_logging()

Signed-off-by: Avi Kivity <>

f76d27b6 12/19/2011 05:45 pm Anthony Liguori

Merge remote-tracking branch 'qemu-kvm/memory/exec-obsolete' into staging

4a1cc680 12/19/2011 05:45 pm Anthony Liguori

Merge remote-tracking branch 'qemu-kvm/memory/xen' into staging

67d95c15 12/19/2011 05:28 pm Avi Kivity

memory: move obsolete exec.c functions to a private header

This will help avoid accidental usage.

Signed-off-by: Avi Kivity <>

fce537d4 12/19/2011 05:23 pm Avi Kivity

memory, xen: pass MemoryRegion to xen_ram_alloc()

Currently xen_ram_alloc() relies on ram_addr, which is going away.
Give it something else to use as a cookie.

Signed-off-by: Avi Kivity <>

e87c099f 12/05/2011 12:04 pm Avi Kivity

memory: optimize empty transactions due to mutators

The mutating memory APIs can easily cause empty transactions,
where the mutators don't actually change anything, or perhaps
only modify disabled regions. Detect these conditions and
avoid regenerating the memory topology....

4703359e 12/05/2011 12:04 pm Avi Kivity

memory: introduce memory_region_set_alias_offset()

Add an API to update an alias offset of an active alias. This can be
used to simplify implementation of dynamic memory banks.

Signed-off-by: Avi Kivity <>

2282e1af 12/04/2011 07:19 pm Avi Kivity

memory: introduce memory_region_set_address()

Allow changing the address of a memory region while it is
in the memory hierarchy.

Signed-off-by: Avi Kivity <>

6bba19ba 12/04/2011 07:00 pm Avi Kivity

memory: introduce memory_region_set_enabled()

This allows users to disable a memory region without removing
it from the hierarchy, simplifying the implementation of
memory routers.

Signed-off-by: Avi Kivity <>

897fa7cf 11/24/2011 06:32 pm Avi Kivity

memory: add MemoryRegionOps::valid.accepts

MemoryRegionOps::valid tries to declaratively specify which transactions
are accepted by the device/bus, however it is not completely generic. Add
a callback for special cases.

Signed-off-by: Avi Kivity <>

88365e47 11/13/2011 12:00 pm Avi Kivity

memory: fix 'info mtree' segfaults

'info mtree' accesses invalid memory in two cases, both due to incorrect
(and unsafe) usage of QTAILQ_FOREACH_SAFE().

Reported-by: Andreas Färber <>
Signed-off-by: Avi Kivity <>

08dafab4 10/16/2011 02:19 pm Avi Kivity

memory: use 128-bit integers for sizes and intermediates

Since the memory API supports 64-bit buses, it needs a larger type to represent
intermediate results.

Signed-off-by: Avi Kivity <>

03808f58 10/11/2011 04:57 pm Jan Kiszka

memory: Fix old portio word accesses

As we register old portio regions via ioport_register, we are also
responsible for providing the word access wrapper.

Signed-off-by: Jan Kiszka <>
Signed-off-by: Avi Kivity <>

6bf9fd43 10/11/2011 04:57 pm Avi Kivity

Introduce PortioList

Add a type and methods for manipulating a list of disjoint I/O ports,
used in some older hardware devices.

Based on original patch by Richard Henderson.

Signed-off-by: Richard Henderson <>
Signed-off-by: Avi Kivity <>

4b474ba7 10/02/2011 05:27 pm Jan Kiszka

memory: Print region priority

Useful to discover eclipses.

Signed-off-by: Jan Kiszka <>
Signed-off-by: Avi Kivity <>

06631810 10/02/2011 05:27 pm Jan Kiszka

memory: Do not print empty PIO root

Signed-off-by: Jan Kiszka <>
Signed-off-by: Avi Kivity <>

9479c57a 10/02/2011 05:27 pm Jan Kiszka

memory: Print regions in ascending order

Makes reading the output more user friendly.

Signed-off-by: Jan Kiszka <>
Signed-off-by: Avi Kivity <>

314e2987 10/02/2011 05:27 pm Blue Swirl

memory: simple memory tree printer

Add a monitor command 'info mtree' to show the memory hierarchy
much like /proc/iomem in Linux.

Signed-off-by: Blue Swirl <>
Signed-off-by: Avi Kivity <>

fb1cd6f9 09/25/2011 02:48 pm Avi Kivity

memory: implement memory_region_set_readonly()

The property is inheritable, but only if set to true. This is so
that memory routers can mark sections of RAM as read-only via aliases.

Signed-off-by: Avi Kivity <>

860329b2 09/18/2011 02:55 pm Michael Walle

memory: fix subregion collision warning

Instead of the offset property use the proper addr property to calculate
the offsets.

Additionally, be a little more verbose on the warning and print the
subregion name.

Signed-off-by: Michael Walle <>...

d2963631 09/14/2011 11:21 am David Gibson

Fix subtle integer overflow bug in memory API

It is quite common to have a MemoryRegion with size of INT64_MAX.
When processing alias regions in render_memory_region() it's quite
easy to find a case where it will construct a temporary AddrRange with
a non-zero start, and size still of INT64_MAX. When means attempting...

021d26d1 08/30/2011 11:20 am Jan Kiszka

memory: Fix memory_region_get_ram_ptr for ROM devices

Mask out the sub-page bits that are used by ROM device for storing the
io-index and the IO_MEM_ROMD flag.

Signed-off-by: Jan Kiszka <>
Signed-off-by: Avi Kivity <>

b5fe14cc 08/29/2011 11:52 am Avi Kivity

memory: fix rom_device I/O mode

When adding a rom_device in I/O mode, we incorrectly masked off the low
bits, resulting in a pure RAM map. Fix my masking off the high bits and
IO_MEM_ROMD, yielding a pure I/O map.

Signed-off-by: Avi Kivity <>

75f5941c 08/26/2011 12:35 am Avi Kivity

memory: add opaque parameter to memory_region_init_rom_device()

The MemoryRegionOps callbacks expect it.

Signed-off-by: Avi Kivity <>

7bc2b9cd 08/25/2011 02:56 pm Avi Kivity

memory: fix memory_region_init_rom_device() not initializing ->ops

Signed-off-by: Avi Kivity <>

563ea489 08/22/2011 07:29 pm Richard Henderson

memory: Fix old_portio vs non-zero offset

The legacy functions that we're wrapping expect that offset
to be included in the register. Indeed, they generally
expect the absolute address and then mask off the "high" bits.

The FDC is the first converted device with a non-zero offset....

a5e1cbc8 08/22/2011 07:14 pm Anthony Liguori

memory: temporarily suppress the subregion collision warning

After 312b4234, the APIC and PCI devices are colliding with each other. This
is harmless in practice because the APIC accesses are special cased and never
make there way onto the bus.

Avi is working on a proper fix, but until that's ready, avoid printing the...