diff options
Diffstat (limited to 'pci-v2-3-4-resources-allocate-space-within-a-region-from-the-top-down.patch')
-rw-r--r-- | pci-v2-3-4-resources-allocate-space-within-a-region-from-the-top-down.patch | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/pci-v2-3-4-resources-allocate-space-within-a-region-from-the-top-down.patch b/pci-v2-3-4-resources-allocate-space-within-a-region-from-the-top-down.patch deleted file mode 100644 index 2a5d09f09..000000000 --- a/pci-v2-3-4-resources-allocate-space-within-a-region-from-the-top-down.patch +++ /dev/null @@ -1,71 +0,0 @@ -diff --git a/kernel/resource.c b/kernel/resource.c -index ace2269..1a2a40e 100644 ---- a/kernel/resource.c -+++ b/kernel/resource.c -@@ -358,6 +358,20 @@ int __weak page_is_ram(unsigned long pfn) - } - - /* -+ * Find the resource before "child" in the sibling list of "root" children. -+ */ -+static struct resource *find_sibling_prev(struct resource *root, struct resource *child) -+{ -+ struct resource *this; -+ -+ for (this = root->child; this; this = this->sibling) -+ if (this->sibling == child) -+ return this; -+ -+ return NULL; -+} -+ -+/* - * Find empty slot in the resource tree given range and alignment. - */ - static int find_resource(struct resource *root, struct resource *new, -@@ -369,24 +383,18 @@ static int find_resource(struct resource *root, struct resource *new, - resource_size_t), - void *alignf_data) - { -- struct resource *this = root->child; -+ struct resource *this; - struct resource tmp = *new; - resource_size_t start; - -- tmp.start = root->start; -- /* -- * Skip past an allocated resource that starts at 0, since the assignment -- * of this->start - 1 to tmp->end below would cause an underflow. -- */ -- if (this && this->start == 0) { -- tmp.start = this->end + 1; -- this = this->sibling; -- } -- for(;;) { -+ tmp.end = root->end; -+ -+ this = find_sibling_prev(root, NULL); -+ for (;;) { - if (this) -- tmp.end = this->start - 1; -+ tmp.start = this->end + 1; - else -- tmp.end = root->end; -+ tmp.start = root->start; - if (tmp.start < min) - tmp.start = min; - if (tmp.end > max) -@@ -404,10 +412,10 @@ static int find_resource(struct resource *root, struct resource *new, - new->end = tmp.start + size - 1; - return 0; - } -- if (!this) -+ if (!this || this->start == root->start) - break; -- tmp.start = this->end + 1; -- this = this->sibling; -+ tmp.end = this->start - 1; -+ this = find_sibling_prev(root, this); - } - return -EBUSY; - } |