Merge "Ignore 16K kernel modules when running on 4K kernel" into main am: a5c51c9cee
am: 149bfa5bdf
am: 28e80be0a0
am: a62be17708
Original change: https://android-review.googlesource.com/c/platform/system/core/+/2726056 Change-Id: If69407056a5903b9b27d6aa24c1739f4f4361b18 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
commit
54b1f5d71a
1 changed files with 21 additions and 1 deletions
|
@ -163,6 +163,21 @@ std::string GetPageSizeSuffix() {
|
|||
return android::base::StringPrintf("_%zuk", page_size / 1024);
|
||||
}
|
||||
|
||||
constexpr bool EndsWith(const std::string_view str, const std::string_view suffix) {
|
||||
return str.size() >= suffix.size() &&
|
||||
0 == str.compare(str.size() - suffix.size(), suffix.size(), suffix);
|
||||
}
|
||||
|
||||
constexpr std::string_view GetPageSizeSuffix(std::string_view dirname) {
|
||||
if (EndsWith(dirname, "_16k")) {
|
||||
return "_16k";
|
||||
}
|
||||
if (EndsWith(dirname, "_64k")) {
|
||||
return "_64k";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
std::string GetModuleLoadList(BootMode boot_mode, const std::string& dir_path) {
|
||||
|
@ -211,7 +226,8 @@ bool LoadKernelModules(BootMode boot_mode, bool want_console, bool want_parallel
|
|||
}
|
||||
dirent* entry = nullptr;
|
||||
std::vector<std::string> module_dirs;
|
||||
const std::string release_specific_module_dir = uts.release + GetPageSizeSuffix();
|
||||
const auto page_size_suffix = GetPageSizeSuffix();
|
||||
const std::string release_specific_module_dir = uts.release + page_size_suffix;
|
||||
while ((entry = readdir(base_dir.get()))) {
|
||||
if (entry->d_type != DT_DIR) {
|
||||
continue;
|
||||
|
@ -223,6 +239,10 @@ bool LoadKernelModules(BootMode boot_mode, bool want_console, bool want_parallel
|
|||
module_dirs.emplace_back(entry->d_name);
|
||||
break;
|
||||
}
|
||||
// Ignore _16k/_64k module dirs on 4K kernels
|
||||
if (GetPageSizeSuffix(entry->d_name) != page_size_suffix) {
|
||||
continue;
|
||||
}
|
||||
int dir_major = 0, dir_minor = 0;
|
||||
if (sscanf(entry->d_name, "%d.%d", &dir_major, &dir_minor) != 2 || dir_major != major ||
|
||||
dir_minor != minor) {
|
||||
|
|
Loading…
Reference in a new issue