summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKichan Kwon <k_c.kwon@samsung.com>2018-03-08 14:54:04 +0900
committerKichan Kwon <k_c.kwon@samsung.com>2018-03-08 15:02:12 +0900
commit4118dfe8994d8023d450ae46debd3259e0e9f332 (patch)
tree00169afc3932dd15fcf42632186c04160ce65844
parent09c2980dd1855b265d9d8f74102d759d5f932e0f (diff)
downloadresourced-4118dfe8994d8023d450ae46debd3259e0e9f332.tar.gz
resourced-4118dfe8994d8023d450ae46debd3259e0e9f332.tar.bz2
resourced-4118dfe8994d8023d450ae46debd3259e0e9f332.zip
memory : ignore empty zone
- Some devices make a zone but don't allocate any pages for it - In addition, fix divided by zero Change-Id: Ifb11ce58384b0731706f5366a491ddb9f422fc90 Signed-off-by: Kichan Kwon <k_c.kwon@samsung.com>
-rw-r--r--src/memory/compaction.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/memory/compaction.c b/src/memory/compaction.c
index ffa67d58..357ae075 100644
--- a/src/memory/compaction.c
+++ b/src/memory/compaction.c
@@ -280,7 +280,7 @@ static void compact_validate_zone(struct zone_info *zone,
for (order = req_order; order <= MAX_PAGE_ORDER; ++order)
available_pages += zone->pages_per_order[order] << order;
- if ((1000 - (available_pages * 1000 / zone->free_pages)) >= frag_level)
+ if (zone->free_pages > 0 && (1000 - (available_pages * 1000 / zone->free_pages)) >= frag_level)
current_frag_map |= 1 << req_order;
}
@@ -324,6 +324,13 @@ static void compaction_verify(struct compact_control *compact)
for (n = 0; n < mem_info->zone_count; ++n) {
struct zone_info *zone = &mem_info->zones[n];
+ /*
+ * Some devices make a zone but don't allocate any pages for it.
+ * We can ignore these empty zones.
+ */
+ if (zone->managed <= 0)
+ continue;
+
compaction_verify_zone(compact, zone);
if (zone->frag_warn & ZONE_FRAG_WARN_RAISE) {
/*