.. | .. |
---|
623 | 623 | { |
---|
624 | 624 | if (zhdr->first_chunks == 0 || zhdr->last_chunks == 0 || |
---|
625 | 625 | zhdr->middle_chunks == 0) { |
---|
626 | | - struct list_head *unbuddied; |
---|
627 | | - int freechunks = num_free_chunks(zhdr); |
---|
| 626 | + struct list_head *unbuddied = get_cpu_ptr(pool->unbuddied); |
---|
628 | 627 | |
---|
629 | | - migrate_disable(); |
---|
630 | | - unbuddied = this_cpu_ptr(pool->unbuddied); |
---|
| 628 | + int freechunks = num_free_chunks(zhdr); |
---|
631 | 629 | spin_lock(&pool->lock); |
---|
632 | 630 | list_add(&zhdr->buddy, &unbuddied[freechunks]); |
---|
633 | 631 | spin_unlock(&pool->lock); |
---|
634 | 632 | zhdr->cpu = smp_processor_id(); |
---|
635 | | - migrate_enable(); |
---|
| 633 | + put_cpu_ptr(pool->unbuddied); |
---|
636 | 634 | } |
---|
637 | 635 | } |
---|
638 | 636 | |
---|
.. | .. |
---|
882 | 880 | int chunks = size_to_chunks(size), i; |
---|
883 | 881 | |
---|
884 | 882 | lookup: |
---|
885 | | - migrate_disable(); |
---|
886 | 883 | /* First, try to find an unbuddied z3fold page. */ |
---|
887 | | - unbuddied = this_cpu_ptr(pool->unbuddied); |
---|
| 884 | + unbuddied = get_cpu_ptr(pool->unbuddied); |
---|
888 | 885 | for_each_unbuddied_list(i, chunks) { |
---|
889 | 886 | struct list_head *l = &unbuddied[i]; |
---|
890 | 887 | |
---|
.. | .. |
---|
902 | 899 | !z3fold_page_trylock(zhdr)) { |
---|
903 | 900 | spin_unlock(&pool->lock); |
---|
904 | 901 | zhdr = NULL; |
---|
905 | | - migrate_enable(); |
---|
| 902 | + put_cpu_ptr(pool->unbuddied); |
---|
906 | 903 | if (can_sleep) |
---|
907 | 904 | cond_resched(); |
---|
908 | 905 | goto lookup; |
---|
.. | .. |
---|
916 | 913 | test_bit(PAGE_CLAIMED, &page->private)) { |
---|
917 | 914 | z3fold_page_unlock(zhdr); |
---|
918 | 915 | zhdr = NULL; |
---|
919 | | - migrate_enable(); |
---|
| 916 | + put_cpu_ptr(pool->unbuddied); |
---|
920 | 917 | if (can_sleep) |
---|
921 | 918 | cond_resched(); |
---|
922 | 919 | goto lookup; |
---|
.. | .. |
---|
931 | 928 | kref_get(&zhdr->refcount); |
---|
932 | 929 | break; |
---|
933 | 930 | } |
---|
934 | | - migrate_enable(); |
---|
| 931 | + put_cpu_ptr(pool->unbuddied); |
---|
935 | 932 | |
---|
936 | 933 | if (!zhdr) { |
---|
937 | 934 | int cpu; |
---|