Merge git://git.infradead.org/mtd-2.6
Linus Torvalds [Mon, 20 Oct 2008 16:03:12 +0000 (09:03 -0700)]
* git://git.infradead.org/mtd-2.6: (69 commits)
  Revert "[MTD] m25p80.c code cleanup"
  [MTD] [NAND] GPIO driver depends on ARM... for now.
  [MTD] [NAND] sh_flctl: fix compile error
  [MTD] [NOR] AT49BV6416 has swapped erase regions
  [MTD] [NAND] GPIO NAND flash driver
  [MTD] cmdlineparts documentation change - explain where mtd-id comes from
  [MTD] cfi_cmdset_0002.c: Add Macronix CFI V1.0 TopBottom detection
  [MTD] [NAND] Fix compilation warnings in drivers/mtd/nand/cs553x_nand.c
  [JFFS2] Write buffer offset adjustment for NOR-ECC (Sibley) flash
  [MTD] mtdoops: Fix a bug where block may not be erased
  [MTD] mtdoops: Add a magic number to logged kernel oops
  [MTD] mtdoops: Fix an off by one error
  [JFFS2] Correct parameter names of jffs2_compress() in comments
  [MTD] [NAND] sh_flctl: add support for Renesas SuperH FLCTL
  [MTD] [NAND] Bug on atmel_nand HW ECC : OOB info not correctly written
  [MTD] [MAPS] Remove unused variable after ROM API cleanup.
  [MTD] m25p80.c extended jedec support (v2)
  [MTD] remove unused mtd parameter in of_mtd_parse_partitions()
  [MTD] [NAND] remove dead Kconfig associated with !CONFIG_PPC_MERGE
  [MTD] [NAND] driver extension to support NAND on TQM85xx modules
  ...

1  2 
drivers/mtd/mtdchar.c
drivers/mtd/mtdpart.c
fs/Kconfig
include/linux/pci.h

diff --combined drivers/mtd/mtdchar.c
@@@ -26,11 -26,13 +26,11 @@@ static void mtd_notify_add(struct mtd_i
        if (!mtd)
                return;
  
 -      device_create_drvdata(mtd_class, NULL,
 -                            MKDEV(MTD_CHAR_MAJOR, mtd->index*2),
 -                            NULL, "mtd%d", mtd->index);
 +      device_create(mtd_class, NULL, MKDEV(MTD_CHAR_MAJOR, mtd->index*2),
 +                    NULL, "mtd%d", mtd->index);
  
 -      device_create_drvdata(mtd_class, NULL,
 -                            MKDEV(MTD_CHAR_MAJOR, mtd->index*2+1),
 -                            NULL, "mtd%dro", mtd->index);
 +      device_create(mtd_class, NULL, MKDEV(MTD_CHAR_MAJOR, mtd->index*2+1),
 +                    NULL, "mtd%dro", mtd->index);
  }
  
  static void mtd_notify_remove(struct mtd_info* mtd)
@@@ -348,7 -350,7 +348,7 @@@ static void mtdchar_erase_callback (str
        wake_up((wait_queue_head_t *)instr->priv);
  }
  
- #if defined(CONFIG_MTD_OTP) || defined(CONFIG_MTD_ONENAND_OTP)
+ #ifdef CONFIG_HAVE_MTD_OTP
  static int otp_select_filemode(struct mtd_file_info *mfi, int mode)
  {
        struct mtd_info *mtd = mfi->mtd;
@@@ -408,20 -410,16 +408,20 @@@ static int mtd_ioctl(struct inode *inod
  
        case MEMGETREGIONINFO:
        {
 -              struct region_info_user ur;
 +              uint32_t ur_idx;
 +              struct mtd_erase_region_info *kr;
 +              struct region_info_user *ur = (struct region_info_user *) argp;
  
 -              if (copy_from_user(&ur, argp, sizeof(struct region_info_user)))
 +              if (get_user(ur_idx, &(ur->regionindex)))
                        return -EFAULT;
  
 -              if (ur.regionindex >= mtd->numeraseregions)
 -                      return -EINVAL;
 -              if (copy_to_user(argp, &(mtd->eraseregions[ur.regionindex]),
 -                              sizeof(struct mtd_erase_region_info)))
 +              kr = &(mtd->eraseregions[ur_idx]);
 +
 +              if (put_user(kr->offset, &(ur->offset))
 +                  || put_user(kr->erasesize, &(ur->erasesize))
 +                  || put_user(kr->numblocks, &(ur->numblocks)))
                        return -EFAULT;
 +
                break;
        }
  
                break;
        }
  
- #if defined(CONFIG_MTD_OTP) || defined(CONFIG_MTD_ONENAND_OTP)
+ #ifdef CONFIG_HAVE_MTD_OTP
        case OTPSELECT:
        {
                int mode;
diff --combined drivers/mtd/mtdpart.c
@@@ -214,7 -214,7 +214,7 @@@ static int part_erase(struct mtd_info *
        instr->addr += part->offset;
        ret = part->master->erase(part->master, instr);
        if (ret) {
-               if (instr->fail_addr != 0xffffffff)
+               if (instr->fail_addr != MTD_FAIL_ADDR_UNKNOWN)
                        instr->fail_addr -= part->offset;
                instr->addr -= part->offset;
        }
@@@ -226,7 -226,7 +226,7 @@@ void mtd_erase_callback(struct erase_in
        if (instr->mtd->erase == part_erase) {
                struct mtd_part *part = PART(instr->mtd);
  
-               if (instr->fail_addr != 0xffffffff)
+               if (instr->fail_addr != MTD_FAIL_ADDR_UNKNOWN)
                        instr->fail_addr -= part->offset;
                instr->addr -= part->offset;
        }
@@@ -564,8 -564,10 +564,8 @@@ int parse_mtd_partitions(struct mtd_inf
  
        for ( ; ret <= 0 && *types; types++) {
                parser = get_partition_parser(*types);
 -#ifdef CONFIG_KMOD
                if (!parser && !request_module("%s", *types))
                                parser = get_partition_parser(*types);
 -#endif
                if (!parser) {
                        printk(KERN_NOTICE "%s partition parsing not available\n",
                               *types);
diff --combined fs/Kconfig
@@@ -136,51 -136,37 +136,51 @@@ config EXT3_FS_SECURIT
          If you are not using a security module that requires using
          extended attributes for file security labels, say N.
  
 -config EXT4DEV_FS
 -      tristate "Ext4dev/ext4 extended fs support development (EXPERIMENTAL)"
 -      depends on EXPERIMENTAL
 +config EXT4_FS
 +      tristate "The Extended 4 (ext4) filesystem"
        select JBD2
        select CRC16
        help
 -        Ext4dev is a predecessor filesystem of the next generation
 -        extended fs ext4, based on ext3 filesystem code. It will be
 -        renamed ext4 fs later, once ext4dev is mature and stabilized.
 +        This is the next generation of the ext3 filesystem.
  
          Unlike the change from ext2 filesystem to ext3 filesystem,
 -        the on-disk format of ext4dev is not the same as ext3 any more:
 -        it is based on extent maps and it supports 48-bit physical block
 -        numbers. These combined on-disk format changes will allow
 -        ext4dev/ext4 to handle more than 16 TB filesystem volumes --
 -        a hard limit that ext3 cannot overcome without changing the
 -        on-disk format.
 -
 -        Other than extent maps and 48-bit block numbers, ext4dev also is
 -        likely to have other new features such as persistent preallocation,
 -        high resolution time stamps, and larger file support etc.  These
 -        features will be added to ext4dev gradually.
 +        the on-disk format of ext4 is not forwards compatible with
 +        ext3; it is based on extent maps and it supports 48-bit
 +        physical block numbers.  The ext4 filesystem also supports delayed
 +        allocation, persistent preallocation, high resolution time stamps,
 +        and a number of other features to improve performance and speed
 +        up fsck time.  For more information, please see the web pages at
 +        http://ext4.wiki.kernel.org.
 +
 +        The ext4 filesystem will support mounting an ext3
 +        filesystem; while there will be some performance gains from
 +        the delayed allocation and inode table readahead, the best
 +        performance gains will require enabling ext4 features in the
 +        filesystem, or formating a new filesystem as an ext4
 +        filesystem initially.
  
          To compile this file system support as a module, choose M here. The
 -        module will be called ext4dev.
 +        module will be called ext4.
  
          If unsure, say N.
  
 -config EXT4DEV_FS_XATTR
 -      bool "Ext4dev extended attributes"
 -      depends on EXT4DEV_FS
 +config EXT4DEV_COMPAT
 +      bool "Enable ext4dev compatibility"
 +      depends on EXT4_FS
 +      help
 +        Starting with 2.6.28, the name of the ext4 filesystem was
 +        renamed from ext4dev to ext4.  Unfortunately there are some
 +        legacy userspace programs (such as klibc's fstype) have
 +        "ext4dev" hardcoded.
 +
 +        To enable backwards compatibility so that systems that are
 +        still expecting to mount ext4 filesystems using ext4dev,
 +        chose Y here.   This feature will go away by 2.6.31, so
 +        please arrange to get your userspace programs fixed!
 +
 +config EXT4_FS_XATTR
 +      bool "Ext4 extended attributes"
 +      depends on EXT4_FS
        default y
        help
          Extended attributes are name:value pairs associated with inodes by
  
          If unsure, say N.
  
 -        You need this for POSIX ACL support on ext4dev/ext4.
 +        You need this for POSIX ACL support on ext4.
  
 -config EXT4DEV_FS_POSIX_ACL
 -      bool "Ext4dev POSIX Access Control Lists"
 -      depends on EXT4DEV_FS_XATTR
 +config EXT4_FS_POSIX_ACL
 +      bool "Ext4 POSIX Access Control Lists"
 +      depends on EXT4_FS_XATTR
        select FS_POSIX_ACL
        help
          POSIX Access Control Lists (ACLs) support permissions for users and
  
          If you don't know what Access Control Lists are, say N
  
 -config EXT4DEV_FS_SECURITY
 -      bool "Ext4dev Security Labels"
 -      depends on EXT4DEV_FS_XATTR
 +config EXT4_FS_SECURITY
 +      bool "Ext4 Security Labels"
 +      depends on EXT4_FS_XATTR
        help
          Security labels support alternative access control models
          implemented by security modules like SELinux.  This option
          enables an extended attribute handler for file security
 -        labels in the ext4dev/ext4 filesystem.
 +        labels in the ext4 filesystem.
  
          If you are not using a security module that requires using
          extended attributes for file security labels, say N.
@@@ -220,16 -206,17 +220,16 @@@ config JB
        tristate
        help
          This is a generic journalling layer for block devices.  It is
 -        currently used by the ext3 and OCFS2 file systems, but it could
 -        also be used to add journal support to other file systems or block
 +        currently used by the ext3 file system, but it could also be
 +        used to add journal support to other file systems or block
          devices such as RAID or LVM.
  
 -        If you are using the ext3 or OCFS2 file systems, you need to
 -        say Y here. If you are not using ext3 OCFS2 then you will probably
 -        want to say N.
 +        If you are using the ext3 file system, you need to say Y here.
 +        If you are not using ext3 then you will probably want to say N.
  
          To compile this device as a module, choose M here: the module will be
 -        called jbd.  If you are compiling ext3 or OCFS2 into the kernel,
 -        you cannot compile this code as a module.
 +        called jbd.  If you are compiling ext3 into the kernel, you
 +        cannot compile this code as a module.
  
  config JBD_DEBUG
        bool "JBD (ext3) debugging support"
@@@ -253,23 -240,22 +253,23 @@@ config JBD
        help
          This is a generic journaling layer for block devices that support
          both 32-bit and 64-bit block numbers.  It is currently used by
 -        the ext4dev/ext4 filesystem, but it could also be used to add
 +        the ext4 and OCFS2 filesystems, but it could also be used to add
          journal support to other file systems or block devices such
          as RAID or LVM.
  
 -        If you are using ext4dev/ext4, you need to say Y here. If you are not
 -        using ext4dev/ext4 then you will probably want to say N.
 +        If you are using ext4 or OCFS2, you need to say Y here.
 +        If you are not using ext4 or OCFS2 then you will
 +        probably want to say N.
  
          To compile this device as a module, choose M here. The module will be
 -        called jbd2.  If you are compiling ext4dev/ext4 into the kernel,
 +        called jbd2.  If you are compiling ext4 or OCFS2 into the kernel,
          you cannot compile this code as a module.
  
  config JBD2_DEBUG
 -      bool "JBD2 (ext4dev/ext4) debugging support"
 +      bool "JBD2 (ext4) debugging support"
        depends on JBD2 && DEBUG_FS
        help
 -        If you are using the ext4dev/ext4 journaled file system (or
 +        If you are using the ext4 journaled file system (or
          potentially any other filesystem/device using JBD2), this option
          allows you to enable debugging output while the system is running,
          in order to help track down any problems you are having.
  config FS_MBCACHE
  # Meta block cache for Extended Attributes (ext2/ext3/ext4)
        tristate
 -      depends on EXT2_FS_XATTR || EXT3_FS_XATTR || EXT4DEV_FS_XATTR
 -      default y if EXT2_FS=y || EXT3_FS=y || EXT4DEV_FS=y
 -      default m if EXT2_FS=m || EXT3_FS=m || EXT4DEV_FS=m
 +      depends on EXT2_FS_XATTR || EXT3_FS_XATTR || EXT4_FS_XATTR
 +      default y if EXT2_FS=y || EXT3_FS=y || EXT4_FS=y
 +      default m if EXT2_FS=m || EXT3_FS=m || EXT4_FS=m
  
  config REISERFS_FS
        tristate "Reiserfs support"
@@@ -433,14 -419,6 +433,14 @@@ config FS_POSIX_AC
        bool
        default n
  
 +config FILE_LOCKING
 +      bool "Enable POSIX file locking API" if EMBEDDED
 +      default y
 +      help
 +        This option enables standard file locking support, required
 +          for filesystems like NFS and for the flock() system
 +          call. Disabling this option saves about 11k.
 +
  source "fs/xfs/Kconfig"
  source "fs/gfs2/Kconfig"
  
@@@ -448,7 -426,7 +448,7 @@@ config OCFS2_F
        tristate "OCFS2 file system support"
        depends on NET && SYSFS
        select CONFIGFS_FS
 -      select JBD
 +      select JBD2
        select CRC32
        help
          OCFS2 is a general purpose extent based shared disk cluster file
@@@ -519,16 -497,6 +519,16 @@@ config OCFS2_DEBUG_F
          this option for debugging only as it is likely to decrease
          performance of the filesystem.
  
 +config OCFS2_COMPAT_JBD
 +      bool "Use JBD for compatibility"
 +      depends on OCFS2_FS
 +      default n
 +      select JBD
 +      help
 +        The ocfs2 filesystem now uses JBD2 for its journalling.  JBD2
 +        is backwards compatible with JBD.  It is safe to say N here.
 +        However, if you really want to use the original JBD, say Y here.
 +
  endif # BLOCK
  
  config DNOTIFY
@@@ -1168,195 -1136,7 +1168,7 @@@ config EFS_F
          To compile the EFS file system support as a module, choose M here: the
          module will be called efs.
  
- config JFFS2_FS
-       tristate "Journalling Flash File System v2 (JFFS2) support"
-       select CRC32
-       depends on MTD
-       help
-         JFFS2 is the second generation of the Journalling Flash File System
-         for use on diskless embedded devices. It provides improved wear
-         levelling, compression and support for hard links. You cannot use
-         this on normal block devices, only on 'MTD' devices.
-         Further information on the design and implementation of JFFS2 is
-         available at <http://sources.redhat.com/jffs2/>.
- config JFFS2_FS_DEBUG
-       int "JFFS2 debugging verbosity (0 = quiet, 2 = noisy)"
-       depends on JFFS2_FS
-       default "0"
-       help
-         This controls the amount of debugging messages produced by the JFFS2
-         code. Set it to zero for use in production systems. For evaluation,
-         testing and debugging, it's advisable to set it to one. This will
-         enable a few assertions and will print debugging messages at the
-         KERN_DEBUG loglevel, where they won't normally be visible. Level 2
-         is unlikely to be useful - it enables extra debugging in certain
-         areas which at one point needed debugging, but when the bugs were
-         located and fixed, the detailed messages were relegated to level 2.
-         If reporting bugs, please try to have available a full dump of the
-         messages at debug level 1 while the misbehaviour was occurring.
- config JFFS2_FS_WRITEBUFFER
-       bool "JFFS2 write-buffering support"
-       depends on JFFS2_FS
-       default y
-       help
-         This enables the write-buffering support in JFFS2.
-         This functionality is required to support JFFS2 on the following
-         types of flash devices:
-           - NAND flash
-           - NOR flash with transparent ECC
-           - DataFlash
- config JFFS2_FS_WBUF_VERIFY
-       bool "Verify JFFS2 write-buffer reads"
-       depends on JFFS2_FS_WRITEBUFFER
-       default n
-       help
-         This causes JFFS2 to read back every page written through the
-         write-buffer, and check for errors.
- config JFFS2_SUMMARY
-       bool "JFFS2 summary support (EXPERIMENTAL)"
-       depends on JFFS2_FS && EXPERIMENTAL
-       default n
-       help
-         This feature makes it possible to use summary information
-         for faster filesystem mount.
-         The summary information can be inserted into a filesystem image
-         by the utility 'sumtool'.
-         If unsure, say 'N'.
- config JFFS2_FS_XATTR
-       bool "JFFS2 XATTR support (EXPERIMENTAL)"
-       depends on JFFS2_FS && EXPERIMENTAL
-       default n
-       help
-         Extended attributes are name:value pairs associated with inodes by
-         the kernel or by users (see the attr(5) manual page, or visit
-         <http://acl.bestbits.at/> for details).
-         If unsure, say N.
- config JFFS2_FS_POSIX_ACL
-       bool "JFFS2 POSIX Access Control Lists"
-       depends on JFFS2_FS_XATTR
-       default y
-       select FS_POSIX_ACL
-       help
-         Posix Access Control Lists (ACLs) support permissions for users and
-         groups beyond the owner/group/world scheme.
-         To learn more about Access Control Lists, visit the Posix ACLs for
-         Linux website <http://acl.bestbits.at/>.
-         If you don't know what Access Control Lists are, say N
- config JFFS2_FS_SECURITY
-       bool "JFFS2 Security Labels"
-       depends on JFFS2_FS_XATTR
-       default y
-       help
-         Security labels support alternative access control models
-         implemented by security modules like SELinux.  This option
-         enables an extended attribute handler for file security
-         labels in the jffs2 filesystem.
-         If you are not using a security module that requires using
-         extended attributes for file security labels, say N.
- config JFFS2_COMPRESSION_OPTIONS
-       bool "Advanced compression options for JFFS2"
-       depends on JFFS2_FS
-       default n
-       help
-         Enabling this option allows you to explicitly choose which
-         compression modules, if any, are enabled in JFFS2. Removing
-         compressors can mean you cannot read existing file systems,
-         and enabling experimental compressors can mean that you
-         write a file system which cannot be read by a standard kernel.
-         If unsure, you should _definitely_ say 'N'.
- config JFFS2_ZLIB
-       bool "JFFS2 ZLIB compression support" if JFFS2_COMPRESSION_OPTIONS
-       select ZLIB_INFLATE
-       select ZLIB_DEFLATE
-       depends on JFFS2_FS
-       default y
-       help
-         Zlib is designed to be a free, general-purpose, legally unencumbered,
-         lossless data-compression library for use on virtually any computer
-         hardware and operating system. See <http://www.gzip.org/zlib/> for
-         further information.
-         Say 'Y' if unsure.
- config JFFS2_LZO
-       bool "JFFS2 LZO compression support" if JFFS2_COMPRESSION_OPTIONS
-       select LZO_COMPRESS
-       select LZO_DECOMPRESS
-       depends on JFFS2_FS
-       default n
-       help
-         minilzo-based compression. Generally works better than Zlib.
-         This feature was added in July, 2007. Say 'N' if you need
-         compatibility with older bootloaders or kernels.
- config JFFS2_RTIME
-       bool "JFFS2 RTIME compression support" if JFFS2_COMPRESSION_OPTIONS
-       depends on JFFS2_FS
-       default y
-       help
-         Rtime does manage to recompress already-compressed data. Say 'Y' if unsure.
- config JFFS2_RUBIN
-       bool "JFFS2 RUBIN compression support" if JFFS2_COMPRESSION_OPTIONS
-       depends on JFFS2_FS
-       default n
-       help
-         RUBINMIPS and DYNRUBIN compressors. Say 'N' if unsure.
- choice
-       prompt "JFFS2 default compression mode" if JFFS2_COMPRESSION_OPTIONS
-       default JFFS2_CMODE_PRIORITY
-       depends on JFFS2_FS
-       help
-         You can set here the default compression mode of JFFS2 from
-         the available compression modes. Don't touch if unsure.
- config JFFS2_CMODE_NONE
-       bool "no compression"
-       help
-         Uses no compression.
- config JFFS2_CMODE_PRIORITY
-       bool "priority"
-       help
-         Tries the compressors in a predefined order and chooses the first
-         successful one.
- config JFFS2_CMODE_SIZE
-       bool "size (EXPERIMENTAL)"
-       help
-         Tries all compressors and chooses the one which has the smallest
-         result.
- config JFFS2_CMODE_FAVOURLZO
-       bool "Favour LZO"
-       help
-         Tries all compressors and chooses the one which has the smallest
-         result but gives some preference to LZO (which has faster
-         decompression) at the expense of size.
- endchoice
+ source "fs/jffs2/Kconfig"
  # UBIFS File system configuration
  source "fs/ubifs/Kconfig"
  
@@@ -1797,28 -1577,6 +1609,28 @@@ config SUNRPC_XPRT_RDM
  
          If unsure, say N.
  
 +config SUNRPC_REGISTER_V4
 +      bool "Register local RPC services via rpcbind v4 (EXPERIMENTAL)"
 +      depends on SUNRPC && EXPERIMENTAL
 +      default n
 +      help
 +        Sun added support for registering RPC services at an IPv6
 +        address by creating two new versions of the rpcbind protocol
 +        (RFC 1833).
 +
 +        This option enables support in the kernel RPC server for
 +        registering kernel RPC services via version 4 of the rpcbind
 +        protocol.  If you enable this option, you must run a portmapper
 +        daemon that supports rpcbind protocol version 4.
 +
 +        Serving NFS over IPv6 from knfsd (the kernel's NFS server)
 +        requires that you enable this option and use a portmapper that
 +        supports rpcbind version 4.
 +
 +        If unsure, say N to get traditional behavior (register kernel
 +        RPC services using only rpcbind version 2).  Distributions
 +        using the legacy Linux portmapper daemon must say N here.
 +
  config RPCSEC_GSS_KRB5
        tristate "Secure RPC: Kerberos V mechanism (EXPERIMENTAL)"
        depends on SUNRPC && EXPERIMENTAL
@@@ -1913,7 -1671,148 +1725,7 @@@ config SMB_NLS_REMOT
  
          smbmount from samba 2.2.0 or later supports this.
  
 -config CIFS
 -      tristate "CIFS support (advanced network filesystem, SMBFS successor)"
 -      depends on INET
 -      select NLS
 -      help
 -        This is the client VFS module for the Common Internet File System
 -        (CIFS) protocol which is the successor to the Server Message Block 
 -        (SMB) protocol, the native file sharing mechanism for most early
 -        PC operating systems.  The CIFS protocol is fully supported by 
 -        file servers such as Windows 2000 (including Windows 2003, NT 4  
 -        and Windows XP) as well by Samba (which provides excellent CIFS
 -        server support for Linux and many other operating systems). Limited
 -        support for OS/2 and Windows ME and similar servers is provided as
 -        well.
 -
 -        The cifs module provides an advanced network file system
 -        client for mounting to CIFS compliant servers.  It includes
 -        support for DFS (hierarchical name space), secure per-user
 -        session establishment via Kerberos or NTLM or NTLMv2,
 -        safe distributed caching (oplock), optional packet
 -        signing, Unicode and other internationalization improvements.
 -        If you need to mount to Samba or Windows from this machine, say Y.
 -
 -config CIFS_STATS
 -        bool "CIFS statistics"
 -        depends on CIFS
 -        help
 -          Enabling this option will cause statistics for each server share
 -        mounted by the cifs client to be displayed in /proc/fs/cifs/Stats
 -
 -config CIFS_STATS2
 -      bool "Extended statistics"
 -      depends on CIFS_STATS
 -      help
 -        Enabling this option will allow more detailed statistics on SMB
 -        request timing to be displayed in /proc/fs/cifs/DebugData and also
 -        allow optional logging of slow responses to dmesg (depending on the
 -        value of /proc/fs/cifs/cifsFYI, see fs/cifs/README for more details).
 -        These additional statistics may have a minor effect on performance
 -        and memory utilization.
 -
 -        Unless you are a developer or are doing network performance analysis
 -        or tuning, say N.
 -
 -config CIFS_WEAK_PW_HASH
 -      bool "Support legacy servers which use weaker LANMAN security"
 -      depends on CIFS
 -      help
 -        Modern CIFS servers including Samba and most Windows versions
 -        (since 1997) support stronger NTLM (and even NTLMv2 and Kerberos)
 -        security mechanisms. These hash the password more securely
 -        than the mechanisms used in the older LANMAN version of the
 -        SMB protocol but LANMAN based authentication is needed to
 -        establish sessions with some old SMB servers.
 -
 -        Enabling this option allows the cifs module to mount to older
 -        LANMAN based servers such as OS/2 and Windows 95, but such
 -        mounts may be less secure than mounts using NTLM or more recent
 -        security mechanisms if you are on a public network.  Unless you
 -        have a need to access old SMB servers (and are on a private
 -        network) you probably want to say N.  Even if this support
 -        is enabled in the kernel build, LANMAN authentication will not be
 -        used automatically. At runtime LANMAN mounts are disabled but
 -        can be set to required (or optional) either in
 -        /proc/fs/cifs (see fs/cifs/README for more detail) or via an
 -        option on the mount command. This support is disabled by
 -        default in order to reduce the possibility of a downgrade
 -        attack.
 -
 -        If unsure, say N.
 -
 -config CIFS_UPCALL
 -        bool "Kerberos/SPNEGO advanced session setup"
 -        depends on CIFS && KEYS
 -        help
 -          Enables an upcall mechanism for CIFS which accesses
 -          userspace helper utilities to provide SPNEGO packaged (RFC 4178)
 -          Kerberos tickets which are needed to mount to certain secure servers
 -          (for which more secure Kerberos authentication is required). If
 -          unsure, say N.
 -
 -config CIFS_XATTR
 -        bool "CIFS extended attributes"
 -        depends on CIFS
 -        help
 -          Extended attributes are name:value pairs associated with inodes by
 -          the kernel or by users (see the attr(5) manual page, or visit
 -          <http://acl.bestbits.at/> for details).  CIFS maps the name of
 -          extended attributes beginning with the user namespace prefix
 -          to SMB/CIFS EAs. EAs are stored on Windows servers without the
 -          user namespace prefix, but their names are seen by Linux cifs clients
 -          prefaced by the user namespace prefix. The system namespace
 -          (used by some filesystems to store ACLs) is not supported at
 -          this time.
 -
 -          If unsure, say N.
 -
 -config CIFS_POSIX
 -        bool "CIFS POSIX Extensions"
 -        depends on CIFS_XATTR
 -        help
 -          Enabling this option will cause the cifs client to attempt to
 -        negotiate a newer dialect with servers, such as Samba 3.0.5
 -        or later, that optionally can handle more POSIX like (rather
 -        than Windows like) file behavior.  It also enables
 -        support for POSIX ACLs (getfacl and setfacl) to servers
 -        (such as Samba 3.10 and later) which can negotiate
 -        CIFS POSIX ACL support.  If unsure, say N.
 -
 -config CIFS_DEBUG2
 -      bool "Enable additional CIFS debugging routines"
 -      depends on CIFS
 -      help
 -         Enabling this option adds a few more debugging routines
 -         to the cifs code which slightly increases the size of
 -         the cifs module and can cause additional logging of debug
 -         messages in some error paths, slowing performance. This
 -         option can be turned off unless you are debugging
 -         cifs problems.  If unsure, say N.
 -
 -config CIFS_EXPERIMENTAL
 -        bool "CIFS Experimental Features (EXPERIMENTAL)"
 -        depends on CIFS && EXPERIMENTAL
 -        help
 -          Enables cifs features under testing. These features are
 -          experimental and currently include DFS support and directory 
 -          change notification ie fcntl(F_DNOTIFY), as well as the upcall
 -          mechanism which will be used for Kerberos session negotiation
 -          and uid remapping.  Some of these features also may depend on 
 -          setting a value of 1 to the pseudo-file /proc/fs/cifs/Experimental
 -          (which is disabled by default). See the file fs/cifs/README 
 -          for more details.  If unsure, say N.
 -
 -config CIFS_DFS_UPCALL
 -        bool "DFS feature support (EXPERIMENTAL)"
 -        depends on CIFS_EXPERIMENTAL
 -        depends on KEYS
 -        help
 -          Enables an upcall mechanism for CIFS which contacts userspace
 -          helper utilities to provide server name resolution (host names to
 -          IP addresses) which is needed for implicit mounts of DFS junction
 -          points. If unsure, say N.
 +source "fs/cifs/Kconfig"
  
  config NCP_FS
        tristate "NCP file system support (to mount NetWare volumes)"
diff --combined include/linux/pci.h
@@@ -534,7 -534,7 +534,7 @@@ extern void pci_sort_breadthfirst(void)
  #ifdef CONFIG_PCI_LEGACY
  struct pci_dev __deprecated *pci_find_device(unsigned int vendor,
                                             unsigned int device,
 -                                           const struct pci_dev *from);
 +                                           struct pci_dev *from);
  struct pci_dev __deprecated *pci_find_slot(unsigned int bus,
                                           unsigned int devfn);
  #endif /* CONFIG_PCI_LEGACY */
@@@ -550,7 -550,7 +550,7 @@@ struct pci_dev *pci_get_device(unsigne
                                struct pci_dev *from);
  struct pci_dev *pci_get_subsys(unsigned int vendor, unsigned int device,
                                unsigned int ss_vendor, unsigned int ss_device,
 -                              const struct pci_dev *from);
 +                              struct pci_dev *from);
  struct pci_dev *pci_get_slot(struct pci_bus *bus, unsigned int devfn);
  struct pci_dev *pci_get_bus_and_slot(unsigned int bus, unsigned int devfn);
  struct pci_dev *pci_get_class(unsigned int class, struct pci_dev *from);
@@@ -631,6 -631,8 +631,8 @@@ int __must_check pci_assign_resource(st
  int pci_select_bars(struct pci_dev *dev, unsigned long flags);
  
  /* ROM control related routines */
+ int pci_enable_rom(struct pci_dev *pdev);
+ void pci_disable_rom(struct pci_dev *pdev);
  void __iomem __must_check *pci_map_rom(struct pci_dev *pdev, size_t *size);
  void pci_unmap_rom(struct pci_dev *pdev, void __iomem *rom);
  size_t pci_get_rom_size(void __iomem *rom, size_t size);
@@@ -816,7 -818,7 +818,7 @@@ _PCI_NOP_ALL(write,
  
  static inline struct pci_dev *pci_find_device(unsigned int vendor,
                                              unsigned int device,
 -                                            const struct pci_dev *from)
 +                                            struct pci_dev *from)
  {
        return NULL;
  }
@@@ -838,7 -840,7 +840,7 @@@ static inline struct pci_dev *pci_get_s
                                             unsigned int device,
                                             unsigned int ss_vendor,
                                             unsigned int ss_device,
 -                                           const struct pci_dev *from)
 +                                           struct pci_dev *from)
  {
        return NULL;
  }