Loading Makefile +0 −1 Original line number Diff line number Diff line Loading @@ -208,7 +208,6 @@ BLOBS=bios.bin vgabios.bin vgabios-cirrus.bin \ vgabios-stdvga.bin vgabios-vmware.bin \ ppc_rom.bin openbios-sparc32 openbios-sparc64 openbios-ppc \ gpxe-eepro100-80861209.rom \ gpxe-eepro100-80861229.rom \ pxe-e1000.bin \ pxe-ne2k_pci.bin pxe-pcnet.bin \ pxe-rtl8139.bin pxe-virtio.bin \ Loading Makefile.objs +2 −1 Original line number Diff line number Diff line Loading @@ -217,7 +217,8 @@ hw-obj-$(CONFIG_PIIX4) += piix4.o # PCI watchdog devices hw-obj-$(CONFIG_PCI) += wdt_i6300esb.o hw-obj-$(CONFIG_PCI) += pcie.o pcie_port.o hw-obj-$(CONFIG_PCI) += pcie.o pcie_aer.o pcie_port.o hw-obj-$(CONFIG_PCI) += msix.o msi.o # PCI network cards hw-obj-$(CONFIG_NE2000_PCI) += ne2000.o Loading arch_init.c +35 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ */ #include <stdint.h> #include <stdarg.h> #include <stdlib.h> #ifndef _WIN32 #include <sys/types.h> #include <sys/mman.h> Loading Loading @@ -212,6 +213,39 @@ uint64_t ram_bytes_total(void) return total; } static int block_compar(const void *a, const void *b) { RAMBlock * const *ablock = a; RAMBlock * const *bblock = b; if ((*ablock)->offset < (*bblock)->offset) { return -1; } else if ((*ablock)->offset > (*bblock)->offset) { return 1; } return 0; } static void sort_ram_list(void) { RAMBlock *block, *nblock, **blocks; int n; n = 0; QLIST_FOREACH(block, &ram_list.blocks, next) { ++n; } blocks = qemu_malloc(n * sizeof *blocks); n = 0; QLIST_FOREACH_SAFE(block, &ram_list.blocks, next, nblock) { blocks[n++] = block; QLIST_REMOVE(block, next); } qsort(blocks, n, sizeof *blocks, block_compar); while (--n >= 0) { QLIST_INSERT_HEAD(&ram_list.blocks, blocks[n], next); } qemu_free(blocks); } int ram_save_live(Monitor *mon, QEMUFile *f, int stage, void *opaque) { ram_addr_t addr; Loading @@ -234,6 +268,7 @@ int ram_save_live(Monitor *mon, QEMUFile *f, int stage, void *opaque) bytes_transferred = 0; last_block = NULL; last_offset = 0; sort_ram_list(); /* Make sure all dirty bits are set */ QLIST_FOREACH(block, &ram_list.blocks, next) { Loading buffered_file.c +6 −3 Original line number Diff line number Diff line Loading @@ -206,20 +206,23 @@ static int buffered_rate_limit(void *opaque) return 0; } static size_t buffered_set_rate_limit(void *opaque, size_t new_rate) static int64_t buffered_set_rate_limit(void *opaque, int64_t new_rate) { QEMUFileBuffered *s = opaque; if (s->has_error) goto out; if (new_rate > SIZE_MAX) { new_rate = SIZE_MAX; } s->xfer_limit = new_rate / 10; out: return s->xfer_limit; } static size_t buffered_get_rate_limit(void *opaque) static int64_t buffered_get_rate_limit(void *opaque) { QEMUFileBuffered *s = opaque; Loading cpu-common.h +3 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,9 @@ ram_addr_t qemu_ram_alloc(DeviceState *dev, const char *name, ram_addr_t size); void qemu_ram_free(ram_addr_t addr); /* This should only be used for ram local to a device. */ void *qemu_get_ram_ptr(ram_addr_t addr); /* Same but slower, to use for migration, where the order of * RAMBlocks must not change. */ void *qemu_safe_ram_ptr(ram_addr_t addr); /* This should not be used by devices. */ int qemu_ram_addr_from_host(void *ptr, ram_addr_t *ram_addr); ram_addr_t qemu_ram_addr_from_host_nofail(void *ptr); Loading Loading
Makefile +0 −1 Original line number Diff line number Diff line Loading @@ -208,7 +208,6 @@ BLOBS=bios.bin vgabios.bin vgabios-cirrus.bin \ vgabios-stdvga.bin vgabios-vmware.bin \ ppc_rom.bin openbios-sparc32 openbios-sparc64 openbios-ppc \ gpxe-eepro100-80861209.rom \ gpxe-eepro100-80861229.rom \ pxe-e1000.bin \ pxe-ne2k_pci.bin pxe-pcnet.bin \ pxe-rtl8139.bin pxe-virtio.bin \ Loading
Makefile.objs +2 −1 Original line number Diff line number Diff line Loading @@ -217,7 +217,8 @@ hw-obj-$(CONFIG_PIIX4) += piix4.o # PCI watchdog devices hw-obj-$(CONFIG_PCI) += wdt_i6300esb.o hw-obj-$(CONFIG_PCI) += pcie.o pcie_port.o hw-obj-$(CONFIG_PCI) += pcie.o pcie_aer.o pcie_port.o hw-obj-$(CONFIG_PCI) += msix.o msi.o # PCI network cards hw-obj-$(CONFIG_NE2000_PCI) += ne2000.o Loading
arch_init.c +35 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ */ #include <stdint.h> #include <stdarg.h> #include <stdlib.h> #ifndef _WIN32 #include <sys/types.h> #include <sys/mman.h> Loading Loading @@ -212,6 +213,39 @@ uint64_t ram_bytes_total(void) return total; } static int block_compar(const void *a, const void *b) { RAMBlock * const *ablock = a; RAMBlock * const *bblock = b; if ((*ablock)->offset < (*bblock)->offset) { return -1; } else if ((*ablock)->offset > (*bblock)->offset) { return 1; } return 0; } static void sort_ram_list(void) { RAMBlock *block, *nblock, **blocks; int n; n = 0; QLIST_FOREACH(block, &ram_list.blocks, next) { ++n; } blocks = qemu_malloc(n * sizeof *blocks); n = 0; QLIST_FOREACH_SAFE(block, &ram_list.blocks, next, nblock) { blocks[n++] = block; QLIST_REMOVE(block, next); } qsort(blocks, n, sizeof *blocks, block_compar); while (--n >= 0) { QLIST_INSERT_HEAD(&ram_list.blocks, blocks[n], next); } qemu_free(blocks); } int ram_save_live(Monitor *mon, QEMUFile *f, int stage, void *opaque) { ram_addr_t addr; Loading @@ -234,6 +268,7 @@ int ram_save_live(Monitor *mon, QEMUFile *f, int stage, void *opaque) bytes_transferred = 0; last_block = NULL; last_offset = 0; sort_ram_list(); /* Make sure all dirty bits are set */ QLIST_FOREACH(block, &ram_list.blocks, next) { Loading
buffered_file.c +6 −3 Original line number Diff line number Diff line Loading @@ -206,20 +206,23 @@ static int buffered_rate_limit(void *opaque) return 0; } static size_t buffered_set_rate_limit(void *opaque, size_t new_rate) static int64_t buffered_set_rate_limit(void *opaque, int64_t new_rate) { QEMUFileBuffered *s = opaque; if (s->has_error) goto out; if (new_rate > SIZE_MAX) { new_rate = SIZE_MAX; } s->xfer_limit = new_rate / 10; out: return s->xfer_limit; } static size_t buffered_get_rate_limit(void *opaque) static int64_t buffered_get_rate_limit(void *opaque) { QEMUFileBuffered *s = opaque; Loading
cpu-common.h +3 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,9 @@ ram_addr_t qemu_ram_alloc(DeviceState *dev, const char *name, ram_addr_t size); void qemu_ram_free(ram_addr_t addr); /* This should only be used for ram local to a device. */ void *qemu_get_ram_ptr(ram_addr_t addr); /* Same but slower, to use for migration, where the order of * RAMBlocks must not change. */ void *qemu_safe_ram_ptr(ram_addr_t addr); /* This should not be used by devices. */ int qemu_ram_addr_from_host(void *ptr, ram_addr_t *ram_addr); ram_addr_t qemu_ram_addr_from_host_nofail(void *ptr); Loading