Bug 1264093

Summary: need a lower limit for amount of memory to hot plug
Product: Red Hat Enterprise Virtualization Manager Reporter: Michal Skrivanek <michal.skrivanek>
Component: ovirt-engineAssignee: Nobody <nobody>
Status: CLOSED CURRENTRELEASE QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: 3.6.0CC: ailan, chayang, ecohen, gklein, hhuang, imammedo, juzhang, lsurette, michen, mst, owwang, pezhang, qzhang, rbalakri, Rhev-m-bugs, virt-bugs, virt-maint, xfu, yeylon
Target Milestone: ---   
Target Release: 3.6.0   
Hardware: x86_64   
OS: Linux   
Whiteboard: virt
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: 1245864 Environment:
Last Closed: 2015-09-29 11:22:58 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1245864, 1267533    
Bug Blocks:    

Description Michal Skrivanek 2015-09-17 13:46:33 UTC
we need to put a lower limit on RAM we hotplug
IIRC for ppc64le we have a similar problem, just different amount (please check, it might have been 256MB)
I think limiting it both to 256MB would be good enough

+++ This bug was initially created as a clone of Bug #1245864 +++

Description of problem:
In the guest, hotplug memory >= 13 times, then reboot, the qemu process dead.    



Version-Release number of selected component (if applicable):
Host:
Kernel:3.10.0-296.el7.x86_64
qemu-kvm-rhev:qemu-kvm-rhev-2.3.0-12.el7.x86_64

Guest:
kernel:3.10.0-295.el7.x86_64
systemd:systemd-219-8.el7.x86_64



How reproducible:
100%



Steps to Reproduce:
1. start  a guest with qemu
#</usr/libexec/qemu-kvm command> -m 1G,slots=256,maxmem=40G -numa node -monitor unix:/tmp/monitor4,server,nowait


2.hotplug 10M memory 13 times manually (also tried 15times, 20 times, 255 times with scripts, the same results, all failed)
(qemu)object_add memory-backend-ram,id=memX,size=10M     (X from 1 to 13)
(qemu)device_add pc-dimm,id=dimmX,memdev=memX         

the script
#!/bin/bash
i=0 
while [ $i -lt 256 ] 
do 
echo $i
sleep 3 
echo "object_add memory-backend-ram,id=mem$i,size=10M"|nc -U /tmp/monitor3 
sleep 2
echo "device_add pc-dimm,id=dimm$i,memdev=mem$i,slot=$i"|nc -U /tmp/monitor3 
i=$(($i+1)) 
done 



3.reboot the guest
in the guest
#reboot



Actual results:

Host:
[root@dhcp-12-153 ~]# /usr/libexec/qemu-kvm -name rhel7.2-4 -machine  pc-i440fx-rhel7.2.0,accel=kvm,usb=off -cpu SandyBridge -m 1G,slots=256,maxmem=40G -numa node -smp 4,sockets=2,cores=2,threads=1 -uuid 82b1a01e-5f6c-4f5f-8d28-3854a74e9b5b -drive file=/home/rhel7.2-4.qcow2,if=none,id=drive-virtio-blk-0,format=qcow2 -device virtio-blk-pci,drive=drive-virtio-blk-0,bootindex=1,id=virtio-blk01 -netdev tap,id=hostnet0 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=12:54:00:6c:89:9d -device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vgamem_mb=16,bus=pci.0 -spice port=5914,addr=0.0.0.0,disable-ticketing,image-compression=off,seamless-migration=on  -monitor stdio -serial unix:/tmp/monitor4,server,nowait
QEMU 2.3.0 monitor - type 'help' for more information
(qemu) main_channel_link: add main channel client
main_channel_handle_parsed: net test: latency 0.732000 ms, bitrate 22021505376 bps (21001.344086 Mbps)
inputs_connect: inputs channel client create
red_dispatcher_set_cursor_peer: 

(qemu) object_add memory-backend-ram,id=mem1,size=10M
(qemu) device_add pc-dimm,id=dimm1,memdev=mem1
(qemu) 
(qemu) object_add memory-backend-ram,id=mem2,size=10M
(qemu) device_add pc-dimm,id=dimm2,memdev=mem2
(qemu) 
(qemu) object_add memory-backend-ram,id=mem3,size=10M
(qemu) device_add pc-dimm,id=dimm3,memdev=mem3
(qemu) 
(qemu) object_add memory-backend-ram,id=mem4,size=10M
(qemu) device_add pc-dimm,id=dimm4,memdev=mem4
(qemu) 
(qemu) object_add memory-backend-ram,id=mem5,size=10M
(qemu) device_add pc-dimm,id=dimm5,memdev=mem5
(qemu) 
(qemu) object_add memory-backend-ram,id=mem6,size=10M
(qemu) device_add pc-dimm,id=dimm6,memdev=mem6
(qemu) 
(qemu) object_add memory-backend-ram,id=mem7,size=10M
(qemu) device_add pc-dimm,id=dimm7,memdev=mem7
(qemu) 
(qemu) object_add memory-backend-ram,id=mem8,size=10M
(qemu) device_add pc-dimm,id=dimm8,memdev=mem8
(qemu) 
(qemu) object_add memory-backend-ram,id=mem9,size=10M
(qemu) device_add pc-dimm,id=dimm9,memdev=mem9
(qemu) 
(qemu) object_add memory-backend-ram,id=mem10,size=10M
(qemu) device_add pc-dimm,id=dimm10,memdev=mem10
(qemu) 
(qemu) object_add memory-backend-ram,id=mem11,size=10M
(qemu) device_add pc-dimm,id=dimm11,memdev=mem11
(qemu) 
(qemu) object_add memory-backend-ram,id=mem12,size=10M
(qemu) device_add pc-dimm,id=dimm12,memdev=mem12
(qemu) 
(qemu) object_add memory-backend-ram,id=mem13,size=10M
(qemu) device_add pc-dimm,id=dimm13,memdev=mem13
(qemu) inputs_detach_tablet: 
qemu-kvm: virtio: error trying to map MMIO memory
[root@dhcp-12-153 ~]# ps aux|grep qemu
root     13531  0.0  0.0 112648   964 pts/0    S+   09:54   0:00 grep --color=auto qemu
[root@dhcp-12-153 ~]#


Guest:
[root@dhcp-12-153 ~]# nc -U /tmp/monitor4
[    0.484842] dracut-cmdline[108]: dracut-7.2 (Maipo) dracut-033-284.el7
[    0.485920] dracut-cmdline[108]: Using kernel command line parameters:
[    1.819767] intel_rapl: no valid rapl domains found in package 0


Red Hat Enterprise Linux Server 7.2 (Maipo)
Kernel 3.10.0-295.el7.x86_64 on an x86_64

dhcp-9-183 login: [   38.249631] acpi PNP0C80:01: acpi_memory_enable_device() error
[   38.250762] acpi PNP0C80:03: acpi_memory_enable_device() error
[   38.251742] acpi PNP0C80:05: acpi_memory_enable_device() error
[   38.252822] acpi PNP0C80:07: acpi_memory_enable_device() error
[   38.253858] acpi PNP0C80:09: acpi_memory_enable_device() error
[   38.254901] acpi PNP0C80:0b: acpi_memory_enable_device() error
Rebooting.
[   91.185112] Restarting system.
[    0.240133] acpi PNP0C80:01: acpi_memory_enable_device() error
[    0.241304] acpi PNP0C80:03: acpi_memory_enable_device() error
[    0.243142] acpi PNP0C80:05: acpi_memory_enable_device() error
[    0.244114] acpi PNP0C80:07: acpi_memory_enable_device() error
[    0.245317] acpi PNP0C80:09: acpi_memory_enable_device() error
[    0.246506] acpi PNP0C80:0b: acpi_memory_enable_device() error
[    0.454249] dracut-cmdline[116]: dracut-7.2 (Maipo) dracut-033-284.el7
[    0.478756] dracut-cmdline[116]: Using kernel command line parameters:
[    1.834722] intel_rapl: no valid rapl domains found in package 0
[    1.849611] nommu_map_sg: overflow 107c31000+16 of device mask ffffffff
[    1.861058] ata2.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
[    1.862574] ata2.00: cmd a0/01:00:00:10:00/00:00:00:00:00/a0 tag 0 dma 16400 in
[    1.862574]          Get configuration 46 00 00 00 00 00 00 00 10 00res 50/00:03:00:08:00/00:00:00:00:00/a0 Emask 0x40 (internal error)
[    1.867058] ata2.00: status: { DRDY }



Expected results:
The guest works well.


Additional info:

--- Additional comment from RHEL Product and Program Management on 2015-07-23 04:37:49 CEST ---

Since this bug report was entered in bugzilla, the release flag has been
set to ? to ensure that it is properly evaluated for this release.

--- Additional comment from Igor Mammedov on 2015-07-23 18:35:08 CEST ---

(In reply to zhangpei from comment #0)
> Description of problem:
> In the guest, hotplug memory >= 13 times, then reboot, the qemu process
> dead.    
> 
> 
> 
> Version-Release number of selected component (if applicable):
> Host:
> Kernel:3.10.0-296.el7.x86_64
> qemu-kvm-rhev:qemu-kvm-rhev-2.3.0-12.el7.x86_64
> 
> Guest:
> kernel:3.10.0-295.el7.x86_64
> systemd:systemd-219-8.el7.x86_64
> 
> 
> 
> How reproducible:
> 100%
> 
> 
> 
> Steps to Reproduce:
> 1. start  a guest with qemu
> #</usr/libexec/qemu-kvm command> -m 1G,slots=256,maxmem=40G -numa node
> -monitor unix:/tmp/monitor4,server,nowait
> 
> 
> 2.hotplug 10M memory 13 times manually (also tried 15times, 20 times, 255
> times with scripts, the same results, all failed)
> (qemu)object_add memory-backend-ram,id=memX,size=10M     (X from 1 to 13)
> (qemu)device_add pc-dimm,id=dimmX,memdev=memX         
> 
> the script
> #!/bin/bash
> i=0 
> while [ $i -lt 256 ] 
> do 
> echo $i
> sleep 3 
> echo "object_add memory-backend-ram,id=mem$i,size=10M"|nc -U /tmp/monitor3 
> sleep 2
> echo "device_add pc-dimm,id=dimm$i,memdev=mem$i,slot=$i"|nc -U /tmp/monitor3 
> i=$(($i+1)) 
> done 
> 
> 
> 
> 3.reboot the guest
> in the guest
> #reboot
> 
> 
> 
> Actual results:
> 
> Host:
> [root@dhcp-12-153 ~]# /usr/libexec/qemu-kvm -name rhel7.2-4 -machine 
> pc-i440fx-rhel7.2.0,accel=kvm,usb=off -cpu SandyBridge -m
> 1G,slots=256,maxmem=40G -numa node -smp 4,sockets=2,cores=2,threads=1 -uuid
> 82b1a01e-5f6c-4f5f-8d28-3854a74e9b5b -drive
> file=/home/rhel7.2-4.qcow2,if=none,id=drive-virtio-blk-0,format=qcow2
> -device virtio-blk-pci,drive=drive-virtio-blk-0,bootindex=1,id=virtio-blk01
> -netdev tap,id=hostnet0 -device
> virtio-net-pci,netdev=hostnet0,id=net0,mac=12:54:00:6c:89:9d -device
> qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vgamem_mb=16,bus=pci.
> 0 -spice
> port=5914,addr=0.0.0.0,disable-ticketing,image-compression=off,seamless-
> migration=on  -monitor stdio -serial unix:/tmp/monitor4,server,nowait
> QEMU 2.3.0 monitor - type 'help' for more information
> (qemu) main_channel_link: add main channel client
> main_channel_handle_parsed: net test: latency 0.732000 ms, bitrate
> 22021505376 bps (21001.344086 Mbps)
> inputs_connect: inputs channel client create
> red_dispatcher_set_cursor_peer: 
> 
> (qemu) object_add memory-backend-ram,id=mem1,size=10M
> (qemu) device_add pc-dimm,id=dimm1,memdev=mem1
> (qemu) 
> (qemu) object_add memory-backend-ram,id=mem2,size=10M
> (qemu) device_add pc-dimm,id=dimm2,memdev=mem2
> (qemu) 
> (qemu) object_add memory-backend-ram,id=mem3,size=10M
> (qemu) device_add pc-dimm,id=dimm3,memdev=mem3
> (qemu) 
> (qemu) object_add memory-backend-ram,id=mem4,size=10M
> (qemu) device_add pc-dimm,id=dimm4,memdev=mem4
> (qemu) 
> (qemu) object_add memory-backend-ram,id=mem5,size=10M
> (qemu) device_add pc-dimm,id=dimm5,memdev=mem5
> (qemu) 
> (qemu) object_add memory-backend-ram,id=mem6,size=10M
> (qemu) device_add pc-dimm,id=dimm6,memdev=mem6
> (qemu) 
> (qemu) object_add memory-backend-ram,id=mem7,size=10M
> (qemu) device_add pc-dimm,id=dimm7,memdev=mem7
> (qemu) 
> (qemu) object_add memory-backend-ram,id=mem8,size=10M
> (qemu) device_add pc-dimm,id=dimm8,memdev=mem8
> (qemu) 
> (qemu) object_add memory-backend-ram,id=mem9,size=10M
> (qemu) device_add pc-dimm,id=dimm9,memdev=mem9
> (qemu) 
> (qemu) object_add memory-backend-ram,id=mem10,size=10M
> (qemu) device_add pc-dimm,id=dimm10,memdev=mem10
> (qemu) 
> (qemu) object_add memory-backend-ram,id=mem11,size=10M
> (qemu) device_add pc-dimm,id=dimm11,memdev=mem11
> (qemu) 
> (qemu) object_add memory-backend-ram,id=mem12,size=10M
> (qemu) device_add pc-dimm,id=dimm12,memdev=mem12
> (qemu) 
> (qemu) object_add memory-backend-ram,id=mem13,size=10M
> (qemu) device_add pc-dimm,id=dimm13,memdev=mem13
> (qemu) inputs_detach_tablet: 
> qemu-kvm: virtio: error trying to map MMIO memory
can you try with windows guest + virtio, pls?

> [root@dhcp-12-153 ~]# ps aux|grep qemu
> root     13531  0.0  0.0 112648   964 pts/0    S+   09:54   0:00 grep
> --color=auto qemu
> [root@dhcp-12-153 ~]#
> 
> 
> Guest:
> [root@dhcp-12-153 ~]# nc -U /tmp/monitor4
> [    0.484842] dracut-cmdline[108]: dracut-7.2 (Maipo) dracut-033-284.el7
> [    0.485920] dracut-cmdline[108]: Using kernel command line parameters:
> [    1.819767] intel_rapl: no valid rapl domains found in package 0
> 
> 
> Red Hat Enterprise Linux Server 7.2 (Maipo)
> Kernel 3.10.0-295.el7.x86_64 on an x86_64
> 
> dhcp-9-183 login: [   38.249631] acpi PNP0C80:01:
> acpi_memory_enable_device() error
> [   38.250762] acpi PNP0C80:03: acpi_memory_enable_device() error
> [   38.251742] acpi PNP0C80:05: acpi_memory_enable_device() error
> [   38.252822] acpi PNP0C80:07: acpi_memory_enable_device() error
> [   38.253858] acpi PNP0C80:09: acpi_memory_enable_device() error
> [   38.254901] acpi PNP0C80:0b: acpi_memory_enable_device() error
these errors are  normal since linux doesn't support small dimms,
you need to hot plug at least 128Mb dims for linux to be able handle them
SO there is not point to test 10Mb sizes with linux guest. Only windows can
handle that fine.

> Rebooting.
> [   91.185112] Restarting system.
> [    0.240133] acpi PNP0C80:01: acpi_memory_enable_device() error
> [    0.241304] acpi PNP0C80:03: acpi_memory_enable_device() error
> [    0.243142] acpi PNP0C80:05: acpi_memory_enable_device() error
> [    0.244114] acpi PNP0C80:07: acpi_memory_enable_device() error
> [    0.245317] acpi PNP0C80:09: acpi_memory_enable_device() error
> [    0.246506] acpi PNP0C80:0b: acpi_memory_enable_device() error
> [    0.454249] dracut-cmdline[116]: dracut-7.2 (Maipo) dracut-033-284.el7
> [    0.478756] dracut-cmdline[116]: Using kernel command line parameters:
> [    1.834722] intel_rapl: no valid rapl domains found in package 0
> [    1.849611] nommu_map_sg: overflow 107c31000+16 of device mask ffffffff
these affects baremetal as well,
use only virtue without IDE driver* or increase startup RAM to 4Gb
if you search bugzilla for nommu_map_sg, you'll find relevant BZ that's unlikely to be fixed.

  *  -nodefaults + only virtio drives also works for me.

> [    1.861058] ata2.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
> [    1.862574] ata2.00: cmd a0/01:00:00:10:00/00:00:00:00:00/a0 tag 0 dma
> 16400 in
> [    1.862574]          Get configuration 46 00 00 00 00 00 00 00 10 00res
> 50/00:03:00:08:00/00:00:00:00:00/a0 Emask 0x40 (internal error)
> [    1.867058] ata2.00: status: { DRDY }
> 
> 
> 
> Expected results:
> The guest works well.
10Mb will work only with Windows.

> 
> 
> Additional info:

--- Additional comment from zhangpei on 2015-07-27 11:17:18 CEST ---

(In reply to Igor Mammedov from comment #2)
> (In reply to zhangpei from comment #0)
> > Description of problem:
> > In the guest, hotplug memory >= 13 times, then reboot, the qemu process
> > dead.    
> > 
> > 
> > 
> > Version-Release number of selected component (if applicable):
> > Host:
> > Kernel:3.10.0-296.el7.x86_64
> > qemu-kvm-rhev:qemu-kvm-rhev-2.3.0-12.el7.x86_64
> > 
> > Guest:
> > kernel:3.10.0-295.el7.x86_64
> > systemd:systemd-219-8.el7.x86_64
> > 
> > 
> > 
> > How reproducible:
> > 100%
> > 
> > 
> > 
> > Steps to Reproduce:
> > 1. start  a guest with qemu
> > #</usr/libexec/qemu-kvm command> -m 1G,slots=256,maxmem=40G -numa node
> > -monitor unix:/tmp/monitor4,server,nowait
> > 
> > 
> > 2.hotplug 10M memory 13 times manually (also tried 15times, 20 times, 255
> > times with scripts, the same results, all failed)
> > (qemu)object_add memory-backend-ram,id=memX,size=10M     (X from 1 to 13)
> > (qemu)device_add pc-dimm,id=dimmX,memdev=memX         
> > 
> > the script
> > #!/bin/bash
> > i=0 
> > while [ $i -lt 256 ] 
> > do 
> > echo $i
> > sleep 3 
> > echo "object_add memory-backend-ram,id=mem$i,size=10M"|nc -U /tmp/monitor3 
> > sleep 2
> > echo "device_add pc-dimm,id=dimm$i,memdev=mem$i,slot=$i"|nc -U /tmp/monitor3 
> > i=$(($i+1)) 
> > done 
> > 
> > 
> > 
> > 3.reboot the guest
> > in the guest
> > #reboot
> > 
> > 
> > 
> > Actual results:
> > 
> > Host:
> > [root@dhcp-12-153 ~]# /usr/libexec/qemu-kvm -name rhel7.2-4 -machine 
> > pc-i440fx-rhel7.2.0,accel=kvm,usb=off -cpu SandyBridge -m
> > 1G,slots=256,maxmem=40G -numa node -smp 4,sockets=2,cores=2,threads=1 -uuid
> > 82b1a01e-5f6c-4f5f-8d28-3854a74e9b5b -drive
> > file=/home/rhel7.2-4.qcow2,if=none,id=drive-virtio-blk-0,format=qcow2
> > -device virtio-blk-pci,drive=drive-virtio-blk-0,bootindex=1,id=virtio-blk01
> > -netdev tap,id=hostnet0 -device
> > virtio-net-pci,netdev=hostnet0,id=net0,mac=12:54:00:6c:89:9d -device
> > qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vgamem_mb=16,bus=pci.
> > 0 -spice
> > port=5914,addr=0.0.0.0,disable-ticketing,image-compression=off,seamless-
> > migration=on  -monitor stdio -serial unix:/tmp/monitor4,server,nowait
> > QEMU 2.3.0 monitor - type 'help' for more information
> > (qemu) main_channel_link: add main channel client
> > main_channel_handle_parsed: net test: latency 0.732000 ms, bitrate
> > 22021505376 bps (21001.344086 Mbps)
> > inputs_connect: inputs channel client create
> > red_dispatcher_set_cursor_peer: 
> > 
> > (qemu) object_add memory-backend-ram,id=mem1,size=10M
> > (qemu) device_add pc-dimm,id=dimm1,memdev=mem1
> > (qemu) 
> > (qemu) object_add memory-backend-ram,id=mem2,size=10M
> > (qemu) device_add pc-dimm,id=dimm2,memdev=mem2
> > (qemu) 
> > (qemu) object_add memory-backend-ram,id=mem3,size=10M
> > (qemu) device_add pc-dimm,id=dimm3,memdev=mem3
> > (qemu) 
> > (qemu) object_add memory-backend-ram,id=mem4,size=10M
> > (qemu) device_add pc-dimm,id=dimm4,memdev=mem4
> > (qemu) 
> > (qemu) object_add memory-backend-ram,id=mem5,size=10M
> > (qemu) device_add pc-dimm,id=dimm5,memdev=mem5
> > (qemu) 
> > (qemu) object_add memory-backend-ram,id=mem6,size=10M
> > (qemu) device_add pc-dimm,id=dimm6,memdev=mem6
> > (qemu) 
> > (qemu) object_add memory-backend-ram,id=mem7,size=10M
> > (qemu) device_add pc-dimm,id=dimm7,memdev=mem7
> > (qemu) 
> > (qemu) object_add memory-backend-ram,id=mem8,size=10M
> > (qemu) device_add pc-dimm,id=dimm8,memdev=mem8
> > (qemu) 
> > (qemu) object_add memory-backend-ram,id=mem9,size=10M
> > (qemu) device_add pc-dimm,id=dimm9,memdev=mem9
> > (qemu) 
> > (qemu) object_add memory-backend-ram,id=mem10,size=10M
> > (qemu) device_add pc-dimm,id=dimm10,memdev=mem10
> > (qemu) 
> > (qemu) object_add memory-backend-ram,id=mem11,size=10M
> > (qemu) device_add pc-dimm,id=dimm11,memdev=mem11
> > (qemu) 
> > (qemu) object_add memory-backend-ram,id=mem12,size=10M
> > (qemu) device_add pc-dimm,id=dimm12,memdev=mem12
> > (qemu) 
> > (qemu) object_add memory-backend-ram,id=mem13,size=10M
> > (qemu) device_add pc-dimm,id=dimm13,memdev=mem13
> > (qemu) inputs_detach_tablet: 
> > qemu-kvm: virtio: error trying to map MMIO memory
> can you try with windows guest + virtio, pls?
> 

I tested windows guest (win7) with virtio, and the guest can reboot well.
BTW, I tested all scenarios with virtio drivers.

> > [root@dhcp-12-153 ~]# ps aux|grep qemu
> > root     13531  0.0  0.0 112648   964 pts/0    S+   09:54   0:00 grep
> > --color=auto qemu
> > [root@dhcp-12-153 ~]#
> > 
> > 
> > Guest:
> > [root@dhcp-12-153 ~]# nc -U /tmp/monitor4
> > [    0.484842] dracut-cmdline[108]: dracut-7.2 (Maipo) dracut-033-284.el7
> > [    0.485920] dracut-cmdline[108]: Using kernel command line parameters:
> > [    1.819767] intel_rapl: no valid rapl domains found in package 0
> > 
> > 
> > Red Hat Enterprise Linux Server 7.2 (Maipo)
> > Kernel 3.10.0-295.el7.x86_64 on an x86_64
> > 
> > dhcp-9-183 login: [   38.249631] acpi PNP0C80:01:
> > acpi_memory_enable_device() error
> > [   38.250762] acpi PNP0C80:03: acpi_memory_enable_device() error
> > [   38.251742] acpi PNP0C80:05: acpi_memory_enable_device() error
> > [   38.252822] acpi PNP0C80:07: acpi_memory_enable_device() error
> > [   38.253858] acpi PNP0C80:09: acpi_memory_enable_device() error
> > [   38.254901] acpi PNP0C80:0b: acpi_memory_enable_device() error
> these errors are  normal since linux doesn't support small dimms,
> you need to hot plug at least 128Mb dims for linux to be able handle them

I tested linux guest(rhel 7.2) with 128Mb dimms, and the guest can reboot well.

> SO there is not point to test 10Mb sizes with linux guest. Only windows can
> handle that fine.

when testing hotplug/unhotplug memory feature afterwards, do we only test >=128Mb dimm in linux guest? and any size dimm in windows guest? Could you please tell me ? Thanks.

> 
> > Rebooting.
> > [   91.185112] Restarting system.
> > [    0.240133] acpi PNP0C80:01: acpi_memory_enable_device() error
> > [    0.241304] acpi PNP0C80:03: acpi_memory_enable_device() error
> > [    0.243142] acpi PNP0C80:05: acpi_memory_enable_device() error
> > [    0.244114] acpi PNP0C80:07: acpi_memory_enable_device() error
> > [    0.245317] acpi PNP0C80:09: acpi_memory_enable_device() error
> > [    0.246506] acpi PNP0C80:0b: acpi_memory_enable_device() error
> > [    0.454249] dracut-cmdline[116]: dracut-7.2 (Maipo) dracut-033-284.el7
> > [    0.478756] dracut-cmdline[116]: Using kernel command line parameters:
> > [    1.834722] intel_rapl: no valid rapl domains found in package 0
> > [    1.849611] nommu_map_sg: overflow 107c31000+16 of device mask ffffffff
> these affects baremetal as well,
> use only virtue without IDE driver* or increase startup RAM to 4Gb

I tested 4Gb RAM, and the  nommu_map_sg error disappeared.


> if you search bugzilla for nommu_map_sg, you'll find relevant BZ that's
> unlikely to be fixed.

I found the bug you mentioned. 
Bug 987871 - nommu_map_sg: overflow 107c15000+4096 of device mask ffffffff


>   *  -nodefaults + only virtio drives also works for me.

With -nodefaults and without -nodefaults are the same result:

both startup with 4G RAM:
10Mb dimms without -nodefaults :fail
10Mb dimms with -nodefaults :fail

128Mb dimms without -nodefaults :work
128Mb dimms with -nodefaults :work

> > [    1.861058] ata2.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
> > [    1.862574] ata2.00: cmd a0/01:00:00:10:00/00:00:00:00:00/a0 tag 0 dma
> > 16400 in
> > [    1.862574]          Get configuration 46 00 00 00 00 00 00 00 10 00res
> > 50/00:03:00:08:00/00:00:00:00:00/a0 Emask 0x40 (internal error)
> > [    1.867058] ata2.00: status: { DRDY }
> > 
> > 
> > 
> > Expected results:
> > The guest works well.
> 10Mb will work only with Windows.
> > 
> > 
> > Additional info:

--- Additional comment from Igor Mammedov on 2015-09-01 13:43:28 CEST ---

Debugged and reported issue upstream.
http://lists.nongnu.org/archive/html/qemu-devel/2015-08/msg00522.html

Problem is in virtio limitation on QEMU side that it can't handle case when guest allocated buffer crosses boundary between 2 memory regions.

From IRC discussion it's could be possible to remove limitation in virtio but it would be a rather complex re-factoring and I don't have enough virtio expertise to do it. So I's prefer to leave it to virtio maintainers.

Comment 1 Michal Skrivanek 2015-09-29 11:22:58 UTC
seems we already limit it at 256MB so we're good both on x86 and ppc64le