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

Commit c92c6ffd authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds
Browse files

[PATCH] mtrr size-and-base debugging



Consolidate the mtrr sanity checking, add a dump_stack().

Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent a3a255e7
Loading
Loading
Loading
Loading
+15 −8
Original line number Diff line number Diff line
@@ -375,6 +375,19 @@ int mtrr_add_page(unsigned long base, unsigned long size,
	return error;
}

static int mtrr_check(unsigned long base, unsigned long size)
{
	if ((base & (PAGE_SIZE - 1)) || (size & (PAGE_SIZE - 1))) {
		printk(KERN_WARNING
			"mtrr: size and base must be multiples of 4 kiB\n");
		printk(KERN_DEBUG
			"mtrr: size: 0x%lx  base: 0x%lx\n", size, base);
		dump_stack();
		return -1;
	}
	return 0;
}

/**
 *	mtrr_add - Add a memory type region
 *	@base: Physical base address of region
@@ -415,11 +428,8 @@ int
mtrr_add(unsigned long base, unsigned long size, unsigned int type,
	 char increment)
{
	if ((base & (PAGE_SIZE - 1)) || (size & (PAGE_SIZE - 1))) {
		printk(KERN_WARNING "mtrr: size and base must be multiples of 4 kiB\n");
		printk(KERN_DEBUG "mtrr: size: 0x%lx  base: 0x%lx\n", size, base);
	if (mtrr_check(base, size))
		return -EINVAL;
	}
	return mtrr_add_page(base >> PAGE_SHIFT, size >> PAGE_SHIFT, type,
			     increment);
}
@@ -511,11 +521,8 @@ int mtrr_del_page(int reg, unsigned long base, unsigned long size)
int
mtrr_del(int reg, unsigned long base, unsigned long size)
{
	if ((base & (PAGE_SIZE - 1)) || (size & (PAGE_SIZE - 1))) {
		printk(KERN_INFO "mtrr: size and base must be multiples of 4 kiB\n");
		printk(KERN_DEBUG "mtrr: size: 0x%lx  base: 0x%lx\n", size, base);
	if (mtrr_check(base, size))
		return -EINVAL;
	}
	return mtrr_del_page(reg, base >> PAGE_SHIFT, size >> PAGE_SHIFT);
}