diff --git a/[refs] b/[refs] index b125189dbc95..04bce7a03112 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9738cbe32192919356397f1e24f9b26e1f574fbb +refs/heads/master: 47d46379eb66278107947729e34a833c76dca252 diff --git a/trunk/arch/parisc/kernel/unwind.c b/trunk/arch/parisc/kernel/unwind.c index 322167737de7..e70f57e27643 100644 --- a/trunk/arch/parisc/kernel/unwind.c +++ b/trunk/arch/parisc/kernel/unwind.c @@ -16,8 +16,6 @@ #include #include -#include -#include #include @@ -28,8 +26,6 @@ #define dbg(x...) #endif -#define KERNEL_START (KERNEL_BINARY_TEXT_START - 0x1000) - extern struct unwind_table_entry __start___unwind[]; extern struct unwind_table_entry __stop___unwind[]; @@ -201,29 +197,6 @@ static int unwind_init(void) return 0; } -#ifdef CONFIG_64BIT -#define get_func_addr(fptr) fptr[2] -#else -#define get_func_addr(fptr) fptr[0] -#endif - -static int unwind_special(struct unwind_frame_info *info, unsigned long pc, int frame_size) -{ - void handle_interruption(int, struct pt_regs *); - static unsigned long *hi = (unsigned long)&handle_interruption; - - if (pc == get_func_addr(hi)) { - struct pt_regs *regs = (struct pt_regs *)(info->sp - frame_size - PT_SZ_ALGN); - dbg("Unwinding through handle_interruption()\n"); - info->prev_sp = regs->gr[30]; - info->prev_ip = regs->iaoq[0]; - - return 1; - } - - return 0; -} - static void unwind_frame_regs(struct unwind_frame_info *info) { const struct unwind_table_entry *e; @@ -337,15 +310,13 @@ static void unwind_frame_regs(struct unwind_frame_info *info) } } - if (!unwind_special(info, e->region_start, frame_size)) { - info->prev_sp = info->sp - frame_size; - if (e->Millicode) - info->rp = info->r31; - else if (rpoffset) - info->rp = *(unsigned long *)(info->prev_sp - rpoffset); - info->prev_ip = info->rp; - info->rp = 0; - } + info->prev_sp = info->sp - frame_size; + if (e->Millicode) + info->rp = info->r31; + else if (rpoffset) + info->rp = *(unsigned long *)(info->prev_sp - rpoffset); + info->prev_ip = info->rp; + info->rp = 0; dbg("analyzing func @ %lx, setting prev_sp=%lx " "prev_ip=%lx npc=%lx\n", info->ip, info->prev_sp, diff --git a/trunk/drivers/char/agp/intel-agp.c b/trunk/drivers/char/agp/intel-agp.c index 0439ee951a11..a1240603912c 100644 --- a/trunk/drivers/char/agp/intel-agp.c +++ b/trunk/drivers/char/agp/intel-agp.c @@ -1843,35 +1843,35 @@ static const struct intel_driver_description { &intel_845_driver, &intel_830_driver }, { PCI_DEVICE_ID_INTEL_82875_HB, 0, 0, "i875", &intel_845_driver, NULL }, { PCI_DEVICE_ID_INTEL_82915G_HB, PCI_DEVICE_ID_INTEL_82915G_IG, 0, "915G", - &intel_845_driver, &intel_915_driver }, + NULL, &intel_915_driver }, { PCI_DEVICE_ID_INTEL_82915GM_HB, PCI_DEVICE_ID_INTEL_82915GM_IG, 0, "915GM", - &intel_845_driver, &intel_915_driver }, + NULL, &intel_915_driver }, { PCI_DEVICE_ID_INTEL_82945G_HB, PCI_DEVICE_ID_INTEL_82945G_IG, 0, "945G", - &intel_845_driver, &intel_915_driver }, + NULL, &intel_915_driver }, { PCI_DEVICE_ID_INTEL_82945GM_HB, PCI_DEVICE_ID_INTEL_82945GM_IG, 1, "945GM", - &intel_845_driver, &intel_915_driver }, + NULL, &intel_915_driver }, { PCI_DEVICE_ID_INTEL_82945GM_HB, PCI_DEVICE_ID_INTEL_82945GME_IG, 0, "945GME", - &intel_845_driver, &intel_915_driver }, + NULL, &intel_915_driver }, { PCI_DEVICE_ID_INTEL_82946GZ_HB, PCI_DEVICE_ID_INTEL_82946GZ_IG, 0, "946GZ", - &intel_845_driver, &intel_i965_driver }, + NULL, &intel_i965_driver }, { PCI_DEVICE_ID_INTEL_82965G_1_HB, PCI_DEVICE_ID_INTEL_82965G_1_IG, 0, "965G", - &intel_845_driver, &intel_i965_driver }, + NULL, &intel_i965_driver }, { PCI_DEVICE_ID_INTEL_82965Q_HB, PCI_DEVICE_ID_INTEL_82965Q_IG, 0, "965Q", - &intel_845_driver, &intel_i965_driver }, + NULL, &intel_i965_driver }, { PCI_DEVICE_ID_INTEL_82965G_HB, PCI_DEVICE_ID_INTEL_82965G_IG, 0, "965G", - &intel_845_driver, &intel_i965_driver }, + NULL, &intel_i965_driver }, { PCI_DEVICE_ID_INTEL_82965GM_HB, PCI_DEVICE_ID_INTEL_82965GM_IG, 1, "965GM", - &intel_845_driver, &intel_i965_driver }, + NULL, &intel_i965_driver }, { PCI_DEVICE_ID_INTEL_82965GM_HB, PCI_DEVICE_ID_INTEL_82965GME_IG, 0, "965GME/GLE", - &intel_845_driver, &intel_i965_driver }, + NULL, &intel_i965_driver }, { PCI_DEVICE_ID_INTEL_7505_0, 0, 0, "E7505", &intel_7505_driver, NULL }, { PCI_DEVICE_ID_INTEL_7205_0, 0, 0, "E7205", &intel_7505_driver, NULL }, { PCI_DEVICE_ID_INTEL_G33_HB, PCI_DEVICE_ID_INTEL_G33_IG, 0, "G33", - &intel_845_driver, &intel_g33_driver }, + NULL, &intel_g33_driver }, { PCI_DEVICE_ID_INTEL_Q35_HB, PCI_DEVICE_ID_INTEL_Q35_IG, 0, "Q35", - &intel_845_driver, &intel_g33_driver }, + NULL, &intel_g33_driver }, { PCI_DEVICE_ID_INTEL_Q33_HB, PCI_DEVICE_ID_INTEL_Q33_IG, 0, "Q33", - &intel_845_driver, &intel_g33_driver }, + NULL, &intel_g33_driver }, { 0, 0, 0, NULL, NULL, NULL } }; @@ -1917,8 +1917,11 @@ static int __devinit agp_intel_probe(struct pci_dev *pdev, } if (bridge->driver == NULL) { - printk(KERN_WARNING PFX "Failed to find bridge device " - "(chip_id: %04x)\n", intel_agp_chipsets[i].gmch_chip_id); + /* bridge has no AGP and no IGD detected */ + if (cap_ptr) + printk(KERN_WARNING PFX "Failed to find bridge device " + "(chip_id: %04x)\n", + intel_agp_chipsets[i].gmch_chip_id); agp_put_bridge(bridge); return -ENODEV; } diff --git a/trunk/drivers/parisc/led.c b/trunk/drivers/parisc/led.c index e5d7ed92d6f7..98be2880757d 100644 --- a/trunk/drivers/parisc/led.c +++ b/trunk/drivers/parisc/led.c @@ -195,6 +195,12 @@ static int led_proc_write(struct file *file, const char *buf, cur = lbuf; + /* skip initial spaces */ + while (*cur && isspace(*cur)) + { + cur++; + } + switch ((long)data) { case LED_NOLCD: diff --git a/trunk/include/asm-parisc/system.h b/trunk/include/asm-parisc/system.h index 21fbfc5afd02..7e9afa720d43 100644 --- a/trunk/include/asm-parisc/system.h +++ b/trunk/include/asm-parisc/system.h @@ -188,6 +188,7 @@ static inline void set_eiem(unsigned long val) # define __lock_aligned __attribute__((__section__(".data.lock_aligned"))) #endif +#define KERNEL_START (0x10100000 - 0x1000) #define arch_align_stack(x) (x) #endif diff --git a/trunk/include/linux/mm.h b/trunk/include/linux/mm.h index 1c1207472bb4..e4183c6c7de3 100644 --- a/trunk/include/linux/mm.h +++ b/trunk/include/linux/mm.h @@ -603,10 +603,6 @@ static inline struct address_space *page_mapping(struct page *page) if (unlikely(PageSwapCache(page))) mapping = &swapper_space; -#ifdef CONFIG_SLUB - else if (unlikely(PageSlab(page))) - mapping = NULL; -#endif else if (unlikely((unsigned long)mapping & PAGE_MAPPING_ANON)) mapping = NULL; return mapping; diff --git a/trunk/kernel/posix-timers.c b/trunk/kernel/posix-timers.c index 329ce0172074..588c99da0307 100644 --- a/trunk/kernel/posix-timers.c +++ b/trunk/kernel/posix-timers.c @@ -353,40 +353,9 @@ static enum hrtimer_restart posix_timer_fn(struct hrtimer *timer) * it should be restarted. */ if (timr->it.real.interval.tv64 != 0) { - ktime_t now = hrtimer_cb_get_time(timer); - - /* - * FIXME: What we really want, is to stop this - * timer completely and restart it in case the - * SIG_IGN is removed. This is a non trivial - * change which involves sighand locking - * (sigh !), which we don't want to do late in - * the release cycle. - * - * For now we just let timers with an interval - * less than a jiffie expire every jiffie to - * avoid softirq starvation in case of SIG_IGN - * and a very small interval, which would put - * the timer right back on the softirq pending - * list. By moving now ahead of time we trick - * hrtimer_forward() to expire the timer - * later, while we still maintain the overrun - * accuracy, but have some inconsistency in - * the timer_gettime() case. This is at least - * better than a starved softirq. A more - * complex fix which solves also another related - * inconsistency is already in the pipeline. - */ -#ifdef CONFIG_HIGH_RES_TIMERS - { - ktime_t kj = ktime_set(0, NSEC_PER_SEC / HZ); - - if (timr->it.real.interval.tv64 < kj.tv64) - now = ktime_add(now, kj); - } -#endif timr->it_overrun += - hrtimer_forward(timer, now, + hrtimer_forward(timer, + hrtimer_cb_get_time(timer), timr->it.real.interval); ret = HRTIMER_RESTART; ++timr->it_requeue_pending; diff --git a/trunk/mm/mmap.c b/trunk/mm/mmap.c index 906ed402f7ca..68b9ad2ef1d6 100644 --- a/trunk/mm/mmap.c +++ b/trunk/mm/mmap.c @@ -1536,14 +1536,9 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address) * vma->vm_start/vm_end cannot change under us because the caller * is required to hold the mmap_sem in read mode. We need the * anon_vma lock to serialize against concurrent expand_stacks. - * Also guard against wrapping around to address 0. */ - if (address < PAGE_ALIGN(address+4)) - address = PAGE_ALIGN(address+4); - else { - anon_vma_unlock(vma); - return -ENOMEM; - } + address += 4 + PAGE_SIZE - 1; + address &= PAGE_MASK; error = 0; /* Somebody else might have raced and expanded it already */