From: Tkhai Kirill <tkhai@yandex.ru>
To: sparclinux@vger.kernel.org
Subject: Re: Re: [PATCH]sparc32: Fix impossibility of swap disabling after intensive swap using
Date: Thu, 27 May 2010 20:28:03 +0000 [thread overview]
Message-ID: <110641274992083@web61.yandex.ru> (raw)
In-Reply-To: <20100429.165815.235700454.davem@davemloft.net>
Yes, it solves the problem.
26.05.10, 10:38, "David Miller" <davem@davemloft.net>:
> From: Тхай Кирилл
> Date: Fri, 30 Apr 2010 09:57:19 +0400
>
> > I can mistake, but it seems to me, that pte_none is more wide check,
> > than belonging pte to mmu device.
>
> Not exactly. pte_none() should be true if the PTE encodes nothing,
> not a swap entry, not a MMU PTE, nothing at all.
>
> > In other case none_mask must be something like 0xF0000004, because
> > hardware ignores ptes with zeroed lower two bits.
>
> It seems that the correct thing to do is to kill this none_mask thing
> entirely.
>
> Could you try this patch instead of your's?
>
> Thanks!
>
> --
> sparc32: Kill none_mask, it's bogus.
>
> For some reason, the pte_none() calculation for srmmu sparc32
> chips was masking out the top 4 bits. That doesn't make any
> sense, as those are just some of the physical bits of the PTE
> encoding.
>
> Furthermore, this mistake breaks things when the offset of of a swap
> entry has a large enough offset as reported by Тхай Кирилл.
>
> Sun4c always set it to zero, so it's really completely useless,
> kill it.
>
> Reported-by: Тхай Кирилл
> Signed-off-by: David S. Miller
> ---
> arch/sparc/include/asm/pgtable_32.h | 5 ++---
> arch/sparc/mm/srmmu.c | 2 --
> arch/sparc/mm/sun4c.c | 3 ---
> 3 files changed, 2 insertions(+), 8 deletions(-)
>
> diff --git a/arch/sparc/include/asm/pgtable_32.h b/arch/sparc/include/asm/pgtable_32.h
> index 77f906d..0ece77f 100644
> --- a/arch/sparc/include/asm/pgtable_32.h
> +++ b/arch/sparc/include/asm/pgtable_32.h
> @@ -142,13 +142,12 @@ BTFIXUPDEF_CALL_CONST(unsigned long, pgd_page_vaddr, pgd_t)
> #define pmd_page(pmd) BTFIXUP_CALL(pmd_page)(pmd)
> #define pgd_page_vaddr(pgd) BTFIXUP_CALL(pgd_page_vaddr)(pgd)
>
> -BTFIXUPDEF_SETHI(none_mask)
> BTFIXUPDEF_CALL_CONST(int, pte_present, pte_t)
> BTFIXUPDEF_CALL(void, pte_clear, pte_t *)
>
> static inline int pte_none(pte_t pte)
> {
> - return !(pte_val(pte) & ~BTFIXUP_SETHI(none_mask));
> + return !pte_val(pte);
> }
>
> #define pte_present(pte) BTFIXUP_CALL(pte_present)(pte)
> @@ -160,7 +159,7 @@ BTFIXUPDEF_CALL(void, pmd_clear, pmd_t *)
>
> static inline int pmd_none(pmd_t pmd)
> {
> - return !(pmd_val(pmd) & ~BTFIXUP_SETHI(none_mask));
> + return !pmd_val(pmd);
> }
>
> #define pmd_bad(pmd) BTFIXUP_CALL(pmd_bad)(pmd)
> diff --git a/arch/sparc/mm/srmmu.c b/arch/sparc/mm/srmmu.c
> index f5f75a5..b0b43aa 100644
> --- a/arch/sparc/mm/srmmu.c
> +++ b/arch/sparc/mm/srmmu.c
> @@ -2215,8 +2215,6 @@ void __init ld_mmu_srmmu(void)
> BTFIXUPSET_CALL(pmd_page, srmmu_pmd_page, BTFIXUPCALL_NORM);
> BTFIXUPSET_CALL(pgd_page_vaddr, srmmu_pgd_page, BTFIXUPCALL_NORM);
>
> - BTFIXUPSET_SETHI(none_mask, 0xF0000000);
> -
> BTFIXUPSET_CALL(pte_present, srmmu_pte_present, BTFIXUPCALL_NORM);
> BTFIXUPSET_CALL(pte_clear, srmmu_pte_clear, BTFIXUPCALL_SWAPO0G0);
>
> diff --git a/arch/sparc/mm/sun4c.c b/arch/sparc/mm/sun4c.c
> index cf38846..4289f90 100644
> --- a/arch/sparc/mm/sun4c.c
> +++ b/arch/sparc/mm/sun4c.c
> @@ -2087,9 +2087,6 @@ void __init ld_mmu_sun4c(void)
>
> BTFIXUPSET_CALL(set_pte, sun4c_set_pte, BTFIXUPCALL_STO1O0);
>
> - /* The 2.4.18 code does not set this on sun4c, how does it work? XXX */
> - /* BTFIXUPSET_SETHI(none_mask, 0x00000000); */ /* Defaults to zero? */
> -
> BTFIXUPSET_CALL(pte_pfn, sun4c_pte_pfn, BTFIXUPCALL_NORM);
> #if 0 /* PAGE_SHIFT <= 12 */ /* Eek. Investigate. XXX */
> BTFIXUPSET_CALL(pmd_page, sun4c_pmd_page, BTFIXUPCALL_ANDNINT(PAGE_SIZE - 1));
>
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2010-05-27 20:28 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-29 23:58 [PATCH]sparc32: Fix impossibility of swap disabling after David Miller
2010-04-30 5:57 ` Re: [PATCH]sparc32: Fix impossibility of swap disabling after intensive swap using Тхай Кирилл
2010-04-30 6:04 ` Tkhai Kirill
2010-05-26 6:38 ` [PATCH]sparc32: Fix impossibility of swap disabling after David Miller
2010-05-27 20:28 ` Tkhai Kirill [this message]
2010-05-27 20:41 ` David Miller
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=110641274992083@web61.yandex.ru \
--to=tkhai@yandex.ru \
--cc=sparclinux@vger.kernel.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.