On 2/26/24 10:32 PM, Cao, Quanquan/曹 全全 wrote:
> Hi, Dave
>
> On the basis of this patch, I conducted some tests and encountered unexpected
> errors. I would like to inquire whether the design here is reasonable? Below
> are the steps of my testing:
>
> Link:
> https://lore.kernel.org/linux-cxl/170138109724.2882696.123294980050048623.stgit@djiang5-mobl3/
>
>
> Problem description: after creating a region, directly forcing
> 'disable-memdev' and then consuming memory leads to a kernel panic.
If you are forcing memory disable when the memory cannot be offlined, then this
behavior is expected. You are ripping the memory away from underneath kernel
mm. The reason the check was added is to prevent the users from doing exactly
that.
>
>
> Test environment:
> KERNEL 6.8.0-rc1
> QEMU 8.2.0-rc4
>
> Test steps:
> step1: set memory auto_online to movable zones.
> echo online_movable > /sys/devices/system/memory/auto_online_blocks
> step2: create region
> cxl create-region -t ram -d decoder0.0 -m mem0
> step3: disable memdev
> cxl disable-memdev mem0 -f
> step4: consum CXL memory
> ./consumemem <------kernel panic
>
> numactl node status:
> step1: numactl -H
>
> available: 2 nodes (0-1)
> node 0 cpus: 0 1
> node 0 size: 968 MB
> node 0 free: 664 MB
> node 1 cpus: 2 3
> node 1 size: 683 MB
> node 1 free: 333 MB
> node distances:
> node 0 1
> 0: 10 20
>
> step2: numactl -H
>
> available: 3 nodes (0-2)
> node 0 cpus: 0 1
> node 0 size: 968 MB
> node 0 free: 677 MB
> node 1 cpus: 2 3
> node 1 size: 683 MB
> node 1 free: 333 MB
> node 2 cpus:
> node 2 size: 256 MB
> node 2 free: 256 MB
> node distances:
> node 0 1 2
> 0: 10 20 20
> 1: 20 10 20
> 2: 20 20 10
>
> step3: numactl -H
>
> available: 3 nodes (0-2)
> node 0 cpus: 0 1
> node 0 size: 968 MB
> node 0 free: 686 MB
> node 1 cpus: 2 3
> node 1 size: 683 MB
> node 1 free: 336 MB
> node 2 cpus:
> node 2 size: 256 MB
> node 2 free: 256 MB
> node distances:
> node 0 1 2
> 0: 10 20 20
> 1: 20 10 20
> 2: 20 20 10