1. 08 Jan, 2009 33 commits
    • NeilBrown's avatar
      md: Allow md devices to be created by name. · efeb53c0
      NeilBrown authored
      Using sequential numbers to identify md devices is somewhat artificial.
      Using names can be a lot more user-friendly.
      
      Also, creating md devices by opening the device special file is a bit
      awkward.
      
      So this patch provides a new option for creating and naming devices.
      
      Writing a name such as "md_home" to
          /sys/modules/md_mod/parameters/new_array
      will cause an array with that name to be created.  It will appear in
      /sys/block/ /proc/partitions and /proc/mdstat as 'md_home'.
      It will have an arbitrary minor number allocated.
      
      md devices that a created by an open are destroyed on the last
      close when the device is inactive.
      For named md devices, they will not be destroyed until the array
      is explicitly stopped, either with the STOP_ARRAY ioctl or by
      writing 'clear' to /sys/block/md_XXXX/md/array_state.
      
      The name of the array must start 'md_' to avoid conflict with
      other devices.
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      efeb53c0
    • NeilBrown's avatar
      md: make devices disappear when they are no longer needed. · d3374825
      NeilBrown authored
      Currently md devices, once created, never disappear until the module
      is unloaded.  This is essentially because the gendisk holds a
      reference to the mddev, and the mddev holds a reference to the
      gendisk, this a circular reference.
      
      If we drop the reference from mddev to gendisk, then we need to ensure
      that the mddev is destroyed when the gendisk is destroyed.  However it
      is not possible to hook into the gendisk destruction process to enable
      this.
      
      So we drop the reference from the gendisk to the mddev and destroy the
      gendisk when the mddev gets destroyed.  However this has a
      complication.
      Between the call
         __blkdev_get->get_gendisk->kobj_lookup->md_probe
      and the call
         __blkdev_get->md_open
      
      there is no obvious way to hold a reference on the mddev any more, so
      unless something is done, it will disappear and gendisk will be
      destroyed prematurely.
      
      Also, once we decide to destroy the mddev, there will be an unlockable
      moment before the gendisk is unlinked (blk_unregister_region) during
      which a new reference to the gendisk can be created.  We need to
      ensure that this reference can not be used.  i.e. the ->open must
      fail.
      
      So:
       1/  in md_probe we set a flag in the mddev (hold_active) which
           indicates that the array should be treated as active, even
           though there are no references, and no appearance of activity.
           This is cleared by md_release when the device is closed if it
           is no longer needed.
           This ensures that the gendisk will survive between md_probe and
           md_open.
      
       2/  In md_open we check if the mddev we expect to open matches
           the gendisk that we did open.
           If there is a mismatch we return -ERESTARTSYS and modify
           __blkdev_get to retry from the top in that case.
           In the -ERESTARTSYS sys case we make sure to wait until
           the old gendisk (that we succeeded in opening) is really gone so
           we loop at most once.
      
      Some udev configurations will always open an md device when it first
      appears.   If we allow an md device that was just created by an open
      to disappear on an immediate close, then this can race with such udev
      configurations and result in an infinite loop the device being opened
      and closed, then re-open due to the 'ADD' even from the first open,
      and then close and so on.
      So we make sure an md device, once created by an open, remains active
      at least until some md 'ioctl' has been made on it.  This means that
      all normal usage of md devices will allow them to disappear promptly
      when not needed, but the worst that an incorrect usage will do it
      cause an inactive md device to be left in existence (it can easily be
      removed).
      
      As an array can be stopped by writing to a sysfs attribute
        echo clear > /sys/block/mdXXX/md/array_state
      we need to use scheduled work for deleting the gendisk and other
      kobjects.  This allows us to wait for any pending gendisk deletion to
      complete by simply calling flush_scheduled_work().
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      d3374825
    • NeilBrown's avatar
      md: centralise all freeing of an 'mddev' in 'md_free' · a21d1504
      NeilBrown authored
      md_free is the .release handler for the md kobj_type.
      So it makes sense to release all the objects referenced by
      the mddev in there, rather than just prior to calling kobject_put
      for what we think is the last time.
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      a21d1504
    • NeilBrown's avatar
      md: move allocation of ->queue from mddev_find to md_probe · 8b765398
      NeilBrown authored
      It is more balanced to just do simple initialisation in mddev_find,
      which allocates and links a new md device, and leave all the
      more sophisticated allocation to md_probe (which calls mddev_find).
      md_probe already allocated the gendisk.  It should allocate the
      queue too.
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      8b765398
    • Cheng Renquan's avatar
      md: need another print_sb for mdp_superblock_1 · cd2ac932
      Cheng Renquan authored
      md_print_devices is called in two code path: MD_BUG(...), and md_ioctl
      with PRINT_RAID_DEBUG.  it will dump out all in use md devices
      information;
      
      However, it wrongly processed two types of superblock in one:
      
      The header file <linux/raid/md_p.h> has defined two types of superblock,
      struct mdp_superblock_s (typedefed with mdp_super_t) according to md with
      metadata 0.90, and struct mdp_superblock_1 according to md with metadata
      1.0 and later,
      
      These two types of superblock are very different,
      
      The md_print_devices code processed them both in mdp_super_t, that would
      lead to wrong informaton dump like:
      
      	[ 6742.345877]
      	[ 6742.345887] md:	**********************************
      	[ 6742.345890] md:	* <COMPLETE RAID STATE PRINTOUT> *
      	[ 6742.345892] md:	**********************************
      	[ 6742.345896] md1: <ram7><ram6><ram5><ram4>
      	[ 6742.345907] md: rdev ram7, SZ:00065472 F:0 S:1 DN:3
      	[ 6742.345909] md: rdev superblock:
      	[ 6742.345914] md:  SB: (V:0.90.0) ID:<42ef13c7.598c059a.5f9f1645.801e9ee6> CT:4919856d
      	[ 6742.345918] md:     L5 S00065472 ND:4 RD:4 md1 LO:2 CS:65536
      	[ 6742.345922] md:     UT:4919856d ST:1 AD:4 WD:4 FD:0 SD:0 CSUM:b7992907 E:00000001
      	[ 6742.345924]      D  0:  DISK<N:0,(1,8),R:0,S:6>
      	[ 6742.345930]      D  1:  DISK<N:1,(1,10),R:1,S:6>
      	[ 6742.345933]      D  2:  DISK<N:2,(1,12),R:2,S:6>
      	[ 6742.345937]      D  3:  DISK<N:3,(1,14),R:3,S:6>
      	[ 6742.345942] md:     THIS:  DISK<N:3,(1,14),R:3,S:6>
      	...
      	[ 6742.346058] md0: <ram3><ram2><ram1><ram0>
      	[ 6742.346067] md: rdev ram3, SZ:00065472 F:0 S:1 DN:3
      	[ 6742.346070] md: rdev superblock:
      	[ 6742.346073] md:  SB: (V:1.0.0) ID:<369aad81.00000000.00000000.00000000> CT:9a322a9c
      	[ 6742.346077] md:     L-1507699579 S976570180 ND:48 RD:0 md0 LO:65536 CS:196610
      	[ 6742.346081] md:     UT:00000018 ST:0 AD:131048 WD:0 FD:8 SD:0 CSUM:00000000 E:00000000
      	[ 6742.346084]      D  0:  DISK<N:-1,(-1,-1),R:-1,S:-1>
      	[ 6742.346089]      D  1:  DISK<N:-1,(-1,-1),R:-1,S:-1>
      	[ 6742.346092]      D  2:  DISK<N:-1,(-1,-1),R:-1,S:-1>
      	[ 6742.346096]      D  3:  DISK<N:-1,(-1,-1),R:-1,S:-1>
      	[ 6742.346102] md:     THIS:  DISK<N:0,(0,0),R:0,S:0>
      	...
      	[ 6742.346219] md:	**********************************
      	[ 6742.346221]
      
      Here md1 is metadata 0.90.0, and md0 is metadata 1.2
      
      After some more code to distinguish these two types of superblock, in this patch,
      
      it will generate dump information like:
      
      	[ 7906.755790]
      	[ 7906.755799] md:	**********************************
      	[ 7906.755802] md:	* <COMPLETE RAID STATE PRINTOUT> *
      	[ 7906.755804] md:	**********************************
      	[ 7906.755808] md1: <ram7><ram6><ram5><ram4>
      	[ 7906.755819] md: rdev ram7, SZ:00065472 F:0 S:1 DN:3
      	[ 7906.755821] md: rdev superblock (MJ:0):
      	[ 7906.755826] md:  SB: (V:0.90.0) ID:<3fca7a0d.a612bfed.5f9f1645.801e9ee6> CT:491989f3
      	[ 7906.755830] md:     L5 S00065472 ND:4 RD:4 md1 LO:2 CS:65536
      	[ 7906.755834] md:     UT:491989f3 ST:1 AD:4 WD:4 FD:0 SD:0 CSUM:00fb52ad E:00000001
      	[ 7906.755836]      D  0:  DISK<N:0,(1,8),R:0,S:6>
      	[ 7906.755842]      D  1:  DISK<N:1,(1,10),R:1,S:6>
      	[ 7906.755845]      D  2:  DISK<N:2,(1,12),R:2,S:6>
      	[ 7906.755849]      D  3:  DISK<N:3,(1,14),R:3,S:6>
      	[ 7906.755855] md:     THIS:  DISK<N:3,(1,14),R:3,S:6>
      	...
      	[ 7906.755972] md0: <ram3><ram2><ram1><ram0>
      	[ 7906.755981] md: rdev ram3, SZ:00065472 F:0 S:1 DN:3
      	[ 7906.755984] md: rdev superblock (MJ:1):
      	[ 7906.755989] md:  SB: (V:1) (F:0) Array-ID:<5fbcf158:55aa:5fbe:9a79:1e939880dcbd>
      	[ 7906.755990] md:    Name: "DG5:0" CT:1226410480
      	[ 7906.755998] md:       L5 SZ130944 RD:4 LO:2 CS:128 DO:24 DS:131048 SO:8 RO:0
      	[ 7906.755999] md:     Dev:00000003 UUID: 9194d744:87f7:a448:85f2:7497b84ce30a
      	[ 7906.756001] md:       (F:0) UT:1226410480 Events:0 ResyncOffset:-1 CSUM:0dbcd829
      	[ 7906.756003] md:         (MaxDev:384)
      	...
      	[ 7906.756113] md:	**********************************
      	[ 7906.756116]
      
      this md0 (metadata 1.2) information dumping is exactly according to struct
      mdp_superblock_1.
      Signed-off-by: default avatarCheng Renquan <crquan@gmail.com>
      Cc: Neil Brown <neilb@suse.de>
      Cc: Dan Williams <dan.j.williams@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      cd2ac932
    • Cheng Renquan's avatar
      md: use list_for_each_entry macro directly · 159ec1fc
      Cheng Renquan authored
      The rdev_for_each macro defined in <linux/raid/md_k.h> is identical to
      list_for_each_entry_safe, from <linux/list.h>, it should be defined to
      use list_for_each_entry_safe, instead of reinventing the wheel.
      
      But some calls to each_entry_safe don't really need a safe version,
      just a direct list_for_each_entry is enough, this could save a temp
      variable (tmp) in every function that used rdev_for_each.
      
      In this patch, most rdev_for_each loops are replaced by list_for_each_entry,
      totally save many tmp vars; and only in the other situations that will call
      list_del to delete an entry, the safe version is used.
      Signed-off-by: default avatarCheng Renquan <crquan@gmail.com>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      159ec1fc
    • Andre Noll's avatar
      md: raid0: make hash_spacing and preshift sector-based. · ccacc7d2
      Andre Noll authored
      This patch renames the hash_spacing and preshift members of struct
      raid0_private_data to spacing and sector_shift respectively and
      changes the semantics as follows:
      
      We always have spacing = 2 * hash_spacing. In case
      sizeof(sector_t) > sizeof(u32) we also have sector_shift = preshift + 1
      while sector_shift = preshift = 0 otherwise.
      
      Note that the values of nb_zone and zone are unaffected by these changes
      because in the sector_div() preceeding the assignement of these two
      variables both arguments double.
      Signed-off-by: default avatarAndre Noll <maan@systemlinux.org>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      ccacc7d2
    • Andre Noll's avatar
      md: raid0: Represent the size of strip zones in sectors. · 83838ed8
      Andre Noll authored
      This completes the block -> sector conversion of struct strip_zone.
      Signed-off-by: default avatarAndre Noll <maan@systemlinux.org>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      83838ed8
    • Andre Noll's avatar
      md: raid0 create_strip_zones(): Add KERN_INFO/KERN_ERR to printk's. · 0825b87a
      Andre Noll authored
      This patch consists only of these trivial changes.
      Signed-off-by: default avatarAndre Noll <maan@systemlinux.org>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      0825b87a
    • Andre Noll's avatar
      md: raid0 create_strip_zones(): Make two local variables sector-based. · 6b8796cc
      Andre Noll authored
      current_offset and curr_zone_offset stored the corresponding offsets
      as 1K quantities. Rename them to current_start and curr_zone_start
      to match the naming of struct strip_zone and store the offsets as
      sector counts.
      
      Also, add KERN_INFO to the printk() affected by this change to make
      checkpatch happy.
      Signed-off-by: default avatarAndre Noll <maan@systemlinux.org>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      6b8796cc
    • Andre Noll's avatar
      md: raid0: Represent zone->zone_offset in sectors. · 6199d3db
      Andre Noll authored
      For the same reason as in the previous patch, rename it from zone_offset
      to zone_start.
      Signed-off-by: default avatarAndre Noll <maan@systemlinux.org>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      6199d3db
    • Andre Noll's avatar
      md: raid0: Represent device offset in sectors. · 019c4e2f
      Andre Noll authored
      Rename zone->dev_offset to zone->dev_start to make sure all users
      have been converted.
      Signed-off-by: default avatarAndre Noll <maan@systemlinux.org>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      019c4e2f
    • Andre Noll's avatar
      md: raid0_make_request(): Replace local variable block by sector. · e0f06868
      Andre Noll authored
      This change already simplifies the code a bit.
      Signed-off-by: default avatarAndre Noll <maan@systemlinux.org>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      e0f06868
    • Andre Noll's avatar
      md: raid0_make_request(): Remove local variable chunk_size. · a4712005
      Andre Noll authored
      We might as well use chunk_sects instead.
      Signed-off-by: default avatarAndre Noll <maan@systemlinux.org>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      a4712005
    • Andre Noll's avatar
      md: raid0_make_request(): Replace chunksize_bits by chunksect_bits. · 1b7fdf8f
      Andre Noll authored
      As ffz(~(2 * x)) = ffz(~x) + 1, we have
      
      	chunksect_bits = chunksize_bits + 1.
      
      Fixup all users accordingly.
      Signed-off-by: default avatarAndre Noll <maan@systemlinux.org>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      1b7fdf8f
    • NeilBrown's avatar
      md: use sysfs_notify_dirent to notify changes to md/sync_action. · 0c3573f1
      NeilBrown authored
      There is no compelling need for this, but sysfs_notify_dirent is a
      nicer interface and the change is good for consistency.
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      0c3573f1
    • NeilBrown's avatar
      md: fix bitmap-on-external-file bug. · 53845270
      NeilBrown authored
      commit a2ed9615
      fixed a bug with 'internal' bitmaps, but in the process broke
      'in a file' bitmaps.  So they are broken in 2.6.28
      
      This fixes it, and needs to go in 2.6.28-stable.
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      Cc: stable@kernel.org
      53845270
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 · 9e42d0cf
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
        sparc64: Work around branch tracer warning.
        sparc64: Fix unsigned long long warnings in drivers.
        sparc64: Use unsigned long long for u64.
        sparc: refactor code in fault_32.c
        sparc64: refactor code in init_64.c
        sparc64: refactor code in viohs.c
        sparc: make proces_ver_nack a bit more readable
      9e42d0cf
    • Linus Torvalds's avatar
      Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 · 97c440ba
      Linus Torvalds authored
      * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6:
        V4L/DVB (10191a): Update MAINTAINERS entries on media drivers
        V4L/DVB (10190): cx88: Fix some Kbuild troubles
        V4L/DVB (10189): dm1105: Fix build with INPUT=m and DVB_DM1105=y
        V4L/DVB (10185): Use negated usb_endpoint_xfer_control, etc
        V4L/DVB (10182): tda8290: fix TDA8290 + TDA18271 initialization
        V4L/DVB (10181): v4l2-device: Fix some sparse warnings
        V4L/DVB (10180): drivers/media: Fix a number of sparse warnings
        V4L/DVB (10179): tda8290: Fix two sparse warnings
        V4L/DVB (10178): dvb_frontend: Fix some sparse warnings due to static symbols
        V4L/DVB (10177): Fix sparse warnings on em28xx
        V4L/DVB (10176b): pxa-camera: fix redefinition warnings and missing DMA definitions
        V4L/DVB (10176a): Switch remaining clear_user_page users over to clear_user_highpage
      97c440ba
    • Linus Torvalds's avatar
      Merge branch 'for-2.6.29' of git://linux-nfs.org/~bfields/linux · 713404d6
      Linus Torvalds authored
      * 'for-2.6.29' of git://linux-nfs.org/~bfields/linux: (67 commits)
        nfsd: get rid of NFSD_VERSION
        nfsd: last_byte_offset
        nfsd: delete wrong file comment from nfsd/nfs4xdr.c
        nfsd: git rid of nfs4_cb_null_ops declaration
        nfsd: dprint each op status in nfsd4_proc_compound
        nfsd: add etoosmall to nfserrno
        NFSD: FIDs need to take precedence over UUIDs
        SUNRPC: The sunrpc server code should not be used by out-of-tree modules
        svc: Clean up deferred requests on transport destruction
        nfsd: fix double-locks of directory mutex
        svc: Move kfree of deferral record to common code
        CRED: Fix NFSD regression
        NLM: Clean up flow of control in make_socks() function
        NLM: Refactor make_socks() function
        nfsd: Ensure nfsv4 calls the underlying filesystem on LOCKT
        SUNRPC: Ensure the server closes sockets in a timely fashion
        NFSD: Add documenting comments for nfsctl interface
        NFSD: Replace open-coded integer with macro
        NFSD: Fix a handful of coding style issues in write_filehandle()
        NFSD: clean up failover sysctl function naming
        ...
      713404d6
    • David S. Miller's avatar
      sparc64: Work around branch tracer warning. · 18b8e08e
      David S. Miller authored
      As reported by Sam Ravnborg, Gcc-3.4.5 does not handle:
      
      	if (get_user() || get_user())
      
      with the new branch tracer enabled.
      
      Just seperate it out into seperate statements for now
      so people can get work done.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      18b8e08e
    • Mauro Carvalho Chehab's avatar
      V4L/DVB (10191a): Update MAINTAINERS entries on media drivers · 661263b5
      Mauro Carvalho Chehab authored
      This patch updates the MAINTAINERS entries for the media drivers.
      
      We are doing a few changes during 2009 to improve patch handling for
      drivers/media stuff.
      
      Currently, v4l-dvb-maintainer list at linuxtv.org were used to to be v4l/dvb
      driver maintainers ML, in order to keep track of patch merge requests and to
      receive bug fixes. This list allows posting for everybody, but, in order to
      avoid spam, the user subscribe/unsubscribe at the ML is moderated. Other
      development discussions and end-user forums happened on two separated ML (one
      for V4L and another for DVB).
      
      At the beginning of 2009, we've created linux-media@vger.kernel.org, meaning to
      be the main upstream development mailing list for drivers/media, including V4L
      and DVB core and drivers.
      
      The choice for vger.kernel.org were due to the fact that most of upstream lists
      are there. Also, its anti-spam filtering rules are better than what we
      currently have at linuxtv.org.
      
      For now, both video4linux-list and linux-dvb ML will remain active, but more
      focused on end users. It is expected that those lists will gradually be
      replaced also by linux-media@vger.kernel.org.
      
      This patch reflect those changes at linux MAINTAINERS file.
      
      Since the development and bug fix discussions will now happen at
      linux-media@vger.kernel.org, this patch does the following changes
      
      	- replaces v4l-dvb-maintainer ML for the new
      	  linux-media@vger.kernel.org;
      
      	- replaces video4linux ML for the new linux-media@vger.kernel.org;
      
      While here, it also:
      
      	- Fixes the existing -git tree entries for drivers/media (since the
                repository name changed);
      
      	- Adds the missing drivers/media -git tree entry on a few maintainers
                entries that don't point to a tree.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      661263b5
    • Mauro Carvalho Chehab's avatar
      V4L/DVB (10190): cx88: Fix some Kbuild troubles · e32fadc4
      Mauro Carvalho Chehab authored
      As Randy Dunlap <randy.dunlap@oracle.com> reported, cx88 has some compilation issues:
      
      drivers/built-in.o: In function `cx88_call_i2c_clients':
      (.text+0x20af17): undefined reference to `videobuf_dvb_get_frontend'
      drivers/built-in.o: In function `cx8802_probe':
      cx88-mpeg.c:(.devinit.text+0x268c4): undefined reference to `videobuf_dvb_alloc_frontend'
      cx88-mpeg.c:(.devinit.text+0x268ea): undefined reference to `videobuf_dvb_dealloc_frontends'
      
      With those configs:
      
      CONFIG_VIDEO_CX88=y
      CONFIG_VIDEO_CX88_BLACKBIRD=y
      CONFIG_VIDEO_CX88_DVB=m
      CONFIG_DVB_CORE=m
      
      After carefully examining the code, with the current code, several cx88 drivers
      (cx8800, cx8802, cx88_dvb and cx88_blackbird) should be compiled as a module,
      if one of them is marked as such. Just fixing Kconfig could create a very complex
      set of rules. Also, this hides a problem with the current approach where the dvb
      functionality weren't confined inside dvb module.
      
      What happens is that:
      	- cx88-i2c (part of cx8800) has some special rules if DVB;
      	- cx88-mpeg (cx8802 module) has also part of DVB init code;
      	- cx88-dvb has the rest of the dvb code;
      	- cx88-blackbird can be used with cx88-mpeg, having cx88-dvb or not.
      
      So, instead of doing some tricks at Kconfig and wait for a next breakage,
      this patch moves the dvb code inside cx88-i2c and cx88-mpeg into cx88-dvb.
      
      Another problem is that cx8802 were being compiled, even without cx88-dvb
      and cx88-blackbird modules.
      
      While on this code, let's fix also a reported problem:
      http://www.linuxtv.org/pipermail/linux-dvb/2009-January/031225.html
      
      A solution for the issue were proposed here:
      http://www.mail-archive.com/linux-media@vger.kernel.org/msg00021.html
      
      Thanks to Randy, Andy, Gregoire and Thomas for helping us to detect
      and solve the issues.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      e32fadc4
    • Mauro Carvalho Chehab's avatar
      V4L/DVB (10189): dm1105: Fix build with INPUT=m and DVB_DM1105=y · 571d864c
      Mauro Carvalho Chehab authored
      As reported by Randy Dunlap <randy.dunlap@oracle.com>:
      
      With CONFIG_INPUT=m and CONFIG_DVB_DM1105=y:
      
      drivers/built-in.o: In function `input_sync':
      dm1105.c:(.text+0x120c33): undefined reference to `input_event'
      drivers/built-in.o: In function `dm1105_emit_key':
      dm1105.c:(.text+0x120c6c): undefined reference to `input_event'
      dm1105.c:(.text+0x120c82): undefined reference to `input_event'
      dm1105.c:(.text+0x120cb2): undefined reference to `input_event'
      dm1105.c:(.text+0x120cd1): undefined reference to `input_event'
      drivers/built-in.o: In function `dm1105_ir_init':
      (.devinit.text+0xd8ae): undefined reference to `input_allocate_device'
      drivers/built-in.o: In function `dm1105_ir_init':
      (.devinit.text+0xd9f6): undefined reference to `input_register_device'
      drivers/built-in.o: In function `dm1105_ir_init':
      (.devinit.text+0xda09): undefined reference to `input_free_device'
      drivers/built-in.o: In function `dm1105_ir_exit':
      (.devexit.text+0xcde): undefined reference to `input_unregister_device'
      
      This is due to the lack of a dependency between dm1105 and CONFIG_INPUT
      
      Cc: Igor M. Liplianin <liplianin@me.by>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      571d864c
    • Julia Lawall's avatar
      V4L/DVB (10185): Use negated usb_endpoint_xfer_control, etc · 2230c3c8
      Julia Lawall authored
      This patch extends 13417982 by using
      usb_endpoint_xfer_control, usb_endpoint_xfer_isoc, usb_endpoint_xfer_bulk,
      and usb_endpoint_xfer_int in the negated case as well.
      
      The semantic patch that makes this change is as follows:
      (http://www.emn.fr/x-info/coccinelle/)
      
      // <smpl>
      @@ struct usb_endpoint_descriptor *epd; @@
      
      - (usb_endpoint_type(epd) != \(USB_ENDPOINT_XFER_CONTROL\|0\))
      + !usb_endpoint_xfer_control(epd)
      
      @@ struct usb_endpoint_descriptor *epd; @@
      
      - (usb_endpoint_type(epd) != \(USB_ENDPOINT_XFER_ISOC\|1\))
      + !usb_endpoint_xfer_isoc(epd)
      
      @@ struct usb_endpoint_descriptor *epd; @@
      
      - (usb_endpoint_type(epd) != \(USB_ENDPOINT_XFER_BULK\|2\))
      + !usb_endpoint_xfer_bulk(epd)
      
      @@ struct usb_endpoint_descriptor *epd; @@
      
      - (usb_endpoint_type(epd) != \(USB_ENDPOINT_XFER_INT\|3\))
      + !usb_endpoint_xfer_int(epd)
      // </smpl>
      Signed-off-by: default avatarJulia Lawall <julia@diku.dk>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      2230c3c8
    • Michael Krufky's avatar
      V4L/DVB (10182): tda8290: fix TDA8290 + TDA18271 initialization · 439b72b6
      Michael Krufky authored
      Don't call tda8290_init_tuner unless we have either a TDA8275 or TDA8275A
      present. Calling this function will cause a TDA18271 to get sick, so we
      should only call it when needed.
      Signed-off-by: default avatarMichael Krufky <mkrufky@linuxtv.org>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      439b72b6
    • Mauro Carvalho Chehab's avatar
      V4L/DVB (10181): v4l2-device: Fix some sparse warnings · 43266337
      Mauro Carvalho Chehab authored
      /home/v4l/master/v4l/v4l2-device.c:32:2: warning: Using plain integer as NULL pointer
      /home/v4l/master/v4l/v4l2-device.c:64:2: warning: Using plain integer as NULL pointer
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      43266337
    • Mauro Carvalho Chehab's avatar
      V4L/DVB (10180): drivers/media: Fix a number of sparse warnings · ffbc5f88
      Mauro Carvalho Chehab authored
      anysee.c:44:5: warning: symbol 'dvb_usb_anysee_delsys' was not declared. Should it be static?
      cx24116.c:378:3: warning: symbol 'CX24116_MODFEC_MODES' was not declared. Should it be static?
      stb0899_algo.c:57:5: warning: symbol 'stb0899_get_srate' was not declared. Should it be static?
      stb0899_algo.c:766:6: warning: symbol 'Log2Int' was not declared. Should it be static?
      stb0899_drv.c:137:20: warning: symbol 'stb0899_quant_tab' was not declared. Should it be static?
      stb0899_drv.c:180:20: warning: symbol 'stb0899_est_tab' was not declared. Should it be static?
      stb0899_drv.c:220:5: warning: symbol '_stb0899_read_reg' was not declared. Should it be static?
      budget-ci.c:1348:23: warning: symbol 'tt3200_stb6100_config' was not declared. Should it be static?
      /home/v4l/master/v4l/cx25840-core.c:190:6: warning: symbol 'cx25840_work_handler' was not declared. Should it be static?
      /home/v4l/master/v4l/m5602_s5k83a.c:116:6: warning: symbol 's5k83a_dump_registers' was not declared. Should it be static?
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      ffbc5f88
    • Mauro Carvalho Chehab's avatar
      V4L/DVB (10179): tda8290: Fix two sparse warnings · 4c27f1a4
      Mauro Carvalho Chehab authored
      /home/v4l/master/v4l/tda8290.c:233:7: warning: symbol 'i' shadows an earlier one
      /home/v4l/master/v4l/tda8290.c:178:3: warning: symbol 'fm_mode' was not declared. Should it be static?
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      4c27f1a4
    • Mauro Carvalho Chehab's avatar
      V4L/DVB (10178): dvb_frontend: Fix some sparse warnings due to static symbols · 072ce0c5
      Mauro Carvalho Chehab authored
      /home/v4l/master/v4l/dvb_frontend.c:838:19: warning: symbol 'dtv_cmds' was not declared. Should it be static?
      /home/v4l/master/v4l/dvb_frontend.c:1035:6: warning: symbol 'dtv_property_dump' was not declared. Should it be static?
      /home/v4l/master/v4l/dvb_frontend.c:1066:5: warning: symbol 'is_legacy_delivery_system' was not declared. Should it be static?
      /home/v4l/master/v4l/dvb_frontend.c:1080:6: warning: symbol 'dtv_property_cache_sync' was not declared. Should it be static?
      /home/v4l/master/v4l/dvb_frontend.c:1132:6: warning: symbol 'dtv_property_legacy_params_sync' was not declared. Should it be static?
      /home/v4l/master/v4l/dvb_frontend.c:1187:6: warning: symbol 'dtv_property_adv_params_sync' was not declared. Should it be static?
      /home/v4l/master/v4l/dvb_frontend.c:1222:6: warning: symbol 'dtv_property_cache_submit' was not declared. Should it be static?
      /home/v4l/master/v4l/dvb_frontend.c:1253:5: warning: symbol 'dtv_property_process_get' was not declared. Should it be static?
      /home/v4l/master/v4l/dvb_frontend.c:1362:5: warning: symbol 'dtv_property_process_set' was not declared. Should it be static?
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      072ce0c5
    • Mauro Carvalho Chehab's avatar
      V4L/DVB (10177): Fix sparse warnings on em28xx · 26cdc76b
      Mauro Carvalho Chehab authored
      /home/v4l/master/v4l/em28xx-core.c:396:25: warning: symbol 'outputs' was not declared. Should it be static?
      /home/v4l/master/v4l/em28xx-input.c:324:6: warning: symbol 'em28xx_ir_start' was not declared. Should it be static?
      /home/v4l/master/v4l/em28xx-cards.c:1925:5: warning: symbol 'em28xx_init_dev' was not declared. Should it be static?
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      26cdc76b
    • Eric Miao's avatar
      V4L/DVB (10176b): pxa-camera: fix redefinition warnings and missing DMA definitions · cfbaf4df
      Eric Miao authored
      1. now pxa_camera.c uses ioremap() for register access, pxa_camera.h is
         totally useless. Remove it.
      
      2. <asm/dma.h> does no longer include <mach/dma.h>, include the latter
         file explicitly
      
       delete mode 100644 drivers/media/video/pxa_camera.h
      Signed-off-by: default avatarEric Miao <eric.miao@marvell.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      cfbaf4df
    • Guennadi Liakhovetski's avatar
      V4L/DVB (10176a): Switch remaining clear_user_page users over to clear_user_highpage · c0cd5010
      Guennadi Liakhovetski authored
      Not all architectures provide clear_user_page(), but clear_user_highpage()
      is available everywhere at least via the compatibility inline function.
      
      Is this the "trivial patch" that's required for these two drivers?
      Signed-off-by: default avatarGuennadi Liakhovetski <g.liakhovetski@gmx.de>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      c0cd5010
  2. 07 Jan, 2009 7 commits
    • Harvey Harrison's avatar
    • Harvey Harrison's avatar
      trivial: replace last usages of __FUNCTION__ in kernel · 9b4778f6
      Harvey Harrison authored
      __FUNCTION__ is gcc-specific, use __func__
      Signed-off-by: default avatarHarvey Harrison <harvey.harrison@gmail.com>
      Acked-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9b4778f6
    • Linus Torvalds's avatar
      Merge branch 'sched-fixes-for-linus' of... · 8cfc7f9c
      Linus Torvalds authored
      Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        sched: fix possible recursive rq->lock
      8cfc7f9c
    • Linus Torvalds's avatar
      Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 · b424e8d3
      Linus Torvalds authored
      * 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6: (98 commits)
        PCI PM: Put PM callbacks in the order of execution
        PCI PM: Run default PM callbacks for all devices using new framework
        PCI PM: Register power state of devices during initialization
        PCI PM: Call pci_fixup_device from legacy routines
        PCI PM: Rearrange code in pci-driver.c
        PCI PM: Avoid touching devices behind bridges in unknown state
        PCI PM: Move pci_has_legacy_pm_support
        PCI PM: Power-manage devices without drivers during suspend-resume
        PCI PM: Add suspend counterpart of pci_reenable_device
        PCI PM: Fix poweroff and restore callbacks
        PCI: Use msleep instead of cpu_relax during ASPM link retraining
        PCI: PCIe portdrv: Add kerneldoc comments to remining core funtions
        PCI: PCIe portdrv: Rearrange code so that related things are together
        PCI: PCIe portdrv: Fix suspend and resume of PCI Express port services
        PCI: PCIe portdrv: Add kerneldoc comments to some core functions
        x86/PCI: Do not use interrupt links for devices using MSI-X
        net: sfc: Use pci_clear_master() to disable bus mastering
        PCI: Add pci_clear_master() as opposite of pci_set_master()
        PCI hotplug: remove redundant test in cpq hotplug
        PCI: pciehp: cleanup register and field definitions
        ...
      b424e8d3
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 · 7c7758f9
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6: (123 commits)
        wimax/i2400m: add CREDITS and MAINTAINERS entries
        wimax: export linux/wimax.h and linux/wimax/i2400m.h with headers_install
        i2400m: Makefile and Kconfig
        i2400m/SDIO: TX and RX path backends
        i2400m/SDIO: firmware upload backend
        i2400m/SDIO: probe/disconnect, dev init/shutdown and reset backends
        i2400m/SDIO: header for the SDIO subdriver
        i2400m/USB: TX and RX path backends
        i2400m/USB: firmware upload backend
        i2400m/USB: probe/disconnect, dev init/shutdown and reset backends
        i2400m/USB: header for the USB bus driver
        i2400m: debugfs controls
        i2400m: various functions for device management
        i2400m: RX and TX data/control paths
        i2400m: firmware loading and bootrom initialization
        i2400m: linkage to the networking stack
        i2400m: Generic probe/disconnect, reset and message passing
        i2400m: host/device procotol and core driver definitions
        i2400m: documentation and instructions for usage
        wimax: Makefile, Kconfig and docbook linkage for the stack
        ...
      7c7758f9
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/arjan/linux-2.6-async · 67acd8b4
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/arjan/linux-2.6-async:
        async: don't do the initcall stuff post boot
        bootchart: improve output based on Dave Jones' feedback
        async: make the final inode deletion an asynchronous event
        fastboot: Make libata initialization even more async
        fastboot: make the libata port scan asynchronous
        fastboot: make scsi probes asynchronous
        async: Asynchronous function calls to speed up kernel boot
      67acd8b4
    • David Miller's avatar
      topology: Fix sparc64 build. · b13d3720
      David Miller authored
      Due to changeset ba84be23 ("remove
      linux/hardirq.h from asm-generic/local.h") the sparc64 build started
      failing on drivers/base/topology.c:
      
        drivers/base/topology.c: In function ‘show_physical_package_id’:
        drivers/base/topology.c:103: error: implicit declaration of function ‘cpu_data’
        drivers/base/topology.c:103: error: request for member ‘proc_id’ in something not a structure or union
        drivers/base/topology.c: In function ‘show_core_id’:
        drivers/base/topology.c:106: error: request for member ‘core_id’ in something not a structure or union
      
      Adding the obvious fix of including asm/cpudata.h into asm/topology.h on
      sparc64 doesn't fix it, in fact it makes things worse because of the
      header file dependency chain:
      
      	linux/gfp.h --> linux/mmzone.h --> linux/topology.h -->
      	asm/topology.h --> asm/cpudata.h --> linux/percpu.h -->
      	linux/slab.h
      
      which results in:
      
        include/linux/slub_def.h: In function ‘kmalloc_large’:
        include/linux/slub_def.h:209: error: implicit declaration of function ‘__get_free_pages’
        include/linux/slub_def.h:209: error: ‘__GFP_COMP’ undeclared (first use in this function)
        include/linux/slub_def.h:209: error: (Each undeclared identifier is reported only once
        include/linux/slub_def.h:209: error: for each function it appears in.)
        include/linux/slub_def.h:209: warning: cast to pointer from integer of different size
      
      The simplest thing to do is to add yet another one-off hack like parts
      of the guilty changeset did, by putting an explicit linux/hardirq.h
      include into drivers/base/topology.c
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b13d3720