27 Feb, 2007

1 commit

  • * master.kernel.org:/pub/scm/linux/kernel/git/kyle/parisc-2.6: (78 commits)
    [PARISC] Use symbolic last syscall in __NR_Linux_syscalls
    [PARISC] Add missing statfs64 and fstatfs64 syscalls
    Revert "[PARISC] Optimize TLB flush on SMP systems"
    [PARISC] Compat signal fixes for 64-bit parisc
    [PARISC] Reorder syscalls to match unistd.h
    Revert "[PATCH] make kernel/signal.c:kill_proc_info() static"
    [PARISC] fix sys_rt_sigqueueinfo
    [PARISC] fix section mismatch warnings in harmony sound driver
    [PARISC] do not export get_register/set_register
    [PARISC] add ENTRY()/ENDPROC() and simplify assembly of HP/UX emulation code
    [PARISC] convert to use CONFIG_64BIT instead of __LP64__
    [PARISC] use CONFIG_64BIT instead of __LP64__
    [PARISC] add ASM_EXCEPTIONTABLE_ENTRY() macro
    [PARISC] more ENTRY(), ENDPROC(), END() conversions
    [PARISC] fix ENTRY() and ENDPROC() for 64bit-parisc
    [PARISC] Fixes /proc/cpuinfo cache output on B160L
    [PARISC] implement standard ENTRY(), END() and ENDPROC()
    [PARISC] kill ENTRY_SYS_CPUS
    [PARISC] clean up debugging printks in smp.c
    [PARISC] factor syscall_restart code out of do_signal
    ...

    Fix conflict in include/linux/sched.h due to kill_proc_info() being made
    publicly available to PARISC again.

    Linus Torvalds
     

21 Feb, 2007

1 commit

  • This patch stops "modpost" from issuing erroneous modpost warnings on ARM
    builds, which it's been doing since since maybe last summer. A canonical
    example would be driver method table entries:

    WARNING: - Section mismatch: reference to .exit.text:_remove
    from .data after '$d' (at offset 0x4)

    That "$d" symbol is generated by tools conformant with ARM ABI specs; in
    this case it's a symbol **in the middle of** a "_driver" struct.

    The erroneous warnings appear to be issued because "modpost" whitelists
    references from "_driver" data into init and exit sections ... but
    doesn't know should also include those "$d" mapping symbols, which are not
    otherwise associated with "_driver" symbols.

    This patch prevents the modpost symbol lookup code from ever returning
    those mapping symbols, so it will return a whitelisted symbol instead.
    Then things work as expected.

    Now to revert various code-bloating "fixes" that got merged because of this
    modpost bug....

    Signed-off-by: David Brownell
    Acked-by: Rusty Russell
    Cc: Roman Zippel
    Acked-by: Sam Ravnborg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     

17 Feb, 2007

3 commits


13 Feb, 2007

1 commit

  • o Entry startup_32 was in .text section but it was accessing some init
    data too and it prompts MODPOST to generate compilation warnings.

    WARNING: vmlinux - Section mismatch: reference to .init.data:boot_params from
    .text between '_text' (at offset 0xc0100029) and 'startup_32_smp'
    WARNING: vmlinux - Section mismatch: reference to .init.data:boot_params from
    .text between '_text' (at offset 0xc0100037) and 'startup_32_smp'
    WARNING: vmlinux - Section mismatch: reference to
    .init.data:init_pg_tables_end from .text between '_text' (at offset
    0xc0100099) and 'startup_32_smp'

    o Can't move startup_32 to .init.text as this entry point has to be at the
    start of bzImage. Hence moved startup_32 to a new section .text.head and
    instructed MODPOST to not to generate warnings if init data is being
    accessed from .text.head section. This code has been audited.

    o SMP boot up code (startup_32_smp) can go into .init.text if CPU hotplug
    is not supported. Otherwise it generates more warnings

    WARNING: vmlinux - Section mismatch: reference to .init.data:new_cpu_data from
    .text between 'checkCPUtype' (at offset 0xc0100126) and 'is486'
    WARNING: vmlinux - Section mismatch: reference to .init.data:new_cpu_data from
    .text between 'checkCPUtype' (at offset 0xc0100130) and 'is486'

    Signed-off-by: Vivek Goyal
    Signed-off-by: Andrew Morton
    Signed-off-by: Andi Kleen

    Vivek Goyal
     

09 Feb, 2007

1 commit

  • parisc and parisc64 seem to name sections a little differently from other
    targets. parisc64 gives spurious warnings like:

    WARNING: drivers/net/dummy.o - Section mismatch: reference to .init.text:dummy_setup from .data.rel.ro between '.LC1' (at offset 0x0) and '.LC6'

    and parisc gives spurious warnings like:

    WARNING: drivers/net/dummy.o - Section mismatch: reference to .init.text:dummy_setup from .rodata.cst4 between '.LC1' (at offset 0x0) and '.LC6'

    Given the other comments in modpost.c, it seems that the best solution is
    to move rodata down to the 'match at start of name' section and add
    .data.rel.ro to the 'match entire name' section.

    Cc: Sam Ravnborg
    Cc: Kyle McMartin
    Signed-off-by: Andrew Morton

    Matthew Wilcox
     

11 Jan, 2007

2 commits

  • o MODPOST generates warning on i386 if kernel is compiled with
    CONFIG_RELOCATABLE=y.

    WARNING: vmlinux - Section mismatch: reference to .init.text:__init_begin from .text between 'free_initmem' (at offset 0xc0114fd3) and 'do_test_wp_bit'
    WARNING: vmlinux - Section mismatch: reference to .init.text:_sinittext from .text between 'core_kernel_text' (at offset 0xc012aeae) and 'kernel_text_address'
    WARNING: vmlinux - Section mismatch: reference to .init.text:_einittext from .text between 'core_kernel_text' (at offset 0xc012aeb7) and 'kernel_text_address'
    WARNING: vmlinux - Section mismatch: reference to .init.text:_sinittext from .text between 'get_symbol_pos' (at offset 0xc0135776) and 'reset_iter'
    WARNING: vmlinux - Section mismatch: reference to .init.text:_einittext from .text between 'get_symbol_pos' (at offset 0xc013577d) and 'reset_iter'

    o These symbols (__init_begin, _sinittext, _einittext) belong to init
    section and generally represent a section boundary. These are special
    symbols in the sense that their size is zero and no memory is allocated
    for them in init section. Their addr and value are same. So even if
    we free the init section, it is ok to reference them.

    o Whitelist access to such select symbols in MODPOST.

    Signed-off-by: Vivek Goyal
    Signed-off-by: Andi Kleen
    Cc: "Eric W. Biederman"
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton

    Vivek Goyal
     
  • o MODPOST generates warning for i386 if compiled with CONFIG_RELOCATABLE=y
    and serial console support is enabled.

    o Serial console setup function, serial8250_console_setup(), is a non __init
    function and it calls functions which are of type __init().
    (uart_parse_options() and uart_set_options()). Assuming, setup will
    be called during init time, changing serial8250_console_setup() to __init.

    o Adding one more pattern to modpost whitelist. Console drivers might
    have *_console structures containing references to setup functions which
    can be of __init type. Don't generate warnings for those.

    WARNING: vmlinux - Section mismatch: reference to .init.text: from .data between 'serial8250_console' (at offset 0xc05a33d8) and 'serial8250_reg'

    Signed-off-by: Vivek Goyal
    Signed-off-by: Andi Kleen
    Cc: "Eric W. Biederman"
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton

    Vivek Goyal
     

14 Dec, 2006

1 commit

  • Section .parainstructions should not warn about section mismatches.

    WARNING: drivers/net/hamradio/scc.o - Section mismatch: reference to .exit.text: from .parainstructions after '' (at offset 0x0)
    WARNING: drivers/net/hamradio/scc.o - Section mismatch: reference to .exit.text: from .parainstructions after '' (at offset 0x8)

    Signed-off-by: Randy Dunlap
    Cc: Andi Kleen
    Acked-by: Rusty Russell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     

07 Dec, 2006

1 commit

  • It turns out that the most called ops, by several orders of magnitude,
    are the interrupt manipulation ops. These are obvious candidates for
    patching, so mark them up and create infrastructure for it.

    The method used is that the ops structure has a patch function, which
    is called for each place which needs to be patched: this returns a
    number of instructions (the rest are NOP-padded).

    Usually we can spare a register (%eax) for the binary patched code to
    use, but in a couple of critical places in entry.S we can't: we make
    the clobbers explicit at the call site, and manually clobber the
    allowed registers in debug mode as an extra check.

    And:

    Don't abuse CONFIG_DEBUG_KERNEL, add CONFIG_DEBUG_PARAVIRT.

    And:

    AK: Fix warnings in x86-64 alternative.c build

    And:

    AK: Fix compilation with defconfig

    And:

    ^From: Andrew Morton

    Some binutlises still like to emit references to __stop_parainstructions and
    __start_parainstructions.

    And:

    AK: Fix warnings about unused variables when PARAVIRT is disabled.

    Signed-off-by: Rusty Russell
    Signed-off-by: Jeremy Fitzhardinge
    Signed-off-by: Chris Wright
    Signed-off-by: Zachary Amsden
    Signed-off-by: Andi Kleen
    Signed-off-by: Andrew Morton

    Rusty Russell
     

25 Oct, 2006

1 commit

  • This patch adds support for feature fixups in modules. This involves
    adding support for R_PPC64_REL64 relocs to the 64 bits module loader.
    It also modifies modpost.c to ignore the powerpc fixup sections (or it
    would warn when used in .init.text).

    Signed-off-by: Benjamin Herrenschmidt
    Acked-by: Olof Johansson
    Signed-off-by: Paul Mackerras

    Benjamin Herrenschmidt
     

27 Sep, 2006

1 commit

  • Add modalias attribute support for the almost forgotten now EISA bus and
    (at least some) EISA-aware modules.

    The modalias entry looks like (for an 3c509 NIC):

    eisa:sTCM5093

    and the in-module alias like:

    eisa:sTCM5093*

    The patch moves struct eisa_device_id declaration from include/linux/eisa.h
    to include/linux/mod_devicetable.h (so that the former now #includes the
    latter), adds proper MODULE_DEVICE_TABLE(eisa, ...) statements for all
    drivers with EISA IDs I found (some drivers already have that DEVICE_TABLE
    declared), and adds recognision of __mod_eisa_device_table to
    scripts/mod/file2alias.c so that proper modules.alias will be generated.

    There's no support for /lib/modules/$kver/modules.eisamap, as it's not used
    by any existing tools, and because with in-kernel modalias mechanism those
    maps are obsolete anyway.

    The rationale for this patch is:

    a) to make EISA bus to act as other busses with modalias
    support, to unify driver loading

    b) to foget about EISA finally - with this patch, kernel
    (who still supports EISA) will be the only one who knows
    how to choose the necessary drivers for this bus ;)

    [akpm@osdl.org: fix the kbuild bit]
    Signed-off-by: Michael Tokarev
    Cc: Rusty Russell
    Cc: Randy Dunlap
    Acked-the-net-bits-by: Jeff Garzik
    Acked-the-tulip-bit-by: Valerie Henson
    Cc: James Bottomley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michael Tokarev
     

25 Sep, 2006

3 commits


20 Sep, 2006

1 commit

  • Add a bus for the adjunct processor interface. Up to 64 devices can
    be connect to the ap bus interface, each device with 16 domains. That
    makes 1024 message queues. The interface is asynchronous, the answer
    to a message sent to a queue needs to be received at some later point
    in time. Unfortunately the interface does not provide interrupts when
    a message reply is pending. So the ap bus needs to implement some
    fancy polling, each active queue is polled once per 1/HZ second or
    continuously if an idle cpus exsists and the poll thread is activ
    (see poll_thread parameter).

    The ap bus uses the sysfs path /sys/bus/ap and has two bus attributes,
    ap_domain and config_time. The ap_domain selects one of the 16 domains
    to be used for this system. This limits the maximum number of ap devices
    to 64. The config_time attribute contains the number of seconds between
    two ap bus scans to find new devices.

    The ap bus uses the modalias entries of the form "ap:tN" to autoload
    the ap driver for hardware type N. Currently known types are:
    3 - PCICC, 4 - PCICA, 5 - PCIXCC, 6 - CEX2A and 7 - CEX2C.

    Signed-off-by: Cornelia Huck
    Signed-off-by: Ralph Wuerthner
    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     

16 Aug, 2006

1 commit

  • There is a small but annoying bug in scripts/mod/file2alias.c which causes
    it to generate invalid aliases for input devices on 64 bit archs. This causes
    joydev.ko to not be automaticly loaded when inserting a joystick, resulting in
    a non working joystick (for the average user).

    In scripts/mod/file2alias.c is the following code for generating the input
    aliases:
    static void do_input(char *alias,
    kernel_ulong_t *arr, unsigned int min, unsigned int max)
    {
    unsigned int i;

    for (i = min; i < max; i++)
    if (arr[i / BITS_PER_LONG] & (1 << (i%BITS_PER_LONG)))
    sprintf(alias + strlen(alias), "%X,*", i);
    }

    On 32 bits systems, this correctly generates "0,*" for the first alias, "8,*"
    for the second etc.

    However on 64 bits it generates: "0,*20,*" resp "8,*28,*" Notice how it adds 20
    + first entry (hex) ! to the list of hex codes, which is 32 more then the first
    entry, thus is because the bit test above wraps at 32 bits instead of 64.

    scripts/mod/file2alias.c, line 379 reads:
    if (arr[i / BITS_PER_LONG] & (1 << (i%BITS_PER_LONG)))
    That should be:
    if (arr[i / BITS_PER_LONG] & (1L << (i%BITS_PER_LONG)))

    Notice the added 'L' after the 1, otherwise that is an 32 bit int instead of a
    64 bit long, and when that int gets shifted >= 32 times, appearantly the number
    by which to shift is wrapped at 5 bits ( % 32) causing it to test a bit 32 bits
    too low.

    The patch below makes the nescesarry 1 char change :)

    Signed-off-by: Hans de Goede
    Acked-by: Rusty Russell
    Signed-off-by: Greg Kroah-Hartman

    Hans de Goede
     

01 Aug, 2006

1 commit

  • The original errormessage was just plain unreadable.

    Sample error message after this update (not for real - I provoked it):

    FATAL: drivers/net/s2io: sizeof(struct pci_device_id)=33 is not a modulo of the
    size of section __mod_pci_device_table=160.
    Fix definition of struct pci_device_id in mod_devicetable.h

    Before a warning was generated - this is now a fatal error.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     

01 Jul, 2006

2 commits


25 Jun, 2006

2 commits


17 Jun, 2006

1 commit


10 Jun, 2006

3 commits

  • scripts/mod/modpost.c: In function `check_license':
    scripts/mod/modpost.c:1094: parse error before `const'
    scripts/mod/modpost.c:1095: `basename' undeclared (first use in this function)
    scripts/mod/modpost.c:1095: (Each undeclared identifier is reported only once
    scripts/mod/modpost.c:1095: for each function it appears in.)

    Signed-off-by: Andrew Morton
    Signed-off-by: Sam Ravnborg

    Andrew Morton
     
  • Modules that uses GPL symbols can no longer be build with kbuild,
    the build will fail during the modpost step.
    When a GPL-incompatible module uses a EXPORT_SYMBOL_GPL_FUTURE symbol
    then warn during modpost so author are actually notified.

    The actual license compatibility check is shared with the kernel
    to make sure it is in sync.

    Patch originally from: Andreas Gruenbacher and
    Ram Pai

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • This patch provides the ability to identify the export-type of each
    exported symbols in Module.symvers.

    NOTE: It updates the Module.symvers file with the additional
    information as shown below.

    0x0f8b92af platform_device_add_resources vmlinux EXPORT_SYMBOL_GPL
    0xcf7efb2a ethtool_op_set_tx_csum vmlinux EXPORT_SYMBOL

    Signed-off-by: Andreas Gruenbacher
    Signed-off-by: Ram Pai
    Signed-off-by: Avantika Mathur
    Signed-off-by: Valdis Kletnieks
    Signed-off-by: Andrew Morton
    Signed-off-by: Sam Ravnborg

    Ram Pai
     

09 Jun, 2006

2 commits


22 May, 2006

2 commits

  • Here is an updated r_info layout fix. Please apply "check SHT_REL
    sections" patch before this.

    64bit mips has different r_info layout. This patch fixes modpost
    segfault for 64bit little endian mips kernel.

    Signed-off-by: Atsushi Nemoto
    Cc: Sam Ravnborg
    Cc: Ralf Baechle
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Atsushi Nemoto
     
  • I found that modpost can not detect section mismatch on mips and i386. On
    mips64, the modpost (with r_info layout fix) can detect it. The current
    modpst only checks SHT_RELA section but I suppose SHT_REL section should be
    checked also. This patch does not contain r_info layout fix. I'll post an
    updated r_info layout fix on next mail.

    Check SHT_REL sections as like as SHT_RELA sections to detect section
    mismatch.

    Signed-off-by: Atsushi Nemoto
    Cc: Sam Ravnborg
    Cc: Ralf Baechle
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Atsushi Nemoto
     

09 May, 2006

2 commits


01 May, 2006

2 commits


29 Apr, 2006

1 commit


26 Apr, 2006

1 commit


15 Apr, 2006

1 commit

  • Darren Jenkins pointed out a
    number of false positives where we referenced variables
    from a _driver variable.
    Fix it by check for that pattern and ignore it.

    Randy.Dunlap pointed out a similar
    set of warnings for a number of scsi drivers.
    In scsi world they misname their variables *_template or
    *_sht so add these to list of variables that may have references
    to .init.text with no warning.

    Randy.Dunlap also pointed out a scsi driver
    with many references to .exit.text from .rodata. This is compiler
    generated references and we already ignore these for .init.text, so
    ignore them for .exit.text also.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     

11 Apr, 2006

1 commit


26 Mar, 2006

1 commit

  • * master.kernel.org:/pub/scm/linux/kernel/git/sam/kbuild: (46 commits)
    kbuild: remove obsoleted scripts/reference_* files
    kbuild: fix make help & make *pkg
    kconfig: fix time ordering of writes to .kconfig.d and include/linux/autoconf.h
    Kconfig: remove the CONFIG_CC_ALIGN_* options
    kbuild: add -fverbose-asm to i386 Makefile
    kbuild: clean-up genksyms
    kbuild: Lindent genksyms.c
    kbuild: fix genksyms build error
    kbuild: in makefile.txt note that Makefile is preferred name for kbuild files
    kbuild: replace PHONY with FORCE
    kbuild: Fix bug in crc symbol generating of kernel and modules
    kbuild: change kbuild to not rely on incorrect GNU make behavior
    kbuild: when warning symbols exported twice now tell user this is the problem
    kbuild: fix make dir/file.xx when asm symlink is missing
    kbuild: in the section mismatch check try harder to find symbols
    kbuild: fix section mismatch check for unwind on IA64
    kbuild: kill false positives from section mismatch warnings for powerpc
    kbuild: kill trailing whitespace in modpost & friends
    kbuild: small update of allnoconfig description
    kbuild: make namespace.pl CROSS_COMPILE happy
    ...

    Trivial conflict in arch/ppc/boot/Makefile manually fixed up

    Linus Torvalds