Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b75ae860 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:
  [IA64] Make SN2 PCI code use ioremap rather than manually mangle the address
  [IA64] Force error to surface in nofault code
  [IA64] change sh_change_coherence oemcall to use nolock
  [IA64] remove duplicate header include line
  [IA64] Correct unwind validation code
  [IA64] is_power_of_2-ia64/mm/hugetlbpage.c
parents 75ca0d22 1ee27a4e
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@
#include <linux/time.h>
#include <linux/interrupt.h>
#include <linux/efi.h>
#include <linux/profile.h>
#include <linux/timex.h>

#include <asm/machvec.h>
+11 −5
Original line number Diff line number Diff line
@@ -1856,11 +1856,19 @@ find_save_locs (struct unw_frame_info *info)
	return 0;
}

static int
unw_valid(const struct unw_frame_info *info, unsigned long* p)
{
	unsigned long loc = (unsigned long)p;
	return (loc >= info->regstk.limit && loc < info->regstk.top) ||
	       (loc >= info->memstk.top && loc < info->memstk.limit);
}

int
unw_unwind (struct unw_frame_info *info)
{
	unsigned long prev_ip, prev_sp, prev_bsp;
	unsigned long ip, pr, num_regs, rp_loc, pfs_loc;
	unsigned long ip, pr, num_regs;
	STAT(unsigned long start, flags;)
	int retval;

@@ -1871,8 +1879,7 @@ unw_unwind (struct unw_frame_info *info)
	prev_bsp = info->bsp;

	/* validate the return IP pointer */
	rp_loc = (unsigned long) info->rp_loc;
	if ((rp_loc < info->regstk.limit) || (rp_loc > info->regstk.top)) {
	if (!unw_valid(info, info->rp_loc)) {
		/* FIXME: should really be level 0 but it occurs too often. KAO */
		UNW_DPRINT(1, "unwind.%s: failed to locate return link (ip=0x%lx)!\n",
			   __FUNCTION__, info->ip);
@@ -1888,8 +1895,7 @@ unw_unwind (struct unw_frame_info *info)
	}

	/* validate the previous stack frame pointer */
	pfs_loc = (unsigned long) info->pfs_loc;
	if ((pfs_loc < info->regstk.limit) || (pfs_loc > info->regstk.top)) {
	if (!unw_valid(info, info->pfs_loc)) {
		UNW_DPRINT(0, "unwind.%s: failed to locate ar.pfs!\n", __FUNCTION__);
		STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags));
		return -1;
+2 −1
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
#include <linux/pagemap.h>
#include <linux/slab.h>
#include <linux/sysctl.h>
#include <linux/log2.h>
#include <asm/mman.h>
#include <asm/pgalloc.h>
#include <asm/tlb.h>
@@ -182,7 +183,7 @@ static int __init hugetlb_setup_sz(char *str)
		tr_pages = 0x15557000UL;

	size = memparse(str, &str);
	if (*str || (size & (size-1)) || !(tr_pages & size) ||
	if (*str || !is_power_of_2(size) || !(tr_pages & size) ||
		size <= PAGE_SIZE ||
		size >= (1UL << PAGE_SHIFT << MAX_ORDER)) {
		printk(KERN_WARNING "Invalid huge page size specified\n");
+2 −1
Original line number Diff line number Diff line
@@ -21,7 +21,8 @@
xp_nofault_PIOR:
	mov	r8=r0			// Stage a success return value
	ld8.acq	r9=[r32];;		// PIO Read the specified register
	adds	r9=1,r9			// Add to force a consume
	adds	r9=1,r9;;		// Add to force consumption
	or	r9=r9,r9;;		// Or to force consumption
	br.ret.sptk.many b0;;		// Return success

	.global xp_error_PIOR
+4 −3
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
#include <asm/sn/pcibus_provider_defs.h>
#include <asm/sn/pcidev.h>
#include <asm/sn/sn_sal.h>
#include <asm/sn/pic.h>
#include <asm/sn/sn2/sn_hwperf.h>
#include "xtalk/xwidgetdev.h"
#include "xtalk/hubdev.h"
@@ -130,9 +131,9 @@ pcibr_bus_fixup(struct pcibus_bussoft *prom_bussoft, struct pci_controller *cont
	}

	memcpy(soft, prom_bussoft, sizeof(struct pcibus_info));
	soft->pbi_buscommon.bs_base =
	    (((u64) soft->pbi_buscommon.
	      bs_base << 4) >> 4) | __IA64_UNCACHED_OFFSET;
	soft->pbi_buscommon.bs_base = (unsigned long)
		ioremap(REGION_OFFSET(soft->pbi_buscommon.bs_base),
			sizeof(struct pic));

	spin_lock_init(&soft->pbi_lock);

Loading