On 2023/5/25 20:18, lijiang wrote:
Hi, lijiang
Sorry, It seems that I miss here when I replying your previous
email.
You mean 2M hugetlb will show "ZERO PAGE" when testing my patch?
IMHO, I re-read mm/hugetlb.c
And currently, the patch can work on the following cases:
[1] X86 64
[a] 4k page
[b] 2M hugepage
[2] aarch64
[a] 4k page
[b] 2M hugepage
[c] 64k-512M hugepage
For aarch64 [c], I can not test it because of Oops from kernel:
...
[ 37.939717] Internal error: Oops: 0000000096000006 [#1] SMP
[ 37.945288] Modules linked in: rfkill vfat fat nicvf cavium_rng_vf cavium_ptp ast drm_shmem_helper i2c_algo_bit drm_kms_helper syscopyarea sysfillrect sysimgblt nicpf ipmi_ssif cavium_rng ipmi_devintf ipmi_msghandler fuse drm xfs libcrc32c sha2_ce crct10dif_ce ghash_ce sha256_arm64 sha1_ce e1000e thunderx_zip thunder_bgx thunder_xcv i2c_thunderx mdio_thunder mdio_cavium sg dm_mirror dm_region_hash dm_log dm_mod
[ 37.981797] CPU: 7 PID: 1801 Comm: NetworkManager Not tainted 6.4.0-rc4+ #2
[ 37.988752] Hardware name: GIGABYTE R270-T61-V6-A/MT60-SC9-V6, BIOS F02 08/06/2019
[ 37.996312] pstate: 00000005 (nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[ 38.003267] pc : __bitmap_weight_and+0x30/0xa0
[ 38.007719] lr : cpumask_weight_and+0x14/0x28
[ 38.012071] sp : fffffe00214cf270
[ 38.015377] x29: fffffe00214cf270 x28: fffffc01520f4c48 x27: fffffc01520f4a28
[ 38.022511] x26: 0000000000000000 x25: fffffe0008100b30 x24: 0000000000000060
[ 38.029644] x23: fffffe0009b18c48 x22: 0000000000000000 x21: 0000000000000001
[ 38.036777] x20: 0000000000000000 x19: 0000000000000000 x18: ffffffffffffffff
[ 38.043910] x17: 0000000000000000 x16: 0000000000000000 x15: fffffe00a14cf33d
[ 38.051044] x14: ffffffffffffffff x13: 00302d7272652d74 x12: 0000000000000000
[ 38.058177] x11: ffffffffffffffc0 x10: 0000000000000040 x9 : fffffe00085b77d0
[ 38.065311] x8 : fffffc01520f51e8 x7 : 0000000000000000 x6 : 0000000000000001
[ 38.072444] x5 : fffffc0128a44ac8 x4 : fffffe0008100b30 x3 : 0000000000000008
[ 38.079577] x2 : 0000000000000060 x1 : 0000000000000000 x0 : fffffe0009b18c48
[ 38.086711] Call trace:
[ 38.089149] __bitmap_weight_and+0x30/0xa0
[ 38.093238] cpumask_weight_and+0x14/0x28
[ 38.097240] hop_cmp+0x30/0xa8
[ 38.100286] bsearch+0x48/0xa8
[ 38.103337] sched_numa_find_nth_cpu+0x80/0x138
[ 38.107864] cpumask_local_spread+0x30/0x90
[ 38.112049] nicvf_set_irq_affinity.constprop.0+0xa4/0x120 [nicvf]
[ 38.118250] nicvf_register_interrupts+0x2b8/0x2e0 [nicvf]
[ 38.123735] nicvf_open+0x258/0x5c0 [nicvf]
[ 38.127916] __dev_open+0xfc/0x210
[ 38.131314] __dev_change_flags+0x1c4/0x248
[ 38.135489] dev_change_flags+0x28/0x78
[ 38.139317] do_setlink+0x238/0xac0
[ 38.142801] __rtnl_newlink+0x430/0x518
[ 38.146629] rtnl_newlink+0x54/0x88
[ 38.150110] rtnetlink_rcv_msg+0x130/0x398
[ 38.154199] netlink_rcv_skb+0x60/0x130
[ 38.158031] rtnetlink_rcv+0x1c/0x30
[ 38.161605] netlink_unicast+0x2dc/0x338
[ 38.165519] netlink_sendmsg+0x1dc/0x448
[ 38.169434] sock_sendmsg+0x5c/0xb0
[ 38.172917] ____sys_sendmsg+0x1f0/0x2c0
[ 38.176832] ___sys_sendmsg+0x80/0xc8
[ 38.180489] __sys_sendmsg+0x5c/0xb0
[ 38.184056] __arm64_sys_sendmsg+0x28/0x38
[ 38.188144] invoke_syscall.constprop.0+0x7c/0xd0
[ 38.192851] el0_svc_common.constprop.0+0x13c/0x158
[ 38.197722] do_el0_svc+0x38/0xa8
[ 38.201030] el0_svc+0x3c/0x198
[ 38.204169] el0t_64_sync_handler+0xb4/0x130
[ 38.208432] el0t_64_sync+0x17c/0x180
[ 38.212092] Code: aa0003f7 34000395 d2800013 52800014 (f8737ac3)
[ 38.218181] ---[ end trace 0000000000000000 ]---
[ 38.222791] Kernel panic - not syncing: Oops: Fatal exception
[ 38.228529] SMP: stopping secondary CPUs
[ 38.232489] Kernel Offset: disabled
[ 38.235968] CPU features: 0x00e000,00280802,04005203
[ 38.240925] Memory Limit: none
[ 38.243973] ---[ end Kernel panic - not syncing: Oops: Fatal exception ]---
But it is another issue. And this patch looks good to me for now. Just one thing: need add a few words to clarify them.
[1] it only supports displaying zero page for THP(except for 1G hugepage)
[2] and do not support for the hugetlb cases
So, for v3: Ack.
Thanks.
Lianbo