Merge tag 'driver-core-3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
Pull driver core merge from Greg Kroah-Hartman: "Here is the big driver core update for 3.7-rc1. A number of firmware_class.c updates (as you saw a month or so ago), and some hyper-v updates and some printk fixes as well. All patches that are outside of the drivers/base area have been acked by the respective maintainers, and have all been in the linux-next tree for a while. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>" * tag 'driver-core-3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (95 commits) memory: tegra{20,30}-mc: Fix reading incorrect register in mc_readl() device.h: Add missing inline to #ifndef CONFIG_PRINTK dev_vprintk_emit memory: emif: Add ifdef CONFIG_DEBUG_FS guard for emif_debugfs_[init|exit] Documentation: Fixes some translation error in Documentation/zh_CN/gpio.txt Documentation: Remove 3 byte redundant code at the head of the Documentation/zh_CN/arm/booting Documentation: Chinese translation of Documentation/video4linux/omap3isp.txt device and dynamic_debug: Use dev_vprintk_emit and dev_printk_emit dev: Add dev_vprintk_emit and dev_printk_emit netdev_printk/netif_printk: Remove a superfluous logging colon netdev_printk/dynamic_netdev_dbg: Directly call printk_emit dev_dbg/dynamic_debug: Update to use printk_emit, optimize stack driver-core: Shut up dev_dbg_reatelimited() without DEBUG tools/hv: Parse /etc/os-release tools/hv: Check for read/write errors tools/hv: Fix exit() error code tools/hv: Fix file handle leak Tools: hv: Implement the KVP verb - KVP_OP_GET_IP_INFO Tools: hv: Rename the function kvp_get_ip_address() Tools: hv: Implement the KVP verb - KVP_OP_SET_IP_INFO Tools: hv: Add an example script to configure an interface ...
This commit is contained in:
@@ -521,25 +521,25 @@ static char *dynamic_emit_prefix(const struct _ddebug *desc, char *buf)
|
||||
int pos_after_tid;
|
||||
int pos = 0;
|
||||
|
||||
pos += snprintf(buf + pos, remaining(pos), "%s", KERN_DEBUG);
|
||||
*buf = '\0';
|
||||
|
||||
if (desc->flags & _DPRINTK_FLAGS_INCL_TID) {
|
||||
if (in_interrupt())
|
||||
pos += snprintf(buf + pos, remaining(pos), "%s ",
|
||||
"<intr>");
|
||||
pos += snprintf(buf + pos, remaining(pos), "<intr> ");
|
||||
else
|
||||
pos += snprintf(buf + pos, remaining(pos), "[%d] ",
|
||||
task_pid_vnr(current));
|
||||
task_pid_vnr(current));
|
||||
}
|
||||
pos_after_tid = pos;
|
||||
if (desc->flags & _DPRINTK_FLAGS_INCL_MODNAME)
|
||||
pos += snprintf(buf + pos, remaining(pos), "%s:",
|
||||
desc->modname);
|
||||
desc->modname);
|
||||
if (desc->flags & _DPRINTK_FLAGS_INCL_FUNCNAME)
|
||||
pos += snprintf(buf + pos, remaining(pos), "%s:",
|
||||
desc->function);
|
||||
desc->function);
|
||||
if (desc->flags & _DPRINTK_FLAGS_INCL_LINENO)
|
||||
pos += snprintf(buf + pos, remaining(pos), "%d:",
|
||||
desc->lineno);
|
||||
desc->lineno);
|
||||
if (pos - pos_after_tid)
|
||||
pos += snprintf(buf + pos, remaining(pos), " ");
|
||||
if (pos >= PREFIX_SIZE)
|
||||
@@ -559,9 +559,13 @@ int __dynamic_pr_debug(struct _ddebug *descriptor, const char *fmt, ...)
|
||||
BUG_ON(!fmt);
|
||||
|
||||
va_start(args, fmt);
|
||||
|
||||
vaf.fmt = fmt;
|
||||
vaf.va = &args;
|
||||
res = printk("%s%pV", dynamic_emit_prefix(descriptor, buf), &vaf);
|
||||
|
||||
res = printk(KERN_DEBUG "%s%pV",
|
||||
dynamic_emit_prefix(descriptor, buf), &vaf);
|
||||
|
||||
va_end(args);
|
||||
|
||||
return res;
|
||||
@@ -574,15 +578,26 @@ int __dynamic_dev_dbg(struct _ddebug *descriptor,
|
||||
struct va_format vaf;
|
||||
va_list args;
|
||||
int res;
|
||||
char buf[PREFIX_SIZE];
|
||||
|
||||
BUG_ON(!descriptor);
|
||||
BUG_ON(!fmt);
|
||||
|
||||
va_start(args, fmt);
|
||||
|
||||
vaf.fmt = fmt;
|
||||
vaf.va = &args;
|
||||
res = __dev_printk(dynamic_emit_prefix(descriptor, buf), dev, &vaf);
|
||||
|
||||
if (!dev) {
|
||||
res = printk(KERN_DEBUG "(NULL device *): %pV", &vaf);
|
||||
} else {
|
||||
char buf[PREFIX_SIZE];
|
||||
|
||||
res = dev_printk_emit(7, dev, "%s%s %s: %pV",
|
||||
dynamic_emit_prefix(descriptor, buf),
|
||||
dev_driver_string(dev), dev_name(dev),
|
||||
&vaf);
|
||||
}
|
||||
|
||||
va_end(args);
|
||||
|
||||
return res;
|
||||
@@ -592,20 +607,35 @@ EXPORT_SYMBOL(__dynamic_dev_dbg);
|
||||
#ifdef CONFIG_NET
|
||||
|
||||
int __dynamic_netdev_dbg(struct _ddebug *descriptor,
|
||||
const struct net_device *dev, const char *fmt, ...)
|
||||
const struct net_device *dev, const char *fmt, ...)
|
||||
{
|
||||
struct va_format vaf;
|
||||
va_list args;
|
||||
int res;
|
||||
char buf[PREFIX_SIZE];
|
||||
|
||||
BUG_ON(!descriptor);
|
||||
BUG_ON(!fmt);
|
||||
|
||||
va_start(args, fmt);
|
||||
|
||||
vaf.fmt = fmt;
|
||||
vaf.va = &args;
|
||||
res = __netdev_printk(dynamic_emit_prefix(descriptor, buf), dev, &vaf);
|
||||
|
||||
if (dev && dev->dev.parent) {
|
||||
char buf[PREFIX_SIZE];
|
||||
|
||||
res = dev_printk_emit(7, dev->dev.parent,
|
||||
"%s%s %s %s: %pV",
|
||||
dynamic_emit_prefix(descriptor, buf),
|
||||
dev_driver_string(dev->dev.parent),
|
||||
dev_name(dev->dev.parent),
|
||||
netdev_name(dev), &vaf);
|
||||
} else if (dev) {
|
||||
res = printk(KERN_DEBUG "%s: %pV", netdev_name(dev), &vaf);
|
||||
} else {
|
||||
res = printk(KERN_DEBUG "(NULL net_device): %pV", &vaf);
|
||||
}
|
||||
|
||||
va_end(args);
|
||||
|
||||
return res;
|
||||
|
Reference in New Issue
Block a user