Merge commit 'v2.6.30-rc5' into core/iommu
Merge reason: core/iommu was on an .30-rc1 base, update it to .30-rc5 to refresh. Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
@@ -440,7 +440,7 @@ config LOCKDEP
|
||||
bool
|
||||
depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
|
||||
select STACKTRACE
|
||||
select FRAME_POINTER if !X86 && !MIPS && !PPC && !ARM_UNWIND
|
||||
select FRAME_POINTER if !X86 && !MIPS && !PPC && !ARM_UNWIND && !S390
|
||||
select KALLSYMS
|
||||
select KALLSYMS_ALL
|
||||
|
||||
@@ -620,7 +620,7 @@ config ARCH_WANT_FRAME_POINTERS
|
||||
config FRAME_POINTER
|
||||
bool "Compile the kernel with frame pointers"
|
||||
depends on DEBUG_KERNEL && \
|
||||
(CRIS || M68K || M68KNOMMU || FRV || UML || S390 || \
|
||||
(CRIS || M68K || M68KNOMMU || FRV || UML || \
|
||||
AVR32 || SUPERH || BLACKFIN || MN10300) || \
|
||||
ARCH_WANT_FRAME_POINTERS
|
||||
default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS
|
||||
@@ -809,13 +809,13 @@ config FAULT_INJECTION_STACKTRACE_FILTER
|
||||
depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT
|
||||
depends on !X86_64
|
||||
select STACKTRACE
|
||||
select FRAME_POINTER if !PPC
|
||||
select FRAME_POINTER if !PPC && !S390
|
||||
help
|
||||
Provide stacktrace filter for fault-injection capabilities
|
||||
|
||||
config LATENCYTOP
|
||||
bool "Latency measuring infrastructure"
|
||||
select FRAME_POINTER if !MIPS && !PPC
|
||||
select FRAME_POINTER if !MIPS && !PPC && !S390
|
||||
select KALLSYMS
|
||||
select KALLSYMS_ALL
|
||||
select STACKTRACE
|
||||
|
@@ -38,7 +38,7 @@ lib-$(CONFIG_RWSEM_GENERIC_SPINLOCK) += rwsem-spinlock.o
|
||||
lib-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem.o
|
||||
lib-$(CONFIG_GENERIC_FIND_FIRST_BIT) += find_next_bit.o
|
||||
lib-$(CONFIG_GENERIC_FIND_NEXT_BIT) += find_next_bit.o
|
||||
lib-$(CONFIG_GENERIC_FIND_LAST_BIT) += find_last_bit.o
|
||||
obj-$(CONFIG_GENERIC_FIND_LAST_BIT) += find_last_bit.o
|
||||
obj-$(CONFIG_GENERIC_HWEIGHT) += hweight.o
|
||||
obj-$(CONFIG_LOCK_KERNEL) += kernel_lock.o
|
||||
obj-$(CONFIG_DEBUG_PREEMPT) += smp_processor_id.o
|
||||
|
@@ -36,7 +36,7 @@ int debug_locks_silent;
|
||||
*/
|
||||
int debug_locks_off(void)
|
||||
{
|
||||
if (xchg(&debug_locks, 0)) {
|
||||
if (__debug_locks_off()) {
|
||||
if (!debug_locks_silent) {
|
||||
oops_in_progress = 1;
|
||||
console_verbose();
|
||||
|
@@ -458,60 +458,9 @@ out_err:
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
static int device_dma_allocations(struct device *dev)
|
||||
{
|
||||
struct dma_debug_entry *entry;
|
||||
unsigned long flags;
|
||||
int count = 0, i;
|
||||
|
||||
for (i = 0; i < HASH_SIZE; ++i) {
|
||||
spin_lock_irqsave(&dma_entry_hash[i].lock, flags);
|
||||
list_for_each_entry(entry, &dma_entry_hash[i].list, list) {
|
||||
if (entry->dev == dev)
|
||||
count += 1;
|
||||
}
|
||||
spin_unlock_irqrestore(&dma_entry_hash[i].lock, flags);
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
static int dma_debug_device_change(struct notifier_block *nb,
|
||||
unsigned long action, void *data)
|
||||
{
|
||||
struct device *dev = data;
|
||||
int count;
|
||||
|
||||
|
||||
switch (action) {
|
||||
case BUS_NOTIFY_UNBIND_DRIVER:
|
||||
count = device_dma_allocations(dev);
|
||||
if (count == 0)
|
||||
break;
|
||||
err_printk(dev, NULL, "DMA-API: device driver has pending "
|
||||
"DMA allocations while released from device "
|
||||
"[count=%d]\n", count);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void dma_debug_add_bus(struct bus_type *bus)
|
||||
{
|
||||
struct notifier_block *nb;
|
||||
|
||||
nb = kzalloc(sizeof(struct notifier_block), GFP_KERNEL);
|
||||
if (nb == NULL) {
|
||||
printk(KERN_ERR "dma_debug_add_bus: out of memory\n");
|
||||
return;
|
||||
}
|
||||
|
||||
nb->notifier_call = dma_debug_device_change;
|
||||
|
||||
bus_register_notifier(bus, nb);
|
||||
/* FIXME: register notifier */
|
||||
}
|
||||
|
||||
/*
|
||||
|
@@ -218,6 +218,9 @@ int kobject_set_name_vargs(struct kobject *kobj, const char *fmt,
|
||||
const char *old_name = kobj->name;
|
||||
char *s;
|
||||
|
||||
if (kobj->name && !fmt)
|
||||
return 0;
|
||||
|
||||
kobj->name = kvasprintf(GFP_KERNEL, fmt, vargs);
|
||||
if (!kobj->name)
|
||||
return -ENOMEM;
|
||||
|
@@ -258,7 +258,7 @@ int kobject_uevent_env(struct kobject *kobj, enum kobject_action action,
|
||||
goto exit;
|
||||
|
||||
retval = call_usermodehelper(argv[0], argv,
|
||||
env->envp, UMH_NO_WAIT);
|
||||
env->envp, UMH_WAIT_EXEC);
|
||||
}
|
||||
|
||||
exit:
|
||||
@@ -328,7 +328,7 @@ static int __init kobject_uevent_init(void)
|
||||
"kobject_uevent: unable to create netlink socket!\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
netlink_set_nonroot(NETLINK_KOBJECT_UEVENT, NL_NONROOT_RECV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@@ -347,9 +347,12 @@ bool sg_miter_next(struct sg_mapping_iter *miter)
|
||||
sg_miter_stop(miter);
|
||||
|
||||
/* get to the next sg if necessary. __offset is adjusted by stop */
|
||||
if (miter->__offset == miter->__sg->length && --miter->__nents) {
|
||||
miter->__sg = sg_next(miter->__sg);
|
||||
miter->__offset = 0;
|
||||
while (miter->__offset == miter->__sg->length) {
|
||||
if (--miter->__nents) {
|
||||
miter->__sg = sg_next(miter->__sg);
|
||||
miter->__offset = 0;
|
||||
} else
|
||||
return false;
|
||||
}
|
||||
|
||||
/* map the next page */
|
||||
|
@@ -1051,13 +1051,6 @@ int vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
|
||||
if (str < end)
|
||||
*str = '%';
|
||||
++str;
|
||||
if (*fmt) {
|
||||
if (str < end)
|
||||
*str = *fmt;
|
||||
++str;
|
||||
} else {
|
||||
--fmt;
|
||||
}
|
||||
break;
|
||||
|
||||
case FORMAT_TYPE_NRCHARS: {
|
||||
@@ -1339,8 +1332,6 @@ do { \
|
||||
break;
|
||||
|
||||
case FORMAT_TYPE_INVALID:
|
||||
if (!*fmt)
|
||||
--fmt;
|
||||
break;
|
||||
|
||||
case FORMAT_TYPE_NRCHARS: {
|
||||
@@ -1523,13 +1514,6 @@ int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf)
|
||||
if (str < end)
|
||||
*str = '%';
|
||||
++str;
|
||||
if (*fmt) {
|
||||
if (str < end)
|
||||
*str = *fmt;
|
||||
++str;
|
||||
} else {
|
||||
--fmt;
|
||||
}
|
||||
break;
|
||||
|
||||
case FORMAT_TYPE_NRCHARS:
|
||||
|
Reference in New Issue
Block a user