diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2014-11-24 19:31:50 +0000 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2014-11-24 19:31:50 +0000 |
commit | ca6028185d19d3f2bd331c15175c3ef5afc30c77 (patch) | |
tree | 88d51adb56c3598d6b4a8241ed2e4c4ca395652e /include | |
parent | 3d4a70f80fead02a3b3872790b4c8f07ee804494 (diff) | |
parent | dd0247e09a542d2a7ba6e390c70b5616edb9ec56 (diff) | |
download | qemu-ca6028185d19d3f2bd331c15175c3ef5afc30c77.tar.gz |
Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging
pc, pci, misc bugfixes
A bunch of bugfixes for 2.2.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
# gpg: Signature made Mon 24 Nov 2014 18:59:47 GMT using RSA key ID D28D5469
# gpg: Good signature from "Michael S. Tsirkin <mst@kernel.org>"
# gpg: aka "Michael S. Tsirkin <mst@redhat.com>"
* remotes/mst/tags/for_upstream:
pc: acpi: mark all possible CPUs as enabled in SRAT
pcie: fix improper use of negative value
pcie: fix typo in pcie_cap_deverr_init()
target-i386: move generic memory hotplug methods to DSDTs
acpi-build: mark RAM dirty on table update
hw/pci: fix crash on shpc error flow
pc: count in 1Gb hugepage alignment when sizing hotplug-memory container
pc: explicitly check maxmem limit when adding DIMM
pc: pc-dimm: use backend alignment during address auto allocation
pc: align DIMM's address/size by backend's alignment value
memory: expose alignment used for allocating RAM as MemoryRegion API
pc: limit DIMM address and size to page aligned values
pc: make pc_dimm_plug() more readble
pc: kvm: check if KVM has free memory slots to avoid abort()
qemu-char: fix tcp_get_fds
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/exec/exec-all.h | 2 | ||||
-rw-r--r-- | include/exec/memory.h | 2 | ||||
-rw-r--r-- | include/hw/i386/pc.h | 4 | ||||
-rw-r--r-- | include/hw/loader.h | 2 | ||||
-rw-r--r-- | include/hw/mem/pc-dimm.h | 2 | ||||
-rw-r--r-- | include/qemu/osdep.h | 3 | ||||
-rw-r--r-- | include/sysemu/kvm.h | 1 |
7 files changed, 12 insertions, 4 deletions
diff --git a/include/exec/exec-all.h b/include/exec/exec-all.h index 421a142a0d..0844885edd 100644 --- a/include/exec/exec-all.h +++ b/include/exec/exec-all.h @@ -333,7 +333,7 @@ extern uintptr_t tci_tb_ptr; #if !defined(CONFIG_USER_ONLY) -void phys_mem_set_alloc(void *(*alloc)(size_t)); +void phys_mem_set_alloc(void *(*alloc)(size_t, uint64_t *align)); struct MemoryRegion *iotlb_to_region(AddressSpace *as, hwaddr index); bool io_mem_read(struct MemoryRegion *mr, hwaddr addr, diff --git a/include/exec/memory.h b/include/exec/memory.h index 74a58b4883..f64ab5e3e5 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -146,6 +146,7 @@ struct MemoryRegion { hwaddr addr; void (*destructor)(MemoryRegion *mr); ram_addr_t ram_addr; + uint64_t align; bool subpage; bool terminates; bool romd_mode; @@ -838,6 +839,7 @@ void memory_region_add_subregion_overlap(MemoryRegion *mr, */ ram_addr_t memory_region_get_ram_addr(MemoryRegion *mr); +uint64_t memory_region_get_alignment(const MemoryRegion *mr); /** * memory_region_del_subregion: Remove a subregion. * diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index 7c3731f1b0..9d85b89e4f 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -24,6 +24,8 @@ * address space begins. * @hotplug_memory: hotplug memory addess space container * @acpi_dev: link to ACPI PM device that performs ACPI hotplug handling + * @enforce_aligned_dimm: check that DIMM's address/size is aligned by + * backend's alignment value if provided */ struct PCMachineState { /*< private >*/ @@ -38,12 +40,14 @@ struct PCMachineState { uint64_t max_ram_below_4g; bool vmport; + bool enforce_aligned_dimm; }; #define PC_MACHINE_ACPI_DEVICE_PROP "acpi-device" #define PC_MACHINE_MEMHP_REGION_SIZE "hotplug-memory-region-size" #define PC_MACHINE_MAX_RAM_BELOW_4G "max-ram-below-4g" #define PC_MACHINE_VMPORT "vmport" +#define PC_MACHINE_ENFORCE_ALIGNED_DIMM "enforce-aligned-dimm" /** * PCMachineClass: diff --git a/include/hw/loader.h b/include/hw/loader.h index 054c6a22b5..64816395dc 100644 --- a/include/hw/loader.h +++ b/include/hw/loader.h @@ -59,7 +59,7 @@ extern bool rom_file_has_mr; int rom_add_file(const char *file, const char *fw_dir, hwaddr addr, int32_t bootindex, bool option_rom); -void *rom_add_blob(const char *name, const void *blob, size_t len, +ram_addr_t rom_add_blob(const char *name, const void *blob, size_t len, hwaddr addr, const char *fw_file_name, FWCfgReadCallback fw_callback, void *callback_opaque); int rom_add_elf_program(const char *name, void *data, size_t datasize, diff --git a/include/hw/mem/pc-dimm.h b/include/hw/mem/pc-dimm.h index 761eeef801..e1dcbbcd58 100644 --- a/include/hw/mem/pc-dimm.h +++ b/include/hw/mem/pc-dimm.h @@ -72,7 +72,7 @@ typedef struct PCDIMMDeviceClass { uint64_t pc_dimm_get_free_addr(uint64_t address_space_start, uint64_t address_space_size, - uint64_t *hint, uint64_t size, + uint64_t *hint, uint64_t align, uint64_t size, Error **errp); int pc_dimm_get_free_slot(const int *hint, int max_slots, Error **errp); diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h index c0324344d5..b3300cc239 100644 --- a/include/qemu/osdep.h +++ b/include/qemu/osdep.h @@ -5,6 +5,7 @@ #include <stdarg.h> #include <stddef.h> #include <stdbool.h> +#include <stdint.h> #include <sys/types.h> #ifdef __OpenBSD__ #include <sys/signal.h> @@ -103,7 +104,7 @@ typedef signed int int_fast16_t; int qemu_daemon(int nochdir, int noclose); void *qemu_try_memalign(size_t alignment, size_t size); void *qemu_memalign(size_t alignment, size_t size); -void *qemu_anon_ram_alloc(size_t size); +void *qemu_anon_ram_alloc(size_t size, uint64_t *align); void qemu_vfree(void *ptr); void qemu_anon_ram_free(void *ptr, size_t size); diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h index b0cd657f77..22e42ef236 100644 --- a/include/sysemu/kvm.h +++ b/include/sysemu/kvm.h @@ -163,6 +163,7 @@ extern KVMState *kvm_state; /* external API */ +bool kvm_has_free_slot(MachineState *ms); int kvm_has_sync_mmu(void); int kvm_has_vcpu_events(void); int kvm_has_robust_singlestep(void); |