projects/linux·commit 0c93ea40

Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6

0c93ea40 · Linus Torvalds <[email protected]> · 2009-03-26 11:17:04 -07:00

* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6: (61 commits)
  Dynamic debug: fix pr_fmt() build error
  Dynamic debug: allow simple quoting of words
  dynamic debug: update docs
  dynamic debug: combine dprintk and dynamic printk
  sysfs: fix some bin_vm_ops errors
  kobject: don't block for each kobject_uevent
  sysfs: only allow one scheduled removal callback per kobj
  Driver core: Fix device_move() vs. dpm list ordering, v2
  Driver core: some cleanup on drivers/base/sys.c
  Driver core: implement uevent suppress in kobject
  vcs: hook sysfs devices into object lifetime instead of "binding"
  driver core: fix passing platform_data
  driver core: move platform_data into platform_device
  sysfs: don't block indefinitely for unmapped files.
  driver core: move knode_bus into private structure
  driver core: move knode_driver into private structure
  driver core: move klist_children into private structure
  driver core: create a private portion of struct device
  driver core: remove polling for driver_probe_done(v5)
  sysfs: reference sysfs_dirent from sysfs inodes
  ...

Fixed conflicts in drivers/sh/maple/maple.c manually
Commit
0c93ea4064a209cdc36de8a9a3003d43d08f46f7
Parents
bc2fd381 · e6e66b02

Merge commit. Changes below are compared with the first parent: bc2fd381.

Changes

149 files changed · +2664 −1170

FileStatusAddDelContent
Documentation/DocBook/uio-howto.tmplmodified+25−4View file
Documentation/dynamic-debug-howto.txtadded+240−0View file
Documentation/kernel-parameters.txtmodified+0−5View file
arch/mips/basler/excite/excite_iodev.cmodified+13−14View file
arch/powerpc/platforms/ps3/system-bus.cmodified+2−2View file
drivers/acpi/dock.cmodified+1−1View file
drivers/amba/bus.cmodified+2−2View file
drivers/base/base.hmodified+31−0View file
drivers/base/bus.cmodified+30−14View file
drivers/base/core.cmodified+71−37View file
drivers/base/dd.cmodified+17−23View file
drivers/base/driver.cmodified+12−3View file
drivers/base/firmware_class.cmodified+2−2View file
drivers/base/platform.cmodified+47−13View file
drivers/base/power/main.cmodified+44−0View file
drivers/base/power/power.hmodified+8−0View file
drivers/base/sys.cmodified+27−27View file
drivers/block/floppy.cmodified+1−2View file
drivers/char/tpm/tpm_atmel.cmodified+19−9View file
drivers/char/tpm/tpm_tis.cmodified+19−9View file
drivers/char/vc_screen.cmodified+8−8View file
drivers/char/vt.cmodified+3−2View file
drivers/dio/dio.cmodified+2−2View file
drivers/dma/dw_dmac.cmodified+1−1View file
drivers/edac/cell_edac.cmodified+1−1View file
drivers/edac/mpc85xx_edac.cmodified+1−1View file
drivers/edac/mv64x60_edac.cmodified+4−4View file
drivers/eisa/eisa-bus.cmodified+2−2View file
drivers/gpio/bt8xxgpio.cmodified+1−1View file
drivers/gpu/drm/drm_sysfs.cmodified+2−2View file
drivers/i2c/i2c-core.cmodified+1−1View file
drivers/ide/au1xxx-ide.cmodified+18−18View file
drivers/isdn/gigaset/ser-gigaset.cmodified+1−2View file
drivers/mca/mca-bus.cmodified+2−2View file
drivers/media/radio/radio-tea5764.cmodified+2−1View file
drivers/media/video/v4l2-device.cmodified+1−1View file
drivers/mfd/mcp-core.cmodified+1−1View file
drivers/mfd/ucb1x00-core.cmodified+1−1View file
drivers/mmc/host/atmel-mci.cmodified+1−1View file
drivers/mmc/host/of_mmc_spi.cmodified+1−1View file
drivers/mtd/maps/pxa2xx-flash.cmodified+19−18View file
drivers/mtd/nand/excite_nandflash.cmodified+13−12View file
drivers/mtd/nand/ndfc.cmodified+1−1View file
drivers/mtd/onenand/generic.cmodified+13−13View file
drivers/net/arm/ks8695net.cmodified+1−1View file
drivers/net/au1000_eth.cmodified+4−4View file
drivers/net/bfin_mac.cmodified+6−6View file
drivers/net/bmac.cmodified+1−1View file
drivers/net/cpmac.cmodified+1−1View file
drivers/net/declance.cmodified+3−3View file
drivers/net/depca.cmodified+3−3View file
drivers/net/ehea/ehea_main.cmodified+1−1View file
drivers/net/jazzsonic.cmodified+4−2View file
drivers/net/macb.cmodified+5−5View file
drivers/net/macsonic.cmodified+8−7View file
drivers/net/mipsnet.cmodified+14−12View file
drivers/net/mv643xx_eth.cmodified+1−1View file
drivers/net/sb1250-mac.cmodified+5−5View file
drivers/net/smc911x.cmodified+1−1View file
drivers/net/smc91x.cmodified+1−1View file
drivers/net/smsc911x.cmodified+4−3View file
drivers/net/smsc9420.cmodified+2−2View file
drivers/net/tc35815.cmodified+2−2View file
drivers/net/wimax/i2400m/driver.cmodified+1−1View file
drivers/net/wimax/i2400m/usb-notif.cmodified+1−1View file
drivers/net/xtsonic.cmodified+1−1View file
drivers/pci/hotplug/cpqphp_sysfs.cmodified+2−1View file
drivers/pcmcia/au1000_generic.cmodified+24−13View file
drivers/pcmcia/i82365.cmodified+20−8View file
drivers/pcmcia/m32r_cfc.cmodified+21−9View file
drivers/pcmcia/m32r_pcc.cmodified+21−9View file
drivers/pcmcia/rsrc_mgr.cmodified+1−1View file
drivers/pcmcia/sa1100_generic.cmodified+28−10View file
drivers/pcmcia/tcic.cmodified+21−9View file
drivers/pcmcia/vrc4171_card.cmodified+24−10View file
drivers/rapidio/rio-driver.cmodified+1−1View file
drivers/rtc/rtc-at91sam9.cmodified+2−2View file
drivers/rtc/rtc-omap.cmodified+2−2View file
drivers/rtc/rtc-twl4030.cmodified+1−1View file
drivers/s390/cio/ccwgroup.cmodified+3−2View file
drivers/s390/cio/chsc_sch.cmodified+2−2View file
drivers/s390/cio/css.cmodified+2−2View file
drivers/s390/cio/device.cmodified+7−6View file
drivers/s390/net/qeth_l3_main.cmodified+1−1View file
drivers/scsi/a4000t.cmodified+16−13View file
drivers/scsi/bvme6000_scsi.cmodified+16−13View file
drivers/scsi/mvme16x_scsi.cmodified+16−13View file
drivers/serial/sunzilog.cmodified+2−2View file
drivers/sh/maple/maple.cmodified+0−1View file
drivers/spi/atmel_spi.cmodified+4−4View file
drivers/spi/mpc52xx_psc_spi.cmodified+1−1View file
drivers/spi/omap2_mcspi.cmodified+1−1View file
drivers/spi/omap_uwire.cmodified+6−6View file
drivers/spi/orion_spi.cmodified+1−1View file
drivers/spi/pxa2xx_spi.cmodified+2−2View file
drivers/spi/spi_bfin5xx.cmodified+2−2View file
drivers/spi/spi_gpio.cmodified+1−1View file
drivers/spi/spi_imx.cmodified+3−2View file
drivers/spi/spi_mpc83xx.cmodified+2−2View file
drivers/spi/spi_txx9.cmodified+2−1View file
drivers/tc/tc.cmodified+4−4View file
drivers/uio/Kconfigmodified+18−0View file
drivers/uio/Makefilemodified+1−0View file
drivers/uio/uio.cmodified+24−1View file
drivers/uio/uio_aec.cadded+175−0View file
drivers/usb/gadget/ci13xxx_udc.cmodified+1−1View file
drivers/usb/gadget/imx_udc.cmodified+2−2View file
drivers/usb/host/fhci-dbg.cmodified+1−1View file
drivers/usb/host/fhci-hcd.cmodified+2−2View file
drivers/video/au1100fb.cmodified+16−15View file
drivers/video/au1200fb.cmodified+14−11View file
drivers/video/pmag-ba-fb.cmodified+9−8View file
drivers/video/pmagb-b-fb.cmodified+9−8View file
drivers/video/ps3fb.cmodified+1−1View file
drivers/video/sh_mobile_lcdcfb.cmodified+1−1View file
drivers/video/tmiofb.cmodified+1−1View file
drivers/watchdog/rm9k_wdt.cmodified+12−15View file
drivers/zorro/zorro.cmodified+2−2View file
fs/partitions/check.cmodified+5−5View file
fs/sysfs/bin.cmodified+240−13View file
fs/sysfs/dir.cmodified+31−2View file
fs/sysfs/file.cmodified+23−3View file
fs/sysfs/inode.cmodified+17−0View file
fs/sysfs/mount.cmodified+4−2View file
fs/sysfs/sysfs.hmodified+3−0View file
include/asm-generic/vmlinux.lds.hmodified+6−9View file
include/linux/console.hmodified+2−2View file
include/linux/device.hmodified+25−13View file
include/linux/dynamic_debug.hadded+88−0View file
include/linux/dynamic_printk.hdeleted+0−93View before deletion
include/linux/kernel.hmodified+4−3View file
include/linux/kobject.hmodified+3−0View file
include/linux/mod_devicetable.hmodified+9−0View file
include/linux/platform_device.hmodified+7−0View file
include/linux/pm.hmodified+11−0View file
include/linux/uio_driver.hmodified+4−0View file
include/linux/wimax/debug.hmodified+1−1View file
kernel/module.cmodified+10−15View file
lib/Kconfig.debugmodified+42−32View file
lib/Makefilemodified+1−1View file
lib/dynamic_debug.cadded+769−0View file
lib/dynamic_printk.cdeleted+0−414View before deletion
lib/kobject.cmodified+1−1View file
lib/kobject_uevent.cmodified+8−1View file
net/bluetooth/hci_sysfs.cmodified+1−1View file
net/bluetooth/rfcomm/tty.cmodified+3−2View file
net/netfilter/nf_conntrack_pptp.cmodified+1−1View file
scripts/Makefile.libmodified+1−1View file
scripts/mod/file2alias.cmodified+12−0View file

Only the first 600 diff lines are shown. Download the complete patch.

Documentation/DocBook/uio-howto.tmpl

View file
diff --git a/Documentation/DocBook/uio-howto.tmpl b/Documentation/DocBook/uio-howto.tmpl
index 52e1b79..8f6e3b2 100644
--- a/Documentation/DocBook/uio-howto.tmpl
+++ b/Documentation/DocBook/uio-howto.tmpl
@@ -42,6 +42,13 @@ GPL version 2.
<revhistory>
<revision>
+ <revnumber>0.8</revnumber>
+ <date>2008-12-24</date>
+ <authorinitials>hjk</authorinitials>
+ <revremark>Added name attributes in mem and portio sysfs directories.
+ </revremark>
+ </revision>
+ <revision>
<revnumber>0.7</revnumber>
<date>2008-12-23</date>
<authorinitials>hjk</authorinitials>
@@ -303,12 +310,19 @@ interested in translating it, please email me
appear if the size of the mapping is not 0.
</para>
<para>
- Each <filename>mapX/</filename> directory contains two read-only files
- that show start address and size of the memory:
+ Each <filename>mapX/</filename> directory contains four read-only files
+ that show attributes of the memory:
</para>
<itemizedlist>
<listitem>
<para>
+ <filename>name</filename>: A string identifier for this mapping. This
+ is optional, the string can be empty. Drivers can set this to make it
+ easier for userspace to find the correct mapping.
+ </para>
+</listitem>
+<listitem>
+ <para>
<filename>addr</filename>: The address of memory that can be mapped.
</para>
</listitem>
@@ -366,12 +380,19 @@ offset = N * getpagesize();
<filename>/sys/class/uio/uioX/portio/</filename>.
</para>
<para>
- Each <filename>portX/</filename> directory contains three read-only
- files that show start, size, and type of the port region:
+ Each <filename>portX/</filename> directory contains four read-only
+ files that show name, start, size, and type of the port region:
</para>
<itemizedlist>
<listitem>
<para>
+ <filename>name</filename>: A string identifier for this port region.
+ The string is optional and can be empty. Drivers can set it to make it
+ easier for userspace to find a certain port region.
+ </para>
+</listitem>
+<listitem>
+ <para>
<filename>start</filename>: The first port of this region.
</para>
</listitem>

Documentation/dynamic-debug-howto.txt

View file
diff --git a/Documentation/dynamic-debug-howto.txt b/Documentation/dynamic-debug-howto.txt
new file mode 100644
index 0000000..674c566
--- /dev/null
+++ b/Documentation/dynamic-debug-howto.txt
@@ -0,0 +1,240 @@
+
+Introduction
+============
+
+This document describes how to use the dynamic debug (ddebug) feature.
+
+Dynamic debug is designed to allow you to dynamically enable/disable kernel
+code to obtain additional kernel information. Currently, if
+CONFIG_DYNAMIC_DEBUG is set, then all pr_debug()/dev_debug() calls can be
+dynamically enabled per-callsite.
+
+Dynamic debug has even more useful features:
+
+ * Simple query language allows turning on and off debugging statements by
+ matching any combination of:
+
+ - source filename
+ - function name
+ - line number (including ranges of line numbers)
+ - module name
+ - format string
+
+ * Provides a debugfs control file: <debugfs>/dynamic_debug/control which can be
+ read to display the complete list of known debug statements, to help guide you
+
+Controlling dynamic debug Behaviour
+===============================
+
+The behaviour of pr_debug()/dev_debug()s are controlled via writing to a
+control file in the 'debugfs' filesystem. Thus, you must first mount the debugfs
+filesystem, in order to make use of this feature. Subsequently, we refer to the
+control file as: <debugfs>/dynamic_debug/control. For example, if you want to
+enable printing from source file 'svcsock.c', line 1603 you simply do:
+
+nullarbor:~ # echo 'file svcsock.c line 1603 +p' >
+ <debugfs>/dynamic_debug/control
+
+If you make a mistake with the syntax, the write will fail thus:
+
+nullarbor:~ # echo 'file svcsock.c wtf 1 +p' >
+ <debugfs>/dynamic_debug/control
+-bash: echo: write error: Invalid argument
+
+Viewing Dynamic Debug Behaviour
+===========================
+
+You can view the currently configured behaviour of all the debug statements
+via:
+
+nullarbor:~ # cat <debugfs>/dynamic_debug/control
+# filename:lineno [module]function flags format
+/usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:323 [svcxprt_rdma]svc_rdma_cleanup - "SVCRDMA Module Removed, deregister RPC RDMA transport\012"
+/usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:341 [svcxprt_rdma]svc_rdma_init - "\011max_inline : %d\012"
+/usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:340 [svcxprt_rdma]svc_rdma_init - "\011sq_depth : %d\012"
+/usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:338 [svcxprt_rdma]svc_rdma_init - "\011max_requests : %d\012"
+...
+
+
+You can also apply standard Unix text manipulation filters to this
+data, e.g.
+
+nullarbor:~ # grep -i rdma <debugfs>/dynamic_debug/control | wc -l
+62
+
+nullarbor:~ # grep -i tcp <debugfs>/dynamic_debug/control | wc -l
+42
+
+Note in particular that the third column shows the enabled behaviour
+flags for each debug statement callsite (see below for definitions of the
+flags). The default value, no extra behaviour enabled, is "-". So
+you can view all the debug statement callsites with any non-default flags:
+
+nullarbor:~ # awk '$3 != "-"' <debugfs>/dynamic_debug/control
+# filename:lineno [module]function flags format
+/usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svcsock.c:1603 [sunrpc]svc_send p "svc_process: st_sendto returned %d\012"
+
+
+Command Language Reference
+==========================
+
+At the lexical level, a command comprises a sequence of words separated
+by whitespace characters. Note that newlines are treated as word
+separators and do *not* end a command or allow multiple commands to
+be done together. So these are all equivalent:
+
+nullarbor:~ # echo -c 'file svcsock.c line 1603 +p' >
+ <debugfs>/dynamic_debug/control
+nullarbor:~ # echo -c ' file svcsock.c line 1603 +p ' >
+ <debugfs>/dynamic_debug/control
+nullarbor:~ # echo -c 'file svcsock.c\nline 1603 +p' >
+ <debugfs>/dynamic_debug/control
+nullarbor:~ # echo -n 'file svcsock.c line 1603 +p' >
+ <debugfs>/dynamic_debug/control
+
+Commands are bounded by a write() system call. If you want to do
+multiple commands you need to do a separate "echo" for each, like:
+
+nullarbor:~ # echo 'file svcsock.c line 1603 +p' > /proc/dprintk ;\
+> echo 'file svcsock.c line 1563 +p' > /proc/dprintk
+
+or even like:
+
+nullarbor:~ # (
+> echo 'file svcsock.c line 1603 +p' ;\
+> echo 'file svcsock.c line 1563 +p' ;\
+> ) > /proc/dprintk
+
+At the syntactical level, a command comprises a sequence of match
+specifications, followed by a flags change specification.
+
+command ::= match-spec* flags-spec
+
+The match-spec's are used to choose a subset of the known dprintk()
+callsites to which to apply the flags-spec. Think of them as a query
+with implicit ANDs between each pair. Note that an empty list of
+match-specs is possible, but is not very useful because it will not
+match any debug statement callsites.
+
+A match specification comprises a keyword, which controls the attribute
+of the callsite to be compared, and a value to compare against. Possible
+keywords are:
+
+match-spec ::= 'func' string |
+ 'file' string |
+ 'module' string |
+ 'format' string |
+ 'line' line-range
+
+line-range ::= lineno |
+ '-'lineno |
+ lineno'-' |
+ lineno'-'lineno
+// Note: line-range cannot contain space, e.g.
+// "1-30" is valid range but "1 - 30" is not.
+
+lineno ::= unsigned-int
+
+The meanings of each keyword are:
+
+func
+ The given string is compared against the function name
+ of each callsite. Example:
+
+ func svc_tcp_accept
+
+file
+ The given string is compared against either the full
+ pathname or the basename of the source file of each
+ callsite. Examples:
+
+ file svcsock.c
+ file /usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svcsock.c
+
+module
+ The given string is compared against the module name
+ of each callsite. The module name is the string as
+ seen in "lsmod", i.e. without the directory or the .ko
+ suffix and with '-' changed to '_'. Examples:
+
+ module sunrpc
+ module nfsd
+
+format
+ The given string is searched for in the dynamic debug format
+ string. Note that the string does not need to match the
+ entire format, only some part. Whitespace and other
+ special characters can be escaped using C octal character
+ escape \ooo notation, e.g. the space character is \040.
+ Alternatively, the string can be enclosed in double quote
+ characters (") or single quote characters (').
+ Examples:
+
+ format svcrdma: // many of the NFS/RDMA server dprintks
+ format readahead // some dprintks in the readahead cache
+ format nfsd:\040SETATTR // one way to match a format with whitespace
+ format "nfsd: SETATTR" // a neater way to match a format with whitespace
+ format 'nfsd: SETATTR' // yet another way to match a format with whitespace
+
+line
+ The given line number or range of line numbers is compared
+ against the line number of each dprintk() callsite. A single
+ line number matches the callsite line number exactly. A
+ range of line numbers matches any callsite between the first
+ and last line number inclusive. An empty first number means
+ the first line in the file, an empty line number means the
+ last number in the file. Examples:
+
+ line 1603 // exactly line 1603
+ line 1600-1605 // the six lines from line 1600 to line 1605
+ line -1605 // the 1605 lines from line 1 to line 1605
+ line 1600- // all lines from line 1600 to the end of the file
+
+The flags specification comprises a change operation followed
+by one or more flag characters. The change operation is one
+of the characters:
+
+-
+ remove the given flags
+
++
+ add the given flags
+
+=
+ set the flags to the given flags
+
+The flags are:
+
+p
+ Causes a printk() message to be emitted to dmesg
+
+Note the regexp ^[-+=][scp]+$ matches a flags specification.
+Note also that there is no convenient syntax to remove all
+the flags at once, you need to use "-psc".
+
+Examples
+========
+
+// enable the message at line 1603 of file svcsock.c
+nullarbor:~ # echo -n 'file svcsock.c line 1603 +p' >
+ <debugfs>/dynamic_debug/control
+
+// enable all the messages in file svcsock.c
+nullarbor:~ # echo -n 'file svcsock.c +p' >
+ <debugfs>/dynamic_debug/control
+
+// enable all the messages in the NFS server module
+nullarbor:~ # echo -n 'module nfsd +p' >
+ <debugfs>/dynamic_debug/control
+
+// enable all 12 messages in the function svc_process()
+nullarbor:~ # echo -n 'func svc_process +p' >
+ <debugfs>/dynamic_debug/control
+
+// disable all 12 messages in the function svc_process()
+nullarbor:~ # echo -n 'func svc_process -p' >
+ <debugfs>/dynamic_debug/control
+
+// enable messages for NFS calls READ, READLINK, READDIR and READDIR+.
+nullarbor:~ # echo -n 'format "nfsd: READ" +p' >
+ <debugfs>/dynamic_debug/control

Documentation/kernel-parameters.txt

View file
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 224263e..1a29ff3 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1826,11 +1826,6 @@ and is between 256 and 4096 characters. It is defined in the file
autoconfiguration.
Ranges are in pairs (memory base and size).
- dynamic_printk Enables pr_debug()/dev_dbg() calls if
- CONFIG_DYNAMIC_PRINTK_DEBUG has been enabled.
- These can also be switched on/off via
- <debugfs>/dynamic_printk/modules
-
print-fatal-signals=
[KNL] debug: print fatal signals
print-fatal-signals=1: print segfault info to

arch/mips/basler/excite/excite_iodev.c

View file
diff --git a/arch/mips/basler/excite/excite_iodev.c b/arch/mips/basler/excite/excite_iodev.c
index a1e3526..dfbfd7e 100644
--- a/arch/mips/basler/excite/excite_iodev.c
+++ b/arch/mips/basler/excite/excite_iodev.c
@@ -33,8 +33,8 @@
static const struct resource *iodev_get_resource(struct platform_device *, const char *, unsigned int);
-static int __init iodev_probe(struct device *);
-static int __exit iodev_remove(struct device *);
+static int __init iodev_probe(struct platform_device *);
+static int __exit iodev_remove(struct platform_device *);
static int iodev_open(struct inode *, struct file *);
static int iodev_release(struct inode *, struct file *);
static ssize_t iodev_read(struct file *, char __user *, size_t s, loff_t *);
@@ -65,13 +65,13 @@ static struct miscdevice miscdev =
.fops = &fops
};
-static struct device_driver iodev_driver =
-{
- .name = (char *) iodev_name,
- .bus = &platform_bus_type,
- .owner = THIS_MODULE,
+static struct platform_driver iodev_driver = {
+ .driver = {
+ .name = iodev_name,
+ .owner = THIS_MODULE,
+ },
.probe = iodev_probe,
- .remove = __exit_p(iodev_remove)
+ .remove = __devexit_p(iodev_remove),
};
@@ -89,11 +89,10 @@ iodev_get_resource(struct platform_device *pdv, const char *name,
/* No hotplugging on the platform bus - use __init */
-static int __init iodev_probe(struct device *dev)
+static int __init iodev_probe(struct platform_device *dev)
{
- struct platform_device * const pdv = to_platform_device(dev);
const struct resource * const ri =
- iodev_get_resource(pdv, IODEV_RESOURCE_IRQ, IORESOURCE_IRQ);
+ iodev_get_resource(dev, IODEV_RESOURCE_IRQ, IORESOURCE_IRQ);
if (unlikely(!ri))
return -ENXIO;
@@ -104,7 +103,7 @@ static int __init iodev_probe(struct device *dev)
-static int __exit iodev_remove(struct device *dev)
+static int __exit iodev_remove(struct platform_device *dev)
{
return misc_deregister(&miscdev);
}
@@ -160,14 +159,14 @@ static irqreturn_t iodev_irqhdl(int irq, void *ctxt)
static int __init iodev_init_module(void)
{
- return driver_register(&iodev_driver);
+ return platform_driver_register(&iodev_driver);
}
static void __exit iodev_cleanup_module(void)
{
- driver_unregister(&iodev_driver);
+ platform_driver_unregister(&iodev_driver);
}
module_init(iodev_init_module);

arch/powerpc/platforms/ps3/system-bus.c

View file
diff --git a/arch/powerpc/platforms/ps3/system-bus.c b/arch/powerpc/platforms/ps3/system-bus.c
index 58311a8..a705fff 100644
--- a/arch/powerpc/platforms/ps3/system-bus.c
+++ b/arch/powerpc/platforms/ps3/system-bus.c
@@ -376,7 +376,7 @@ static int ps3_system_bus_probe(struct device *_dev)
struct ps3_system_bus_driver *drv;
BUG_ON(!dev);
- pr_debug(" -> %s:%d: %s\n", __func__, __LINE__, _dev->bus_id);
+ dev_dbg(_dev, "%s:%d\n", __func__, __LINE__);
drv = ps3_system_bus_dev_to_system_bus_drv(dev);
BUG_ON(!drv);
@@ -398,7 +398,7 @@ static int ps3_system_bus_remove(struct device *_dev)
struct ps3_system_bus_driver *drv;
BUG_ON(!dev);
- pr_debug(" -> %s:%d: %s\n", __func__, __LINE__, _dev->bus_id);
+ dev_dbg(_dev, "%s:%d\n", __func__, __LINE__);
drv = ps3_system_bus_dev_to_system_bus_drv(dev);
BUG_ON(!drv);

drivers/acpi/dock.c

View file
diff --git a/drivers/acpi/dock.c b/drivers/acpi/dock.c
index 35094f2..7af7db1 100644
--- a/drivers/acpi/dock.c
+++ b/drivers/acpi/dock.c
@@ -977,7 +977,7 @@ static int dock_add(acpi_handle handle)
sizeof(struct dock_station *));
/* we want the dock device to send uevents */
- dock_device->dev.uevent_suppress = 0;
+ dev_set_uevent_suppress(&dock_device->dev, 0);
if (is_dock(handle))
dock_station->flags |= DOCK_IS_DOCK;

drivers/amba/bus.c

View file
diff --git a/drivers/amba/bus.c b/drivers/amba/bus.c
index 00c46e0..3d763fd 100644
--- a/drivers/amba/bus.c
+++ b/drivers/amba/bus.c
@@ -210,7 +210,7 @@ int amba_device_register(struct amba_device *dev, struct resource *parent)
dev->dev.release = amba_device_release;
dev->dev.bus = &amba_bustype;
dev->dev.dma_mask = &dev->dma_mask;
- dev->res.name = dev->dev.bus_id;
+ dev->res.name = dev_name(&dev->dev);
if (!dev->dev.coherent_dma_mask && dev->dma_mask)
dev_warn(&dev->dev, "coherent dma mask is unset\n");
@@ -294,7 +294,7 @@ static int amba_find_match(struct device *dev, void *data)
if (d->parent)
r &= d->parent == dev->parent;
if (d->busid)
- r &= strcmp(dev->bus_id, d->busid) == 0;
+ r &= strcmp(dev_name(dev), d->busid) == 0;
if (r) {
get_device(dev);

drivers/base/base.h

View file
diff --git a/drivers/base/base.h b/drivers/base/base.h
index 9f50f1b..ddc9749 100644
--- a/drivers/base/base.h
+++ b/drivers/base/base.h
@@ -63,6 +63,32 @@ struct class_private {
#define to_class(obj) \
container_of(obj, struct class_private, class_subsys.kobj)
+/**
+ * struct device_private - structure to hold the private to the driver core portions of the device structure.
+ *
+ * @klist_children - klist containing all children of this device
+ * @knode_parent - node in sibling list
+ * @knode_driver - node in driver list
+ * @knode_bus - node in bus list
+ * @device - pointer back to the struct class that this structure is
+ * associated with.
+ *
+ * Nothing outside of the driver core should ever touch these fields.
+ */
+struct device_private {
+ struct klist klist_children;
+ struct klist_node knode_parent;
+ struct klist_node knode_driver;
+ struct klist_node knode_bus;
+ struct device *device;
+};
+#define to_device_private_parent(obj) \
+ container_of(obj, struct device_private, knode_parent)
+#define to_device_private_driver(obj) \
+ container_of(obj, struct device_private, knode_driver)
+#define to_device_private_bus(obj) \
+ container_of(obj, struct device_private, knode_bus)
+
/* initialisation functions */
extern int devices_init(void);
extern int buses_init(void);
@@ -86,6 +112,11 @@ extern void bus_remove_driver(struct device_driver *drv);
extern void driver_detach(struct device_driver *drv);
extern int driver_probe_device(struct device_driver *drv, struct device *dev);
+static inline int driver_match_device(struct device_driver *drv,
+ struct device *dev)
+{
+ return drv->bus->match && drv->bus->match(dev, drv);
+}
extern void sysdev_shutdown(void);

drivers/base/bus.c

View file
diff --git a/drivers/base/bus.c b/drivers/base/bus.c
index 83f32b8..dc030f1 100644
--- a/drivers/base/bus.c
+++ b/drivers/base/bus.c
@@ -198,7 +198,7 @@ static ssize_t driver_bind(struct device_driver *drv,
int err = -ENODEV;
dev = bus_find_device_by_name(bus, NULL, buf);
- if (dev && dev->driver == NULL) {
+ if (dev && dev->driver == NULL && driver_match_device(drv, dev)) {
if (dev->parent) /* Needed for USB */
down(&dev->parent->sem);
down(&dev->sem);
@@ -253,7 +253,14 @@ static ssize_t store_drivers_probe(struct bus_type *bus,
static struct device *next_device(struct klist_iter *i)
{
struct klist_node *n = klist_next(i);
- return n ? container_of(n, struct device, knode_bus) : NULL;
+ struct device *dev = NULL;
+ struct device_private *dev_prv;
+
+ if (n) {
+ dev_prv = to_device_private_bus(n);
+ dev = dev_prv->device;
+ }
+ return dev;
}
/**
@@ -286,7 +293,7 @@ int bus_for_each_dev(struct bus_type *bus, struct device *start,
return -EINVAL;
klist_iter_init_node(&bus->p->klist_devices, &i,
- (start ? &start->knode_bus : NULL));
+ (start ? &start->p->knode_bus : NULL));
while ((dev = next_device(&i)) && !error)
error = fn(dev, data);
klist_iter_exit(&i);
@@ -320,7 +327,7 @@ struct device *bus_find_device(struct bus_type *bus,
return NULL;
klist_iter_init_node(&bus->p->klist_devices, &i,
- (start ? &start->knode_bus : NULL));
+ (start ? &start->p->knode_bus : NULL));
while ((dev = next_device(&i)))
if (match(dev, data) && get_device(dev))
break;
@@ -507,7 +514,8 @@ void bus_attach_device(struct device *dev)
ret = device_attach(dev);
WARN_ON(ret < 0);
if (ret >= 0)
- klist_add_tail(&dev->knode_bus, &bus->p->klist_devices);
+ klist_add_tail(&dev->p->knode_bus,
+ &bus->p->klist_devices);
}
}
@@ -528,8 +536,8 @@ void bus_remove_device(struct device *dev)
sysfs_remove_link(&dev->bus->p->devices_kset->kobj,
dev_name(dev));
device_remove_attrs(dev->bus, dev);
- if (klist_node_attached(&dev->knode_bus))
- klist_del(&dev->knode_bus);
+ if (klist_node_attached(&dev->p->knode_bus))
+ klist_del(&dev->p->knode_bus);
pr_debug("bus: '%s': remove device %s\n",
dev->bus->name, dev_name(dev));
@@ -831,14 +839,16 @@ static void bus_remove_attrs(struct bus_type *bus)
static void klist_devices_get(struct klist_node *n)
{
- struct device *dev = container_of(n, struct device, knode_bus);
+ struct device_private *dev_prv = to_device_private_bus(n);
+ struct device *dev = dev_prv->device;
get_device(dev);
}
static void klist_devices_put(struct klist_node *n)
{
- struct device *dev = container_of(n, struct device, knode_bus);
+ struct device_private *dev_prv = to_device_private_bus(n);
+ struct device *dev = dev_prv->device;
put_device(dev);
}
@@ -932,6 +942,7 @@ bus_uevent_fail:
kset_unregister(&bus->p->subsys);
kfree(bus->p);
out:
+ bus->p = NULL;
return retval;
}
EXPORT_SYMBOL_GPL(bus_register);

This diff is incomplete. Download the complete patch.

drivers/base/core.c

View file

This diff is incomplete. Download the complete patch.

drivers/base/dd.c

View file

This diff is incomplete. Download the complete patch.

drivers/base/driver.c

View file

This diff is incomplete. Download the complete patch.

drivers/base/firmware_class.c

View file

This diff is incomplete. Download the complete patch.

drivers/base/platform.c

View file

This diff is incomplete. Download the complete patch.

drivers/base/power/main.c

View file

This diff is incomplete. Download the complete patch.

drivers/base/power/power.h

View file

This diff is incomplete. Download the complete patch.

drivers/base/sys.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/floppy.c

View file

This diff is incomplete. Download the complete patch.

drivers/char/tpm/tpm_atmel.c

View file

This diff is incomplete. Download the complete patch.

drivers/char/tpm/tpm_tis.c

View file

This diff is incomplete. Download the complete patch.

drivers/char/vc_screen.c

View file

This diff is incomplete. Download the complete patch.

drivers/char/vt.c

View file

This diff is incomplete. Download the complete patch.

drivers/dio/dio.c

View file

This diff is incomplete. Download the complete patch.

drivers/dma/dw_dmac.c

View file

This diff is incomplete. Download the complete patch.

drivers/edac/cell_edac.c

View file

This diff is incomplete. Download the complete patch.

drivers/edac/mpc85xx_edac.c

View file

This diff is incomplete. Download the complete patch.

drivers/edac/mv64x60_edac.c

View file

This diff is incomplete. Download the complete patch.

drivers/eisa/eisa-bus.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpio/bt8xxgpio.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/drm_sysfs.c

View file

This diff is incomplete. Download the complete patch.

drivers/i2c/i2c-core.c

View file

This diff is incomplete. Download the complete patch.

drivers/ide/au1xxx-ide.c

View file

This diff is incomplete. Download the complete patch.

drivers/isdn/gigaset/ser-gigaset.c

View file

This diff is incomplete. Download the complete patch.

drivers/mca/mca-bus.c

View file

This diff is incomplete. Download the complete patch.

drivers/media/radio/radio-tea5764.c

View file

This diff is incomplete. Download the complete patch.

drivers/media/video/v4l2-device.c

View file

This diff is incomplete. Download the complete patch.

drivers/mfd/mcp-core.c

View file

This diff is incomplete. Download the complete patch.

drivers/mfd/ucb1x00-core.c

View file

This diff is incomplete. Download the complete patch.

drivers/mmc/host/atmel-mci.c

View file

This diff is incomplete. Download the complete patch.

drivers/mmc/host/of_mmc_spi.c

View file

This diff is incomplete. Download the complete patch.

drivers/mtd/maps/pxa2xx-flash.c

View file

This diff is incomplete. Download the complete patch.

drivers/mtd/nand/excite_nandflash.c

View file

This diff is incomplete. Download the complete patch.

drivers/mtd/nand/ndfc.c

View file

This diff is incomplete. Download the complete patch.

drivers/mtd/onenand/generic.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/arm/ks8695net.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/au1000_eth.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/bfin_mac.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/bmac.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/cpmac.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/declance.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/depca.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ehea/ehea_main.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/jazzsonic.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/macb.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/macsonic.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/mipsnet.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/mv643xx_eth.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/sb1250-mac.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/smc911x.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/smc91x.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/smsc911x.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/smsc9420.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/tc35815.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/wimax/i2400m/driver.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/wimax/i2400m/usb-notif.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/xtsonic.c

View file

This diff is incomplete. Download the complete patch.

drivers/pci/hotplug/cpqphp_sysfs.c

View file

This diff is incomplete. Download the complete patch.

drivers/pcmcia/au1000_generic.c

View file

This diff is incomplete. Download the complete patch.

drivers/pcmcia/i82365.c

View file

This diff is incomplete. Download the complete patch.

drivers/pcmcia/m32r_cfc.c

View file

This diff is incomplete. Download the complete patch.

drivers/pcmcia/m32r_pcc.c

View file

This diff is incomplete. Download the complete patch.

drivers/pcmcia/rsrc_mgr.c

View file

This diff is incomplete. Download the complete patch.

drivers/pcmcia/sa1100_generic.c

View file

This diff is incomplete. Download the complete patch.

drivers/pcmcia/tcic.c

View file

This diff is incomplete. Download the complete patch.

drivers/pcmcia/vrc4171_card.c

View file

This diff is incomplete. Download the complete patch.

drivers/rapidio/rio-driver.c

View file

This diff is incomplete. Download the complete patch.

drivers/rtc/rtc-at91sam9.c

View file

This diff is incomplete. Download the complete patch.

drivers/rtc/rtc-omap.c

View file

This diff is incomplete. Download the complete patch.

drivers/rtc/rtc-twl4030.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/cio/ccwgroup.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/cio/chsc_sch.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/cio/css.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/cio/device.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/net/qeth_l3_main.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/a4000t.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/bvme6000_scsi.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/mvme16x_scsi.c

View file

This diff is incomplete. Download the complete patch.

drivers/serial/sunzilog.c

View file

This diff is incomplete. Download the complete patch.

drivers/sh/maple/maple.c

View file

This diff is incomplete. Download the complete patch.

drivers/spi/atmel_spi.c

View file

This diff is incomplete. Download the complete patch.

drivers/spi/mpc52xx_psc_spi.c

View file

This diff is incomplete. Download the complete patch.

drivers/spi/omap2_mcspi.c

View file

This diff is incomplete. Download the complete patch.

drivers/spi/omap_uwire.c

View file

This diff is incomplete. Download the complete patch.

drivers/spi/orion_spi.c

View file

This diff is incomplete. Download the complete patch.

drivers/spi/pxa2xx_spi.c

View file

This diff is incomplete. Download the complete patch.

drivers/spi/spi_bfin5xx.c

View file

This diff is incomplete. Download the complete patch.

drivers/spi/spi_gpio.c

View file

This diff is incomplete. Download the complete patch.

drivers/spi/spi_imx.c

View file

This diff is incomplete. Download the complete patch.

drivers/spi/spi_mpc83xx.c

View file

This diff is incomplete. Download the complete patch.

drivers/spi/spi_txx9.c

View file

This diff is incomplete. Download the complete patch.

drivers/tc/tc.c

View file

This diff is incomplete. Download the complete patch.

drivers/uio/Kconfig

View file

This diff is incomplete. Download the complete patch.

drivers/uio/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/uio/uio.c

View file

This diff is incomplete. Download the complete patch.

drivers/uio/uio_aec.c

View file

This diff is incomplete. Download the complete patch.

drivers/usb/gadget/ci13xxx_udc.c

View file

This diff is incomplete. Download the complete patch.

drivers/usb/gadget/imx_udc.c

View file

This diff is incomplete. Download the complete patch.

drivers/usb/host/fhci-dbg.c

View file

This diff is incomplete. Download the complete patch.

drivers/usb/host/fhci-hcd.c

View file

This diff is incomplete. Download the complete patch.

drivers/video/au1100fb.c

View file

This diff is incomplete. Download the complete patch.

drivers/video/au1200fb.c

View file

This diff is incomplete. Download the complete patch.

drivers/video/pmag-ba-fb.c

View file

This diff is incomplete. Download the complete patch.

drivers/video/pmagb-b-fb.c

View file

This diff is incomplete. Download the complete patch.

drivers/video/ps3fb.c

View file

This diff is incomplete. Download the complete patch.

drivers/video/sh_mobile_lcdcfb.c

View file

This diff is incomplete. Download the complete patch.

drivers/video/tmiofb.c

View file

This diff is incomplete. Download the complete patch.

drivers/watchdog/rm9k_wdt.c

View file

This diff is incomplete. Download the complete patch.

drivers/zorro/zorro.c

View file

This diff is incomplete. Download the complete patch.

fs/partitions/check.c

View file

This diff is incomplete. Download the complete patch.

fs/sysfs/bin.c

View file

This diff is incomplete. Download the complete patch.

fs/sysfs/dir.c

View file

This diff is incomplete. Download the complete patch.

fs/sysfs/file.c

View file

This diff is incomplete. Download the complete patch.

fs/sysfs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/sysfs/mount.c

View file

This diff is incomplete. Download the complete patch.

fs/sysfs/sysfs.h

View file

This diff is incomplete. Download the complete patch.

include/asm-generic/vmlinux.lds.h

View file

This diff is incomplete. Download the complete patch.

include/linux/console.h

View file

This diff is incomplete. Download the complete patch.

include/linux/device.h

View file

This diff is incomplete. Download the complete patch.

include/linux/dynamic_debug.h

View file

This diff is incomplete. Download the complete patch.

include/linux/dynamic_printk.h

View before deletion

This diff is incomplete. Download the complete patch.

include/linux/kernel.h

View file

This diff is incomplete. Download the complete patch.

include/linux/kobject.h

View file

This diff is incomplete. Download the complete patch.

include/linux/mod_devicetable.h

View file

This diff is incomplete. Download the complete patch.

include/linux/platform_device.h

View file

This diff is incomplete. Download the complete patch.

include/linux/pm.h

View file

This diff is incomplete. Download the complete patch.

include/linux/uio_driver.h

View file

This diff is incomplete. Download the complete patch.

include/linux/wimax/debug.h

View file

This diff is incomplete. Download the complete patch.

kernel/module.c

View file

This diff is incomplete. Download the complete patch.

lib/Kconfig.debug

View file

This diff is incomplete. Download the complete patch.

lib/Makefile

View file

This diff is incomplete. Download the complete patch.

lib/dynamic_debug.c

View file

This diff is incomplete. Download the complete patch.

lib/dynamic_printk.c

View before deletion

This diff is incomplete. Download the complete patch.

lib/kobject.c

View file

This diff is incomplete. Download the complete patch.

lib/kobject_uevent.c

View file

This diff is incomplete. Download the complete patch.

net/bluetooth/hci_sysfs.c

View file

This diff is incomplete. Download the complete patch.

net/bluetooth/rfcomm/tty.c

View file

This diff is incomplete. Download the complete patch.

net/netfilter/nf_conntrack_pptp.c

View file

This diff is incomplete. Download the complete patch.

scripts/Makefile.lib

View file

This diff is incomplete. Download the complete patch.

scripts/mod/file2alias.c

View file

This diff is incomplete. Download the complete patch.