Re: [PATCH] x86: split e820 reserved entries record to late v4 - fix v6

Previous thread: Re: buffer overflow in /proc/sys/sunrpc/transports by David Wagner on Saturday, August 30, 2008 - 1:20 pm. (1 message)

Next thread: [PATCH] x86: split e820 reserved entries record to late v4 by Yinghai Lu on Saturday, August 30, 2008 - 1:36 pm. (2 messages)
From: Yinghai Lu
Date: Saturday, August 30, 2008 - 1:34 pm

try to insert_resource second time, by expand the resource...

for case: e820 reserved entry is partially overlapped with bar res...

hope it will never happen

v2: according to Linus, add insert_resource_expand_to_fit, and change
	__insert_resource to static without lock

v3: use reserve_region_with_split() instead to hand overlapping
	with test case by extend 0xe0000000 - 0xeffffff to 0xdd800000 -
	get
		e0000000-efffffff : PCI MMCONFIG 0
			 e0000000-efffffff : reserved
	in /proc/iomem
	get
		found conflict for reserved [dd800000, efffffff], try to reserve with split
		    __reserve_region_with_split: (PCI Bus #80) [dd000000, ddffffff], res: (reserved) [dd800000, efffffff]
		    __reserve_region_with_split: (PCI Bus #00) [de000000, dfffffff], res: (reserved) [de000000, efffffff]
		initcall pci_subsys_init+0x0/0x121 returned 0 after 381 msecs
	in dmesg

v4: take out __insert_resource and insert_resource_expand_to_fit : Linus already check in.
    use reserve_region_with_split at the first point
    use const char *name

v5: fix checking on overlapping

v6: only reserve common area in conflict
	so got sth in /proc/iomem
		d8000000-dfffffff : PCI Bus #00
		  dc000000-dfffffff : GART
		    dc000000-dfffffff : reserved
		e0000000-efffffff : PCI MMCONFIG 0
		  e0000000-efffffff : reserved
	when we have big range in e820
		00000000dc000000-00000000f0000000 (reserved)

Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>

---
 arch/x86/kernel/e820.c |    2 -
 include/linux/ioport.h |    3 ++
 kernel/resource.c      |   69 ++++++++++++++++++++++++++++++++++++++++++++++++-
 3 files changed, 72 insertions(+), 2 deletions(-)

Index: linux-2.6/arch/x86/kernel/e820.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/e820.c
+++ linux-2.6/arch/x86/kernel/e820.c
@@ -1320,7 +1320,7 @@ void __init e820_reserve_resources_late(
 	res = e820_res;
 	for (i = 0; i < e820.nr_map; i++) {
 		if (!res->parent && ...
From: Yinghai Lu
Date: Saturday, August 30, 2008 - 7:19 pm

Adding to : Ivan..

--

Previous thread: Re: buffer overflow in /proc/sys/sunrpc/transports by David Wagner on Saturday, August 30, 2008 - 1:20 pm. (1 message)

Next thread: [PATCH] x86: split e820 reserved entries record to late v4 by Yinghai Lu on Saturday, August 30, 2008 - 1:36 pm. (2 messages)