diff for duplicates of <87d1ryfd94.fsf@linux.vnet.ibm.com> diff --git a/a/1.txt b/N1/1.txt index ae1821e..1590abf 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -3,24 +3,20 @@ Balbir Singh <bsingharora@gmail.com> writes: >> Now we can't depend for mm_cpumask, a parallel find_linux_pte_hugepte >> can happen outside that. Now i had a variant for kick_all_cpus_sync that >> ignored idle cpus. But then that needs more verification. ->>=20 +>> >> http://article.gmane.org/gmane.linux.ports.ppc.embedded/81105 > Can be racy as a CPU moves from non-idle to idle > > In > ->> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0pmd_hugepage_update(vma->vm_mm, address, = -pmdp, ~0UL, 0); ->> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0/* ->> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0* This ensures that generic code th= -at rely on IRQ disabling ->> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0* to prevent a parallel THP split w= -ork as expected. ->> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0*/ ->> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0kick_all_cpus_sync(); +>> + pmd_hugepage_update(vma->vm_mm, address, pmdp, ~0UL, 0); +>> + /* +>> + * This ensures that generic code that rely on IRQ disabling +>> + * to prevent a parallel THP split work as expected. +>> + */ +>> + kick_all_cpus_sync(); > -> pmdp_invalidate()->pmd_hugepage_update() can still run in parallel with= -=C2=A0 +> pmdp_invalidate()->pmd_hugepage_update() can still run in parallel with > find_linux_pte_or_hugepte() and race.. Am I missing something? > @@ -32,3 +28,9 @@ pmd_hugepage_update(_PAGE_PRESENT), we wait for the caller to finish the usage (via kick()). Or they bail out after finding _PAGE_PRESENT cleared. -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> diff --git a/a/content_digest b/N1/content_digest index 6fd88d9..bdfcf5a 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -22,24 +22,20 @@ ">> Now we can't depend for mm_cpumask, a parallel find_linux_pte_hugepte\n" ">> can happen outside that. Now i had a variant for kick_all_cpus_sync that\n" ">> ignored idle cpus. But then that needs more verification.\n" - ">>=20\n" + ">> \n" ">> http://article.gmane.org/gmane.linux.ports.ppc.embedded/81105\n" "> Can be racy as a CPU moves from non-idle to idle\n" ">\n" "> In\n" ">\n" - ">> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0pmd_hugepage_update(vma->vm_mm, address, =\n" - "pmdp, ~0UL, 0);\n" - ">> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0/*\n" - ">> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0* This ensures that generic code th=\n" - "at rely on IRQ disabling\n" - ">> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0* to prevent a parallel THP split w=\n" - "ork as expected.\n" - ">> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0*/\n" - ">> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0kick_all_cpus_sync();\n" + ">> +\302\240\302\240\302\240\302\240\302\240pmd_hugepage_update(vma->vm_mm, address, pmdp, ~0UL, 0);\n" + ">> +\302\240\302\240\302\240\302\240\302\240/*\n" + ">> +\302\240\302\240\302\240\302\240\302\240\302\240* This ensures that generic code that rely on IRQ disabling\n" + ">> +\302\240\302\240\302\240\302\240\302\240\302\240* to prevent a parallel THP split work as expected.\n" + ">> +\302\240\302\240\302\240\302\240\302\240\302\240*/\n" + ">> +\302\240\302\240\302\240\302\240\302\240kick_all_cpus_sync();\n" ">\n" - "> pmdp_invalidate()->pmd_hugepage_update() can still run in parallel with=\n" - "=C2=A0\n" + "> pmdp_invalidate()->pmd_hugepage_update() can still run in parallel with\302\240\n" "> find_linux_pte_or_hugepte() and race.. Am I missing something?\n" ">\n" "\n" @@ -50,6 +46,12 @@ "pmd_hugepage_update(_PAGE_PRESENT), we wait for the caller to finish the\n" "usage (via kick()). Or they bail out after finding _PAGE_PRESENT cleared.\n" "\n" - -aneesh + "-aneesh\n" + "\n" + "--\n" + "To unsubscribe, send a message with 'unsubscribe linux-mm' in\n" + "the body to majordomo@kvack.org. For more info on Linux MM,\n" + "see: http://www.linux-mm.org/ .\n" + "Don't email: <a href=mailto:\"dont@kvack.org\"> email@kvack.org </a>" -494cda7ff513dad6f73f1a432597926b9a0ebbc3238f90cbfd11b1a78ff277b9 +820c5c6bb49b1b0fdebe788a47600085086ac95914b9dde85ec3b8f3bcd9ed08
diff --git a/a/1.txt b/N2/1.txt index ae1821e..3b43ab4 100644 --- a/a/1.txt +++ b/N2/1.txt @@ -3,24 +3,20 @@ Balbir Singh <bsingharora@gmail.com> writes: >> Now we can't depend for mm_cpumask, a parallel find_linux_pte_hugepte >> can happen outside that. Now i had a variant for kick_all_cpus_sync that >> ignored idle cpus. But then that needs more verification. ->>=20 +>> >> http://article.gmane.org/gmane.linux.ports.ppc.embedded/81105 > Can be racy as a CPU moves from non-idle to idle > > In > ->> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0pmd_hugepage_update(vma->vm_mm, address, = -pmdp, ~0UL, 0); ->> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0/* ->> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0* This ensures that generic code th= -at rely on IRQ disabling ->> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0* to prevent a parallel THP split w= -ork as expected. ->> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0*/ ->> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0kick_all_cpus_sync(); +>> + pmd_hugepage_update(vma->vm_mm, address, pmdp, ~0UL, 0); +>> + /* +>> + * This ensures that generic code that rely on IRQ disabling +>> + * to prevent a parallel THP split work as expected. +>> + */ +>> + kick_all_cpus_sync(); > -> pmdp_invalidate()->pmd_hugepage_update() can still run in parallel with= -=C2=A0 +> pmdp_invalidate()->pmd_hugepage_update() can still run in parallel with > find_linux_pte_or_hugepte() and race.. Am I missing something? > diff --git a/a/content_digest b/N2/content_digest index 6fd88d9..249611c 100644 --- a/a/content_digest +++ b/N2/content_digest @@ -22,24 +22,20 @@ ">> Now we can't depend for mm_cpumask, a parallel find_linux_pte_hugepte\n" ">> can happen outside that. Now i had a variant for kick_all_cpus_sync that\n" ">> ignored idle cpus. But then that needs more verification.\n" - ">>=20\n" + ">> \n" ">> http://article.gmane.org/gmane.linux.ports.ppc.embedded/81105\n" "> Can be racy as a CPU moves from non-idle to idle\n" ">\n" "> In\n" ">\n" - ">> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0pmd_hugepage_update(vma->vm_mm, address, =\n" - "pmdp, ~0UL, 0);\n" - ">> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0/*\n" - ">> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0* This ensures that generic code th=\n" - "at rely on IRQ disabling\n" - ">> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0* to prevent a parallel THP split w=\n" - "ork as expected.\n" - ">> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0*/\n" - ">> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0kick_all_cpus_sync();\n" + ">> +\302\240\302\240\302\240\302\240\302\240pmd_hugepage_update(vma->vm_mm, address, pmdp, ~0UL, 0);\n" + ">> +\302\240\302\240\302\240\302\240\302\240/*\n" + ">> +\302\240\302\240\302\240\302\240\302\240\302\240* This ensures that generic code that rely on IRQ disabling\n" + ">> +\302\240\302\240\302\240\302\240\302\240\302\240* to prevent a parallel THP split work as expected.\n" + ">> +\302\240\302\240\302\240\302\240\302\240\302\240*/\n" + ">> +\302\240\302\240\302\240\302\240\302\240kick_all_cpus_sync();\n" ">\n" - "> pmdp_invalidate()->pmd_hugepage_update() can still run in parallel with=\n" - "=C2=A0\n" + "> pmdp_invalidate()->pmd_hugepage_update() can still run in parallel with\302\240\n" "> find_linux_pte_or_hugepte() and race.. Am I missing something?\n" ">\n" "\n" @@ -52,4 +48,4 @@ "\n" -aneesh -494cda7ff513dad6f73f1a432597926b9a0ebbc3238f90cbfd11b1a78ff277b9 +7e754013c1947d2625facc027fe4e8451a3743931fa831e5f81b615a30370996
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.