On Wed, Jun 11, 2014 at 3:24 PM, Michael S. Tsirkin <m...@redhat.com> wrote:
> On Wed, Jun 11, 2014 at 03:05:07PM +0530, Santosh Shukla wrote: > > > > > > > > On Wed, Jun 11, 2014 at 1:38 PM, Michael S. Tsirkin <m...@redhat.com> > wrote: > > > > On Wed, Jun 11, 2014 at 12:43:03PM +0530, Santosh Shukla wrote: > > > Hi Igor, > > > > > > I tried building your repository and got build break on > ssdt-mem.hex, > > have you > > > face this problem or Its just me (:- > > > > > > No rule to make target `hw/i386/ssdt-mem.hex', needed by `hw/i386/ > > > acpi-build.o'. Stop > > > > > > using this rule to qemu config: ../configure --enable-kvm > --enable-debug > > > --target-list=x86_64-softmmu --iasl=IASL > > > > > > Thanks. > > > > This means you don't have iasl. > > > > Try this tree: > > git://git.kernel.org/pub/scm/virt/kvm/mst/qemu.git pci > > > > > > I have iasl installed in my system, and tried both repo, getting same > error, I > > believe to build acpi's dls file, iasl=IASL option good enough, right. > > Is your iasl binary really named IASL in upper case? > And is it on path? > Oops, my mount directory was different which export var IASL couldn't recognize for me. My bad, sorry for noise. Thanks. > > > any iasl vs qemu version dependency am i missing? > > > > Thanks. > > > > Try removing --iasl=IASL from configure line. > > > > > > > > > On Sun, Jun 8, 2014 at 6:31 PM, Michael S. Tsirkin <m...@redhat.com > > > > wrote: > > > > > > On Mon, Jun 02, 2014 at 03:24:56PM +0200, Igor Mammedov wrote: > > > > NOTE to commiter: > > > > * update precompiled ACPI hex files for iasl-less hosts > > > > and ACPI tables test to match new ACPI tables. > > > > > > Applied, thanks everyone! > > > > > > > > > > What's new since v10: > > > > * rename DimmDevice to PCDIMMDevice > > > > * allow anonymous DIMMs > > > > * fix error handling in hostmemory_backend_set_size() > > > > * fix ACPI read callback for case when guest tries to read > > > > addr/length from slot without a present DIMM > > > > > > > > What's new since v9: > > > > * drop usage of error_is_set() > > > > * exit QEMU if it's started with memory hotplug but > > > > compat machine doesn't support it > > > > * rename cpu_hotplug_defs.h to pc-hotplug.h > > > > * use subsection when migrating acpi memory hotplug state > > > > * add property to PC_MACHINE for getting hotplug memory > region > > size > > > > > > > > What's new since v8: > > > > * rebased on top of Marcel's QOMyfing machine work > > > > depends on patch from qom-next: > > > > "machine: Conversion of QEMUMachineInitArgs to > MachineState" > > > > * fixed QEMU abort if it's running in daemonized mode > > > > * fixed leak in memdev backend > > > > * introduced custom PCMachine > > > > * DIMM devices are now bus-less and use bus-less hotplug > method > > > > * DIMMDevice: renamed property/field 'start' to 'addr' > > > > * ACPI tables: > > > > * avoid punching hotples in PCI CRS by placing > > > > MEMORY_HOPTLUG_DEVICE on PCI0 bus > > > > * incorporated most of comments/fixes from reviewers > > > > > > > > What's new since v7: > > > > * Per Andreas' suggestion dropped DIMMBus concept. > > > > * Added hotplug binding for bus-less devices > > > > * DIMM device is split to backend and frontend. Therefore > following > > > > command/options were added for supporting it: > > > > > > > > For memory-ram backend: > > > > CLI: -object-add memory-ram, > > > > with options: 'id' and 'size' > > > > For dimm frontend: > > > > option "size" became readonly, pulling it's size from > > attached > > > backend > > > > added option "memdev" for specifying backend by 'id' > > > > > > > > * dropped support for 32 bit guests > > > > * failed hotplug action doesn't consume 1 slot anymore > > > > * vaious fixes adressing reviewer's comments most of them in > ACPI > > part > > > > --- > > > > > > > > This series allows to hotplug 'arbitrary' DIMM devices > specifying > > size, > > > > NUMA node mapping (guest side), slot and address where to > map it, > > at > > > runtime. > > > > > > > > Due to ACPI limitation there is need to specify a number of > > possible > > > > DIMM devices. For this task -m option was extended to support > > > > following format: > > > > > > > > -m [mem=]RamSize[,slots=N,maxmem=M] > > > > > > > > To allow memory hotplug user must specify a pair of > additional > > > parameters: > > > > 'slots' - number of possible increments > > > > 'maxmem' - max possible total memory size QEMU is > allowed to > > use, > > > > including RamSize. > > > > > > > > minimal monitor command syntax to hotplug DIMM device: > > > > > > > > object_add memory-ram,id=memX,size=1G > > > > device_add pc-dimm,id=dimmX,memdev=memX > > > > > > > > pc-dimm device provides following properties that could be > used > > with > > > > device_add / -device to alter default behavior: > > > > > > > > id - unique string identifying device [mandatory] > > > > slot - number in range [0-slots) [optional], if not > specified > > > > the first free slot is used > > > > node - NUMA node id [optional] (default: 0) > > > > size - amount of memory to add, readonly derived from > backing > > memdev > > > > addr - guest's physical address where to plug DIMM > [optional], > > > > if not specified the first gap in hotplug memory > region > > > > that fits DIMM is used > > > > > > > > -device option could be used for adding potentially > hotunplugable > > DIMMs > > > > and also for specifying hotplugged DIMMs in migration case. > > > > > > > > Tested guests: > > > > - RHEL 6x64 > > > > - Windows 2012DCx64 > > > > - Windows 2008DCx64 > > > > > > > > Known limitations/bugs/TODOs: > > > > - hot-remove is not supported, yet > > > > - max number of supported DIMM devices 256 (due to ACPI > object > > name > > > > limit), could be increased creating several containers and > > putting > > > > DIMMs there. (exercise for future) > > > > - e820 table doesn't include DIMM devices added with > -device / > > > > (or after reboot devices added with device_add) > > > > - Windows 2008 remembers DIMM configuration, so if DIMM > with other > > > > addr/size is added into the same slot, it refuses to use > it > > insisting > > > > on old mapping. > > > > > > > > QEMU git tree for testing is available at: > > > > > https://github.com/imammedo/qemu/commits/memory-hotplug-v11 > > > > > > > > Example QEMU cmd line: > > > > qemu-system-x86_64 -enable-kvm -monitor unix:/tmp/ > > mon,server,nowait \ > > > > -m 4096,slots=4,maxmem=8G guest.img > > > > > > > > PS: > > > > Windows guest requires SRAT table for hotplug to work so > add an > > extra > > > option: > > > > -numa node > > > > > > > > Igor Mammedov (32): > > > > pc: create custom generic PC machine type > > > > pc: ACPI BIOS: use enum for defining memory affinity flags > > > > object_add: allow completion handler to get canonical path > > > > vl.c: daemonize before guest memory allocation > > > > add memdev backend infrastructure > > > > vl.c: extend -m option to support options for memory > hotplug > > > > qdev: hotplug for buss-less devices > > > > qdev: expose DeviceState.hotplugged field as a property > > > > memory: add memory_region_is_mapped() API > > > > pc-dimm: do not allow to set already used memdev > > > > pc: initialize memory hotplug address space > > > > pc: exit QEMU if number of slots more than supported 256 > > > > pc: add 'etc/reserved-memory-end' fw_cfg interface for > SeaBIOS > > > > pc: exit QEMU if compat machine doesn't support memory > hotlpug > > > > pc: add memory hotplug handler to PC_MACHINE > > > > pc-dimm: add busy address check and address auto-allocation > > > > pc-dimm: add busy slot check and slot auto-allocation > > > > acpi: rename cpu_hotplug_defs.h to pc-hotplug.h > > > > acpi: memory hotplug ACPI hardware implementation > > > > trace: add acpi memory hotplug IO region events > > > > trace: pc: add PC_DIMM slot & address allocation > > > > acpi:piix4: allow plug/unlug callbacks handle not only PCI > > devices > > > > acpi:piix4: add memory hotplug handling > > > > pc: ich9 lpc: make it work with global/compat properties > > > > acpi:ich9: add memory hotplug handling > > > > pc: migrate piix4 & ich9 MemHotplugState > > > > pc: add acpi-device link to PCMachineState > > > > pc: propagate memory hotplug event to ACPI device > > > > pc: ACPI BIOS: implement memory hotplug interface > > > > pc: add "hotplug-memory-region-size" property to PC_MACHINE > > > > pc: ACPI BIOS: reserve SRAT entry for hotplug mem hole > > > > pc: ACPI BIOS: make GPE.3 handle memory hotplug event on > PIIX and > > Q35 > > > > machines > > > > > > > > Vasilis Liaskovitis (1): > > > > pc: implement pc-dimm device abstraction > > > > > > > > backends/Makefile.objs | 2 + > > > > backends/hostmem-ram.c | 54 ++++++++ > > > > backends/hostmem.c | 97 +++++++++++++++ > > > > default-configs/i386-softmmu.mak | 1 + > > > > default-configs/x86_64-softmmu.mak | 1 + > > > > docs/specs/acpi_mem_hotplug.txt | 44 +++++++ > > > > hw/Makefile.objs | 1 + > > > > hw/acpi/Makefile.objs | 1 + > > > > hw/acpi/ich9.c | 62 ++++++++++ > > > > hw/acpi/memory_hotplug.c | 187 > > ++++++++++++++++++++++++++++ > > > > hw/acpi/piix4.c | 74 ++++++++++-- > > > > hw/core/qdev.c | 30 +++++ > > > > hw/i386/Makefile.objs | 3 +- > > > > hw/i386/acpi-build.c | 75 ++++++++++- > > > > hw/i386/acpi-dsdt.dsl | 7 +- > > > > hw/i386/pc.c | 227 > > > ++++++++++++++++++++++++++++++++++- > > > > hw/i386/pc_piix.c | 51 +++++--- > > > > hw/i386/pc_q35.c | 25 +++- > > > > hw/i386/q35-acpi-dsdt.dsl | 7 +- > > > > hw/i386/ssdt-mem.dsl | 77 ++++++++++++ > > > > hw/i386/ssdt-misc.dsl | 164 > > +++++++++++++++++++++++++ > > > > hw/isa/lpc_ich9.c | 33 +++++- > > > > hw/mem/Makefile.objs | 1 + > > > > hw/mem/pc-dimm.c | 236 > > > ++++++++++++++++++++++++++++++++++++ > > > > hw/mips/mips_malta.c | 2 +- > > > > include/exec/memory.h | 8 ++ > > > > include/hw/acpi/acpi.h | 6 + > > > > include/hw/acpi/cpu_hotplug.h | 2 +- > > > > include/hw/acpi/cpu_hotplug_defs.h | 32 ----- > > > > include/hw/acpi/ich9.h | 4 + > > > > include/hw/acpi/memory_hotplug.h | 37 ++++++ > > > > include/hw/acpi/pc-hotplug.h | 56 +++++++++ > > > > include/hw/boards.h | 10 ++ > > > > include/hw/i386/pc.h | 64 ++++++++++- > > > > include/hw/mem/pc-dimm.h | 79 ++++++++++++ > > > > include/sysemu/hostmem.h | 60 +++++++++ > > > > memory.c | 10 ++- > > > > qemu-options.hx | 9 +- > > > > qmp.c | 11 ++- > > > > trace-events | 17 +++ > > > > vl.c | 64 +++++++++- > > > > 41 files changed, 1829 insertions(+), 102 deletions(-) > > > > create mode 100644 backends/hostmem-ram.c > > > > create mode 100644 backends/hostmem.c > > > > create mode 100644 docs/specs/acpi_mem_hotplug.txt > > > > create mode 100644 hw/acpi/memory_hotplug.c > > > > create mode 100644 hw/i386/ssdt-mem.dsl > > > > create mode 100644 hw/mem/Makefile.objs > > > > create mode 100644 hw/mem/pc-dimm.c > > > > delete mode 100644 include/hw/acpi/cpu_hotplug_defs.h > > > > create mode 100644 include/hw/acpi/memory_hotplug.h > > > > create mode 100644 include/hw/acpi/pc-hotplug.h > > > > create mode 100644 include/hw/mem/pc-dimm.h > > > > create mode 100644 include/sysemu/hostmem.h > > > > > > > > > > > > > >