Function report |
Source Code:arch\x86\kernel\cpu\mtrr\cleanup.c |
Create Date:2022-07-28 08:06:42 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
home page | Tree |
Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:mtrr_trim_uncached_memory - trim RAM not covered by MTRRs*@end_pfn: ending page frame number* Some buggy BIOSes don't setup the MTRRs properly for systems with certain* memory configurations
Proto:int __init mtrr_trim_uncached_memory(unsigned long end_pfn)
Type:int
Parameter:
Type | Parameter | Name |
---|---|---|
unsigned long | end_pfn |
879 | highest_pfn = 0 |
889 | If Not is_cpu(INTEL) || disable_mtrr_trim Then Return 0 |
893 | def &= 0xff |
894 | If def != MTRR memory types, which are defined in SDM Then Return 0 |
898 | memset(range_state, 0, size of range_state ) |
899 | When i < num_var_ranges cycle |
907 | When i < num_var_ranges cycle |
909 | If type != MTRR_TYPE_WRBACK Then Continue |
913 | If highest_pfn < base + size Then highest_pfn = base + size |
918 | If Not highest_pfn Then |
919 | pr_info("CPU MTRRs all blank - virtualized system.\n") |
920 | Return 0 |
925 | When i < num_var_ranges cycle |
927 | If type >= MTRR_NUM_TYPES Then Continue |
930 | If Not size Then type = MTRR_NUM_TYPES |
936 | If Not num[MTRR_TYPE_WRBACK] Then Return 0 |
940 | If num[MTRR_TYPE_WRBACK] + num[MTRR memory types, which are defined in SDM ] != num_var_ranges - num[MTRR_NUM_TYPES] Then Return 0 |
945 | nr_range = 0 |
946 | If mtrr_tom2 Then |
947 | start = 1ULL << 32 - PAGE_SHIFT determines the page size |
949 | If highest_pfn < end Then highest_pfn = end |
951 | nr_range++ |
953 | nr_range = x86_get_mtrr_mem_range(range, nr_range, 0, 0) |
956 | total_trim_size = 0 |
957 | If start Then total_trim_size += real_trim_memory(0, start) |
962 | If end < start Then total_trim_size += real_trim_memory(end, start) |
969 | If end < end_pfn Then total_trim_size += real_trim_memory(end, end_pfn) |
973 | If total_trim_size Then |
974 | pr_warn("WARNING: BIOS bug: CPU MTRRs don't cover all of memory, losing %lluMB of RAM.\n", total_trim_size >> 20) |
977 | If Not changed_by_mtrr_cleanup Then WARN_ON(1) |
980 | pr_info("update e820 for mtrr\n") |
981 | e820__update_table_print() |
983 | Return 1 |
986 | Return 0 |
Source code conversion tool public plug-in interface | X |
---|---|
Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |