]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/kern/hibernate.c
xnu-2050.24.15.tar.gz
[apple/xnu.git] / osfmk / kern / hibernate.c
index c88c0fd1e3c414ee2356a54f804cd5fb568b6a6e..431c4795cfe0008c9cc73a3b50d92626b46d4bc6 100644 (file)
@@ -51,8 +51,7 @@ hibernate_setup(IOHibernateImageHeader * header,
                         boolean_t vmflush,
                        hibernate_page_list_t ** page_list_ret,
                        hibernate_page_list_t ** page_list_wired_ret,
                         boolean_t vmflush,
                        hibernate_page_list_t ** page_list_ret,
                        hibernate_page_list_t ** page_list_wired_ret,
-                       hibernate_page_list_t ** page_list_pal_ret,
-                        boolean_t * encryptedswap)
+                       hibernate_page_list_t ** page_list_pal_ret)
 {
     hibernate_page_list_t * page_list = NULL;
     hibernate_page_list_t * page_list_wired = NULL;
 {
     hibernate_page_list_t * page_list = NULL;
     hibernate_page_list_t * page_list_wired = NULL;
@@ -63,19 +62,19 @@ hibernate_setup(IOHibernateImageHeader * header,
     *page_list_wired_ret = NULL;
        *page_list_pal_ret    = NULL;
     
     *page_list_wired_ret = NULL;
        *page_list_pal_ret    = NULL;
     
-    if (vmflush)
+    if (vmflush && dp_isssd)
         hibernate_flush_memory();
 
         hibernate_flush_memory();
 
-    page_list = hibernate_page_list_allocate();
+    page_list = hibernate_page_list_allocate(TRUE);
     if (!page_list)
         return (KERN_RESOURCE_SHORTAGE);
     if (!page_list)
         return (KERN_RESOURCE_SHORTAGE);
-    page_list_wired = hibernate_page_list_allocate();
+    page_list_wired = hibernate_page_list_allocate(FALSE);
     if (!page_list_wired)
     {
         kfree(page_list, page_list->list_size);
         return (KERN_RESOURCE_SHORTAGE);
     }
     if (!page_list_wired)
     {
         kfree(page_list, page_list->list_size);
         return (KERN_RESOURCE_SHORTAGE);
     }
-    page_list_pal = hibernate_page_list_allocate();
+    page_list_pal = hibernate_page_list_allocate(FALSE);
     if (!page_list_pal)
     {
         kfree(page_list, page_list->list_size);
     if (!page_list_pal)
     {
         kfree(page_list, page_list->list_size);
@@ -83,8 +82,6 @@ hibernate_setup(IOHibernateImageHeader * header,
         return (KERN_RESOURCE_SHORTAGE);
     }
 
         return (KERN_RESOURCE_SHORTAGE);
     }
 
-    *encryptedswap = dp_encryption;
-
     // pages we could force out to reduce hibernate image size
     gobble_count = (uint32_t)((((uint64_t) page_list->page_count) * ((uint64_t) free_page_ratio)) / 100);
 
     // pages we could force out to reduce hibernate image size
     gobble_count = (uint32_t)((((uint64_t) page_list->page_count) * ((uint64_t) free_page_ratio)) / 100);
 
@@ -92,14 +89,16 @@ hibernate_setup(IOHibernateImageHeader * header,
 
     hibernate_processor_setup(header);
 
 
     hibernate_processor_setup(header);
 
-    HIBLOG("hibernate_alloc_pages flags %08x, gobbling %d pages\n", 
-           header->processorFlags, gobble_count);
-
     if (gobble_count)
        hibernate_gobble_pages(gobble_count, free_page_time);
 
     if (gobble_count)
        hibernate_gobble_pages(gobble_count, free_page_time);
 
-    *page_list_ret       = page_list;
-    *page_list_wired_ret = page_list_wired;
+    HIBLOG("hibernate_alloc_pages act %d, inact %d, anon %d, throt %d, spec %d, wire %d, wireinit %d\n",
+           vm_page_active_count, vm_page_inactive_count, 
+           vm_page_anonymous_count,  vm_page_throttled_count, vm_page_speculative_count,
+           vm_page_wire_count, vm_page_wire_count_initial);
+
+    *page_list_ret        = page_list;
+    *page_list_wired_ret  = page_list_wired;
     *page_list_pal_ret    = page_list_pal;
 
     return (KERN_SUCCESS);
     *page_list_pal_ret    = page_list_pal;
 
     return (KERN_SUCCESS);