- 29 2月, 2012 7 次提交
-
-
由 Avi Kivity 提交于
L1 and the lower levels in l1_phys_map are equivalent, except that L1 has a different size, and is always allocated. Simplify the code by removing L1. This leaves us with a tree composed solely of L2 tables, but that problem can be renamed away later. Signed-off-by: NAvi Kivity <avi@redhat.com>
-
由 Avi Kivity 提交于
Instead of incrementally building the memory map, rebuild it every time. This allows later simplification, since the code need not consider overlaying a previous mapping. It is also RCU friendly. With large memory guests this can get expensive, since the operation is O(mem size), but this will be optimized later. As a side effect subpage and L2 leaks are fixed here. Signed-off-by: NAvi Kivity <avi@redhat.com>
-
由 Avi Kivity 提交于
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 a ->begin() callback (which tells them that new state is coming), a sequence of ->region_add() and ->region_nop() callbacks, and then a ->commit() callback which signifies the end of the new state. They should ignore ->region_del() callbacks. Signed-off-by: NAvi Kivity <avi@redhat.com>
-
由 Avi Kivity 提交于
The memory and I/O address spaces do different things, so split them into two memory listeners. Signed-off-by: NAvi Kivity <avi@redhat.com>
-
由 Avi Kivity 提交于
Ignore any regions not belonging to a specified address space. Signed-off-by: NAvi Kivity <avi@redhat.com>
-
由 Avi Kivity 提交于
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: NAvi Kivity <avi@redhat.com> Reviewed-by: NRichard Henderson <rth@twiddle.net>
-
由 Avi Kivity 提交于
It can be derived from the MemoryRegion itself (which is why it is not used there). Signed-off-by: NAvi Kivity <avi@redhat.com> Reviewed-by: NRichard Henderson <rth@twiddle.net>
-
- 02 2月, 2012 1 次提交
-
-
由 Peter Maydell 提交于
Clarify the comment about tlb_flush()'s flush_global parameter, so it is clearer what it does and why it is OK that the implementation currently ignores it. Reviewed-by: NAndreas F=C3=A4rber <afaerber@suse.de> Signed-off-by: NPeter Maydell <peter.maydell@linaro.org> Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
-
- 21 1月, 2012 1 次提交
-
-
由 Benjamin Herrenschmidt 提交于
The virtio config area in PIO space is a bit special. The initial header is little endian but the rest (device specific) is guest native endian. The PIO accessors for PCI on machines that don't have native IO ports assume that all PIO is little endian, which works fine for everything except the above. A complicated way to fix it would be to split the BAR into two memory regions with different endianess settings, but this isn't practical to do, besides, the PIO code doesn't honor region endianness anyway (I have a patch for that too but it isn't necessary at this stage). So I decided to go for the quick fix instead which consists of reverting the swap in virtio-pci in selected places, hoping that when we eventually do a "v2" of the virtio protocols, we sort that out once and for all using a fixed endian setting for everything. Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: NAlexander Graf <agraf@suse.de> [agraf: keep virtio in libhw and determine endianness through a helper function in exec.c] Reviewed-by: NAnthony Liguori <aliguori@us.ibm.com>
-
- 13 1月, 2012 1 次提交
-
-
由 Aurelien Jarno 提交于
ARM still doesn't support 16GB buffers in 32-bit modes, replace the 16GB by 16MB in the comment. Reviewed-by: NPeter Maydell <peter.maydell@linaro.org> Signed-off-by: NAurelien Jarno <aurelien@aurel32.net> Signed-off-by: NStefan Hajnoczi <stefanha@linux.vnet.ibm.com>
-
- 04 1月, 2012 20 次提交
-
-
由 Avi Kivity 提交于
We no longer use any of the lower bits of a ram_addr, so we might as well use them for the io table index. This increases the number of potential I/O handlers by a factor of 8. Signed-off-by: NAvi Kivity <avi@redhat.com> Reviewed-by: NRichard Henderson <rth@twiddle.net>
-
由 Avi Kivity 提交于
Unlike ->readonly, ->readable is not inherited from aliase, so we can simply query the memory region. Signed-off-by: NAvi Kivity <avi@redhat.com> Reviewed-by: NRichard Henderson <rth@twiddle.net>
-
由 Avi Kivity 提交于
Replace with a MemoryRegion flag. Signed-off-by: NAvi Kivity <avi@redhat.com> Reviewed-by: NRichard Henderson <rth@twiddle.net>
-
由 Avi Kivity 提交于
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: NAvi Kivity <avi@redhat.com> Reviewed-by: NRichard Henderson <rth@twiddle.net>
-
由 Avi Kivity 提交于
Signed-off-by: NAvi Kivity <avi@redhat.com> Reviewed-by: NRichard Henderson <rth@twiddle.net>
-
由 Avi Kivity 提交于
Signed-off-by: NAvi Kivity <avi@redhat.com> Reviewed-by: NRichard Henderson <rth@twiddle.net>
-
由 Avi Kivity 提交于
Signed-off-by: NAvi Kivity <avi@redhat.com> Reviewed-by: NRichard Henderson <rth@twiddle.net>
-
由 Avi Kivity 提交于
Still internally using ram_addr. Signed-off-by: NAvi Kivity <avi@redhat.com> Reviewed-by: NRichard Henderson <rth@twiddle.net>
-
由 Avi Kivity 提交于
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 allow reuse of the dispatch functionality. Signed-off-by: NAvi Kivity <avi@redhat.com> Reviewed-by: NRichard Henderson <rth@twiddle.net>
-
由 Avi Kivity 提交于
Its use of IO_MEM_ROM and friends will later cause #include loops; and it is too large to merit inlining. Signed-off-by: NAvi Kivity <avi@redhat.com> Reviewed-by: NRichard Henderson <rth@twiddle.net>
-
由 Avi Kivity 提交于
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: NAvi Kivity <avi@redhat.com> Reviewed-by: NRichard Henderson <rth@twiddle.net>
-
由 Avi Kivity 提交于
cpu_register_physical_memory_log() does not update region_offset if a page was previously registered for the same address. This could cause mmio accesses going to the wrong place, by using the old region_offset. Signed-off-by: NAvi Kivity <avi@redhat.com> Acked-by: NAndreas Färber <afaerber@suse.de> Reviewed-by: NRichard Henderson <rth@twiddle.net>
-
由 Avi Kivity 提交于
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: NAvi Kivity <avi@redhat.com> Reviewed-by: NRichard Henderson <rth@twiddle.net>
-
由 Avi Kivity 提交于
Instead of returning a PhysPageDesc pointer, return a temporary. This lets us move away from actually storing PhysPageDesc's, and instead sythesising them when needed. Signed-off-by: NAvi Kivity <avi@redhat.com> Reviewed-by: NRichard Henderson <rth@twiddle.net>
-
由 Avi Kivity 提交于
Instead of doing device endianness compensation in cpu_register_io_memory(), do it in the memory core. Signed-off-by: NAvi Kivity <avi@redhat.com> Reviewed-by: NRichard Henderson <rth@twiddle.net>
-
由 Avi Kivity 提交于
The getter is no longer used, so it is completely removed. Reviewed-by: NAnthony Liguori <aliguori@us.ibm.com> Signed-off-by: NAvi Kivity <avi@redhat.com>
-
由 Avi Kivity 提交于
As a step in moving live migration from RAMBlocks to MemoryRegions, store the MemoryRegion in a RAMBlock. Reviewed-by: NAnthony Liguori <aliguori@us.ibm.com> Signed-off-by: NAvi Kivity <avi@redhat.com>
-
由 Avi Kivity 提交于
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. Decouple the two by introducing a separate API, vmstate_register_ram(), for registering a RAM block for migration. Currently the same implementation is reused, but later it can be moved into a separate list, and registrations can be moved to VMStateDescription blocks. Signed-off-by: NAvi Kivity <avi@redhat.com>
-
由 Avi Kivity 提交于
No longer used. Signed-off-by: NAvi Kivity <avi@redhat.com>
-
由 Avi Kivity 提交于
No longer used. Signed-off-by: NAvi Kivity <avi@redhat.com>
-
- 20 12月, 2011 1 次提交
-
-
由 Avi Kivity 提交于
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 - logging stopped on a region - global logging started - global logging removed This API will eventually replace cpu_register_physical_memory_client(). Signed-off-by: NAvi Kivity <avi@redhat.com>
-
- 19 12月, 2011 2 次提交
-
-
由 Avi Kivity 提交于
This will help avoid accidental usage. Signed-off-by: NAvi Kivity <avi@redhat.com>
-
由 Avi Kivity 提交于
Currently xen_ram_alloc() relies on ram_addr, which is going away. Give it something else to use as a cookie. Signed-off-by: NAvi Kivity <avi@redhat.com>
-
- 16 12月, 2011 1 次提交
-
-
由 Alex Rozenman 提交于
This fixes a common bug with initial region_offset value. Usually, the pages are re-assigned afterwards, so the bug has a very small effect on regular QEMU use flows. Signed-off-by: NAlex Rozenman <Alex_Rozenman@mentor.com> Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
-
- 15 12月, 2011 2 次提交
-
-
由 Andreas Färber 提交于
Commit 95c318f5 (Fix segfault in mmio subpage handling code.) prevented a segfault by making all subpage registrations over an existing memory page perform an unassigned access. Symptoms were writes not taking effect and reads returning zero. Very small page sizes are not currently supported either, so subpage memory areas cannot fully be avoided. Therefore change the previous fix to use a new IO_MEM_SUBPAGE_RAM instead of IO_MEM_UNASSIGNED. Suggested by Avi. Reviewed-by: NAvi Kivity <avi@redhat.com> Signed-off-by: NAndreas Färber <afaerber@suse.de> Cc: Avi Kivity <avi@redhat.com> Cc: Gleb Natapov <gleb@redhat.com> Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
-
由 Dr. David Alan Gilbert 提交于
On ARM, don't map the code buffer at a fixed location, and fix up the call/goto tcg routines to let it do long jumps. Mapping the code buffer at a fixed address could sometimes result in it being mapped over the top of the heap with pretty random results. Signed-off-by: NDr. David Alan Gilbert <david.gilbert@linaro.org> Signed-off-by: NAndrzej Zaborowski <andrew.zaborowski@intel.com>
-
- 11 12月, 2011 1 次提交
-
-
由 Stefan Weil 提交于
W32 does not support line buffering, but it supports unbuffered output. Unbuffered output is better for writing to qemu.log than fully buffered output because it also shows the latest log messages when an application crash occurs. Signed-off-by: NStefan Weil <sw@weilnetz.de> Signed-off-by: NBlue Swirl <blauwirbel@gmail.com>
-
- 01 11月, 2011 2 次提交
-
-
由 Paolo Bonzini 提交于
Make cpu_single_env thread-local. This fixes a regression in handling of multi-threaded programs in linux-user mode (bug 823902). Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com> [Peter Maydell: rename tls_cpu_single_env to cpu_single_env] Signed-off-by: NPeter Maydell <peter.maydell@linaro.org> Reviewed-by: NAndreas Färber <afaerber@suse.de> Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
-
由 Alex Williamson 提交于
Spotted via code review, we initialize offset to 0 to avoid a compiler warning, but in the unlikely case that offset is never set to something else, we should abort instead of return a value that will almost certainly cause problems. Signed-off-by: NAlex Williamson <alex.williamson@redhat.com> Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
-
- 26 10月, 2011 1 次提交
-
-
由 陳韋任 提交于
As phys_ram_size had been removed since QEMU 0.12. Remove the useless comment. Signed-off-by: NChen Wen-Ren <chenwj@iis.sinica.edu.tw> Signed-off-by: NStefan Hajnoczi <stefanha@linux.vnet.ibm.com>
-