# Can't modprobe fglrx with 2.6.25-gentoo-r6

## Kasumi_Ninja

When I try to modprobe fglrx I get the following error message:

```
# modprobe fglrx

FATAL: Error inserting fglrx (/lib/modules/2.6.25-gentoo-r6/video/fglrx.ko): Unknown symbol in module, or unknown parameter (see dmesg)
```

I reinstalled the ati-drivers (both 8.493 and 8.501) with the new kernel. The kernel doesn't have dri support. I tried all sorts of things to get this working but I'm out of ideas. Who knows how to get fglrx working with 2.6.25?

```
# eselect kernel list

Available kernel symlink targets:

  [1]   linux-2.6.22-gentoo-r9

  [2]   linux-2.6.24-gentoo-r7

  [3]   linux-2.6.24-gentoo-r8

  [4]   linux-2.6.25-gentoo-r6 *
```

```
# dmesg

eth0: no IPv6 routers present

Linux agpgart interface v0.103

fglrx: module license 'Proprietary. (C) 2002 - ATI Technologies, Starnberg, GERMANY' taints kernel.

fglrx: Unknown symbol init_mm

fglrx: Unknown symbol init_mm

mtrr: type mismatch for d0000000,10000000 old: write-back new: write-combining

fglrx: Unknown symbol init_mm

fglrx: Unknown symbol init_mm

fglrx: Unknown symbol init_mm

fglrx: Unknown symbol init_mm

fglrx: Unknown symbol init_mm

fglrx: Unknown symbol init_mm

fglrx: Unknown symbol init_mm

fglrx: Unknown symbol init_mm

fglrx: Unknown symbol init_mm
```

```
# lsmod

Module                  Size  Used by

agpgart                36244  0 

ipv6                  251716  14 

snd_seq_oss            34368  0 

snd_seq_midi_event     11072  1 snd_seq_oss

snd_seq                51312  4 snd_seq_oss,snd_seq_midi_event

snd_seq_device         11788  2 snd_seq_oss,snd_seq

snd_pcm_oss            42592  0 

snd_mixer_oss          19648  1 snd_pcm_oss

snd_hda_intel         317720  1 

thermal                23388  0 

button                 12368  0 

processor              45100  1 thermal

snd_pcm                73732  2 snd_pcm_oss,snd_hda_intel

snd_timer              25992  2 snd_seq,snd_pcm

sky2                   47300  0 

joydev                 15680  0 

iTCO_wdt               15972  0 

serio_raw              10628  0 

pcspkr                  7168  0 

i2c_i801               13328  0 

snd                    55204  10 snd_seq_oss,snd_seq,snd_seq_device,snd_pcm_oss,snd_mixer_oss,snd_hda_intel,snd_pcm,snd_timer

snd_page_alloc         14152  2 snd_hda_intel,snd_pcm

iTCO_vendor_support     7876  1 iTCO_wdt

i2c_core               26900  1 i2c_i801

tg3                   110020  0 

e1000                 111808  0 

xfs                   481828  0 

jfs                   167972  0 

raid10                 27328  0 

dm_bbr                 15776  0 

dm_snapshot            21668  0 

dm_mirror              30340  0 

dm_mod                 61224  3 dm_bbr,dm_snapshot,dm_mirror

sbp2                   26508  0 

ohci1394               33904  0 

ieee1394               87288  2 sbp2,ohci1394

sl811_hcd              15936  0 

usbhid                 44480  0 

ff_memless              9416  1 usbhid

lpfc                  222868  0 

qla2xxx               162796  0 

megaraid_sas           34928  0 

megaraid_mbox          34320  0 

megaraid_mm            14620  1 megaraid_mbox

megaraid               40584  0 

aacraid                67468  0 

sx8                    21068  0 

DAC960                 67720  0 

cciss                  61060  0 

cpqarray               23652  0 

3w_9xxx                34500  0 

3w_xxxx                28960  0 

mptsas                 38920  0 

scsi_transport_sas     32960  1 mptsas

mptfc                  21956  0 

scsi_transport_fc      44676  3 lpfc,qla2xxx,mptfc

scsi_tgt               17800  1 scsi_transport_fc

mptspi                 23752  0 

mptscsih               36800  3 mptsas,mptfc,mptspi

mptbase                74596  4 mptsas,mptfc,mptspi,mptscsih

atp870u                30976  0 

dc395x                 34828  0 

qla1280               119628  0 

imm                    15564  0 

dmx3191d               15872  0 

sym53c8xx              73112  0 

qlogicfas408           11008  0 

advansys               79104  0 

initio                 20932  0 

BusLogic               68404  0 

arcmsr                 26496  0 

aic7xxx               155640  0 

aic79xx               183448  0 

scsi_transport_spi     26624  5 mptspi,dmx3191d,sym53c8xx,aic7xxx,aic79xx

sg                     37108  0 

videobuf_core          21508  0 

pdc_adma               13764  0 

sata_inic162x          16132  0 

sata_mv                27660  0 

sata_qstor             13636  0 

sata_vsc               12740  0 

sata_uli               11460  0 

sata_sis               12612  0 

sata_nv                28680  0 

sata_via               15364  0 

sata_svw               11972  0 

sata_sil24             19844  0 

sata_sil               15048  0 

scsi_wait_scan          5440  0 

pata_pcmcia            18176  0 

pcmcia                 41132  1 pata_pcmcia

b1                     26880  0 

kernelcapi             42452  1 b1

firmware_class         13504  2 qla2xxx,pcmcia

pcmcia_core            41620  2 pata_pcmcia,pcmcia
```

----------

## Neo2

With x86 arch you need to set CONFIG_UNUSED_SYMBOLS=y when building the kernel, because init_mm is a symbol which is going away (is still used by ati-drivers though). This issue doesn't exist on amd64 platform.

----------

## Kasumi_Ninja

 *Neo2 wrote:*   

> With x86 arch you need to set CONFIG_UNUSED_SYMBOLS=y when building the kernel, because init_mm is a symbol which is going away (is still used by ati-drivers though). This issue doesn't exist on amd64 platform.

 

I have that option already enabled but it doesn't work   :Sad: 

```

──────────────────────────────────────────────────────────────────────────────────────────── Kernel hacking ────────────────────────────────────────────────────────────────────────────────────────────┐

  │  Arrow keys navigate the menu.  <Enter> selects submenus --->.  Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes, <M> modularizes features.  Press <Esc><Esc> to exit, <?> for    │  

  │  Help, </> for Search.  Legend: [*] built-in  [ ] excluded  <M> module  < > module capable                                                                                                             │  

  │                                                                                                                                                                                                        │  

  │                                                                                                                                                                                                        │  

  │ ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │  

  │ │                                                               [ ] Show timing information on printks                                                                                               │ │  

  │ │                                                               [*] Enable __deprecated logic                                                                                                        │ │  

  │ │                                                               [*] Enable __must_check logic                                                                                                        │ │  

  │ │                                                               [*] Magic SysRq key                                                                                                                  │ │  

  │ │                                                               [*] Enable unused/obsolete exported symbols                                                                                          │ │  

  │ │                                                               -*- Debug Filesystem                                                                                                                 │ │  

  │ │                                                               [ ] Run 'make headers_check' when building vmlinux                                                                                   │ │  

  │ │                                                               [*] Kernel debugging                                                                                                                 │ │  

  │ │                                                               [*]   Debug shared IRQ handlers                                                                                                      │ │  

  │ │                                                               [*]   Detect Soft Lockups                                                                                                            │ │  

  │ │                                                               [*]   Collect scheduler debugging info                                                                                               │ │  

  │ │                                                               [ ]   Collect scheduler statistics                                                                                                   │ │  

  │ │                                                               [ ]   Collect kernel timers statistics                                                                                               │ │  

  │ │                                                               [ ]   Debug slab memory allocations                                                                                                  │ │  

  │ │                                                               [*] Debug preemptible kernel                                                                                                         │ │  

  │ │                                                               [*] RT Mutex debugging, deadlock detection                                                                                           │ │  

  │ │                                                               [ ] Built-in scriptable tester for rt-mutexes                                                                                        │ │  

  │ │                                                               [ ] Spinlock and rw-lock debugging: basic checks                                                                                     │ │  

  │ │                                                               [*] Mutex debugging: basic checks                                                                                                    │ │  

  │ │                                                               [ ] Lock debugging: detect incorrect freeing of live locks                                                                           │ │  

  │ └───────────────────────────────────────────────────────────────v(+)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ │  

  ├────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤  

```

----------

## Neo2

Well... that's odd!  :Shocked: 

When I noticed that problem I solved it by enabling the export for unused symbols... Maybe you can try to check your kernel sources with

grep -R "init_mm" /usr/src/linux/*

and see if init_mm is really defined, and if it is, where.

----------

## Kasumi_Ninja

 *Neo2 wrote:*   

> Well... that's odd! 
> 
> When I noticed that problem I solved it by enabling the export for unused symbols... Maybe you can try to check your kernel sources with
> 
> grep -R "init_mm" /usr/src/linux/*
> ...

 

Well here goes (it's a lot of information):

Edit:

I think this is more helpful:

```
$ grep -R "CONFIG_UNUSED_SYMBOLS" /usr/src/linux/* 

/usr/src/linux/arch/mn10300/configs/asb2303_defconfig:# CONFIG_UNUSED_SYMBOLS is not set

/usr/src/linux/arch/x86/configs/i386_defconfig:CONFIG_UNUSED_SYMBOLS=y

/usr/src/linux/arch/x86/configs/x86_64_defconfig:CONFIG_UNUSED_SYMBOLS=y
```

# grep -R "init_mm" /usr/src/linux/* 

```
/usr/src/linux/Documentation/feature-removal-schedule.txt:What:   init_mm export

/usr/src/linux/Module.symvers:0x00000000   init_mm   vmlinux   EXPORT_UNUSED_SYMBOL

/usr/src/linux/System.map:c054bd00 r __ksymtab_init_mm

/usr/src/linux/System.map:c054fe1c r __kcrctab_init_mm

/usr/src/linux/System.map:c054fe2a r __kstrtab_init_mm

/usr/src/linux/System.map:c0564180 D init_mm

/usr/src/linux/arch/mn10300/kernel/setup.c:   init_mm.start_code = (unsigned long)&_text;

/usr/src/linux/arch/mn10300/kernel/setup.c:   init_mm.end_code = (unsigned long) &_etext;

/usr/src/linux/arch/mn10300/kernel/setup.c:   init_mm.end_data = (unsigned long) &_edata;

/usr/src/linux/arch/mn10300/kernel/setup.c:   init_mm.brk = (unsigned long) &_end;

/usr/src/linux/arch/mn10300/kernel/init_task.c:struct mm_struct init_mm = INIT_MM(init_mm);

/usr/src/linux/arch/mn10300/kernel/init_task.c:EXPORT_SYMBOL(init_mm);

/usr/src/linux/arch/mn10300/mm/fault.c:    * 'reference' page table is init_mm.pgd.

/usr/src/linux/arch/mn10300/mm/fault.c:      pgd_k = init_mm.pgd + index;

Binary file /usr/src/linux/arch/x86/boot/compressed/vmlinux.bin.all matches

Binary file /usr/src/linux/arch/x86/boot/compressed/vmlinux.bin matches

/usr/src/linux/arch/x86/xen/xen-ops.h:void xen_mark_init_mm_pinned(void);

/usr/src/linux/arch/x86/xen/mmu.c:   if (mm == current->mm || mm == &init_mm) {

/usr/src/linux/arch/x86/xen/mmu.c:/* The init_mm pagetable is really pinned as soon as its created, but

/usr/src/linux/arch/x86/xen/mmu.c:void __init xen_mark_init_mm_pinned(void)

/usr/src/linux/arch/x86/xen/mmu.c:   pgd_walk(init_mm.pgd, mark_pinned, FIXADDR_TOP);

/usr/src/linux/arch/x86/xen/mmu.c: * Since we're pulling the pagetable down, we switch to use init_mm,

/usr/src/linux/arch/x86/xen/enlighten.c:   only init_mm and anything attached to that is pinned. */

/usr/src/linux/arch/x86/xen/enlighten.c:   init_mm.pgd = base;

/usr/src/linux/arch/x86/xen/enlighten.c:   .post_allocator_init = xen_mark_init_mm_pinned,

/usr/src/linux/arch/x86/xen/enlighten.c:   init_mm.pgd = pgd; /* use the Xen pagetables to start */

/usr/src/linux/arch/x86/kernel/vmi_32.c: * (otherwise, there is no flush).  We must check against init_mm, since

/usr/src/linux/arch/x86/kernel/vmi_32.c: * this could be a kernel update, which usually passes init_mm, although

/usr/src/linux/arch/x86/kernel/vmi_32.c:                                       (!mustbeuser && (mm) == &init_mm))

Binary file /usr/src/linux/arch/x86/kernel/setup_32.o matches

/usr/src/linux/arch/x86/kernel/cpu/common.c:   atomic_inc(&init_mm.mm_count);

/usr/src/linux/arch/x86/kernel/cpu/common.c:   curr->active_mm = &init_mm;

/usr/src/linux/arch/x86/kernel/cpu/common.c:   enter_lazy_tlb(&init_mm, curr);

/usr/src/linux/arch/x86/kernel/cpu/common.c:   load_LDT(&init_mm.context);

/usr/src/linux/arch/x86/kernel/cpu/common.c:   per_cpu(cpu_tlbstate, cpu).active_mm = &init_mm;

Binary file /usr/src/linux/arch/x86/kernel/cpu/built-in.o matches

Binary file /usr/src/linux/arch/x86/kernel/cpu/common.o matches

/usr/src/linux/arch/x86/kernel/smp_32.c:DEFINE_PER_CPU(struct tlb_state, cpu_tlbstate) ____cacheline_aligned = { &init_mm, 0, };

/usr/src/linux/arch/x86/kernel/init_task.c:struct mm_struct init_mm = INIT_MM(init_mm);

/usr/src/linux/arch/x86/kernel/init_task.c:EXPORT_UNUSED_SYMBOL(init_mm); /* will be removed in 2.6.26 */

/usr/src/linux/arch/x86/kernel/setup_32.c:   init_mm.start_code = (unsigned long) _text;

/usr/src/linux/arch/x86/kernel/setup_32.c:   init_mm.end_code = (unsigned long) _etext;

/usr/src/linux/arch/x86/kernel/setup_32.c:   init_mm.end_data = (unsigned long) _edata;

/usr/src/linux/arch/x86/kernel/setup_32.c:   init_mm.brk = init_pg_tables_end + PAGE_OFFSET;

/usr/src/linux/arch/x86/kernel/setup64.c:   pda->active_mm = &init_mm;

/usr/src/linux/arch/x86/kernel/setup64.c:   atomic_inc(&init_mm.mm_count);

/usr/src/linux/arch/x86/kernel/setup64.c:   me->active_mm = &init_mm;

/usr/src/linux/arch/x86/kernel/setup64.c:   enter_lazy_tlb(&init_mm, me);

/usr/src/linux/arch/x86/kernel/setup64.c:   load_LDT(&init_mm.context);

/usr/src/linux/arch/x86/kernel/setup_64.c:   init_mm.start_code = (unsigned long) &_text;

/usr/src/linux/arch/x86/kernel/setup_64.c:   init_mm.end_code = (unsigned long) &_etext;

/usr/src/linux/arch/x86/kernel/setup_64.c:   init_mm.end_data = (unsigned long) &_edata;

/usr/src/linux/arch/x86/kernel/setup_64.c:   init_mm.brk = (unsigned long) &_end;

Binary file /usr/src/linux/arch/x86/kernel/smp_32.o matches

Binary file /usr/src/linux/arch/x86/kernel/built-in.o matches

Binary file /usr/src/linux/arch/x86/kernel/init_task.o matches

/usr/src/linux/arch/x86/mm/pageattr.c:   /* change init_mm */

/usr/src/linux/arch/x86/mm/pageattr.c:   paravirt_alloc_pt(&init_mm, page_to_pfn(base));

/usr/src/linux/arch/x86/mm/init_64.c:   spin_lock(&init_mm.page_table_lock);

/usr/src/linux/arch/x86/mm/init_64.c:   spin_unlock(&init_mm.page_table_lock);

/usr/src/linux/arch/x86/mm/init_64.c:      spin_lock(&init_mm.page_table_lock);

/usr/src/linux/arch/x86/mm/init_64.c:      spin_unlock(&init_mm.page_table_lock);

Binary file /usr/src/linux/arch/x86/mm/init_32.o matches

Binary file /usr/src/linux/arch/x86/mm/pgtable_32.o matches

/usr/src/linux/arch/x86/mm/init_32.c:      paravirt_alloc_pd(&init_mm, __pa(pmd_table) >> PAGE_SHIFT);

/usr/src/linux/arch/x86/mm/init_32.c:      paravirt_alloc_pt(&init_mm, __pa(page_table) >> PAGE_SHIFT);

/usr/src/linux/arch/x86/mm/init_32.c:   paravirt_alloc_pd(&init_mm, __pa(base) >> PAGE_SHIFT);

Binary file /usr/src/linux/arch/x86/mm/pageattr.o matches

Binary file /usr/src/linux/arch/x86/mm/ioremap.o matches

Binary file /usr/src/linux/arch/x86/mm/fault.o matches

Binary file /usr/src/linux/arch/x86/mm/highmem_32.o matches

Binary file /usr/src/linux/arch/x86/mm/built-in.o matches

/usr/src/linux/arch/x86/mm/pgtable_32.c:      set_pte_present(&init_mm, vaddr, pte, pfn_pte(pfn, flags));

/usr/src/linux/arch/x86/mm/pgtable_32.c:      pte_clear(&init_mm, vaddr, pte);

/usr/src/linux/arch/x86/mm/fault.c:   pgd_k = init_mm.pgd + index;

/usr/src/linux/arch/x86/mm/fault.c:   pgd = init_mm.pgd + pgd_index(address);

/usr/src/linux/arch/x86/mm/fault.c:   pgd = pgd_offset(current->mm ?: &init_mm, address);

/usr/src/linux/arch/x86/mm/fault.c:    * 'reference' page table is init_mm.pgd.

/usr/src/linux/arch/x86/mm/ioremap.c:   pmd_populate_kernel(&init_mm, pmd, bm_pte);

/usr/src/linux/arch/x86/mach-voyager/voyager_smp.c:DEFINE_PER_CPU_SHARED_ALIGNED(struct tlb_state, cpu_tlbstate) = { &init_mm, 0 };

/usr/src/linux/arch/avr32/kernel/setup.c:   kernel_code.start = __pa(init_mm.start_code);

/usr/src/linux/arch/avr32/kernel/setup.c:   init_mm.start_code = (unsigned long)_text;

/usr/src/linux/arch/avr32/kernel/setup.c:   init_mm.end_code = (unsigned long)_etext;

/usr/src/linux/arch/avr32/kernel/setup.c:   init_mm.end_data = (unsigned long)_edata;

/usr/src/linux/arch/avr32/kernel/setup.c:   init_mm.brk = (unsigned long)_end;

/usr/src/linux/arch/avr32/kernel/setup.c:   kernel_code.end = __pa(init_mm.end_code - 1);

/usr/src/linux/arch/avr32/kernel/setup.c:   kernel_data.start = __pa(init_mm.end_code);

/usr/src/linux/arch/avr32/kernel/setup.c:   kernel_data.end = __pa(init_mm.brk - 1);

/usr/src/linux/arch/avr32/kernel/init_task.c:struct mm_struct init_mm = INIT_MM(init_mm);

/usr/src/linux/arch/avr32/kernel/init_task.c:EXPORT_SYMBOL(init_mm);

/usr/src/linux/arch/avr32/mm/tlb.c:      unsigned long asid = init_mm.context & MMU_CONTEXT_ASID_MASK;

/usr/src/linux/arch/xtensa/kernel/setup.c:extern void init_mmu(void);

/usr/src/linux/arch/xtensa/kernel/setup.c:   init_mmu();

/usr/src/linux/arch/xtensa/kernel/init_task.c:struct mm_struct init_mm = INIT_MM(init_mm);

/usr/src/linux/arch/xtensa/kernel/init_task.c:EXPORT_SYMBOL(init_mm);

/usr/src/linux/arch/xtensa/mm/init.c:void __init init_mmu (void)

/usr/src/linux/arch/xtensa/mm/fault.c:    * 'reference' page table is init_mm.pgd.

/usr/src/linux/arch/xtensa/mm/fault.c:      pgd_k = init_mm.pgd + index;

/usr/src/linux/arch/cris/arch-v10/README.mm:to map the kernel itself. swapper_pg_dir is pointed to by init_mm.pgd as the

/usr/src/linux/arch/cris/arch-v10/README.mm:First the PGD entry is found using init_mm.pgd. This is passed to

/usr/src/linux/arch/cris/arch-v10/mm/init.c:   /* clear out the init_mm.pgd that will contain the kernel's mappings */

/usr/src/linux/arch/cris/arch-v10/mm/init.c:   per_cpu(current_pgd, smp_processor_id()) = init_mm.pgd;

/usr/src/linux/arch/cris/arch-v32/kernel/smp.c:   atomic_inc(&init_mm.mm_count);

/usr/src/linux/arch/cris/arch-v32/kernel/smp.c:   current->active_mm = &init_mm;

/usr/src/linux/arch/cris/arch-v32/mm/init.c:   per_cpu(current_pgd, smp_processor_id()) = init_mm.pgd;

/usr/src/linux/arch/cris/arch-v32/mm/init.c:   /* Clear out the init_mm.pgd that will contain the kernel's mappings. */

/usr/src/linux/arch/cris/kernel/process.c:struct mm_struct init_mm = INIT_MM(init_mm);

/usr/src/linux/arch/cris/kernel/process.c:EXPORT_SYMBOL(init_mm);

/usr/src/linux/arch/cris/kernel/setup.c:   init_mm.start_code = (unsigned long) &text_start;

/usr/src/linux/arch/cris/kernel/setup.c:   init_mm.end_code =   (unsigned long) &_etext;

/usr/src/linux/arch/cris/kernel/setup.c:   init_mm.end_data =   (unsigned long) &_edata;

/usr/src/linux/arch/cris/kernel/setup.c:   init_mm.brk =        (unsigned long) &_end;

/usr/src/linux/arch/cris/mm/tlb.c:   /* the init_mm has context 0 from the boot */

/usr/src/linux/arch/cris/mm/tlb.c:   page_id_map[0] = &init_mm;

/usr/src/linux/arch/cris/mm/fault.c:    * 'reference' page table is init_mm.pgd.

/usr/src/linux/arch/cris/mm/fault.c:      pgd_k = init_mm.pgd + offset;

/usr/src/linux/arch/sh/kernel/setup.c:   init_mm.start_code = (unsigned long) _text;

/usr/src/linux/arch/sh/kernel/setup.c:   init_mm.end_code = (unsigned long) _etext;

/usr/src/linux/arch/sh/kernel/setup.c:   init_mm.end_data = (unsigned long) _edata;

/usr/src/linux/arch/sh/kernel/setup.c:   init_mm.brk = (unsigned long) _end;

/usr/src/linux/arch/sh/kernel/init_task.c:struct mm_struct init_mm = INIT_MM(init_mm);

/usr/src/linux/arch/sh/kernel/init_task.c:EXPORT_SYMBOL(init_mm);

/usr/src/linux/arch/sh/kernel/smp.c:   init_new_context(current, &init_mm);

/usr/src/linux/arch/sh/kernel/smp.c:   struct mm_struct *mm = &init_mm;

/usr/src/linux/arch/sh/mm/init.c:         pmd_populate_kernel(&init_mm, pmd, pte_table);

/usr/src/linux/arch/sh/mm/tlbflush_32.c:      asid = cpu_asid(cpu, &init_mm);

/usr/src/linux/arch/sh/mm/ioremap_64.c:   pte_clear(&init_mm, vaddr, ptep);

/usr/src/linux/arch/v850/kernel/setup.c:   init_mm.start_code = (unsigned long) &_stext;

/usr/src/linux/arch/v850/kernel/setup.c:   init_mm.end_code = (unsigned long) &_etext;

/usr/src/linux/arch/v850/kernel/setup.c:   init_mm.end_data = (unsigned long) &_edata;

/usr/src/linux/arch/v850/kernel/setup.c:   init_mm.brk = (unsigned long) &_kram_end;

/usr/src/linux/arch/v850/kernel/init_task.c:struct mm_struct init_mm = INIT_MM (init_mm);

/usr/src/linux/arch/v850/kernel/init_task.c:EXPORT_SYMBOL(init_mm);

/usr/src/linux/arch/h8300/kernel/setup.c:   init_mm.start_code = (unsigned long) &_stext;

/usr/src/linux/arch/h8300/kernel/setup.c:   init_mm.end_code = (unsigned long) &_etext;

/usr/src/linux/arch/h8300/kernel/setup.c:   init_mm.end_data = (unsigned long) &_edata;

/usr/src/linux/arch/h8300/kernel/setup.c:   init_mm.brk = (unsigned long) 0; 

/usr/src/linux/arch/h8300/kernel/init_task.c:struct mm_struct init_mm = INIT_MM(init_mm);

/usr/src/linux/arch/h8300/kernel/init_task.c:EXPORT_SYMBOL(init_mm);

/usr/src/linux/arch/powerpc/kernel/init_task.c:struct mm_struct init_mm = INIT_MM(init_mm);

/usr/src/linux/arch/powerpc/kernel/init_task.c:EXPORT_SYMBOL(init_mm);

/usr/src/linux/arch/powerpc/kernel/pci_64.c:      __flush_hash_table_range(&init_mm, res->start + _IO_BASE,

/usr/src/linux/arch/powerpc/kernel/setup_32.c:   init_mm.start_code = PAGE_OFFSET;

/usr/src/linux/arch/powerpc/kernel/setup_32.c:   init_mm.end_code = (unsigned long) _etext;

/usr/src/linux/arch/powerpc/kernel/setup_32.c:   init_mm.end_data = (unsigned long) _edata;

/usr/src/linux/arch/powerpc/kernel/setup_32.c:   init_mm.brk = klimit;

/usr/src/linux/arch/powerpc/kernel/smp.c:   atomic_inc(&init_mm.mm_count);

/usr/src/linux/arch/powerpc/kernel/smp.c:   current->active_mm = &init_mm;

/usr/src/linux/arch/powerpc/kernel/setup_64.c:   init_mm.start_code = PAGE_OFFSET;

/usr/src/linux/arch/powerpc/kernel/setup_64.c:   init_mm.end_code = (unsigned long) _etext;

/usr/src/linux/arch/powerpc/kernel/setup_64.c:   init_mm.end_data = (unsigned long) _edata;

/usr/src/linux/arch/powerpc/kernel/setup_64.c:   init_mm.brk = klimit;

/usr/src/linux/arch/powerpc/lib/dma-noncoherent.c:         set_pte_at(&init_mm, vaddr,

/usr/src/linux/arch/powerpc/lib/dma-noncoherent.c:      pte_t pte = ptep_get_and_clear(&init_mm, addr, ptep);

/usr/src/linux/arch/powerpc/lib/dma-noncoherent.c:      pgd = pgd_offset(&init_mm, CONSISTENT_BASE);

/usr/src/linux/arch/powerpc/lib/dma-noncoherent.c:      pud = pud_alloc(&init_mm, pgd, CONSISTENT_BASE);

/usr/src/linux/arch/powerpc/lib/dma-noncoherent.c:      pmd = pmd_alloc(&init_mm, pud, CONSISTENT_BASE);

/usr/src/linux/arch/powerpc/platforms/pseries/eeh.c:   ptep = find_linux_pte(init_mm.pgd, token);

/usr/src/linux/arch/powerpc/platforms/cell/io-workarounds.c:      ptep = find_linux_pte(init_mm.pgd, vaddr);

/usr/src/linux/arch/powerpc/platforms/celleb/io-workarounds.c:      ptep = find_linux_pte(init_mm.pgd, vaddr);

/usr/src/linux/arch/powerpc/mm/hash_utils_64.c:      mm = &init_mm;

/usr/src/linux/arch/powerpc/mm/tlb_64.c: * @mm      : mm_struct of the target address space (generally init_mm)

/usr/src/linux/arch/powerpc/mm/tlb_32.c:   flush_range(&init_mm, start, end);

/usr/src/linux/arch/powerpc/mm/tlb_32.c:   mm = (vmaddr < TASK_SIZE)? vma->vm_mm: &init_mm;

/usr/src/linux/arch/powerpc/mm/pgtable_32.c:      set_pte_at(&init_mm, va, pg, pfn_pte(pa >> PAGE_SHIFT,

/usr/src/linux/arch/powerpc/mm/pgtable_32.c:         hash_preload(&init_mm, v, 0, 0x300);

/usr/src/linux/arch/powerpc/mm/pgtable_32.c:   if (!get_pteptr(&init_mm, address, &kpte, &kpmd))

/usr/src/linux/arch/powerpc/mm/pgtable_32.c:   set_pte_at(&init_mm, address, kpte, mk_pte(page, prot));

/usr/src/linux/arch/powerpc/mm/pgtable_64.c:      pudp = pud_alloc(&init_mm, pgdp, ea);

/usr/src/linux/arch/powerpc/mm/pgtable_64.c:      pmdp = pmd_alloc(&init_mm, pudp, ea);

/usr/src/linux/arch/powerpc/mm/pgtable_64.c:      set_pte_at(&init_mm, ea, ptep, pfn_pte(pa >> PAGE_SHIFT,

/usr/src/linux/arch/powerpc/mm/mmu_context_32.c:    * init_mm, and require using context 0 for a normal task.

/usr/src/linux/arch/m68k/sun3x/dvma.c:      if((pmd = pmd_alloc(&init_mm, pgd, vaddr)) == NULL) {

/usr/src/linux/arch/m68k/kernel/process.c:struct mm_struct init_mm = INIT_MM(init_mm);

/usr/src/linux/arch/m68k/kernel/process.c:EXPORT_SYMBOL(init_mm);

/usr/src/linux/arch/m68k/kernel/setup.c:   init_mm.start_code = PAGE_OFFSET;

/usr/src/linux/arch/m68k/kernel/setup.c:   init_mm.end_code = (unsigned long) &_etext;

/usr/src/linux/arch/m68k/kernel/setup.c:   init_mm.end_data = (unsigned long) &_edata;

/usr/src/linux/arch/m68k/kernel/setup.c:   init_mm.brk = (unsigned long) &_end;

/usr/src/linux/arch/m68k/mm/kmap.c:      pmd_dir = pmd_alloc(&init_mm, pgd_dir, virtaddr);

/usr/src/linux/arch/mips/jazz/irq.c:    * killed by init_mm()

/usr/src/linux/arch/mips/kernel/init_task.c:struct mm_struct init_mm = INIT_MM(init_mm);

/usr/src/linux/arch/mips/kernel/init_task.c:EXPORT_SYMBOL(init_mm);

/usr/src/linux/arch/mips/kernel/smp.c:   init_new_context(current, &init_mm);

/usr/src/linux/arch/mips/kernel/traps.c:   atomic_inc(&init_mm.mm_count);

/usr/src/linux/arch/mips/kernel/traps.c:   current->active_mm = &init_mm;

/usr/src/linux/arch/mips/kernel/traps.c:   enter_lazy_tlb(&init_mm, current);

/usr/src/linux/arch/mips/mm/highmem.c:   pte_clear(&init_mm, vaddr, kmap_pte-idx);

/usr/src/linux/arch/mips/mm/fault.c:    * 'reference' page table is init_mm.pgd.

/usr/src/linux/arch/mips/mm/fault.c:      pgd_k = init_mm.pgd + offset;

/usr/src/linux/arch/mips/mm/ioremap.c:   dir = pgd_offset(&init_mm, address);

/usr/src/linux/arch/mips/mm/ioremap.c:      pud = pud_alloc(&init_mm, dir, address);

/usr/src/linux/arch/mips/mm/ioremap.c:      pmd = pmd_alloc(&init_mm, pud, address);

/usr/src/linux/arch/ppc/kernel/setup.c:   init_mm.start_code = PAGE_OFFSET;

/usr/src/linux/arch/ppc/kernel/setup.c:   init_mm.end_code = (unsigned long) _etext;

/usr/src/linux/arch/ppc/kernel/setup.c:   init_mm.end_data = (unsigned long) _edata;

/usr/src/linux/arch/ppc/kernel/setup.c:   init_mm.brk = (unsigned long) klimit;

/usr/src/linux/arch/ppc/kernel/smp.c:   atomic_inc(&init_mm.mm_count);

/usr/src/linux/arch/ppc/kernel/smp.c:   current->active_mm = &init_mm;

/usr/src/linux/arch/ppc/mm/init.c:      mm = (address < TASK_SIZE)? vma->vm_mm: &init_mm;

/usr/src/linux/arch/ppc/mm/tlb.c:   flush_range(&init_mm, start, end);

/usr/src/linux/arch/ppc/mm/tlb.c:   mm = (vmaddr < TASK_SIZE)? vma->vm_mm: &init_mm;

/usr/src/linux/arch/ppc/mm/mmu_context.c:    * init_mm, and require using context 0 for a normal task.

/usr/src/linux/arch/ppc/mm/pgtable.c:      set_pte_at(&init_mm, va, pg, pfn_pte(pa >> PAGE_SHIFT, __pgprot(flags)));

/usr/src/linux/arch/ppc/mm/pgtable.c:      mm = &init_mm;

/usr/src/linux/arch/ppc/mm/fault.c:   dir = pgd_offset(&init_mm, address);

/usr/src/linux/arch/m68knommu/kernel/setup.c:   init_mm.start_code = (unsigned long) &_stext;

/usr/src/linux/arch/m68knommu/kernel/setup.c:   init_mm.end_code = (unsigned long) &_etext;

/usr/src/linux/arch/m68knommu/kernel/setup.c:   init_mm.end_data = (unsigned long) &_edata;

/usr/src/linux/arch/m68knommu/kernel/setup.c:   init_mm.brk = (unsigned long) 0;

/usr/src/linux/arch/m68knommu/kernel/init_task.c:struct mm_struct init_mm = INIT_MM(init_mm);

/usr/src/linux/arch/m68knommu/kernel/init_task.c:EXPORT_SYMBOL(init_mm);

/usr/src/linux/arch/m68knommu/platform/68360/commproc.c:   /*    pte = find_pte(&init_mm, host_page_addr); */

/usr/src/linux/arch/sparc64/kernel/init_task.c:struct mm_struct init_mm = INIT_MM(init_mm);

/usr/src/linux/arch/sparc64/kernel/init_task.c:EXPORT_SYMBOL(init_mm);

/usr/src/linux/arch/sparc64/kernel/smp.c:   atomic_inc(&init_mm.mm_count);

/usr/src/linux/arch/sparc64/kernel/smp.c:   current->active_mm = &init_mm;

/usr/src/linux/arch/sparc64/kernel/smp.c:   if (unlikely(!mm || (mm == &init_mm)))

/usr/src/linux/arch/sparc64/kernel/traps.c:   atomic_inc(&init_mm.mm_count);

/usr/src/linux/arch/sparc64/kernel/traps.c:   current->active_mm = &init_mm;

/usr/src/linux/arch/sparc64/mm/init.c:         pud_populate(&init_mm, pud, new);

/usr/src/linux/arch/sparc64/mm/init.c:         pmd_populate_kernel(&init_mm, pmd, new);

/usr/src/linux/arch/sparc64/mm/init.c:   init_mm.pgd += ((shift) / (sizeof(pgd_t)));

/usr/src/linux/arch/m32r/kernel/setup.c:extern void init_mmu(void);

/usr/src/linux/arch/m32r/kernel/setup.c:   init_mm.start_code = (unsigned long) _text;

/usr/src/linux/arch/m32r/kernel/setup.c:   init_mm.end_code = (unsigned long) _etext;

/usr/src/linux/arch/m32r/kernel/setup.c:   init_mm.end_data = (unsigned long) _edata;

/usr/src/linux/arch/m32r/kernel/setup.c:   init_mm.brk = (unsigned long) _end;

/usr/src/linux/arch/m32r/kernel/setup.c:   atomic_inc(&init_mm.mm_count);

/usr/src/linux/arch/m32r/kernel/setup.c:   current->active_mm = &init_mm;

/usr/src/linux/arch/m32r/kernel/setup.c:   init_mmu();

/usr/src/linux/arch/m32r/kernel/init_task.c:struct mm_struct init_mm = INIT_MM(init_mm);

/usr/src/linux/arch/m32r/kernel/init_task.c:EXPORT_SYMBOL(init_mm);

/usr/src/linux/arch/m32r/mm/fault.c:    * 'reference' page table is init_mm.pgd.

/usr/src/linux/arch/m32r/mm/fault.c:      pgd_k = init_mm.pgd + offset;

/usr/src/linux/arch/m32r/mm/fault.c: * init_mmu()

/usr/src/linux/arch/m32r/mm/fault.c:void __init init_mmu(void)

/usr/src/linux/arch/arm/mach-pxa/zylonite.c:static void __init zylonite_init_mmc(void)

/usr/src/linux/arch/arm/mach-pxa/zylonite.c:static inline void zylonite_init_mmc(void) {}

/usr/src/linux/arch/arm/mach-pxa/zylonite.c:   zylonite_init_mmc();

/usr/src/linux/arch/arm/kernel/setup.c:   init_mm.start_code = (unsigned long) &_text;

/usr/src/linux/arch/arm/kernel/setup.c:   init_mm.end_code   = (unsigned long) &_etext;

/usr/src/linux/arch/arm/kernel/setup.c:   init_mm.end_data   = (unsigned long) &_edata;

/usr/src/linux/arch/arm/kernel/setup.c:   init_mm.brk      = (unsigned long) &_end;

/usr/src/linux/arch/arm/kernel/init_task.c:struct mm_struct init_mm = INIT_MM(init_mm);

/usr/src/linux/arch/arm/kernel/init_task.c:EXPORT_SYMBOL(init_mm);

/usr/src/linux/arch/arm/kernel/smp.c:   pgd = pgd_alloc(&init_mm);

/usr/src/linux/arch/arm/kernel/smp.c:   pgd_free(&init_mm, pgd);

/usr/src/linux/arch/arm/kernel/smp.c:   struct mm_struct *mm = &init_mm;

/usr/src/linux/arch/arm/kernel/ecard.c:static int ecard_init_mm(void)

/usr/src/linux/arch/arm/kernel/ecard.c:   if (ecard_init_mm())

/usr/src/linux/arch/arm/mm/mmu.c:      pgd = init_mm.pgd;

/usr/src/linux/arch/arm/mm/consistent.c:      pte_t pte = ptep_get_and_clear(&init_mm, addr, ptep);

/usr/src/linux/arch/arm/mm/consistent.c:      pgd = pgd_offset(&init_mm, base);

/usr/src/linux/arch/arm/mm/consistent.c:      pmd = pmd_alloc(&init_mm, pgd, base);

/usr/src/linux/arch/arm/mm/fault.c:      mm = &init_mm;

/usr/src/linux/arch/arm/mm/fault.c:   pgd_k = init_mm.pgd + index;

/usr/src/linux/arch/arm/mm/ioremap.c:   pmd = pmd_alloc(&init_mm, pgd, addr);

/usr/src/linux/arch/arm/mm/ioremap.c:      seq = init_mm.context.kvm_seq;

/usr/src/linux/arch/arm/mm/ioremap.c:   } while (seq != init_mm.context.kvm_seq);

/usr/src/linux/arch/arm/mm/ioremap.c:         init_mm.context.kvm_seq++;

/usr/src/linux/arch/arm/mm/ioremap.c:            pte_free_kernel(&init_mm, pmd_page_vaddr(pmd));

/usr/src/linux/arch/arm/mm/ioremap.c:   if (current->active_mm->context.kvm_seq != init_mm.context.kvm_seq)

/usr/src/linux/arch/arm/plat-omap/devices.c:static void __init omap_init_mmc(void)

/usr/src/linux/arch/arm/plat-omap/devices.c:static inline void omap_init_mmc(void) {}

/usr/src/linux/arch/arm/plat-omap/devices.c:   omap_init_mmc();

/usr/src/linux/arch/ia64/kernel/setup.c:   atomic_inc(&init_mm.mm_count);

/usr/src/linux/arch/ia64/kernel/setup.c:   current->active_mm = &init_mm;

/usr/src/linux/arch/ia64/kernel/init_task.c:struct mm_struct init_mm = INIT_MM(init_mm);

/usr/src/linux/arch/ia64/kernel/init_task.c:EXPORT_SYMBOL(init_mm);

/usr/src/linux/arch/ia64/mm/init.c:      pud = pud_alloc(&init_mm, pgd, address);

/usr/src/linux/arch/ia64/mm/init.c:      pmd = pmd_alloc(&init_mm, pud, address);

/usr/src/linux/arch/ia64/mm/init.c:         pgd_populate(&init_mm, pgd, alloc_bootmem_pages_node(NODE_DATA(node), PAGE_SIZE));

/usr/src/linux/arch/ia64/mm/init.c:         pud_populate(&init_mm, pud, alloc_bootmem_pages_node(NODE_DATA(node), PAGE_SIZE));

/usr/src/linux/arch/ia64/mm/init.c:         pmd_populate_kernel(&init_mm, pmd, alloc_bootmem_pages_node(NODE_DATA(node), PAGE_SIZE));

/usr/src/linux/arch/frv/kernel/setup.c:   init_mm.start_code = (unsigned long) &_stext;

/usr/src/linux/arch/frv/kernel/setup.c:   init_mm.end_code = (unsigned long) &_etext;

/usr/src/linux/arch/frv/kernel/setup.c:   init_mm.end_data = (unsigned long) &_edata;

/usr/src/linux/arch/frv/kernel/setup.c:   init_mm.brk = (unsigned long) &_end;

/usr/src/linux/arch/frv/kernel/setup.c:   init_mm.brk = (unsigned long) 0;

/usr/src/linux/arch/frv/kernel/init_task.c:struct mm_struct init_mm = INIT_MM(init_mm);

/usr/src/linux/arch/frv/kernel/init_task.c:EXPORT_SYMBOL(init_mm);

/usr/src/linux/arch/frv/mm/init.c:   init_new_context(&init_task, &init_mm);

/usr/src/linux/arch/frv/mm/fault.c:    * 'reference' page table is init_mm.pgd.

/usr/src/linux/arch/frv/mm/fault.c:      pgd_k = ((pgd_t *)(init_mm.pgd)) + index;

/usr/src/linux/arch/sparc/kernel/sun4m_smp.c:   atomic_inc(&init_mm.mm_count);

/usr/src/linux/arch/sparc/kernel/sun4m_smp.c:   current->active_mm = &init_mm;

/usr/src/linux/arch/sparc/kernel/setup.c:   init_mm.context = (unsigned long) NO_CONTEXT;

/usr/src/linux/arch/sparc/kernel/sun4d_smp.c:   atomic_inc(&init_mm.mm_count);

/usr/src/linux/arch/sparc/kernel/sun4d_smp.c:   current->active_mm = &init_mm;

/usr/src/linux/arch/sparc/kernel/init_task.c:struct mm_struct init_mm = INIT_MM(init_mm);

/usr/src/linux/arch/sparc/kernel/init_task.c:EXPORT_SYMBOL(init_mm);

/usr/src/linux/arch/sparc/kernel/traps.c:   atomic_inc(&init_mm.mm_count);

/usr/src/linux/arch/sparc/kernel/traps.c:   current->active_mm = &init_mm;

/usr/src/linux/arch/sparc/mm/highmem.c:   pte_clear(&init_mm, vaddr, kmap_pte-idx);

/usr/src/linux/arch/sparc/mm/srmmu.c:   init_mm.pgd = srmmu_swapper_pg_dir;

/usr/src/linux/arch/sparc/mm/io-unit.c:         pgdp = pgd_offset(&init_mm, addr);

/usr/src/linux/arch/sparc/mm/sun4c.c:static void __init sun4c_init_mmu_entry_pool(void)

/usr/src/linux/arch/sparc/mm/sun4c.c:   sun4c_kstack_vma.vm_mm = &init_mm;

/usr/src/linux/arch/sparc/mm/sun4c.c:   insert_vm_struct(&init_mm, &sun4c_kstack_vma);

/usr/src/linux/arch/sparc/mm/sun4c.c:      init = sun4c_pgd_offset(&init_mm, 0);

/usr/src/linux/arch/sparc/mm/sun4c.c:   sun4c_init_mmu_entry_pool();

/usr/src/linux/arch/sparc/mm/iommu.c:         pgdp = pgd_offset(&init_mm, addr);

/usr/src/linux/arch/sparc/mm/fault.c:    * 'reference' page table is init_mm.pgd.

/usr/src/linux/arch/sparc/mm/fault.c:      pgd_k = init_mm.pgd + offset;

/usr/src/linux/arch/blackfin/kernel/setup.c:   init_mm.start_code = (unsigned long)_stext;

/usr/src/linux/arch/blackfin/kernel/setup.c:   init_mm.end_code = (unsigned long)_etext;

/usr/src/linux/arch/blackfin/kernel/setup.c:   init_mm.end_data = (unsigned long)_edata;

/usr/src/linux/arch/blackfin/kernel/setup.c:   init_mm.brk = (unsigned long)0;

/usr/src/linux/arch/blackfin/kernel/init_task.c:struct mm_struct init_mm = INIT_MM(init_mm);

/usr/src/linux/arch/blackfin/kernel/init_task.c:EXPORT_SYMBOL(init_mm);

/usr/src/linux/arch/alpha/kernel/init_task.c:struct mm_struct init_mm = INIT_MM(init_mm);

/usr/src/linux/arch/alpha/kernel/init_task.c:EXPORT_SYMBOL(init_mm);

/usr/src/linux/arch/alpha/kernel/smp.c:   atomic_inc(&init_mm.mm_count);

/usr/src/linux/arch/alpha/kernel/smp.c:   current->active_mm = &init_mm;

/usr/src/linux/arch/alpha/mm/init.c:   init = pgd_offset(&init_mm, 0UL);

/usr/src/linux/arch/um/sys-i386/ldt.c:      if (!current->active_mm || current->active_mm == &init_mm ||

/usr/src/linux/arch/um/sys-i386/ldt.c:      if (current->active_mm && current->active_mm != &init_mm &&

/usr/src/linux/arch/um/kernel/skas/mmu.c:   if (current->mm != NULL && current->mm != &init_mm)

/usr/src/linux/arch/um/kernel/tlb.c:   mm = &init_mm;

/usr/src/linux/arch/um/kernel/init_task.c:struct mm_struct init_mm = INIT_MM(init_mm);

/usr/src/linux/arch/um/kernel/init_task.c:EXPORT_SYMBOL(init_mm);

/usr/src/linux/arch/parisc/kernel/entry.S:   ldo   CLONE_VM(%r26), %r26   /* Force CLONE_VM since only init_mm */

/usr/src/linux/arch/parisc/kernel/init_task.c:struct mm_struct init_mm = INIT_MM(init_mm);

/usr/src/linux/arch/parisc/kernel/init_task.c:EXPORT_SYMBOL(init_mm);

/usr/src/linux/arch/parisc/kernel/smp.c:   atomic_inc(&init_mm.mm_count);

/usr/src/linux/arch/parisc/kernel/smp.c:   current->active_mm = &init_mm;

/usr/src/linux/arch/parisc/kernel/smp.c:   enter_lazy_tlb(&init_mm, current);

/usr/src/linux/arch/parisc/kernel/pci-dma.c:      pte_clear(&init_mm, vaddr, pte);

/usr/src/linux/arch/s390/kernel/setup.c:   atomic_inc(&init_mm.mm_count);

/usr/src/linux/arch/s390/kernel/setup.c:   current->active_mm = &init_mm;

/usr/src/linux/arch/s390/kernel/setup.c:        enter_lazy_tlb(&init_mm, current);

/usr/src/linux/arch/s390/kernel/setup.c:   init_mm.start_code = PAGE_OFFSET;

/usr/src/linux/arch/s390/kernel/setup.c:   init_mm.end_code = (unsigned long) &_etext;

/usr/src/linux/arch/s390/kernel/setup.c:   init_mm.end_data = (unsigned long) &_edata;

/usr/src/linux/arch/s390/kernel/setup.c:   init_mm.brk = (unsigned long) &_end;

/usr/src/linux/arch/s390/kernel/init_task.c:struct mm_struct init_mm = INIT_MM(init_mm);

/usr/src/linux/arch/s390/kernel/init_task.c:EXPORT_SYMBOL(init_mm);

/usr/src/linux/arch/s390/mm/init.c:   init_mm.pgd = swapper_pg_dir;

/usr/src/linux/arch/s390/mm/init.c:   S390_lowcore.kernel_asce = __pa(init_mm.pgd) & PAGE_MASK;

/usr/src/linux/arch/s390/mm/init.c:   clear_table((unsigned long *) init_mm.pgd, pgd_type,

/usr/src/linux/arch/s390/mm/init.c:         ptep_invalidate(&init_mm, address, pte);

/usr/src/linux/arch/s390/mm/vmem.c:      pte = (pte_t *) page_table_alloc(&init_mm);

/usr/src/linux/arch/s390/mm/vmem.c:         pgd_populate_kernel(&init_mm, pg_dir, pu_dir);

/usr/src/linux/arch/s390/mm/vmem.c:         pud_populate_kernel(&init_mm, pu_dir, pm_dir);

/usr/src/linux/arch/s390/mm/vmem.c:         pmd_populate_kernel(&init_mm, pm_dir, pt_dir);

/usr/src/linux/arch/s390/mm/vmem.c:         pgd_populate_kernel(&init_mm, pg_dir, pu_dir);

/usr/src/linux/arch/s390/mm/vmem.c:         pud_populate_kernel(&init_mm, pu_dir, pm_dir);

/usr/src/linux/arch/s390/mm/vmem.c:         pmd_populate_kernel(&init_mm, pm_dir, pt_dir);

/usr/src/linux/arch/s390/mm/vmem.c:   INIT_LIST_HEAD(&init_mm.context.crst_list);

/usr/src/linux/arch/s390/mm/vmem.c:   INIT_LIST_HEAD(&init_mm.context.pgtable_list);

/usr/src/linux/arch/s390/mm/vmem.c:   init_mm.context.noexec = 0;

/usr/src/linux/drivers/net/fec.c:   flush_tlb_page(init_mm.mmap, mem_addr);

/usr/src/linux/drivers/ide/pci/scc_pata.c: *   init_mmio_iops_scc   -   set up the iops for MMIO

/usr/src/linux/drivers/ide/pci/scc_pata.c:static void __devinit init_mmio_iops_scc(ide_hwif_t *hwif)

/usr/src/linux/drivers/ide/pci/scc_pata.c:   init_mmio_iops_scc(hwif);

Binary file /usr/src/linux/drivers/ide/pci/siimage.ko matches

Binary file /usr/src/linux/drivers/ide/pci/siimage.o matches

/usr/src/linux/drivers/ide/pci/siimage.c: *   init_mmio_iops_siimage   -   set up the iops for MMIO

/usr/src/linux/drivers/ide/pci/siimage.c:static void __devinit init_mmio_iops_siimage(ide_hwif_t *hwif)

/usr/src/linux/drivers/ide/pci/siimage.c:   init_mmio_iops_siimage(hwif);

/usr/src/linux/drivers/xen/grant-table.c:   set_pte_at(&init_mm, addr, pte, mfn_pte((*frames)[0], PAGE_KERNEL));

/usr/src/linux/drivers/xen/grant-table.c:   set_pte_at(&init_mm, addr, pte, __pte(0));

/usr/src/linux/drivers/xen/grant-table.c:   rc = apply_to_page_range(&init_mm, (unsigned long)shared,

/usr/src/linux/drivers/xen/grant-table.c:   apply_to_page_range(&init_mm, (unsigned long)shared,

/usr/src/linux/drivers/video/omap/lcdc.c:   vma.vm_mm = &init_mm;

/usr/src/linux/drivers/video/omap/dispc.c:   vma.vm_mm = &init_mm;

/usr/src/linux/include/asm-ia64/pgtable.h:   (init_mm.pgd + (((addr) >> PGDIR_SHIFT) & (PTRS_PER_PGD - 1)))

/usr/src/linux/include/asm-avr32/pgtable.h:#define pgd_offset_k(address) pgd_offset(&init_mm, address)

/usr/src/linux/include/asm-powerpc/highmem.h:   set_pte_at(&init_mm, vaddr, kmap_pte+idx, mk_pte(page, kmap_prot));

/usr/src/linux/include/asm-powerpc/highmem.h:   pte_clear(&init_mm, vaddr, kmap_pte+idx);

/usr/src/linux/include/asm-powerpc/pgtable-ppc64.h:#define pgd_offset_k(address) pgd_offset(&init_mm, address)

/usr/src/linux/include/asm-powerpc/pgtable-ppc32.h:#define pgd_offset_k(address) pgd_offset(&init_mm, address)

/usr/src/linux/include/asm-mips/pgtable-64.h:   ((address) >= MODULE_START ? module_pg_dir : pgd_offset(&init_mm, 0UL))

/usr/src/linux/include/asm-mips/pgtable-64.h:#define pgd_offset_k(address) pgd_offset(&init_mm, 0UL)

/usr/src/linux/include/asm-mips/pgtable-32.h:#define pgd_offset_k(address) pgd_offset(&init_mm, address)

/usr/src/linux/include/asm-mips/pgalloc.h:      init = pgd_offset(&init_mm, 0UL);

/usr/src/linux/include/asm-s390/pgtable.h:#define pgd_offset_k(address) pgd_offset(&init_mm, address)

/usr/src/linux/include/asm-s390/tlbflush.h:   __tlb_flush_mm(&init_mm);

/usr/src/linux/include/asm-x86/paravirt.h:    * Called before/after init_mm pagetable setup. setup_start

/usr/src/linux/include/asm-x86/pgtable_32.h:#define pgd_offset_k(address) pgd_offset(&init_mm, address)

/usr/src/linux/include/asm-x86/pgtable_32.h:   pte_clear(&init_mm, vaddr, ptep);            \

/usr/src/linux/include/asm-xtensa/pgtable.h:#define pgd_offset_k(address)   pgd_offset(&init_mm, address)

/usr/src/linux/include/asm-frv/pgtable.h:#define pgd_offset_k(address) pgd_offset(&init_mm, address)

/usr/src/linux/include/asm-arm/pgtable.h:#define pgd_offset_k(addr)   pgd_offset(&init_mm, addr)

/usr/src/linux/include/asm-arm/mmu_context.h:   if (unlikely(mm->context.kvm_seq != init_mm.context.kvm_seq))

/usr/src/linux/include/asm-arm/mmu_context.h:   if (unlikely(mm->context.kvm_seq != init_mm.context.kvm_seq))

/usr/src/linux/include/asm-parisc/pgtable.h:#define pgd_offset_k(address) pgd_offset(&init_mm, address)

/usr/src/linux/include/asm-parisc/tlbflush.h:   BUG_ON(mm == &init_mm); /* Should never happen */

/usr/src/linux/include/asm-parisc/mmu_context.h:   BUG_ON(next == &init_mm); /* Should never happen */

/usr/src/linux/include/asm-sh/pgtable_64.h:#define pgd_offset_k(address) pgd_offset(&init_mm, address)

/usr/src/linux/include/asm-sh/processor_64.h:{ &init_mm, 0, 0, NULL, PAGE_SHARED, VM_READ | VM_WRITE | VM_EXEC, 1, NULL, NULL }

/usr/src/linux/include/asm-sh/pgtable_32.h:#define pgd_offset_k(address)   pgd_offset(&init_mm, address)

/usr/src/linux/include/asm-m68k/sun3_pgtable.h:#define pgd_offset_k(address) pgd_offset(&init_mm, address)

/usr/src/linux/include/asm-um/pgtable.h:#define pgd_offset_k(address) pgd_offset(&init_mm, address)

/usr/src/linux/include/asm-um/mmu_context.h:      if(next != &init_mm)

/usr/src/linux/include/asm/paravirt.h:    * Called before/after init_mm pagetable setup. setup_start

/usr/src/linux/include/asm/pgtable_32.h:#define pgd_offset_k(address) pgd_offset(&init_mm, address)

/usr/src/linux/include/asm/pgtable_32.h:   pte_clear(&init_mm, vaddr, ptep);            \

/usr/src/linux/include/asm-ppc/highmem.h:   set_pte_at(&init_mm, vaddr, kmap_pte+idx, mk_pte(page, kmap_prot));

/usr/src/linux/include/asm-ppc/highmem.h:   pte_clear(&init_mm, vaddr, kmap_pte+idx);

/usr/src/linux/include/asm-ppc/pgtable.h:#define pgd_offset_k(address) pgd_offset(&init_mm, address)

/usr/src/linux/include/linux/sched.h:extern struct   mm_struct init_mm;

/usr/src/linux/include/linux/mm_types.h:                   * together off init_mm.mmlist, and are protected

/usr/src/linux/include/linux/init_task.h:   .active_mm   = &init_mm,               \

/usr/src/linux/include/asm-m32r/pgtable.h:#define pgd_offset_k(address)   pgd_offset(&init_mm, address)

/usr/src/linux/include/asm-mn10300/pgtable.h:#define pgd_offset_k(address)   pgd_offset(&init_mm, address)

/usr/src/linux/include/asm-mn10300/processor.h:{ &init_mm, 0, 0, NULL, PAGE_SHARED, VM_READ | VM_WRITE | VM_EXEC, 1, \

/usr/src/linux/include/asm-alpha/pgtable.h:#define pgd_offset_k(address) pgd_offset(&init_mm, (address))

/usr/src/linux/include/asm-sparc64/pgtable.h:#define pgd_offset_k(address) pgd_offset(&init_mm, address)

/usr/src/linux/include/asm-sparc64/pgtable.h:    * handle init_mm tlb flushes.

/usr/src/linux/include/asm-sparc64/pgtable.h:   if (likely(mm != &init_mm) && (pte_val(orig) & _PAGE_VALID))

/usr/src/linux/include/asm-sparc64/mmu_context.h:   if (unlikely(mm == &init_mm))

/usr/src/linux/include/asm-sparc/pgtable.h:#define pgd_offset_k(address) pgd_offset(&init_mm, address)

/usr/src/linux/include/asm-cris/pgtable.h:#define pgd_offset_k(address) pgd_offset(&init_mm, address)

/usr/src/linux/kernel/fork.c:   BUG_ON(mm == &init_mm);

/usr/src/linux/kernel/sched.c: * Ensures that the idle task is using init_mm right before its cpu goes

/usr/src/linux/kernel/sched.c:   if (mm != &init_mm)

/usr/src/linux/kernel/sched.c:      switch_mm(mm, &init_mm, current);

/usr/src/linux/kernel/sched.c:   atomic_inc(&init_mm.mm_count);

/usr/src/linux/kernel/sched.c:   enter_lazy_tlb(&init_mm, current);

Binary file /usr/src/linux/kernel/built-in.o matches

Binary file /usr/src/linux/kernel/sched.o matches

Binary file /usr/src/linux/kernel/fork.o matches

Binary file /usr/src/linux/lib/ioremap.o matches

Binary file /usr/src/linux/lib/lib.a matches

/usr/src/linux/lib/ioremap.c:      set_pte_at(&init_mm, addr, pte, pfn_pte(pfn, prot));

/usr/src/linux/lib/ioremap.c:   pmd = pmd_alloc(&init_mm, pud, addr);

/usr/src/linux/lib/ioremap.c:   pud = pud_alloc(&init_mm, pgd, addr);

/usr/src/linux/mm/highmem.c:      pte_clear(&init_mm, (unsigned long)page_address(page),

/usr/src/linux/mm/highmem.c:   set_pte_at(&init_mm, vaddr,

/usr/src/linux/mm/memory.c:   pte_t *new = pte_alloc_one_kernel(&init_mm, address);

/usr/src/linux/mm/memory.c:   spin_lock(&init_mm.page_table_lock);

/usr/src/linux/mm/memory.c:      pmd_populate_kernel(&init_mm, pmd, new);

/usr/src/linux/mm/memory.c:   spin_unlock(&init_mm.page_table_lock);

/usr/src/linux/mm/memory.c:      pte_free_kernel(&init_mm, new);

/usr/src/linux/mm/memory.c:   pte = (mm == &init_mm) ?

/usr/src/linux/mm/memory.c:   if (mm != &init_mm)

Binary file /usr/src/linux/mm/highmem.o matches

/usr/src/linux/mm/rmap.c:               list_add(&mm->mmlist, &init_mm.mmlist);

Binary file /usr/src/linux/mm/vmalloc.o matches

/usr/src/linux/mm/swapfile.c:   start_mm = &init_mm;

/usr/src/linux/mm/swapfile.c:   atomic_inc(&init_mm.mm_users);

/usr/src/linux/mm/swapfile.c:         start_mm = &init_mm;

/usr/src/linux/mm/swapfile.c:         atomic_inc(&init_mm.mm_users);

/usr/src/linux/mm/swapfile.c:       * Whenever we reach init_mm, there's no address space

/usr/src/linux/mm/swapfile.c:         if (start_mm == &init_mm)

/usr/src/linux/mm/swapfile.c:            else if (mm == &init_mm) {

/usr/src/linux/mm/swapfile.c:   list_for_each_safe(p, next, &init_mm.mmlist)

/usr/src/linux/mm/sparse-vmemmap.c:      set_pte_at(&init_mm, addr, pte, entry);

/usr/src/linux/mm/sparse-vmemmap.c:      pmd_populate_kernel(&init_mm, pmd, p);

/usr/src/linux/mm/sparse-vmemmap.c:      pud_populate(&init_mm, pud, p);

/usr/src/linux/mm/sparse-vmemmap.c:      pgd_populate(&init_mm, pgd, p);

Binary file /usr/src/linux/mm/rmap.o matches

/usr/src/linux/mm/vmalloc.c:      pte_t ptent = ptep_get_and_clear(&init_mm, addr, pte);

/usr/src/linux/mm/vmalloc.c:      set_pte_at(&init_mm, addr, pte, mk_pte(page, prot));

/usr/src/linux/mm/vmalloc.c:   pmd = pmd_alloc(&init_mm, pud, addr);

/usr/src/linux/mm/vmalloc.c:   pud = pud_alloc(&init_mm, pgd, addr);

/usr/src/linux/mm/vmalloc.c:    * of kernel virtual address space and mapped into init_mm.

/usr/src/linux/mm/vmalloc.c:   if (apply_to_page_range(&init_mm, (unsigned long)area->addr,

Binary file /usr/src/linux/mm/memory.o matches

Binary file /usr/src/linux/mm/built-in.o matches

/usr/src/linux/mm/memcontrol.c:    * set, if so charge the init_mm (happens for pagecache usage).

/usr/src/linux/mm/memcontrol.c:      mm = &init_mm;

/usr/src/linux/mm/memcontrol.c:      mm = &init_mm;

/usr/src/linux/mm/memcontrol.c:      init_mm.mem_cgroup = mem;

Binary file /usr/src/linux/mm/swapfile.o matches

Binary file /usr/src/linux/vmlinux matches

Binary file /usr/src/linux/vmlinux.o matches
```

----------

## Neo2

Uhm... well, seems like the symbol is defined also in vmlinux (last three lines of the output). Are you using gentoo-sources? If so, do you build&upgrade the kernel manually or through genkernel? Do you use any custom build flags (like LDFLAGS="-Wl,-s")? If built manually, did you ensure System.map in /boot dir is up2date? If you're using a separate boot partition, was /boot mounted when you copied the files and upgraded the kernel?

That's all I can think of. Maybe you want to grep "init_mm" /boot/kernel-2.6.25-r6 and ensure the symbol is defined also there.

----------

## Kasumi_Ninja

 *Neo2 wrote:*   

> Uhm... well, seems like the symbol is defined also in vmlinux (last three lines of the output). Are you using gentoo-sources? If so, do you build&upgrade the kernel manually or through genkernel? Do you use any custom build flags (like LDFLAGS="-Wl,-s")? If built manually, did you ensure System.map in /boot dir is up2date? If you're using a separate boot partition, was /boot mounted when you copied the files and upgraded the kernel?
> 
> That's all I can think of. Maybe you want to grep "init_mm" /boot/kernel-2.6.25-r6 and ensure the symbol is defined also there.

 

I use the default gentoo-source build with genkernel. The boot folder is on the same partition as root. Grepping boot yields nothing:

```
$ grep "init_mm" /boot/kernel-genkernel-x86-2.6.25-gentoo-r6 

aniruddha ~ $ 
```

----------

## Neo2

Well... honestly I don't know where else to look. If I were you I'd try rebuilding the kernel from scratch and removing previous versions:

```
emerge -C gentoo-sources

emerge gentoo-sources
```

----------

## farhaven

I don't know if this helps, I got fglrx working on a 2.6.25.8 kernel by editing /usr/src/linux/arch/x86/kernel/init_task.c

In line 18, one can find this 

```
EXPORT_UNUSED_SYMBOL(init_mm);
```

changing line 18 to read 

```
EXPORT_SYMBOL(init_mm);
```

 solved the problem for me.

Before anyone asks: I know there are config options to re-enable exporting init_mm in kernels >= 2.6.25 but at the time of patching init_task.c I didn't know that and I didn't bother changing my config after hearing of the option  :Smile: 

----------

## Kasumi_Ninja

 *farhaven wrote:*   

> I don't know if this helps, I got fglrx working on a 2.6.25.8 kernel by editing /usr/src/linux/arch/x86/kernel/init_task.c
> 
> In line 18, one can find this 
> 
> ```
> ...

 

Thanks for the help, unfortunately that didn't work either  :Sad: 

```
static struct fs_struct init_fs = INIT_FS;

static struct files_struct init_files = INIT_FILES;

static struct signal_struct init_signals = INIT_SIGNALS(init_signals);

static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);

struct mm_struct init_mm = INIT_MM(init_mm);

EXPORT_SYMBOL(init_mm);
```

mopd

----------

## stychokiller

Neo2's solution of adding CONFIG_UNUSED_SYMBOLS in the /usr/src/linux/.config file fixed this problem for me  :Surprised: 

----------

