Re: Linux 2.6.22-rc1

andrew hendry
2007-05-15T22:50:42Z

[-- Attachment #1: Type: text/plain, Size: 1078 bytes --]

Yes, putting the extern highstart_pfn back compiles clean for that rand config.

Sorry for the attachment, no access to a patch friendly mailer at work.

Andrew.

On 5/16/07, Linus Torvalds <torvalds@linux-foundation.org> wrote:
>
>
> On Tue, 15 May 2007, andrew hendry wrote:
> >
> > almost, highstart_pfn is used in a few printks
> >
> > arch/i386/mm/discontig.c: In function 'setup_memory':
> > arch/i386/mm/discontig.c:314: error: 'highstart_pfn' undeclared (first
> > use in this function)
> > arch/i386/mm/discontig.c:314: error: (Each undeclared identifier is
> > reported only once
> > arch/i386/mm/discontig.c:314: error: for each function it appears in.)
>
> Gaah. highstart_pfn is declared in <asm/highmem.h>, but that one is
> protected by a
>
> #ifdef CONFIG_HIGHMEM
> #include <asm/highmem.h>
>
> in <linux/highmem.h>, so even though we include highmem.h, we never see
> the declaration.
>
> Your config is insane, but anyway, does it compile if you just add back
> the extra "unnecessary" declaration of highstart_pfn?
>
> Linus
>

[-- Attachment #2: himem.patch --]
[-- Type: text/x-patch, Size: 1274 bytes --]

diff -uprN -X dontdiff a/arch/i386/mm/discontig.c b/arch/i386/mm/discontig.c
--- a/arch/i386/mm/discontig.c 2007-05-15 15:19:49.000000000 +1000
+++ b/arch/i386/mm/discontig.c 2007-05-15 15:35:26.000000000 +1000
@@ -31,6 +31,7 @@
#include <linux/module.h>
#include <linux/kexec.h>
#include <linux/pfn.h>
+#include <linux/swap.h>

#include <asm/e820.h>
#include <asm/setup.h>
@@ -97,14 +98,9 @@ unsigned long node_memmap_size_bytes(int
#endif

extern unsigned long find_max_low_pfn(void);
-extern void find_max_pfn(void);
extern void add_one_highpage_init(struct page *, int, int);

-extern struct e820map e820;
-extern unsigned long highend_pfn, highstart_pfn;
-extern unsigned long max_low_pfn;
-extern unsigned long totalram_pages;
-extern unsigned long totalhigh_pages;
+extern unsigned long highstart_pfn;

#define LARGE_PAGE_BYTES (PTRS_PER_PTE * PAGE_SIZE)

@@ -360,7 +356,9 @@ void __init zone_sizes_init(void)
max_zone_pfns[ZONE_DMA] =
virt_to_phys((char *)MAX_DMA_ADDRESS) >> PAGE_SHIFT;
max_zone_pfns[ZONE_NORMAL] = max_low_pfn;
+#ifdef CONFIG_HIGHMEM
max_zone_pfns[ZONE_HIGHMEM] = highend_pfn;
+#endif
/* If SRAT has not registered memory, register it now */
if (find_max_pfn_with_active_regions() == 0) {
for_each_online_node(nid) {