1. 17 May, 2011 1 commit
  2. 16 May, 2011 1 commit
  3. 22 Oct, 2010 1 commit
  4. 03 Mar, 2010 1 commit
  5. 15 Dec, 2009 1 commit
  6. 02 Oct, 2009 1 commit
  7. 21 Aug, 2009 1 commit
  8. 18 Jun, 2009 1 commit
  9. 16 Jun, 2009 1 commit
  10. 14 Jun, 2009 1 commit
    • Sam Ravnborg's avatar
      vmlinux.lds.h update · 7923f90f
      Sam Ravnborg authored
      Updated after review by Tim Abbott.
      - Use HEAD_TEXT_SECTION
      - Drop use of section-names.h and delete file
      - Introduce EXIT_CALL
      
      Deleting section-names.h required a few simple
      updates of init.h
      Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
      Cc: Tim Abbott <tabbott@ksplice.com>
      7923f90f
  11. 09 Jun, 2009 1 commit
    • Jan Beulich's avatar
      initconst adjustments · fd6c3a8d
      Jan Beulich authored
      - add .init.rodata to INIT_DATA, and group all initconst flavors
        together
      - move strings generated from __setup_param() into .init.rodata
      - add .*init.rodata to modpost's sets of init sections
      - make modpost warn about references between meminit and cpuinit
        as well as memexit and cpuexit sections (as CPU and memory
        hotplug are independently selectable features)
      Signed-off-by: default avatarJan Beulich <jbeulich@novell.com>
      Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
      fd6c3a8d
  12. 27 Apr, 2009 1 commit
  13. 26 Apr, 2009 1 commit
    • Tim Abbott's avatar
      Add new HEAD_TEXT_SECTION macro. · c80d471a
      Tim Abbott authored
      This patch is preparation for replacing all uses of ".head.text" or
      ".text.head" in the kernel with macros, so that the section name can
      later be changed without having to touch a lot of the kernel.
      
      Since some linker scripts do more complex things than referencing
      HEAD_TEXT, we add a HEAD_TEXT_SECTION macro that just contains the
      actual name.
      
      I've defined HEAD_TEXT_SECTION in a new header,
      include/linux/section-names.h, so that this section name only needs to
      appear in one place.  I anticipate creating similar macro structures
      for a number of other section names.
      
      The long-term goal here is to be able to change the kernel's magic
      section names to those that are compatible with -ffunction-sections
      -fdata-sections.  This requires renaming all magic sections with names
      of the form ".text.foo".
      Signed-off-by: default avatarTim Abbott <tabbott@mit.edu>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      c80d471a
  14. 16 Apr, 2009 1 commit
    • Magnus Damm's avatar
      Driver Core: early platform driver · 13977091
      Magnus Damm authored
      V3 of the early platform driver implementation.
      
      Platform drivers are great for embedded platforms because we can separate
      driver configuration from the actual driver.  So base addresses,
      interrupts and other configuration can be kept with the processor or board
      code, and the platform driver can be reused by many different platforms.
      
      For early devices we have nothing today.  For instance, to configure early
      timers and early serial ports we cannot use platform devices.  This
      because the setup order during boot.  Timers are needed before the
      platform driver core code is available.  The same goes for early printk
      support.  Early in this case means before initcalls.
      
      These early drivers today have their configuration either hard coded or
      they receive it using some special configuration method.  This is working
      quite well, but if we want to support both regular kernel modules and
      early devices then we need to have two ways of configuring the same
      driver.  A single way would be better.
      
      The early platform driver patch is basically a set of functions that allow
      drivers to register themselves and architecture code to locate them and
      probe.  Registration happens through early_param().  The time for the
      probe is decided by the architecture code.
      
      See Documentation/driver-model/platform.txt for more details.
      
      [akpm@linux-foundation.org: coding-style fixes]
      Signed-off-by: default avatarMagnus Damm <damm@igel.co.jp>
      Cc: Paul Mundt <lethal@linux-sh.org>
      Cc: Kay Sievers <kay.sievers@vrfy.org>
      Cc: David Brownell <david-b@pacbell.net>
      Cc: Tejun Heo <htejun@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      13977091
  15. 29 Oct, 2008 1 commit
  16. 16 Oct, 2008 6 commits
  17. 14 Oct, 2008 1 commit
    • Steven Rostedt's avatar
      ftrace: remove old pointers to mcount · fed1939c
      Steven Rostedt authored
      When a mcount pointer is recorded into a table, it is used to add or
      remove calls to mcount (replacing them with nops). If the code is removed
      via removing a module, the pointers still exist.  At modifying the code
      a check is always made to make sure the code being replaced is the code
      expected. In-other-words, the code being replaced is compared to what
      it is expected to be before being replaced.
      
      There is a very small chance that the code being replaced just happens
      to look like code that calls mcount (very small since the call to mcount
      is relative). To remove this chance, this patch adds ftrace_release to
      allow module unloading to remove the pointers to mcount within the module.
      
      Another change for init calls is made to not trace calls marked with
      __init. The tracing can not be started until after init is done anyway.
      Signed-off-by: default avatarSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      fed1939c
  18. 12 Aug, 2008 1 commit
    • Arjan van de Ven's avatar
      modules: extend initcall_debug functionality to the module loader · 59f9415f
      Arjan van de Ven authored
      The kernel has this really nice facility where if you put "initcall_debug"
      on the kernel commandline, it'll print which function it's going to
      execute just before calling an initcall, and then after the call completes
      it will
      
      1) print if it had an error code
      
      2) checks for a few simple bugs (like leaving irqs off)
      and
      
      3) print how long the init call took in milliseconds.
      
      While trying to optimize the boot speed of my laptop, I have been loving
      number 3 to figure out what to optimize...  ...  and then I wished that
      the same thing was done for module loading.
      
      This patch makes the module loader use this exact same functionality; it's
      a logical extension in my view (since modules are just sort of late
      binding initcalls anyway) and so far I've found it quite useful in finding
      where things are too slow in my boot.
      Signed-off-by: default avatarArjan van de Ven <arjan@linux.intel.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      59f9415f
  19. 26 Jul, 2008 1 commit
  20. 25 Jul, 2008 1 commit
  21. 29 Apr, 2008 1 commit
  22. 19 Feb, 2008 1 commit
    • Sam Ravnborg's avatar
      Add missing init section definitions · 37c514e3
      Sam Ravnborg authored
      When adding __devinitconst etc. the __initconst variant
      were missed.
      Add this one and proper definitions for .head.text for use
      in .S files.
      The naming .head.text is preferred over .text.head as the
      latter will conflict for a function named head when introducing
      -ffunctions-sections.
      Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
      37c514e3
  23. 06 Feb, 2008 1 commit
  24. 03 Feb, 2008 1 commit
    • Ralf Baechle's avatar
      Remove __INIT_REFOK and __INITDATA_REFOK · 470a81ae
      Ralf Baechle authored
      Commit 312b1485 made __INIT_REFOK expand
      into .section .section ".ref.text", "ax".  Since the assembler doesn't
      tolerate stuttering in the source that broke all MIPS builds.
      
      Since with this change Sam downgraded __INIT_REFOK to just a backward
      compat thing and there being only a single use in the MIPS arch code the
      best solution is to delete both of __INIT_REFOK and __INITDATA_REFOK (which
      was equally broken) being unused anyway these can be deleted.
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
      470a81ae
  25. 28 Jan, 2008 4 commits
    • Sam Ravnborg's avatar
      Introduce new section reference annotations tags: __ref, __refdata, __refconst · 312b1485
      Sam Ravnborg authored
      Today we have the following annotations for functions/data
      referencing __init/__exit functions / data:
      
      __init_refok     => for init functions
      __initdata_refok => for init data
      __exit_refok     => for exit functions
      
      There is really no difference between the __init and __exit
      versions and simplify it and to introduce a shorter annotation
      the following new annotations are introduced:
      
      __ref      => for functions (code) that
                    references __*init / __*exit
      __refdata  => for variables
      __refconst => for const variables
      
      Whit this annotation is it more obvious what the annotation
      is for and there is no longer the arbitary division
      between __init and __exit code.
      
      The mechanishm is the same as before - a special section
      is created which is made part of the usual sections
      in the linker script.
      
      We will start to see annotations like this:
      
      -static struct pci_serial_quirk pci_serial_quirks[] = {
      +static const struct pci_serial_quirk pci_serial_quirks[] __refconst = {
      -----------------
      -static struct notifier_block __cpuinitdata cpuid_class_cpu_notifier =
      +static struct notifier_block cpuid_class_cpu_notifier __refdata =
      ----------------
      -static int threshold_cpu_callback(struct notifier_block *nfb,
      +static int __ref threshold_cpu_callback(struct notifier_block *nfb,
      
      [The above is just random samples].
      
      Note: No modifications were needed in modpost
      to support the new sections due to the newly introduced
      blacklisting.
      Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
      312b1485
    • Adrian Bunk's avatar
      remove __attribute_used__ · 3ff6eecc
      Adrian Bunk authored
      Remove the deprecated __attribute_used__.
      
      [Introduce __section in a few places to silence checkpatch /sam]
      Signed-off-by: default avatarAdrian Bunk <bunk@kernel.org>
      Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
      3ff6eecc
    • Sam Ravnborg's avatar
      Use separate sections for __dev/__cpu/__mem code/data · eb8f6890
      Sam Ravnborg authored
      Introducing separate sections for __dev* (HOTPLUG),
      __cpu* (HOTPLUG_CPU) and __mem* (MEMORY_HOTPLUG)
      allows us to do a much more reliable Section mismatch
      check in modpost. We are no longer dependent on the actual
      configuration of for example HOTPLUG.
      
      This has the effect that all users see much more
      Section mismatch warnings than before because they
      were almost all hidden when HOTPLUG was enabled.
      The advantage of this is that when building a piece
      of code then it is much more likely that the Section
      mismatch errors are spotted and the warnings will be
      felt less random of nature.
      Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
      Cc: Greg KH <greg@kroah.com>
      Cc: Randy Dunlap <randy.dunlap@oracle.com>
      Cc: Adrian Bunk <bunk@kernel.org>
      eb8f6890
    • Sam Ravnborg's avatar
      compiler.h: introduce __section() · f3fe866d
      Sam Ravnborg authored
      Add a new helper: __section() that makes a section definition
      much shorter and more readable.
      Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
      f3fe866d
  26. 17 Oct, 2007 1 commit
  27. 16 Oct, 2007 1 commit
  28. 10 Oct, 2007 1 commit
    • Pavel Emelyanov's avatar
      [NETNS]: Move some code into __init section when CONFIG_NET_NS=n · 4665079c
      Pavel Emelyanov authored
      With the net namespaces many code leaved the __init section,
      thus making the kernel occupy more memory than it did before.
      Since we have a config option that prohibits the namespace
      creation, the functions that initialize/finalize some netns
      stuff are simply not needed and can be freed after the boot.
      
      Currently, this is almost not noticeable, since few calls
      are no longer in __init, but when the namespaces will be
      merged it will be possible to free more code. I propose to
      use the __net_init, __net_exit and __net_initdata "attributes"
      for functions/variables that are not used if the CONFIG_NET_NS
      is not set to save more space in memory.
      
      The exiting functions cannot just reside in the __exit section,
      as noticed by David, since the init section will have
      references on it and the compilation will fail due to modpost
      checks. These references can exist, since the init namespace
      never dies and the exit callbacks are never called. So I
      introduce the __exit_refok attribute just like it is already
      done with the __init_refok.
      Signed-off-by: default avatarPavel Emelyanov <xemul@openvz.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4665079c
  29. 11 Aug, 2007 1 commit
  30. 31 Jul, 2007 1 commit
  31. 21 Jul, 2007 1 commit
    • Andi Kleen's avatar
      x86: Support __attribute__((__cold__)) in gcc 4.3 · a586df06
      Andi Kleen authored
      gcc 4.3 supports a new __attribute__((__cold__)) to mark functions cold. Any
      path directly leading to a call of this function will be unlikely. And gcc
      will try to generate smaller code for the function itself.
      
      Please use with care. The code generation advantage isn't large and in most
      cases it is not worth uglifying code with this.
      
      This patch marks some common error functions like panic(), printk()
      as cold.  This will longer term make many unlikely()s unnecessary, although
      we can keep them for now for older compilers.
      
      BUG is not marked cold because there is currently no way to tell
      gcc to mark a inline function told.
      
      Also all __init and __exit functions are marked cold. With a non -Os
      build this will tell the compiler to generate slightly smaller code
      for them. I think it currently only uses less alignments for labels,
      but that might change in the future.
      
      One disadvantage over *likely() is that they cannot be easily instrumented
      to verify them.
      
      Another drawback is that only the latest gcc 4.3 snapshots support this.
      Unfortunately we cannot detect this using the preprocessor. This means older
      snapshots will fail now. I don't think that's a problem because they are
      unreleased compilers that nobody should be using.
      
      gcc also has a __hot__ attribute, but I don't see any sense in using
      this in the kernel right now. But someday I hope gcc will be able
      to use more aggressive optimizing for hot functions even in -Os,
      if that happens it should be added.
      
      Includes compile fix from Thomas Gleixner.
      
      Cc: Jan Hubicka <jh@suse.cz>
      Signed-off-by: default avatarAndi Kleen <ak@suse.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a586df06
  32. 16 Jul, 2007 1 commit