Description of problem: The SMCR and SMR are required when running a CSV3 VM. Currently, both the SMCR and SMR are allocated from host CSV3 CMA. In this case, the SMCR contains only one entry, and does not stores the NPT for CSV3 VMs. The NPT itself is allocated from the CSV3 CMA when a CSV3 VM is created. This makes it difficult to determine in advance how much memory should be allocated from CSV3 CMA when a CSV3 VM is created. To address this issue, the CSV3 firmware with build ID 2407 and later supports multiple SMCR entries, allowing the NPT to be globally reserved within the SMCR entries. We add some code in the cloud-kernel to support global reservation of multiple SMCR entries, and to allocate CSV3 guest RAM and guest VMSAs from CSV3 CMA. Additionally, the current CSV3 CMA allocation scheme is too flexible to accommodate certain deployment scenarios. To improve predictability and efficiency, we introduce support for using 1G hugetlb pages for CSV3 guest RAM. When this feature is enabled, the user must specify the kernel boot parameter csv_use_hugetlb=<N> to indicate the maximum number of CSV3 VMs intended to be supported on the host platform. Version-Release number of selected component (if applicable): How reproducible: Steps to Reproduce: 1. 2. 3. Actual results: Expected results: Additional info: