Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1516664 > unrolled thread
| Started by | Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> |
|---|---|
| First post | 2016-11-08 00:40 +0100 |
| Last post | 2016-11-11 12:20 +0100 |
| Articles | 4 — 3 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
[PATCH v2 01/12] mm: x86: move _PAGE_SWP_SOFT_DIRTY from bit 7 to bit 6 Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> - 2016-11-08 00:40 +0100
Re: [PATCH v2 01/12] mm: x86: move _PAGE_SWP_SOFT_DIRTY from bit 7 to bit 6 Dave Hansen <dave.hansen@intel.com> - 2016-11-11 00:40 +0100
Re: [PATCH v2 01/12] mm: x86: move _PAGE_SWP_SOFT_DIRTY from bit 7 to bit 6 Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> - 2016-11-11 02:20 +0100
Re: [PATCH v2 01/12] mm: x86: move _PAGE_SWP_SOFT_DIRTY from bit 7 to bit 6 "Kirill A. Shutemov" <kirill@shutemov.name> - 2016-11-11 12:20 +0100
| From | Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> |
|---|---|
| Date | 2016-11-08 00:40 +0100 |
| Subject | [PATCH v2 01/12] mm: x86: move _PAGE_SWP_SOFT_DIRTY from bit 7 to bit 6 |
| Message-ID | <sB1Ga-1xZ-15@gated-at.bofh.it> |
pmd_present() checks _PAGE_PSE along with _PAGE_PRESENT to avoid false negative return when it races with thp spilt (during which _PAGE_PRESENT is temporary cleared.) I don't think that dropping _PAGE_PSE check in pmd_present() works well because it can hurt optimization of tlb handling in thp split. In the current kernel, bit 6 is not used in non-present format because nonlinear file mapping is obsolete, so let's move _PAGE_SWP_SOFT_DIRTY to that bit. Bit 7 is used as reserved (always clear), so please don't use it for other purpose. Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> --- arch/x86/include/asm/pgtable_types.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git v4.9-rc2-mmotm-2016-10-27-18-27/arch/x86/include/asm/pgtable_types.h v4.9-rc2-mmotm-2016-10-27-18-27_patched/arch/x86/include/asm/pgtable_types.h index 8b4de22..89e88f1 100644 --- v4.9-rc2-mmotm-2016-10-27-18-27/arch/x86/include/asm/pgtable_types.h +++ v4.9-rc2-mmotm-2016-10-27-18-27_patched/arch/x86/include/asm/pgtable_types.h @@ -98,14 +98,14 @@ * Tracking soft dirty bit when a page goes to a swap is tricky. * We need a bit which can be stored in pte _and_ not conflict * with swap entry format. On x86 bits 6 and 7 are *not* involved - * into swap entry computation, but bit 6 is used for nonlinear - * file mapping, so we borrow bit 7 for soft dirty tracking. + * into swap entry computation, but bit 7 is used for thp migration, + * so we borrow bit 6 for soft dirty tracking. * * Please note that this bit must be treated as swap dirty page - * mark if and only if the PTE has present bit clear! + * mark if and only if the PTE/PMD has present bit clear! */ #ifdef CONFIG_MEM_SOFT_DIRTY -#define _PAGE_SWP_SOFT_DIRTY _PAGE_PSE +#define _PAGE_SWP_SOFT_DIRTY _PAGE_DIRTY #else #define _PAGE_SWP_SOFT_DIRTY (_AT(pteval_t, 0)) #endif -- 2.7.0
[toc] | [next] | [standalone]
| From | Dave Hansen <dave.hansen@intel.com> |
|---|---|
| Date | 2016-11-11 00:40 +0100 |
| Subject | Re: [PATCH v2 01/12] mm: x86: move _PAGE_SWP_SOFT_DIRTY from bit 7 to bit 6 |
| Message-ID | <sC76N-4It-3@gated-at.bofh.it> |
| In reply to | #1516664 |
On 11/07/2016 03:31 PM, Naoya Horiguchi wrote: > pmd_present() checks _PAGE_PSE along with _PAGE_PRESENT to avoid false negative > return when it races with thp spilt (during which _PAGE_PRESENT is temporary > cleared.) I don't think that dropping _PAGE_PSE check in pmd_present() works > well because it can hurt optimization of tlb handling in thp split. > In the current kernel, bit 6 is not used in non-present format because nonlinear > file mapping is obsolete, so let's move _PAGE_SWP_SOFT_DIRTY to that bit. > Bit 7 is used as reserved (always clear), so please don't use it for other > purpose. ... > #ifdef CONFIG_MEM_SOFT_DIRTY > -#define _PAGE_SWP_SOFT_DIRTY _PAGE_PSE > +#define _PAGE_SWP_SOFT_DIRTY _PAGE_DIRTY > #else > #define _PAGE_SWP_SOFT_DIRTY (_AT(pteval_t, 0)) > #endif I'm not sure this works. Take a look at commit 00839ee3b29 and the erratum it works around. I _think_ this means that a system affected by the erratum might see an erroneous _PAGE_SWP_SOFT_DIRTY/_PAGE_DIRTY get set in swap ptes. There are much worse things that can happen, but I don't think bits 5 (Accessed) and 6 (Dirty) are good choices since they're affected by the erratum.
[toc] | [prev] | [next] | [standalone]
| From | Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> |
|---|---|
| Date | 2016-11-11 02:20 +0100 |
| Subject | Re: [PATCH v2 01/12] mm: x86: move _PAGE_SWP_SOFT_DIRTY from bit 7 to bit 6 |
| Message-ID | <sC8Fz-5PH-9@gated-at.bofh.it> |
| In reply to | #1519442 |
On Thu, Nov 10, 2016 at 03:29:51PM -0800, Dave Hansen wrote: > On 11/07/2016 03:31 PM, Naoya Horiguchi wrote: > > pmd_present() checks _PAGE_PSE along with _PAGE_PRESENT to avoid false negative > > return when it races with thp spilt (during which _PAGE_PRESENT is temporary > > cleared.) I don't think that dropping _PAGE_PSE check in pmd_present() works > > well because it can hurt optimization of tlb handling in thp split. > > In the current kernel, bit 6 is not used in non-present format because nonlinear > > file mapping is obsolete, so let's move _PAGE_SWP_SOFT_DIRTY to that bit. > > Bit 7 is used as reserved (always clear), so please don't use it for other > > purpose. > ... > > #ifdef CONFIG_MEM_SOFT_DIRTY > > -#define _PAGE_SWP_SOFT_DIRTY _PAGE_PSE > > +#define _PAGE_SWP_SOFT_DIRTY _PAGE_DIRTY > > #else > > #define _PAGE_SWP_SOFT_DIRTY (_AT(pteval_t, 0)) > > #endif > > I'm not sure this works. Take a look at commit 00839ee3b29 and the > erratum it works around. I _think_ this means that a system affected by > the erratum might see an erroneous _PAGE_SWP_SOFT_DIRTY/_PAGE_DIRTY get > set in swap ptes. > > There are much worse things that can happen, but I don't think bits 5 > (Accessed) and 6 (Dirty) are good choices since they're affected by the > erratum. Thank you for the information. According to 00839ee3b29, some bits which are safe from the errata are reclaimed, so assigning one of such bits for _PAGE_SWP_SOFT_DIRTY seems to work. And I'll update the description. Thanks, Naoya Horiguchi
[toc] | [prev] | [next] | [standalone]
| From | "Kirill A. Shutemov" <kirill@shutemov.name> |
|---|---|
| Date | 2016-11-11 12:20 +0100 |
| Subject | Re: [PATCH v2 01/12] mm: x86: move _PAGE_SWP_SOFT_DIRTY from bit 7 to bit 6 |
| Message-ID | <sCi2d-3Bo-5@gated-at.bofh.it> |
| In reply to | #1519442 |
On Thu, Nov 10, 2016 at 03:29:51PM -0800, Dave Hansen wrote: > On 11/07/2016 03:31 PM, Naoya Horiguchi wrote: > > pmd_present() checks _PAGE_PSE along with _PAGE_PRESENT to avoid false negative > > return when it races with thp spilt (during which _PAGE_PRESENT is temporary > > cleared.) I don't think that dropping _PAGE_PSE check in pmd_present() works > > well because it can hurt optimization of tlb handling in thp split. > > In the current kernel, bit 6 is not used in non-present format because nonlinear > > file mapping is obsolete, so let's move _PAGE_SWP_SOFT_DIRTY to that bit. > > Bit 7 is used as reserved (always clear), so please don't use it for other > > purpose. > ... > > #ifdef CONFIG_MEM_SOFT_DIRTY > > -#define _PAGE_SWP_SOFT_DIRTY _PAGE_PSE > > +#define _PAGE_SWP_SOFT_DIRTY _PAGE_DIRTY > > #else > > #define _PAGE_SWP_SOFT_DIRTY (_AT(pteval_t, 0)) > > #endif > > I'm not sure this works. Take a look at commit 00839ee3b29 and the > erratum it works around. I _think_ this means that a system affected by > the erratum might see an erroneous _PAGE_SWP_SOFT_DIRTY/_PAGE_DIRTY get > set in swap ptes. But, is it destructive in any way? What is the harm if we mark swap entry dirty by mistake? Pavel? -- Kirill A. Shutemov
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web