All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v3 0/2] pc: memhp: enforce gaps between DIMMs
@ 2015-09-29 14:53 Igor Mammedov
  2015-09-29 14:53 ` [Qemu-devel] [PATCH v3 1/2] memhp: extend address auto assignment to support gaps Igor Mammedov
  2015-09-29 14:53 ` [Qemu-devel] [PATCH v3 2/2] pc: memhp: force gaps between DIMM's GPA Igor Mammedov
  0 siblings, 2 replies; 7+ messages in thread
From: Igor Mammedov @ 2015-09-29 14:53 UTC (permalink / raw)
  To: qemu-devel; +Cc: pbonzini, bharata, ehabkost, david, mst

v3:
 -  use pc_machine_class_init() for default. (Eduardo)
 -  make 'gap' boolean and just add 1 byte gap
    when calculating new_addr for DIMM.
v2:
   make inter_dimm_gap a boolean and inster gap in 1 byte
   instead of 2Mb, due to alignment that gap would be extended
   up to natural backend alignment value.

it's a simplier way suggested by Michael S. Tsirkin
to workaround virtio bug reported earlier:
http://lists.nongnu.org/archive/html/qemu-devel/2015-08/msg00522.html
where virtio can't handle buffer that crosses border
between 2 DIMM's (i.e. 2 MemoryRegions).

idea is to leave gaps between DIMMs, making their GPAs
non contiguous, which effectively forces kmalloc
to not use DIMM if buffer doesn't fit inside of it.

Simpler reproducer:
 qemu-system-x86_64 -enable-kvm  -m 256,slots=250,maxmem=32G  -drive if=virtio,file=/dev/slow/rhel72  \
  `for i in $(seq 0 58); do echo -n "-object memory-backend-ram,id=m$i,size=10M -device pc-dimm,id=dimm$i,memdev=m$i "; done` \
   -nodefaults -snapshot -serial stdio -nographic -M pc-i440fx-2.4

if guest manages to boot just login and do:
  dd if=/dev/vda of=/dev/null bs=128M

it will crash QEMU in 99% cases with following message:
  qemu-system-x86_64: virtio: error trying to map MMIO memory

Tested vs master and mst/PCI trees.

Igor Mammedov (2):
  memhp: extend address auto assignment to support gaps
  pc: memhp: force gaps between DIMM's GPA

 hw/i386/pc.c             |  5 ++++-
 hw/i386/pc_piix.c        |  1 +
 hw/i386/pc_q35.c         |  1 +
 hw/mem/pc-dimm.c         | 15 +++++++++------
 hw/ppc/spapr.c           |  2 +-
 include/hw/i386/pc.h     |  1 +
 include/hw/mem/pc-dimm.h |  7 ++++---
 7 files changed, 21 insertions(+), 11 deletions(-)

-- 
1.8.3.1

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2015-10-08 13:51 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-29 14:53 [Qemu-devel] [PATCH v3 0/2] pc: memhp: enforce gaps between DIMMs Igor Mammedov
2015-09-29 14:53 ` [Qemu-devel] [PATCH v3 1/2] memhp: extend address auto assignment to support gaps Igor Mammedov
2015-10-02 15:26   ` Eduardo Habkost
2015-10-08 13:31   ` Bharata B Rao
2015-10-08 13:46     ` Bharata B Rao
2015-10-08 13:51     ` Igor Mammedov
2015-09-29 14:53 ` [Qemu-devel] [PATCH v3 2/2] pc: memhp: force gaps between DIMM's GPA Igor Mammedov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.