public inbox for linux-acpi@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/5] resources: add arch hook for preventing allocation in reserved areas
@ 2010-12-08 21:36 Bjorn Helgaas
  2010-12-08 21:36 ` [PATCH 2/5] x86: avoid BIOS area when allocating address space Bjorn Helgaas
                   ` (5 more replies)
  0 siblings, 6 replies; 28+ messages in thread
From: Bjorn Helgaas @ 2010-12-08 21:36 UTC (permalink / raw)
  To: Jesse Barnes, Len Brown
  Cc: linux-pci, linux-kernel, linux-acpi, H. Peter Anvin,
	Thomas Gleixner, Linus Torvalds, Ingo Molnar, Adam Belay


This adds arch_remove_reservations(), which an arch can implement if it
needs to protect part of the address space from allocation.

Sometimes that can be done by just requesting a resource.  This hook is to
cover cases where protected area doesn't fit well in the hierarchical
resource tree.  For example, x86 BIOS E820 reservations are not related
to devices, so they may overlap part of, all of, or more than a device
resource.

Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
---

 include/linux/ioport.h |    1 +
 kernel/resource.c      |    8 ++++++++
 2 files changed, 9 insertions(+), 0 deletions(-)


diff --git a/include/linux/ioport.h b/include/linux/ioport.h
index d377ea8..b92b8b4 100644
--- a/include/linux/ioport.h
+++ b/include/linux/ioport.h
@@ -124,6 +124,7 @@ extern void reserve_region_with_split(struct resource *root,
 extern struct resource *insert_resource_conflict(struct resource *parent, struct resource *new);
 extern int insert_resource(struct resource *parent, struct resource *new);
 extern void insert_resource_expand_to_fit(struct resource *root, struct resource *new);
+extern void arch_remove_reservations(struct resource *avail);
 extern int allocate_resource(struct resource *root, struct resource *new,
 			     resource_size_t size, resource_size_t min,
 			     resource_size_t max, resource_size_t align,
diff --git a/kernel/resource.c b/kernel/resource.c
index 9fad33e..246957e 100644
--- a/kernel/resource.c
+++ b/kernel/resource.c
@@ -374,6 +374,10 @@ int __weak page_is_ram(unsigned long pfn)
 	return walk_system_ram_range(pfn, 1, NULL, __is_ram) == 1;
 }
 
+void __weak arch_remove_reservations(struct resource *avail)
+{
+}
+
 static resource_size_t simple_align_resource(void *data,
 					     const struct resource *avail,
 					     resource_size_t size,
@@ -426,6 +430,7 @@ static int find_resource_from_top(struct resource *root, struct resource *new,
 	struct resource *this;
 	struct resource tmp, avail, alloc;
 
+	tmp.flags = new->flags;
 	tmp.start = root->end;
 	tmp.end = root->end;
 
@@ -438,6 +443,7 @@ static int find_resource_from_top(struct resource *root, struct resource *new,
 			tmp.start = root->start;
 
 		resource_clip(&tmp, min, max);
+		arch_remove_reservations(&tmp);
 
 		/* Check for overflow after ALIGN() */
 		avail = *new;
@@ -478,6 +484,7 @@ static int find_resource(struct resource *root, struct resource *new,
 	struct resource *this = root->child;
 	struct resource tmp = *new, avail, alloc;
 
+	tmp.flags = new->flags;
 	tmp.start = root->start;
 	/*
 	 * Skip past an allocated resource that starts at 0, since the
@@ -495,6 +502,7 @@ static int find_resource(struct resource *root, struct resource *new,
 			tmp.end = root->end;
 
 		resource_clip(&tmp, min, max);
+		arch_remove_reservations(&tmp);
 
 		/* Check for overflow after ALIGN() */
 		avail = *new;

^ permalink raw reply related	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2010-12-15 19:21 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-12-08 21:36 [PATCH 1/5] resources: add arch hook for preventing allocation in reserved areas Bjorn Helgaas
2010-12-08 21:36 ` [PATCH 2/5] x86: avoid BIOS area when allocating address space Bjorn Helgaas
2010-12-08 21:36 ` [PATCH 3/5] x86: avoid PNP resources " Bjorn Helgaas
2010-12-08 21:36 ` [PATCH 4/5] PNP: add framework for platform PNP quirks Bjorn Helgaas
2010-12-08 21:36 ` [PATCH 5/5] PNP: HP nx6325 fixup: reserve unreported resources Bjorn Helgaas
2010-12-12  3:30   ` Linus Torvalds
2010-12-12  5:23     ` Dave Airlie
2010-12-12  6:17     ` Bjorn Helgaas
2010-12-14 20:34       ` Linus Torvalds
2010-12-14 20:44         ` Linus Torvalds
2010-12-14 23:57           ` Bjorn Helgaas
2010-12-15  6:02           ` Bjorn Helgaas
2010-12-15  6:26         ` Bjorn Helgaas
2010-12-15  7:03           ` Linus Torvalds
2010-12-15 18:18             ` Bjorn Helgaas
2010-12-15 18:27               ` H. Peter Anvin
2010-12-15 19:21               ` Linus Torvalds
2010-12-08 21:37 ` [PATCH 0/5] resources: add arch hook for preventing allocation in reserved areas Bjorn Helgaas
2010-12-10 20:30 ` [PATCH 1/5] " Jesse Barnes
2010-12-10 20:36   ` Jesse Barnes
2010-12-10 21:07     ` Bjorn Helgaas
2010-12-11  1:37       ` Jesse Barnes
2010-12-12  3:34         ` Linus Torvalds
2010-12-12  4:16           ` Jesse Barnes
2010-12-12 13:20             ` Rafael J. Wysocki
2010-12-13  5:43               ` Bjorn Helgaas
2010-12-13 13:47                 ` Ingo Molnar
2010-12-15  0:09                   ` Bjorn Helgaas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox