diff options
author | Kichan Kwon <k_c.kwon@samsung.com> | 2018-03-08 14:54:04 +0900 |
---|---|---|
committer | Kichan Kwon <k_c.kwon@samsung.com> | 2018-03-08 15:02:12 +0900 |
commit | 4118dfe8994d8023d450ae46debd3259e0e9f332 (patch) | |
tree | 00169afc3932dd15fcf42632186c04160ce65844 | |
parent | 09c2980dd1855b265d9d8f74102d759d5f932e0f (diff) | |
download | resourced-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.c | 9 |
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) { /* |