On 4/22/20 3:42 AM, Aneesh Kumar K.V wrote: > Mike Kravetz <mike.kravetz@xxxxxxxxxx> writes: > >> The routine hugetlb_add_hstate prints a warning if the hstate already >> exists. This was originally done as part of kernel command line >> parsing. If 'hugepagesz=' was specified more than once, the warning >> pr_warn("hugepagesz= specified twice, ignoring\n"); >> would be printed. >> >> Some architectures want to enable all huge page sizes. They would >> call hugetlb_add_hstate for all supported sizes. However, this was >> done after command line processing and as a result hstates could have >> already been created for some sizes. To make sure no warning were >> printed, there would often be code like: >> if (!size_to_hstate(size) >> hugetlb_add_hstate(ilog2(size) - PAGE_SHIFT) >> >> The only time we want to print the warning is as the result of command >> line processing. > > Does this patch break hugepages=x command line? I haven't tested this > yet. But one of the details w.r.t. skipping that hugetlb_add_hstate is > to make sure we can configure the max_huge_pages. > Are you asking about hugepages=x being the only option on the command line? If so, then the behavior is not changed. This will result in x pages of default huge page size being allocated. Where default huge page size is of course architecture dependent. On an x86 VM, [ 0.040474] Kernel command line: BOOT_IMAGE=/vmlinuz-5.6.0-mm1+ root=/dev/mapper/fedora_new--host-root ro rd.lvm.lv=fedora_new-host/root rd.lvm.lv=fedora_new-host/swap console=tty0 console=ttyS0,115200 audit=0 transparent_hugepage=always hugepages=128 [ 0.332618] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages [ 0.333245] HugeTLB registered 2.00 MiB page size, pre-allocated 128 pages BTW - Here are the command line options I tested on x86 with this series. No errors or warnings --------------------- hugepages=128 hugepagesz=2M hugepages=128 default_hugepagesz=2M hugepages=128 hugepages=128 default_hugepagesz=2M hugepagesz=1G hugepages=2 hugepages=2 default_hugepagesz=1G default_hugepagesz=1G hugepages=2 hugepages=128 hugepagesz=1G hugepages=2 hugepagesz=1G hugepages=2 hugepagesz=2M hugepages=128 default_hugepagesz=2M hugepages=128 hugepagesz=1G hugepages=2 hugepages=128 default_hugepagesz=2M hugepagesz=1G hugepages=2 hugepages=2 default_hugepagesz=1G hugepagesz=2M hugepages=128 default_hugepagesz=1G hugepages=2 hugepagesz=2M hugepages=128 default_hugepagesz=2M hugepagesz=2M hugepages=128 default_hugepagesz=2M hugepagesz=1G hugepages=2 hugepagesz=2M hugepages=128 Error or warning ---------------- hugepages=128 hugepagesz=2M hugepages=256 hugepagesz=2M hugepages=128 hugepagesz=2M hugepages=256 default_hugepagesz=2M hugepages=128 hugepagesz=2M hugepages=256 hugepages=128 hugepages=256 hugepagesz=2M hugepages=128 hugepages=2 default_hugepagesz=1G -- Mike Kravetz