From: Dave Hansen <haveblue@us.ibm.com>
To: Hugh Dickins <hugh@veritas.com>
Cc: linux-mm <linux-mm@kvack.org>, ak@suse.de
Subject: Re: [patch] kill off ARCH_HAS_ATOMIC_UNSIGNED (take 2)
Date: Fri, 17 Dec 2004 10:27:28 -0800 [thread overview]
Message-ID: <1103308048.4450.123.camel@localhost> (raw)
In-Reply-To: <Pine.LNX.4.44.0412171814050.10470-100000@localhost.localdomain>
[-- Attachment #1: Type: text/plain, Size: 972 bytes --]
On Fri, 2004-12-17 at 10:17, Hugh Dickins wrote:
> On Fri, 17 Dec 2004, Dave Hansen wrote:
> > --- apw2/mm/page_alloc.c~000-CONFIG_ARCH_HAS_ATOMIC_UNSIGNED 2004-12-17 09:19:30.000000000 -0800
> > +++ apw2-dave/mm/page_alloc.c 2004-12-17 09:19:48.000000000 -0800
> > @@ -85,7 +85,7 @@ static void bad_page(const char *functio
> > printk(KERN_EMERG "Bad page state at %s (in process '%s', page %p)\n",
> > function, current->comm, page);
> > printk(KERN_EMERG "flags:0x%0*lx mapping:%p mapcount:%d count:%d\n",
> > - (int)(2*sizeof(page_flags_t)), (unsigned long)page->flags,
> > + (int)(2*sizeof(unsigned long)), (unsigned long)page->flags,
> ^^^^^^^^^^^^^^^
> > page->mapping, page_mapcount(page), page_count(page));
> > printk(KERN_EMERG "Backtrace:\n");
> > dump_stack();
>
> Teensy nit: better not to cast to unsigned long when it's unsigned long.
My built-in s/// got a little carried away. How's this?
-- Dave
[-- Attachment #2: 000-CONFIG_ARCH_HAS_ATOMIC_UNSIGNED.patch --]
[-- Type: text/x-patch, Size: 4475 bytes --]
Andi says that we don't need this on x86_64 any more. Since it
is the only user, let's kill it off completely. BTW, this now
makes 4 free bytes of space in page->flags for all 64-bit
architectures to use. Also get rid of the typedef.
Still compiles on x86.
Signed-off-by: Dave Hansen <haveblue@us.ibm.com>
---
apw2-dave/include/asm-x86_64/bitops.h | 2 --
apw2-dave/include/linux/mm.h | 10 ++--------
apw2-dave/include/linux/mmzone.h | 2 +-
apw2-dave/mm/filemap.c | 2 +-
apw2-dave/mm/page_alloc.c | 2 +-
5 files changed, 5 insertions(+), 13 deletions(-)
diff -puN arch/x86_64/Kconfig~000-CONFIG_ARCH_HAS_ATOMIC_UNSIGNED arch/x86_64/Kconfig
diff -puN include/linux/mm.h~000-CONFIG_ARCH_HAS_ATOMIC_UNSIGNED include/linux/mm.h
--- apw2/include/linux/mm.h~000-CONFIG_ARCH_HAS_ATOMIC_UNSIGNED 2004-12-17 10:23:10.000000000 -0800
+++ apw2-dave/include/linux/mm.h 2004-12-17 10:23:10.000000000 -0800
@@ -216,12 +216,6 @@ struct vm_operations_struct {
struct mmu_gather;
struct inode;
-#ifdef ARCH_HAS_ATOMIC_UNSIGNED
-typedef unsigned page_flags_t;
-#else
-typedef unsigned long page_flags_t;
-#endif
-
/*
* Each physical page in the system has a struct page associated with
* it to keep track of whatever it is we are using the page for at the
@@ -229,7 +223,7 @@ typedef unsigned long page_flags_t;
* a page.
*/
struct page {
- page_flags_t flags; /* Atomic flags, some possibly
+ unsigned long flags; /* Atomic flags, some possibly
* updated asynchronously */
atomic_t _count; /* Usage count, see below. */
atomic_t _mapcount; /* Count of ptes mapped in mms,
@@ -409,7 +403,7 @@ static inline void put_page(struct page
* We'll have up to (MAX_NUMNODES * MAX_NR_ZONES) zones total,
* so we use (MAX_NODES_SHIFT + MAX_ZONES_SHIFT) here to get enough bits.
*/
-#define NODEZONE_SHIFT (sizeof(page_flags_t)*8 - MAX_NODES_SHIFT - MAX_ZONES_SHIFT)
+#define NODEZONE_SHIFT (sizeof(unsigned long)*8 - MAX_NODES_SHIFT - MAX_ZONES_SHIFT)
#define NODEZONE(node, zone) ((node << ZONES_SHIFT) | zone)
static inline unsigned long page_zonenum(struct page *page)
diff -puN include/linux/mmzone.h~000-CONFIG_ARCH_HAS_ATOMIC_UNSIGNED include/linux/mmzone.h
--- apw2/include/linux/mmzone.h~000-CONFIG_ARCH_HAS_ATOMIC_UNSIGNED 2004-12-17 10:23:10.000000000 -0800
+++ apw2-dave/include/linux/mmzone.h 2004-12-17 10:23:10.000000000 -0800
@@ -388,7 +388,7 @@ extern struct pglist_data contig_page_da
#include <asm/mmzone.h>
-#if BITS_PER_LONG == 32 || defined(ARCH_HAS_ATOMIC_UNSIGNED)
+#if BITS_PER_LONG == 32
/*
* with 32 bit page->flags field, we reserve 8 bits for node/zone info.
* there are 3 zones (2 bits) and this leaves 8-2=6 bits for nodes.
diff -puN include/asm-x86_64/bitops.h~000-CONFIG_ARCH_HAS_ATOMIC_UNSIGNED include/asm-x86_64/bitops.h
--- apw2/include/asm-x86_64/bitops.h~000-CONFIG_ARCH_HAS_ATOMIC_UNSIGNED 2004-12-17 10:23:10.000000000 -0800
+++ apw2-dave/include/asm-x86_64/bitops.h 2004-12-17 10:23:10.000000000 -0800
@@ -411,8 +411,6 @@ static __inline__ int ffs(int x)
/* find last set bit */
#define fls(x) generic_fls(x)
-#define ARCH_HAS_ATOMIC_UNSIGNED 1
-
#endif /* __KERNEL__ */
#endif /* _X86_64_BITOPS_H */
diff -puN mm/page_alloc.c~000-CONFIG_ARCH_HAS_ATOMIC_UNSIGNED mm/page_alloc.c
--- apw2/mm/page_alloc.c~000-CONFIG_ARCH_HAS_ATOMIC_UNSIGNED 2004-12-17 10:23:10.000000000 -0800
+++ apw2-dave/mm/page_alloc.c 2004-12-17 10:24:41.000000000 -0800
@@ -85,7 +85,7 @@ static void bad_page(const char *functio
printk(KERN_EMERG "Bad page state at %s (in process '%s', page %p)\n",
function, current->comm, page);
printk(KERN_EMERG "flags:0x%0*lx mapping:%p mapcount:%d count:%d\n",
- (int)(2*sizeof(page_flags_t)), (unsigned long)page->flags,
+ (int)(2*sizeof(unsigned long)), page->flags,
page->mapping, page_mapcount(page), page_count(page));
printk(KERN_EMERG "Backtrace:\n");
dump_stack();
diff -puN mm/filemap.c~000-CONFIG_ARCH_HAS_ATOMIC_UNSIGNED mm/filemap.c
--- apw2/mm/filemap.c~000-CONFIG_ARCH_HAS_ATOMIC_UNSIGNED 2004-12-17 10:23:10.000000000 -0800
+++ apw2-dave/mm/filemap.c 2004-12-17 10:23:10.000000000 -0800
@@ -138,7 +138,7 @@ static int sync_page(void *word)
struct address_space *mapping;
struct page *page;
- page = container_of((page_flags_t *)word, struct page, flags);
+ page = container_of((unsigned long *)word, struct page, flags);
/*
* FIXME, fercrissake. What is this barrier here for?
_
next prev parent reply other threads:[~2004-12-17 18:27 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-12-17 17:26 [patch] kill off ARCH_HAS_ATOMIC_UNSIGNED (take 2) Dave Hansen
2004-12-17 18:17 ` Hugh Dickins
2004-12-17 18:27 ` Dave Hansen [this message]
2004-12-17 18:38 ` Hugh Dickins
2004-12-17 23:54 ` Paul Jackson
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=1103308048.4450.123.camel@localhost \
--to=haveblue@us.ibm.com \
--cc=ak@suse.de \
--cc=hugh@veritas.com \
--cc=linux-mm@kvack.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.