aboutsummaryrefslogtreecommitdiffstats
diff options
authorGreg Kroah-Hartman <gregkh@suse.de>2010-03-08 13:32:25 -0800
committerGreg Kroah-Hartman <gregkh@suse.de>2010-03-08 13:32:25 -0800
commit3ba1fb93e82987a2f72996644e2650f366be7d6f (patch)
treeaeb5c4d14b5825871e78502545ede22b213c8b65
parentdafdcba5da10bf72dcc1182db27d5aa290312441 (diff)
downloadpatches-3ba1fb93e82987a2f72996644e2650f366be7d6f.tar.gz
remove driver-core patches now in Linus's tree
-rw-r--r--driver-core/auxdisplay-move-cfag12864bfb-s-probe-function-to-.devinit.text.patch42
-rw-r--r--driver-core/driver-core-add-class_attr_string-for-simple-read-only-string.patch68
-rw-r--r--driver-core/driver-core-add-platform_create_bundle-helper.patch103
-rw-r--r--driver-core/driver-core-constify-struct-sysfs_ops-in-struct-kobj_type.patch826
-rw-r--r--driver-core/driver-core-convert-some-drivers-to-class_attr_string.patch252
-rw-r--r--driver-core/driver-core-create-lock-unlock-functions-for-struct-device.patch526
-rw-r--r--driver-core/driver-core-devtmpfs-remove-experimental-and-enable-it-by-default.patch74
-rw-r--r--driver-core/driver-core-devtmpfs-reset-inode-permissions-before-unlinking.patch45
-rw-r--r--driver-core/driver-core-disable-sbin-hotplug-by-default.patch42
-rw-r--r--driver-core/driver-core-firmware_class-remove-base.h-header-inclusion.patch31
-rw-r--r--driver-core/driver-core-fix-first-line-of-kernel-doc-for-a-few-functions.patch104
-rw-r--r--driver-core/driver-core-fix-race-condition-in-get_device_parent.patch118
-rw-r--r--driver-core/driver-core-make-platform_device_id-table-const.patch28
-rw-r--r--driver-core/driver-core-make-struct-platform_driver.id_table-const.patch48
-rw-r--r--driver-core/driver-core-require-valid-action-string-in-uevent-trigger.patch41
-rw-r--r--driver-core/driver-core-use-sysfs_rename_link-in-device_rename.patch53
-rw-r--r--driver-core/howto-updates-on-subsystem-trees-patchwork-next-vs.-mm.patch167
-rw-r--r--driver-core/i2c-move-i2c_omap-s-probe-function-to-.devinit.text.patch48
-rw-r--r--driver-core/kobject-constify-struct-kset_uevent_ops.patch176
-rw-r--r--driver-core/kobject-example-spelling-fixes.patch38
-rw-r--r--driver-core/kset-example-spelling-fixes.patch38
-rw-r--r--driver-core/media-move-omap24xxcam-s-probe-function-to-.devinit.text.patch43
-rw-r--r--driver-core/msi-laptop-add-resume-method-for-set-the-scm-load-again.patch67
-rw-r--r--driver-core/msi-laptop-add-threeg-sysfs-file-for-support-query-3g-state-by-standard-66-62-ec-command.patch98
-rw-r--r--driver-core/msi-laptop-depends-on-rfkill.patch40
-rw-r--r--driver-core/msi-laptop-detect-3g-device-exists-by-standard-ec-command.patch112
-rw-r--r--driver-core/msi-laptop-support-some-msi-3g-netbook-that-is-need-load-scm.patch340
-rw-r--r--driver-core/msi-laptop-support-standard-ec-66-62-command-on-msi-notebook-and-nebook.patch109
-rw-r--r--driver-core/platform-drivers-move-probe-to-.devinit.text-in-arch-arm.patch85
-rw-r--r--driver-core/platform-drivers-move-probe-to-.devinit.text-in-drivers-scsi.patch59
-rw-r--r--driver-core/platform-drivers-move-probe-to-.devinit.text-in-drivers-video.patch274
-rw-r--r--driver-core/sysdev-add-attribute-argument-to-class_attribute-show-store.patch438
-rw-r--r--driver-core/sysdev-add-sysdev_create-remove_files.patch44
-rw-r--r--driver-core/sysdev-convert-cpu-driver-sysdev-class-attributes.patch85
-rw-r--r--driver-core/sysdev-convert-node-driver-class-attributes-to-be-data-driven.patch110
-rw-r--r--driver-core/sysdev-convert-node-driver.patch119
-rw-r--r--driver-core/sysdev-fix-missing-s390-conversion.patch35
-rw-r--r--driver-core/sysdev-fix-type-of-sysdev-class-attribute-in-memory-driver.patch45
-rw-r--r--driver-core/sysdev-fix-up-the-probe-release-attributes.patch62
-rw-r--r--driver-core/sysdev-pass-attribute-in-sysdev_class-attributes-show-store.patch442
-rw-r--r--driver-core/sysdev-use-sysdev_class-attribute-arrays-in-node-driver.patch79
-rw-r--r--driver-core/sysfs-add-attribute-array-to-sysdev-classes.patch67
-rw-r--r--driver-core/sysfs-add-sysfs_add-remove_files-utility-functions.patch102
-rw-r--r--driver-core/sysfs-cache-the-last-sysfs_dirent-to-improve-readdir-scalability-v2.patch143
-rw-r--r--driver-core/sysfs-document-sysfs_attr_init-and-sysfs_bin_attr_init.patch64
-rw-r--r--driver-core/sysfs-fix-for-thinko-with-sysfs_bin_attr_init.patch59
-rw-r--r--driver-core/sysfs-implement-sysfs_rename_link.patch100
-rw-r--r--driver-core/sysfs-kill-unused-sysfs_sb-variable.patch52
-rw-r--r--driver-core/sysfs-only-take-active-references-on-attributes.patch70
-rw-r--r--driver-core/sysfs-pack-sysfs_dirent-more-tightly.patch37
-rw-r--r--driver-core/sysfs-pass-super_block-to-sysfs_get_inode.patch84
-rw-r--r--driver-core/sysfs-remove-sysfs_get-put_active_two.patch379
-rw-r--r--driver-core/sysfs-serialize-updates-to-the-vfs-inode.patch67
-rw-r--r--driver-core/sysfs-use-one-lockdep-class-per-sysfs-attribute.patch93
-rw-r--r--driver-core/sysfs-use-sysfs_attr_init-and-sysfs_bin_attr_init-on-dynamic-attributes.patch108
-rw-r--r--driver-core/sysfs-use-sysfs_attr_init-and-sysfs_bin_attr_init-on-module-dynamic-attributes.patch47
-rw-r--r--driver-core/sysfs-windfarm-init-sysfs-attributes.patch39
-rw-r--r--driver-core/uio-add-a-driver-for-hilscher-netx-based-fieldbus-cards.patch225
-rw-r--r--driver-core/uio-minor-kconfig-fixes.patch38
-rw-r--r--driver-core/uio-remove-smx-cryptengine-driver.patch197
-rw-r--r--driver-core/w1-move-omap_hdq-s-probe-function-to-.devinit.text.patch52
-rw-r--r--driver-core/x86-move-hp-wmi-s-probe-function-to-.devinit.text.patch53
-rw-r--r--series66
63 files changed, 0 insertions, 7696 deletions
diff --git a/driver-core/auxdisplay-move-cfag12864bfb-s-probe-function-to-.devinit.text.patch b/driver-core/auxdisplay-move-cfag12864bfb-s-probe-function-to-.devinit.text.patch
deleted file mode 100644
index 88e7de00c6adb8..00000000000000
--- a/driver-core/auxdisplay-move-cfag12864bfb-s-probe-function-to-.devinit.text.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From u.kleine-koenig@pengutronix.de Wed Feb 17 12:45:25 2010
-From: Uwe Kleine-K�nig <u.kleine-koenig@pengutronix.de>
-Date: Thu, 4 Feb 2010 20:56:56 +0100
-Subject: auxdisplay: move cfag12864bfb's probe function to .devinit.text
-To: Greg KH <gregkh@suse.de>
-Cc: Andrew Morton <akpm@linux-foundation.org>, Avuton Olrich <avuton@gmail.com>, Antonino Daplas <adaplas@gmail.com>
-Message-ID: <1265313417-5568-8-git-send-email-u.kleine-koenig@pengutronix.de>
-
-From: Uwe Kleine-K�nig <u.kleine-koenig@pengutronix.de>
-
-A pointer to cfag12864bfb_probe is passed to the core via
-platform_driver_register and so the function must not disappear when the
-.init sections are discarded. Otherwise (if also having HOTPLUG=y)
-unbinding and binding a device to the driver via sysfs will result in an
-oops as does a device being registered late.
-
-An alternative to this patch is using platform_driver_probe instead of
-platform_driver_register plus removing the pointer to the probe function
-from the struct platform_driver.
-
-Signed-off-by: Uwe Kleine-K�nig <u.kleine-koenig@pengutronix.de>
-Acked-by: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
-Cc: Andrew Morton <akpm@linux-foundation.org>
-Cc: Avuton Olrich <avuton@gmail.com>
-Cc: Antonino Daplas <adaplas@gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/auxdisplay/cfag12864bfb.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/auxdisplay/cfag12864bfb.c
-+++ b/drivers/auxdisplay/cfag12864bfb.c
-@@ -81,7 +81,7 @@ static struct fb_ops cfag12864bfb_ops =
- .fb_mmap = cfag12864bfb_mmap,
- };
-
--static int __init cfag12864bfb_probe(struct platform_device *device)
-+static int __devinit cfag12864bfb_probe(struct platform_device *device)
- {
- int ret = -EINVAL;
- struct fb_info *info = framebuffer_alloc(0, &device->dev);
diff --git a/driver-core/driver-core-add-class_attr_string-for-simple-read-only-string.patch b/driver-core/driver-core-add-class_attr_string-for-simple-read-only-string.patch
deleted file mode 100644
index 0b0a2c6fdcb699..00000000000000
--- a/driver-core/driver-core-add-class_attr_string-for-simple-read-only-string.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From andi@firstfloor.org Thu Jan 14 16:46:44 2010
-From: Andi Kleen <andi@firstfloor.org>
-Date: Tue, 5 Jan 2010 12:48:08 +0100 (CET)
-Subject: driver core: Add class_attr_string for simple read-only string
-To: linux-kernel@vger.kernel.org, greg@kroah.com
-Message-ID: <20100105114808.92E7EB17C2@basil.firstfloor.org>
-
-
-Several drivers just export a static string as class attributes.
-
-Use the new extensible attribute support to define a simple
-CLASS_ATTR_STRING() macro for this.
-
-This will allow to remove code from drivers in followon patches.
-
-Signed-off-by: Andi Kleen <ak@linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/base/class.c | 10 ++++++++++
- include/linux/device.h | 17 +++++++++++++++++
- 2 files changed, 27 insertions(+)
-
---- a/drivers/base/class.c
-+++ b/drivers/base/class.c
-@@ -490,6 +490,16 @@ void class_interface_unregister(struct c
- class_put(parent);
- }
-
-+ssize_t show_class_attr_string(struct class *class, struct class_attribute *attr,
-+ char *buf)
-+{
-+ struct class_attribute_string *cs;
-+ cs = container_of(attr, struct class_attribute_string, attr);
-+ return snprintf(buf, PAGE_SIZE, "%s\n", cs->str);
-+}
-+
-+EXPORT_SYMBOL_GPL(show_class_attr_string);
-+
- struct class_compat {
- struct kobject *kobj;
- };
---- a/include/linux/device.h
-+++ b/include/linux/device.h
-@@ -265,6 +265,23 @@ extern int __must_check class_create_fil
- extern void class_remove_file(struct class *class,
- const struct class_attribute *attr);
-
-+/* Simple class attribute that is just a static string */
-+
-+struct class_attribute_string {
-+ struct class_attribute attr;
-+ char *str;
-+};
-+
-+/* Currently read-only only */
-+#define _CLASS_ATTR_STRING(_name, _mode, _str) \
-+ { __ATTR(_name, _mode, show_class_attr_string, NULL), _str }
-+#define CLASS_ATTR_STRING(_name, _mode, _str) \
-+ struct class_attribute_string class_attr_##_name = \
-+ _CLASS_ATTR_STRING(_name, _mode, _str)
-+
-+extern ssize_t show_class_attr_string(struct class *class, struct class_attribute *attr,
-+ char *buf);
-+
- struct class_interface {
- struct list_head node;
- struct class *class;
diff --git a/driver-core/driver-core-add-platform_create_bundle-helper.patch b/driver-core/driver-core-add-platform_create_bundle-helper.patch
deleted file mode 100644
index fc4c753254919b..00000000000000
--- a/driver-core/driver-core-add-platform_create_bundle-helper.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-From dmitry.torokhov@gmail.com Tue Jan 5 14:23:17 2010
-From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
-Date: Tue, 29 Dec 2009 20:11:20 -0800
-Subject: Driver core: add platform_create_bundle() helper
-To: Greg KH <gregkh@suse.de>
-Message-ID: <20091230041120.GA2186@core.coreip.homeip.net>
-
-
-Many legacy-style module create singleton platform devices themselves,
-along with corresponding platform driver. Instead of replicating error
-handling code in all such drivers, provide a helper that allocates and
-registers a single platform device and a driver and binds them together.
-
-Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
-
----
- drivers/base/platform.c | 58 ++++++++++++++++++++++++++++++++++++++++
- include/linux/platform_device.h | 5 +++
- 2 files changed, 63 insertions(+)
-
---- a/drivers/base/platform.c
-+++ b/drivers/base/platform.c
-@@ -548,6 +548,64 @@ int __init_or_module platform_driver_pro
- }
- EXPORT_SYMBOL_GPL(platform_driver_probe);
-
-+/**
-+ * platform_create_bundle - register driver and create corresponding device
-+ * @driver: platform driver structure
-+ * @probe: the driver probe routine, probably from an __init section
-+ * @res: set of resources that needs to be allocated for the device
-+ * @n_res: number of resources
-+ * @data: platform specific data for this platform device
-+ * @size: size of platform specific data
-+ *
-+ * Use this in legacy-style modules that probe hardware directly and
-+ * register a single platform device and corresponding platform driver.
-+ */
-+struct platform_device * __init_or_module platform_create_bundle(
-+ struct platform_driver *driver,
-+ int (*probe)(struct platform_device *),
-+ struct resource *res, unsigned int n_res,
-+ const void *data, size_t size)
-+{
-+ struct platform_device *pdev;
-+ int error;
-+
-+ pdev = platform_device_alloc(driver->driver.name, -1);
-+ if (!pdev) {
-+ error = -ENOMEM;
-+ goto err_out;
-+ }
-+
-+ if (res) {
-+ error = platform_device_add_resources(pdev, res, n_res);
-+ if (error)
-+ goto err_pdev_put;
-+ }
-+
-+ if (data) {
-+ error = platform_device_add_data(pdev, data, size);
-+ if (error)
-+ goto err_pdev_put;
-+ }
-+
-+ error = platform_device_add(pdev);
-+ if (error)
-+ goto err_pdev_put;
-+
-+ error = platform_driver_probe(driver, probe);
-+ if (error)
-+ goto err_pdev_del;
-+
-+ return pdev;
-+
-+err_pdev_del:
-+ platform_device_del(pdev);
-+err_pdev_put:
-+ platform_device_put(pdev);
-+err_out:
-+ return ERR_PTR(error);
-+}
-+EXPORT_SYMBOL_GPL(platform_create_bundle);
-+
- /* modalias support enables more hands-off userspace setup:
- * (a) environment variable lets new-style hotplug events work once system is
- * fully running: "modprobe $MODALIAS"
---- a/include/linux/platform_device.h
-+++ b/include/linux/platform_device.h
-@@ -77,6 +77,11 @@ extern int platform_driver_probe(struct
- #define platform_get_drvdata(_dev) dev_get_drvdata(&(_dev)->dev)
- #define platform_set_drvdata(_dev,data) dev_set_drvdata(&(_dev)->dev, (data))
-
-+extern struct platform_device *platform_create_bundle(struct platform_driver *driver,
-+ int (*probe)(struct platform_device *),
-+ struct resource *res, unsigned int n_res,
-+ const void *data, size_t size);
-+
- /* early platform driver interface */
- struct early_platform_driver {
- const char *class_str;
diff --git a/driver-core/driver-core-constify-struct-sysfs_ops-in-struct-kobj_type.patch b/driver-core/driver-core-constify-struct-sysfs_ops-in-struct-kobj_type.patch
deleted file mode 100644
index e981039e1e3316..00000000000000
--- a/driver-core/driver-core-constify-struct-sysfs_ops-in-struct-kobj_type.patch
+++ /dev/null
@@ -1,826 +0,0 @@
-From re.emese@gmail.com Wed Jan 27 15:54:13 2010
-From: Emese Revfy <re.emese@gmail.com>
-Date: Tue, 19 Jan 2010 02:58:23 +0100
-Subject: Driver core: Constify struct sysfs_ops in struct kobj_type
-To: Greg KH <gregkh@suse.de>
-Cc: Al Viro <viro@ZenIV.linux.org.uk>, teigland@redhat.com, Matt_Domsch@dell.com, maciej.sosnowski@intel.com, hjk@linutronix.de, Pekka Enberg <penberg@cs.helsinki.fi>, jens.axboe@oracle.com, shemminger@vyatta.com, akpm@linux-foundation.org, davem@davemloft.net, torvalds@linux-foundation.org
-Message-ID: <4B5511BF.60508@gmail.com>
-
-
-From: Emese Revfy <re.emese@gmail.com>
-
-Constify struct sysfs_ops.
-
-This is part of the ops structure constification
-effort started by Arjan van de Ven et al.
-
-Benefits of this constification:
-
- * prevents modification of data that is shared
- (referenced) by many other structure instances
- at runtime
-
- * detects/prevents accidental (but not intentional)
- modification attempts on archs that enforce
- read-only kernel data at runtime
-
- * potentially better optimized code as the compiler
- can assume that the const data cannot be changed
-
- * the compiler/linker move const data into .rodata
- and therefore exclude them from false sharing
-
-Signed-off-by: Emese Revfy <re.emese@gmail.com>
-Acked-by: David Teigland <teigland@redhat.com>
-Acked-by: Matt Domsch <Matt_Domsch@dell.com>
-Acked-by: Maciej Sosnowski <maciej.sosnowski@intel.com>
-Acked-by: Hans J. Koch <hjk@linutronix.de>
-Acked-by: Pekka Enberg <penberg@cs.helsinki.fi>
-Acked-by: Jens Axboe <jens.axboe@oracle.com>
-Acked-by: Stephen Hemminger <shemminger@vyatta.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- Documentation/kobject.txt | 2 +-
- arch/ia64/kernel/topology.c | 2 +-
- arch/powerpc/kernel/cacheinfo.c | 2 +-
- arch/sh/kernel/cpu/sh4/sq.c | 2 +-
- arch/x86/kernel/cpu/intel_cacheinfo.c | 2 +-
- arch/x86/kernel/cpu/mcheck/mce_amd.c | 2 +-
- block/blk-integrity.c | 2 +-
- block/blk-sysfs.c | 2 +-
- block/elevator.c | 2 +-
- drivers/base/bus.c | 4 ++--
- drivers/base/class.c | 2 +-
- drivers/base/core.c | 2 +-
- drivers/base/sys.c | 4 ++--
- drivers/block/pktcdvd.c | 2 +-
- drivers/cpufreq/cpufreq.c | 2 +-
- drivers/cpuidle/sysfs.c | 4 ++--
- drivers/dma/ioat/dma.c | 2 +-
- drivers/dma/ioat/dma.h | 2 +-
- drivers/edac/edac_device_sysfs.c | 6 +++---
- drivers/edac/edac_mc_sysfs.c | 4 ++--
- drivers/edac/edac_pci_sysfs.c | 4 ++--
- drivers/firmware/edd.c | 2 +-
- drivers/firmware/efivars.c | 2 +-
- drivers/firmware/iscsi_ibft.c | 2 +-
- drivers/firmware/memmap.c | 2 +-
- drivers/gpu/drm/ttm/ttm_bo.c | 2 +-
- drivers/gpu/drm/ttm/ttm_memory.c | 2 +-
- drivers/infiniband/core/cm.c | 2 +-
- drivers/infiniband/core/sysfs.c | 2 +-
- drivers/md/dm-sysfs.c | 2 +-
- drivers/md/md.c | 4 ++--
- drivers/net/ibmveth.c | 2 +-
- drivers/net/iseries_veth.c | 4 ++--
- drivers/parisc/pdc_stable.c | 2 +-
- drivers/pci/hotplug/fakephp.c | 2 +-
- drivers/pci/slot.c | 2 +-
- drivers/uio/uio.c | 4 ++--
- drivers/uwb/wlp/sysfs.c | 3 +--
- drivers/video/omap2/dss/manager.c | 2 +-
- drivers/video/omap2/dss/overlay.c | 2 +-
- drivers/xen/sys-hypervisor.c | 2 +-
- fs/btrfs/sysfs.c | 4 ++--
- fs/dlm/lockspace.c | 2 +-
- fs/ext4/super.c | 2 +-
- fs/gfs2/sys.c | 2 +-
- fs/ocfs2/cluster/masklog.c | 2 +-
- fs/sysfs/file.c | 8 ++++----
- include/linux/kobject.h | 4 ++--
- kernel/params.c | 2 +-
- lib/kobject.c | 2 +-
- mm/slub.c | 2 +-
- net/bridge/br_private.h | 2 +-
- net/bridge/br_sysfs_if.c | 2 +-
- samples/kobject/kset-example.c | 2 +-
- 54 files changed, 69 insertions(+), 70 deletions(-)
-
---- a/Documentation/kobject.txt
-+++ b/Documentation/kobject.txt
-@@ -266,7 +266,7 @@ kobj_type:
-
- struct kobj_type {
- void (*release)(struct kobject *);
-- struct sysfs_ops *sysfs_ops;
-+ const struct sysfs_ops *sysfs_ops;
- struct attribute **default_attrs;
- };
-
---- a/arch/ia64/kernel/topology.c
-+++ b/arch/ia64/kernel/topology.c
-@@ -282,7 +282,7 @@ static ssize_t cache_show(struct kobject
- return ret;
- }
-
--static struct sysfs_ops cache_sysfs_ops = {
-+static const struct sysfs_ops cache_sysfs_ops = {
- .show = cache_show
- };
-
---- a/arch/powerpc/kernel/cacheinfo.c
-+++ b/arch/powerpc/kernel/cacheinfo.c
-@@ -642,7 +642,7 @@ static struct kobj_attribute *cache_inde
- &cache_assoc_attr,
- };
-
--static struct sysfs_ops cache_index_ops = {
-+static const struct sysfs_ops cache_index_ops = {
- .show = cache_index_show,
- };
-
---- a/arch/sh/kernel/cpu/sh4/sq.c
-+++ b/arch/sh/kernel/cpu/sh4/sq.c
-@@ -326,7 +326,7 @@ static struct attribute *sq_sysfs_attrs[
- NULL,
- };
-
--static struct sysfs_ops sq_sysfs_ops = {
-+static const struct sysfs_ops sq_sysfs_ops = {
- .show = sq_sysfs_show,
- .store = sq_sysfs_store,
- };
---- a/arch/x86/kernel/cpu/intel_cacheinfo.c
-+++ b/arch/x86/kernel/cpu/intel_cacheinfo.c
-@@ -903,7 +903,7 @@ static ssize_t store(struct kobject *kob
- return ret;
- }
-
--static struct sysfs_ops sysfs_ops = {
-+static const struct sysfs_ops sysfs_ops = {
- .show = show,
- .store = store,
- };
---- a/arch/x86/kernel/cpu/mcheck/mce_amd.c
-+++ b/arch/x86/kernel/cpu/mcheck/mce_amd.c
-@@ -388,7 +388,7 @@ static ssize_t store(struct kobject *kob
- return ret;
- }
-
--static struct sysfs_ops threshold_ops = {
-+static const struct sysfs_ops threshold_ops = {
- .show = show,
- .store = store,
- };
---- a/block/blk-integrity.c
-+++ b/block/blk-integrity.c
-@@ -278,7 +278,7 @@ static struct attribute *integrity_attrs
- NULL,
- };
-
--static struct sysfs_ops integrity_ops = {
-+static const struct sysfs_ops integrity_ops = {
- .show = &integrity_attr_show,
- .store = &integrity_attr_store,
- };
---- a/block/blk-sysfs.c
-+++ b/block/blk-sysfs.c
-@@ -450,7 +450,7 @@ static void blk_release_queue(struct kob
- kmem_cache_free(blk_requestq_cachep, q);
- }
-
--static struct sysfs_ops queue_sysfs_ops = {
-+static const struct sysfs_ops queue_sysfs_ops = {
- .show = queue_attr_show,
- .store = queue_attr_store,
- };
---- a/block/elevator.c
-+++ b/block/elevator.c
-@@ -892,7 +892,7 @@ elv_attr_store(struct kobject *kobj, str
- return error;
- }
-
--static struct sysfs_ops elv_sysfs_ops = {
-+static const struct sysfs_ops elv_sysfs_ops = {
- .show = elv_attr_show,
- .store = elv_attr_store,
- };
---- a/drivers/base/bus.c
-+++ b/drivers/base/bus.c
-@@ -70,7 +70,7 @@ static ssize_t drv_attr_store(struct kob
- return ret;
- }
-
--static struct sysfs_ops driver_sysfs_ops = {
-+static const struct sysfs_ops driver_sysfs_ops = {
- .show = drv_attr_show,
- .store = drv_attr_store,
- };
-@@ -115,7 +115,7 @@ static ssize_t bus_attr_store(struct kob
- return ret;
- }
-
--static struct sysfs_ops bus_sysfs_ops = {
-+static const struct sysfs_ops bus_sysfs_ops = {
- .show = bus_attr_show,
- .store = bus_attr_store,
- };
---- a/drivers/base/class.c
-+++ b/drivers/base/class.c
-@@ -63,7 +63,7 @@ static void class_release(struct kobject
- kfree(cp);
- }
-
--static struct sysfs_ops class_sysfs_ops = {
-+static const struct sysfs_ops class_sysfs_ops = {
- .show = class_attr_show,
- .store = class_attr_store,
- };
---- a/drivers/base/core.c
-+++ b/drivers/base/core.c
-@@ -100,7 +100,7 @@ static ssize_t dev_attr_store(struct kob
- return ret;
- }
-
--static struct sysfs_ops dev_sysfs_ops = {
-+static const struct sysfs_ops dev_sysfs_ops = {
- .show = dev_attr_show,
- .store = dev_attr_store,
- };
---- a/drivers/base/sys.c
-+++ b/drivers/base/sys.c
-@@ -54,7 +54,7 @@ sysdev_store(struct kobject *kobj, struc
- return -EIO;
- }
-
--static struct sysfs_ops sysfs_ops = {
-+static const struct sysfs_ops sysfs_ops = {
- .show = sysdev_show,
- .store = sysdev_store,
- };
-@@ -104,7 +104,7 @@ static ssize_t sysdev_class_store(struct
- return -EIO;
- }
-
--static struct sysfs_ops sysfs_class_ops = {
-+static const struct sysfs_ops sysfs_class_ops = {
- .show = sysdev_class_show,
- .store = sysdev_class_store,
- };
---- a/drivers/block/pktcdvd.c
-+++ b/drivers/block/pktcdvd.c
-@@ -284,7 +284,7 @@ static ssize_t kobj_pkt_store(struct kob
- return len;
- }
-
--static struct sysfs_ops kobj_pkt_ops = {
-+static const struct sysfs_ops kobj_pkt_ops = {
- .show = kobj_pkt_show,
- .store = kobj_pkt_store
- };
---- a/drivers/cpufreq/cpufreq.c
-+++ b/drivers/cpufreq/cpufreq.c
-@@ -766,7 +766,7 @@ static void cpufreq_sysfs_release(struct
- complete(&policy->kobj_unregister);
- }
-
--static struct sysfs_ops sysfs_ops = {
-+static const struct sysfs_ops sysfs_ops = {
- .show = show,
- .store = store,
- };
---- a/drivers/cpuidle/sysfs.c
-+++ b/drivers/cpuidle/sysfs.c
-@@ -195,7 +195,7 @@ static ssize_t cpuidle_store(struct kobj
- return ret;
- }
-
--static struct sysfs_ops cpuidle_sysfs_ops = {
-+static const struct sysfs_ops cpuidle_sysfs_ops = {
- .show = cpuidle_show,
- .store = cpuidle_store,
- };
-@@ -281,7 +281,7 @@ static ssize_t cpuidle_state_show(struct
- return ret;
- }
-
--static struct sysfs_ops cpuidle_state_sysfs_ops = {
-+static const struct sysfs_ops cpuidle_state_sysfs_ops = {
- .show = cpuidle_state_show,
- };
-
---- a/drivers/dma/ioat/dma.c
-+++ b/drivers/dma/ioat/dma.c
-@@ -1138,7 +1138,7 @@ ioat_attr_show(struct kobject *kobj, str
- return entry->show(&chan->common, page);
- }
-
--struct sysfs_ops ioat_sysfs_ops = {
-+const struct sysfs_ops ioat_sysfs_ops = {
- .show = ioat_attr_show,
- };
-
---- a/drivers/dma/ioat/dma.h
-+++ b/drivers/dma/ioat/dma.h
-@@ -346,7 +346,7 @@ bool ioat_cleanup_preamble(struct ioat_c
- unsigned long *phys_complete);
- void ioat_kobject_add(struct ioatdma_device *device, struct kobj_type *type);
- void ioat_kobject_del(struct ioatdma_device *device);
--extern struct sysfs_ops ioat_sysfs_ops;
-+extern const struct sysfs_ops ioat_sysfs_ops;
- extern struct ioat_sysfs_entry ioat_version_attr;
- extern struct ioat_sysfs_entry ioat_cap_attr;
- #endif /* IOATDMA_H */
---- a/drivers/edac/edac_device_sysfs.c
-+++ b/drivers/edac/edac_device_sysfs.c
-@@ -137,7 +137,7 @@ static ssize_t edac_dev_ctl_info_store(s
- }
-
- /* edac_dev file operations for an 'ctl_info' */
--static struct sysfs_ops device_ctl_info_ops = {
-+static const struct sysfs_ops device_ctl_info_ops = {
- .show = edac_dev_ctl_info_show,
- .store = edac_dev_ctl_info_store
- };
-@@ -373,7 +373,7 @@ static ssize_t edac_dev_instance_store(s
- }
-
- /* edac_dev file operations for an 'instance' */
--static struct sysfs_ops device_instance_ops = {
-+static const struct sysfs_ops device_instance_ops = {
- .show = edac_dev_instance_show,
- .store = edac_dev_instance_store
- };
-@@ -476,7 +476,7 @@ static ssize_t edac_dev_block_store(stru
- }
-
- /* edac_dev file operations for a 'block' */
--static struct sysfs_ops device_block_ops = {
-+static const struct sysfs_ops device_block_ops = {
- .show = edac_dev_block_show,
- .store = edac_dev_block_store
- };
---- a/drivers/edac/edac_mc_sysfs.c
-+++ b/drivers/edac/edac_mc_sysfs.c
-@@ -245,7 +245,7 @@ static ssize_t csrowdev_store(struct kob
- return -EIO;
- }
-
--static struct sysfs_ops csrowfs_ops = {
-+static const struct sysfs_ops csrowfs_ops = {
- .show = csrowdev_show,
- .store = csrowdev_store
- };
-@@ -575,7 +575,7 @@ static ssize_t mcidev_store(struct kobje
- }
-
- /* Intermediate show/store table */
--static struct sysfs_ops mci_ops = {
-+static const struct sysfs_ops mci_ops = {
- .show = mcidev_show,
- .store = mcidev_store
- };
---- a/drivers/edac/edac_pci_sysfs.c
-+++ b/drivers/edac/edac_pci_sysfs.c
-@@ -121,7 +121,7 @@ static ssize_t edac_pci_instance_store(s
- }
-
- /* fs_ops table */
--static struct sysfs_ops pci_instance_ops = {
-+static const struct sysfs_ops pci_instance_ops = {
- .show = edac_pci_instance_show,
- .store = edac_pci_instance_store
- };
-@@ -261,7 +261,7 @@ static ssize_t edac_pci_dev_store(struct
- return -EIO;
- }
-
--static struct sysfs_ops edac_pci_sysfs_ops = {
-+static const struct sysfs_ops edac_pci_sysfs_ops = {
- .show = edac_pci_dev_show,
- .store = edac_pci_dev_store
- };
---- a/drivers/firmware/edd.c
-+++ b/drivers/firmware/edd.c
-@@ -122,7 +122,7 @@ edd_attr_show(struct kobject * kobj, str
- return ret;
- }
-
--static struct sysfs_ops edd_attr_ops = {
-+static const struct sysfs_ops edd_attr_ops = {
- .show = edd_attr_show,
- };
-
---- a/drivers/firmware/efivars.c
-+++ b/drivers/firmware/efivars.c
-@@ -362,7 +362,7 @@ static ssize_t efivar_attr_store(struct
- return ret;
- }
-
--static struct sysfs_ops efivar_attr_ops = {
-+static const struct sysfs_ops efivar_attr_ops = {
- .show = efivar_attr_show,
- .store = efivar_attr_store,
- };
---- a/drivers/firmware/iscsi_ibft.c
-+++ b/drivers/firmware/iscsi_ibft.c
-@@ -519,7 +519,7 @@ static ssize_t ibft_show_attribute(struc
- return ret;
- }
-
--static struct sysfs_ops ibft_attr_ops = {
-+static const struct sysfs_ops ibft_attr_ops = {
- .show = ibft_show_attribute,
- };
-
---- a/drivers/firmware/memmap.c
-+++ b/drivers/firmware/memmap.c
-@@ -74,7 +74,7 @@ static struct attribute *def_attrs[] = {
- NULL
- };
-
--static struct sysfs_ops memmap_attr_ops = {
-+static const struct sysfs_ops memmap_attr_ops = {
- .show = memmap_attr_show,
- };
-
---- a/drivers/gpu/drm/ttm/ttm_bo.c
-+++ b/drivers/gpu/drm/ttm/ttm_bo.c
-@@ -128,7 +128,7 @@ static struct attribute *ttm_bo_global_a
- NULL
- };
-
--static struct sysfs_ops ttm_bo_global_ops = {
-+static const struct sysfs_ops ttm_bo_global_ops = {
- .show = &ttm_bo_global_show
- };
-
---- a/drivers/gpu/drm/ttm/ttm_memory.c
-+++ b/drivers/gpu/drm/ttm/ttm_memory.c
-@@ -152,7 +152,7 @@ static struct attribute *ttm_mem_zone_at
- NULL
- };
-
--static struct sysfs_ops ttm_mem_zone_ops = {
-+static const struct sysfs_ops ttm_mem_zone_ops = {
- .show = &ttm_mem_zone_show,
- .store = &ttm_mem_zone_store
- };
---- a/drivers/infiniband/core/cm.c
-+++ b/drivers/infiniband/core/cm.c
-@@ -3597,7 +3597,7 @@ static ssize_t cm_show_counter(struct ko
- atomic_long_read(&group->counter[cm_attr->index]));
- }
-
--static struct sysfs_ops cm_counter_ops = {
-+static const struct sysfs_ops cm_counter_ops = {
- .show = cm_show_counter
- };
-
---- a/drivers/infiniband/core/sysfs.c
-+++ b/drivers/infiniband/core/sysfs.c
-@@ -79,7 +79,7 @@ static ssize_t port_attr_show(struct kob
- return port_attr->show(p, port_attr, buf);
- }
-
--static struct sysfs_ops port_sysfs_ops = {
-+static const struct sysfs_ops port_sysfs_ops = {
- .show = port_attr_show
- };
-
---- a/drivers/md/dm-sysfs.c
-+++ b/drivers/md/dm-sysfs.c
-@@ -75,7 +75,7 @@ static struct attribute *dm_attrs[] = {
- NULL,
- };
-
--static struct sysfs_ops dm_sysfs_ops = {
-+static const struct sysfs_ops dm_sysfs_ops = {
- .show = dm_attr_show,
- };
-
---- a/drivers/md/md.c
-+++ b/drivers/md/md.c
-@@ -2642,7 +2642,7 @@ static void rdev_free(struct kobject *ko
- mdk_rdev_t *rdev = container_of(ko, mdk_rdev_t, kobj);
- kfree(rdev);
- }
--static struct sysfs_ops rdev_sysfs_ops = {
-+static const struct sysfs_ops rdev_sysfs_ops = {
- .show = rdev_attr_show,
- .store = rdev_attr_store,
- };
-@@ -4059,7 +4059,7 @@ static void md_free(struct kobject *ko)
- kfree(mddev);
- }
-
--static struct sysfs_ops md_sysfs_ops = {
-+static const struct sysfs_ops md_sysfs_ops = {
- .show = md_attr_show,
- .store = md_attr_store,
- };
---- a/drivers/net/ibmveth.c
-+++ b/drivers/net/ibmveth.c
-@@ -1577,7 +1577,7 @@ static struct attribute * veth_pool_attr
- NULL,
- };
-
--static struct sysfs_ops veth_pool_ops = {
-+static const struct sysfs_ops veth_pool_ops = {
- .show = veth_pool_show,
- .store = veth_pool_store,
- };
---- a/drivers/net/iseries_veth.c
-+++ b/drivers/net/iseries_veth.c
-@@ -384,7 +384,7 @@ static struct attribute *veth_cnx_defaul
- NULL
- };
-
--static struct sysfs_ops veth_cnx_sysfs_ops = {
-+static const struct sysfs_ops veth_cnx_sysfs_ops = {
- .show = veth_cnx_attribute_show
- };
-
-@@ -441,7 +441,7 @@ static struct attribute *veth_port_defau
- NULL
- };
-
--static struct sysfs_ops veth_port_sysfs_ops = {
-+static const struct sysfs_ops veth_port_sysfs_ops = {
- .show = veth_port_attribute_show
- };
-
---- a/drivers/parisc/pdc_stable.c
-+++ b/drivers/parisc/pdc_stable.c
-@@ -481,7 +481,7 @@ pdcspath_attr_store(struct kobject *kobj
- return ret;
- }
-
--static struct sysfs_ops pdcspath_attr_ops = {
-+static const struct sysfs_ops pdcspath_attr_ops = {
- .show = pdcspath_attr_show,
- .store = pdcspath_attr_store,
- };
---- a/drivers/pci/hotplug/fakephp.c
-+++ b/drivers/pci/hotplug/fakephp.c
-@@ -73,7 +73,7 @@ static void legacy_release(struct kobjec
- }
-
- static struct kobj_type legacy_ktype = {
-- .sysfs_ops = &(struct sysfs_ops){
-+ .sysfs_ops = &(const struct sysfs_ops){
- .store = legacy_store, .show = legacy_show
- },
- .release = &legacy_release,
---- a/drivers/pci/slot.c
-+++ b/drivers/pci/slot.c
-@@ -29,7 +29,7 @@ static ssize_t pci_slot_attr_store(struc
- return attribute->store ? attribute->store(slot, buf, len) : -EIO;
- }
-
--static struct sysfs_ops pci_slot_sysfs_ops = {
-+static const struct sysfs_ops pci_slot_sysfs_ops = {
- .show = pci_slot_attr_show,
- .store = pci_slot_attr_store,
- };
---- a/drivers/uio/uio.c
-+++ b/drivers/uio/uio.c
-@@ -129,7 +129,7 @@ static ssize_t map_type_show(struct kobj
- return entry->show(mem, buf);
- }
-
--static struct sysfs_ops map_sysfs_ops = {
-+static const struct sysfs_ops map_sysfs_ops = {
- .show = map_type_show,
- };
-
-@@ -217,7 +217,7 @@ static ssize_t portio_type_show(struct k
- return entry->show(port, buf);
- }
-
--static struct sysfs_ops portio_sysfs_ops = {
-+static const struct sysfs_ops portio_sysfs_ops = {
- .show = portio_type_show,
- };
-
---- a/drivers/uwb/wlp/sysfs.c
-+++ b/drivers/uwb/wlp/sysfs.c
-@@ -615,8 +615,7 @@ ssize_t wlp_wss_attr_store(struct kobjec
- return ret;
- }
-
--static
--struct sysfs_ops wss_sysfs_ops = {
-+static const struct sysfs_ops wss_sysfs_ops = {
- .show = wlp_wss_attr_show,
- .store = wlp_wss_attr_store,
- };
---- a/drivers/video/omap2/dss/manager.c
-+++ b/drivers/video/omap2/dss/manager.c
-@@ -341,7 +341,7 @@ static ssize_t manager_attr_store(struct
- return manager_attr->store(manager, buf, size);
- }
-
--static struct sysfs_ops manager_sysfs_ops = {
-+static const struct sysfs_ops manager_sysfs_ops = {
- .show = manager_attr_show,
- .store = manager_attr_store,
- };
---- a/drivers/video/omap2/dss/overlay.c
-+++ b/drivers/video/omap2/dss/overlay.c
-@@ -320,7 +320,7 @@ static ssize_t overlay_attr_store(struct
- return overlay_attr->store(overlay, buf, size);
- }
-
--static struct sysfs_ops overlay_sysfs_ops = {
-+static const struct sysfs_ops overlay_sysfs_ops = {
- .show = overlay_attr_show,
- .store = overlay_attr_store,
- };
---- a/drivers/xen/sys-hypervisor.c
-+++ b/drivers/xen/sys-hypervisor.c
-@@ -426,7 +426,7 @@ static ssize_t hyp_sysfs_store(struct ko
- return 0;
- }
-
--static struct sysfs_ops hyp_sysfs_ops = {
-+static const struct sysfs_ops hyp_sysfs_ops = {
- .show = hyp_sysfs_show,
- .store = hyp_sysfs_store,
- };
---- a/fs/btrfs/sysfs.c
-+++ b/fs/btrfs/sysfs.c
-@@ -164,12 +164,12 @@ static void btrfs_root_release(struct ko
- complete(&root->kobj_unregister);
- }
-
--static struct sysfs_ops btrfs_super_attr_ops = {
-+static const struct sysfs_ops btrfs_super_attr_ops = {
- .show = btrfs_super_attr_show,
- .store = btrfs_super_attr_store,
- };
-
--static struct sysfs_ops btrfs_root_attr_ops = {
-+static const struct sysfs_ops btrfs_root_attr_ops = {
- .show = btrfs_root_attr_show,
- .store = btrfs_root_attr_store,
- };
---- a/fs/dlm/lockspace.c
-+++ b/fs/dlm/lockspace.c
-@@ -148,7 +148,7 @@ static void lockspace_kobj_release(struc
- kfree(ls);
- }
-
--static struct sysfs_ops dlm_attr_ops = {
-+static const struct sysfs_ops dlm_attr_ops = {
- .show = dlm_attr_show,
- .store = dlm_attr_store,
- };
---- a/fs/ext4/super.c
-+++ b/fs/ext4/super.c
-@@ -2358,7 +2358,7 @@ static void ext4_sb_release(struct kobje
- }
-
-
--static struct sysfs_ops ext4_attr_ops = {
-+static const struct sysfs_ops ext4_attr_ops = {
- .show = ext4_attr_show,
- .store = ext4_attr_store,
- };
---- a/fs/gfs2/sys.c
-+++ b/fs/gfs2/sys.c
-@@ -49,7 +49,7 @@ static ssize_t gfs2_attr_store(struct ko
- return a->store ? a->store(sdp, buf, len) : len;
- }
-
--static struct sysfs_ops gfs2_attr_ops = {
-+static const struct sysfs_ops gfs2_attr_ops = {
- .show = gfs2_attr_show,
- .store = gfs2_attr_store,
- };
---- a/fs/ocfs2/cluster/masklog.c
-+++ b/fs/ocfs2/cluster/masklog.c
-@@ -136,7 +136,7 @@ static ssize_t mlog_store(struct kobject
- return mlog_mask_store(mlog_attr->mask, buf, count);
- }
-
--static struct sysfs_ops mlog_attr_ops = {
-+static const struct sysfs_ops mlog_attr_ops = {
- .show = mlog_show,
- .store = mlog_store,
- };
---- a/fs/sysfs/file.c
-+++ b/fs/sysfs/file.c
-@@ -53,7 +53,7 @@ struct sysfs_buffer {
- size_t count;
- loff_t pos;
- char * page;
-- struct sysfs_ops * ops;
-+ const struct sysfs_ops * ops;
- struct mutex mutex;
- int needs_read_fill;
- int event;
-@@ -75,7 +75,7 @@ static int fill_read_buffer(struct dentr
- {
- struct sysfs_dirent *attr_sd = dentry->d_fsdata;
- struct kobject *kobj = attr_sd->s_parent->s_dir.kobj;
-- struct sysfs_ops * ops = buffer->ops;
-+ const struct sysfs_ops * ops = buffer->ops;
- int ret = 0;
- ssize_t count;
-
-@@ -199,7 +199,7 @@ flush_write_buffer(struct dentry * dentr
- {
- struct sysfs_dirent *attr_sd = dentry->d_fsdata;
- struct kobject *kobj = attr_sd->s_parent->s_dir.kobj;
-- struct sysfs_ops * ops = buffer->ops;
-+ const struct sysfs_ops * ops = buffer->ops;
- int rc;
-
- /* need attr_sd for attr and ops, its parent for kobj */
-@@ -335,7 +335,7 @@ static int sysfs_open_file(struct inode
- struct sysfs_dirent *attr_sd = file->f_path.dentry->d_fsdata;
- struct kobject *kobj = attr_sd->s_parent->s_dir.kobj;
- struct sysfs_buffer *buffer;
-- struct sysfs_ops *ops;
-+ const struct sysfs_ops *ops;
- int error = -EACCES;
- char *p;
-
---- a/include/linux/kobject.h
-+++ b/include/linux/kobject.h
-@@ -106,7 +106,7 @@ extern char *kobject_get_path(struct kob
-
- struct kobj_type {
- void (*release)(struct kobject *kobj);
-- struct sysfs_ops *sysfs_ops;
-+ const struct sysfs_ops *sysfs_ops;
- struct attribute **default_attrs;
- };
-
-@@ -132,7 +132,7 @@ struct kobj_attribute {
- const char *buf, size_t count);
- };
-
--extern struct sysfs_ops kobj_sysfs_ops;
-+extern const struct sysfs_ops kobj_sysfs_ops;
-
- /**
- * struct kset - a set of kobjects of a specific type, belonging to a specific subsystem.
---- a/kernel/params.c
-+++ b/kernel/params.c
-@@ -722,7 +722,7 @@ static ssize_t module_attr_store(struct
- return ret;
- }
-
--static struct sysfs_ops module_sysfs_ops = {
-+static const struct sysfs_ops module_sysfs_ops = {
- .show = module_attr_show,
- .store = module_attr_store,
- };
---- a/lib/kobject.c
-+++ b/lib/kobject.c
-@@ -700,7 +700,7 @@ static ssize_t kobj_attr_store(struct ko
- return ret;
- }
-
--struct sysfs_ops kobj_sysfs_ops = {
-+const struct sysfs_ops kobj_sysfs_ops = {
- .show = kobj_attr_show,
- .store = kobj_attr_store,
- };
---- a/mm/slub.c
-+++ b/mm/slub.c
-@@ -4390,7 +4390,7 @@ static void kmem_cache_release(struct ko
- kfree(s);
- }
-
--static struct sysfs_ops slab_sysfs_ops = {
-+static const struct sysfs_ops slab_sysfs_ops = {
- .show = slab_attr_show,
- .store = slab_attr_store,
- };
---- a/net/bridge/br_private.h
-+++ b/net/bridge/br_private.h
-@@ -423,7 +423,7 @@ extern void br_ifinfo_notify(int event,
-
- #ifdef CONFIG_SYSFS
- /* br_sysfs_if.c */
--extern struct sysfs_ops brport_sysfs_ops;
-+extern const struct sysfs_ops brport_sysfs_ops;
- extern int br_sysfs_addif(struct net_bridge_port *p);
-
- /* br_sysfs_br.c */
---- a/net/bridge/br_sysfs_if.c
-+++ b/net/bridge/br_sysfs_if.c
-@@ -238,7 +238,7 @@ static ssize_t brport_store(struct kobje
- return ret;
- }
-
--struct sysfs_ops brport_sysfs_ops = {
-+const struct sysfs_ops brport_sysfs_ops = {
- .show = brport_show,
- .store = brport_store,
- };
---- a/samples/kobject/kset-example.c
-+++ b/samples/kobject/kset-example.c
-@@ -87,7 +87,7 @@ static ssize_t foo_attr_store(struct kob
- }
-
- /* Our custom sysfs_ops that we will associate with our ktype later on */
--static struct sysfs_ops foo_sysfs_ops = {
-+static const struct sysfs_ops foo_sysfs_ops = {
- .show = foo_attr_show,
- .store = foo_attr_store,
- };
diff --git a/driver-core/driver-core-convert-some-drivers-to-class_attr_string.patch b/driver-core/driver-core-convert-some-drivers-to-class_attr_string.patch
deleted file mode 100644
index 2979401f523189..00000000000000
--- a/driver-core/driver-core-convert-some-drivers-to-class_attr_string.patch
+++ /dev/null
@@ -1,252 +0,0 @@
-From andi@firstfloor.org Thu Jan 14 16:47:02 2010
-From: Andi Kleen <andi@firstfloor.org>
-Date: Tue, 5 Jan 2010 12:48:09 +0100 (CET)
-Subject: driver core: Convert some drivers to CLASS_ATTR_STRING
-To: linux-kernel@vger.kernel.org, greg@kroah.com
-Message-ID: <20100105114809.95C3EB17C2@basil.firstfloor.org>
-
-
-
-Convert some drivers who export a single string as class attribute
-to the new class_attr_string functions. This removes redundant
-code all over.
-
-Signed-off-by: Andi Kleen <ak@linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/gpu/drm/drm_sysfs.c | 19 ++++++++-----------
- drivers/infiniband/core/ucm.c | 15 +++++----------
- drivers/infiniband/core/user_mad.c | 11 +++--------
- drivers/infiniband/core/uverbs_main.c | 11 +++--------
- drivers/misc/phantom.c | 13 ++++---------
- drivers/staging/asus_oled/asus_oled.c | 15 ++++-----------
- 6 files changed, 27 insertions(+), 57 deletions(-)
-
---- a/drivers/gpu/drm/drm_sysfs.c
-+++ b/drivers/gpu/drm/drm_sysfs.c
-@@ -70,20 +70,17 @@ static int drm_class_resume(struct devic
- return 0;
- }
-
--/* Display the version of drm_core. This doesn't work right in current design */
--static ssize_t version_show(struct class *dev, struct class_attribute *attr,
-- char *buf)
--{
-- return sprintf(buf, "%s %d.%d.%d %s\n", CORE_NAME, CORE_MAJOR,
-- CORE_MINOR, CORE_PATCHLEVEL, CORE_DATE);
--}
--
- static char *drm_devnode(struct device *dev, mode_t *mode)
- {
- return kasprintf(GFP_KERNEL, "dri/%s", dev_name(dev));
- }
-
--static CLASS_ATTR(version, S_IRUGO, version_show, NULL);
-+static CLASS_ATTR_STRING(version, S_IRUGO,
-+ CORE_NAME " "
-+ __stringify(CORE_MAJOR) "."
-+ __stringify(CORE_MINOR) "."
-+ __stringify(CORE_PATCHLEVEL) " "
-+ CORE_DATE);
-
- /**
- * drm_sysfs_create - create a struct drm_sysfs_class structure
-@@ -110,7 +107,7 @@ struct class *drm_sysfs_create(struct mo
- class->suspend = drm_class_suspend;
- class->resume = drm_class_resume;
-
-- err = class_create_file(class, &class_attr_version);
-+ err = class_create_file(class, &class_attr_version.attr);
- if (err)
- goto err_out_class;
-
-@@ -133,7 +130,7 @@ void drm_sysfs_destroy(void)
- {
- if ((drm_class == NULL) || (IS_ERR(drm_class)))
- return;
-- class_remove_file(drm_class, &class_attr_version);
-+ class_remove_file(drm_class, &class_attr_version.attr);
- class_destroy(drm_class);
- }
-
---- a/drivers/infiniband/core/ucm.c
-+++ b/drivers/infiniband/core/ucm.c
-@@ -1336,13 +1336,8 @@ static void ib_ucm_remove_one(struct ib_
- device_unregister(&ucm_dev->dev);
- }
-
--static ssize_t show_abi_version(struct class *class,
-- struct class_attribute *attr,
-- char *buf)
--{
-- return sprintf(buf, "%d\n", IB_USER_CM_ABI_VERSION);
--}
--static CLASS_ATTR(abi_version, S_IRUGO, show_abi_version, NULL);
-+static CLASS_ATTR_STRING(abi_version, S_IRUGO,
-+ __stringify(IB_USER_CM_ABI_VERSION));
-
- static int __init ib_ucm_init(void)
- {
-@@ -1355,7 +1350,7 @@ static int __init ib_ucm_init(void)
- goto error1;
- }
-
-- ret = class_create_file(&cm_class, &class_attr_abi_version);
-+ ret = class_create_file(&cm_class, &class_attr_abi_version.attr);
- if (ret) {
- printk(KERN_ERR "ucm: couldn't create abi_version attribute\n");
- goto error2;
-@@ -1369,7 +1364,7 @@ static int __init ib_ucm_init(void)
- return 0;
-
- error3:
-- class_remove_file(&cm_class, &class_attr_abi_version);
-+ class_remove_file(&cm_class, &class_attr_abi_version.attr);
- error2:
- unregister_chrdev_region(IB_UCM_BASE_DEV, IB_UCM_MAX_DEVICES);
- error1:
-@@ -1379,7 +1374,7 @@ error1:
- static void __exit ib_ucm_cleanup(void)
- {
- ib_unregister_client(&ucm_client);
-- class_remove_file(&cm_class, &class_attr_abi_version);
-+ class_remove_file(&cm_class, &class_attr_abi_version.attr);
- unregister_chrdev_region(IB_UCM_BASE_DEV, IB_UCM_MAX_DEVICES);
- if (overflow_maj)
- unregister_chrdev_region(overflow_maj, IB_UCM_MAX_DEVICES);
---- a/drivers/infiniband/core/user_mad.c
-+++ b/drivers/infiniband/core/user_mad.c
-@@ -965,13 +965,8 @@ static ssize_t show_port(struct device *
- }
- static DEVICE_ATTR(port, S_IRUGO, show_port, NULL);
-
--static ssize_t show_abi_version(struct class *class,
-- struct class_attribute *attr,
-- char *buf)
--{
-- return sprintf(buf, "%d\n", IB_USER_MAD_ABI_VERSION);
--}
--static CLASS_ATTR(abi_version, S_IRUGO, show_abi_version, NULL);
-+static CLASS_ATTR_STRING(abi_version, S_IRUGO,
-+ __stringify(IB_USER_MAD_ABI_VERSION));
-
- static dev_t overflow_maj;
- static DECLARE_BITMAP(overflow_map, IB_UMAD_MAX_PORTS);
-@@ -1196,7 +1191,7 @@ static int __init ib_umad_init(void)
- goto out_chrdev;
- }
-
-- ret = class_create_file(umad_class, &class_attr_abi_version);
-+ ret = class_create_file(umad_class, &class_attr_abi_version.attr);
- if (ret) {
- printk(KERN_ERR "user_mad: couldn't create abi_version attribute\n");
- goto out_class;
---- a/drivers/infiniband/core/uverbs_main.c
-+++ b/drivers/infiniband/core/uverbs_main.c
-@@ -691,13 +691,8 @@ static ssize_t show_dev_abi_version(stru
- }
- static DEVICE_ATTR(abi_version, S_IRUGO, show_dev_abi_version, NULL);
-
--static ssize_t show_abi_version(struct class *class,
-- struct class_attribute *attr,
-- char *buf)
--{
-- return sprintf(buf, "%d\n", IB_USER_VERBS_ABI_VERSION);
--}
--static CLASS_ATTR(abi_version, S_IRUGO, show_abi_version, NULL);
-+static CLASS_ATTR_STRING(abi_version, S_IRUGO,
-+ __stringify(IB_USER_VERBS_ABI_VERSION));
-
- static dev_t overflow_maj;
- static DECLARE_BITMAP(overflow_map, IB_UVERBS_MAX_DEVICES);
-@@ -843,7 +838,7 @@ static int __init ib_uverbs_init(void)
- goto out_chrdev;
- }
-
-- ret = class_create_file(uverbs_class, &class_attr_abi_version);
-+ ret = class_create_file(uverbs_class, &class_attr_abi_version.attr);
- if (ret) {
- printk(KERN_ERR "user_verbs: couldn't create abi_version attribute\n");
- goto out_class;
---- a/drivers/misc/phantom.c
-+++ b/drivers/misc/phantom.c
-@@ -497,12 +497,7 @@ static struct pci_driver phantom_pci_dri
- .resume = phantom_resume
- };
-
--static ssize_t phantom_show_version(struct class *cls, struct class_attribute *attr, char *buf)
--{
-- return sprintf(buf, PHANTOM_VERSION "\n");
--}
--
--static CLASS_ATTR(version, 0444, phantom_show_version, NULL);
-+static CLASS_ATTR_STRING(version, 0444, PHANTOM_VERSION);
-
- static int __init phantom_init(void)
- {
-@@ -515,7 +510,7 @@ static int __init phantom_init(void)
- printk(KERN_ERR "phantom: can't register phantom class\n");
- goto err;
- }
-- retval = class_create_file(phantom_class, &class_attr_version);
-+ retval = class_create_file(phantom_class, &class_attr_version.attr);
- if (retval) {
- printk(KERN_ERR "phantom: can't create sysfs version file\n");
- goto err_class;
-@@ -541,7 +536,7 @@ static int __init phantom_init(void)
- err_unchr:
- unregister_chrdev_region(dev, PHANTOM_MAX_MINORS);
- err_attr:
-- class_remove_file(phantom_class, &class_attr_version);
-+ class_remove_file(phantom_class, &class_attr_version.attr);
- err_class:
- class_destroy(phantom_class);
- err:
-@@ -554,7 +549,7 @@ static void __exit phantom_exit(void)
-
- unregister_chrdev_region(MKDEV(phantom_major, 0), PHANTOM_MAX_MINORS);
-
-- class_remove_file(phantom_class, &class_attr_version);
-+ class_remove_file(phantom_class, &class_attr_version.attr);
- class_destroy(phantom_class);
-
- pr_debug("phantom: module successfully removed\n");
---- a/drivers/staging/asus_oled/asus_oled.c
-+++ b/drivers/staging/asus_oled/asus_oled.c
-@@ -770,15 +770,8 @@ static struct usb_driver oled_driver = {
- .id_table = id_table,
- };
-
--static ssize_t version_show(struct class *dev,
-- struct class_attribute *attr,
-- char *buf)
--{
-- return sprintf(buf, ASUS_OLED_UNDERSCORE_NAME " %s\n",
-- ASUS_OLED_VERSION);
--}
--
--static CLASS_ATTR(version, S_IRUGO, version_show, NULL);
-+static CLASS_ATTR_STRING(version, S_IRUGO,
-+ ASUS_OLED_UNDERSCORE_NAME " " ASUS_OLED_VERSION);
-
- static int __init asus_oled_init(void)
- {
-@@ -790,7 +783,7 @@ static int __init asus_oled_init(void)
- return PTR_ERR(oled_class);
- }
-
-- retval = class_create_file(oled_class, &class_attr_version);
-+ retval = class_create_file(oled_class, &class_attr_version.attr);
- if (retval) {
- err("Error creating class version file");
- goto error;
-@@ -812,7 +805,7 @@ error:
-
- static void __exit asus_oled_exit(void)
- {
-- class_remove_file(oled_class, &class_attr_version);
-+ class_remove_file(oled_class, &class_attr_version.attr);
- class_destroy(oled_class);
-
- usb_deregister(&oled_driver);
diff --git a/driver-core/driver-core-create-lock-unlock-functions-for-struct-device.patch b/driver-core/driver-core-create-lock-unlock-functions-for-struct-device.patch
deleted file mode 100644
index aa1eafcede2739..00000000000000
--- a/driver-core/driver-core-create-lock-unlock-functions-for-struct-device.patch
+++ /dev/null
@@ -1,526 +0,0 @@
-From foo@baz Wed Feb 17 10:57:05 PST 2010
-Date: Wed, 17 Feb 2010 10:57:05 -0800
-To: Greg KH <greg@kroah.com>
-From: Greg Kroah-Hartman <gregkh@suse.de>
-Subject: Driver core: create lock/unlock functions for struct device
-
-In the future, we are going to be changing the lock type for struct
-device (once we get the lockdep infrastructure properly worked out) To
-make that changeover easier, and to possibly burry the lock in a
-different part of struct device, let's create some functions to lock and
-unlock a device so that no out-of-core code needs to be changed in the
-future.
-
-This patch creates the device_lock/unlock/trylock() functions, and
-converts all in-tree users to them.
-
-Cc: Thomas Gleixner <tglx@linutronix.de>
-Cc: Jean Delvare <khali@linux-fr.org>
-Cc: Dave Young <hidave.darkstar@gmail.com>
-Cc: Ming Lei <tom.leiming@gmail.com>
-Cc: Jiri Kosina <jkosina@suse.cz>
-Cc: Phil Carmody <ext-phil.2.carmody@nokia.com>
-Cc: Arjan van de Ven <arjan@linux.intel.com>
-Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
-Cc: Rafael J. Wysocki <rjw@sisk.pl>
-Cc: Pavel Machek <pavel@ucw.cz>
-Cc: Len Brown <len.brown@intel.com>
-Cc: Magnus Damm <damm@igel.co.jp>
-Cc: Alan Stern <stern@rowland.harvard.edu>
-Cc: Randy Dunlap <randy.dunlap@oracle.com>
-Cc: Stefan Richter <stefanr@s5r6.in-berlin.de>
-Cc: David Brownell <dbrownell@users.sourceforge.net>
-Cc: Vegard Nossum <vegard.nossum@gmail.com>
-Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
-Cc: Alex Chiang <achiang@hp.com>
-Cc: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
-Cc: Andrew Morton <akpm@linux-foundation.org>
-Cc: Andrew Patterson <andrew.patterson@hp.com>
-Cc: Yu Zhao <yu.zhao@intel.com>
-Cc: Dominik Brodowski <linux@dominikbrodowski.net>
-Cc: Samuel Ortiz <sameo@linux.intel.com>
-Cc: Wolfram Sang <w.sang@pengutronix.de>
-Cc: CHENG Renquan <rqcheng@smu.edu.sg>
-Cc: Oliver Neukum <oliver@neukum.org>
-Cc: Frans Pop <elendil@planet.nl>
-Cc: David Vrabel <david.vrabel@csr.com>
-Cc: Kay Sievers <kay.sievers@vrfy.org>
-Cc: Sarah Sharp <sarah.a.sharp@linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
-
----
- drivers/base/bus.c | 20 ++++++++++----------
- drivers/base/dd.c | 38 +++++++++++++++++++-------------------
- drivers/base/power/main.c | 20 ++++++++++----------
- drivers/firewire/core-device.c | 5 ++---
- drivers/ieee1394/nodemgr.c | 5 ++---
- drivers/pci/bus.c | 4 ++--
- drivers/pci/pci.c | 4 ++--
- drivers/pcmcia/ds.c | 8 ++++----
- drivers/usb/core/driver.c | 4 ++--
- drivers/uwb/umc-bus.c | 4 ++--
- drivers/uwb/uwb-internal.h | 4 ++--
- include/linux/device.h | 17 ++++++++++++++++-
- include/linux/usb.h | 6 +++---
- 13 files changed, 76 insertions(+), 63 deletions(-)
-
---- a/drivers/base/bus.c
-+++ b/drivers/base/bus.c
-@@ -173,10 +173,10 @@ static ssize_t driver_unbind(struct devi
- dev = bus_find_device_by_name(bus, NULL, buf);
- if (dev && dev->driver == drv) {
- if (dev->parent) /* Needed for USB */
-- down(&dev->parent->sem);
-+ device_lock(dev->parent);
- device_release_driver(dev);
- if (dev->parent)
-- up(&dev->parent->sem);
-+ device_unlock(dev->parent);
- err = count;
- }
- put_device(dev);
-@@ -200,12 +200,12 @@ static ssize_t driver_bind(struct device
- dev = bus_find_device_by_name(bus, NULL, buf);
- if (dev && dev->driver == NULL && driver_match_device(drv, dev)) {
- if (dev->parent) /* Needed for USB */
-- down(&dev->parent->sem);
-- down(&dev->sem);
-+ device_lock(dev->parent);
-+ device_lock(dev);
- err = driver_probe_device(drv, dev);
-- up(&dev->sem);
-+ device_unlock(dev);
- if (dev->parent)
-- up(&dev->parent->sem);
-+ device_unlock(dev->parent);
-
- if (err > 0) {
- /* success */
-@@ -744,10 +744,10 @@ static int __must_check bus_rescan_devic
-
- if (!dev->driver) {
- if (dev->parent) /* Needed for USB */
-- down(&dev->parent->sem);
-+ device_lock(dev->parent);
- ret = device_attach(dev);
- if (dev->parent)
-- up(&dev->parent->sem);
-+ device_unlock(dev->parent);
- }
- return ret < 0 ? ret : 0;
- }
-@@ -779,10 +779,10 @@ int device_reprobe(struct device *dev)
- {
- if (dev->driver) {
- if (dev->parent) /* Needed for USB */
-- down(&dev->parent->sem);
-+ device_lock(dev->parent);
- device_release_driver(dev);
- if (dev->parent)
-- up(&dev->parent->sem);
-+ device_unlock(dev->parent);
- }
- return bus_rescan_devices_helper(dev, NULL);
- }
---- a/drivers/base/dd.c
-+++ b/drivers/base/dd.c
-@@ -85,7 +85,7 @@ static void driver_sysfs_remove(struct d
- * for before calling this. (It is ok to call with no other effort
- * from a driver's probe() method.)
- *
-- * This function must be called with @dev->sem held.
-+ * This function must be called with the device lock held.
- */
- int device_bind_driver(struct device *dev)
- {
-@@ -190,8 +190,8 @@ EXPORT_SYMBOL_GPL(wait_for_device_probe)
- * This function returns -ENODEV if the device is not registered,
- * 1 if the device is bound successfully and 0 otherwise.
- *
-- * This function must be called with @dev->sem held. When called for a
-- * USB interface, @dev->parent->sem must be held as well.
-+ * This function must be called with @dev lock held. When called for a
-+ * USB interface, @dev->parent lock must be held as well.
- */
- int driver_probe_device(struct device_driver *drv, struct device *dev)
- {
-@@ -233,13 +233,13 @@ static int __device_attach(struct device
- * 0 if no matching driver was found;
- * -ENODEV if the device is not registered.
- *
-- * When called for a USB interface, @dev->parent->sem must be held.
-+ * When called for a USB interface, @dev->parent lock must be held.
- */
- int device_attach(struct device *dev)
- {
- int ret = 0;
-
-- down(&dev->sem);
-+ device_lock(dev);
- if (dev->driver) {
- ret = device_bind_driver(dev);
- if (ret == 0)
-@@ -253,7 +253,7 @@ int device_attach(struct device *dev)
- ret = bus_for_each_drv(dev->bus, NULL, dev, __device_attach);
- pm_runtime_put_sync(dev);
- }
-- up(&dev->sem);
-+ device_unlock(dev);
- return ret;
- }
- EXPORT_SYMBOL_GPL(device_attach);
-@@ -276,13 +276,13 @@ static int __driver_attach(struct device
- return 0;
-
- if (dev->parent) /* Needed for USB */
-- down(&dev->parent->sem);
-- down(&dev->sem);
-+ device_lock(dev->parent);
-+ device_lock(dev);
- if (!dev->driver)
- driver_probe_device(drv, dev);
-- up(&dev->sem);
-+ device_unlock(dev);
- if (dev->parent)
-- up(&dev->parent->sem);
-+ device_unlock(dev->parent);
-
- return 0;
- }
-@@ -303,8 +303,8 @@ int driver_attach(struct device_driver *
- EXPORT_SYMBOL_GPL(driver_attach);
-
- /*
-- * __device_release_driver() must be called with @dev->sem held.
-- * When called for a USB interface, @dev->parent->sem must be held as well.
-+ * __device_release_driver() must be called with @dev lock held.
-+ * When called for a USB interface, @dev->parent lock must be held as well.
- */
- static void __device_release_driver(struct device *dev)
- {
-@@ -343,7 +343,7 @@ static void __device_release_driver(stru
- * @dev: device.
- *
- * Manually detach device from driver.
-- * When called for a USB interface, @dev->parent->sem must be held.
-+ * When called for a USB interface, @dev->parent lock must be held.
- */
- void device_release_driver(struct device *dev)
- {
-@@ -352,9 +352,9 @@ void device_release_driver(struct device
- * within their ->remove callback for the same device, they
- * will deadlock right here.
- */
-- down(&dev->sem);
-+ device_lock(dev);
- __device_release_driver(dev);
-- up(&dev->sem);
-+ device_unlock(dev);
- }
- EXPORT_SYMBOL_GPL(device_release_driver);
-
-@@ -381,13 +381,13 @@ void driver_detach(struct device_driver
- spin_unlock(&drv->p->klist_devices.k_lock);
-
- if (dev->parent) /* Needed for USB */
-- down(&dev->parent->sem);
-- down(&dev->sem);
-+ device_lock(dev->parent);
-+ device_lock(dev);
- if (dev->driver == drv)
- __device_release_driver(dev);
-- up(&dev->sem);
-+ device_unlock(dev);
- if (dev->parent)
-- up(&dev->parent->sem);
-+ device_unlock(dev->parent);
- put_device(dev);
- }
- }
---- a/drivers/base/power/main.c
-+++ b/drivers/base/power/main.c
-@@ -35,8 +35,8 @@
- * because children are guaranteed to be discovered after parents, and
- * are inserted at the back of the list on discovery.
- *
-- * Since device_pm_add() may be called with a device semaphore held,
-- * we must never try to acquire a device semaphore while holding
-+ * Since device_pm_add() may be called with a device lock held,
-+ * we must never try to acquire a device lock while holding
- * dpm_list_mutex.
- */
-
-@@ -508,7 +508,7 @@ static int device_resume(struct device *
- TRACE_RESUME(0);
-
- dpm_wait(dev->parent, async);
-- down(&dev->sem);
-+ device_lock(dev);
-
- dev->power.status = DPM_RESUMING;
-
-@@ -543,7 +543,7 @@ static int device_resume(struct device *
- }
- }
- End:
-- up(&dev->sem);
-+ device_unlock(dev);
- complete_all(&dev->power.completion);
-
- TRACE_RESUME(error);
-@@ -629,7 +629,7 @@ static void dpm_resume(pm_message_t stat
- */
- static void device_complete(struct device *dev, pm_message_t state)
- {
-- down(&dev->sem);
-+ device_lock(dev);
-
- if (dev->class && dev->class->pm && dev->class->pm->complete) {
- pm_dev_dbg(dev, state, "completing class ");
-@@ -646,7 +646,7 @@ static void device_complete(struct devic
- dev->bus->pm->complete(dev);
- }
-
-- up(&dev->sem);
-+ device_unlock(dev);
- }
-
- /**
-@@ -809,7 +809,7 @@ static int __device_suspend(struct devic
- int error = 0;
-
- dpm_wait_for_children(dev, async);
-- down(&dev->sem);
-+ device_lock(dev);
-
- if (async_error)
- goto End;
-@@ -849,7 +849,7 @@ static int __device_suspend(struct devic
- dev->power.status = DPM_OFF;
-
- End:
-- up(&dev->sem);
-+ device_unlock(dev);
- complete_all(&dev->power.completion);
-
- return error;
-@@ -938,7 +938,7 @@ static int device_prepare(struct device
- {
- int error = 0;
-
-- down(&dev->sem);
-+ device_lock(dev);
-
- if (dev->bus && dev->bus->pm && dev->bus->pm->prepare) {
- pm_dev_dbg(dev, state, "preparing ");
-@@ -962,7 +962,7 @@ static int device_prepare(struct device
- suspend_report_result(dev->class->pm->prepare, error);
- }
- End:
-- up(&dev->sem);
-+ device_unlock(dev);
-
- return error;
- }
---- a/drivers/firewire/core-device.c
-+++ b/drivers/firewire/core-device.c
-@@ -33,7 +33,6 @@
- #include <linux/module.h>
- #include <linux/mutex.h>
- #include <linux/rwsem.h>
--#include <linux/semaphore.h>
- #include <linux/spinlock.h>
- #include <linux/string.h>
- #include <linux/workqueue.h>
-@@ -828,9 +827,9 @@ static int update_unit(struct device *de
- struct fw_driver *driver = (struct fw_driver *)dev->driver;
-
- if (is_fw_unit(dev) && driver != NULL && driver->update != NULL) {
-- down(&dev->sem);
-+ device_lock(dev);
- driver->update(unit);
-- up(&dev->sem);
-+ device_unlock(dev);
- }
-
- return 0;
---- a/drivers/ieee1394/nodemgr.c
-+++ b/drivers/ieee1394/nodemgr.c
-@@ -19,7 +19,6 @@
- #include <linux/moduleparam.h>
- #include <linux/mutex.h>
- #include <linux/freezer.h>
--#include <linux/semaphore.h>
- #include <asm/atomic.h>
-
- #include "csr.h"
-@@ -1397,9 +1396,9 @@ static int update_pdrv(struct device *de
- pdrv = container_of(drv, struct hpsb_protocol_driver,
- driver);
- if (pdrv->update) {
-- down(&ud->device.sem);
-+ device_lock(&ud->device);
- error = pdrv->update(ud);
-- up(&ud->device.sem);
-+ device_unlock(&ud->device);
- }
- if (error)
- device_release_driver(&ud->device);
---- a/drivers/pci/bus.c
-+++ b/drivers/pci/bus.c
-@@ -288,9 +288,9 @@ void pci_walk_bus(struct pci_bus *top, i
- next = dev->bus_list.next;
-
- /* Run device routines with the device locked */
-- down(&dev->dev.sem);
-+ device_lock(&dev->dev);
- retval = cb(dev, userdata);
-- up(&dev->dev.sem);
-+ device_unlock(&dev->dev);
- if (retval)
- break;
- }
---- a/drivers/pci/pci.c
-+++ b/drivers/pci/pci.c
-@@ -2486,7 +2486,7 @@ static int pci_dev_reset(struct pci_dev
- if (!probe) {
- pci_block_user_cfg_access(dev);
- /* block PM suspend, driver probe, etc. */
-- down(&dev->dev.sem);
-+ device_lock(&dev->dev);
- }
-
- rc = pci_dev_specific_reset(dev, probe);
-@@ -2508,7 +2508,7 @@ static int pci_dev_reset(struct pci_dev
- rc = pci_parent_bus_reset(dev, probe);
- done:
- if (!probe) {
-- up(&dev->dev.sem);
-+ device_unlock(&dev->dev);
- pci_unblock_user_cfg_access(dev);
- }
-
---- a/drivers/pcmcia/ds.c
-+++ b/drivers/pcmcia/ds.c
-@@ -971,9 +971,9 @@ static int runtime_suspend(struct device
- {
- int rc;
-
-- down(&dev->sem);
-+ device_lock(dev);
- rc = pcmcia_dev_suspend(dev, PMSG_SUSPEND);
-- up(&dev->sem);
-+ device_unlock(dev);
- return rc;
- }
-
-@@ -981,9 +981,9 @@ static int runtime_resume(struct device
- {
- int rc;
-
-- down(&dev->sem);
-+ device_lock(dev);
- rc = pcmcia_dev_resume(dev);
-- up(&dev->sem);
-+ device_unlock(dev);
- return rc;
- }
-
---- a/drivers/usb/core/driver.c
-+++ b/drivers/usb/core/driver.c
-@@ -489,10 +489,10 @@ void usb_driver_release_interface(struct
- if (device_is_registered(dev)) {
- device_release_driver(dev);
- } else {
-- down(&dev->sem);
-+ device_lock(dev);
- usb_unbind_interface(dev);
- dev->driver = NULL;
-- up(&dev->sem);
-+ device_unlock(dev);
- }
- }
- EXPORT_SYMBOL_GPL(usb_driver_release_interface);
---- a/drivers/uwb/umc-bus.c
-+++ b/drivers/uwb/umc-bus.c
-@@ -62,12 +62,12 @@ int umc_controller_reset(struct umc_dev
- struct device *parent = umc->dev.parent;
- int ret = 0;
-
-- if(down_trylock(&parent->sem))
-+ if (device_trylock(parent))
- return -EAGAIN;
- ret = device_for_each_child(parent, parent, umc_bus_pre_reset_helper);
- if (ret >= 0)
- ret = device_for_each_child(parent, parent, umc_bus_post_reset_helper);
-- up(&parent->sem);
-+ device_unlock(parent);
-
- return ret;
- }
---- a/drivers/uwb/uwb-internal.h
-+++ b/drivers/uwb/uwb-internal.h
-@@ -366,12 +366,12 @@ struct dentry *uwb_dbg_create_pal_dir(st
-
- static inline void uwb_dev_lock(struct uwb_dev *uwb_dev)
- {
-- down(&uwb_dev->dev.sem);
-+ device_lock(&uwb_dev->dev);
- }
-
- static inline void uwb_dev_unlock(struct uwb_dev *uwb_dev)
- {
-- up(&uwb_dev->dev.sem);
-+ device_unlock(&uwb_dev->dev);
- }
-
- #endif /* #ifndef __UWB_INTERNAL_H__ */
---- a/include/linux/device.h
-+++ b/include/linux/device.h
-@@ -106,7 +106,7 @@ extern int bus_unregister_notifier(struc
-
- /* All 4 notifers below get called with the target struct device *
- * as an argument. Note that those functions are likely to be called
-- * with the device semaphore held in the core, so be careful.
-+ * with the device lock held in the core, so be careful.
- */
- #define BUS_NOTIFY_ADD_DEVICE 0x00000001 /* device added */
- #define BUS_NOTIFY_DEL_DEVICE 0x00000002 /* device removed */
-@@ -508,6 +508,21 @@ static inline bool device_async_suspend_
- return !!dev->power.async_suspend;
- }
-
-+static inline void device_lock(struct device *dev)
-+{
-+ down(&dev->sem);
-+}
-+
-+static inline int device_trylock(struct device *dev)
-+{
-+ return down_trylock(&dev->sem);
-+}
-+
-+static inline void device_unlock(struct device *dev)
-+{
-+ up(&dev->sem);
-+}
-+
- void driver_init(void);
-
- /*
---- a/include/linux/usb.h
-+++ b/include/linux/usb.h
-@@ -512,9 +512,9 @@ extern struct usb_device *usb_get_dev(st
- extern void usb_put_dev(struct usb_device *dev);
-
- /* USB device locking */
--#define usb_lock_device(udev) down(&(udev)->dev.sem)
--#define usb_unlock_device(udev) up(&(udev)->dev.sem)
--#define usb_trylock_device(udev) down_trylock(&(udev)->dev.sem)
-+#define usb_lock_device(udev) device_lock(&(udev)->dev)
-+#define usb_unlock_device(udev) device_unlock(&(udev)->dev)
-+#define usb_trylock_device(udev) device_trylock(&(udev)->dev)
- extern int usb_lock_device_for_reset(struct usb_device *udev,
- const struct usb_interface *iface);
-
diff --git a/driver-core/driver-core-devtmpfs-remove-experimental-and-enable-it-by-default.patch b/driver-core/driver-core-devtmpfs-remove-experimental-and-enable-it-by-default.patch
deleted file mode 100644
index 24b805b7e0b2b8..00000000000000
--- a/driver-core/driver-core-devtmpfs-remove-experimental-and-enable-it-by-default.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From kay.sievers@vrfy.org Thu Jan 14 16:48:33 2010
-From: Kay Sievers <kay.sievers@vrfy.org>
-Date: Thu, 14 Jan 2010 22:47:57 +0100
-Subject: Driver-Core: devtmpfs - remove EXPERIMENTAL and flush out the description
-To: Greg KH <greg@kroah.com>
-Message-ID: <1263505677.2074.2.camel@yio.site>
-
-
-All major distros enable devtmpfs on recent systems, so remove
-the EXPERIMENTAL flag, and make the description a bit more instructive.
-
-Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/base/Kconfig | 41 ++++++++++++++++++++++++-----------------
- 1 file changed, 24 insertions(+), 17 deletions(-)
-
---- a/drivers/base/Kconfig
-+++ b/drivers/base/Kconfig
-@@ -9,29 +9,36 @@ config UEVENT_HELPER_PATH
- every uevent.
-
- config DEVTMPFS
-- bool "Create a kernel maintained /dev tmpfs (EXPERIMENTAL)"
-+ bool "Maintain a devtmpfs filesystem to mount at /dev"
- depends on HOTPLUG && SHMEM && TMPFS
- help
-- This creates a tmpfs filesystem, and mounts it at bootup
-- and mounts it at /dev. The kernel driver core creates device
-- nodes for all registered devices in that filesystem. All device
-- nodes are owned by root and have the default mode of 0600.
-- Userspace can add and delete the nodes as needed. This is
-- intended to simplify bootup, and make it possible to delay
-- the initial coldplug at bootup done by udev in userspace.
-- It should also provide a simpler way for rescue systems
-- to bring up a kernel with dynamic major/minor numbers.
-- Meaningful symlinks, permissions and device ownership must
-- still be handled by userspace.
-- If unsure, say N here.
-+ This creates a tmpfs filesystem instance early at bootup.
-+ In this filesystem, the kernel driver core maintains device
-+ nodes with their default names and permissions for all
-+ registered devices with an assigned major/minor number.
-+ Userspace can modify the filesystem content as needed, add
-+ symlinks, and apply needed permissions.
-+ It provides a fully functional /dev directory, where usually
-+ udev runs on top, managing permissions and adding meaningful
-+ symlinks.
-+ In very limited environments, it may provide a sufficient
-+ functional /dev without any further help. It also allows simple
-+ rescue systems, and reliably handles dynamic major/minor numbers.
-
- config DEVTMPFS_MOUNT
-- bool "Automount devtmpfs at /dev"
-+ bool "Automount devtmpfs at /dev, after the kernel mounted the rootfs"
- depends on DEVTMPFS
- help
-- This will mount devtmpfs at /dev if the kernel mounts the root
-- filesystem. It will not affect initramfs based mounting.
-- If unsure, say N here.
-+ This will instruct the kernel to automatically mount the
-+ devtmpfs filesystem at /dev, directly after the kernel has
-+ mounted the root filesystem. The behavior can be overridden
-+ with the commandline parameter: devtmpfs.mount=0|1.
-+ This option does not affect initramfs based booting, here
-+ the devtmpfs filesystem always needs to be mounted manually
-+ after the roots is mounted.
-+ With this option enabled, it allows to bring up a system in
-+ rescue mode with init=/bin/sh, even when the /dev directory
-+ on the rootfs is completely empty.
-
- config STANDALONE
- bool "Select only drivers that don't need compile-time external firmware" if EXPERIMENTAL
diff --git a/driver-core/driver-core-devtmpfs-reset-inode-permissions-before-unlinking.patch b/driver-core/driver-core-devtmpfs-reset-inode-permissions-before-unlinking.patch
deleted file mode 100644
index 828369e4f120d6..00000000000000
--- a/driver-core/driver-core-devtmpfs-reset-inode-permissions-before-unlinking.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From kay.sievers@vrfy.org Thu Jan 14 16:48:07 2010
-From: Kay Sievers <kay.sievers@vrfy.org>
-Date: Wed, 13 Jan 2010 14:16:36 +0100
-Subject: Driver-Core: devtmpfs - reset inode permissions before unlinking
-To: Greg KH <greg@kroah.com>
-Message-ID: <1263388596.26006.1.camel@yio.site>
-
-
-From: Kay Sievers <kay.sievers@vrfy.org>
-
-Before unlinking the inode, reset the current permissions of possible
-references like hardlinks, so granted permissions can not be retained
-across the device lifetime by creating hardlinks, in the unusual case
-that there is a user-writable directory on the same filesystem.
-
-Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
-Cc: stable <stable@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/base/devtmpfs.c | 13 +++++++++++++
- 1 file changed, 13 insertions(+)
-
---- a/drivers/base/devtmpfs.c
-+++ b/drivers/base/devtmpfs.c
-@@ -301,6 +301,19 @@ int devtmpfs_delete_node(struct device *
- if (dentry->d_inode) {
- err = vfs_getattr(nd.path.mnt, dentry, &stat);
- if (!err && dev_mynode(dev, dentry->d_inode, &stat)) {
-+ struct iattr newattrs;
-+ /*
-+ * before unlinking this node, reset permissions
-+ * of possible references like hardlinks
-+ */
-+ newattrs.ia_uid = 0;
-+ newattrs.ia_gid = 0;
-+ newattrs.ia_mode = stat.mode & ~0777;
-+ newattrs.ia_valid =
-+ ATTR_UID|ATTR_GID|ATTR_MODE;
-+ mutex_lock(&dentry->d_inode->i_mutex);
-+ notify_change(dentry, &newattrs);
-+ mutex_unlock(&dentry->d_inode->i_mutex);
- err = vfs_unlink(nd.path.dentry->d_inode,
- dentry);
- if (!err || err == -ENOENT)
diff --git a/driver-core/driver-core-disable-sbin-hotplug-by-default.patch b/driver-core/driver-core-disable-sbin-hotplug-by-default.patch
deleted file mode 100644
index c0489cf0e182cd..00000000000000
--- a/driver-core/driver-core-disable-sbin-hotplug-by-default.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From kay.sievers@vrfy.org Thu Jan 14 16:49:08 2010
-From: Kay Sievers <kay.sievers@vrfy.org>
-Date: Thu, 14 Jan 2010 22:49:39 +0100
-Subject: Driver-Core: disable /sbin/hotplug by default
-To: Greg KH <greg@kroah.com>
-Message-ID: <1263505779.2074.3.camel@yio.site>
-
-
-From: Kay Sievers <kay.sievers@vrfy.org>
-
-No recent mainstream system uses the /sbin/hotplug fork-bomb any more.
-Disable it by default to reflect how it is used these days.
-
-Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/base/Kconfig | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
---- a/drivers/base/Kconfig
-+++ b/drivers/base/Kconfig
-@@ -3,10 +3,18 @@ menu "Generic Driver Options"
- config UEVENT_HELPER_PATH
- string "path to uevent helper"
- depends on HOTPLUG
-- default "/sbin/hotplug"
-+ default ""
- help
- Path to uevent helper program forked by the kernel for
- every uevent.
-+ Before the switch to the netlink-based uevent source, this was
-+ used to hook hotplug scripts into kernel device events. It
-+ usually pointed to a shell script at /sbin/hotplug.
-+ This should not be used today, because usual systems create
-+ many events at bootup or device discovery in a very short time
-+ frame. One forked process per event can create so many processes
-+ that it creates a high system load, or on smaller systems
-+ it is known to create out-of-memory situations during bootup.
-
- config DEVTMPFS
- bool "Maintain a devtmpfs filesystem to mount at /dev"
diff --git a/driver-core/driver-core-firmware_class-remove-base.h-header-inclusion.patch b/driver-core/driver-core-firmware_class-remove-base.h-header-inclusion.patch
deleted file mode 100644
index 8e3e306ed8676b..00000000000000
--- a/driver-core/driver-core-firmware_class-remove-base.h-header-inclusion.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From lrodriguez@atheros.com Thu Jan 14 17:22:32 2010
-From: "Luis R. Rodriguez" <lrodriguez@atheros.com>
-Date: Wed, 13 Jan 2010 21:18:15 -0500
-Subject: driver-core: firmware_class: remove base.h header inclusion
-To: greg@kroah.com
-Cc: linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, mcgrof@gmail.com, "Luis R. Rodriguez" <lrodriguez@atheros.com>, Johannes Berg <johannes@sipsolutions.net>
-Message-ID: <1263435495-10966-1-git-send-email-lrodriguez@atheros.com>
-
-
-base.h is used by base drivers for sharing internal structures.
-Turns out firmware_class does not depend on it at all so remove it.
-
-Cc: Johannes Berg <johannes@sipsolutions.net>
-Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
-Acked-by: Marcel Holtmann <marcel@holtmann.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/base/firmware_class.c | 1 -
- 1 file changed, 1 deletion(-)
-
---- a/drivers/base/firmware_class.c
-+++ b/drivers/base/firmware_class.c
-@@ -19,7 +19,6 @@
- #include <linux/kthread.h>
- #include <linux/highmem.h>
- #include <linux/firmware.h>
--#include "base.h"
-
- #define to_dev(obj) container_of(obj, struct device, kobj)
-
diff --git a/driver-core/driver-core-fix-first-line-of-kernel-doc-for-a-few-functions.patch b/driver-core/driver-core-fix-first-line-of-kernel-doc-for-a-few-functions.patch
deleted file mode 100644
index 618458966bc7b5..00000000000000
--- a/driver-core/driver-core-fix-first-line-of-kernel-doc-for-a-few-functions.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-From ben@decadent.org.uk Wed Feb 17 16:05:12 2010
-From: Ben Hutchings <ben@decadent.org.uk>
-Date: Sun, 14 Feb 2010 14:18:53 +0000
-Subject: Driver core: Fix first line of kernel-doc for a few functions
-To: Greg Kroah-Hartman <gregkh@suse.de>
-Message-ID: <1266157133.10567.14.camel@localhost>
-
-
-The function name must be followed by a space, hypen, space, and a
-short description.
-
-Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/base/firmware_class.c | 2 +-
- drivers/base/platform.c | 16 ++++++++--------
- 2 files changed, 9 insertions(+), 9 deletions(-)
-
---- a/drivers/base/firmware_class.c
-+++ b/drivers/base/firmware_class.c
-@@ -613,7 +613,7 @@ request_firmware_work_func(void *arg)
- }
-
- /**
-- * request_firmware_nowait: asynchronous version of request_firmware
-+ * request_firmware_nowait - asynchronous version of request_firmware
- * @module: module requesting the firmware
- * @uevent: sends uevent to copy the firmware image if this flag
- * is non-zero else the firmware copy must be done manually.
---- a/drivers/base/platform.c
-+++ b/drivers/base/platform.c
-@@ -128,7 +128,7 @@ struct platform_object {
- };
-
- /**
-- * platform_device_put
-+ * platform_device_put - destroy a platform device
- * @pdev: platform device to free
- *
- * Free all memory associated with a platform device. This function must
-@@ -152,7 +152,7 @@ static void platform_device_release(stru
- }
-
- /**
-- * platform_device_alloc
-+ * platform_device_alloc - create a platform device
- * @name: base name of the device we're adding
- * @id: instance id
- *
-@@ -177,7 +177,7 @@ struct platform_device *platform_device_
- EXPORT_SYMBOL_GPL(platform_device_alloc);
-
- /**
-- * platform_device_add_resources
-+ * platform_device_add_resources - add resources to a platform device
- * @pdev: platform device allocated by platform_device_alloc to add resources to
- * @res: set of resources that needs to be allocated for the device
- * @num: number of resources
-@@ -202,7 +202,7 @@ int platform_device_add_resources(struct
- EXPORT_SYMBOL_GPL(platform_device_add_resources);
-
- /**
-- * platform_device_add_data
-+ * platform_device_add_data - add platform-specific data to a platform device
- * @pdev: platform device allocated by platform_device_alloc to add resources to
- * @data: platform specific data for this platform device
- * @size: size of platform specific data
-@@ -344,7 +344,7 @@ void platform_device_unregister(struct p
- EXPORT_SYMBOL_GPL(platform_device_unregister);
-
- /**
-- * platform_device_register_simple
-+ * platform_device_register_simple - add a platform-level device and its resources
- * @name: base name of the device we're adding
- * @id: instance id
- * @res: set of resources that needs to be allocated for the device
-@@ -396,7 +396,7 @@ error:
- EXPORT_SYMBOL_GPL(platform_device_register_simple);
-
- /**
-- * platform_device_register_data
-+ * platform_device_register_data - add a platform-level device with platform-specific data
- * @parent: parent device for the device we're adding
- * @name: base name of the device we're adding
- * @id: instance id
-@@ -473,7 +473,7 @@ static void platform_drv_shutdown(struct
- }
-
- /**
-- * platform_driver_register
-+ * platform_driver_register - register a driver for platform-level devices
- * @drv: platform driver structure
- */
- int platform_driver_register(struct platform_driver *drv)
-@@ -491,7 +491,7 @@ int platform_driver_register(struct plat
- EXPORT_SYMBOL_GPL(platform_driver_register);
-
- /**
-- * platform_driver_unregister
-+ * platform_driver_unregister - unregister a driver for platform-level devices
- * @drv: platform driver structure
- */
- void platform_driver_unregister(struct platform_driver *drv)
diff --git a/driver-core/driver-core-fix-race-condition-in-get_device_parent.patch b/driver-core/driver-core-fix-race-condition-in-get_device_parent.patch
deleted file mode 100644
index a101fa8bf182be..00000000000000
--- a/driver-core/driver-core-fix-race-condition-in-get_device_parent.patch
+++ /dev/null
@@ -1,118 +0,0 @@
-From tj@kernel.org Sun Feb 7 22:56:35 2010
-From: Tejun Heo <tj@kernel.org>
-Date: Fri, 05 Feb 2010 17:57:02 +0900
-Subject: driver-core: fix race condition in get_device_parent()
-To: Greg KH <gregkh@suse.de>, Colin Guthrie <cguthrie@mandriva.org>, Kay Sievers <kay.sievers@vrfy.org>
-Message-ID: <4B6BDD5E.7080904@kernel.org>
-
-
-sysfs is creating several devices in cuse class concurrently and with
-CONFIG_SYSFS_DEPRECATED turned off, it triggers the following oops.
-
- BUG: unable to handle kernel NULL pointer dereference at 0000000000000038
- IP: [<ffffffff81158b0a>] sysfs_addrm_start+0x4a/0xf0
- PGD 75bb067 PUD 75be067 PMD 0
- Oops: 0000 [#1] PREEMPT SMP
- last sysfs file: /sys/devices/system/cpu/cpu7/topology/core_siblings
- CPU 1
- Modules linked in: cuse fuse
- Pid: 4737, comm: osspd Not tainted 2.6.31-work #77
- RIP: 0010:[<ffffffff81158b0a>] [<ffffffff81158b0a>] sysfs_addrm_start+0x4a/0xf0
- RSP: 0018:ffff88000042f8f8 EFLAGS: 00010296
- RAX: ffff88000042ffd8 RBX: 0000000000000000 RCX: 0000000000000000
- RDX: 0000000000000000 RSI: ffff880007eef660 RDI: 0000000000000001
- RBP: ffff88000042f918 R08: 0000000000000000 R09: 0000000000000000
- R10: 0000000000000001 R11: ffffffff81158b0a R12: ffff88000042f928
- R13: 00000000fffffff4 R14: 0000000000000000 R15: ffff88000042f9a0
- FS: 00007fe93905a950(0000) GS:ffff880008600000(0000) knlGS:0000000000000000
- CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
- CR2: 0000000000000038 CR3: 00000000077c9000 CR4: 00000000000006e0
- DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
- DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
- Process osspd (pid: 4737, threadinfo ffff88000042e000, task ffff880007eef040)
- Stack:
- ffff880005da10e8 0000000011cc8d6e ffff88000042f928 ffff880003d28a28
- <0> ffff88000042f988 ffffffff811592d7 0000000000000000 0000000000000000
- <0> 0000000000000000 0000000000000000 ffff88000042f958 0000000011cc8d6e
- Call Trace:
- [<ffffffff811592d7>] create_dir+0x67/0xe0
- [<ffffffff811593a8>] sysfs_create_dir+0x58/0xb0
- [<ffffffff8128ca7c>] ? kobject_add_internal+0xcc/0x220
- [<ffffffff812942e1>] ? vsnprintf+0x3c1/0xb90
- [<ffffffff8128cab7>] kobject_add_internal+0x107/0x220
- [<ffffffff8128cd37>] kobject_add_varg+0x47/0x80
- [<ffffffff8128ce53>] kobject_add+0x53/0x90
- [<ffffffff81357d84>] device_add+0xd4/0x690
- [<ffffffff81356c2b>] ? dev_set_name+0x4b/0x70
- [<ffffffffa001a884>] cuse_process_init_reply+0x2b4/0x420 [cuse]
- ...
-
-The problem is that kobject_add_internal() first adds a kobject to the
-kset and then try to create sysfs directory for it. If the creation
-fails, it remove the kobject from the kset. get_device_parent()
-accesses class_dirs kset while only holding class_dirs.list_lock to
-see whether the cuse class dir exists. But when it exists, it may not
-have finished initialization yet or may fail and get removed soon. In
-the above case, the former happened so the second one ends up trying
-to create subdirectory under NULL sysfs_dirent.
-
-Fix it by grabbing a mutex in get_device_parent().
-
-Signed-off-by: Tejun Heo <tj@kernel.org>
-Reported-by: Colin Guthrie <cguthrie@mandriva.org>
-Cc: stable <stable@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
-
----
- drivers/base/core.c | 13 +++++++++++--
- 1 file changed, 11 insertions(+), 2 deletions(-)
-
---- a/drivers/base/core.c
-+++ b/drivers/base/core.c
-@@ -607,6 +607,7 @@ static struct kobject *get_device_parent
- int retval;
-
- if (dev->class) {
-+ static DEFINE_MUTEX(gdp_mutex);
- struct kobject *kobj = NULL;
- struct kobject *parent_kobj;
- struct kobject *k;
-@@ -623,6 +624,8 @@ static struct kobject *get_device_parent
- else
- parent_kobj = &parent->kobj;
-
-+ mutex_lock(&gdp_mutex);
-+
- /* find our class-directory at the parent and reference it */
- spin_lock(&dev->class->p->class_dirs.list_lock);
- list_for_each_entry(k, &dev->class->p->class_dirs.list, entry)
-@@ -631,20 +634,26 @@ static struct kobject *get_device_parent
- break;
- }
- spin_unlock(&dev->class->p->class_dirs.list_lock);
-- if (kobj)
-+ if (kobj) {
-+ mutex_unlock(&gdp_mutex);
- return kobj;
-+ }
-
- /* or create a new class-directory at the parent device */
- k = kobject_create();
-- if (!k)
-+ if (!k) {
-+ mutex_unlock(&gdp_mutex);
- return NULL;
-+ }
- k->kset = &dev->class->p->class_dirs;
- retval = kobject_add(k, parent_kobj, "%s", dev->class->name);
- if (retval < 0) {
-+ mutex_unlock(&gdp_mutex);
- kobject_put(k);
- return NULL;
- }
- /* do not emit an uevent for this simple "glue" directory */
-+ mutex_unlock(&gdp_mutex);
- return k;
- }
-
diff --git a/driver-core/driver-core-make-platform_device_id-table-const.patch b/driver-core/driver-core-make-platform_device_id-table-const.patch
deleted file mode 100644
index 2eca3c490ef4bd..00000000000000
--- a/driver-core/driver-core-make-platform_device_id-table-const.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From eric.y.miao@gmail.com Tue Jan 5 14:23:45 2010
-From: Eric Miao <eric.y.miao@gmail.com>
-Date: Fri, 1 Jan 2010 15:43:28 +0800
-Subject: driver core: make platform_device_id table const
-To: Kay Sievers <kay.sievers@vrfy.org>, Greg KH <gregkh@suse.de>
-Message-ID: <f17812d70912312343x31656af6sdb4f3556e7022c05@mail.gmail.com>
-
-
-The platform ID table is normally const, force that by adding the attribute.
-
-Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- include/linux/platform_device.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/include/linux/platform_device.h
-+++ b/include/linux/platform_device.h
-@@ -21,7 +21,7 @@ struct platform_device {
- u32 num_resources;
- struct resource * resource;
-
-- struct platform_device_id *id_entry;
-+ const struct platform_device_id *id_entry;
-
- /* arch specific additions */
- struct pdev_archdata archdata;
diff --git a/driver-core/driver-core-make-struct-platform_driver.id_table-const.patch b/driver-core/driver-core-make-struct-platform_driver.id_table-const.patch
deleted file mode 100644
index c5618d7b38b2e2..00000000000000
--- a/driver-core/driver-core-make-struct-platform_driver.id_table-const.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From u.kleine-koenig@pengutronix.de Wed Jan 27 17:08:59 2010
-From: Uwe Kleine-K�nig <u.kleine-koenig@pengutronix.de>
-Date: Tue, 26 Jan 2010 09:35:00 +0100
-Subject: Driver core: make struct platform_driver.id_table const
-To: Greg Kroah-Hartman <gregkh@suse.de>
-Cc: Eric Miao <eric.y.miao@gmail.com>, Vikram Dhillon <opensolarisdev@gmail.com>, linux-arm-kernel@lists.infradead.org, Eric Miao <eric.miao@marvell.com>, Ben Dooks <ben-linux@fluff.org>
-Message-ID: <20100126083500.GA20792@pengutronix.de>
-Content-Disposition: inline
-
-
-From: Uwe Kleine-K�nig <u.kleine-koenig@pengutronix.de>
-
-This fixes a warning on several pxa based machines:
-
- arch/arm/mach-pxa/ssp.c:475: warning: initialization discards qualifiers from pointer target type
-
-Signed-off-by: Uwe Kleine-K�nig <u.kleine-koenig@pengutronix.de>
-Acked-by: Vikram Dhillon <dhillonv10@gmail.com>
-Acked-by: Eric Miao <eric.y.miao@gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/base/platform.c | 2 +-
- include/linux/platform_device.h | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
---- a/drivers/base/platform.c
-+++ b/drivers/base/platform.c
-@@ -636,7 +636,7 @@ static int platform_uevent(struct device
- }
-
- static const struct platform_device_id *platform_match_id(
-- struct platform_device_id *id,
-+ const struct platform_device_id *id,
- struct platform_device *pdev)
- {
- while (id->name[0]) {
---- a/include/linux/platform_device.h
-+++ b/include/linux/platform_device.h
-@@ -62,7 +62,7 @@ struct platform_driver {
- int (*suspend)(struct platform_device *, pm_message_t state);
- int (*resume)(struct platform_device *);
- struct device_driver driver;
-- struct platform_device_id *id_table;
-+ const struct platform_device_id *id_table;
- };
-
- extern int platform_driver_register(struct platform_driver *);
diff --git a/driver-core/driver-core-require-valid-action-string-in-uevent-trigger.patch b/driver-core/driver-core-require-valid-action-string-in-uevent-trigger.patch
deleted file mode 100644
index 684264c5424e1b..00000000000000
--- a/driver-core/driver-core-require-valid-action-string-in-uevent-trigger.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From kay.sievers@vrfy.org Thu Jan 14 16:49:38 2010
-From: Kay Sievers <kay.sievers@vrfy.org>
-Date: Thu, 14 Jan 2010 22:54:37 +0100
-Subject: Driver-Core: require valid action string in uevent trigger
-To: Greg KH <greg@kroah.com>
-Message-ID: <1263506077.2074.8.camel@yio.site>
-
-
-From: Kay Sievers <kay.sievers@vrfy.org>
-
-No longer fall back to "add" and warn, but always require a valid
-action-string written to the "uevent" file.
-
-Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/base/core.c | 11 +++--------
- 1 file changed, 3 insertions(+), 8 deletions(-)
-
---- a/drivers/base/core.c
-+++ b/drivers/base/core.c
-@@ -306,15 +306,10 @@ static ssize_t store_uevent(struct devic
- {
- enum kobject_action action;
-
-- if (kobject_action_type(buf, count, &action) == 0) {
-+ if (kobject_action_type(buf, count, &action) == 0)
- kobject_uevent(&dev->kobj, action);
-- goto out;
-- }
--
-- dev_err(dev, "uevent: unsupported action-string; this will "
-- "be ignored in a future kernel version\n");
-- kobject_uevent(&dev->kobj, KOBJ_ADD);
--out:
-+ else
-+ dev_err(dev, "uevent: unknown action-string\n");
- return count;
- }
-
diff --git a/driver-core/driver-core-use-sysfs_rename_link-in-device_rename.patch b/driver-core/driver-core-use-sysfs_rename_link-in-device_rename.patch
deleted file mode 100644
index 6180581480ecb9..00000000000000
--- a/driver-core/driver-core-use-sysfs_rename_link-in-device_rename.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From ebiederm@xmission.com Fri Feb 26 14:02:02 2010
-From: "Eric W. Biederman" <ebiederm@xmission.com>
-Date: Fri, 12 Feb 2010 19:22:26 -0800
-Subject: driver core: Use sysfs_rename_link in device_rename
-To: Greg Kroah-Hartman <gregkh@suse.de>
-Cc: Kay Sievers <kay.sievers@vrfy.org>, linux-kernel@vger.kernel.org, Tejun Heo <tj@kernel.org>, Cornelia Huck <cornelia.huck@de.ibm.com>, linux-fsdevel@vger.kernel.org, Eric Dumazet <eric.dumazet@gmail.com>, Benjamin LaHaise <bcrl@lhnet.ca>, Serge Hallyn <serue@us.ibm.com>, "Eric W. Biederman" <ebiederm@xmission.com>, "Eric W. Biederman" <ebiederm@aristanetworks.com>
-Message-ID: <1266031348-30068-4-git-send-email-ebiederm@xmission.com>
-
-From: Eric W. Biederman <ebiederm@xmission.com>
-
-Don't open code the renaming of symlinks in sysfs
-instead use the new helper function sysfs_rename_link
-
-Acked-by: Tejun Heo <tj@kernel.org>
-Acked-by: Serge Hallyn <serue@us.ibm.com>
-Signed-off-by: Eric W. Biederman <ebiederm@aristanetworks.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/base/core.c | 18 ++++++------------
- 1 file changed, 6 insertions(+), 12 deletions(-)
-
---- a/drivers/base/core.c
-+++ b/drivers/base/core.c
-@@ -1578,22 +1578,16 @@ int device_rename(struct device *dev, ch
- if (old_class_name) {
- new_class_name = make_class_name(dev->class->name, &dev->kobj);
- if (new_class_name) {
-- error = sysfs_create_link_nowarn(&dev->parent->kobj,
-- &dev->kobj,
-- new_class_name);
-- if (error)
-- goto out;
-- sysfs_remove_link(&dev->parent->kobj, old_class_name);
-+ error = sysfs_rename_link(&dev->parent->kobj,
-+ &dev->kobj,
-+ old_class_name,
-+ new_class_name);
- }
- }
- #else
- if (dev->class) {
-- error = sysfs_create_link_nowarn(&dev->class->p->class_subsys.kobj,
-- &dev->kobj, dev_name(dev));
-- if (error)
-- goto out;
-- sysfs_remove_link(&dev->class->p->class_subsys.kobj,
-- old_device_name);
-+ error = sysfs_rename_link(&dev->class->p->class_subsys.kobj,
-+ &dev->kobj, old_device_name, new_name);
- }
- #endif
-
diff --git a/driver-core/howto-updates-on-subsystem-trees-patchwork-next-vs.-mm.patch b/driver-core/howto-updates-on-subsystem-trees-patchwork-next-vs.-mm.patch
deleted file mode 100644
index 9c9330fbe1b382..00000000000000
--- a/driver-core/howto-updates-on-subsystem-trees-patchwork-next-vs.-mm.patch
+++ /dev/null
@@ -1,167 +0,0 @@
-From stefanr@s5r6.in-berlin.de Fri Jan 15 13:44:16 2010
-From: Stefan Richter <stefanr@s5r6.in-berlin.de>
-Date: Fri, 15 Jan 2010 13:23:51 +0100 (CET)
-Subject: HOWTO: Updates on subsystem trees, patchwork, -next (vs. -mm)
-To: Greg Kroah-Hartman <greg@kroah.com>
-Cc: Randy Dunlap <rdunlap@xenotime.net>, Joe Perches <joe@perches.com>, Andrew Morton <akpm@linux-foundation.org>, Alan Cox <alan@lxorguk.ukuu.org.uk>, Lo�c Greni� <loic.grenie@gmail.com>, linux-kernel@vger.kernel.org
-Message-ID: <tkrat.b7e388635b69af34@s5r6.in-berlin.de>
-
-
-One of the roles which -mm fulfilled some time ago (to offer an
-integration testing ground) has been taken over by -next. This is still
-news to Documentation/HOWTO, so mention it there.
-
-Also add a word on how patchwork is used to track patches as they make
-their way into subsystem trees. Remove some arbitrary links to
-subsystem repositories; they can all be found in the MAINTAINERS
-database.
-
-Acked-by: Randy Dunlap <rdunlap@xenotime.net>
-Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
----
-
----
- Documentation/HOWTO | 113 ++++++++++++++++------------------------------------
- 1 file changed, 36 insertions(+), 77 deletions(-)
-
---- a/Documentation/HOWTO
-+++ b/Documentation/HOWTO
-@@ -221,8 +221,8 @@ branches. These different branches are:
- - main 2.6.x kernel tree
- - 2.6.x.y -stable kernel tree
- - 2.6.x -git kernel patches
-- - 2.6.x -mm kernel patches
- - subsystem specific kernel trees and patches
-+ - the 2.6.x -next kernel tree for integration tests
-
- 2.6.x kernel tree
- -----------------
-@@ -232,7 +232,7 @@ process is as follows:
- - As soon as a new kernel is released a two weeks window is open,
- during this period of time maintainers can submit big diffs to
- Linus, usually the patches that have already been included in the
-- -mm kernel for a few weeks. The preferred way to submit big changes
-+ -next kernel for a few weeks. The preferred way to submit big changes
- is using git (the kernel's source management tool, more information
- can be found at http://git.or.cz/) but plain patches are also just
- fine.
-@@ -293,84 +293,43 @@ daily and represent the current state of
- experimental than -rc kernels since they are generated automatically
- without even a cursory glance to see if they are sane.
-
--2.6.x -mm kernel patches
--------------------------
--These are experimental kernel patches released by Andrew Morton. Andrew
--takes all of the different subsystem kernel trees and patches and mushes
--them together, along with a lot of patches that have been plucked from
--the linux-kernel mailing list. This tree serves as a proving ground for
--new features and patches. Once a patch has proved its worth in -mm for
--a while Andrew or the subsystem maintainer pushes it on to Linus for
--inclusion in mainline.
--
--It is heavily encouraged that all new patches get tested in the -mm tree
--before they are sent to Linus for inclusion in the main kernel tree. Code
--which does not make an appearance in -mm before the opening of the merge
--window will prove hard to merge into the mainline.
--
--These kernels are not appropriate for use on systems that are supposed
--to be stable and they are more risky to run than any of the other
--branches.
--
--If you wish to help out with the kernel development process, please test
--and use these kernel releases and provide feedback to the linux-kernel
--mailing list if you have any problems, and if everything works properly.
--
--In addition to all the other experimental patches, these kernels usually
--also contain any changes in the mainline -git kernels available at the
--time of release.
--
--The -mm kernels are not released on a fixed schedule, but usually a few
---mm kernels are released in between each -rc kernel (1 to 3 is common).
--
- Subsystem Specific kernel trees and patches
- -------------------------------------------
--A number of the different kernel subsystem developers expose their
--development trees so that others can see what is happening in the
--different areas of the kernel. These trees are pulled into the -mm
--kernel releases as described above.
--
--Here is a list of some of the different kernel trees available:
-- git trees:
-- - Kbuild development tree, Sam Ravnborg <sam@ravnborg.org>
-- git.kernel.org:/pub/scm/linux/kernel/git/sam/kbuild.git
--
-- - ACPI development tree, Len Brown <len.brown@intel.com>
-- git.kernel.org:/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6.git
--
-- - Block development tree, Jens Axboe <jens.axboe@oracle.com>
-- git.kernel.org:/pub/scm/linux/kernel/git/axboe/linux-2.6-block.git
--
-- - DRM development tree, Dave Airlie <airlied@linux.ie>
-- git.kernel.org:/pub/scm/linux/kernel/git/airlied/drm-2.6.git
--
-- - ia64 development tree, Tony Luck <tony.luck@intel.com>
-- git.kernel.org:/pub/scm/linux/kernel/git/aegl/linux-2.6.git
--
-- - infiniband, Roland Dreier <rolandd@cisco.com>
-- git.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git
--
-- - libata, Jeff Garzik <jgarzik@pobox.com>
-- git.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev.git
--
-- - network drivers, Jeff Garzik <jgarzik@pobox.com>
-- git.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git
--
-- - pcmcia, Dominik Brodowski <linux@dominikbrodowski.net>
-- git.kernel.org:/pub/scm/linux/kernel/git/brodo/pcmcia-2.6.git
--
-- - SCSI, James Bottomley <James.Bottomley@hansenpartnership.com>
-- git.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git
--
-- - x86, Ingo Molnar <mingo@elte.hu>
-- git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86.git
--
-- quilt trees:
-- - USB, Driver Core, and I2C, Greg Kroah-Hartman <gregkh@suse.de>
-- kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
-+The maintainers of the various kernel subsystems --- and also many
-+kernel subsystem developers --- expose their current state of
-+development in source repositories. That way, others can see what is
-+happening in the different areas of the kernel. In areas where
-+development is rapid, a developer may be asked to base his submissions
-+onto such a subsystem kernel tree so that conflicts between the
-+submission and other already ongoing work are avoided.
-+
-+Most of these repositories are git trees, but there are also other SCMs
-+in use, or patch queues being published as quilt series. Addresses of
-+these subsystem repositories are listed in the MAINTAINERS file. Many
-+of them can be browsed at http://git.kernel.org/.
-+
-+Before a proposed patch is committed to such a subsystem tree, it is
-+subject to review which primarily happens on mailing lists (see the
-+respective section below). For several kernel subsystems, this review
-+process is tracked with the tool patchwork. Patchwork offers a web
-+interface which shows patch postings, any comments on a patch or
-+revisions to it, and maintainers can mark patches as under review,
-+accepted, or rejected. Most of these patchwork sites are listed at
-+http://patchwork.kernel.org/ or http://patchwork.ozlabs.org/.
-+
-+2.6.x -next kernel tree for integration tests
-+---------------------------------------------
-+Before updates from subsystem trees are merged into the mainline 2.6.x
-+tree, they need to be integration-tested. For this purpose, a special
-+testing repository exists into which virtually all subsystem trees are
-+pulled on an almost daily basis:
-+ http://git.kernel.org/?p=linux/kernel/git/sfr/linux-next.git
-+ http://linux.f-seidel.de/linux-next/pmwiki/
-+
-+This way, the -next kernel gives a summary outlook onto what will be
-+expected to go into the mainline kernel at the next merge period.
-+Adventurous testers are very welcome to runtime-test the -next kernel.
-
-- Other kernel trees can be found listed at http://git.kernel.org/ and in
-- the MAINTAINERS file.
-
- Bug Reporting
- -------------
diff --git a/driver-core/i2c-move-i2c_omap-s-probe-function-to-.devinit.text.patch b/driver-core/i2c-move-i2c_omap-s-probe-function-to-.devinit.text.patch
deleted file mode 100644
index 81cab6c546fd8c..00000000000000
--- a/driver-core/i2c-move-i2c_omap-s-probe-function-to-.devinit.text.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From u.kleine-koenig@pengutronix.de Wed Feb 17 12:44:01 2010
-From: Uwe Kleine-K�nig <u.kleine-koenig@pengutronix.de>
-Date: Thu, 4 Feb 2010 20:56:53 +0100
-Subject: i2c: move i2c_omap's probe function to .devinit.text
-To: Greg KH <gregkh@suse.de>
-Cc: Kalle Jokiniemi <ext-kalle.jokiniemi@nokia.com>, Tony Lindgren <tony@atomide.com>, Paul Walmsley <paul@pwsan.com>, Richard Woodruff <r-woodruff2@ti.com>, chandra shekhar <x0044955@ti.com>, Jason P Marini <jason.marini@gmail.com>, Syed Mohammed Khasim <x0khasim@ti.com>, Jarkko Nikula <jarkko.nikula@nokia.com>, Juha Yrjola <juha.yrjola@solidboot.com>, Andrew Morton <akpm@linux-foundation.org>
-Message-ID: <1265313417-5568-5-git-send-email-u.kleine-koenig@pengutronix.de>
-
-From: Uwe Kleine-K�nig <u.kleine-koenig@pengutronix.de>
-
-A pointer to omap_i2c_probe is passed to the core via
-platform_driver_register and so the function must not disappear when the
-.init sections are discarded. Otherwise (if also having HOTPLUG=y)
-unbinding and binding a device to the driver via sysfs will result in an
-oops as does a device being registered late.
-
-An alternative to this patch is using platform_driver_probe instead of
-platform_driver_register plus removing the pointer to the probe function
-from the struct platform_driver.
-
-Signed-off-by: Uwe Kleine-K�nig <u.kleine-koenig@pengutronix.de>
-Cc: Kalle Jokiniemi <ext-kalle.jokiniemi@nokia.com>
-Cc: Tony Lindgren <tony@atomide.com>
-Cc: Paul Walmsley <paul@pwsan.com>
-Cc: Richard Woodruff <r-woodruff2@ti.com>
-Cc: chandra shekhar <x0044955@ti.com>
-Cc: Jason P Marini <jason.marini@gmail.com>
-Cc: Syed Mohammed Khasim <x0khasim@ti.com>
-Cc: Jarkko Nikula <jarkko.nikula@nokia.com>
-Cc: Juha Yrjola <juha.yrjola@solidboot.com>
-Cc: Andrew Morton <akpm@linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/i2c/busses/i2c-omap.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/i2c/busses/i2c-omap.c
-+++ b/drivers/i2c/busses/i2c-omap.c
-@@ -850,7 +850,7 @@ static const struct i2c_algorithm omap_i
- .functionality = omap_i2c_func,
- };
-
--static int __init
-+static int __devinit
- omap_i2c_probe(struct platform_device *pdev)
- {
- struct omap_i2c_dev *dev;
diff --git a/driver-core/kobject-constify-struct-kset_uevent_ops.patch b/driver-core/kobject-constify-struct-kset_uevent_ops.patch
deleted file mode 100644
index 97c992f5985879..00000000000000
--- a/driver-core/kobject-constify-struct-kset_uevent_ops.patch
+++ /dev/null
@@ -1,176 +0,0 @@
-From re.emese@gmail.com Fri Jan 15 11:18:41 2010
-From: Emese Revfy <re.emese@gmail.com>
-Date: Thu, 31 Dec 2009 14:52:51 +0100
-Subject: kobject: Constify struct kset_uevent_ops
-To: Greg KH <gregkh@suse.de>
-Cc: Pekka Enberg <penberg@cs.helsinki.fi>, linux-kernel@vger.kernel.org, rientjes@google.com, cl@linux-foundation.org, torvalds@linux-foundation.org, akpm@linux-foundation.org, rjw@sisk.pl, rusty@rustcorp.com.au, Arjan van de Ven <arjan@infradead.org>
-Message-ID: <4B3CACB3.8020901@gmail.com>
-
-
-From: Emese Revfy <re.emese@gmail.com>
-
-Constify struct kset_uevent_ops.
-
-This is part of the ops structure constification
-effort started by Arjan van de Ven et al.
-
-Benefits of this constification:
-
- * prevents modification of data that is shared
- (referenced) by many other structure instances
- at runtime
-
- * detects/prevents accidental (but not intentional)
- modification attempts on archs that enforce
- read-only kernel data at runtime
-
- * potentially better optimized code as the compiler
- can assume that the const data cannot be changed
-
- * the compiler/linker move const data into .rodata
- and therefore exclude them from false sharing
-
-Signed-off-by: Emese Revfy <re.emese@gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/base/bus.c | 2 +-
- drivers/base/core.c | 2 +-
- drivers/base/memory.c | 2 +-
- fs/gfs2/sys.c | 2 +-
- include/linux/kobject.h | 10 +++++-----
- kernel/params.c | 2 +-
- lib/kobject.c | 4 ++--
- lib/kobject_uevent.c | 2 +-
- mm/slub.c | 2 +-
- 9 files changed, 14 insertions(+), 14 deletions(-)
-
---- a/drivers/base/bus.c
-+++ b/drivers/base/bus.c
-@@ -154,7 +154,7 @@ static int bus_uevent_filter(struct kset
- return 0;
- }
-
--static struct kset_uevent_ops bus_uevent_ops = {
-+static const struct kset_uevent_ops bus_uevent_ops = {
- .filter = bus_uevent_filter,
- };
-
---- a/drivers/base/core.c
-+++ b/drivers/base/core.c
-@@ -252,7 +252,7 @@ static int dev_uevent(struct kset *kset,
- return retval;
- }
-
--static struct kset_uevent_ops device_uevent_ops = {
-+static const struct kset_uevent_ops device_uevent_ops = {
- .filter = dev_uevent_filter,
- .name = dev_uevent_name,
- .uevent = dev_uevent,
---- a/drivers/base/memory.c
-+++ b/drivers/base/memory.c
-@@ -44,7 +44,7 @@ static int memory_uevent(struct kset *ks
- return retval;
- }
-
--static struct kset_uevent_ops memory_uevent_ops = {
-+static const struct kset_uevent_ops memory_uevent_ops = {
- .name = memory_uevent_name,
- .uevent = memory_uevent,
- };
---- a/fs/gfs2/sys.c
-+++ b/fs/gfs2/sys.c
-@@ -574,7 +574,7 @@ static int gfs2_uevent(struct kset *kset
- return 0;
- }
-
--static struct kset_uevent_ops gfs2_uevent_ops = {
-+static const struct kset_uevent_ops gfs2_uevent_ops = {
- .uevent = gfs2_uevent,
- };
-
---- a/include/linux/kobject.h
-+++ b/include/linux/kobject.h
-@@ -118,9 +118,9 @@ struct kobj_uevent_env {
- };
-
- struct kset_uevent_ops {
-- int (*filter)(struct kset *kset, struct kobject *kobj);
-- const char *(*name)(struct kset *kset, struct kobject *kobj);
-- int (*uevent)(struct kset *kset, struct kobject *kobj,
-+ int (* const filter)(struct kset *kset, struct kobject *kobj);
-+ const char *(* const name)(struct kset *kset, struct kobject *kobj);
-+ int (* const uevent)(struct kset *kset, struct kobject *kobj,
- struct kobj_uevent_env *env);
- };
-
-@@ -155,14 +155,14 @@ struct kset {
- struct list_head list;
- spinlock_t list_lock;
- struct kobject kobj;
-- struct kset_uevent_ops *uevent_ops;
-+ const struct kset_uevent_ops *uevent_ops;
- };
-
- extern void kset_init(struct kset *kset);
- extern int __must_check kset_register(struct kset *kset);
- extern void kset_unregister(struct kset *kset);
- extern struct kset * __must_check kset_create_and_add(const char *name,
-- struct kset_uevent_ops *u,
-+ const struct kset_uevent_ops *u,
- struct kobject *parent_kobj);
-
- static inline struct kset *to_kset(struct kobject *kobj)
---- a/kernel/params.c
-+++ b/kernel/params.c
-@@ -736,7 +736,7 @@ static int uevent_filter(struct kset *ks
- return 0;
- }
-
--static struct kset_uevent_ops module_uevent_ops = {
-+static const struct kset_uevent_ops module_uevent_ops = {
- .filter = uevent_filter,
- };
-
---- a/lib/kobject.c
-+++ b/lib/kobject.c
-@@ -789,7 +789,7 @@ static struct kobj_type kset_ktype = {
- * If the kset was not able to be created, NULL will be returned.
- */
- static struct kset *kset_create(const char *name,
-- struct kset_uevent_ops *uevent_ops,
-+ const struct kset_uevent_ops *uevent_ops,
- struct kobject *parent_kobj)
- {
- struct kset *kset;
-@@ -832,7 +832,7 @@ static struct kset *kset_create(const ch
- * If the kset was not able to be created, NULL will be returned.
- */
- struct kset *kset_create_and_add(const char *name,
-- struct kset_uevent_ops *uevent_ops,
-+ const struct kset_uevent_ops *uevent_ops,
- struct kobject *parent_kobj)
- {
- struct kset *kset;
---- a/lib/kobject_uevent.c
-+++ b/lib/kobject_uevent.c
-@@ -95,7 +95,7 @@ int kobject_uevent_env(struct kobject *k
- const char *subsystem;
- struct kobject *top_kobj;
- struct kset *kset;
-- struct kset_uevent_ops *uevent_ops;
-+ const struct kset_uevent_ops *uevent_ops;
- u64 seq;
- int i = 0;
- int retval = 0;
---- a/mm/slub.c
-+++ b/mm/slub.c
-@@ -4409,7 +4409,7 @@ static int uevent_filter(struct kset *ks
- return 0;
- }
-
--static struct kset_uevent_ops slab_uevent_ops = {
-+static const struct kset_uevent_ops slab_uevent_ops = {
- .filter = uevent_filter,
- };
-
diff --git a/driver-core/kobject-example-spelling-fixes.patch b/driver-core/kobject-example-spelling-fixes.patch
deleted file mode 100644
index 0553d5ef32e4bf..00000000000000
--- a/driver-core/kobject-example-spelling-fixes.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From rvoicilas@gmail.com Fri Dec 18 11:58:45 2009
-From: Radu Voicilas <rvoicilas@gmail.com>
-Date: Sat, 12 Dec 2009 01:06:09 -0800
-Subject: kobject-example: Spelling fixes.
-To: gregkh@suse.de
-Cc: kernel-janitors@vger.kernel.org, Radu Voicilas <rvoicilas@gmail.com>
-Message-ID: <1260608772-9839-2-git-send-email-rvoicilas@gmail.com>
-
-
-No change in functionality.
-
-Signed-off-by: Radu Voicilas <rvoicilas@gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- samples/kobject/kobject-example.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/samples/kobject/kobject-example.c
-+++ b/samples/kobject/kobject-example.c
-@@ -44,7 +44,7 @@ static struct kobj_attribute foo_attribu
- __ATTR(foo, 0666, foo_show, foo_store);
-
- /*
-- * More complex function where we determine which varible is being accessed by
-+ * More complex function where we determine which variable is being accessed by
- * looking at the attribute for the "baz" and "bar" files.
- */
- static ssize_t b_show(struct kobject *kobj, struct kobj_attribute *attr,
-@@ -79,7 +79,7 @@ static struct kobj_attribute bar_attribu
-
-
- /*
-- * Create a group of attributes so that we can create and destory them all
-+ * Create a group of attributes so that we can create and destroy them all
- * at once.
- */
- static struct attribute *attrs[] = {
diff --git a/driver-core/kset-example-spelling-fixes.patch b/driver-core/kset-example-spelling-fixes.patch
deleted file mode 100644
index ca5daee7fd495a..00000000000000
--- a/driver-core/kset-example-spelling-fixes.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From rvoicilas@gmail.com Fri Dec 18 11:59:04 2009
-From: Radu Voicilas <rvoicilas@gmail.com>
-Date: Sat, 12 Dec 2009 01:06:10 -0800
-Subject: kset-example: Spelling fixes.
-To: gregkh@suse.de
-Cc: kernel-janitors@vger.kernel.org, Radu Voicilas <rvoicilas@gmail.com>
-Message-ID: <1260608772-9839-3-git-send-email-rvoicilas@gmail.com>
-
-
-No change in functionality.
-
-Signed-off-by: Radu Voicilas <rvoicilas@gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- samples/kobject/kset-example.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/samples/kobject/kset-example.c
-+++ b/samples/kobject/kset-example.c
-@@ -127,7 +127,7 @@ static struct foo_attribute foo_attribut
- __ATTR(foo, 0666, foo_show, foo_store);
-
- /*
-- * More complex function where we determine which varible is being accessed by
-+ * More complex function where we determine which variable is being accessed by
- * looking at the attribute for the "baz" and "bar" files.
- */
- static ssize_t b_show(struct foo_obj *foo_obj, struct foo_attribute *attr,
-@@ -161,7 +161,7 @@ static struct foo_attribute bar_attribut
- __ATTR(bar, 0666, b_show, b_store);
-
- /*
-- * Create a group of attributes so that we can create and destory them all
-+ * Create a group of attributes so that we can create and destroy them all
- * at once.
- */
- static struct attribute *foo_default_attrs[] = {
diff --git a/driver-core/media-move-omap24xxcam-s-probe-function-to-.devinit.text.patch b/driver-core/media-move-omap24xxcam-s-probe-function-to-.devinit.text.patch
deleted file mode 100644
index af52fadc0a1fb6..00000000000000
--- a/driver-core/media-move-omap24xxcam-s-probe-function-to-.devinit.text.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From u.kleine-koenig@pengutronix.de Wed Feb 17 12:45:00 2010
-From: Uwe Kleine-K�nig <u.kleine-koenig@pengutronix.de>
-Date: Thu, 4 Feb 2010 20:56:55 +0100
-Subject: media: move omap24xxcam's probe function to .devinit.text
-To: Greg KH <gregkh@suse.de>
-Cc: Hans Verkuil <hverkuil@xs4all.nl>, Mauro Carvalho Chehab <mchehab@redhat.com>, Andrew Morton <akpm@linux-foundation.org>
-Message-ID: <1265313417-5568-7-git-send-email-u.kleine-koenig@pengutronix.de>
-
-From: Uwe Kleine-K�nig <u.kleine-koenig@pengutronix.de>
-
-A pointer to omap24xxcam_probe is passed to the core via
-platform_driver_register and so the function must not disappear when the
-.init sections are discarded. Otherwise (if also having HOTPLUG=y)
-unbinding and binding a device to the driver via sysfs will result in an
-oops as does a device being registered late.
-
-An alternative to this patch is using platform_driver_probe instead of
-platform_driver_register plus removing the pointer to the probe function
-from the struct platform_driver.
-
-Signed-off-by: Uwe Kleine-K�nig <u.kleine-koenig@pengutronix.de>
-Acked-by: Sakari Ailus <sakari.ailus@maxwell.research.nokia.com>
-Acked-by: Trilok Soni <soni.trilok@gmail.com>
-Cc: Hans Verkuil <hverkuil@xs4all.nl>
-Cc: Mauro Carvalho Chehab <mchehab@redhat.com>
-Cc: Andrew Morton <akpm@linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/media/video/omap24xxcam.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/media/video/omap24xxcam.c
-+++ b/drivers/media/video/omap24xxcam.c
-@@ -1735,7 +1735,7 @@ static struct v4l2_int_device omap24xxca
- *
- */
-
--static int __init omap24xxcam_probe(struct platform_device *pdev)
-+static int __devinit omap24xxcam_probe(struct platform_device *pdev)
- {
- struct omap24xxcam_device *cam;
- struct resource *mem;
diff --git a/driver-core/msi-laptop-add-resume-method-for-set-the-scm-load-again.patch b/driver-core/msi-laptop-add-resume-method-for-set-the-scm-load-again.patch
deleted file mode 100644
index b5dbda2c9dbb29..00000000000000
--- a/driver-core/msi-laptop-add-resume-method-for-set-the-scm-load-again.patch
+++ /dev/null
@@ -1,67 +0,0 @@
->From f8a0814a4d4ec38816508be4f0252eb49605bc4d Mon Sep 17 00:00:00 2001
-From: Lee, Chun-Yi <jlee@novell.com>
-Date: Wed, 27 Jan 2010 00:13:45 +0800
-Subject: msi-laptop: Add resume method for set the SCM load again
-
-Implement the resume method for set the load SCM flag after system reusme.
-Without this patch, the wifi function key on SCM model will back to BIOS
-control mode then confuse with the userland software control.
-e.g. MSI N034
-
-Signed-off-by: Lee, Chun-Yi <jlee@novell.com>
-Cc: Lennart Poettering <mzxreary@0pointer.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/platform/x86/msi-laptop.c | 26 +++++++++++++++++++++++++-
- 1 file changed, 25 insertions(+), 1 deletion(-)
-
---- a/drivers/platform/x86/msi-laptop.c
-+++ b/drivers/platform/x86/msi-laptop.c
-@@ -77,6 +77,8 @@
- #define MSI_STANDARD_EC_SCM_LOAD_ADDRESS 0x2d
- #define MSI_STANDARD_EC_SCM_LOAD_MASK (1 << 0)
-
-+static int msi_laptop_resume(struct platform_device *device);
-+
- static int force;
- module_param(force, bool, 0);
- MODULE_PARM_DESC(force, "Force driver load, ignore DMI data");
-@@ -395,7 +397,8 @@ static struct platform_driver msipf_driv
- .driver = {
- .name = "msi-laptop-pf",
- .owner = THIS_MODULE,
-- }
-+ },
-+ .resume = msi_laptop_resume,
- };
-
- static struct platform_device *msipf_device;
-@@ -584,6 +587,27 @@ err_bluetooth:
- return retval;
- }
-
-+static int msi_laptop_resume(struct platform_device *device)
-+{
-+ u8 data;
-+ int result;
-+
-+ if (!load_scm_model)
-+ return 0;
-+
-+ /* set load SCM to disable hardware control by fn key */
-+ result = ec_read(MSI_STANDARD_EC_SCM_LOAD_ADDRESS, &data);
-+ if (result < 0)
-+ return result;
-+
-+ result = ec_write(MSI_STANDARD_EC_SCM_LOAD_ADDRESS,
-+ data | MSI_STANDARD_EC_SCM_LOAD_MASK);
-+ if (result < 0)
-+ return result;
-+
-+ return 0;
-+}
-+
- static int load_scm_model_init(struct platform_device *sdev)
- {
- u8 data;
diff --git a/driver-core/msi-laptop-add-threeg-sysfs-file-for-support-query-3g-state-by-standard-66-62-ec-command.patch b/driver-core/msi-laptop-add-threeg-sysfs-file-for-support-query-3g-state-by-standard-66-62-ec-command.patch
deleted file mode 100644
index 3ca7ba7a8701a4..00000000000000
--- a/driver-core/msi-laptop-add-threeg-sysfs-file-for-support-query-3g-state-by-standard-66-62-ec-command.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From ac61c03317125cddb781603fd6f9798a61b23845 Mon Sep 17 00:00:00 2001
-From: Lee, Chun-Yi <jlee@novell.com>
-Date: Sat, 9 Jan 2010 23:17:07 +0800
-Subject: msi-laptop: Add threeg sysfs file for support query 3G state by standard 66/62 ec command
-
-Add threeg sysfs file for support query 3G state by standard 66/62 ec
-command, the MSI standard ec interface supported this feature.
-
-Signed-off-by: Lee, Chun-Yi <jlee@novell.com>
-Cc: Lennart Poettering <mzxreary@0pointer.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/platform/x86/msi-laptop.c | 31 ++++++++++++++++++++++++++++++-
- 1 file changed, 30 insertions(+), 1 deletion(-)
-
---- a/drivers/platform/x86/msi-laptop.c
-+++ b/drivers/platform/x86/msi-laptop.c
-@@ -70,6 +70,7 @@
- #define MSI_STANDARD_EC_BLUETOOTH_MASK (1 << 0)
- #define MSI_STANDARD_EC_WEBCAM_MASK (1 << 1)
- #define MSI_STANDARD_EC_WLAN_MASK (1 << 3)
-+#define MSI_STANDARD_EC_3G_MASK (1 << 4)
-
- static int force;
- module_param(force, bool, 0);
-@@ -80,7 +81,7 @@ module_param(auto_brightness, int, 0);
- MODULE_PARM_DESC(auto_brightness, "Enable automatic brightness control (0: disabled; 1: enabled; 2: don't touch)");
-
- static bool old_ec_model;
--static int wlan_s, bluetooth_s;
-+static int wlan_s, bluetooth_s, threeg_s;
-
- /* Hardware access */
-
-@@ -169,6 +170,8 @@ static int get_wireless_state_ec_standar
-
- bluetooth_s = !!(rdata & MSI_STANDARD_EC_BLUETOOTH_MASK);
-
-+ threeg_s = !!(rdata & MSI_STANDARD_EC_3G_MASK);
-+
- return 0;
- }
-
-@@ -230,6 +233,23 @@ static ssize_t show_bluetooth(struct dev
- return sprintf(buf, "%i\n", enabled);
- }
-
-+static ssize_t show_threeg(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+
-+ int ret;
-+
-+ /* old msi ec not support 3G */
-+ if (old_ec_model)
-+ return -1;
-+
-+ ret = get_wireless_state_ec_standard();
-+ if (ret < 0)
-+ return ret;
-+
-+ return sprintf(buf, "%i\n", threeg_s);
-+}
-+
- static ssize_t show_lcd_level(struct device *dev,
- struct device_attribute *attr, char *buf)
- {
-@@ -292,6 +312,7 @@ static DEVICE_ATTR(lcd_level, 0644, show
- static DEVICE_ATTR(auto_brightness, 0644, show_auto_brightness, store_auto_brightness);
- static DEVICE_ATTR(bluetooth, 0444, show_bluetooth, NULL);
- static DEVICE_ATTR(wlan, 0444, show_wlan, NULL);
-+static DEVICE_ATTR(threeg, 0444, show_threeg, NULL);
-
- static struct attribute *msipf_attributes[] = {
- &dev_attr_lcd_level.attr,
-@@ -412,6 +433,12 @@ static int __init msi_init(void)
- if (ret)
- goto fail_platform_device2;
-
-+ if (!old_ec_model) {
-+ ret = device_create_file(&msipf_device->dev, &dev_attr_threeg);
-+ if (ret)
-+ goto fail_platform_device2;
-+ }
-+
- /* Disable automatic brightness control by default because
- * this module was probably loaded to do brightness control in
- * software. */
-@@ -446,6 +473,8 @@ static void __exit msi_cleanup(void)
- {
-
- sysfs_remove_group(&msipf_device->dev.kobj, &msipf_attribute_group);
-+ if (!old_ec_model)
-+ device_remove_file(&msipf_device->dev, &dev_attr_threeg);
- platform_device_unregister(msipf_device);
- platform_driver_unregister(&msipf_driver);
- backlight_device_unregister(msibl_device);
diff --git a/driver-core/msi-laptop-depends-on-rfkill.patch b/driver-core/msi-laptop-depends-on-rfkill.patch
deleted file mode 100644
index a1eeb7e196b0ef..00000000000000
--- a/driver-core/msi-laptop-depends-on-rfkill.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From akpm@linux-foundation.org Wed Feb 17 12:36:04 2010
-From: Randy Dunlap <randy.dunlap@oracle.com>
-Date: Wed, 03 Feb 2010 14:24:28 -0800
-Subject: msi-laptop: depends on RFKILL
-To: mm-commits@vger.kernel.org
-Cc: randy.dunlap@oracle.com, greg@kroah.com, jlee@novell.com, mzxreary@0pointer.de
-Message-ID: <201002032224.o13MOSGP022771@imap1.linux-foundation.org>
-
-From: Randy Dunlap <randy.dunlap@oracle.com>
-
-msi-laptop uses rfkill*() interfaces so it should depend on RFKILL.
-
-msi-laptop.c:(.text+0x1fcd1b): undefined reference to `rfkill_alloc'
-msi-laptop.c:(.text+0x1fcd76): undefined reference to `rfkill_register'
-msi-laptop.c:(.text+0x1fcdc8): undefined reference to `rfkill_destroy'
-msi-laptop.c:(.text+0x1fcdd9): undefined reference to `rfkill_unregister'
-
-This repairs "msi-laptop: Detect 3G device exists by standard ec command",
-which is in some gregkh tree.
-
-Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
-Cc: Lennart Poettering <mzxreary@0pointer.de>
-Cc: Lee, Chun-Yi <jlee@novell.com>
-Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/platform/x86/Kconfig | 1 +
- 1 file changed, 1 insertion(+)
-
---- a/drivers/platform/x86/Kconfig
-+++ b/drivers/platform/x86/Kconfig
-@@ -150,6 +150,7 @@ config MSI_LAPTOP
- tristate "MSI Laptop Extras"
- depends on ACPI
- depends on BACKLIGHT_CLASS_DEVICE
-+ depends on RFKILL
- ---help---
- This is a driver for laptops built by MSI (MICRO-STAR
- INTERNATIONAL):
diff --git a/driver-core/msi-laptop-detect-3g-device-exists-by-standard-ec-command.patch b/driver-core/msi-laptop-detect-3g-device-exists-by-standard-ec-command.patch
deleted file mode 100644
index f564443cd48994..00000000000000
--- a/driver-core/msi-laptop-detect-3g-device-exists-by-standard-ec-command.patch
+++ /dev/null
@@ -1,112 +0,0 @@
-From de25bd283cbaaed3c3eaa4505f2c60fc7689c512 Mon Sep 17 00:00:00 2001
-From: Lee, Chun-Yi <jlee@novell.com>
-Date: Wed, 27 Jan 2010 12:23:00 +0800
-Subject: msi-laptop: Detect 3G device exists by standard ec command
-
-Detect 3G device exists by standard ec command. Driver will not create the threeg sysfs
-file and threeg rfkill interface if there have no internal 3G device in MSI notebook/netbook.
-
-Signed-off-by: Lee, Chun-Yi <jlee@novell.com>
-Cc: Lennart Poettering <mzxreary@0pointer.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/platform/x86/msi-laptop.c | 44 +++++++++++++++++++++++++++++---------
- 1 file changed, 34 insertions(+), 10 deletions(-)
-
---- a/drivers/platform/x86/msi-laptop.c
-+++ b/drivers/platform/x86/msi-laptop.c
-@@ -79,6 +79,8 @@
-
- static int msi_laptop_resume(struct platform_device *device);
-
-+#define MSI_STANDARD_EC_DEVICES_EXISTS_ADDRESS 0x2f
-+
- static int force;
- module_param(force, bool, 0);
- MODULE_PARM_DESC(force, "Force driver load, ignore DMI data");
-@@ -89,6 +91,7 @@ MODULE_PARM_DESC(auto_brightness, "Enabl
-
- static bool old_ec_model;
- static int wlan_s, bluetooth_s, threeg_s;
-+static int threeg_exists;
-
- /* Some MSI 3G netbook only have one fn key to control Wlan/Bluetooth/3G,
- * those netbook will load the SCM (windows app) to disable the original
-@@ -224,6 +227,20 @@ static int get_wireless_state_ec_standar
- return 0;
- }
-
-+static int get_threeg_exists(void)
-+{
-+ u8 rdata;
-+ int result;
-+
-+ result = ec_read(MSI_STANDARD_EC_DEVICES_EXISTS_ADDRESS, &rdata);
-+ if (result < 0)
-+ return -1;
-+
-+ threeg_exists = !!(rdata & MSI_STANDARD_EC_3G_MASK);
-+
-+ return 0;
-+}
-+
- /* Backlight device stuff */
-
- static int bl_get_brightness(struct backlight_device *b)
-@@ -561,15 +578,17 @@ static int rfkill_init(struct platform_d
- if (retval)
- goto err_wlan;
-
-- rfk_threeg = rfkill_alloc("msi-threeg", &sdev->dev, RFKILL_TYPE_WWAN,
-- &rfkill_threeg_ops, NULL);
-- if (!rfk_threeg) {
-- retval = -ENOMEM;
-- goto err_threeg;
-+ if (threeg_exists) {
-+ rfk_threeg = rfkill_alloc("msi-threeg", &sdev->dev,
-+ RFKILL_TYPE_WWAN, &rfkill_threeg_ops, NULL);
-+ if (!rfk_threeg) {
-+ retval = -ENOMEM;
-+ goto err_threeg;
-+ }
-+ retval = rfkill_register(rfk_threeg);
-+ if (retval)
-+ goto err_threeg;
- }
-- retval = rfkill_register(rfk_threeg);
-- if (retval)
-- goto err_threeg;
-
- return 0;
-
-@@ -649,6 +668,9 @@ static int __init msi_init(void)
- if (force || dmi_check_system(msi_dmi_table))
- old_ec_model = 1;
-
-+ if (!old_ec_model)
-+ get_threeg_exists();
-+
- if (!old_ec_model && dmi_check_system(msi_load_scm_models_dmi_table))
- load_scm_model = 1;
-
-@@ -694,7 +716,9 @@ static int __init msi_init(void)
- goto fail_platform_device2;
-
- if (!old_ec_model) {
-- ret = device_create_file(&msipf_device->dev, &dev_attr_threeg);
-+ if (threeg_exists)
-+ ret = device_create_file(&msipf_device->dev,
-+ &dev_attr_threeg);
- if (ret)
- goto fail_platform_device2;
- }
-@@ -733,7 +757,7 @@ static void __exit msi_cleanup(void)
- {
-
- sysfs_remove_group(&msipf_device->dev.kobj, &msipf_attribute_group);
-- if (!old_ec_model)
-+ if (!old_ec_model && threeg_exists)
- device_remove_file(&msipf_device->dev, &dev_attr_threeg);
- platform_device_unregister(msipf_device);
- platform_driver_unregister(&msipf_driver);
diff --git a/driver-core/msi-laptop-support-some-msi-3g-netbook-that-is-need-load-scm.patch b/driver-core/msi-laptop-support-some-msi-3g-netbook-that-is-need-load-scm.patch
deleted file mode 100644
index ef50862ef737b4..00000000000000
--- a/driver-core/msi-laptop-support-some-msi-3g-netbook-that-is-need-load-scm.patch
+++ /dev/null
@@ -1,340 +0,0 @@
-From eb7fa79aaab66b15257a1d10fccd5a526919b193 Mon Sep 17 00:00:00 2001
-From: Lee, Chun-Yi <jlee@novell.com>
-Date: Fri, 22 Jan 2010 00:15:59 +0800
-Subject: msi-laptop: Support some MSI 3G netbook that is need load SCM
-
-Some MSI 3G netbook only have one fn key to control Wlan/Bluetooth/3G,
-those netbook will load the SCM (windows app) to disable the original
-Wlan/Bluetooth control by BIOS when user press fn key, then control
-Wlan/Bluetooth/3G by SCM (software control by OS). Without SCM, user
-cann't on/off 3G module on those 3G netbook.
-On Linux, msi-laptop driver will do the same thing to disable the
-original BIOS control, then might need use HAL or other userland
-application to do the software control that simulate with SCM.
-e.g. MSI N034 netbook
-
-Signed-off-by: Lee, Chun-Yi <jlee@novell.com>
-Cc: Lennart Poettering <mzxreary@0pointer.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/platform/x86/msi-laptop.c | 238 ++++++++++++++++++++++++++++++++++++++
- 1 file changed, 238 insertions(+)
-
---- a/drivers/platform/x86/msi-laptop.c
-+++ b/drivers/platform/x86/msi-laptop.c
-@@ -58,6 +58,7 @@
- #include <linux/dmi.h>
- #include <linux/backlight.h>
- #include <linux/platform_device.h>
-+#include <linux/rfkill.h>
-
- #define MSI_DRIVER_VERSION "0.5"
-
-@@ -72,6 +73,10 @@
- #define MSI_STANDARD_EC_WLAN_MASK (1 << 3)
- #define MSI_STANDARD_EC_3G_MASK (1 << 4)
-
-+/* For set SCM load flag to disable BIOS fn key */
-+#define MSI_STANDARD_EC_SCM_LOAD_ADDRESS 0x2d
-+#define MSI_STANDARD_EC_SCM_LOAD_MASK (1 << 0)
-+
- static int force;
- module_param(force, bool, 0);
- MODULE_PARM_DESC(force, "Force driver load, ignore DMI data");
-@@ -83,6 +88,19 @@ MODULE_PARM_DESC(auto_brightness, "Enabl
- static bool old_ec_model;
- static int wlan_s, bluetooth_s, threeg_s;
-
-+/* Some MSI 3G netbook only have one fn key to control Wlan/Bluetooth/3G,
-+ * those netbook will load the SCM (windows app) to disable the original
-+ * Wlan/Bluetooth control by BIOS when user press fn key, then control
-+ * Wlan/Bluetooth/3G by SCM (software control by OS). Without SCM, user
-+ * cann't on/off 3G module on those 3G netbook.
-+ * On Linux, msi-laptop driver will do the same thing to disable the
-+ * original BIOS control, then might need use HAL or other userland
-+ * application to do the software control that simulate with SCM.
-+ * e.g. MSI N034 netbook
-+ */
-+static bool load_scm_model;
-+static struct rfkill *rfk_wlan, *rfk_bluetooth, *rfk_threeg;
-+
- /* Hardware access */
-
- static int set_lcd_level(int level)
-@@ -139,6 +157,35 @@ static int set_auto_brightness(int enabl
- return ec_transaction(MSI_EC_COMMAND_LCD_LEVEL, wdata, 2, NULL, 0, 1);
- }
-
-+static ssize_t set_device_state(const char *buf, size_t count, u8 mask)
-+{
-+ int status;
-+ u8 wdata = 0, rdata;
-+ int result;
-+
-+ if (sscanf(buf, "%i", &status) != 1 || (status < 0 || status > 1))
-+ return -EINVAL;
-+
-+ /* read current device state */
-+ result = ec_read(MSI_STANDARD_EC_COMMAND_ADDRESS, &rdata);
-+ if (result < 0)
-+ return -EINVAL;
-+
-+ if (!!(rdata & mask) != status) {
-+ /* reverse device bit */
-+ if (rdata & mask)
-+ wdata = rdata & ~mask;
-+ else
-+ wdata = rdata | mask;
-+
-+ result = ec_write(MSI_STANDARD_EC_COMMAND_ADDRESS, wdata);
-+ if (result < 0)
-+ return -EINVAL;
-+ }
-+
-+ return count;
-+}
-+
- static int get_wireless_state(int *wlan, int *bluetooth)
- {
- u8 wdata = 0, rdata;
-@@ -215,6 +262,12 @@ static ssize_t show_wlan(struct device *
- return sprintf(buf, "%i\n", enabled);
- }
-
-+static ssize_t store_wlan(struct device *dev,
-+ struct device_attribute *attr, const char *buf, size_t count)
-+{
-+ return set_device_state(buf, count, MSI_STANDARD_EC_WLAN_MASK);
-+}
-+
- static ssize_t show_bluetooth(struct device *dev,
- struct device_attribute *attr, char *buf)
- {
-@@ -233,6 +286,12 @@ static ssize_t show_bluetooth(struct dev
- return sprintf(buf, "%i\n", enabled);
- }
-
-+static ssize_t store_bluetooth(struct device *dev,
-+ struct device_attribute *attr, const char *buf, size_t count)
-+{
-+ return set_device_state(buf, count, MSI_STANDARD_EC_BLUETOOTH_MASK);
-+}
-+
- static ssize_t show_threeg(struct device *dev,
- struct device_attribute *attr, char *buf)
- {
-@@ -250,6 +309,12 @@ static ssize_t show_threeg(struct device
- return sprintf(buf, "%i\n", threeg_s);
- }
-
-+static ssize_t store_threeg(struct device *dev,
-+ struct device_attribute *attr, const char *buf, size_t count)
-+{
-+ return set_device_state(buf, count, MSI_STANDARD_EC_3G_MASK);
-+}
-+
- static ssize_t show_lcd_level(struct device *dev,
- struct device_attribute *attr, char *buf)
- {
-@@ -387,6 +452,169 @@ static struct dmi_system_id __initdata m
- { }
- };
-
-+static struct dmi_system_id __initdata msi_load_scm_models_dmi_table[] = {
-+ {
-+ .ident = "MSI N034",
-+ .matches = {
-+ DMI_MATCH(DMI_SYS_VENDOR,
-+ "MICRO-STAR INTERNATIONAL CO., LTD"),
-+ DMI_MATCH(DMI_PRODUCT_NAME, "MS-N034"),
-+ DMI_MATCH(DMI_CHASSIS_VENDOR,
-+ "MICRO-STAR INTERNATIONAL CO., LTD")
-+ },
-+ .callback = dmi_check_cb
-+ },
-+ { }
-+};
-+
-+static int rfkill_bluetooth_set(void *data, bool blocked)
-+{
-+ /* Do something with blocked...*/
-+ /*
-+ * blocked == false is on
-+ * blocked == true is off
-+ */
-+ if (blocked)
-+ set_device_state("0", 0, MSI_STANDARD_EC_BLUETOOTH_MASK);
-+ else
-+ set_device_state("1", 0, MSI_STANDARD_EC_BLUETOOTH_MASK);
-+
-+ return 0;
-+}
-+
-+static int rfkill_wlan_set(void *data, bool blocked)
-+{
-+ if (blocked)
-+ set_device_state("0", 0, MSI_STANDARD_EC_WLAN_MASK);
-+ else
-+ set_device_state("1", 0, MSI_STANDARD_EC_WLAN_MASK);
-+
-+ return 0;
-+}
-+
-+static int rfkill_threeg_set(void *data, bool blocked)
-+{
-+ if (blocked)
-+ set_device_state("0", 0, MSI_STANDARD_EC_3G_MASK);
-+ else
-+ set_device_state("1", 0, MSI_STANDARD_EC_3G_MASK);
-+
-+ return 0;
-+}
-+
-+static struct rfkill_ops rfkill_bluetooth_ops = {
-+ .set_block = rfkill_bluetooth_set
-+};
-+
-+static struct rfkill_ops rfkill_wlan_ops = {
-+ .set_block = rfkill_wlan_set
-+};
-+
-+static struct rfkill_ops rfkill_threeg_ops = {
-+ .set_block = rfkill_threeg_set
-+};
-+
-+static void rfkill_cleanup(void)
-+{
-+ if (rfk_bluetooth) {
-+ rfkill_unregister(rfk_bluetooth);
-+ rfkill_destroy(rfk_bluetooth);
-+ }
-+
-+ if (rfk_threeg) {
-+ rfkill_unregister(rfk_threeg);
-+ rfkill_destroy(rfk_threeg);
-+ }
-+
-+ if (rfk_wlan) {
-+ rfkill_unregister(rfk_wlan);
-+ rfkill_destroy(rfk_wlan);
-+ }
-+}
-+
-+static int rfkill_init(struct platform_device *sdev)
-+{
-+ /* add rfkill */
-+ int retval;
-+
-+ rfk_bluetooth = rfkill_alloc("msi-bluetooth", &sdev->dev,
-+ RFKILL_TYPE_BLUETOOTH,
-+ &rfkill_bluetooth_ops, NULL);
-+ if (!rfk_bluetooth) {
-+ retval = -ENOMEM;
-+ goto err_bluetooth;
-+ }
-+ retval = rfkill_register(rfk_bluetooth);
-+ if (retval)
-+ goto err_bluetooth;
-+
-+ rfk_wlan = rfkill_alloc("msi-wlan", &sdev->dev, RFKILL_TYPE_WLAN,
-+ &rfkill_wlan_ops, NULL);
-+ if (!rfk_wlan) {
-+ retval = -ENOMEM;
-+ goto err_wlan;
-+ }
-+ retval = rfkill_register(rfk_wlan);
-+ if (retval)
-+ goto err_wlan;
-+
-+ rfk_threeg = rfkill_alloc("msi-threeg", &sdev->dev, RFKILL_TYPE_WWAN,
-+ &rfkill_threeg_ops, NULL);
-+ if (!rfk_threeg) {
-+ retval = -ENOMEM;
-+ goto err_threeg;
-+ }
-+ retval = rfkill_register(rfk_threeg);
-+ if (retval)
-+ goto err_threeg;
-+
-+ return 0;
-+
-+err_threeg:
-+ rfkill_destroy(rfk_threeg);
-+ if (rfk_wlan)
-+ rfkill_unregister(rfk_wlan);
-+err_wlan:
-+ rfkill_destroy(rfk_wlan);
-+ if (rfk_bluetooth)
-+ rfkill_unregister(rfk_bluetooth);
-+err_bluetooth:
-+ rfkill_destroy(rfk_bluetooth);
-+
-+ return retval;
-+}
-+
-+static int load_scm_model_init(struct platform_device *sdev)
-+{
-+ u8 data;
-+ int result;
-+
-+ /* allow userland write sysfs file */
-+ dev_attr_bluetooth.store = store_bluetooth;
-+ dev_attr_wlan.store = store_wlan;
-+ dev_attr_threeg.store = store_threeg;
-+ dev_attr_bluetooth.attr.mode |= S_IWUSR;
-+ dev_attr_wlan.attr.mode |= S_IWUSR;
-+ dev_attr_threeg.attr.mode |= S_IWUSR;
-+
-+ /* disable hardware control by fn key */
-+ result = ec_read(MSI_STANDARD_EC_SCM_LOAD_ADDRESS, &data);
-+ if (result < 0)
-+ return result;
-+
-+ result = ec_write(MSI_STANDARD_EC_SCM_LOAD_ADDRESS,
-+ data | MSI_STANDARD_EC_SCM_LOAD_MASK);
-+ if (result < 0)
-+ return result;
-+
-+ /* initial rfkill */
-+ result = rfkill_init(sdev);
-+ if (result < 0)
-+ return result;
-+
-+ return 0;
-+}
-+
- static int __init msi_init(void)
- {
- int ret;
-@@ -397,6 +625,9 @@ static int __init msi_init(void)
- if (force || dmi_check_system(msi_dmi_table))
- old_ec_model = 1;
-
-+ if (!old_ec_model && dmi_check_system(msi_load_scm_models_dmi_table))
-+ load_scm_model = 1;
-+
- if (auto_brightness < 0 || auto_brightness > 2)
- return -EINVAL;
-
-@@ -429,6 +660,11 @@ static int __init msi_init(void)
- if (ret)
- goto fail_platform_device1;
-
-+ if (load_scm_model && (load_scm_model_init(msipf_device) < 0)) {
-+ ret = -EINVAL;
-+ goto fail_platform_device1;
-+ }
-+
- ret = sysfs_create_group(&msipf_device->dev.kobj, &msipf_attribute_group);
- if (ret)
- goto fail_platform_device2;
-@@ -479,6 +715,8 @@ static void __exit msi_cleanup(void)
- platform_driver_unregister(&msipf_driver);
- backlight_device_unregister(msibl_device);
-
-+ rfkill_cleanup();
-+
- /* Enable automatic brightness control again */
- if (auto_brightness != 2)
- set_auto_brightness(1);
diff --git a/driver-core/msi-laptop-support-standard-ec-66-62-command-on-msi-notebook-and-nebook.patch b/driver-core/msi-laptop-support-standard-ec-66-62-command-on-msi-notebook-and-nebook.patch
deleted file mode 100644
index 1287ca78403bf0..00000000000000
--- a/driver-core/msi-laptop-support-standard-ec-66-62-command-on-msi-notebook-and-nebook.patch
+++ /dev/null
@@ -1,109 +0,0 @@
-From 47dda27e67d7de255fa9c9e093441c22ad0d9e56 Mon Sep 17 00:00:00 2001
-From: Lee, Chun-Yi <jlee@novell.com>
-Date: Sat, 9 Jan 2010 21:16:52 +0800
-Subject: msi-laptop: Support standard ec 66/62 command on MSI notebook and nebook
-
-Suppport standard ec 66/62 command on MSI notebook and nebook. MSI
-netbook and notebook already support 66/62 command, so, add new
-get_state function, and put the old model to non-standard model, but
-driver still support those old model.
-
-Signed-off-by: Lee, Chun-Yi <jlee@novell.com>
-Cc: Lennart Poettering <mzxreary@0pointer.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/platform/x86/msi-laptop.c | 43 ++++++++++++++++++++++++++++++++++----
- 1 file changed, 39 insertions(+), 4 deletions(-)
-
---- a/drivers/platform/x86/msi-laptop.c
-+++ b/drivers/platform/x86/msi-laptop.c
-@@ -66,6 +66,11 @@
- #define MSI_EC_COMMAND_WIRELESS 0x10
- #define MSI_EC_COMMAND_LCD_LEVEL 0x11
-
-+#define MSI_STANDARD_EC_COMMAND_ADDRESS 0x2e
-+#define MSI_STANDARD_EC_BLUETOOTH_MASK (1 << 0)
-+#define MSI_STANDARD_EC_WEBCAM_MASK (1 << 1)
-+#define MSI_STANDARD_EC_WLAN_MASK (1 << 3)
-+
- static int force;
- module_param(force, bool, 0);
- MODULE_PARM_DESC(force, "Force driver load, ignore DMI data");
-@@ -74,6 +79,9 @@ static int auto_brightness;
- module_param(auto_brightness, int, 0);
- MODULE_PARM_DESC(auto_brightness, "Enable automatic brightness control (0: disabled; 1: enabled; 2: don't touch)");
-
-+static bool old_ec_model;
-+static int wlan_s, bluetooth_s;
-+
- /* Hardware access */
-
- static int set_lcd_level(int level)
-@@ -148,6 +156,22 @@ static int get_wireless_state(int *wlan,
- return 0;
- }
-
-+static int get_wireless_state_ec_standard(void)
-+{
-+ u8 rdata;
-+ int result;
-+
-+ result = ec_read(MSI_STANDARD_EC_COMMAND_ADDRESS, &rdata);
-+ if (result < 0)
-+ return -1;
-+
-+ wlan_s = !!(rdata & MSI_STANDARD_EC_WLAN_MASK);
-+
-+ bluetooth_s = !!(rdata & MSI_STANDARD_EC_BLUETOOTH_MASK);
-+
-+ return 0;
-+}
-+
- /* Backlight device stuff */
-
- static int bl_get_brightness(struct backlight_device *b)
-@@ -176,7 +200,12 @@ static ssize_t show_wlan(struct device *
-
- int ret, enabled;
-
-- ret = get_wireless_state(&enabled, NULL);
-+ if (old_ec_model) {
-+ ret = get_wireless_state(&enabled, NULL);
-+ } else {
-+ ret = get_wireless_state_ec_standard();
-+ enabled = wlan_s;
-+ }
- if (ret < 0)
- return ret;
-
-@@ -189,7 +218,12 @@ static ssize_t show_bluetooth(struct dev
-
- int ret, enabled;
-
-- ret = get_wireless_state(NULL, &enabled);
-+ if (old_ec_model) {
-+ ret = get_wireless_state(NULL, &enabled);
-+ } else {
-+ ret = get_wireless_state_ec_standard();
-+ enabled = bluetooth_s;
-+ }
- if (ret < 0)
- return ret;
-
-@@ -339,8 +373,8 @@ static int __init msi_init(void)
- if (acpi_disabled)
- return -ENODEV;
-
-- if (!force && !dmi_check_system(msi_dmi_table))
-- return -ENODEV;
-+ if (force || dmi_check_system(msi_dmi_table))
-+ old_ec_model = 1;
-
- if (auto_brightness < 0 || auto_brightness > 2)
- return -EINVAL;
-@@ -435,3 +469,4 @@ MODULE_ALIAS("dmi:*:svnMICRO-STARINT'LCO
- MODULE_ALIAS("dmi:*:svnMicro-StarInternational:pnMS-1058:pvr0581:rvnMSI:rnMS-1058:*:ct10:*");
- MODULE_ALIAS("dmi:*:svnMicro-StarInternational:pnMS-1412:*:rvnMSI:rnMS-1412:*:cvnMICRO-STARINT'LCO.,LTD:ct10:*");
- MODULE_ALIAS("dmi:*:svnNOTEBOOK:pnSAM2000:pvr0131*:cvnMICRO-STARINT'LCO.,LTD:ct10:*");
-+MODULE_ALIAS("dmi:*:svnMICRO-STARINTERNATIONAL*:pnMS-N034:*");
diff --git a/driver-core/platform-drivers-move-probe-to-.devinit.text-in-arch-arm.patch b/driver-core/platform-drivers-move-probe-to-.devinit.text-in-arch-arm.patch
deleted file mode 100644
index 86520f8ab92306..00000000000000
--- a/driver-core/platform-drivers-move-probe-to-.devinit.text-in-arch-arm.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From u.kleine-koenig@pengutronix.de Wed Feb 17 12:38:14 2010
-From: Uwe Kleine-K�nig <u.kleine-koenig@pengutronix.de>
-Date: Thu, 4 Feb 2010 20:56:49 +0100
-Subject: platform-drivers: move probe to .devinit.text in arch/arm
-To: Greg KH <gregkh@suse.de>
-Cc: Andrew Morton <akpm@linux-foundation.org>, Arnaud Patard <arnaud.patard@rtp-net.org>, Ben Dooks <ben-linux@fluff.org>, Dmitry Baryshkov <dbaryshkov@gmail.com>, Eric Miao <eric.miao@marvell.com>, Kristoffer Ericson <Kristoffer.Ericson@gmail.com>, Liam Girdwood <liam.girdwood@wolfsonmicro.com>, Paul Sokolovsky <pmiscml@gmail.com>, Richard Purdie <rpurdie@rpsys.net>, Russell King <rmk+kernel@arm.linux.org.uk>
-Message-ID: <1265313417-5568-1-git-send-email-u.kleine-koenig@pengutronix.de>
-
-From: Uwe Kleine-K�nig <u.kleine-koenig@pengutronix.de>
-
-A pointer to a probe callback is passed to the core via
-platform_driver_register and so the function must not disappear when the
-.init sections are discarded. Otherwise (if also having HOTPLUG=y)
-unbinding and binding a device to the driver via sysfs will result in an
-oops as does a device being registered late.
-
-An alternative to this patch is using platform_driver_probe instead of
-platform_driver_register plus removing the pointer to the probe function
-from the struct platform_driver.
-
-Signed-off-by: Uwe Kleine-K�nig <u.kleine-koenig@pengutronix.de>
-Cc: Andrew Morton <akpm@linux-foundation.org>
-Cc: Ben Dooks <ben-linux@fluff.org>
-Cc: Dmitry Baryshkov <dbaryshkov@gmail.com>
-Cc: Eric Miao <eric.miao@marvell.com>
-Cc: Liam Girdwood <liam.girdwood@wolfsonmicro.com>
-Cc: Paul Sokolovsky <pmiscml@gmail.com>
-Cc: Richard Purdie <rpurdie@rpsys.net>
-Cc: Russell King <rmk+kernel@arm.linux.org.uk>
-Acked-by: Arnaud Patard <arnaud.patard@rtp-net.org>
-Acked-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
-Acked-by: Kristoffer Ericson <kristoffer.ericson@gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- arch/arm/mach-pxa/corgi_ssp.c | 2 +-
- arch/arm/mach-pxa/sharpsl_pm.c | 2 +-
- arch/arm/mach-s3c2410/h1940-bluetooth.c | 2 +-
- arch/arm/mach-sa1100/jornada720_ssp.c | 2 +-
- 4 files changed, 4 insertions(+), 4 deletions(-)
-
---- a/arch/arm/mach-pxa/corgi_ssp.c
-+++ b/arch/arm/mach-pxa/corgi_ssp.c
-@@ -204,7 +204,7 @@ void __init corgi_ssp_set_machinfo(struc
- ssp_machinfo = machinfo;
- }
-
--static int __init corgi_ssp_probe(struct platform_device *dev)
-+static int __devinit corgi_ssp_probe(struct platform_device *dev)
- {
- int ret;
-
---- a/arch/arm/mach-pxa/sharpsl_pm.c
-+++ b/arch/arm/mach-pxa/sharpsl_pm.c
-@@ -900,7 +900,7 @@ static struct platform_suspend_ops sharp
- };
- #endif
-
--static int __init sharpsl_pm_probe(struct platform_device *pdev)
-+static int __devinit sharpsl_pm_probe(struct platform_device *pdev)
- {
- int ret;
-
---- a/arch/arm/mach-s3c2410/h1940-bluetooth.c
-+++ b/arch/arm/mach-s3c2410/h1940-bluetooth.c
-@@ -56,7 +56,7 @@ static const struct rfkill_ops h1940bt_r
- .set_block = h1940bt_set_block,
- };
-
--static int __init h1940bt_probe(struct platform_device *pdev)
-+static int __devinit h1940bt_probe(struct platform_device *pdev)
- {
- struct rfkill *rfk;
- int ret = 0;
---- a/arch/arm/mach-sa1100/jornada720_ssp.c
-+++ b/arch/arm/mach-sa1100/jornada720_ssp.c
-@@ -130,7 +130,7 @@ void jornada_ssp_end(void)
- };
- EXPORT_SYMBOL(jornada_ssp_end);
-
--static int __init jornada_ssp_probe(struct platform_device *dev)
-+static int __devinit jornada_ssp_probe(struct platform_device *dev)
- {
- int ret;
-
diff --git a/driver-core/platform-drivers-move-probe-to-.devinit.text-in-drivers-scsi.patch b/driver-core/platform-drivers-move-probe-to-.devinit.text-in-drivers-scsi.patch
deleted file mode 100644
index 0ade165f042ce1..00000000000000
--- a/driver-core/platform-drivers-move-probe-to-.devinit.text-in-drivers-scsi.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From u.kleine-koenig@pengutronix.de Wed Feb 17 12:39:48 2010
-From: Uwe Kleine-K�nig <u.kleine-koenig@pengutronix.de>
-Date: Thu, 4 Feb 2010 20:56:50 +0100
-Subject: platform-drivers: move probe to .devinit.text in drivers/scsi
-To: Greg KH <gregkh@suse.de>
-Cc: Andrew Morton <akpm@linux-foundation.org>, David Brownell <dbrownell@users.sourceforge.net>, Dmitri Vorobiev <dmitri.vorobiev@movial.fi>, Henrik Kretzschmar <henne@nachtwindheim.de>, James Bottomley <James.Bottomley@HansenPartnership.com>, Kay Sievers <kay.sievers@vrfy.org>, peter fuerst <post@pfrst.de>, Ralf Baechle <ralf@linux-mips.org>, Thomas Bogendoerfer <tsbogend@alpha.franken.de>
-Message-ID: <1265313417-5568-2-git-send-email-u.kleine-koenig@pengutronix.de>
-
-From: Uwe Kleine-K�nig <u.kleine-koenig@pengutronix.de>
-
-A pointer to a probe callback is passed to the core via
-platform_driver_register and so the function must not disappear when the
-.init sections are discarded. Otherwise (if also having HOTPLUG=y)
-unbinding and binding a device to the driver via sysfs will result in an
-oops as does a device being registered late.
-
-An alternative to this patch is using platform_driver_probe instead of
-platform_driver_register plus removing the pointer to the probe function
-from the struct platform_driver.
-
-Signed-off-by: Uwe Kleine-K�nig <u.kleine-koenig@pengutronix.de>
-Cc: Andrew Morton <akpm@linux-foundation.org>
-Cc: David Brownell <dbrownell@users.sourceforge.net>
-Cc: Dmitri Vorobiev <dmitri.vorobiev@movial.fi>
-Cc: Henrik Kretzschmar <henne@nachtwindheim.de>
-Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
-Cc: Kay Sievers <kay.sievers@vrfy.org>
-Cc: peter fuerst <post@pfrst.de>
-Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
-Acked-by: Ralf Baechle <ralf@linux-mips.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/scsi/sgiwd93.c | 2 +-
- drivers/scsi/sni_53c710.c | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
---- a/drivers/scsi/sgiwd93.c
-+++ b/drivers/scsi/sgiwd93.c
-@@ -226,7 +226,7 @@ static struct scsi_host_template sgiwd93
- .use_clustering = DISABLE_CLUSTERING,
- };
-
--static int __init sgiwd93_probe(struct platform_device *pdev)
-+static int __devinit sgiwd93_probe(struct platform_device *pdev)
- {
- struct sgiwd93_platform_data *pd = pdev->dev.platform_data;
- unsigned char *wdregs = pd->wdregs;
---- a/drivers/scsi/sni_53c710.c
-+++ b/drivers/scsi/sni_53c710.c
-@@ -64,7 +64,7 @@ static struct scsi_host_template snirm71
- .module = THIS_MODULE,
- };
-
--static int __init snirm710_probe(struct platform_device *dev)
-+static int __devinit snirm710_probe(struct platform_device *dev)
- {
- unsigned long base;
- struct NCR_700_Host_Parameters *hostdata;
diff --git a/driver-core/platform-drivers-move-probe-to-.devinit.text-in-drivers-video.patch b/driver-core/platform-drivers-move-probe-to-.devinit.text-in-drivers-video.patch
deleted file mode 100644
index 18f67cfb457ee9..00000000000000
--- a/driver-core/platform-drivers-move-probe-to-.devinit.text-in-drivers-video.patch
+++ /dev/null
@@ -1,274 +0,0 @@
-From u.kleine-koenig@pengutronix.de Wed Feb 17 12:40:59 2010
-From: Uwe Kleine-K�nig <u.kleine-koenig@pengutronix.de>
-Date: Thu, 4 Feb 2010 20:56:51 +0100
-Subject: platform-drivers: move probe to .devinit.text in drivers/video
-To: Greg KH <gregkh@suse.de>
-Cc: Philipp Zabel <philipp.zabel@gmail.com>, Ian Molton <spyro@f2s.com>, Richard Purdie <rpurdie@rpsys.net>, Antonino Daplas <adaplas@gmail.com>, Alberto Mardegan <mardy@users.sourceforge.net>, Andrew Morton <akpm@linux-foundation.org>, Krzysztof Helt <krzysztof.h1@wp.pl>, Roel Kluin <12o3l@tiscali.nl>, Antonino Daplas <adaplas@pol.net>, Frans Pop <elendil@planet.nl>, Helge Deller <deller@gmx.de>, James Simmons <jsimmons@infradead.org>, Greg Kroah-Hartman <gregkh@suse.de>, Magnus Damm <damm@igel.co.jp>, Paul Mundt <lethal@linux-sh.org>, Krzysztof Helt <krzysztof.h1@poczta.fm>, Adrian Bunk <bunk@stusta.de>, Christoph Hellwig <hch@lst.de>, Russell King <rmk+kernel@arm.linux.org.uk>, Matthias Kaehlcke <matthias@kaehlcke.net>, Pavel Machek <pavel@suse.cz>, Ben Dooks <ben-linux@fluff.org>, Arnaud Patard <arnaud.patard@rtp-net.org>, Vincent Sanders <vince@simtec.co.uk>, Andriy Skulysh <askulysh@gmail.com>, Anton Vorontsov <avorontsov@ru.mvista.com>, Roel Kluin <roel.kluin@gmail.com>, Thomas Bogendoerfer <tsbogend@alpha.franken.de>, Kaj-Michael Lang <milang@tal.org>, Martin Michlmayr <tbm@cyrius.com>, Joshua Kinard <kumba@gentoo.org>, Roland Stigge <stigge@antcom.de>, Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>, Ralf Baechle <ralf@linux-mips.org>, linux-fbdev-devel@lists.sourceforge.net, Peter Jones <pjones@redhat.com>, Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>, Jaya Kumar <jayakumar.lkml@gmail.com>, "Maciej W. Rozycki" <macro@linux-mips.org>, Chandramouli Narayanan <mouli@linux.intel.com>, Huang Ying <ying.huang@intel.com>
-Message-ID: <1265313417-5568-3-git-send-email-u.kleine-koenig@pengutronix.de>
-
-From: Uwe Kleine-K�nig <u.kleine-koenig@pengutronix.de>
-
-A pointer to a probe callback is passed to the core via
-platform_driver_register and so the function must not disappear when the
-.init sections are discarded. Otherwise (if also having HOTPLUG=y)
-unbinding and binding a device to the driver via sysfs will result in an
-oops as does a device being registered late.
-
-An alternative to this patch is using platform_driver_probe instead of
-platform_driver_register plus removing the pointer to the probe function
-from the struct platform_driver.
-
-Signed-off-by: Uwe Kleine-K�nig <u.kleine-koenig@pengutronix.de>
-Cc: Adrian Bunk <bunk@stusta.de>
-Cc: Alberto Mardegan <mardy@users.sourceforge.net>
-Cc: Andrew Morton <akpm@linux-foundation.org>
-Cc: Andriy Skulysh <askulysh@gmail.com>
-Cc: Antonino Daplas <adaplas@gmail.com>
-Cc: Anton Vorontsov <avorontsov@ru.mvista.com>
-Cc: Ben Dooks <ben-linux@fluff.org>
-Cc: Chandramouli Narayanan <mouli@linux.intel.com>
-Cc: Christoph Hellwig <hch@lst.de>
-Cc: Frans Pop <elendil@planet.nl>
-Cc: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
-Cc: Greg Kroah-Hartman <gregkh@suse.de>
-Cc: Helge Deller <deller@gmx.de>
-Cc: Huang Ying <ying.huang@intel.com>
-Cc: Ian Molton <spyro@f2s.com>
-Cc: Joshua Kinard <kumba@gentoo.org>
-Cc: Kaj-Michael Lang <milang@tal.org>
-Cc: Krzysztof Helt <krzysztof.h1@poczta.fm>
-Cc: linux-fbdev-devel@lists.sourceforge.net
-Cc: Maciej W. Rozycki <macro@linux-mips.org>
-Cc: Magnus Damm <damm@igel.co.jp>
-Cc: Martin Michlmayr <tbm@cyrius.com>
-Cc: Matthias Kaehlcke <matthias@kaehlcke.net>
-Cc: Paul Mundt <lethal@linux-sh.org>
-Cc: Pavel Machek <pavel@suse.cz>
-Cc: Philipp Zabel <philipp.zabel@gmail.com>
-Cc: Richard Purdie <rpurdie@rpsys.net>
-Cc: Roel Kluin <roel.kluin@gmail.com>
-Cc: Roland Stigge <stigge@antcom.de>
-Cc: Russell King <rmk+kernel@arm.linux.org.uk>
-Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
-Cc: Vincent Sanders <vince@simtec.co.uk>
-Cc: Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
-Acked-by: Ralf Baechle <ralf@linux-mips.org>
-Acked-by: Arnaud Patard <arnaud.patard@rtp-net.org>
-Acked-by: James Simmons <jsimmons@infradead.org>
-Acked-by: Peter Jones <pjones@redhat.com>
-Acked-by: Jaya Kumar <jayakumar.lkml@gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/video/acornfb.c | 2 +-
- drivers/video/arcfb.c | 2 +-
- drivers/video/cobalt_lcdfb.c | 2 +-
- drivers/video/efifb.c | 2 +-
- drivers/video/epson1355fb.c | 2 +-
- drivers/video/gbefb.c | 2 +-
- drivers/video/hgafb.c | 2 +-
- drivers/video/hitfb.c | 2 +-
- drivers/video/q40fb.c | 2 +-
- drivers/video/s3c2410fb.c | 4 ++--
- drivers/video/sa1100fb.c | 2 +-
- drivers/video/sgivwfb.c | 2 +-
- drivers/video/sh_mobile_lcdcfb.c | 2 +-
- drivers/video/vesafb.c | 2 +-
- drivers/video/vfb.c | 2 +-
- drivers/video/vga16fb.c | 2 +-
- drivers/video/w100fb.c | 2 +-
- 17 files changed, 18 insertions(+), 18 deletions(-)
-
---- a/drivers/video/acornfb.c
-+++ b/drivers/video/acornfb.c
-@@ -1221,7 +1221,7 @@ free_unused_pages(unsigned int virtual_s
- printk("acornfb: freed %dK memory\n", mb_freed);
- }
-
--static int __init acornfb_probe(struct platform_device *dev)
-+static int __devinit acornfb_probe(struct platform_device *dev)
- {
- unsigned long size;
- u_int h_sync, v_sync;
---- a/drivers/video/arcfb.c
-+++ b/drivers/video/arcfb.c
-@@ -504,7 +504,7 @@ static struct fb_ops arcfb_ops = {
- .fb_ioctl = arcfb_ioctl,
- };
-
--static int __init arcfb_probe(struct platform_device *dev)
-+static int __devinit arcfb_probe(struct platform_device *dev)
- {
- struct fb_info *info;
- int retval = -ENOMEM;
---- a/drivers/video/cobalt_lcdfb.c
-+++ b/drivers/video/cobalt_lcdfb.c
-@@ -287,7 +287,7 @@ static struct fb_ops cobalt_lcd_fbops =
- .fb_cursor = cobalt_lcdfb_cursor,
- };
-
--static int __init cobalt_lcdfb_probe(struct platform_device *dev)
-+static int __devinit cobalt_lcdfb_probe(struct platform_device *dev)
- {
- struct fb_info *info;
- struct resource *res;
---- a/drivers/video/efifb.c
-+++ b/drivers/video/efifb.c
-@@ -210,7 +210,7 @@ static int __init efifb_setup(char *opti
- return 0;
- }
-
--static int __init efifb_probe(struct platform_device *dev)
-+static int __devinit efifb_probe(struct platform_device *dev)
- {
- struct fb_info *info;
- int err;
---- a/drivers/video/epson1355fb.c
-+++ b/drivers/video/epson1355fb.c
-@@ -602,7 +602,7 @@ static int epson1355fb_remove(struct pla
- return 0;
- }
-
--int __init epson1355fb_probe(struct platform_device *dev)
-+int __devinit epson1355fb_probe(struct platform_device *dev)
- {
- struct epson1355_par *default_par;
- struct fb_info *info;
---- a/drivers/video/gbefb.c
-+++ b/drivers/video/gbefb.c
-@@ -1128,7 +1128,7 @@ static int __init gbefb_setup(char *opti
- return 0;
- }
-
--static int __init gbefb_probe(struct platform_device *p_dev)
-+static int __devinit gbefb_probe(struct platform_device *p_dev)
- {
- int i, ret = 0;
- struct fb_info *info;
---- a/drivers/video/hgafb.c
-+++ b/drivers/video/hgafb.c
-@@ -551,7 +551,7 @@ static struct fb_ops hgafb_ops = {
- * Initialization
- */
-
--static int __init hgafb_probe(struct platform_device *pdev)
-+static int __devinit hgafb_probe(struct platform_device *pdev)
- {
- struct fb_info *info;
-
---- a/drivers/video/hitfb.c
-+++ b/drivers/video/hitfb.c
-@@ -325,7 +325,7 @@ static struct fb_ops hitfb_ops = {
- .fb_imageblit = cfb_imageblit,
- };
-
--static int __init hitfb_probe(struct platform_device *dev)
-+static int __devinit hitfb_probe(struct platform_device *dev)
- {
- unsigned short lcdclor, ldr3, ldvndr;
- struct fb_info *info;
---- a/drivers/video/q40fb.c
-+++ b/drivers/video/q40fb.c
-@@ -85,7 +85,7 @@ static struct fb_ops q40fb_ops = {
- .fb_imageblit = cfb_imageblit,
- };
-
--static int __init q40fb_probe(struct platform_device *dev)
-+static int __devinit q40fb_probe(struct platform_device *dev)
- {
- struct fb_info *info;
-
---- a/drivers/video/s3c2410fb.c
-+++ b/drivers/video/s3c2410fb.c
-@@ -1004,12 +1004,12 @@ dealloc_fb:
- return ret;
- }
-
--static int __init s3c2410fb_probe(struct platform_device *pdev)
-+static int __devinit s3c2410fb_probe(struct platform_device *pdev)
- {
- return s3c24xxfb_probe(pdev, DRV_S3C2410);
- }
-
--static int __init s3c2412fb_probe(struct platform_device *pdev)
-+static int __devinit s3c2412fb_probe(struct platform_device *pdev)
- {
- return s3c24xxfb_probe(pdev, DRV_S3C2412);
- }
---- a/drivers/video/sa1100fb.c
-+++ b/drivers/video/sa1100fb.c
-@@ -1435,7 +1435,7 @@ static struct sa1100fb_info * __init sa1
- return fbi;
- }
-
--static int __init sa1100fb_probe(struct platform_device *pdev)
-+static int __devinit sa1100fb_probe(struct platform_device *pdev)
- {
- struct sa1100fb_info *fbi;
- int ret, irq;
---- a/drivers/video/sgivwfb.c
-+++ b/drivers/video/sgivwfb.c
-@@ -745,7 +745,7 @@ int __init sgivwfb_setup(char *options)
- /*
- * Initialisation
- */
--static int __init sgivwfb_probe(struct platform_device *dev)
-+static int __devinit sgivwfb_probe(struct platform_device *dev)
- {
- struct sgivw_par *par;
- struct fb_info *info;
---- a/drivers/video/sh_mobile_lcdcfb.c
-+++ b/drivers/video/sh_mobile_lcdcfb.c
-@@ -943,7 +943,7 @@ static const struct dev_pm_ops sh_mobile
-
- static int sh_mobile_lcdc_remove(struct platform_device *pdev);
-
--static int __init sh_mobile_lcdc_probe(struct platform_device *pdev)
-+static int __devinit sh_mobile_lcdc_probe(struct platform_device *pdev)
- {
- struct fb_info *info;
- struct sh_mobile_lcdc_priv *priv;
---- a/drivers/video/vesafb.c
-+++ b/drivers/video/vesafb.c
-@@ -226,7 +226,7 @@ static int __init vesafb_setup(char *opt
- return 0;
- }
-
--static int __init vesafb_probe(struct platform_device *dev)
-+static int __devinit vesafb_probe(struct platform_device *dev)
- {
- struct fb_info *info;
- int i, err;
---- a/drivers/video/vfb.c
-+++ b/drivers/video/vfb.c
-@@ -479,7 +479,7 @@ static int __init vfb_setup(char *option
- * Initialisation
- */
-
--static int __init vfb_probe(struct platform_device *dev)
-+static int __devinit vfb_probe(struct platform_device *dev)
- {
- struct fb_info *info;
- int retval = -ENOMEM;
---- a/drivers/video/vga16fb.c
-+++ b/drivers/video/vga16fb.c
-@@ -1293,7 +1293,7 @@ static int vga16fb_setup(char *options)
- }
- #endif
-
--static int __init vga16fb_probe(struct platform_device *dev)
-+static int __devinit vga16fb_probe(struct platform_device *dev)
- {
- struct fb_info *info;
- struct vga16fb_par *par;
---- a/drivers/video/w100fb.c
-+++ b/drivers/video/w100fb.c
-@@ -628,7 +628,7 @@ static int w100fb_resume(struct platform
- #endif
-
-
--int __init w100fb_probe(struct platform_device *pdev)
-+int __devinit w100fb_probe(struct platform_device *pdev)
- {
- int err = -EIO;
- struct w100fb_mach_info *inf;
diff --git a/driver-core/sysdev-add-attribute-argument-to-class_attribute-show-store.patch b/driver-core/sysdev-add-attribute-argument-to-class_attribute-show-store.patch
deleted file mode 100644
index 3ceb32490d93b2..00000000000000
--- a/driver-core/sysdev-add-attribute-argument-to-class_attribute-show-store.patch
+++ /dev/null
@@ -1,438 +0,0 @@
-From andi@firstfloor.org Thu Jan 14 16:46:24 2010
-From: Andi Kleen <andi@firstfloor.org>
-Date: Tue, 5 Jan 2010 12:48:07 +0100 (CET)
-Subject: driver-core: Add attribute argument to class_attribute show/store
-To: linux-kernel@vger.kernel.org, greg@kroah.com
-Message-ID: <20100105114807.90132B17C2@basil.firstfloor.org>
-
-
-Passing the attribute to the low level IO functions allows all kinds
-of cleanups, by sharing low level IO code without requiring
-an own function for every piece of data.
-
-Also drivers can extend the attributes with own data fields
-and use that in the low level function.
-
-This makes the class attributes the same as sysdev_class attributes
-and plain attributes.
-
-This will allow further cleanups in drivers.
-
-Full tree sweep converting all users.
-
-Signed-off-by: Andi Kleen <ak@linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/base/class.c | 4 ++--
- drivers/base/cpu.c | 8 ++++++--
- drivers/base/firmware_class.c | 8 ++++++--
- drivers/base/memory.c | 11 ++++++++---
- drivers/block/osdblk.c | 12 +++++++++---
- drivers/block/pktcdvd.c | 12 +++++++++---
- drivers/gpio/gpiolib.c | 8 ++++++--
- drivers/gpu/drm/drm_sysfs.c | 3 ++-
- drivers/infiniband/core/ucm.c | 4 +++-
- drivers/infiniband/core/user_mad.c | 4 +++-
- drivers/infiniband/core/uverbs_main.c | 4 +++-
- drivers/misc/phantom.c | 2 +-
- drivers/mtd/ubi/build.c | 3 ++-
- drivers/net/bonding/bond_sysfs.c | 5 ++++-
- drivers/staging/asus_oled/asus_oled.c | 4 +++-
- drivers/uwb/driver.c | 5 ++++-
- include/linux/device.h | 6 ++++--
- net/bluetooth/l2cap.c | 4 +++-
- net/bluetooth/rfcomm/core.c | 4 +++-
- net/bluetooth/rfcomm/sock.c | 4 +++-
- net/bluetooth/sco.c | 4 +++-
- 21 files changed, 87 insertions(+), 32 deletions(-)
-
---- a/drivers/base/class.c
-+++ b/drivers/base/class.c
-@@ -31,7 +31,7 @@ static ssize_t class_attr_show(struct ko
- ssize_t ret = -EIO;
-
- if (class_attr->show)
-- ret = class_attr->show(cp->class, buf);
-+ ret = class_attr->show(cp->class, class_attr, buf);
- return ret;
- }
-
-@@ -43,7 +43,7 @@ static ssize_t class_attr_store(struct k
- ssize_t ret = -EIO;
-
- if (class_attr->store)
-- ret = class_attr->store(cp->class, buf, count);
-+ ret = class_attr->store(cp->class, class_attr, buf, count);
- return ret;
- }
-
---- a/drivers/base/cpu.c
-+++ b/drivers/base/cpu.c
-@@ -79,13 +79,17 @@ void unregister_cpu(struct cpu *cpu)
- }
-
- #ifdef CONFIG_ARCH_CPU_PROBE_RELEASE
--static ssize_t cpu_probe_store(struct class *class, const char *buf,
-+static ssize_t cpu_probe_store(struct class *class,
-+ struct class_attribute *attr,
-+ const char *buf,
- size_t count)
- {
- return arch_cpu_probe(buf, count);
- }
-
--static ssize_t cpu_release_store(struct class *class, const char *buf,
-+static ssize_t cpu_release_store(struct class *class,
-+ struct class_attribute *attr,
-+ const char *buf,
- size_t count)
- {
- return arch_cpu_release(buf, count);
---- a/drivers/base/firmware_class.c
-+++ b/drivers/base/firmware_class.c
-@@ -69,7 +69,9 @@ fw_load_abort(struct firmware_priv *fw_p
- }
-
- static ssize_t
--firmware_timeout_show(struct class *class, char *buf)
-+firmware_timeout_show(struct class *class,
-+ struct class_attribute *attr,
-+ char *buf)
- {
- return sprintf(buf, "%d\n", loading_timeout);
- }
-@@ -87,7 +89,9 @@ firmware_timeout_show(struct class *clas
- * Note: zero means 'wait forever'.
- **/
- static ssize_t
--firmware_timeout_store(struct class *class, const char *buf, size_t count)
-+firmware_timeout_store(struct class *class,
-+ struct class_attribute *attr,
-+ const char *buf, size_t count)
- {
- loading_timeout = simple_strtol(buf, NULL, 10);
- if (loading_timeout < 0)
---- a/drivers/base/memory.c
-+++ b/drivers/base/memory.c
-@@ -331,7 +331,8 @@ static int block_size_init(void)
- */
- #ifdef CONFIG_ARCH_MEMORY_PROBE
- static ssize_t
--memory_probe_store(struct class *class, const char *buf, size_t count)
-+memory_probe_store(struct class *class, struct class_attribute *attr,
-+ const char *buf, size_t count)
- {
- u64 phys_addr;
- int nid;
-@@ -368,7 +369,9 @@ static inline int memory_probe_init(void
-
- /* Soft offline a page */
- static ssize_t
--store_soft_offline_page(struct class *class, const char *buf, size_t count)
-+store_soft_offline_page(struct class *class,
-+ struct class_attribute *attr,
-+ const char *buf, size_t count)
- {
- int ret;
- u64 pfn;
-@@ -385,7 +388,9 @@ store_soft_offline_page(struct class *cl
-
- /* Forcibly offline a page, including killing processes. */
- static ssize_t
--store_hard_offline_page(struct class *class, const char *buf, size_t count)
-+store_hard_offline_page(struct class *class,
-+ struct class_attribute *attr,
-+ const char *buf, size_t count)
- {
- int ret;
- u64 pfn;
---- a/drivers/block/osdblk.c
-+++ b/drivers/block/osdblk.c
-@@ -476,7 +476,9 @@ static void class_osdblk_release(struct
- kfree(cls);
- }
-
--static ssize_t class_osdblk_list(struct class *c, char *data)
-+static ssize_t class_osdblk_list(struct class *c,
-+ struct class_attribute *attr,
-+ char *data)
- {
- int n = 0;
- struct list_head *tmp;
-@@ -500,7 +502,9 @@ static ssize_t class_osdblk_list(struct
- return n;
- }
-
--static ssize_t class_osdblk_add(struct class *c, const char *buf, size_t count)
-+static ssize_t class_osdblk_add(struct class *c,
-+ struct class_attribute *attr,
-+ const char *buf, size_t count)
- {
- struct osdblk_device *osdev;
- ssize_t rc;
-@@ -592,7 +596,9 @@ err_out_mod:
- return rc;
- }
-
--static ssize_t class_osdblk_remove(struct class *c, const char *buf,
-+static ssize_t class_osdblk_remove(struct class *c,
-+ struct class_attribute *attr,
-+ const char *buf,
- size_t count)
- {
- struct osdblk_device *osdev = NULL;
---- a/drivers/block/pktcdvd.c
-+++ b/drivers/block/pktcdvd.c
-@@ -337,7 +337,9 @@ static void class_pktcdvd_release(struct
- {
- kfree(cls);
- }
--static ssize_t class_pktcdvd_show_map(struct class *c, char *data)
-+static ssize_t class_pktcdvd_show_map(struct class *c,
-+ struct class_attribute *attr,
-+ char *data)
- {
- int n = 0;
- int idx;
-@@ -356,7 +358,9 @@ static ssize_t class_pktcdvd_show_map(st
- return n;
- }
-
--static ssize_t class_pktcdvd_store_add(struct class *c, const char *buf,
-+static ssize_t class_pktcdvd_store_add(struct class *c,
-+ struct class_attribute *attr,
-+ const char *buf,
- size_t count)
- {
- unsigned int major, minor;
-@@ -376,7 +380,9 @@ static ssize_t class_pktcdvd_store_add(s
- return -EINVAL;
- }
-
--static ssize_t class_pktcdvd_store_remove(struct class *c, const char *buf,
-+static ssize_t class_pktcdvd_store_remove(struct class *c,
-+ struct class_attribute *attr,
-+ const char *buf,
- size_t count)
- {
- unsigned int major, minor;
---- a/drivers/gpio/gpiolib.c
-+++ b/drivers/gpio/gpiolib.c
-@@ -623,7 +623,9 @@ static const struct attribute_group gpio
- * /sys/class/gpio/unexport ... write-only
- * integer N ... number of GPIO to unexport
- */
--static ssize_t export_store(struct class *class, const char *buf, size_t len)
-+static ssize_t export_store(struct class *class,
-+ struct class_attribute *attr,
-+ const char *buf, size_t len)
- {
- long gpio;
- int status;
-@@ -653,7 +655,9 @@ done:
- return status ? : len;
- }
-
--static ssize_t unexport_store(struct class *class, const char *buf, size_t len)
-+static ssize_t unexport_store(struct class *class,
-+ struct class_attribute *attr,
-+ const char *buf, size_t len)
- {
- long gpio;
- int status;
---- a/drivers/gpu/drm/drm_sysfs.c
-+++ b/drivers/gpu/drm/drm_sysfs.c
-@@ -71,7 +71,8 @@ static int drm_class_resume(struct devic
- }
-
- /* Display the version of drm_core. This doesn't work right in current design */
--static ssize_t version_show(struct class *dev, char *buf)
-+static ssize_t version_show(struct class *dev, struct class_attribute *attr,
-+ char *buf)
- {
- return sprintf(buf, "%s %d.%d.%d %s\n", CORE_NAME, CORE_MAJOR,
- CORE_MINOR, CORE_PATCHLEVEL, CORE_DATE);
---- a/drivers/infiniband/core/ucm.c
-+++ b/drivers/infiniband/core/ucm.c
-@@ -1336,7 +1336,9 @@ static void ib_ucm_remove_one(struct ib_
- device_unregister(&ucm_dev->dev);
- }
-
--static ssize_t show_abi_version(struct class *class, char *buf)
-+static ssize_t show_abi_version(struct class *class,
-+ struct class_attribute *attr,
-+ char *buf)
- {
- return sprintf(buf, "%d\n", IB_USER_CM_ABI_VERSION);
- }
---- a/drivers/infiniband/core/user_mad.c
-+++ b/drivers/infiniband/core/user_mad.c
-@@ -965,7 +965,9 @@ static ssize_t show_port(struct device *
- }
- static DEVICE_ATTR(port, S_IRUGO, show_port, NULL);
-
--static ssize_t show_abi_version(struct class *class, char *buf)
-+static ssize_t show_abi_version(struct class *class,
-+ struct class_attribute *attr,
-+ char *buf)
- {
- return sprintf(buf, "%d\n", IB_USER_MAD_ABI_VERSION);
- }
---- a/drivers/infiniband/core/uverbs_main.c
-+++ b/drivers/infiniband/core/uverbs_main.c
-@@ -691,7 +691,9 @@ static ssize_t show_dev_abi_version(stru
- }
- static DEVICE_ATTR(abi_version, S_IRUGO, show_dev_abi_version, NULL);
-
--static ssize_t show_abi_version(struct class *class, char *buf)
-+static ssize_t show_abi_version(struct class *class,
-+ struct class_attribute *attr,
-+ char *buf)
- {
- return sprintf(buf, "%d\n", IB_USER_VERBS_ABI_VERSION);
- }
---- a/drivers/misc/phantom.c
-+++ b/drivers/misc/phantom.c
-@@ -497,7 +497,7 @@ static struct pci_driver phantom_pci_dri
- .resume = phantom_resume
- };
-
--static ssize_t phantom_show_version(struct class *cls, char *buf)
-+static ssize_t phantom_show_version(struct class *cls, struct class_attribute *attr, char *buf)
- {
- return sprintf(buf, PHANTOM_VERSION "\n");
- }
---- a/drivers/mtd/ubi/build.c
-+++ b/drivers/mtd/ubi/build.c
-@@ -89,7 +89,8 @@ DEFINE_MUTEX(ubi_devices_mutex);
- static DEFINE_SPINLOCK(ubi_devices_lock);
-
- /* "Show" method for files in '/<sysfs>/class/ubi/' */
--static ssize_t ubi_version_show(struct class *class, char *buf)
-+static ssize_t ubi_version_show(struct class *class, struct class_attribute *attr,
-+ char *buf)
- {
- return sprintf(buf, "%d\n", UBI_VERSION);
- }
---- a/drivers/net/bonding/bond_sysfs.c
-+++ b/drivers/net/bonding/bond_sysfs.c
-@@ -51,7 +51,9 @@
- * "show" function for the bond_masters attribute.
- * The class parameter is ignored.
- */
--static ssize_t bonding_show_bonds(struct class *cls, char *buf)
-+static ssize_t bonding_show_bonds(struct class *cls,
-+ struct class_attribute *attr,
-+ char *buf)
- {
- struct net *net = current->nsproxy->net_ns;
- struct bond_net *bn = net_generic(net, bond_net_id);
-@@ -98,6 +100,7 @@ static struct net_device *bond_get_by_na
- */
-
- static ssize_t bonding_store_bonds(struct class *cls,
-+ struct class_attribute *attr,
- const char *buffer, size_t count)
- {
- struct net *net = current->nsproxy->net_ns;
---- a/drivers/staging/asus_oled/asus_oled.c
-+++ b/drivers/staging/asus_oled/asus_oled.c
-@@ -770,7 +770,9 @@ static struct usb_driver oled_driver = {
- .id_table = id_table,
- };
-
--static ssize_t version_show(struct class *dev, char *buf)
-+static ssize_t version_show(struct class *dev,
-+ struct class_attribute *attr,
-+ char *buf)
- {
- return sprintf(buf, ASUS_OLED_UNDERSCORE_NAME " %s\n",
- ASUS_OLED_VERSION);
---- a/drivers/uwb/driver.c
-+++ b/drivers/uwb/driver.c
-@@ -74,13 +74,16 @@
- unsigned long beacon_timeout_ms = 500;
-
- static
--ssize_t beacon_timeout_ms_show(struct class *class, char *buf)
-+ssize_t beacon_timeout_ms_show(struct class *class,
-+ struct class_attribute *attr,
-+ char *buf)
- {
- return scnprintf(buf, PAGE_SIZE, "%lu\n", beacon_timeout_ms);
- }
-
- static
- ssize_t beacon_timeout_ms_store(struct class *class,
-+ struct class_attribute *attr,
- const char *buf, size_t size)
- {
- unsigned long bt;
---- a/include/linux/device.h
-+++ b/include/linux/device.h
-@@ -251,8 +251,10 @@ extern struct device *class_find_device(
-
- struct class_attribute {
- struct attribute attr;
-- ssize_t (*show)(struct class *class, char *buf);
-- ssize_t (*store)(struct class *class, const char *buf, size_t count);
-+ ssize_t (*show)(struct class *class, struct class_attribute *attr,
-+ char *buf);
-+ ssize_t (*store)(struct class *class, struct class_attribute *attr,
-+ const char *buf, size_t count);
- };
-
- #define CLASS_ATTR(_name, _mode, _show, _store) \
---- a/net/bluetooth/l2cap.c
-+++ b/net/bluetooth/l2cap.c
-@@ -3937,7 +3937,9 @@ drop:
- return 0;
- }
-
--static ssize_t l2cap_sysfs_show(struct class *dev, char *buf)
-+static ssize_t l2cap_sysfs_show(struct class *dev,
-+ struct class_attribute *attr,
-+ char *buf)
- {
- struct sock *sk;
- struct hlist_node *node;
---- a/net/bluetooth/rfcomm/core.c
-+++ b/net/bluetooth/rfcomm/core.c
-@@ -2098,7 +2098,9 @@ static struct hci_cb rfcomm_cb = {
- .security_cfm = rfcomm_security_cfm
- };
-
--static ssize_t rfcomm_dlc_sysfs_show(struct class *dev, char *buf)
-+static ssize_t rfcomm_dlc_sysfs_show(struct class *dev,
-+ struct class_attribute *attr,
-+ char *buf)
- {
- struct rfcomm_session *s;
- struct list_head *pp, *p;
---- a/net/bluetooth/rfcomm/sock.c
-+++ b/net/bluetooth/rfcomm/sock.c
-@@ -1061,7 +1061,9 @@ done:
- return result;
- }
-
--static ssize_t rfcomm_sock_sysfs_show(struct class *dev, char *buf)
-+static ssize_t rfcomm_sock_sysfs_show(struct class *dev,
-+ struct class_attribute *attr,
-+ char *buf)
- {
- struct sock *sk;
- struct hlist_node *node;
---- a/net/bluetooth/sco.c
-+++ b/net/bluetooth/sco.c
-@@ -953,7 +953,9 @@ drop:
- return 0;
- }
-
--static ssize_t sco_sysfs_show(struct class *dev, char *buf)
-+static ssize_t sco_sysfs_show(struct class *dev,
-+ struct class_attribute *attr,
-+ char *buf)
- {
- struct sock *sk;
- struct hlist_node *node;
diff --git a/driver-core/sysdev-add-sysdev_create-remove_files.patch b/driver-core/sysdev-add-sysdev_create-remove_files.patch
deleted file mode 100644
index 0f820939a819cb..00000000000000
--- a/driver-core/sysdev-add-sysdev_create-remove_files.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From andi@firstfloor.org Thu Jan 14 16:45:54 2010
-From: Andi Kleen <andi@firstfloor.org>
-Date: Tue, 5 Jan 2010 12:48:05 +0100 (CET)
-Subject: sysdev: Add sysdev_create/remove_files
-To: linux-kernel@vger.kernel.org, greg@kroah.com
-Message-ID: <20100105114805.8AA08B17C2@basil.firstfloor.org>
-
-
-
-Allow to create/remove arrays of sysdev attributes
-
-Just wrappers around sysfs_create/move_files
-
-Will be used later to clean up some drivers.
-
-Signed-off-by: Andi Kleen <ak@linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- include/linux/sysdev.h | 13 +++++++++++++
- 1 file changed, 13 insertions(+)
-
---- a/include/linux/sysdev.h
-+++ b/include/linux/sysdev.h
-@@ -123,6 +123,19 @@ struct sysdev_attribute {
- extern int sysdev_create_file(struct sys_device *, struct sysdev_attribute *);
- extern void sysdev_remove_file(struct sys_device *, struct sysdev_attribute *);
-
-+/* Create/remove NULL terminated attribute list */
-+static inline int
-+sysdev_create_files(struct sys_device *d, struct sysdev_attribute **a)
-+{
-+ return sysfs_create_files(&d->kobj, (const struct attribute **)a);
-+}
-+
-+static inline void
-+sysdev_remove_files(struct sys_device *d, struct sysdev_attribute **a)
-+{
-+ return sysfs_remove_files(&d->kobj, (const struct attribute **)a);
-+}
-+
- struct sysdev_ext_attribute {
- struct sysdev_attribute attr;
- void *var;
diff --git a/driver-core/sysdev-convert-cpu-driver-sysdev-class-attributes.patch b/driver-core/sysdev-convert-cpu-driver-sysdev-class-attributes.patch
deleted file mode 100644
index eb9fceaa74139b..00000000000000
--- a/driver-core/sysdev-convert-cpu-driver-sysdev-class-attributes.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From andi@firstfloor.org Tue Jan 5 14:28:18 2010
-From: Andi Kleen <andi@firstfloor.org>
-Date: Tue, 5 Jan 2010 12:48:00 +0100 (CET)
-Subject: sysdev: Convert cpu driver sysdev class attributes
-To: linux-kernel@vger.kernel.org, greg@kroah.com
-Message-ID: <20100105114800.7CE01B17C2@basil.firstfloor.org>
-
-
-
-Using the new attribute argument convert the cpu driver class attributes
-to carry the node state. Then use a shared function to do what a lot of
-individual functions did before.
-
-This eliminates an ugly macro.
-
-Signed-off-by: Andi Kleen <ak@linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
-
----
- drivers/base/cpu.c | 39 ++++++++++++++++++++++-----------------
- 1 file changed, 22 insertions(+), 17 deletions(-)
-
---- a/drivers/base/cpu.c
-+++ b/drivers/base/cpu.c
-@@ -141,27 +141,32 @@ static SYSDEV_ATTR(crash_notes, 0400, sh
- /*
- * Print cpu online, possible, present, and system maps
- */
--static ssize_t print_cpus_map(char *buf, const struct cpumask *map)
-+
-+struct cpu_attr {
-+ struct sysdev_class_attribute attr;
-+ const struct cpumask *const * const map;
-+};
-+
-+static ssize_t show_cpus_attr(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
-+ char *buf)
- {
-- int n = cpulist_scnprintf(buf, PAGE_SIZE-2, map);
-+ struct cpu_attr *ca = container_of(attr, struct cpu_attr, attr);
-+ int n = cpulist_scnprintf(buf, PAGE_SIZE-2, *(ca->map));
-
- buf[n++] = '\n';
- buf[n] = '\0';
- return n;
- }
-
--#define print_cpus_func(type) \
--static ssize_t print_cpus_##type(struct sysdev_class *class, \
-- struct sysdev_class_attribute *attr, char *buf) \
--{ \
-- return print_cpus_map(buf, cpu_##type##_mask); \
--} \
--static struct sysdev_class_attribute attr_##type##_map = \
-- _SYSDEV_CLASS_ATTR(type, 0444, print_cpus_##type, NULL)
--
--print_cpus_func(online);
--print_cpus_func(possible);
--print_cpus_func(present);
-+#define _CPU_ATTR(name, map) \
-+ { _SYSDEV_CLASS_ATTR(name, 0444, show_cpus_attr, NULL), map }
-+
-+static struct cpu_attr cpu_attrs[] = {
-+ _CPU_ATTR(online, &cpu_online_mask),
-+ _CPU_ATTR(possible, &cpu_possible_mask),
-+ _CPU_ATTR(present, &cpu_present_mask),
-+};
-
- /*
- * Print values for NR_CPUS and offlined cpus
-@@ -208,9 +213,9 @@ static ssize_t print_cpus_offline(struct
- static SYSDEV_CLASS_ATTR(offline, 0444, print_cpus_offline, NULL);
-
- static struct sysdev_class_attribute *cpu_state_attr[] = {
-- &attr_online_map,
-- &attr_possible_map,
-- &attr_present_map,
-+ &cpu_attrs[0].attr,
-+ &cpu_attrs[1].attr,
-+ &cpu_attrs[2].attr,
- &attr_kernel_max,
- &attr_offline,
- };
diff --git a/driver-core/sysdev-convert-node-driver-class-attributes-to-be-data-driven.patch b/driver-core/sysdev-convert-node-driver-class-attributes-to-be-data-driven.patch
deleted file mode 100644
index 408bce26c7acf1..00000000000000
--- a/driver-core/sysdev-convert-node-driver-class-attributes-to-be-data-driven.patch
+++ /dev/null
@@ -1,110 +0,0 @@
-From andi@firstfloor.org Tue Jan 5 14:27:32 2010
-From: Andi Kleen <andi@firstfloor.org>
-Date: Tue, 5 Jan 2010 12:47:59 +0100 (CET)
-Subject: sysdev: Convert node driver class attributes to be data driven
-To: linux-kernel@vger.kernel.org, greg@kroah.com
-Message-ID: <20100105114759.7A2EEB17C2@basil.firstfloor.org>
-
-
-
-Using the new attribute argument convert the node driver class
-attributes to carry the node state. Then use a shared function to do
-what a lot of individual functions did before.
-
-Signed-off-by: Andi Kleen <ak@linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/base/node.c | 65 ++++++++++++++--------------------------------------
- 1 file changed, 18 insertions(+), 47 deletions(-)
-
---- a/drivers/base/node.c
-+++ b/drivers/base/node.c
-@@ -544,59 +544,29 @@ static ssize_t print_nodes_state(enum no
- return n;
- }
-
--static ssize_t print_nodes_possible(struct sysdev_class *class,
-- struct sysdev_class_attribute *attr, char *buf)
--{
-- return print_nodes_state(N_POSSIBLE, buf);
--}
--
--static ssize_t print_nodes_online(struct sysdev_class *class,
-- struct sysdev_class_attribute *attr,
-- char *buf)
--{
-- return print_nodes_state(N_ONLINE, buf);
--}
--
--static ssize_t print_nodes_has_normal_memory(struct sysdev_class *class,
-- struct sysdev_class_attribute *attr,
-- char *buf)
--{
-- return print_nodes_state(N_NORMAL_MEMORY, buf);
--}
--
--static ssize_t print_nodes_has_cpu(struct sysdev_class *class,
-- struct sysdev_class_attribute *attr,
-- char *buf)
--{
-- return print_nodes_state(N_CPU, buf);
--}
--
--static SYSDEV_CLASS_ATTR(possible, 0444, print_nodes_possible, NULL);
--static SYSDEV_CLASS_ATTR(online, 0444, print_nodes_online, NULL);
--static SYSDEV_CLASS_ATTR(has_normal_memory, 0444, print_nodes_has_normal_memory,
-- NULL);
--static SYSDEV_CLASS_ATTR(has_cpu, 0444, print_nodes_has_cpu, NULL);
-+struct node_attr {
-+ struct sysdev_class_attribute attr;
-+ enum node_states state;
-+};
-
--#ifdef CONFIG_HIGHMEM
--static ssize_t print_nodes_has_high_memory(struct sysdev_class *class,
-- struct sysdev_class_attribute *attr,
-- char *buf)
-+static ssize_t show_node_state(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr, char *buf)
- {
-- return print_nodes_state(N_HIGH_MEMORY, buf);
-+ struct node_attr *na = container_of(attr, struct node_attr, attr);
-+ return print_nodes_state(na->state, buf);
- }
-
--static SYSDEV_CLASS_ATTR(has_high_memory, 0444, print_nodes_has_high_memory,
-- NULL);
--#endif
-+#define _NODE_ATTR(name, state) \
-+ { _SYSDEV_CLASS_ATTR(name, 0444, show_node_state, NULL), state }
-
--struct sysdev_class_attribute *node_state_attr[] = {
-- &attr_possible,
-- &attr_online,
-- &attr_has_normal_memory,
-+static struct node_attr node_state_attr[] = {
-+ _NODE_ATTR(possible, N_POSSIBLE),
-+ _NODE_ATTR(online, N_ONLINE),
-+ _NODE_ATTR(has_normal_memory, N_NORMAL_MEMORY),
-+ _NODE_ATTR(has_cpu, N_CPU),
- #ifdef CONFIG_HIGHMEM
-- &attr_has_high_memory,
-+ _NODE_ATTR(has_high_memory, N_HIGH_MEMORY),
- #endif
-- &attr_has_cpu,
- };
-
- static int node_states_init(void)
-@@ -604,9 +574,10 @@ static int node_states_init(void)
- int i;
- int err = 0;
-
-+ BUILD_BUG_ON(ARRAY_SIZE(node_state_attr) != NR_NODE_STATES);
- for (i = 0; i < NR_NODE_STATES; i++) {
- int ret;
-- ret = sysdev_class_create_file(&node_class, node_state_attr[i]);
-+ ret = sysdev_class_create_file(&node_class, &node_state_attr[i].attr);
- if (!err)
- err = ret;
- }
diff --git a/driver-core/sysdev-convert-node-driver.patch b/driver-core/sysdev-convert-node-driver.patch
deleted file mode 100644
index 261455f0f5508d..00000000000000
--- a/driver-core/sysdev-convert-node-driver.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-From andi@firstfloor.org Thu Jan 14 16:45:18 2010
-From: Andi Kleen <andi@firstfloor.org>
-Date: Tue, 5 Jan 2010 12:48:03 +0100 (CET)
-Subject: sysdev: Convert node driver
-To: linux-kernel@vger.kernel.org, greg@kroah.com
-Message-ID: <20100105114803.85222B17C2@basil.firstfloor.org>
-
-Use sysdev_class attribute arrays in node driver
-
-Convert the node driver to sysdev_class attribute arrays. This
-greatly cleans up the code and remove a lot of code.
-
-Signed-off-by: Andi Kleen <ak@linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/base/cpu.c | 57 +++++++++++++++--------------------------------------
- 1 file changed, 17 insertions(+), 40 deletions(-)
-
---- a/drivers/base/cpu.c
-+++ b/drivers/base/cpu.c
-@@ -13,8 +13,11 @@
-
- #include "base.h"
-
-+static struct sysdev_class_attribute *cpu_sysdev_class_attrs[];
-+
- struct sysdev_class cpu_sysdev_class = {
- .name = "cpu",
-+ .attrs = cpu_sysdev_class_attrs,
- };
- EXPORT_SYMBOL(cpu_sysdev_class);
-
-@@ -90,20 +93,6 @@ static ssize_t cpu_release_store(struct
-
- static CLASS_ATTR(probe, S_IWUSR, NULL, cpu_probe_store);
- static CLASS_ATTR(release, S_IWUSR, NULL, cpu_release_store);
--
--int __init cpu_probe_release_init(void)
--{
-- int rc;
--
-- rc = sysfs_create_file(&cpu_sysdev_class.kset.kobj,
-- &class_attr_probe.attr);
-- if (!rc)
-- rc = sysfs_create_file(&cpu_sysdev_class.kset.kobj,
-- &class_attr_release.attr);
--
-- return rc;
--}
--device_initcall(cpu_probe_release_init);
- #endif /* CONFIG_ARCH_CPU_PROBE_RELEASE */
-
- #else /* ... !CONFIG_HOTPLUG_CPU */
-@@ -162,6 +151,7 @@ static ssize_t show_cpus_attr(struct sys
- #define _CPU_ATTR(name, map) \
- { _SYSDEV_CLASS_ATTR(name, 0444, show_cpus_attr, NULL), map }
-
-+/* Keep in sync with cpu_sysdev_class_attrs */
- static struct cpu_attr cpu_attrs[] = {
- _CPU_ATTR(online, &cpu_online_mask),
- _CPU_ATTR(possible, &cpu_possible_mask),
-@@ -212,29 +202,6 @@ static ssize_t print_cpus_offline(struct
- }
- static SYSDEV_CLASS_ATTR(offline, 0444, print_cpus_offline, NULL);
-
--static struct sysdev_class_attribute *cpu_state_attr[] = {
-- &cpu_attrs[0].attr,
-- &cpu_attrs[1].attr,
-- &cpu_attrs[2].attr,
-- &attr_kernel_max,
-- &attr_offline,
--};
--
--static int cpu_states_init(void)
--{
-- int i;
-- int err = 0;
--
-- for (i = 0; i < ARRAY_SIZE(cpu_state_attr); i++) {
-- int ret;
-- ret = sysdev_class_create_file(&cpu_sysdev_class,
-- cpu_state_attr[i]);
-- if (!err)
-- err = ret;
-- }
-- return err;
--}
--
- /*
- * register_cpu - Setup a sysfs device for a CPU.
- * @cpu - cpu->hotpluggable field set to 1 will generate a control file in
-@@ -280,9 +247,6 @@ int __init cpu_dev_init(void)
- int err;
-
- err = sysdev_class_register(&cpu_sysdev_class);
-- if (!err)
-- err = cpu_states_init();
--
- #if defined(CONFIG_SCHED_MC) || defined(CONFIG_SCHED_SMT)
- if (!err)
- err = sched_create_sysfs_power_savings_entries(&cpu_sysdev_class);
-@@ -290,3 +254,16 @@ int __init cpu_dev_init(void)
-
- return err;
- }
-+
-+static struct sysdev_class_attribute *cpu_sysdev_class_attrs[] = {
-+#ifdef CONFIG_ARCH_CPU_PROBE_RELEASE
-+ &class_attr_probe.attr,
-+ &class_attr_release.attr,
-+#endif
-+ &cpu_attrs[0].attr,
-+ &cpu_attrs[1].attr,
-+ &cpu_attrs[2].attr,
-+ &attr_kernel_max,
-+ &attr_offline,
-+ NULL
-+};
diff --git a/driver-core/sysdev-fix-missing-s390-conversion.patch b/driver-core/sysdev-fix-missing-s390-conversion.patch
deleted file mode 100644
index 5f0ea6c8a38f00..00000000000000
--- a/driver-core/sysdev-fix-missing-s390-conversion.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From heiko.carstens@de.ibm.com Wed Feb 17 15:56:39 2010
-From: Heiko Carstens <heiko.carstens@de.ibm.com>
-Date: Fri, 12 Feb 2010 11:19:24 +0100
-Subject: sysdev: fix missing s390 conversion
-To: Greg Kroah-Hartman <gregkh@suse.de>
-Cc: Andi Kleen <ak@linux.intel.com>, Martin Schwidefsky <schwidefsky@de.ibm.com>, linux-kernel@vger.kernel.org
-Message-ID: <20100212101924.GA27548@osiris.boeblingen.de.ibm.com>
-
-From: Heiko Carstens <heiko.carstens@de.ibm.com>
-
-In linux-next "sysdev: Pass attribute in sysdev_class attributes show/store"
-forgot to convert one place in s390 code. Here is the missing part.
-
-Cc: Andi Kleen <ak@linux.intel.com>
-Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
-Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- arch/s390/kernel/smp.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
---- a/arch/s390/kernel/smp.c
-+++ b/arch/s390/kernel/smp.c
-@@ -1033,7 +1033,9 @@ static ssize_t __ref rescan_store(struct
- static SYSDEV_CLASS_ATTR(rescan, 0200, NULL, rescan_store);
- #endif /* CONFIG_HOTPLUG_CPU */
-
--static ssize_t dispatching_show(struct sysdev_class *class, char *buf)
-+static ssize_t dispatching_show(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
-+ char *buf)
- {
- ssize_t count;
-
diff --git a/driver-core/sysdev-fix-type-of-sysdev-class-attribute-in-memory-driver.patch b/driver-core/sysdev-fix-type-of-sysdev-class-attribute-in-memory-driver.patch
deleted file mode 100644
index 1baf4c72c5acda..00000000000000
--- a/driver-core/sysdev-fix-type-of-sysdev-class-attribute-in-memory-driver.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From andi@firstfloor.org Thu Jan 14 16:46:10 2010
-From: Andi Kleen <andi@firstfloor.org>
-Date: Tue, 5 Jan 2010 12:48:06 +0100 (CET)
-Subject: sysdev: Fix type of sysdev class attribute in memory driver
-To: linux-kernel@vger.kernel.org, greg@kroah.com
-Message-ID: <20100105114806.8D457B17C2@basil.firstfloor.org>
-
-
-
-This attribute is really a sysdev_class attribute, not a plain class attribute.
-
-They are identical in layout currently, but this might not always be
-the case.
-
-Signed-off-by: Andi Kleen <ak@linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/base/memory.c | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
---- a/drivers/base/memory.c
-+++ b/drivers/base/memory.c
-@@ -309,17 +309,18 @@ static SYSDEV_ATTR(removable, 0444, show
- * Block size attribute stuff
- */
- static ssize_t
--print_block_size(struct class *class, char *buf)
-+print_block_size(struct sysdev_class *class, struct sysdev_class_attribute *attr,
-+ char *buf)
- {
- return sprintf(buf, "%#lx\n", (unsigned long)PAGES_PER_SECTION * PAGE_SIZE);
- }
-
--static CLASS_ATTR(block_size_bytes, 0444, print_block_size, NULL);
-+static SYSDEV_CLASS_ATTR(block_size_bytes, 0444, print_block_size, NULL);
-
- static int block_size_init(void)
- {
- return sysfs_create_file(&memory_sysdev_class.kset.kobj,
-- &class_attr_block_size_bytes.attr);
-+ &attr_block_size_bytes.attr);
- }
-
- /*
diff --git a/driver-core/sysdev-fix-up-the-probe-release-attributes.patch b/driver-core/sysdev-fix-up-the-probe-release-attributes.patch
deleted file mode 100644
index 15bdf06f317509..00000000000000
--- a/driver-core/sysdev-fix-up-the-probe-release-attributes.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From foo@baz Thu Jan 21 15:07:59 PST 2010
-Date: Thu, 21 Jan 2010 15:07:59 -0800
-To: Greg KH <greg@kroah.com>
-From: Greg Kroah-Hartman <gregkh@suse.de>
-Subject: sysdev: fix up the probe/release attributes
-
-These should be sysdev attributes, not class attributes. This patch
-should resolve the problem.
-
-Thanks to Stephen Rothwell for pointing out the problem.
-
-Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
-Cc: Andi Kleen <andi@firstfloor.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
----
- drivers/base/cpu.c | 16 ++++++++--------
- 1 file changed, 8 insertions(+), 8 deletions(-)
-
---- a/drivers/base/cpu.c
-+++ b/drivers/base/cpu.c
-@@ -79,24 +79,24 @@ void unregister_cpu(struct cpu *cpu)
- }
-
- #ifdef CONFIG_ARCH_CPU_PROBE_RELEASE
--static ssize_t cpu_probe_store(struct class *class,
-- struct class_attribute *attr,
-+static ssize_t cpu_probe_store(struct sys_device *dev,
-+ struct sysdev_attribute *attr,
- const char *buf,
- size_t count)
- {
- return arch_cpu_probe(buf, count);
- }
-
--static ssize_t cpu_release_store(struct class *class,
-- struct class_attribute *attr,
-+static ssize_t cpu_release_store(struct sys_device *dev,
-+ struct sysdev_attribute *attr,
- const char *buf,
- size_t count)
- {
- return arch_cpu_release(buf, count);
- }
-
--static CLASS_ATTR(probe, S_IWUSR, NULL, cpu_probe_store);
--static CLASS_ATTR(release, S_IWUSR, NULL, cpu_release_store);
-+static SYSDEV_ATTR(probe, S_IWUSR, NULL, cpu_probe_store);
-+static SYSDEV_ATTR(release, S_IWUSR, NULL, cpu_release_store);
- #endif /* CONFIG_ARCH_CPU_PROBE_RELEASE */
-
- #else /* ... !CONFIG_HOTPLUG_CPU */
-@@ -261,8 +261,8 @@ int __init cpu_dev_init(void)
-
- static struct sysdev_class_attribute *cpu_sysdev_class_attrs[] = {
- #ifdef CONFIG_ARCH_CPU_PROBE_RELEASE
-- &class_attr_probe.attr,
-- &class_attr_release.attr,
-+ &attr_probe,
-+ &attr_release,
- #endif
- &cpu_attrs[0].attr,
- &cpu_attrs[1].attr,
diff --git a/driver-core/sysdev-pass-attribute-in-sysdev_class-attributes-show-store.patch b/driver-core/sysdev-pass-attribute-in-sysdev_class-attributes-show-store.patch
deleted file mode 100644
index 776ed5ef88084c..00000000000000
--- a/driver-core/sysdev-pass-attribute-in-sysdev_class-attributes-show-store.patch
+++ /dev/null
@@ -1,442 +0,0 @@
-From andi@firstfloor.org Tue Jan 5 14:27:04 2010
-From: Andi Kleen <andi@firstfloor.org>
-Date: Tue, 5 Jan 2010 12:47:58 +0100 (CET)
-Subject: sysdev: Pass attribute in sysdev_class attributes show/store
-To: greg@kroah.com
-Message-ID: <20100105114758.7773BB17C2@basil.firstfloor.org>
-
-
-
-Passing the attribute to the low level IO functions allows all kinds
-of cleanups, by sharing low level IO code without requiring
-an own function for every piece of data.
-
-Also drivers can extend the attributes with own data fields
-and use that in the low level function.
-
-Similar to sysdev_attributes and normal attributes.
-
-This is a tree-wide sweep, converting everything in one go.
-
-No functional changes in this patch other than passing the new
-argument everywhere.
-
-Tested on x86, the non x86 parts are uncompiled.
-
-Signed-off-by: Andi Kleen <ak@linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
-
----
- arch/mips/txx9/generic/7segled.c | 5 +++
- arch/s390/kernel/smp.c | 8 ++++--
- arch/s390/kernel/time.c | 49 +++++++++++++++++++++++++++++----------
- drivers/base/cpu.c | 9 ++++---
- drivers/base/node.c | 17 +++++++++----
- drivers/base/sys.c | 4 +--
- drivers/cpuidle/sysfs.c | 4 +++
- include/linux/sysdev.h | 6 +++-
- kernel/perf_event.c | 13 +++++++---
- kernel/sched.c | 4 +++
- 10 files changed, 89 insertions(+), 30 deletions(-)
-
---- a/arch/mips/txx9/generic/7segled.c
-+++ b/arch/mips/txx9/generic/7segled.c
-@@ -58,13 +58,16 @@ static ssize_t raw_store(struct sys_devi
- static SYSDEV_ATTR(ascii, 0200, NULL, ascii_store);
- static SYSDEV_ATTR(raw, 0200, NULL, raw_store);
-
--static ssize_t map_seg7_show(struct sysdev_class *class, char *buf)
-+static ssize_t map_seg7_show(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
-+ char *buf)
- {
- memcpy(buf, &txx9_seg7map, sizeof(txx9_seg7map));
- return sizeof(txx9_seg7map);
- }
-
- static ssize_t map_seg7_store(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
- const char *buf, size_t size)
- {
- if (size != sizeof(txx9_seg7map))
---- a/arch/s390/kernel/smp.c
-+++ b/arch/s390/kernel/smp.c
-@@ -1020,7 +1020,9 @@ out:
- return rc;
- }
-
--static ssize_t __ref rescan_store(struct sysdev_class *class, const char *buf,
-+static ssize_t __ref rescan_store(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
-+ const char *buf,
- size_t count)
- {
- int rc;
-@@ -1041,7 +1043,9 @@ static ssize_t dispatching_show(struct s
- return count;
- }
-
--static ssize_t dispatching_store(struct sysdev_class *dev, const char *buf,
-+static ssize_t dispatching_store(struct sysdev_class *dev,
-+ struct sysdev_class_attribute *attr,
-+ const char *buf,
- size_t count)
- {
- int val, rc;
---- a/arch/s390/kernel/time.c
-+++ b/arch/s390/kernel/time.c
-@@ -1116,14 +1116,18 @@ static struct sys_device etr_port1_dev =
- /*
- * ETR class attributes
- */
--static ssize_t etr_stepping_port_show(struct sysdev_class *class, char *buf)
-+static ssize_t etr_stepping_port_show(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
-+ char *buf)
- {
- return sprintf(buf, "%i\n", etr_port0.esw.p);
- }
-
- static SYSDEV_CLASS_ATTR(stepping_port, 0400, etr_stepping_port_show, NULL);
-
--static ssize_t etr_stepping_mode_show(struct sysdev_class *class, char *buf)
-+static ssize_t etr_stepping_mode_show(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
-+ char *buf)
- {
- char *mode_str;
-
-@@ -1584,7 +1588,9 @@ static struct sysdev_class stp_sysclass
- .name = "stp",
- };
-
--static ssize_t stp_ctn_id_show(struct sysdev_class *class, char *buf)
-+static ssize_t stp_ctn_id_show(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
-+ char *buf)
- {
- if (!stp_online)
- return -ENODATA;
-@@ -1594,7 +1600,9 @@ static ssize_t stp_ctn_id_show(struct sy
-
- static SYSDEV_CLASS_ATTR(ctn_id, 0400, stp_ctn_id_show, NULL);
-
--static ssize_t stp_ctn_type_show(struct sysdev_class *class, char *buf)
-+static ssize_t stp_ctn_type_show(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
-+ char *buf)
- {
- if (!stp_online)
- return -ENODATA;
-@@ -1603,7 +1611,9 @@ static ssize_t stp_ctn_type_show(struct
-
- static SYSDEV_CLASS_ATTR(ctn_type, 0400, stp_ctn_type_show, NULL);
-
--static ssize_t stp_dst_offset_show(struct sysdev_class *class, char *buf)
-+static ssize_t stp_dst_offset_show(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
-+ char *buf)
- {
- if (!stp_online || !(stp_info.vbits & 0x2000))
- return -ENODATA;
-@@ -1612,7 +1622,9 @@ static ssize_t stp_dst_offset_show(struc
-
- static SYSDEV_CLASS_ATTR(dst_offset, 0400, stp_dst_offset_show, NULL);
-
--static ssize_t stp_leap_seconds_show(struct sysdev_class *class, char *buf)
-+static ssize_t stp_leap_seconds_show(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
-+ char *buf)
- {
- if (!stp_online || !(stp_info.vbits & 0x8000))
- return -ENODATA;
-@@ -1621,7 +1633,9 @@ static ssize_t stp_leap_seconds_show(str
-
- static SYSDEV_CLASS_ATTR(leap_seconds, 0400, stp_leap_seconds_show, NULL);
-
--static ssize_t stp_stratum_show(struct sysdev_class *class, char *buf)
-+static ssize_t stp_stratum_show(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
-+ char *buf)
- {
- if (!stp_online)
- return -ENODATA;
-@@ -1630,7 +1644,9 @@ static ssize_t stp_stratum_show(struct s
-
- static SYSDEV_CLASS_ATTR(stratum, 0400, stp_stratum_show, NULL);
-
--static ssize_t stp_time_offset_show(struct sysdev_class *class, char *buf)
-+static ssize_t stp_time_offset_show(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
-+ char *buf)
- {
- if (!stp_online || !(stp_info.vbits & 0x0800))
- return -ENODATA;
-@@ -1639,7 +1655,9 @@ static ssize_t stp_time_offset_show(stru
-
- static SYSDEV_CLASS_ATTR(time_offset, 0400, stp_time_offset_show, NULL);
-
--static ssize_t stp_time_zone_offset_show(struct sysdev_class *class, char *buf)
-+static ssize_t stp_time_zone_offset_show(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
-+ char *buf)
- {
- if (!stp_online || !(stp_info.vbits & 0x4000))
- return -ENODATA;
-@@ -1649,7 +1667,9 @@ static ssize_t stp_time_zone_offset_show
- static SYSDEV_CLASS_ATTR(time_zone_offset, 0400,
- stp_time_zone_offset_show, NULL);
-
--static ssize_t stp_timing_mode_show(struct sysdev_class *class, char *buf)
-+static ssize_t stp_timing_mode_show(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
-+ char *buf)
- {
- if (!stp_online)
- return -ENODATA;
-@@ -1658,7 +1678,9 @@ static ssize_t stp_timing_mode_show(stru
-
- static SYSDEV_CLASS_ATTR(timing_mode, 0400, stp_timing_mode_show, NULL);
-
--static ssize_t stp_timing_state_show(struct sysdev_class *class, char *buf)
-+static ssize_t stp_timing_state_show(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
-+ char *buf)
- {
- if (!stp_online)
- return -ENODATA;
-@@ -1667,12 +1689,15 @@ static ssize_t stp_timing_state_show(str
-
- static SYSDEV_CLASS_ATTR(timing_state, 0400, stp_timing_state_show, NULL);
-
--static ssize_t stp_online_show(struct sysdev_class *class, char *buf)
-+static ssize_t stp_online_show(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
-+ char *buf)
- {
- return sprintf(buf, "%i\n", stp_online);
- }
-
- static ssize_t stp_online_store(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
- const char *buf, size_t count)
- {
- unsigned int value;
---- a/drivers/base/cpu.c
-+++ b/drivers/base/cpu.c
-@@ -151,7 +151,8 @@ static ssize_t print_cpus_map(char *buf,
- }
-
- #define print_cpus_func(type) \
--static ssize_t print_cpus_##type(struct sysdev_class *class, char *buf) \
-+static ssize_t print_cpus_##type(struct sysdev_class *class, \
-+ struct sysdev_class_attribute *attr, char *buf) \
- { \
- return print_cpus_map(buf, cpu_##type##_mask); \
- } \
-@@ -165,7 +166,8 @@ print_cpus_func(present);
- /*
- * Print values for NR_CPUS and offlined cpus
- */
--static ssize_t print_cpus_kernel_max(struct sysdev_class *class, char *buf)
-+static ssize_t print_cpus_kernel_max(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr, char *buf)
- {
- int n = snprintf(buf, PAGE_SIZE-2, "%d\n", NR_CPUS - 1);
- return n;
-@@ -175,7 +177,8 @@ static SYSDEV_CLASS_ATTR(kernel_max, 044
- /* arch-optional setting to enable display of offline cpus >= nr_cpu_ids */
- unsigned int total_cpus;
-
--static ssize_t print_cpus_offline(struct sysdev_class *class, char *buf)
-+static ssize_t print_cpus_offline(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr, char *buf)
- {
- int n = 0, len = PAGE_SIZE-2;
- cpumask_var_t offline;
---- a/drivers/base/node.c
-+++ b/drivers/base/node.c
-@@ -544,23 +544,29 @@ static ssize_t print_nodes_state(enum no
- return n;
- }
-
--static ssize_t print_nodes_possible(struct sysdev_class *class, char *buf)
-+static ssize_t print_nodes_possible(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr, char *buf)
- {
- return print_nodes_state(N_POSSIBLE, buf);
- }
-
--static ssize_t print_nodes_online(struct sysdev_class *class, char *buf)
-+static ssize_t print_nodes_online(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
-+ char *buf)
- {
- return print_nodes_state(N_ONLINE, buf);
- }
-
- static ssize_t print_nodes_has_normal_memory(struct sysdev_class *class,
-- char *buf)
-+ struct sysdev_class_attribute *attr,
-+ char *buf)
- {
- return print_nodes_state(N_NORMAL_MEMORY, buf);
- }
-
--static ssize_t print_nodes_has_cpu(struct sysdev_class *class, char *buf)
-+static ssize_t print_nodes_has_cpu(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
-+ char *buf)
- {
- return print_nodes_state(N_CPU, buf);
- }
-@@ -573,7 +579,8 @@ static SYSDEV_CLASS_ATTR(has_cpu, 0444,
-
- #ifdef CONFIG_HIGHMEM
- static ssize_t print_nodes_has_high_memory(struct sysdev_class *class,
-- char *buf)
-+ struct sysdev_class_attribute *attr,
-+ char *buf)
- {
- return print_nodes_state(N_HIGH_MEMORY, buf);
- }
---- a/drivers/base/sys.c
-+++ b/drivers/base/sys.c
-@@ -89,7 +89,7 @@ static ssize_t sysdev_class_show(struct
- struct sysdev_class_attribute *class_attr = to_sysdev_class_attr(attr);
-
- if (class_attr->show)
-- return class_attr->show(class, buffer);
-+ return class_attr->show(class, class_attr, buffer);
- return -EIO;
- }
-
-@@ -100,7 +100,7 @@ static ssize_t sysdev_class_store(struct
- struct sysdev_class_attribute *class_attr = to_sysdev_class_attr(attr);
-
- if (class_attr->store)
-- return class_attr->store(class, buffer, count);
-+ return class_attr->store(class, class_attr, buffer, count);
- return -EIO;
- }
-
---- a/drivers/cpuidle/sysfs.c
-+++ b/drivers/cpuidle/sysfs.c
-@@ -22,6 +22,7 @@ static int __init cpuidle_sysfs_setup(ch
- __setup("cpuidle_sysfs_switch", cpuidle_sysfs_setup);
-
- static ssize_t show_available_governors(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
- char *buf)
- {
- ssize_t i = 0;
-@@ -41,6 +42,7 @@ out:
- }
-
- static ssize_t show_current_driver(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
- char *buf)
- {
- ssize_t ret;
-@@ -56,6 +58,7 @@ static ssize_t show_current_driver(struc
- }
-
- static ssize_t show_current_governor(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
- char *buf)
- {
- ssize_t ret;
-@@ -71,6 +74,7 @@ static ssize_t show_current_governor(str
- }
-
- static ssize_t store_current_governor(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
- const char *buf, size_t count)
- {
- char gov_name[CPUIDLE_NAME_LEN];
---- a/include/linux/sysdev.h
-+++ b/include/linux/sysdev.h
-@@ -41,8 +41,10 @@ struct sysdev_class {
-
- struct sysdev_class_attribute {
- struct attribute attr;
-- ssize_t (*show)(struct sysdev_class *, char *);
-- ssize_t (*store)(struct sysdev_class *, const char *, size_t);
-+ ssize_t (*show)(struct sysdev_class *, struct sysdev_class_attribute *,
-+ char *);
-+ ssize_t (*store)(struct sysdev_class *, struct sysdev_class_attribute *,
-+ const char *, size_t);
- };
-
- #define _SYSDEV_CLASS_ATTR(_name,_mode,_show,_store) \
---- a/kernel/perf_event.c
-+++ b/kernel/perf_event.c
-@@ -5481,13 +5481,16 @@ void __init perf_event_init(void)
- register_cpu_notifier(&perf_cpu_nb);
- }
-
--static ssize_t perf_show_reserve_percpu(struct sysdev_class *class, char *buf)
-+static ssize_t perf_show_reserve_percpu(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
-+ char *buf)
- {
- return sprintf(buf, "%d\n", perf_reserved_percpu);
- }
-
- static ssize_t
- perf_set_reserve_percpu(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
- const char *buf,
- size_t count)
- {
-@@ -5516,13 +5519,17 @@ perf_set_reserve_percpu(struct sysdev_cl
- return count;
- }
-
--static ssize_t perf_show_overcommit(struct sysdev_class *class, char *buf)
-+static ssize_t perf_show_overcommit(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
-+ char *buf)
- {
- return sprintf(buf, "%d\n", perf_overcommit);
- }
-
- static ssize_t
--perf_set_overcommit(struct sysdev_class *class, const char *buf, size_t count)
-+perf_set_overcommit(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
-+ const char *buf, size_t count)
- {
- unsigned long val;
- int err;
---- a/kernel/sched.c
-+++ b/kernel/sched.c
-@@ -7406,11 +7406,13 @@ static ssize_t sched_power_savings_store
-
- #ifdef CONFIG_SCHED_MC
- static ssize_t sched_mc_power_savings_show(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
- char *page)
- {
- return sprintf(page, "%u\n", sched_mc_power_savings);
- }
- static ssize_t sched_mc_power_savings_store(struct sysdev_class *class,
-+ struct sysdev_class_attribute *attr,
- const char *buf, size_t count)
- {
- return sched_power_savings_store(buf, count, 0);
-@@ -7422,11 +7424,13 @@ static SYSDEV_CLASS_ATTR(sched_mc_power_
-
- #ifdef CONFIG_SCHED_SMT
- static ssize_t sched_smt_power_savings_show(struct sysdev_class *dev,
-+ struct sysdev_class_attribute *attr,
- char *page)
- {
- return sprintf(page, "%u\n", sched_smt_power_savings);
- }
- static ssize_t sched_smt_power_savings_store(struct sysdev_class *dev,
-+ struct sysdev_class_attribute *attr,
- const char *buf, size_t count)
- {
- return sched_power_savings_store(buf, count, 1);
diff --git a/driver-core/sysdev-use-sysdev_class-attribute-arrays-in-node-driver.patch b/driver-core/sysdev-use-sysdev_class-attribute-arrays-in-node-driver.patch
deleted file mode 100644
index 4b9a1bc19c3b62..00000000000000
--- a/driver-core/sysdev-use-sysdev_class-attribute-arrays-in-node-driver.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From andi@firstfloor.org Thu Jan 14 16:45:41 2010
-From: Andi Kleen <andi@firstfloor.org>
-Date: Tue, 5 Jan 2010 12:48:04 +0100 (CET)
-Subject: sysdev: Use sysdev_class attribute arrays in node driver
-To: linux-kernel@vger.kernel.org, greg@kroah.com
-Message-ID: <20100105114804.87EAAB17C2@basil.firstfloor.org>
-
-
-
-Convert the node driver to sysdev_class attribute arrays. This
-greatly cleans up the code and remove a lot of code.
-
-Saves ~150 bytes of code on x86-64.
-
-Signed-off-by: Andi Kleen <ak@linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
-
----
- drivers/base/node.c | 31 ++++++++++++++++---------------
- 1 file changed, 16 insertions(+), 15 deletions(-)
-
---- a/drivers/base/node.c
-+++ b/drivers/base/node.c
-@@ -16,8 +16,11 @@
- #include <linux/device.h>
- #include <linux/swap.h>
-
-+static struct sysdev_class_attribute *node_state_attrs[];
-+
- static struct sysdev_class node_class = {
- .name = "node",
-+ .attrs = node_state_attrs,
- };
-
-
-@@ -569,29 +572,27 @@ static struct node_attr node_state_attr[
- #endif
- };
-
--static int node_states_init(void)
--{
-- int i;
-- int err = 0;
--
-- BUILD_BUG_ON(ARRAY_SIZE(node_state_attr) != NR_NODE_STATES);
-- for (i = 0; i < NR_NODE_STATES; i++) {
-- int ret;
-- ret = sysdev_class_create_file(&node_class, &node_state_attr[i].attr);
-- if (!err)
-- err = ret;
-- }
-- return err;
--}
-+static struct sysdev_class_attribute *node_state_attrs[] = {
-+ &node_state_attr[0].attr,
-+ &node_state_attr[1].attr,
-+ &node_state_attr[2].attr,
-+ &node_state_attr[3].attr,
-+#ifdef CONFIG_HIGHMEM
-+ &node_state_attr[4].attr,
-+#endif
-+ NULL
-+};
-
- #define NODE_CALLBACK_PRI 2 /* lower than SLAB */
- static int __init register_node_type(void)
- {
- int ret;
-
-+ BUILD_BUG_ON(ARRAY_SIZE(node_state_attr) != NR_NODE_STATES);
-+ BUILD_BUG_ON(ARRAY_SIZE(node_state_attrs)-1 != NR_NODE_STATES);
-+
- ret = sysdev_class_register(&node_class);
- if (!ret) {
-- ret = node_states_init();
- hotplug_memory_notifier(node_memory_callback,
- NODE_CALLBACK_PRI);
- }
diff --git a/driver-core/sysfs-add-attribute-array-to-sysdev-classes.patch b/driver-core/sysfs-add-attribute-array-to-sysdev-classes.patch
deleted file mode 100644
index a13420d7cc9ba3..00000000000000
--- a/driver-core/sysfs-add-attribute-array-to-sysdev-classes.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From andi@firstfloor.org Thu Jan 14 16:45:05 2010
-From: Andi Kleen <andi@firstfloor.org>
-Date: Tue, 5 Jan 2010 12:48:02 +0100 (CET)
-Subject: sysfs: Add attribute array to sysdev classes
-To: linux-kernel@vger.kernel.org, greg@kroah.com
-Message-ID: <20100105114802.8240CB17C2@basil.firstfloor.org>
-
-
-
-Add a attribute array that is automatically registered and unregistered
-to struct sysdev_class. This is similar to what struct class has.
-
-A lot of drivers add list of attributes, so it's better to do
-this easily in the common sysdev layer.
-
-This adds a new field to struct sysdev_class. I audited the
-whole tree and there are no dynamically allocated sysdev classes,
-so this is fully compatible.
-
-Signed-off-by: Andi Kleen <ak@linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
-
----
- drivers/base/sys.c | 9 ++++++++-
- include/linux/sysdev.h | 2 ++
- 2 files changed, 10 insertions(+), 1 deletion(-)
-
---- a/drivers/base/sys.c
-+++ b/drivers/base/sys.c
-@@ -145,13 +145,20 @@ int sysdev_class_register(struct sysdev_
- if (retval)
- return retval;
-
-- return kset_register(&cls->kset);
-+ retval = kset_register(&cls->kset);
-+ if (!retval && cls->attrs)
-+ retval = sysfs_create_files(&cls->kset.kobj,
-+ (const struct attribute **)cls->attrs);
-+ return retval;
- }
-
- void sysdev_class_unregister(struct sysdev_class *cls)
- {
- pr_debug("Unregistering sysdev class '%s'\n",
- kobject_name(&cls->kset.kobj));
-+ if (cls->attrs)
-+ sysfs_remove_files(&cls->kset.kobj,
-+ (const struct attribute **)cls->attrs);
- kset_unregister(&cls->kset);
- }
-
---- a/include/linux/sysdev.h
-+++ b/include/linux/sysdev.h
-@@ -27,10 +27,12 @@
-
-
- struct sys_device;
-+struct sysdev_class_attribute;
-
- struct sysdev_class {
- const char *name;
- struct list_head drivers;
-+ struct sysdev_class_attribute **attrs;
-
- /* Default operations for these types of devices */
- int (*shutdown)(struct sys_device *);
diff --git a/driver-core/sysfs-add-sysfs_add-remove_files-utility-functions.patch b/driver-core/sysfs-add-sysfs_add-remove_files-utility-functions.patch
deleted file mode 100644
index 1a57df6fb8ec2e..00000000000000
--- a/driver-core/sysfs-add-sysfs_add-remove_files-utility-functions.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-From andi@firstfloor.org Thu Jan 14 16:44:49 2010
-From: Andi Kleen <andi@firstfloor.org>
-Date: Tue, 5 Jan 2010 12:48:01 +0100 (CET)
-Subject: sysfs: Add sysfs_add/remove_files utility functions
-To: linux-kernel@vger.kernel.org, greg@kroah.com
-Message-ID: <20100105114801.7F8B5B17C2@basil.firstfloor.org>
-
-
-
-Adding/Removing a whole array of attributes is very common. Add a standard
-utility function to do this with a simple function call, instead of
-requiring drivers to open code this.
-
-Signed-off-by: Andi Kleen <ak@linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
-
----
- fs/sysfs/file.c | 20 ++++++++++++++++++++
- include/linux/sysfs.h | 14 ++++++++++++++
- 2 files changed, 34 insertions(+)
-
---- a/fs/sysfs/file.c
-+++ b/fs/sysfs/file.c
-@@ -542,6 +542,18 @@ int sysfs_create_file(struct kobject * k
-
- }
-
-+int sysfs_create_files(struct kobject *kobj, const struct attribute **ptr)
-+{
-+ int err = 0;
-+ int i;
-+
-+ for (i = 0; ptr[i] && !err; i++)
-+ err = sysfs_create_file(kobj, ptr[i]);
-+ if (err)
-+ while (--i >= 0)
-+ sysfs_remove_file(kobj, ptr[i]);
-+ return err;
-+}
-
- /**
- * sysfs_add_file_to_group - add an attribute file to a pre-existing group.
-@@ -614,6 +626,12 @@ void sysfs_remove_file(struct kobject *
- sysfs_hash_and_remove(kobj->sd, attr->name);
- }
-
-+void sysfs_remove_files(struct kobject * kobj, const struct attribute **ptr)
-+{
-+ int i;
-+ for (i = 0; ptr[i]; i++)
-+ sysfs_remove_file(kobj, ptr[i]);
-+}
-
- /**
- * sysfs_remove_file_from_group - remove an attribute file from a group.
-@@ -732,3 +750,5 @@ EXPORT_SYMBOL_GPL(sysfs_schedule_callbac
-
- EXPORT_SYMBOL_GPL(sysfs_create_file);
- EXPORT_SYMBOL_GPL(sysfs_remove_file);
-+EXPORT_SYMBOL_GPL(sysfs_remove_files);
-+EXPORT_SYMBOL_GPL(sysfs_create_files);
---- a/include/linux/sysfs.h
-+++ b/include/linux/sysfs.h
-@@ -94,9 +94,12 @@ int __must_check sysfs_move_dir(struct k
-
- int __must_check sysfs_create_file(struct kobject *kobj,
- const struct attribute *attr);
-+int __must_check sysfs_create_files(struct kobject *kobj,
-+ const struct attribute **attr);
- int __must_check sysfs_chmod_file(struct kobject *kobj, struct attribute *attr,
- mode_t mode);
- void sysfs_remove_file(struct kobject *kobj, const struct attribute *attr);
-+void sysfs_remove_files(struct kobject *kobj, const struct attribute **attr);
-
- int __must_check sysfs_create_bin_file(struct kobject *kobj,
- const struct bin_attribute *attr);
-@@ -164,6 +167,12 @@ static inline int sysfs_create_file(stru
- return 0;
- }
-
-+static inline int sysfs_create_files(struct kobject *kobj,
-+ const struct attribute **attr)
-+{
-+ return 0;
-+}
-+
- static inline int sysfs_chmod_file(struct kobject *kobj,
- struct attribute *attr, mode_t mode)
- {
-@@ -175,6 +184,11 @@ static inline void sysfs_remove_file(str
- {
- }
-
-+static inline void sysfs_remove_files(struct kobject *kobj,
-+ const struct attribute **attr)
-+{
-+}
-+
- static inline int sysfs_create_bin_file(struct kobject *kobj,
- const struct bin_attribute *attr)
- {
diff --git a/driver-core/sysfs-cache-the-last-sysfs_dirent-to-improve-readdir-scalability-v2.patch b/driver-core/sysfs-cache-the-last-sysfs_dirent-to-improve-readdir-scalability-v2.patch
deleted file mode 100644
index f73480acec18be..00000000000000
--- a/driver-core/sysfs-cache-the-last-sysfs_dirent-to-improve-readdir-scalability-v2.patch
+++ /dev/null
@@ -1,143 +0,0 @@
-From ebiederm@xmission.com Thu Jan 14 16:52:20 2010
-From: ebiederm@xmission.com (Eric W. Biederman)
-Date: Fri, 01 Jan 2010 14:43:53 -0800
-Subject: sysfs: Cache the last sysfs_dirent to improve readdir scalability v2
-To: Linus Torvalds <torvalds@linux-foundation.org>
-Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>, Borislav Petkov <petkovbb@googlemail.com>, David Airlie <airlied@linux.ie>, Greg KH <greg@kroah.com>, Al Viro <viro@ZenIV.linux.org.uk>
-Message-ID: <m1y6kh30pi.fsf_-_@fess.ebiederm.org>
-
-When sysfs_readdir stops short we now cache the next
-sysfs_dirent to return to user space in filp->private_data.
-There is no impact on the rest of sysfs by doing this and
-in the common case it allows us to pick up exactly where
-we left off with no seeking.
-
-Additionally I drop and regrab the sysfs_mutex around
-filldir to avoid a page fault abritrarily increasing the
-hold time on the sysfs_mutex.
-
-v2: Returned to using INT_MAX as the EOF condition.
- seekdir is ambiguous unless all directory entries have
- a unique f_pos value.
-
-Fixes http://bugzilla.kernel.org/show_bug.cgi?id=14949
-
-Signed-off-by: Eric W. Biederman <ebiederm@aristanetworks.com>
-Cc: Linus Torvalds <torvalds@linux-foundation.org>
-Cc: stable <stable@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- fs/sysfs/dir.c | 82 +++++++++++++++++++++++++++++++++++++++++----------------
- 1 file changed, 60 insertions(+), 22 deletions(-)
-
---- a/fs/sysfs/dir.c
-+++ b/fs/sysfs/dir.c
-@@ -837,11 +837,46 @@ static inline unsigned char dt_type(stru
- return (sd->s_mode >> 12) & 15;
- }
-
-+static int sysfs_dir_release(struct inode *inode, struct file *filp)
-+{
-+ sysfs_put(filp->private_data);
-+ return 0;
-+}
-+
-+static struct sysfs_dirent *sysfs_dir_pos(struct sysfs_dirent *parent_sd,
-+ ino_t ino, struct sysfs_dirent *pos)
-+{
-+ if (pos) {
-+ int valid = !(pos->s_flags & SYSFS_FLAG_REMOVED) &&
-+ pos->s_parent == parent_sd &&
-+ ino == pos->s_ino;
-+ sysfs_put(pos);
-+ if (valid)
-+ return pos;
-+ }
-+ pos = NULL;
-+ if ((ino > 1) && (ino < INT_MAX)) {
-+ pos = parent_sd->s_dir.children;
-+ while (pos && (ino > pos->s_ino))
-+ pos = pos->s_sibling;
-+ }
-+ return pos;
-+}
-+
-+static struct sysfs_dirent *sysfs_dir_next_pos(struct sysfs_dirent *parent_sd,
-+ ino_t ino, struct sysfs_dirent *pos)
-+{
-+ pos = sysfs_dir_pos(parent_sd, ino, pos);
-+ if (pos)
-+ pos = pos->s_sibling;
-+ return pos;
-+}
-+
- static int sysfs_readdir(struct file * filp, void * dirent, filldir_t filldir)
- {
- struct dentry *dentry = filp->f_path.dentry;
- struct sysfs_dirent * parent_sd = dentry->d_fsdata;
-- struct sysfs_dirent *pos;
-+ struct sysfs_dirent *pos = filp->private_data;
- ino_t ino;
-
- if (filp->f_pos == 0) {
-@@ -857,29 +892,31 @@ static int sysfs_readdir(struct file * f
- if (filldir(dirent, "..", 2, filp->f_pos, ino, DT_DIR) == 0)
- filp->f_pos++;
- }
-- if ((filp->f_pos > 1) && (filp->f_pos < INT_MAX)) {
-- mutex_lock(&sysfs_mutex);
-+ mutex_lock(&sysfs_mutex);
-+ for (pos = sysfs_dir_pos(parent_sd, filp->f_pos, pos);
-+ pos;
-+ pos = sysfs_dir_next_pos(parent_sd, filp->f_pos, pos)) {
-+ const char * name;
-+ unsigned int type;
-+ int len, ret;
-+
-+ name = pos->s_name;
-+ len = strlen(name);
-+ ino = pos->s_ino;
-+ type = dt_type(pos);
-+ filp->f_pos = ino;
-+ filp->private_data = sysfs_get(pos);
-
-- /* Skip the dentries we have already reported */
-- pos = parent_sd->s_dir.children;
-- while (pos && (filp->f_pos > pos->s_ino))
-- pos = pos->s_sibling;
--
-- for ( ; pos; pos = pos->s_sibling) {
-- const char * name;
-- int len;
--
-- name = pos->s_name;
-- len = strlen(name);
-- filp->f_pos = ino = pos->s_ino;
--
-- if (filldir(dirent, name, len, filp->f_pos, ino,
-- dt_type(pos)) < 0)
-- break;
-- }
-- if (!pos)
-- filp->f_pos = INT_MAX;
- mutex_unlock(&sysfs_mutex);
-+ ret = filldir(dirent, name, len, filp->f_pos, ino, type);
-+ mutex_lock(&sysfs_mutex);
-+ if (ret < 0)
-+ break;
-+ }
-+ mutex_unlock(&sysfs_mutex);
-+ if ((filp->f_pos > 1) && !pos) { /* EOF */
-+ filp->f_pos = INT_MAX;
-+ filp->private_data = NULL;
- }
- return 0;
- }
-@@ -888,5 +925,6 @@ static int sysfs_readdir(struct file * f
- const struct file_operations sysfs_dir_operations = {
- .read = generic_read_dir,
- .readdir = sysfs_readdir,
-+ .release = sysfs_dir_release,
- .llseek = generic_file_llseek,
- };
diff --git a/driver-core/sysfs-document-sysfs_attr_init-and-sysfs_bin_attr_init.patch b/driver-core/sysfs-document-sysfs_attr_init-and-sysfs_bin_attr_init.patch
deleted file mode 100644
index b3ce1f2b281255..00000000000000
--- a/driver-core/sysfs-document-sysfs_attr_init-and-sysfs_bin_attr_init.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From ebiederm@xmission.com Fri Feb 26 13:58:23 2010
-From: Eric W. Biederman <ebiederm@xmission.com>
-Date: Fri, 12 Feb 2010 04:47:10 -0800
-Subject: sysfs: Document sysfs_attr_init and sysfs_bin_attr_init
-To: Greg KH <gregkh@suse.de>
-Cc: Am�rico Wang <xiyou.wangcong@gmail.com>, "Tejun Heo <tj@kernel.org> Neil Brown" <neilb@suse.de>, linux-kernel@vger.kernel.org
-Message-ID: <m1vde2vcxd.fsf_-_@fess.ebiederm.org>
-
-
-Date: Fri, 12 Feb 2010 04:35:32 -0800
-Subject: [PATCH] sysfs: Document sysfs_attr_init and sysfs_bin_attr_init
-
-I have added a new requirement to the external sysfs interface
-that dynamically allocated sysfs attributes must call sysfs_attr_init
-if lockdep is enabled. For the time being callying sysfs_attr_init
-is only mandatory if lockdep is enabled, so we can live with a few
-unconverted instances until we find them all. As this is part of
-the public interface of sysfs it is a good idea to document these
-pseudo functions so someone inspeciting the code can find out
-what has happened.
-
-Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- include/linux/sysfs.h | 20 ++++++++++++++++++++
- 1 file changed, 20 insertions(+)
-
---- a/include/linux/sysfs.h
-+++ b/include/linux/sysfs.h
-@@ -36,6 +36,16 @@ struct attribute {
- #endif
- };
-
-+/**
-+ * sysfs_attr_init - initialize a dynamically allocated sysfs attribute
-+ * @attr: struct attribute to initialize
-+ *
-+ * Initialize a dynamically allocated struct attribute so we can
-+ * make lockdep happy. This is a new requirement for attributes
-+ * and initially this is only needed when lockdep is enabled.
-+ * Lockdep gives a nice error when your attribute is added to
-+ * sysfs if you don't have this.
-+ */
- #ifdef CONFIG_DEBUG_LOCK_ALLOC
- #define sysfs_attr_init(attr) \
- do { \
-@@ -90,6 +100,16 @@ struct bin_attribute {
- struct vm_area_struct *vma);
- };
-
-+/**
-+ * sysfs_bin_attr_init - initialize a dynamically allocated bin_attribute
-+ * @attr: struct bin_attribute to initialize
-+ *
-+ * Initialize a dynamically allocated struct bin_attribute so we
-+ * can make lockdep happy. This is a new requirement for
-+ * attributes and initially this is only needed when lockdep is
-+ * enabled. Lockdep gives a nice error when your attribute is
-+ * added to sysfs if you don't have this.
-+ */
- #define sysfs_bin_attr_init(bin_attr) sysfs_attr_init(&bin_attr->attr)
-
- struct sysfs_ops {
diff --git a/driver-core/sysfs-fix-for-thinko-with-sysfs_bin_attr_init.patch b/driver-core/sysfs-fix-for-thinko-with-sysfs_bin_attr_init.patch
deleted file mode 100644
index 7d2d9172995fe9..00000000000000
--- a/driver-core/sysfs-fix-for-thinko-with-sysfs_bin_attr_init.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From sfr@canb.auug.org.au Mon Mar 1 01:37:59 2010
-From: Stephen Rothwell <sfr@canb.auug.org.au>
-Date: Mon, 1 Mar 2010 20:38:36 +1100
-Subject: sysfs: fix for thinko with sysfs_bin_attr_init()
-
-
-
-After merging the final tree, today's linux-next build (powerpc
-allyesconfig) failed like this:
-
-drivers/pci/pci-sysfs.c: In function 'pci_create_legacy_files':
-drivers/pci/pci-sysfs.c:645: error: lvalue required as unary '&' operand
-drivers/pci/pci-sysfs.c:658: error: lvalue required as unary '&' operand
-
-Caused by commit "sysfs: Use sysfs_attr_init and sysfs_bin_attr_init on
-dynamic attributes" interacting with commit "sysfs: Use one lockdep
-class per sysfs attribute") both from the driver-core tree.
-
-Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
-Cc: "Eric W. Biederman" <ebiederm@xmission.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
-
----
- drivers/pci/pci-sysfs.c | 4 ++--
- include/linux/sysfs.h | 2 +-
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
---- a/drivers/pci/pci-sysfs.c
-+++ b/drivers/pci/pci-sysfs.c
-@@ -642,7 +642,7 @@ void pci_create_legacy_files(struct pci_
- if (!b->legacy_io)
- goto kzalloc_err;
-
-- sysfs_bin_attr_init(&b->legacy_io);
-+ sysfs_bin_attr_init(b->legacy_io);
- b->legacy_io->attr.name = "legacy_io";
- b->legacy_io->size = 0xffff;
- b->legacy_io->attr.mode = S_IRUSR | S_IWUSR;
-@@ -655,7 +655,7 @@ void pci_create_legacy_files(struct pci_
- goto legacy_io_err;
-
- /* Allocated above after the legacy_io struct */
-- sysfs_bin_attr_init(&b->legacy_mem);
-+ sysfs_bin_attr_init(b->legacy_mem);
- b->legacy_mem = b->legacy_io + 1;
- b->legacy_mem->attr.name = "legacy_mem";
- b->legacy_mem->size = 1024*1024;
---- a/include/linux/sysfs.h
-+++ b/include/linux/sysfs.h
-@@ -110,7 +110,7 @@ struct bin_attribute {
- * enabled. Lockdep gives a nice error when your attribute is
- * added to sysfs if you don't have this.
- */
--#define sysfs_bin_attr_init(bin_attr) sysfs_attr_init(&bin_attr->attr)
-+#define sysfs_bin_attr_init(bin_attr) sysfs_attr_init(&(bin_attr)->attr)
-
- struct sysfs_ops {
- ssize_t (*show)(struct kobject *, struct attribute *,char *);
diff --git a/driver-core/sysfs-implement-sysfs_rename_link.patch b/driver-core/sysfs-implement-sysfs_rename_link.patch
deleted file mode 100644
index 5f71f2560d375b..00000000000000
--- a/driver-core/sysfs-implement-sysfs_rename_link.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From ebiederm@xmission.com Fri Feb 26 14:01:25 2010
-From: "Eric W. Biederman" <ebiederm@xmission.com>
-Date: Fri, 12 Feb 2010 19:22:25 -0800
-Subject: sysfs: Implement sysfs_rename_link
-To: Greg Kroah-Hartman <gregkh@suse.de>
-Cc: Kay Sievers <kay.sievers@vrfy.org>, linux-kernel@vger.kernel.org, Tejun Heo <tj@kernel.org>, Cornelia Huck <cornelia.huck@de.ibm.com>, linux-fsdevel@vger.kernel.org, Eric Dumazet <eric.dumazet@gmail.com>, Benjamin LaHaise <bcrl@lhnet.ca>, Serge Hallyn <serue@us.ibm.com>, "Eric W. Biederman" <ebiederm@xmission.com>, Benjamin Thery <benjamin.thery@bull.net>, Daniel Lezcano <dlezcano@fr.ibm.com>, "Eric W. Biederman" <ebiederm@aristanetworks.com>
-Message-ID: <1266031348-30068-3-git-send-email-ebiederm@xmission.com>
-
-
-From: Eric W. Biederman <ebiederm@xmission.com>
-
-Because of rename ordering problems we occassionally give false
-warnings about invalid sysfs operations. So using sysfs_rename
-create a sysfs_rename_link function that doesn't need strange
-workarounds.
-
-Cc: Benjamin Thery <benjamin.thery@bull.net>
-Cc: Daniel Lezcano <dlezcano@fr.ibm.com>
-Acked-by: Serge Hallyn <serue@us.ibm.com>
-Acked-by: Tejun Heo <tj@kernel.org>
-Signed-off-by: Eric W. Biederman <ebiederm@aristanetworks.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- fs/sysfs/symlink.c | 38 ++++++++++++++++++++++++++++++++++++++
- include/linux/sysfs.h | 9 +++++++++
- 2 files changed, 47 insertions(+)
-
---- a/fs/sysfs/symlink.c
-+++ b/fs/sysfs/symlink.c
-@@ -123,6 +123,44 @@ void sysfs_remove_link(struct kobject *
- sysfs_hash_and_remove(parent_sd, name);
- }
-
-+/**
-+ * sysfs_rename_link - rename symlink in object's directory.
-+ * @kobj: object we're acting for.
-+ * @targ: object we're pointing to.
-+ * @old: previous name of the symlink.
-+ * @new: new name of the symlink.
-+ *
-+ * A helper function for the common rename symlink idiom.
-+ */
-+int sysfs_rename_link(struct kobject *kobj, struct kobject *targ,
-+ const char *old, const char *new)
-+{
-+ struct sysfs_dirent *parent_sd, *sd = NULL;
-+ int result;
-+
-+ if (!kobj)
-+ parent_sd = &sysfs_root;
-+ else
-+ parent_sd = kobj->sd;
-+
-+ result = -ENOENT;
-+ sd = sysfs_get_dirent(parent_sd, old);
-+ if (!sd)
-+ goto out;
-+
-+ result = -EINVAL;
-+ if (sysfs_type(sd) != SYSFS_KOBJ_LINK)
-+ goto out;
-+ if (sd->s_symlink.target_sd->s_dir.kobj != targ)
-+ goto out;
-+
-+ result = sysfs_rename(sd, parent_sd, new);
-+
-+out:
-+ sysfs_put(sd);
-+ return result;
-+}
-+
- static int sysfs_get_target_path(struct sysfs_dirent *parent_sd,
- struct sysfs_dirent *target_sd, char *path)
- {
---- a/include/linux/sysfs.h
-+++ b/include/linux/sysfs.h
-@@ -151,6 +151,9 @@ int __must_check sysfs_create_link_nowar
- const char *name);
- void sysfs_remove_link(struct kobject *kobj, const char *name);
-
-+int sysfs_rename_link(struct kobject *kobj, struct kobject *target,
-+ const char *old_name, const char *new_name);
-+
- int __must_check sysfs_create_group(struct kobject *kobj,
- const struct attribute_group *grp);
- int sysfs_update_group(struct kobject *kobj,
-@@ -255,6 +258,12 @@ static inline void sysfs_remove_link(str
- {
- }
-
-+static inline int sysfs_rename_link(struct kobject *k, struct kobject *t,
-+ const char *old_name, const char *new_name)
-+{
-+ return 0;
-+}
-+
- static inline int sysfs_create_group(struct kobject *kobj,
- const struct attribute_group *grp)
- {
diff --git a/driver-core/sysfs-kill-unused-sysfs_sb-variable.patch b/driver-core/sysfs-kill-unused-sysfs_sb-variable.patch
deleted file mode 100644
index 434e83fb5862c2..00000000000000
--- a/driver-core/sysfs-kill-unused-sysfs_sb-variable.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From ebiederm@xmission.com Fri Feb 26 14:02:48 2010
-From: "Eric W. Biederman" <ebiederm@xmission.com>
-Date: Fri, 12 Feb 2010 19:22:28 -0800
-Subject: sysfs: Kill unused sysfs_sb variable.
-To: Greg Kroah-Hartman <gregkh@suse.de>
-Cc: Kay Sievers <kay.sievers@vrfy.org>, linux-kernel@vger.kernel.org, Tejun Heo <tj@kernel.org>, Cornelia Huck <cornelia.huck@de.ibm.com>, linux-fsdevel@vger.kernel.org, Eric Dumazet <eric.dumazet@gmail.com>, Benjamin LaHaise <bcrl@lhnet.ca>, Serge Hallyn <serue@us.ibm.com>, "Eric W. Biederman" <ebiederm@xmission.com>, "Eric W. Biederman" <ebiederm@aristanetworks.com>
-Message-ID: <1266031348-30068-6-git-send-email-ebiederm@xmission.com>
-
-
-From: Eric W. Biederman <ebiederm@xmission.com>
-
-Now that there are no more users we can remove
-the sysfs_sb variable.
-
-Acked-by: Tejun Heo <tj@kernel.org>
-Acked-by: Serge Hallyn <serue@us.ibm.com>
-Signed-off-by: Eric W. Biederman <ebiederm@aristanetworks.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- fs/sysfs/mount.c | 2 --
- fs/sysfs/sysfs.h | 1 -
- 2 files changed, 3 deletions(-)
-
---- a/fs/sysfs/mount.c
-+++ b/fs/sysfs/mount.c
-@@ -23,7 +23,6 @@
-
-
- static struct vfsmount *sysfs_mount;
--struct super_block * sysfs_sb = NULL;
- struct kmem_cache *sysfs_dir_cachep;
-
- static const struct super_operations sysfs_ops = {
-@@ -50,7 +49,6 @@ static int sysfs_fill_super(struct super
- sb->s_magic = SYSFS_MAGIC;
- sb->s_op = &sysfs_ops;
- sb->s_time_gran = 1;
-- sysfs_sb = sb;
-
- /* get root inode, initialize and unlock it */
- mutex_lock(&sysfs_mutex);
---- a/fs/sysfs/sysfs.h
-+++ b/fs/sysfs/sysfs.h
-@@ -115,7 +115,6 @@ struct sysfs_addrm_cxt {
- * mount.c
- */
- extern struct sysfs_dirent sysfs_root;
--extern struct super_block *sysfs_sb;
- extern struct kmem_cache *sysfs_dir_cachep;
-
- /*
diff --git a/driver-core/sysfs-only-take-active-references-on-attributes.patch b/driver-core/sysfs-only-take-active-references-on-attributes.patch
deleted file mode 100644
index 39d30d43b36dc4..00000000000000
--- a/driver-core/sysfs-only-take-active-references-on-attributes.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From ebiederm@xmission.com Fri Feb 26 13:56:51 2010
-From: Eric W. Biederman <ebiederm@xmission.com>
-Date: Thu, 11 Feb 2010 15:20:00 -0800
-Subject: sysfs: Only take active references on attributes.
-To: Greg Kroah-Hartman <gregkh@suse.de>
-Cc: Am�rico Wang <xiyou.wangcong@gmail.com>, "Tejun Heo <tj@kernel.org> Neil Brown" <neilb@suse.de>, linux-kernel@vger.kernel.org
-Message-ID: <m1ljezwean.fsf_-_@fess.ebiederm.org>
-
-
-
-If we exclude directories and symlinks from the set of sysfs
-dirents where we need active references we are left with
-sysfs attributes (binary or not).
-
-- Tweak sysfs_deactivate to only do something on attributes
-- Move lockdep initialization into sysfs_file_add_mode to
- limit it to just attributes.
-
-Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
-Acked-by: WANG Cong <xiyou.wangcong@gmail.com>
-Cc: Tejun Heo <tj@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- fs/sysfs/dir.c | 5 ++++-
- fs/sysfs/file.c | 1 +
- fs/sysfs/sysfs.h | 1 +
- 3 files changed, 6 insertions(+), 1 deletion(-)
-
---- a/fs/sysfs/dir.c
-+++ b/fs/sysfs/dir.c
-@@ -156,6 +156,10 @@ static void sysfs_deactivate(struct sysf
- int v;
-
- BUG_ON(sd->s_sibling || !(sd->s_flags & SYSFS_FLAG_REMOVED));
-+
-+ if (!(sysfs_type(sd) & SYSFS_ACTIVE_REF))
-+ return;
-+
- sd->s_sibling = (void *)&wait;
-
- rwsem_acquire(&sd->dep_map, 0, 0, _RET_IP_);
-@@ -315,7 +319,6 @@ struct sysfs_dirent *sysfs_new_dirent(co
-
- atomic_set(&sd->s_count, 1);
- atomic_set(&sd->s_active, 0);
-- sysfs_dirent_init_lockdep(sd);
-
- sd->s_name = name;
- sd->s_mode = mode;
---- a/fs/sysfs/file.c
-+++ b/fs/sysfs/file.c
-@@ -509,6 +509,7 @@ int sysfs_add_file_mode(struct sysfs_dir
- if (!sd)
- return -ENOMEM;
- sd->s_attr.attr = (void *)attr;
-+ sysfs_dirent_init_lockdep(sd);
-
- sysfs_addrm_start(&acxt, dir_sd);
- rc = sysfs_add_one(&acxt, sd);
---- a/fs/sysfs/sysfs.h
-+++ b/fs/sysfs/sysfs.h
-@@ -79,6 +79,7 @@ struct sysfs_dirent {
- #define SYSFS_KOBJ_BIN_ATTR 0x0004
- #define SYSFS_KOBJ_LINK 0x0008
- #define SYSFS_COPY_NAME (SYSFS_DIR | SYSFS_KOBJ_LINK)
-+#define SYSFS_ACTIVE_REF (SYSFS_KOBJ_ATTR | SYSFS_KOBJ_BIN_ATTR)
-
- #define SYSFS_FLAG_MASK ~SYSFS_TYPE_MASK
- #define SYSFS_FLAG_REMOVED 0x0200
diff --git a/driver-core/sysfs-pack-sysfs_dirent-more-tightly.patch b/driver-core/sysfs-pack-sysfs_dirent-more-tightly.patch
deleted file mode 100644
index e7cc7b8f6af53c..00000000000000
--- a/driver-core/sysfs-pack-sysfs_dirent-more-tightly.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From ebiederm@xmission.com Fri Feb 26 14:00:55 2010
-From: "Eric W. Biederman" <ebiederm@xmission.com>
-Date: Fri, 12 Feb 2010 19:22:24 -0800
-Subject: sysfs: Pack sysfs_dirent more tightly.
-To: Greg Kroah-Hartman <gregkh@suse.de>
-Cc: Kay Sievers <kay.sievers@vrfy.org>, linux-kernel@vger.kernel.org, Tejun Heo <tj@kernel.org>, Cornelia Huck <cornelia.huck@de.ibm.com>, linux-fsdevel@vger.kernel.org, Eric Dumazet <eric.dumazet@gmail.com>, Benjamin LaHaise <bcrl@lhnet.ca>, Serge Hallyn <serue@us.ibm.com>, "Eric W. Biederman" <ebiederm@aristanetworks.com>
-Message-ID: <1266031348-30068-2-git-send-email-ebiederm@xmission.com>
-
-
-From: Eric W. Biederman <ebiederm@aristanetworks.com>
-
-Placing the 16bit s_mode between a pointer and a long doesn't pack well
-especailly on 64bit where we wast 48 bits. So move s_mode and
-declare it as a unsigned short. This is the sysfs backing store
-after all we don't need fields extra large just in case someday
-we want userspace to be able to use a larger value.
-
-Acked-by: Tejun Heo <tj@kernel.org>
-Signed-off-by: Eric W. Biederman <ebiederm@aristanetworks.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- fs/sysfs/sysfs.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/fs/sysfs/sysfs.h
-+++ b/fs/sysfs/sysfs.h
-@@ -66,8 +66,8 @@ struct sysfs_dirent {
- };
-
- unsigned int s_flags;
-+ unsigned short s_mode;
- ino_t s_ino;
-- umode_t s_mode;
- struct sysfs_inode_attrs *s_iattr;
- };
-
diff --git a/driver-core/sysfs-pass-super_block-to-sysfs_get_inode.patch b/driver-core/sysfs-pass-super_block-to-sysfs_get_inode.patch
deleted file mode 100644
index 584e1b473df869..00000000000000
--- a/driver-core/sysfs-pass-super_block-to-sysfs_get_inode.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From ebiederm@xmission.com Fri Feb 26 14:02:34 2010
-From: "Eric W. Biederman" <ebiederm@xmission.com>
-Date: Fri, 12 Feb 2010 19:22:27 -0800
-Subject: sysfs: Pass super_block to sysfs_get_inode
-To: Greg Kroah-Hartman <gregkh@suse.de>
-Cc: Kay Sievers <kay.sievers@vrfy.org>, linux-kernel@vger.kernel.org, Tejun Heo <tj@kernel.org>, Cornelia Huck <cornelia.huck@de.ibm.com>, linux-fsdevel@vger.kernel.org, Eric Dumazet <eric.dumazet@gmail.com>, Benjamin LaHaise <bcrl@lhnet.ca>, Serge Hallyn <serue@us.ibm.com>, "Eric W. Biederman" <ebiederm@xmission.com>, "Eric W. Biederman" <ebiederm@aristanetworks.com>
-Message-ID: <1266031348-30068-5-git-send-email-ebiederm@xmission.com>
-
-
-From: Eric W. Biederman <ebiederm@xmission.com>
-
-Currently sysfs_get_inode magically returns an inode on
-sysfs_sb. Make the super_block parameter explicit and
-the code becomes clearer.
-
-Acked-by: Tejun Heo <tj@kernel.org>
-Acked-by: Serge Hallyn <serue@us.ibm.com>
-Signed-off-by: Eric W. Biederman <ebiederm@aristanetworks.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- fs/sysfs/dir.c | 2 +-
- fs/sysfs/inode.c | 5 +++--
- fs/sysfs/mount.c | 2 +-
- fs/sysfs/sysfs.h | 2 +-
- 4 files changed, 6 insertions(+), 5 deletions(-)
-
---- a/fs/sysfs/dir.c
-+++ b/fs/sysfs/dir.c
-@@ -645,7 +645,7 @@ static struct dentry * sysfs_lookup(stru
- }
-
- /* attach dentry and inode */
-- inode = sysfs_get_inode(sd);
-+ inode = sysfs_get_inode(dir->i_sb, sd);
- if (!inode) {
- ret = ERR_PTR(-ENOMEM);
- goto out_unlock;
---- a/fs/sysfs/inode.c
-+++ b/fs/sysfs/inode.c
-@@ -283,6 +283,7 @@ static void sysfs_init_inode(struct sysf
-
- /**
- * sysfs_get_inode - get inode for sysfs_dirent
-+ * @sb: super block
- * @sd: sysfs_dirent to allocate inode for
- *
- * Get inode for @sd. If such inode doesn't exist, a new inode
-@@ -295,11 +296,11 @@ static void sysfs_init_inode(struct sysf
- * RETURNS:
- * Pointer to allocated inode on success, NULL on failure.
- */
--struct inode * sysfs_get_inode(struct sysfs_dirent *sd)
-+struct inode * sysfs_get_inode(struct super_block *sb, struct sysfs_dirent *sd)
- {
- struct inode *inode;
-
-- inode = iget_locked(sysfs_sb, sd->s_ino);
-+ inode = iget_locked(sb, sd->s_ino);
- if (inode && (inode->i_state & I_NEW))
- sysfs_init_inode(sd, inode);
-
---- a/fs/sysfs/mount.c
-+++ b/fs/sysfs/mount.c
-@@ -54,7 +54,7 @@ static int sysfs_fill_super(struct super
-
- /* get root inode, initialize and unlock it */
- mutex_lock(&sysfs_mutex);
-- inode = sysfs_get_inode(&sysfs_root);
-+ inode = sysfs_get_inode(sb, &sysfs_root);
- mutex_unlock(&sysfs_mutex);
- if (!inode) {
- pr_debug("sysfs: could not get root inode\n");
---- a/fs/sysfs/sysfs.h
-+++ b/fs/sysfs/sysfs.h
-@@ -172,7 +172,7 @@ static inline void __sysfs_put(struct sy
- /*
- * inode.c
- */
--struct inode *sysfs_get_inode(struct sysfs_dirent *sd);
-+struct inode *sysfs_get_inode(struct super_block *sb, struct sysfs_dirent *sd);
- void sysfs_delete_inode(struct inode *inode);
- int sysfs_sd_setattr(struct sysfs_dirent *sd, struct iattr *iattr);
- int sysfs_permission(struct inode *inode, int mask);
diff --git a/driver-core/sysfs-remove-sysfs_get-put_active_two.patch b/driver-core/sysfs-remove-sysfs_get-put_active_two.patch
deleted file mode 100644
index 6ab7e6f86a6d5c..00000000000000
--- a/driver-core/sysfs-remove-sysfs_get-put_active_two.patch
+++ /dev/null
@@ -1,379 +0,0 @@
-From ebiederm@xmission.com Fri Feb 26 13:56:11 2010
-From: Eric W. Biederman <ebiederm@xmission.com>
-Date: Thu, 11 Feb 2010 15:18:38 -0800
-Subject: sysfs: Remove sysfs_get/put_active_two
-To: Greg Kroah-Hartman <gregkh@suse.de>
-Cc: Am�rico Wang <xiyou.wangcong@gmail.com>, "Tejun Heo <tj@kernel.org> Neil Brown" <neilb@suse.de>, linux-kernel@vger.kernel.org
-Message-ID: <m1pr4bwecx.fsf_-_@fess.ebiederm.org>
-
-
-
-It turns out that holding an active reference on a directory is
-pointless. The purpose of the active references are to allows us to
-block when removing sysfs entries that have custom methods so we don't
-remove modules while running modular code and to keep those custom
-methods from accessing data structures after the files have been
-removed. Further sysfs_remove_dir remove all elements in the
-directory before removing the directory itself, so there is no chance
-we will remove a directory with active children.
-
-Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
-Cc: Tejun Heo <tj@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- fs/sysfs/bin.c | 50 +++++++++++++++++++++++++-------------------------
- fs/sysfs/dir.c | 43 ++-----------------------------------------
- fs/sysfs/file.c | 18 +++++++++---------
- fs/sysfs/sysfs.h | 4 ++--
- 4 files changed, 38 insertions(+), 77 deletions(-)
-
---- a/fs/sysfs/bin.c
-+++ b/fs/sysfs/bin.c
-@@ -54,14 +54,14 @@ fill_read(struct dentry *dentry, char *b
- int rc;
-
- /* need attr_sd for attr, its parent for kobj */
-- if (!sysfs_get_active_two(attr_sd))
-+ if (!sysfs_get_active(attr_sd))
- return -ENODEV;
-
- rc = -EIO;
- if (attr->read)
- rc = attr->read(kobj, attr, buffer, off, count);
-
-- sysfs_put_active_two(attr_sd);
-+ sysfs_put_active(attr_sd);
-
- return rc;
- }
-@@ -125,14 +125,14 @@ flush_write(struct dentry *dentry, char
- int rc;
-
- /* need attr_sd for attr, its parent for kobj */
-- if (!sysfs_get_active_two(attr_sd))
-+ if (!sysfs_get_active(attr_sd))
- return -ENODEV;
-
- rc = -EIO;
- if (attr->write)
- rc = attr->write(kobj, attr, buffer, offset, count);
-
-- sysfs_put_active_two(attr_sd);
-+ sysfs_put_active(attr_sd);
-
- return rc;
- }
-@@ -184,12 +184,12 @@ static void bin_vma_open(struct vm_area_
- if (!bb->vm_ops || !bb->vm_ops->open)
- return;
-
-- if (!sysfs_get_active_two(attr_sd))
-+ if (!sysfs_get_active(attr_sd))
- return;
-
- bb->vm_ops->open(vma);
-
-- sysfs_put_active_two(attr_sd);
-+ sysfs_put_active(attr_sd);
- }
-
- static void bin_vma_close(struct vm_area_struct *vma)
-@@ -201,12 +201,12 @@ static void bin_vma_close(struct vm_area
- if (!bb->vm_ops || !bb->vm_ops->close)
- return;
-
-- if (!sysfs_get_active_two(attr_sd))
-+ if (!sysfs_get_active(attr_sd))
- return;
-
- bb->vm_ops->close(vma);
-
-- sysfs_put_active_two(attr_sd);
-+ sysfs_put_active(attr_sd);
- }
-
- static int bin_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
-@@ -219,12 +219,12 @@ static int bin_fault(struct vm_area_stru
- if (!bb->vm_ops || !bb->vm_ops->fault)
- return VM_FAULT_SIGBUS;
-
-- if (!sysfs_get_active_two(attr_sd))
-+ if (!sysfs_get_active(attr_sd))
- return VM_FAULT_SIGBUS;
-
- ret = bb->vm_ops->fault(vma, vmf);
-
-- sysfs_put_active_two(attr_sd);
-+ sysfs_put_active(attr_sd);
- return ret;
- }
-
-@@ -241,12 +241,12 @@ static int bin_page_mkwrite(struct vm_ar
- if (!bb->vm_ops->page_mkwrite)
- return 0;
-
-- if (!sysfs_get_active_two(attr_sd))
-+ if (!sysfs_get_active(attr_sd))
- return VM_FAULT_SIGBUS;
-
- ret = bb->vm_ops->page_mkwrite(vma, vmf);
-
-- sysfs_put_active_two(attr_sd);
-+ sysfs_put_active(attr_sd);
- return ret;
- }
-
-@@ -261,12 +261,12 @@ static int bin_access(struct vm_area_str
- if (!bb->vm_ops || !bb->vm_ops->access)
- return -EINVAL;
-
-- if (!sysfs_get_active_two(attr_sd))
-+ if (!sysfs_get_active(attr_sd))
- return -EINVAL;
-
- ret = bb->vm_ops->access(vma, addr, buf, len, write);
-
-- sysfs_put_active_two(attr_sd);
-+ sysfs_put_active(attr_sd);
- return ret;
- }
-
-@@ -281,12 +281,12 @@ static int bin_set_policy(struct vm_area
- if (!bb->vm_ops || !bb->vm_ops->set_policy)
- return 0;
-
-- if (!sysfs_get_active_two(attr_sd))
-+ if (!sysfs_get_active(attr_sd))
- return -EINVAL;
-
- ret = bb->vm_ops->set_policy(vma, new);
-
-- sysfs_put_active_two(attr_sd);
-+ sysfs_put_active(attr_sd);
- return ret;
- }
-
-@@ -301,12 +301,12 @@ static struct mempolicy *bin_get_policy(
- if (!bb->vm_ops || !bb->vm_ops->get_policy)
- return vma->vm_policy;
-
-- if (!sysfs_get_active_two(attr_sd))
-+ if (!sysfs_get_active(attr_sd))
- return vma->vm_policy;
-
- pol = bb->vm_ops->get_policy(vma, addr);
-
-- sysfs_put_active_two(attr_sd);
-+ sysfs_put_active(attr_sd);
- return pol;
- }
-
-@@ -321,12 +321,12 @@ static int bin_migrate(struct vm_area_st
- if (!bb->vm_ops || !bb->vm_ops->migrate)
- return 0;
-
-- if (!sysfs_get_active_two(attr_sd))
-+ if (!sysfs_get_active(attr_sd))
- return 0;
-
- ret = bb->vm_ops->migrate(vma, from, to, flags);
-
-- sysfs_put_active_two(attr_sd);
-+ sysfs_put_active(attr_sd);
- return ret;
- }
- #endif
-@@ -356,7 +356,7 @@ static int mmap(struct file *file, struc
-
- /* need attr_sd for attr, its parent for kobj */
- rc = -ENODEV;
-- if (!sysfs_get_active_two(attr_sd))
-+ if (!sysfs_get_active(attr_sd))
- goto out_unlock;
-
- rc = -EINVAL;
-@@ -384,7 +384,7 @@ static int mmap(struct file *file, struc
- bb->vm_ops = vma->vm_ops;
- vma->vm_ops = &bin_vm_ops;
- out_put:
-- sysfs_put_active_two(attr_sd);
-+ sysfs_put_active(attr_sd);
- out_unlock:
- mutex_unlock(&bb->mutex);
-
-@@ -399,7 +399,7 @@ static int open(struct inode * inode, st
- int error;
-
- /* binary file operations requires both @sd and its parent */
-- if (!sysfs_get_active_two(attr_sd))
-+ if (!sysfs_get_active(attr_sd))
- return -ENODEV;
-
- error = -EACCES;
-@@ -426,11 +426,11 @@ static int open(struct inode * inode, st
- mutex_unlock(&sysfs_bin_lock);
-
- /* open succeeded, put active references */
-- sysfs_put_active_two(attr_sd);
-+ sysfs_put_active(attr_sd);
- return 0;
-
- err_out:
-- sysfs_put_active_two(attr_sd);
-+ sysfs_put_active(attr_sd);
- kfree(bb);
- return error;
- }
---- a/fs/sysfs/dir.c
-+++ b/fs/sysfs/dir.c
-@@ -93,7 +93,7 @@ static void sysfs_unlink_sibling(struct
- * RETURNS:
- * Pointer to @sd on success, NULL on failure.
- */
--static struct sysfs_dirent *sysfs_get_active(struct sysfs_dirent *sd)
-+struct sysfs_dirent *sysfs_get_active(struct sysfs_dirent *sd)
- {
- if (unlikely(!sd))
- return NULL;
-@@ -124,7 +124,7 @@ static struct sysfs_dirent *sysfs_get_ac
- * Put an active reference to @sd. This function is noop if @sd
- * is NULL.
- */
--static void sysfs_put_active(struct sysfs_dirent *sd)
-+void sysfs_put_active(struct sysfs_dirent *sd)
- {
- struct completion *cmpl;
- int v;
-@@ -145,45 +145,6 @@ static void sysfs_put_active(struct sysf
- }
-
- /**
-- * sysfs_get_active_two - get active references to sysfs_dirent and parent
-- * @sd: sysfs_dirent of interest
-- *
-- * Get active reference to @sd and its parent. Parent's active
-- * reference is grabbed first. This function is noop if @sd is
-- * NULL.
-- *
-- * RETURNS:
-- * Pointer to @sd on success, NULL on failure.
-- */
--struct sysfs_dirent *sysfs_get_active_two(struct sysfs_dirent *sd)
--{
-- if (sd) {
-- if (sd->s_parent && unlikely(!sysfs_get_active(sd->s_parent)))
-- return NULL;
-- if (unlikely(!sysfs_get_active(sd))) {
-- sysfs_put_active(sd->s_parent);
-- return NULL;
-- }
-- }
-- return sd;
--}
--
--/**
-- * sysfs_put_active_two - put active references to sysfs_dirent and parent
-- * @sd: sysfs_dirent of interest
-- *
-- * Put active references to @sd and its parent. This function is
-- * noop if @sd is NULL.
-- */
--void sysfs_put_active_two(struct sysfs_dirent *sd)
--{
-- if (sd) {
-- sysfs_put_active(sd);
-- sysfs_put_active(sd->s_parent);
-- }
--}
--
--/**
- * sysfs_deactivate - deactivate sysfs_dirent
- * @sd: sysfs_dirent to deactivate
- *
---- a/fs/sysfs/file.c
-+++ b/fs/sysfs/file.c
-@@ -85,13 +85,13 @@ static int fill_read_buffer(struct dentr
- return -ENOMEM;
-
- /* need attr_sd for attr and ops, its parent for kobj */
-- if (!sysfs_get_active_two(attr_sd))
-+ if (!sysfs_get_active(attr_sd))
- return -ENODEV;
-
- buffer->event = atomic_read(&attr_sd->s_attr.open->event);
- count = ops->show(kobj, attr_sd->s_attr.attr, buffer->page);
-
-- sysfs_put_active_two(attr_sd);
-+ sysfs_put_active(attr_sd);
-
- /*
- * The code works fine with PAGE_SIZE return but it's likely to
-@@ -203,12 +203,12 @@ flush_write_buffer(struct dentry * dentr
- int rc;
-
- /* need attr_sd for attr and ops, its parent for kobj */
-- if (!sysfs_get_active_two(attr_sd))
-+ if (!sysfs_get_active(attr_sd))
- return -ENODEV;
-
- rc = ops->store(kobj, attr_sd->s_attr.attr, buffer->page, count);
-
-- sysfs_put_active_two(attr_sd);
-+ sysfs_put_active(attr_sd);
-
- return rc;
- }
-@@ -344,7 +344,7 @@ static int sysfs_open_file(struct inode
- memmove(last_sysfs_file, p, strlen(p) + 1);
-
- /* need attr_sd for attr and ops, its parent for kobj */
-- if (!sysfs_get_active_two(attr_sd))
-+ if (!sysfs_get_active(attr_sd))
- return -ENODEV;
-
- /* every kobject with an attribute needs a ktype assigned */
-@@ -393,13 +393,13 @@ static int sysfs_open_file(struct inode
- goto err_free;
-
- /* open succeeded, put active references */
-- sysfs_put_active_two(attr_sd);
-+ sysfs_put_active(attr_sd);
- return 0;
-
- err_free:
- kfree(buffer);
- err_out:
-- sysfs_put_active_two(attr_sd);
-+ sysfs_put_active(attr_sd);
- return error;
- }
-
-@@ -437,12 +437,12 @@ static unsigned int sysfs_poll(struct fi
- struct sysfs_open_dirent *od = attr_sd->s_attr.open;
-
- /* need parent for the kobj, grab both */
-- if (!sysfs_get_active_two(attr_sd))
-+ if (!sysfs_get_active(attr_sd))
- goto trigger;
-
- poll_wait(filp, &od->poll, wait);
-
-- sysfs_put_active_two(attr_sd);
-+ sysfs_put_active(attr_sd);
-
- if (buffer->event != atomic_read(&od->event))
- goto trigger;
---- a/fs/sysfs/sysfs.h
-+++ b/fs/sysfs/sysfs.h
-@@ -124,8 +124,8 @@ extern const struct file_operations sysf
- extern const struct inode_operations sysfs_dir_inode_operations;
-
- struct dentry *sysfs_get_dentry(struct sysfs_dirent *sd);
--struct sysfs_dirent *sysfs_get_active_two(struct sysfs_dirent *sd);
--void sysfs_put_active_two(struct sysfs_dirent *sd);
-+struct sysfs_dirent *sysfs_get_active(struct sysfs_dirent *sd);
-+void sysfs_put_active(struct sysfs_dirent *sd);
- void sysfs_addrm_start(struct sysfs_addrm_cxt *acxt,
- struct sysfs_dirent *parent_sd);
- int __sysfs_add_one(struct sysfs_addrm_cxt *acxt, struct sysfs_dirent *sd);
diff --git a/driver-core/sysfs-serialize-updates-to-the-vfs-inode.patch b/driver-core/sysfs-serialize-updates-to-the-vfs-inode.patch
deleted file mode 100644
index 0cd41c46f5c990..00000000000000
--- a/driver-core/sysfs-serialize-updates-to-the-vfs-inode.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From ebiederm@xmission.com Fri Feb 26 14:00:40 2010
-From: "Eric W. Biederman" <ebiederm@xmission.com>
-Date: Fri, 12 Feb 2010 19:22:23 -0800
-Subject: [PATCH 1/6] sysfs: Serialize updates to the vfs inode
-To: Greg Kroah-Hartman <gregkh@suse.de>
-Cc: Kay Sievers <kay.sievers@vrfy.org>, linux-kernel@vger.kernel.org, Tejun Heo <tj@kernel.org>, Cornelia Huck <cornelia.huck@de.ibm.com>, linux-fsdevel@vger.kernel.org, Eric Dumazet <eric.dumazet@gmail.com>, Benjamin LaHaise <bcrl@lhnet.ca>, Serge Hallyn <serue@us.ibm.com>, "Eric W. Biederman" <ebiederm@aristanetworks.com>
-Message-ID: <1266031348-30068-1-git-send-email-ebiederm@xmission.com>
-
-
-From: Eric W. Biederman <ebiederm@aristanetworks.com>
-
-The vfs depends upon filesystem methods to update the
-vfs inode. Sysfs adds to the normal number of places
-where the vfs inode is updated by also updatng the
-vfs inode in sysfs_refresh_inode.
-
-Typically the inode mutex is used to serialize updates
-to the vfs inode, but grabbing the inode mutex in
-sysfs_permission and sysfs_getattr causes deadlocks,
-because sometimes the vfs calls those operations with
-the inode mutex held. Therefore sysfs can not use the
-inode mutex to serial updates to the vfs inode.
-
-The sysfs_mutex is acquired in all of the routines
-where sysfs updates the vfs inode, and with a small
-change we can consistently protext sysfs vfs inode
-updates with the sysfs_mutex. To protect the sysfs
-vfs inode updates with the sysfs_mutex simply requires
-extending the scope of sysfs_mutex in sysfs_setattr
-over inode_setattr, and over inode_change_ok (so we
-have an unchanging inode when we perform the check).
-
-Acked-by: Serge Hallyn <serue@us.ibm.com>
-Signed-off-by: Eric W. Biederman <ebiederm@aristanetworks.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- fs/sysfs/inode.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
---- a/fs/sysfs/inode.c
-+++ b/fs/sysfs/inode.c
-@@ -111,20 +111,20 @@ int sysfs_setattr(struct dentry *dentry,
- if (!sd)
- return -EINVAL;
-
-+ mutex_lock(&sysfs_mutex);
- error = inode_change_ok(inode, iattr);
- if (error)
-- return error;
-+ goto out;
-
- iattr->ia_valid &= ~ATTR_SIZE; /* ignore size changes */
-
- error = inode_setattr(inode, iattr);
- if (error)
-- return error;
-+ goto out;
-
-- mutex_lock(&sysfs_mutex);
- error = sysfs_sd_setattr(sd, iattr);
-+out:
- mutex_unlock(&sysfs_mutex);
--
- return error;
- }
-
diff --git a/driver-core/sysfs-use-one-lockdep-class-per-sysfs-attribute.patch b/driver-core/sysfs-use-one-lockdep-class-per-sysfs-attribute.patch
deleted file mode 100644
index 9c1c2627899288..00000000000000
--- a/driver-core/sysfs-use-one-lockdep-class-per-sysfs-attribute.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From ebiederm@xmission.com Fri Feb 26 13:57:22 2010
-From: Eric W. Biederman <ebiederm@xmission.com>
-Date: Thu, 11 Feb 2010 15:21:53 -0800
-Subject: sysfs: Use one lockdep class per sysfs attribute.
-To: Greg Kroah-Hartman <gregkh@suse.de>
-Cc: Am�rico Wang <xiyou.wangcong@gmail.com>, "Tejun Heo <tj@kernel.org> Neil Brown" <neilb@suse.de>, linux-kernel@vger.kernel.org
-Message-ID: <m1hbpnwe7i.fsf_-_@fess.ebiederm.org>
-
-Acknowledge that the logical sysfs rwsem has one instance per
-sysfs attribute with different locking depencencies for different
-attributes.
-
-There is a sysfs idiom where writing to one sysfs file causes the
-addition or removal of other sysfs files. Lumping all of the
-sysfs attributes together in one lock class causes lockdep to
-generate lots of false positives.
-
-This introduces the requirement that non-static sysfs attributes
-need to be initialized with sysfs_attr_init or sysfs_bin_attr_init.
-Strictly speaking this requirement only exists when lockdep is
-enabled, and when lockdep is enabled we get a bit fat warning
-if this requirement is not met.
-
-Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
-Acked-by: WANG Cong <xiyou.wangcong@gmail.com>
-Cc: Tejun Heo <tj@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- fs/sysfs/sysfs.h | 7 +++++--
- include/linux/sysfs.h | 18 ++++++++++++++++++
- 2 files changed, 23 insertions(+), 2 deletions(-)
-
---- a/fs/sysfs/sysfs.h
-+++ b/fs/sysfs/sysfs.h
-@@ -92,9 +92,12 @@ static inline unsigned int sysfs_type(st
- #ifdef CONFIG_DEBUG_LOCK_ALLOC
- #define sysfs_dirent_init_lockdep(sd) \
- do { \
-- static struct lock_class_key __key; \
-+ struct attribute *attr = sd->s_attr.attr; \
-+ struct lock_class_key *key = attr->key; \
-+ if (!key) \
-+ key = &attr->skey; \
- \
-- lockdep_init_map(&sd->dep_map, "s_active", &__key, 0); \
-+ lockdep_init_map(&sd->dep_map, "s_active", key, 0); \
- } while(0)
- #else
- #define sysfs_dirent_init_lockdep(sd) do {} while(0)
---- a/include/linux/sysfs.h
-+++ b/include/linux/sysfs.h
-@@ -15,6 +15,7 @@
- #include <linux/compiler.h>
- #include <linux/errno.h>
- #include <linux/list.h>
-+#include <linux/lockdep.h>
- #include <asm/atomic.h>
-
- struct kobject;
-@@ -29,8 +30,23 @@ struct attribute {
- const char *name;
- struct module *owner;
- mode_t mode;
-+#ifdef CONFIG_DEBUG_LOCK_ALLOC
-+ struct lock_class_key *key;
-+ struct lock_class_key skey;
-+#endif
- };
-
-+#ifdef CONFIG_DEBUG_LOCK_ALLOC
-+#define sysfs_attr_init(attr) \
-+do { \
-+ static struct lock_class_key __key; \
-+ \
-+ (attr)->key = &__key; \
-+} while(0)
-+#else
-+#define sysfs_attr_init(attr) do {} while(0)
-+#endif
-+
- struct attribute_group {
- const char *name;
- mode_t (*is_visible)(struct kobject *,
-@@ -74,6 +90,8 @@ struct bin_attribute {
- struct vm_area_struct *vma);
- };
-
-+#define sysfs_bin_attr_init(bin_attr) sysfs_attr_init(&bin_attr->attr)
-+
- struct sysfs_ops {
- ssize_t (*show)(struct kobject *, struct attribute *,char *);
- ssize_t (*store)(struct kobject *,struct attribute *,const char *, size_t);
diff --git a/driver-core/sysfs-use-sysfs_attr_init-and-sysfs_bin_attr_init-on-dynamic-attributes.patch b/driver-core/sysfs-use-sysfs_attr_init-and-sysfs_bin_attr_init-on-dynamic-attributes.patch
deleted file mode 100644
index ab4214423ebb71..00000000000000
--- a/driver-core/sysfs-use-sysfs_attr_init-and-sysfs_bin_attr_init-on-dynamic-attributes.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-From ebiederm@xmission.com Fri Feb 26 13:57:58 2010
-From: Eric W. Biederman <ebiederm@xmission.com>
-Date: Thu, 11 Feb 2010 15:23:05 -0800
-Subject: sysfs: Use sysfs_attr_init and sysfs_bin_attr_init on dynamic attributes
-To: Greg Kroah-Hartman <gregkh@suse.de>
-Cc: Am�rico Wang <xiyou.wangcong@gmail.com>, "Tejun Heo <tj@kernel.org> Neil Brown" <neilb@suse.de>, linux-kernel@vger.kernel.org
-Message-ID: <m1d40bwe5i.fsf_-_@fess.ebiederm.org>
-
-
-
-These are the non-static sysfs attributes that exist on
-my test machine. Fix them to use sysfs_attr_init or
-sysfs_bin_attr_init as appropriate. It simply requires
-making a sysfs attribute present to see this. So this
-is a little bit tedious but otherwise not too bad.
-
-Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
-Acked-by: WANG Cong <xiyou.wangcong@gmail.com>
-Cc: Tejun Heo <tj@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- arch/x86/kernel/cpu/mcheck/mce.c | 1 +
- drivers/acpi/system.c | 2 ++
- drivers/pci/pci-sysfs.c | 5 +++++
- kernel/params.c | 1 +
- 4 files changed, 9 insertions(+)
-
---- a/arch/x86/kernel/cpu/mcheck/mce.c
-+++ b/arch/x86/kernel/cpu/mcheck/mce.c
-@@ -2044,6 +2044,7 @@ static __init void mce_init_banks(void)
- struct mce_bank *b = &mce_banks[i];
- struct sysdev_attribute *a = &b->attr;
-
-+ sysfs_attr_init(&a->attr);
- a->attr.name = b->attrname;
- snprintf(b->attrname, ATTR_LEN, "bank%d", i);
-
---- a/drivers/acpi/system.c
-+++ b/drivers/acpi/system.c
-@@ -101,6 +101,7 @@ static void acpi_table_attr_init(struct
- struct acpi_table_header *header = NULL;
- struct acpi_table_attr *attr = NULL;
-
-+ sysfs_attr_init(&table_attr->attr.attr);
- if (table_header->signature[0] != '\0')
- memcpy(table_attr->name, table_header->signature,
- ACPI_NAME_SIZE);
-@@ -475,6 +476,7 @@ void acpi_irq_stats_init(void)
- goto fail;
- strncpy(name, buffer, strlen(buffer) + 1);
-
-+ sysfs_attr_init(&counter_attrs[i].attr);
- counter_attrs[i].attr.name = name;
- counter_attrs[i].attr.mode = 0644;
- counter_attrs[i].show = counter_show;
---- a/drivers/pci/pci-sysfs.c
-+++ b/drivers/pci/pci-sysfs.c
-@@ -642,6 +642,7 @@ void pci_create_legacy_files(struct pci_
- if (!b->legacy_io)
- goto kzalloc_err;
-
-+ sysfs_bin_attr_init(&b->legacy_io);
- b->legacy_io->attr.name = "legacy_io";
- b->legacy_io->size = 0xffff;
- b->legacy_io->attr.mode = S_IRUSR | S_IWUSR;
-@@ -654,6 +655,7 @@ void pci_create_legacy_files(struct pci_
- goto legacy_io_err;
-
- /* Allocated above after the legacy_io struct */
-+ sysfs_bin_attr_init(&b->legacy_mem);
- b->legacy_mem = b->legacy_io + 1;
- b->legacy_mem->attr.name = "legacy_mem";
- b->legacy_mem->size = 1024*1024;
-@@ -800,6 +802,7 @@ static int pci_create_attr(struct pci_de
- if (res_attr) {
- char *res_attr_name = (char *)(res_attr + 1);
-
-+ sysfs_bin_attr_init(res_attr);
- if (write_combine) {
- pdev->res_attr_wc[num] = res_attr;
- sprintf(res_attr_name, "resource%d_wc", num);
-@@ -972,6 +975,7 @@ static int pci_create_capabilities_sysfs
- if (!attr)
- return -ENOMEM;
-
-+ sysfs_bin_attr_init(attr);
- attr->size = dev->vpd->len;
- attr->attr.name = "vpd";
- attr->attr.mode = S_IRUSR | S_IWUSR;
-@@ -1038,6 +1042,7 @@ int __must_check pci_create_sysfs_dev_fi
- retval = -ENOMEM;
- goto err_resource_files;
- }
-+ sysfs_bin_attr_init(attr);
- attr->size = rom_size;
- attr->attr.name = "rom";
- attr->attr.mode = S_IRUSR;
---- a/kernel/params.c
-+++ b/kernel/params.c
-@@ -516,6 +516,7 @@ static __modinit int add_sysfs_param(str
- new->grp.attrs = attrs;
-
- /* Tack new one on the end. */
-+ sysfs_attr_init(&new->attrs[num].mattr.attr);
- new->attrs[num].param = kp;
- new->attrs[num].mattr.show = param_attr_show;
- new->attrs[num].mattr.store = param_attr_store;
diff --git a/driver-core/sysfs-use-sysfs_attr_init-and-sysfs_bin_attr_init-on-module-dynamic-attributes.patch b/driver-core/sysfs-use-sysfs_attr_init-and-sysfs_bin_attr_init-on-module-dynamic-attributes.patch
deleted file mode 100644
index c5c8aa691db46b..00000000000000
--- a/driver-core/sysfs-use-sysfs_attr_init-and-sysfs_bin_attr_init-on-module-dynamic-attributes.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From ebiederm@xmission.com Fri Feb 26 13:59:54 2010
-From: Eric W. Biederman <ebiederm@xmission.com>
-Date: Fri, 12 Feb 2010 13:41:56 -0800
-Subject: sysfs: Use sysfs_attr_init and sysfs_bin_attr_init on module dynamic attributes
-To: Greg KH <gregkh@suse.de>
-Cc: Am�rico Wang <xiyou.wangcong@gmail.com>, "Tejun Heo <tj@kernel.org> Neil Brown" <neilb@suse.de>, linux-kernel@vger.kernel.org
-Message-ID: <m1fx56uo63.fsf_-_@fess.ebiederm.org>
-
-
-
-A little more whack-a-mole annotating the dynamic sysfs attributes. I
-had everything built into my earlier test kernel, and so I missed
-these.
-
-Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- kernel/module.c | 3 +++
- 1 file changed, 3 insertions(+)
-
---- a/kernel/module.c
-+++ b/kernel/module.c
-@@ -1085,6 +1085,7 @@ static void add_sect_attrs(struct module
- if (sattr->name == NULL)
- goto out;
- sect_attrs->nsections++;
-+ sysfs_attr_init(&sattr->mattr.attr);
- sattr->mattr.show = module_sect_show;
- sattr->mattr.store = NULL;
- sattr->mattr.attr.name = sattr->name;
-@@ -1180,6 +1181,7 @@ static void add_notes_attrs(struct modul
- if (sect_empty(&sechdrs[i]))
- continue;
- if (sechdrs[i].sh_type == SHT_NOTE) {
-+ sysfs_bin_attr_init(nattr);
- nattr->attr.name = mod->sect_attrs->attrs[loaded].name;
- nattr->attr.mode = S_IRUGO;
- nattr->size = sechdrs[i].sh_size;
-@@ -1252,6 +1254,7 @@ int module_add_modinfo_attrs(struct modu
- if (!attr->test ||
- (attr->test && attr->test(mod))) {
- memcpy(temp_attr, attr, sizeof(*temp_attr));
-+ sysfs_attr_init(&temp_attr->attr);
- error = sysfs_create_file(&mod->mkobj.kobj,&temp_attr->attr);
- ++temp_attr;
- }
diff --git a/driver-core/sysfs-windfarm-init-sysfs-attributes.patch b/driver-core/sysfs-windfarm-init-sysfs-attributes.patch
deleted file mode 100644
index df1e4fb12d584a..00000000000000
--- a/driver-core/sysfs-windfarm-init-sysfs-attributes.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From johannes@sipsolutions.net Fri Feb 26 14:20:21 2010
-From: Johannes Berg <johannes@sipsolutions.net>
-Date: Sat, 20 Feb 2010 16:43:02 +0100
-Subject: sysfs: windfarm: init sysfs attributes
-To: Am�rico Wang <xiyou.wangcong@gmail.com>
-Cc: "Eric W. Biederman" <ebiederm@xmission.com>, Greg KH <greg@kroah.com>, Benjamin Herrenschmidt <benh@kernel.crashing.org>
-Message-ID: <1266680582.17363.7.camel@jlt3.sipsolutions.net>
-
-
-This is required for lockdep.
-
-Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/macintosh/windfarm_core.c | 1 +
- drivers/macintosh/windfarm_smu_controls.c | 1 +
- 2 files changed, 2 insertions(+)
-
---- a/drivers/macintosh/windfarm_core.c
-+++ b/drivers/macintosh/windfarm_core.c
-@@ -321,6 +321,7 @@ int wf_register_sensor(struct wf_sensor
- kref_init(&new_sr->ref);
- list_add(&new_sr->link, &wf_sensors);
-
-+ sysfs_attr_init(&new_sr->attr.attr);
- new_sr->attr.attr.name = new_sr->name;
- new_sr->attr.attr.mode = 0444;
- new_sr->attr.show = wf_show_sensor;
---- a/drivers/macintosh/windfarm_smu_controls.c
-+++ b/drivers/macintosh/windfarm_smu_controls.c
-@@ -173,6 +173,7 @@ static struct smu_fan_control *smu_fan_c
-
- fct->fan_type = pwm_fan;
- fct->ctrl.type = pwm_fan ? WF_CONTROL_PWM_FAN : WF_CONTROL_RPM_FAN;
-+ sysfs_attr_init(&fct->ctrl.attr.attr);
-
- /* We use the name & location here the same way we do for SMU sensors,
- * see the comment in windfarm_smu_sensors.c. The locations are a bit
diff --git a/driver-core/uio-add-a-driver-for-hilscher-netx-based-fieldbus-cards.patch b/driver-core/uio-add-a-driver-for-hilscher-netx-based-fieldbus-cards.patch
deleted file mode 100644
index 4b2298e055b53d..00000000000000
--- a/driver-core/uio-add-a-driver-for-hilscher-netx-based-fieldbus-cards.patch
+++ /dev/null
@@ -1,225 +0,0 @@
-From hjk@linutronix.de Wed Feb 17 15:34:20 2010
-From: "Hans J. Koch" <hjk@linutronix.de>
-Date: Tue, 9 Feb 2010 20:13:49 +0100
-Subject: UIO: Add a driver for Hilscher netX-based fieldbus cards
-Cc: Greg Kroah-Hartman <gregkh@suse.de>, Manuel Traut <manut@linutronix.de>
-Message-ID: <20100209191349.GE3229@local>
-Content-Disposition: inline
-
-
-This patch adds a Userspace IO driver for netX-based fieldbus cards by
-Hilscher (see http://www.hilscher.com). ATM, cifX and comX cards are
-supported. The userspace part for this driver is provided by Hilscher
-and should come with the card.
-The driver is in use for several months now and has been tested by
-people at Hilscher and Linutronix.
-
-Signed-off-by: Hans J. Koch <hjk@linutronix.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/uio/Kconfig | 11 +++
- drivers/uio/Makefile | 1
- drivers/uio/uio_netx.c | 172 +++++++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 184 insertions(+)
-
---- a/drivers/uio/Kconfig
-+++ b/drivers/uio/Kconfig
-@@ -94,4 +94,15 @@ config UIO_PCI_GENERIC
- primarily, for virtualization scenarios.
- If you compile this as a module, it will be called uio_pci_generic.
-
-+config UIO_NETX
-+ tristate "Hilscher NetX Card driver"
-+ depends on PCI
-+ help
-+ Driver for Hilscher NetX based fieldbus cards (cifX, comX).
-+ This driver requires a userspace component that comes with the card
-+ or is available from Hilscher (http://www.hilscher.com).
-+
-+ To compile this driver as a module, choose M here; the module
-+ will be called uio_netx.
-+
- endif
---- a/drivers/uio/Makefile
-+++ b/drivers/uio/Makefile
-@@ -6,3 +6,4 @@ obj-$(CONFIG_UIO_SMX) += uio_smx.o
- obj-$(CONFIG_UIO_AEC) += uio_aec.o
- obj-$(CONFIG_UIO_SERCOS3) += uio_sercos3.o
- obj-$(CONFIG_UIO_PCI_GENERIC) += uio_pci_generic.o
-+obj-$(CONFIG_UIO_NETX) += uio_netx.o
---- /dev/null
-+++ b/drivers/uio/uio_netx.c
-@@ -0,0 +1,172 @@
-+/*
-+ * UIO driver for Hilscher NetX based fieldbus cards (cifX, comX).
-+ * See http://www.hilscher.com for details.
-+ *
-+ * (C) 2007 Hans J. Koch <hjk@linutronix.de>
-+ * (C) 2008 Manuel Traut <manut@linutronix.de>
-+ *
-+ * Licensed under GPL version 2 only.
-+ *
-+ */
-+
-+#include <linux/device.h>
-+#include <linux/io.h>
-+#include <linux/module.h>
-+#include <linux/pci.h>
-+#include <linux/uio_driver.h>
-+
-+#define PCI_VENDOR_ID_HILSCHER 0x15CF
-+#define PCI_DEVICE_ID_HILSCHER_NETX 0x0000
-+#define PCI_SUBDEVICE_ID_NXSB_PCA 0x3235
-+#define PCI_SUBDEVICE_ID_NXPCA 0x3335
-+
-+#define DPM_HOST_INT_EN0 0xfff0
-+#define DPM_HOST_INT_STAT0 0xffe0
-+
-+#define DPM_HOST_INT_MASK 0xe600ffff
-+#define DPM_HOST_INT_GLOBAL_EN 0x80000000
-+
-+static irqreturn_t netx_handler(int irq, struct uio_info *dev_info)
-+{
-+ void __iomem *int_enable_reg = dev_info->mem[0].internal_addr
-+ + DPM_HOST_INT_EN0;
-+ void __iomem *int_status_reg = dev_info->mem[0].internal_addr
-+ + DPM_HOST_INT_STAT0;
-+
-+ /* Is one of our interrupts enabled and active ? */
-+ if (!(ioread32(int_enable_reg) & ioread32(int_status_reg)
-+ & DPM_HOST_INT_MASK))
-+ return IRQ_NONE;
-+
-+ /* Disable interrupt */
-+ iowrite32(ioread32(int_enable_reg) & ~DPM_HOST_INT_GLOBAL_EN,
-+ int_enable_reg);
-+ return IRQ_HANDLED;
-+}
-+
-+static int __devinit netx_pci_probe(struct pci_dev *dev,
-+ const struct pci_device_id *id)
-+{
-+ struct uio_info *info;
-+ int bar;
-+
-+ info = kzalloc(sizeof(struct uio_info), GFP_KERNEL);
-+ if (!info)
-+ return -ENOMEM;
-+
-+ if (pci_enable_device(dev))
-+ goto out_free;
-+
-+ if (pci_request_regions(dev, "netx"))
-+ goto out_disable;
-+
-+ switch (id->device) {
-+ case PCI_DEVICE_ID_HILSCHER_NETX:
-+ bar = 0;
-+ info->name = "netx";
-+ break;
-+ default:
-+ bar = 2;
-+ info->name = "netx_plx";
-+ }
-+
-+ /* BAR0 or 2 points to the card's dual port memory */
-+ info->mem[0].addr = pci_resource_start(dev, bar);
-+ if (!info->mem[0].addr)
-+ goto out_release;
-+ info->mem[0].internal_addr = ioremap(pci_resource_start(dev, bar),
-+ pci_resource_len(dev, bar));
-+
-+ if (!info->mem[0].internal_addr)
-+ goto out_release;
-+
-+ info->mem[0].size = pci_resource_len(dev, bar);
-+ info->mem[0].memtype = UIO_MEM_PHYS;
-+ info->irq = dev->irq;
-+ info->irq_flags = IRQF_SHARED;
-+ info->handler = netx_handler;
-+ info->version = "0.0.1";
-+
-+ /* Make sure all interrupts are disabled */
-+ iowrite32(0, info->mem[0].internal_addr + DPM_HOST_INT_EN0);
-+
-+ if (uio_register_device(&dev->dev, info))
-+ goto out_unmap;
-+
-+ pci_set_drvdata(dev, info);
-+ dev_info(&dev->dev, "Found %s card, registered UIO device.\n",
-+ info->name);
-+
-+ return 0;
-+
-+out_unmap:
-+ iounmap(info->mem[0].internal_addr);
-+out_release:
-+ pci_release_regions(dev);
-+out_disable:
-+ pci_disable_device(dev);
-+out_free:
-+ kfree(info);
-+ return -ENODEV;
-+}
-+
-+static void netx_pci_remove(struct pci_dev *dev)
-+{
-+ struct uio_info *info = pci_get_drvdata(dev);
-+
-+ /* Disable all interrupts */
-+ iowrite32(0, info->mem[0].internal_addr + DPM_HOST_INT_EN0);
-+ uio_unregister_device(info);
-+ pci_release_regions(dev);
-+ pci_disable_device(dev);
-+ pci_set_drvdata(dev, NULL);
-+ iounmap(info->mem[0].internal_addr);
-+
-+ kfree(info);
-+}
-+
-+static struct pci_device_id netx_pci_ids[] = {
-+ {
-+ .vendor = PCI_VENDOR_ID_HILSCHER,
-+ .device = PCI_DEVICE_ID_HILSCHER_NETX,
-+ .subvendor = 0,
-+ .subdevice = 0,
-+ },
-+ {
-+ .vendor = PCI_VENDOR_ID_PLX,
-+ .device = PCI_DEVICE_ID_PLX_9030,
-+ .subvendor = PCI_VENDOR_ID_PLX,
-+ .subdevice = PCI_SUBDEVICE_ID_NXSB_PCA,
-+ },
-+ {
-+ .vendor = PCI_VENDOR_ID_PLX,
-+ .device = PCI_DEVICE_ID_PLX_9030,
-+ .subvendor = PCI_VENDOR_ID_PLX,
-+ .subdevice = PCI_SUBDEVICE_ID_NXPCA,
-+ },
-+ { 0, }
-+};
-+
-+static struct pci_driver netx_pci_driver = {
-+ .name = "netx",
-+ .id_table = netx_pci_ids,
-+ .probe = netx_pci_probe,
-+ .remove = netx_pci_remove,
-+};
-+
-+static int __init netx_init_module(void)
-+{
-+ return pci_register_driver(&netx_pci_driver);
-+}
-+
-+static void __exit netx_exit_module(void)
-+{
-+ pci_unregister_driver(&netx_pci_driver);
-+}
-+
-+module_init(netx_init_module);
-+module_exit(netx_exit_module);
-+
-+MODULE_DEVICE_TABLE(pci, netx_pci_ids);
-+MODULE_LICENSE("GPL v2");
-+MODULE_AUTHOR("Hans J. Koch, Manuel Traut");
diff --git a/driver-core/uio-minor-kconfig-fixes.patch b/driver-core/uio-minor-kconfig-fixes.patch
deleted file mode 100644
index 4d20fceca98ee8..00000000000000
--- a/driver-core/uio-minor-kconfig-fixes.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From john.ogness@linutronix.de Wed Feb 17 15:36:36 2010
-From: John Ogness <john.ogness@linutronix.de>
-Date: Thu, 11 Feb 2010 15:38:53 +0100
-Subject: UIO: minor Kconfig fixes
-Cc: "Greg Kroah-Hartman" <gregkh@suse.de>, "Michael S. Tsirkin" <mst@redhat.com>, "Hans J. Koch" <hjk@linutronix.de>
-Message-ID: <80vde3rg5e.fsf@merkur.tec.linutronix.de>
-
-
-Two trivial fixes for the Userspace IO Kconfig file:
-1) uio_sercos3 is a PCI driver, so let it depend on PCI.
-2) "default n" under UIO_PCI_GENERIC is luxury since it is already the default.
-
-Acked-by: John Ogness <john.ogness@linutronix.de>
-Signed-off-by: Hans J. Koch <hjk@linutronix.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/uio/Kconfig | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/uio/Kconfig
-+++ b/drivers/uio/Kconfig
-@@ -74,6 +74,7 @@ config UIO_AEC
-
- config UIO_SERCOS3
- tristate "Automata Sercos III PCI card driver"
-+ depends on PCI
- help
- Userspace I/O interface for the Sercos III PCI card from
- Automata GmbH. The userspace part of this driver will be
-@@ -87,7 +88,6 @@ config UIO_SERCOS3
- config UIO_PCI_GENERIC
- tristate "Generic driver for PCI 2.3 and PCI Express cards"
- depends on PCI
-- default n
- help
- Generic driver that you can bind, dynamically, to any
- PCI 2.3 compliant and PCI Express card. It is useful,
diff --git a/driver-core/uio-remove-smx-cryptengine-driver.patch b/driver-core/uio-remove-smx-cryptengine-driver.patch
deleted file mode 100644
index 6e4f5817f10acf..00000000000000
--- a/driver-core/uio-remove-smx-cryptengine-driver.patch
+++ /dev/null
@@ -1,197 +0,0 @@
-From hjk@linutronix.de Wed Feb 17 15:37:10 2010
-From: "Hans J. Koch" <hjk@linutronix.de>
-Date: Wed, 10 Feb 2010 20:12:42 +0100
-Subject: UIO: Remove SMX Cryptengine driver
-Cc: Greg Kroah-Hartman <gregkh@suse.de>, Ben Nizette <bn@niasdigital.com>
-Message-ID: <20100210191241.GD2946@local>
-Content-Disposition: inline
-
-
-Ben Nizette, the author of this driver, told me in a private mail that this
-project has been cancelled. He suggested to remove the driver for now, and
-will come back with a new version should the hardware really exist.
-This patch completely removes the driver.
-
-Signed-off-by: Hans J. Koch <hjk@linutronix.de>
-Acked-by: Ben Nizette <bn@niasdigital.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/uio/Kconfig | 11 ---
- drivers/uio/Makefile | 1
- drivers/uio/uio_smx.c | 140 --------------------------------------------------
- 3 files changed, 152 deletions(-)
-
---- a/drivers/uio/Kconfig
-+++ b/drivers/uio/Kconfig
-@@ -44,17 +44,6 @@ config UIO_PDRV_GENIRQ
-
- If you don't know what to do here, say N.
-
--config UIO_SMX
-- tristate "SMX cryptengine UIO interface"
-- help
-- Userspace IO interface to the Cryptography engine found on the
-- Nias Digital SMX boards. These will be available from Q4 2008
-- from http://www.niasdigital.com. The userspace part of this
-- driver will be released under the GPL at the same time as the
-- hardware and will be able to be downloaded from the same site.
--
-- If you compile this as a module, it will be called uio_smx.
--
- config UIO_AEC
- tristate "AEC video timestamp device"
- depends on PCI
---- a/drivers/uio/Makefile
-+++ b/drivers/uio/Makefile
-@@ -2,7 +2,6 @@ obj-$(CONFIG_UIO) += uio.o
- obj-$(CONFIG_UIO_CIF) += uio_cif.o
- obj-$(CONFIG_UIO_PDRV) += uio_pdrv.o
- obj-$(CONFIG_UIO_PDRV_GENIRQ) += uio_pdrv_genirq.o
--obj-$(CONFIG_UIO_SMX) += uio_smx.o
- obj-$(CONFIG_UIO_AEC) += uio_aec.o
- obj-$(CONFIG_UIO_SERCOS3) += uio_sercos3.o
- obj-$(CONFIG_UIO_PCI_GENERIC) += uio_pci_generic.o
---- a/drivers/uio/uio_smx.c
-+++ /dev/null
-@@ -1,140 +0,0 @@
--/*
-- * UIO SMX Cryptengine driver.
-- *
-- * (C) 2008 Nias Digital P/L <bn@niasdigital.com>
-- *
-- * This program is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU General Public License version 2 as
-- * published by the Free Software Foundation.
-- *
-- */
--
--#include <linux/device.h>
--#include <linux/module.h>
--#include <linux/platform_device.h>
--#include <linux/uio_driver.h>
--#include <linux/io.h>
--
--#define DRV_NAME "smx-ce"
--#define DRV_VERSION "0.03"
--
--#define SMX_CSR 0x00000000
--#define SMX_EnD 0x00000001
--#define SMX_RUN 0x00000002
--#define SMX_DRDY 0x00000004
--#define SMX_ERR 0x00000008
--
--static irqreturn_t smx_handler(int irq, struct uio_info *dev_info)
--{
-- void __iomem *csr = dev_info->mem[0].internal_addr + SMX_CSR;
--
-- u32 status = ioread32(csr);
--
-- if (!(status & SMX_DRDY))
-- return IRQ_NONE;
--
-- /* Disable interrupt */
-- iowrite32(status & ~SMX_DRDY, csr);
-- return IRQ_HANDLED;
--}
--
--static int __devinit smx_ce_probe(struct platform_device *dev)
--{
--
-- int ret = -ENODEV;
-- struct uio_info *info;
-- struct resource *regs;
--
-- info = kzalloc(sizeof(struct uio_info), GFP_KERNEL);
-- if (!info)
-- return -ENOMEM;
--
-- regs = platform_get_resource(dev, IORESOURCE_MEM, 0);
-- if (!regs) {
-- dev_err(&dev->dev, "No memory resource specified\n");
-- goto out_free;
-- }
--
-- info->mem[0].addr = regs->start;
-- if (!info->mem[0].addr) {
-- dev_err(&dev->dev, "Invalid memory resource\n");
-- goto out_free;
-- }
--
-- info->mem[0].size = regs->end - regs->start + 1;
-- info->mem[0].internal_addr = ioremap(regs->start, info->mem[0].size);
--
-- if (!info->mem[0].internal_addr) {
-- dev_err(&dev->dev, "Can't remap memory address range\n");
-- goto out_free;
-- }
--
-- info->mem[0].memtype = UIO_MEM_PHYS;
--
-- info->name = "smx-ce";
-- info->version = "0.03";
--
-- info->irq = platform_get_irq(dev, 0);
-- if (info->irq < 0) {
-- ret = info->irq;
-- dev_err(&dev->dev, "No (or invalid) IRQ resource specified\n");
-- goto out_unmap;
-- }
--
-- info->irq_flags = IRQF_SHARED;
-- info->handler = smx_handler;
--
-- platform_set_drvdata(dev, info);
--
-- ret = uio_register_device(&dev->dev, info);
--
-- if (ret)
-- goto out_unmap;
--
-- return 0;
--
--out_unmap:
-- iounmap(info->mem[0].internal_addr);
--out_free:
-- kfree(info);
--
-- return ret;
--}
--
--static int __devexit smx_ce_remove(struct platform_device *dev)
--{
-- struct uio_info *info = platform_get_drvdata(dev);
--
-- uio_unregister_device(info);
-- platform_set_drvdata(dev, NULL);
-- iounmap(info->mem[0].internal_addr);
--
-- kfree(info);
--
-- return 0;
--}
--
--static struct platform_driver smx_ce_driver = {
-- .probe = smx_ce_probe,
-- .remove = __devexit_p(smx_ce_remove),
-- .driver = {
-- .name = DRV_NAME,
-- .owner = THIS_MODULE,
-- },
--};
--
--static int __init smx_ce_init_module(void)
--{
-- return platform_driver_register(&smx_ce_driver);
--}
--module_init(smx_ce_init_module);
--
--static void __exit smx_ce_exit_module(void)
--{
-- platform_driver_unregister(&smx_ce_driver);
--}
--module_exit(smx_ce_exit_module);
--
--MODULE_LICENSE("GPL v2");
--MODULE_VERSION(DRV_VERSION);
--MODULE_AUTHOR("Ben Nizette <bn@niasdigital.com>");
diff --git a/driver-core/w1-move-omap_hdq-s-probe-function-to-.devinit.text.patch b/driver-core/w1-move-omap_hdq-s-probe-function-to-.devinit.text.patch
deleted file mode 100644
index 307d627121c5be..00000000000000
--- a/driver-core/w1-move-omap_hdq-s-probe-function-to-.devinit.text.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From u.kleine-koenig@pengutronix.de Wed Feb 17 12:44:30 2010
-From: Uwe Kleine-K�nig <u.kleine-koenig@pengutronix.de>
-Date: Thu, 4 Feb 2010 20:56:54 +0100
-Subject: w1: move omap_hdq's probe function to .devinit.text
-To: Greg KH <gregkh@suse.de>
-Cc: "Stanley.Miao" <stanley.miao@windriver.com>, Andrew Morton <akpm@linux-foundation.org>, Madhusudhan Chikkature <madhu.cr@ti.com>, Felipe Balbi <felipe.balbi@nokia.com>
-Message-ID: <1265313417-5568-6-git-send-email-u.kleine-koenig@pengutronix.de>
-
-From: Uwe Kleine-K�nig <u.kleine-koenig@pengutronix.de>
-
-A pointer to omap_hdq_probe is passed to the core via
-platform_driver_register and so the function must not disappear when the
-.init sections are discarded. Otherwise (if also having HOTPLUG=y)
-unbinding and binding a device to the driver via sysfs will result in an
-oops as does a device being registered late.
-
-An alternative to this patch is using platform_driver_probe instead of
-platform_driver_register plus removing the pointer to the probe function
-from the struct platform_driver.
-
-Signed-off-by: Uwe Kleine-K�nig <u.kleine-koenig@pengutronix.de>
-Cc: Stanley.Miao <stanley.miao@windriver.com>
-Acked-by: Evgeniy Polyakov <zbr@ioremap.net>
-Cc: Andrew Morton <akpm@linux-foundation.org>
-Cc: Madhusudhan Chikkature <madhu.cr@ti.com>
-Cc: Felipe Balbi <felipe.balbi@nokia.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/w1/masters/omap_hdq.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/drivers/w1/masters/omap_hdq.c
-+++ b/drivers/w1/masters/omap_hdq.c
-@@ -72,7 +72,7 @@ struct hdq_data {
- int init_trans;
- };
-
--static int __init omap_hdq_probe(struct platform_device *pdev);
-+static int __devinit omap_hdq_probe(struct platform_device *pdev);
- static int omap_hdq_remove(struct platform_device *pdev);
-
- static struct platform_driver omap_hdq_driver = {
-@@ -558,7 +558,7 @@ static void omap_w1_write_byte(void *_hd
- return;
- }
-
--static int __init omap_hdq_probe(struct platform_device *pdev)
-+static int __devinit omap_hdq_probe(struct platform_device *pdev)
- {
- struct hdq_data *hdq_data;
- struct resource *res;
diff --git a/driver-core/x86-move-hp-wmi-s-probe-function-to-.devinit.text.patch b/driver-core/x86-move-hp-wmi-s-probe-function-to-.devinit.text.patch
deleted file mode 100644
index 910a6cd72cee62..00000000000000
--- a/driver-core/x86-move-hp-wmi-s-probe-function-to-.devinit.text.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From u.kleine-koenig@pengutronix.de Wed Feb 17 12:43:16 2010
-From: Uwe Kleine-K�nig <u.kleine-koenig@pengutronix.de>
-Date: Thu, 4 Feb 2010 20:56:52 +0100
-Subject: x86: move hp-wmi's probe function to .devinit.text
-To: Greg KH <gregkh@suse.de>
-Cc: Frans Pop <elendil@planet.nl>, Larry Finger <Larry.Finger@lwfinger.net>, Len Brown <lenb@kernel.org>, Helge Deller <deller@gmx.de>, Matthew Garrett <mjg@redhat.com>, Andrew Morton <akpm@linux-foundation.org>
-Message-ID: <1265313417-5568-4-git-send-email-u.kleine-koenig@pengutronix.de>
-
-From: Uwe Kleine-K�nig <u.kleine-koenig@pengutronix.de>
-
-A pointer to hp_wmi_bios_setup is passed to the core via
-platform_driver_register and so the function must not disappear when the
-.init sections are discarded. Otherwise (if also having HOTPLUG=y)
-unbinding and binding a device to the driver via sysfs will result in an
-oops as does a device being registered late.
-
-An alternative to this patch is using platform_driver_probe instead of
-platform_driver_register plus removing the pointer to the probe function
-from the struct platform_driver.
-
-Signed-off-by: Uwe Kleine-K�nig <u.kleine-koenig@pengutronix.de>
-Cc: Frans Pop <elendil@planet.nl>
-Cc: Larry Finger <Larry.Finger@lwfinger.net>
-Cc: Len Brown <lenb@kernel.org>
-Cc: Helge Deller <deller@gmx.de>
-Cc: Andrew Morton <akpm@linux-foundation.org>
-Acked-by: Matthew Garrett <mjg@redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/platform/x86/hp-wmi.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/drivers/platform/x86/hp-wmi.c
-+++ b/drivers/platform/x86/hp-wmi.c
-@@ -57,7 +57,7 @@ enum hp_wmi_radio {
- HPWMI_WWAN = 2,
- };
-
--static int __init hp_wmi_bios_setup(struct platform_device *device);
-+static int __devinit hp_wmi_bios_setup(struct platform_device *device);
- static int __exit hp_wmi_bios_remove(struct platform_device *device);
- static int hp_wmi_resume_handler(struct device *device);
-
-@@ -447,7 +447,7 @@ static void cleanup_sysfs(struct platfor
- device_remove_file(&device->dev, &dev_attr_tablet);
- }
-
--static int __init hp_wmi_bios_setup(struct platform_device *device)
-+static int __devinit hp_wmi_bios_setup(struct platform_device *device)
- {
- int err;
- int wireless = hp_wmi_perform_query(HPWMI_WIRELESS_QUERY, 0, 0);
diff --git a/series b/series
index 06c952954d1e2c..9ddf9108688a7b 100644
--- a/series
+++ b/series
@@ -1,7 +1,6 @@
# My specific stuff, at the top to make it easier to work stuff below.
gregkh/gkh-version.patch
-
#####################################################################
# Stuff to be merged for 2.6.33
#####################################################################
@@ -31,73 +30,8 @@ gregkh/gkh-version.patch
#############################################
# Driver core patches for after 2.6.33 is out
#############################################
-driver-core/driver-core-fix-race-condition-in-get_device_parent.patch
-driver-core/kobject-example-spelling-fixes.patch
-driver-core/kset-example-spelling-fixes.patch
-driver-core/driver-core-add-platform_create_bundle-helper.patch
-driver-core/driver-core-make-platform_device_id-table-const.patch
-driver-core/sysdev-pass-attribute-in-sysdev_class-attributes-show-store.patch
-driver-core/sysdev-convert-node-driver-class-attributes-to-be-data-driven.patch
-driver-core/sysdev-convert-cpu-driver-sysdev-class-attributes.patch
-driver-core/sysfs-add-sysfs_add-remove_files-utility-functions.patch
-driver-core/sysfs-add-attribute-array-to-sysdev-classes.patch
-driver-core/sysdev-convert-node-driver.patch
-driver-core/sysdev-use-sysdev_class-attribute-arrays-in-node-driver.patch
-driver-core/sysdev-add-sysdev_create-remove_files.patch
-driver-core/sysdev-fix-type-of-sysdev-class-attribute-in-memory-driver.patch
-driver-core/sysdev-fix-missing-s390-conversion.patch
-driver-core/sysdev-add-attribute-argument-to-class_attribute-show-store.patch
-driver-core/driver-core-add-class_attr_string-for-simple-read-only-string.patch
-driver-core/driver-core-convert-some-drivers-to-class_attr_string.patch
-driver-core/driver-core-devtmpfs-reset-inode-permissions-before-unlinking.patch
-driver-core/driver-core-devtmpfs-remove-experimental-and-enable-it-by-default.patch
-driver-core/driver-core-disable-sbin-hotplug-by-default.patch
-driver-core/driver-core-require-valid-action-string-in-uevent-trigger.patch
-driver-core/sysfs-cache-the-last-sysfs_dirent-to-improve-readdir-scalability-v2.patch
-driver-core/driver-core-firmware_class-remove-base.h-header-inclusion.patch
-driver-core/kobject-constify-struct-kset_uevent_ops.patch
-driver-core/howto-updates-on-subsystem-trees-patchwork-next-vs.-mm.patch
-driver-core/sysdev-fix-up-the-probe-release-attributes.patch
-driver-core/driver-core-constify-struct-sysfs_ops-in-struct-kobj_type.patch
-driver-core/driver-core-make-struct-platform_driver.id_table-const.patch
-
-driver-core/platform-drivers-move-probe-to-.devinit.text-in-arch-arm.patch
-driver-core/platform-drivers-move-probe-to-.devinit.text-in-drivers-scsi.patch
-driver-core/platform-drivers-move-probe-to-.devinit.text-in-drivers-video.patch
-driver-core/x86-move-hp-wmi-s-probe-function-to-.devinit.text.patch
-driver-core/i2c-move-i2c_omap-s-probe-function-to-.devinit.text.patch
-driver-core/w1-move-omap_hdq-s-probe-function-to-.devinit.text.patch
-driver-core/media-move-omap24xxcam-s-probe-function-to-.devinit.text.patch
-driver-core/auxdisplay-move-cfag12864bfb-s-probe-function-to-.devinit.text.patch
-driver-core/uio-add-a-driver-for-hilscher-netx-based-fieldbus-cards.patch
-driver-core/uio-minor-kconfig-fixes.patch
-driver-core/uio-remove-smx-cryptengine-driver.patch
-driver-core/driver-core-fix-first-line-of-kernel-doc-for-a-few-functions.patch
-driver-core/sysfs-remove-sysfs_get-put_active_two.patch
-driver-core/sysfs-only-take-active-references-on-attributes.patch
-driver-core/sysfs-use-one-lockdep-class-per-sysfs-attribute.patch
-driver-core/sysfs-use-sysfs_attr_init-and-sysfs_bin_attr_init-on-dynamic-attributes.patch
-driver-core/sysfs-document-sysfs_attr_init-and-sysfs_bin_attr_init.patch
-driver-core/sysfs-use-sysfs_attr_init-and-sysfs_bin_attr_init-on-module-dynamic-attributes.patch
-driver-core/sysfs-windfarm-init-sysfs-attributes.patch
-driver-core/sysfs-serialize-updates-to-the-vfs-inode.patch
-driver-core/sysfs-pack-sysfs_dirent-more-tightly.patch
-driver-core/sysfs-implement-sysfs_rename_link.patch
-driver-core/driver-core-use-sysfs_rename_link-in-device_rename.patch
-driver-core/sysfs-pass-super_block-to-sysfs_get_inode.patch
-driver-core/sysfs-kill-unused-sysfs_sb-variable.patch
-driver-core/sysfs-fix-for-thinko-with-sysfs_bin_attr_init.patch
-
-driver-core/driver-core-create-lock-unlock-functions-for-struct-device.patch
driver-core/drivers-base-convert-sema.patch
-# sent to Lennart 01-15-2010
-driver-core/msi-laptop-support-standard-ec-66-62-command-on-msi-notebook-and-nebook.patch
-driver-core/msi-laptop-add-threeg-sysfs-file-for-support-query-3g-state-by-standard-66-62-ec-command.patch
-driver-core/msi-laptop-support-some-msi-3g-netbook-that-is-need-load-scm.patch
-driver-core/msi-laptop-add-resume-method-for-set-the-scm-load-again.patch
-driver-core/msi-laptop-detect-3g-device-exists-by-standard-ec-command.patch
-driver-core/msi-laptop-depends-on-rfkill.patch
#####################################
# TTY patches for after 2.6.33 is out