From: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
To: Paul Mackerras <paulus@samba.org>
Cc: linuxppc-dev@lists.ozlabs.org, linux-mm@kvack.org
Subject: Re: [PATCH -V1 06/24] powerpc: Reduce PTE table memory wastage
Date: Wed, 06 Mar 2013 10:33:16 +0530 [thread overview]
Message-ID: <877gll86i3.fsf@linux.vnet.ibm.com> (raw)
In-Reply-To: <20130305021219.GC2888@iris.ozlabs.ibm.com>
Paul Mackerras <paulus@samba.org> writes:
> On Mon, Mar 04, 2013 at 04:28:42PM +0530, Aneesh Kumar K.V wrote:
>> The last one that ends up doing atomic_xor_bits which cause the mapcount
>> to go zero, will take the page off the list and free the page.
>
> No, look at the example again. page_table_free_rcu() won't take it
> off the list because it uses the (mask & FRAG_MASK) == 0 test, which
> fails (one fragment is still in use). page_table_free() won't take it
> off the list because it uses the mask == 0 test, which also fails (one
> fragment is still waiting for the RCU grace period). Finally,
> __page_table_free_rcu() doesn't take it off the list, it just frees
> the page. Oops. :)
How about the below
--- a/arch/powerpc/mm/pgtable_64.c
+++ b/arch/powerpc/mm/pgtable_64.c
@@ -425,7 +425,7 @@ void page_table_free(struct mm_struct *mm, unsigned long *table)
bit = 1 << ((__pa(table) & ~PAGE_MASK) / PTE_FRAG_SIZE);
spin_lock(&mm->page_table_lock);
mask = atomic_xor_bits(&page->_mapcount, bit);
- if (mask == 0)
+ if (!(mask & FRAG_MASK))
list_del(&page->lru);
else if (mask & FRAG_MASK) {
/*
@@ -446,7 +446,7 @@ void page_table_free(struct mm_struct *mm, unsigned long *table)
ie, we always remove the page from the list, when the lower half is
zero or lower half is FRAG_MASK. We free the page when _mapcount is 0.
-aneesh
WARNING: multiple messages have this Message-ID (diff)
From: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
To: Paul Mackerras <paulus@samba.org>
Cc: benh@kernel.crashing.org, linuxppc-dev@lists.ozlabs.org,
linux-mm@kvack.org
Subject: Re: [PATCH -V1 06/24] powerpc: Reduce PTE table memory wastage
Date: Wed, 06 Mar 2013 10:33:16 +0530 [thread overview]
Message-ID: <877gll86i3.fsf@linux.vnet.ibm.com> (raw)
In-Reply-To: <20130305021219.GC2888@iris.ozlabs.ibm.com>
Paul Mackerras <paulus@samba.org> writes:
> On Mon, Mar 04, 2013 at 04:28:42PM +0530, Aneesh Kumar K.V wrote:
>> The last one that ends up doing atomic_xor_bits which cause the mapcount
>> to go zero, will take the page off the list and free the page.
>
> No, look at the example again. page_table_free_rcu() won't take it
> off the list because it uses the (mask & FRAG_MASK) == 0 test, which
> fails (one fragment is still in use). page_table_free() won't take it
> off the list because it uses the mask == 0 test, which also fails (one
> fragment is still waiting for the RCU grace period). Finally,
> __page_table_free_rcu() doesn't take it off the list, it just frees
> the page. Oops. :)
How about the below
--- a/arch/powerpc/mm/pgtable_64.c
+++ b/arch/powerpc/mm/pgtable_64.c
@@ -425,7 +425,7 @@ void page_table_free(struct mm_struct *mm, unsigned long *table)
bit = 1 << ((__pa(table) & ~PAGE_MASK) / PTE_FRAG_SIZE);
spin_lock(&mm->page_table_lock);
mask = atomic_xor_bits(&page->_mapcount, bit);
- if (mask == 0)
+ if (!(mask & FRAG_MASK))
list_del(&page->lru);
else if (mask & FRAG_MASK) {
/*
@@ -446,7 +446,7 @@ void page_table_free(struct mm_struct *mm, unsigned long *table)
ie, we always remove the page from the list, when the lower half is
zero or lower half is FRAG_MASK. We free the page when _mapcount is 0.
-aneesh
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2013-03-06 5:03 UTC|newest]
Thread overview: 90+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-26 8:04 [PATCH -V1 00/24] THP support for PPC64 Aneesh Kumar K.V
2013-02-26 8:04 ` Aneesh Kumar K.V
2013-02-26 8:04 ` [PATCH -V1 01/24] powerpc: Use signed formatting when printing error Aneesh Kumar K.V
2013-02-26 8:04 ` Aneesh Kumar K.V
2013-02-26 8:04 ` [PATCH -V1 02/24] powerpc: Save DAR and DSISR in pt_regs on MCE Aneesh Kumar K.V
2013-02-26 8:04 ` Aneesh Kumar K.V
2013-02-26 8:04 ` [PATCH -V1 03/24] powerpc: Don't hard code the size of pte page Aneesh Kumar K.V
2013-02-26 8:04 ` Aneesh Kumar K.V
2013-02-27 23:09 ` Paul Mackerras
2013-02-27 23:09 ` Paul Mackerras
2013-02-26 8:04 ` [PATCH -V1 04/24] powerpc: Reduce the PTE_INDEX_SIZE Aneesh Kumar K.V
2013-02-26 8:04 ` Aneesh Kumar K.V
2013-02-26 8:04 ` [PATCH -V1 05/24] powerpc: Move the pte free routines from common header Aneesh Kumar K.V
2013-02-26 8:04 ` Aneesh Kumar K.V
2013-02-28 8:36 ` Paul Mackerras
2013-02-28 8:36 ` Paul Mackerras
2013-02-26 8:04 ` [PATCH -V1 06/24] powerpc: Reduce PTE table memory wastage Aneesh Kumar K.V
2013-02-26 8:04 ` Aneesh Kumar K.V
2013-03-04 4:58 ` Paul Mackerras
2013-03-04 4:58 ` Paul Mackerras
2013-03-04 10:58 ` Aneesh Kumar K.V
2013-03-04 10:58 ` Aneesh Kumar K.V
2013-03-04 23:36 ` Benjamin Herrenschmidt
2013-03-04 23:36 ` Benjamin Herrenschmidt
2013-03-06 4:01 ` Aneesh Kumar K.V
2013-03-06 4:01 ` Aneesh Kumar K.V
2013-03-05 2:12 ` Paul Mackerras
2013-03-05 2:12 ` Paul Mackerras
2013-03-06 4:08 ` Aneesh Kumar K.V
2013-03-06 4:08 ` Aneesh Kumar K.V
2013-03-06 5:03 ` Aneesh Kumar K.V [this message]
2013-03-06 5:03 ` Aneesh Kumar K.V
2013-02-26 8:04 ` [PATCH -V1 07/24] powerpc: Add size argument to pgtable_cache_add Aneesh Kumar K.V
2013-02-26 8:04 ` Aneesh Kumar K.V
2013-03-04 5:13 ` Paul Mackerras
2013-03-04 5:13 ` Paul Mackerras
2013-03-04 11:02 ` Aneesh Kumar K.V
2013-03-04 11:02 ` Aneesh Kumar K.V
2013-03-05 1:50 ` Paul Mackerras
2013-03-05 1:50 ` Paul Mackerras
2013-03-06 4:23 ` Aneesh Kumar K.V
2013-03-06 4:23 ` Aneesh Kumar K.V
2013-02-26 8:04 ` [PATCH -V1 08/24] powerpc: Use encode avpn where we need only avpn values Aneesh Kumar K.V
2013-02-26 8:04 ` Aneesh Kumar K.V
2013-03-04 5:15 ` Paul Mackerras
2013-03-04 5:15 ` Paul Mackerras
2013-02-26 8:04 ` [PATCH -V1 09/24] powerpc: Decode the pte-lp-encoding bits correctly Aneesh Kumar K.V
2013-02-26 8:04 ` Aneesh Kumar K.V
2013-03-04 5:48 ` Paul Mackerras
2013-03-04 5:48 ` Paul Mackerras
2013-03-04 11:41 ` Aneesh Kumar K.V
2013-03-04 11:41 ` Aneesh Kumar K.V
2013-03-05 2:02 ` Paul Mackerras
2013-03-05 2:02 ` Paul Mackerras
2013-03-06 4:30 ` Aneesh Kumar K.V
2013-03-06 4:30 ` Aneesh Kumar K.V
2013-03-04 11:52 ` Aneesh Kumar K.V
2013-03-04 11:52 ` Aneesh Kumar K.V
2013-03-04 18:11 ` Aneesh Kumar K.V
2013-03-04 18:11 ` Aneesh Kumar K.V
2013-02-26 8:05 ` [PATCH -V1 10/24] powerpc: Return all the valid pte ecndoing in KVM_PPC_GET_SMMU_INFO ioctl Aneesh Kumar K.V
2013-02-26 8:05 ` Aneesh Kumar K.V
2013-02-26 8:05 ` [PATCH -V1 11/24] powerpc: Update tlbie/tlbiel as per ISA doc Aneesh Kumar K.V
2013-02-26 8:05 ` Aneesh Kumar K.V
2013-02-26 8:05 ` [PATCH -V1 12/24] powerpc: print both base and actual page size on hash failure Aneesh Kumar K.V
2013-02-26 8:05 ` Aneesh Kumar K.V
2013-02-26 8:05 ` [PATCH -V1 13/24] powerpc: Print page size info during boot Aneesh Kumar K.V
2013-02-26 8:05 ` Aneesh Kumar K.V
2013-02-26 8:05 ` [PATCH -V1 14/24] powerpc: Fix hpte_decode to use the correct decoding for page sizes Aneesh Kumar K.V
2013-02-26 8:05 ` Aneesh Kumar K.V
2013-02-26 8:05 ` [PATCH -V1 15/24] mm/THP: HPAGE_SHIFT is not a #define on some arch Aneesh Kumar K.V
2013-02-26 8:05 ` Aneesh Kumar K.V
2013-02-26 8:05 ` [PATCH -V1 16/24] mm/THP: Add pmd args to pgtable deposit and withdraw APIs Aneesh Kumar K.V
2013-02-26 8:05 ` Aneesh Kumar K.V
2013-02-26 8:05 ` [PATCH -V1 17/24] mm/THP: withdraw the pgtable after pmdp related operations Aneesh Kumar K.V
2013-02-26 8:05 ` Aneesh Kumar K.V
2013-02-26 8:05 ` [PATCH -V1 18/24] powerpc/THP: Implement transparent huge pages for ppc64 Aneesh Kumar K.V
2013-02-26 8:05 ` Aneesh Kumar K.V
2013-02-26 8:05 ` [PATCH -V1 19/24] powerpc/THP: Differentiate THP PMD entries from HUGETLB PMD entries Aneesh Kumar K.V
2013-02-26 8:05 ` Aneesh Kumar K.V
2013-02-26 8:05 ` [PATCH -V1 20/24] powerpc/THP: Add code to handle HPTE faults for large pages Aneesh Kumar K.V
2013-02-26 8:05 ` Aneesh Kumar K.V
2013-02-26 8:05 ` [PATCH -V1 21/24] powerpc: Handle huge page in perf callchain Aneesh Kumar K.V
2013-02-26 8:05 ` Aneesh Kumar K.V
2013-02-26 8:05 ` [PATCH -V1 22/24] powerpc/THP: hypervisor require few WIMG bit set Aneesh Kumar K.V
2013-02-26 8:05 ` Aneesh Kumar K.V
2013-02-26 8:05 ` [PATCH -V1 23/24] powerpc/THP: get_user_pages_fast changes Aneesh Kumar K.V
2013-02-26 8:05 ` Aneesh Kumar K.V
2013-02-26 8:05 ` [PATCH -V1 24/24] powerpc/THP: Enable THP on PPC64 Aneesh Kumar K.V
2013-02-26 8:05 ` Aneesh Kumar K.V
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=877gll86i3.fsf@linux.vnet.ibm.com \
--to=aneesh.kumar@linux.vnet.ibm.com \
--cc=linux-mm@kvack.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=paulus@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.