01 Nov, 2011

40 commits

  • Its presence was implicit everywhere, but we are aiming to fix that,
    so call out the users explicitly.

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • These particular files were just assuming that module.h was
    somehow in the include paths. Give them the more minimalist
    header file explicitly.

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • We want to clean up the implicit everywhere presence of module.h
    which means files like this that use module infrastructure need
    to explicitly call it out for inclusion.

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • These guys were getting it implicitly via module.h before,
    when module.h was everywhere.

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • Add it in where the module.h implicit presence was doing
    the job before.

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • Fix several compile errors on s390 caused by splitting module.h.

    Some include additions [e.g. qdio_setup.c, zfcp_qdio.c] are in
    anticipation of pending changes queued for s390 that increase
    the modular use footprint.

    [PG: added additional obvious changes since Heiko's original patch]

    Signed-off-by: Heiko Carstens
    Signed-off-by: Paul Gortmaker

    Heiko Carstens
     
  • Or else we get lots of variations on this:

    arch/mips/pci/pci.c:330: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL'

    scattered throughout the build.

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • None of these files are using modular infrastructure, and build
    tests reveal that none of these files are really relying on any
    implicit inclusions via. module.h either. So delete them.

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • These files are not modules, but were including module.h only for
    EXPORT_SYMBOL and/or THIS_MODULE. Now that we have the lightweight
    export.h, use it in these kinds of cases.

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • We need to call out inclusion of smp.h, or with the module.h cleanup
    we'll get things like:

    arch/mips/loongson/common/platform.c:21: error: implicit declaration of function 'smp_processor_id'

    arch/mips/vr41xx/common/giu.c:84: error: implicit declaration of function 'smp_processor_id'

    arch/mips/vr41xx/common/rtc.c:85: error: implicit declaration of function 'smp_processor_id'

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • We are relying on asm/elf.h being present implicitly. Once we clean
    up the root cause of that, we'll see this, so fix it in advance.

    arch/mips/kernel/cpu-probe.c: In function 'set_elf_platform':
    arch/mips/kernel/cpu-probe.c:298: error: '__elf_platform' undeclared (first use in this function)

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • The file mm/extable.c needs module.h for within_module_init(), and
    also for search_exception_tables [which arguably could be living somewhere
    more appropriate than module.h] - eventually causing this:

    arch/sparc/mm/extable.c: In function 'trim_init_extable':
    arch/sparc/mm/extable.c:74: error: dereferencing pointer to incomplete type
    arch/sparc/mm/extable.c:75: error: dereferencing pointer to incomplete type
    arch/sparc/mm/extable.c:77: error: implicit declaration of function 'within_module_init'
    arch/sparc/mm/extable.c:77: error: dereferencing pointer to incomplete type
    arch/sparc/mm/extable.c:78: error: dereferencing pointer to incomplete type
    arch/sparc/mm/extable.c:80: error: dereferencing pointer to incomplete type
    arch/sparc/mm/extable.c: In function 'search_extables_range':
    arch/sparc/mm/extable.c:93: error: implicit declaration of function 'search_exception_tables'

    The other instances are more straight forward uses of things
    like MODULE_* and module_*

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • Building an allyesconfig doesn't reveal a hidden need
    for any of these. Since module.h brings in the whole kitchen
    sink, it just needlessly adds 30k+ lines to the cpp burden.

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • Many of the core sparc kernel files are not modules, but just
    including module.h for exporting symbols. Now these files can
    use the lighter footprint export.h for this role.

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • These files are only exporting symbols, so they don't need
    the full module.h header file. Previously they were getting
    access to EXPORT_SYMBOL implicitly via overuse of module.h
    from within other .h files, but that is being cleaned up.

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • Building sparc64 with the module.h cleanup reveals this implicit
    include being taken advantage of:

    arch/sparc/kernel/mdesc.c: In function 'mdesc_read':
    arch/sparc/kernel/mdesc.c:900: error: implicit declaration of function 'copy_to_user'

    Fix it up before the implicit module.h presence is removed.

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • To resolve these on 64bit allnoconfig builds:

    CC arch/sparc/kernel/pcr.o
    arch/sparc/kernel/pcr.c: In function 'register_perf_hsvc':
    arch/sparc/kernel/pcr.c:102: error: 'tlb_type' undeclared (first use in this function)

    CC arch/sparc/kernel/of_device_64.o
    arch/sparc/kernel/of_device_64.c: In function 'build_device_resources':
    arch/sparc/kernel/of_device_64.c:406: error: 'tlb_type' undeclared (first use in this function)

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • Things like module_param and core_param come from the header
    moduleparam.h -- these files were relying on the fact that
    module.h is implicitly present everywhere and it in turn
    includes the moduleparam header.

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • These files will fail to compile if we dont clean them up in advance
    and have them include the appropriate headers they need.

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • These files all make use of one of the EXPORT_SYMBOL variants
    or the THIS_MODULE macro. So they will need

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • Many of the core ARM kernel files are not modules, but just
    including module.h for exporting symbols. Now these files can
    use the lighter footprint export.h for this role.

    There are probably lots more, but ARM files of mach-* and plat-*
    don't get coverage via a simple yesconfig build. They will have
    to be cleaned up and tested via using their respective configs.

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • Building these files does not reveal a hidden need for
    any of these. Since module.h brings in the whole kitchen
    sink, it just needlessly adds 30k+ lines to the cpp burden.

    There are probably lots more, but ARM files of mach-* and plat-*
    don't get coverage via a simple yesconfig build. They will have
    to be cleaned up and tested via using their respective configs.

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • To fix messages like this:

    CC arch/arm/plat-samsung/platformdata.o
    arch/arm/plat-samsung/platformdata.c: In function 's3c_set_platdata':
    arch/arm/plat-samsung/platformdata.c:29: error: 'GFP_KERNEL' undeclared (first use in this function)
    arch/arm/plat-samsung/platformdata.c:29: error: (Each undeclared identifier is reported only once
    arch/arm/plat-samsung/platformdata.c:29: error: for each function it appears in.)
    make[3]: *** [arch/arm/plat-samsung/platformdata.o] Error 1

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • To fix this:

    arch/arm/mach-bcmring/dma.c: In function 'dma_request_channel_dbg':
    arch/arm/mach-bcmring/dma.c:1022: error: 'TASK_INTERRUPTIBLE' undeclared (first use in this function)
    arch/arm/mach-bcmring/dma.c:1022: error: (Each undeclared identifier is reported only once

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • To get the definition of core_param() they need this header.

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • Add the include to fix things like this:

    arch/arm/mach-sa1100/jornada720.c:278: error: 'PAGE_SHIFT' undeclared here (not in a function)
    arch/arm/mach-bcmring/mm.c:32: error: 'PAGE_SHIFT' undeclared here (not in a function)
    arch/arm/mach-sa1100/collie.c:361: error: 'PAGE_SHIFT' undeclared here (not in a function)

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • To fix things like this:

    arch/arm/mach-omap2/usb-tusb6010.c:58: error: implicit declaration of function 'memset'
    arch/arm/kernel/leds.c:40: error: implicit declaration of function 'strcspn'
    arch/arm/kernel/leds.c:40: warning: incompatible implicit declaration of built-in function 'strcspn'
    arch/arm/kernel/leds.c:45: error: implicit declaration of function 'strncmp'
    arch/arm/kernel/leds.c:55: error: implicit declaration of function 'strlen'
    arch/arm/kernel/leds.c:55: warning: incompatible implicit declaration of built-in function 'strlen'
    arch/arm/mach-omap2/clockdomain.c:52: error: implicit declaration of function 'strcmp'

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • It was implicitly getting it via an implicit presence of module.h
    but when we clean that up, we'll get a bunch of lines like this:

    arch/arm/kernel/ptrace.c:764: error: 'NT_PRSTATUS' undeclared here (not in a function)
    arch/arm/kernel/ptrace.c:765: error: 'ELF_NGREG' undeclared here (not in a function)
    arch/arm/kernel/ptrace.c:776: error: 'NT_PRFPREG' undeclared here (not in a function)

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • None of the files touched here are modules, and they are not
    exporting any symbols either -- so there is no need to be including
    the module.h. Builds of all the files remains successful.

    Even kernel/module.c does not need to include it, since it includes
    linux/moduleloader.h instead.

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • All these files were including module.h just for the basic
    EXPORT_SYMBOL infrastructure. We can shift them off to the
    export.h header which is a way smaller footprint and thus
    realize some compile time gains.

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • This file is only exporting symbols and so should use export.h
    and not module.h header. But in doing the conversion, we will
    uncover that it was implicitly using errno.h via module.h:

    CC arch/powerpc/platforms/pseries/hvconsole.o
    arch/powerpc/platforms/pseries/hvconsole.c: In function 'hvc_put_chars':
    arch/powerpc/platforms/pseries/hvconsole.c:77: error: 'EIO' undeclared (first use in this function)

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • Removing the implicit presence of module.h from almost everywhere
    will reveal this implicit usage of paca.h and string.h headers as
    follows:

    arch/powerpc/platforms/pseries/plpar_wrappers.h:22: error: implicit declaration of function 'get_lppaca'
    arch/powerpc/platforms/pseries/plpar_wrappers.h:208: error: implicit declaration of function 'memcpy'

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • We've been getting the header implicitly via module.h in the past
    but when we clean that up, we'll get this failure:

    CC arch/powerpc/platforms/cell/beat_spu_priv1.o
    In file included from arch/powerpc/platforms/cell/beat_spu_priv1.c:22:
    arch/powerpc/include/asm/spu.h:190: error: field 'list_mutex' has incomplete type
    make[2]: *** [arch/powerpc/platforms/cell/beat_spu_priv1.o] Error 1

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • This file only needs export.h to get EXPORT_SYMBOL, but in doing
    so, it uncovers an implicit use of linux/cache.h as follows:

    CC arch/powerpc/kernel/firmware.o
    arch/powerpc/kernel/firmware.c:20: error: expected '=', ',', ';', 'asm' or '__attribute__' before '__read_mostly'
    arch/powerpc/kernel/firmware.c:21: error: expected '=', ',', ';', 'asm' or '__attribute__' before '__used'
    make[2]: *** [arch/powerpc/kernel/firmware.o] Error 1

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • We can convert this file to using export.h since it only wants
    to export symbols, but when we do we'll see also that it was
    implicitly getting notifier.h from module.h via this failure:

    CC arch/powerpc/platforms/cell/spu_notify.o
    arch/powerpc/platforms/cell/spu_notify.c:28: warning: type defaults to 'int' in declaration of 'BLOCKING_NOTIFIER_HEAD'
    arch/powerpc/platforms/cell/spu_notify.c:28: warning: parameter names (without types) in function declaration
    arch/powerpc/platforms/cell/spu_notify.c: In function 'spu_switch_notify':
    arch/powerpc/platforms/cell/spu_notify.c:32: error: implicit declaration of function 'blocking_notifier_call_chain'
    arch/powerpc/platforms/cell/spu_notify.c:32: error: 'spu_switch_notifier' undeclared (first use in this function)

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • This has been relying on the fact that the parent file would have
    module.h (and thus nearly everything) present. But once we fix that,
    we'll get stuck with this failure:

    In file included from arch/powerpc/platforms/cell/beat_spu_priv1.c:26:
    arch/powerpc/platforms/cell/beat_wrapper.h: In function 'beat_eeprom_write':
    arch/powerpc/platforms/cell/beat_wrapper.h:160: error: implicit declaration of function 'memcpy'

    and many more instances of the same. Fix it in advance.

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • They are getting it through device.h --> module.h path, but we want
    to clean that up. This is a sample of what will happen if we don't:

    pseries/iommu.c: In function 'tce_build_pSeriesLP':
    pseries/iommu.c:136: error: implicit declaration of function 'show_stack'

    pseries/eeh.c: In function 'eeh_token_to_phys':
    pseries/eeh.c:359: error: 'init_mm' undeclared (first use in this function)

    pseries/eeh_event.c: In function 'eeh_event_handler':
    pseries/eeh_event.c:63: error: implicit declaration of function 'daemonize'
    pseries/eeh_event.c:64: error: implicit declaration of function 'set_current_state'
    pseries/eeh_event.c:64: error: 'TASK_INTERRUPTIBLE' undeclared (first use in this function)
    pseries/eeh_event.c:64: error: (Each undeclared identifier is reported only once
    pseries/eeh_event.c:64: error: for each function it appears in.)
    pseries/eeh_event.c: In function 'eeh_thread_launcher':
    pseries/eeh_event.c:109: error: 'CLONE_KERNEL' undeclared (first use in this function)

    hotplug-cpu.c: In function 'pseries_mach_cpu_die':
    hotplug-cpu.c:115: error: implicit declaration of function 'idle_task_exit'

    kernel/swsusp_64.c: In function 'do_after_copyback':
    kernel/swsusp_64.c:17: error: implicit declaration of function 'touch_softlockup_watchdog'

    cell/spufs/context.c: In function 'alloc_spu_context':
    cell/spufs/context.c:60: error: implicit declaration of function 'get_task_mm'
    cell/spufs/context.c:60: warning: assignment makes pointer from integer without a cast
    cell/spufs/context.c: In function 'spu_forget':
    cell/spufs/context.c:127: error: implicit declaration of function 'mmput'

    pasemi/dma_lib.c: In function 'pasemi_dma_stop_chan':
    pasemi/dma_lib.c:332: error: implicit declaration of function 'cond_resched'

    sysdev/fsl_lbc.c: In function 'fsl_lbc_ctrl_irq':
    sysdev/fsl_lbc.c:247: error: 'TASK_NORMAL' undeclared (first use in this function)

    Add in sched.h so these get the definitions they are looking for.

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • They get it via module.h (via device.h) but we want to clean that up.
    When we do, we'll get things like:

    ibmebus.c:314: error: 'S_IWUSR' undeclared here (not in a function)
    vio.c:972: error: 'S_IWUSR' undeclared here (not in a function)

    so add in the stat header it is using explicitly in advance.

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker