summaryrefslogtreecommitdiffstats
path: root/freed-ora/current/master
diff options
context:
space:
mode:
authorAlexandre Oliva <lxoliva@fsfla.org>2010-09-25 06:10:38 +0000
committerAlexandre Oliva <lxoliva@fsfla.org>2010-09-25 06:10:38 +0000
commit1463d83e21f46175ce1f34e0b90aa4a41300647c (patch)
treeb905688a39df8ac7e3ea5af9d64aca307c50993b /freed-ora/current/master
parenta5c5fffc5cb0be21853d850d4c376c4c84c71a6d (diff)
downloadlinux-libre-raptor-1463d83e21f46175ce1f34e0b90aa4a41300647c.tar.gz
linux-libre-raptor-1463d83e21f46175ce1f34e0b90aa4a41300647c.zip
2.6.36-0.26.rc5.git4.fc15
Diffstat (limited to 'freed-ora/current/master')
-rw-r--r--freed-ora/current/master/fix-icebp-breakpoints.patch50
-rw-r--r--freed-ora/current/master/kernel.spec33
-rw-r--r--freed-ora/current/master/linux-2.6.35.4-virtio_console-fix-poll.patch29
-rw-r--r--freed-ora/current/master/pci-v2-1-4-resources-ensure-alignment-callback-doesn-t-allocate-below-available-start.patch28
-rw-r--r--freed-ora/current/master/pci-v2-2-4-x86-PCI-allocate-space-from-the-end-of-a-region-not-the-beginning.patch40
-rw-r--r--freed-ora/current/master/pci-v2-3-4-resources-allocate-space-within-a-region-from-the-top-down.patch71
-rw-r--r--freed-ora/current/master/pci-v2-4-4-PCI-allocate-bus-resources-from-the-top-down.patch80
-rw-r--r--freed-ora/current/master/sources1
8 files changed, 244 insertions, 88 deletions
diff --git a/freed-ora/current/master/fix-icebp-breakpoints.patch b/freed-ora/current/master/fix-icebp-breakpoints.patch
deleted file mode 100644
index a84994df3..000000000
--- a/freed-ora/current/master/fix-icebp-breakpoints.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From: Frederic Weisbecker <fweisbec@gmail.com>
-
-https://bugzilla.kernel.org/show_bug.cgi?id=16315#c26
-http://bugs.winehq.org/show_bug.cgi?id=23323
-
-diff --git a/arch/x86/include/asm/hw_breakpoint.h b/arch/x86/include/asm/hw_breakpoint.h
-index 528a11e..824ca07 100644
---- a/arch/x86/include/asm/hw_breakpoint.h
-+++ b/arch/x86/include/asm/hw_breakpoint.h
-@@ -20,7 +20,7 @@ struct arch_hw_breakpoint {
- #include <linux/list.h>
-
- /* Available HW breakpoint length encodings */
--#define X86_BREAKPOINT_LEN_X 0x00
-+#define X86_BREAKPOINT_LEN_X 0x40
- #define X86_BREAKPOINT_LEN_1 0x40
- #define X86_BREAKPOINT_LEN_2 0x44
- #define X86_BREAKPOINT_LEN_4 0x4c
-diff --git a/arch/x86/kernel/hw_breakpoint.c b/arch/x86/kernel/hw_breakpoint.c
-index a474ec3..71123b1 100644
---- a/arch/x86/kernel/hw_breakpoint.c
-+++ b/arch/x86/kernel/hw_breakpoint.c
-@@ -208,9 +208,6 @@ int arch_bp_generic_fields(int x86_len, int x86_type,
- {
- /* Len */
- switch (x86_len) {
-- case X86_BREAKPOINT_LEN_X:
-- *gen_len = sizeof(long);
-- break;
- case X86_BREAKPOINT_LEN_1:
- *gen_len = HW_BREAKPOINT_LEN_1;
- break;
-@@ -233,6 +230,7 @@ int arch_bp_generic_fields(int x86_len, int x86_type,
- switch (x86_type) {
- case X86_BREAKPOINT_EXECUTE:
- *gen_type = HW_BREAKPOINT_X;
-+ *gen_len = sizeof(long);
- break;
- case X86_BREAKPOINT_WRITE:
- *gen_type = HW_BREAKPOINT_W;
-@@ -316,9 +314,6 @@ int arch_validate_hwbkpt_settings(struct perf_event *bp)
- ret = -EINVAL;
-
- switch (info->len) {
-- case X86_BREAKPOINT_LEN_X:
-- align = sizeof(long) -1;
-- break;
- case X86_BREAKPOINT_LEN_1:
- align = 0;
- break;
diff --git a/freed-ora/current/master/kernel.spec b/freed-ora/current/master/kernel.spec
index 3844f8589..9d2d77019 100644
--- a/freed-ora/current/master/kernel.spec
+++ b/freed-ora/current/master/kernel.spec
@@ -51,7 +51,7 @@ Summary: The Linux kernel
# For non-released -rc kernels, this will be prepended with "0.", so
# for example a 3 here will become 0.3
#
-%global baserelease 25
+%global baserelease 26
%global fedora_build %{baserelease}
# base_sublevel is the kernel version we're starting with and patching
@@ -98,7 +98,7 @@ Summary: The Linux kernel
# The rc snapshot level
%define rcrev 5
# The git snapshot level
-%define gitrev 0
+%define gitrev 4
# Set rpm version accordingly
%define rpmversion 2.6.%{upstream_sublevel}
%endif
@@ -627,8 +627,6 @@ Patch30: linux-2.6-tracehook.patch
Patch31: linux-2.6-utrace.patch
Patch32: linux-2.6-utrace-ptrace.patch
-Patch100: fix-icebp-breakpoints.patch
-
Patch150: linux-2.6.29-sparc-IOC_TYPECHECK.patch
Patch160: linux-2.6-32bit-mmap-exec-randomization.patch
@@ -671,7 +669,6 @@ Patch800: linux-2.6-crash-driver.patch
# virt + ksm patches
Patch1555: fix_xen_guest_on_old_EC2.patch
-Patch1556: linux-2.6.35.4-virtio_console-fix-poll.patch
# DRM
Patch1801: drm-revert-drm-fbdev-rework-output-polling-to-be-back-in-core.patch
@@ -729,8 +726,8 @@ Patch12115: wacom-04-add-support-for-the-bamboo-touch-trackpad.patch
Patch12120: wacom-05-add-a-quirk-for-low-resolution-bamboo-devices.patch
Patch12125: wacom-06-request-tablet-data-for-bamboo-pens.patch
Patch12130: wacom-07-move-bamboo-touch-irq-to-its-own-function.patch
-Patch12035: wacom-08-add-support-for-bamboo-pen.patch
-Patch12040: wacom-09-disable-bamboo-touchpad-when-pen-is-being-used.patch
+Patch12135: wacom-08-add-support-for-bamboo-pen.patch
+Patch12140: wacom-09-disable-bamboo-touchpad-when-pen-is-being-used.patch
# Runtime power management
Patch12200: linux-2.6-bluetooth-autosuspend.patch
@@ -738,6 +735,12 @@ Patch12201: linux-2.6-uvc-autosuspend.patch
Patch12202: linux-2.6-qcserial-autosuspend.patch
Patch12203: linux-2.6-usb-pci-autosuspend.patch
+# PCI patches to fix problems with _CRS
+Patch12221: pci-v2-1-4-resources-ensure-alignment-callback-doesn-t-allocate-below-available-start.patch
+Patch12222: pci-v2-2-4-x86-PCI-allocate-space-from-the-end-of-a-region-not-the-beginning.patch
+Patch12223: pci-v2-3-4-resources-allocate-space-within-a-region-from-the-top-down.patch
+Patch12224: pci-v2-4-4-PCI-allocate-bus-resources-from-the-top-down.patch
+
Patch12300: btusb-macbookpro-7-1.patch
Patch12301: btusb-macbookpro-6-2.patch
@@ -1190,7 +1193,6 @@ ApplyPatch linux-2.6-utrace-ptrace.patch
# Architecture patches
# x86(-64)
-ApplyPatch fix-icebp-breakpoints.patch
#
# Intel IOMMU
@@ -1300,7 +1302,6 @@ ApplyPatch linux-2.6-crash-driver.patch
# Assorted Virt Fixes
ApplyPatch fix_xen_guest_on_old_EC2.patch
-ApplyPatch linux-2.6.35.4-virtio_console-fix-poll.patch
#ApplyPatch drm-revert-drm-fbdev-rework-output-polling-to-be-back-in-core.patch
#ApplyPatch revert-drm-kms-toggle-poll-around-switcheroo.patch
@@ -1361,6 +1362,13 @@ ApplyPatch linux-2.6-uvc-autosuspend.patch
ApplyPatch linux-2.6-qcserial-autosuspend.patch
ApplyPatch linux-2.6-usb-pci-autosuspend.patch
+# PCI patches to fix problems with _CRS
+# ( from https://bugzilla.kernel.org/show_bug.cgi?id=16228#c49 )
+ApplyPatch pci-v2-1-4-resources-ensure-alignment-callback-doesn-t-allocate-below-available-start.patch
+ApplyPatch pci-v2-2-4-x86-PCI-allocate-space-from-the-end-of-a-region-not-the-beginning.patch
+ApplyPatch pci-v2-3-4-resources-allocate-space-within-a-region-from-the-top-down.patch
+ApplyPatch pci-v2-4-4-PCI-allocate-bus-resources-from-the-top-down.patch
+
ApplyPatch btusb-macbookpro-7-1.patch
ApplyPatch btusb-macbookpro-6-2.patch
@@ -1971,6 +1979,13 @@ fi
# || ||
%changelog
+* Thu Sep 23 2010 Chuck Ebbert <cebbert@redhat.com> 2.6.36-0.26.rc5.git4
+- Linux 2.6.36-rc5-git4
+- Drop merged patches:
+ fix-icebp-breakpoints.patch
+ linux-2.6.35.4-virtio_console-fix-poll.patch
+- Add patches to fix problems with PCI _CRS
+
* Thu Sep 23 2010 Kyle McMartin <kyle@redhat.com> 2.6.36-0.25.rc5
- Add s390 vdso AFTER_LINK to Roland's linux-2.6-makefile-after_link.patch
diff --git a/freed-ora/current/master/linux-2.6.35.4-virtio_console-fix-poll.patch b/freed-ora/current/master/linux-2.6.35.4-virtio_console-fix-poll.patch
deleted file mode 100644
index b87bdf077..000000000
--- a/freed-ora/current/master/linux-2.6.35.4-virtio_console-fix-poll.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-Subject: virtio_console: Fix poll blocking even though there is data to read
-From: Hans de Goede <hdegoede@redhat.com>
-
-I found this while working on a Linux agent for spice, the symptom I was
-seeing was select blocking on the spice vdagent virtio serial port even
-though there were messages queued up there.
-
-virtio_console's port_fops_poll checks port->inbuf != NULL to determine if
-read won't block. However if an application reads enough bytes from inbuf
-through port_fops_read, to empty the current port->inbuf, port->inbuf
-will be NULL even though there may be buffers left in the virtqueue.
-
-This causes poll() to block even though there is data to be read, this patch
-fixes this by using the alredy defined will_read_block utility function
-instead of the port->inbuf != NULL check.
-
-Signed-off-By: Hans de Goede <hdegoede@redhat.com>
-diff -up linux-2.6.35.x86_64/drivers/char/virtio_console.c~ linux-2.6.35.x86_64/drivers/char/virtio_console.c
---- linux-2.6.35.x86_64/drivers/char/virtio_console.c~ 2010-08-02 00:11:14.000000000 +0200
-+++ linux-2.6.35.x86_64/drivers/char/virtio_console.c 2010-09-15 13:39:29.043505000 +0200
-@@ -642,7 +642,7 @@ static unsigned int port_fops_poll(struc
- poll_wait(filp, &port->waitqueue, wait);
-
- ret = 0;
-- if (port->inbuf)
-+ if (!will_read_block(port))
- ret |= POLLIN | POLLRDNORM;
- if (!will_write_block(port))
- ret |= POLLOUT;
diff --git a/freed-ora/current/master/pci-v2-1-4-resources-ensure-alignment-callback-doesn-t-allocate-below-available-start.patch b/freed-ora/current/master/pci-v2-1-4-resources-ensure-alignment-callback-doesn-t-allocate-below-available-start.patch
new file mode 100644
index 000000000..d1f4abad6
--- /dev/null
+++ b/freed-ora/current/master/pci-v2-1-4-resources-ensure-alignment-callback-doesn-t-allocate-below-available-start.patch
@@ -0,0 +1,28 @@
+diff --git a/kernel/resource.c b/kernel/resource.c
+index 7b36976..ace2269 100644
+--- a/kernel/resource.c
++++ b/kernel/resource.c
+@@ -371,6 +371,7 @@ static int find_resource(struct resource *root, struct resource *new,
+ {
+ struct resource *this = root->child;
+ struct resource tmp = *new;
++ resource_size_t start;
+
+ tmp.start = root->start;
+ /*
+@@ -391,8 +392,13 @@ static int find_resource(struct resource *root, struct resource *new,
+ if (tmp.end > max)
+ tmp.end = max;
+ tmp.start = ALIGN(tmp.start, align);
+- if (alignf)
+- tmp.start = alignf(alignf_data, &tmp, size, align);
++ if (alignf) {
++ start = alignf(alignf_data, &tmp, size, align);
++ if (tmp.start <= start && start <= tmp.end)
++ tmp.start = start;
++ else
++ tmp.start = tmp.end;
++ }
+ if (tmp.start < tmp.end && tmp.end - tmp.start >= size - 1) {
+ new->start = tmp.start;
+ new->end = tmp.start + size - 1;
diff --git a/freed-ora/current/master/pci-v2-2-4-x86-PCI-allocate-space-from-the-end-of-a-region-not-the-beginning.patch b/freed-ora/current/master/pci-v2-2-4-x86-PCI-allocate-space-from-the-end-of-a-region-not-the-beginning.patch
new file mode 100644
index 000000000..48ad106a6
--- /dev/null
+++ b/freed-ora/current/master/pci-v2-2-4-x86-PCI-allocate-space-from-the-end-of-a-region-not-the-beginning.patch
@@ -0,0 +1,40 @@
+diff --git a/arch/x86/pci/i386.c b/arch/x86/pci/i386.c
+index 5525309..fe866c8 100644
+--- a/arch/x86/pci/i386.c
++++ b/arch/x86/pci/i386.c
+@@ -37,6 +37,7 @@
+ #include <asm/pci_x86.h>
+ #include <asm/io_apic.h>
+
++#define ALIGN_DOWN(x, a) ((x) & ~(a - 1))
+
+ static int
+ skip_isa_ioresource_align(struct pci_dev *dev) {
+@@ -65,16 +66,21 @@ pcibios_align_resource(void *data, const struct resource *res,
+ resource_size_t size, resource_size_t align)
+ {
+ struct pci_dev *dev = data;
+- resource_size_t start = res->start;
++ resource_size_t start = ALIGN_DOWN(res->end - size + 1, align);
+
+ if (res->flags & IORESOURCE_IO) {
+- if (skip_isa_ioresource_align(dev))
+- return start;
+- if (start & 0x300)
+- start = (start + 0x3ff) & ~0x3ff;
++
++ /*
++ * If we're avoiding ISA aliases, the largest contiguous I/O
++ * port space is 256 bytes. Clearing bits 9 and 10 preserves
++ * all 256-byte and smaller alignments, so the result will
++ * still be correctly aligned.
++ */
++ if (!skip_isa_ioresource_align(dev))
++ start &= ~0x300;
+ } else if (res->flags & IORESOURCE_MEM) {
+ if (start < BIOS_END)
+- start = BIOS_END;
++ start = res->end; /* fail; no space */
+ }
+ return start;
+ }
diff --git a/freed-ora/current/master/pci-v2-3-4-resources-allocate-space-within-a-region-from-the-top-down.patch b/freed-ora/current/master/pci-v2-3-4-resources-allocate-space-within-a-region-from-the-top-down.patch
new file mode 100644
index 000000000..2a5d09f09
--- /dev/null
+++ b/freed-ora/current/master/pci-v2-3-4-resources-allocate-space-within-a-region-from-the-top-down.patch
@@ -0,0 +1,71 @@
+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;
+ }
diff --git a/freed-ora/current/master/pci-v2-4-4-PCI-allocate-bus-resources-from-the-top-down.patch b/freed-ora/current/master/pci-v2-4-4-PCI-allocate-bus-resources-from-the-top-down.patch
new file mode 100644
index 000000000..c1412b5bd
--- /dev/null
+++ b/freed-ora/current/master/pci-v2-4-4-PCI-allocate-bus-resources-from-the-top-down.patch
@@ -0,0 +1,80 @@
+diff --git a/drivers/pci/bus.c b/drivers/pci/bus.c
+index 7f0af0e..172bf26 100644
+--- a/drivers/pci/bus.c
++++ b/drivers/pci/bus.c
+@@ -64,6 +64,49 @@ void pci_bus_remove_resources(struct pci_bus *bus)
+ }
+ }
+
++/*
++ * Find the highest-address bus resource below the cursor "res". If the
++ * cursor is NULL, return the highest resource.
++ */
++static struct resource *pci_bus_find_resource_prev(struct pci_bus *bus,
++ unsigned int type,
++ struct resource *res)
++{
++ struct resource *r, *prev = NULL;
++ int i;
++
++ pci_bus_for_each_resource(bus, r, i) {
++ if (!r)
++ continue;
++
++ if ((r->flags & IORESOURCE_TYPE_BITS) != type)
++ continue;
++
++ /* If this resource is at or past the cursor, skip it */
++ if (res) {
++ if (r == res)
++ continue;
++ if (r->end > res->end)
++ continue;
++ if (r->end == res->end && r->start > res->start)
++ continue;
++ }
++
++ if (!prev)
++ prev = r;
++
++ /*
++ * A small resource is higher than a large one that ends at
++ * the same address.
++ */
++ if (r->end > prev->end ||
++ (r->end == prev->end && r->start > prev->start))
++ prev = r;
++ }
++
++ return prev;
++}
++
+ /**
+ * pci_bus_alloc_resource - allocate a resource from a parent bus
+ * @bus: PCI bus
+@@ -89,9 +132,10 @@ pci_bus_alloc_resource(struct pci_bus *bus, struct resource *res,
+ resource_size_t),
+ void *alignf_data)
+ {
+- int i, ret = -ENOMEM;
++ int ret = -ENOMEM;
+ struct resource *r;
+ resource_size_t max = -1;
++ unsigned int type = res->flags & IORESOURCE_TYPE_BITS;
+
+ type_mask |= IORESOURCE_IO | IORESOURCE_MEM;
+
+@@ -99,10 +143,9 @@ pci_bus_alloc_resource(struct pci_bus *bus, struct resource *res,
+ if (!(res->flags & IORESOURCE_MEM_64))
+ max = PCIBIOS_MAX_MEM_32;
+
+- pci_bus_for_each_resource(bus, r, i) {
+- if (!r)
+- continue;
+-
++ /* Look for space at highest addresses first */
++ r = pci_bus_find_resource_prev(bus, type, NULL);
++ for ( ; r; r = pci_bus_find_resource_prev(bus, type, r)) {
+ /* type_mask must match */
+ if ((res->flags ^ r->flags) & type_mask)
+ continue;
diff --git a/freed-ora/current/master/sources b/freed-ora/current/master/sources
index 978e15915..5de41aae4 100644
--- a/freed-ora/current/master/sources
+++ b/freed-ora/current/master/sources
@@ -1,2 +1,3 @@
046764af95a672b860dae1a955e91299 linux-2.6.35-libre2.tar.bz2
0572e53d584f552316d2522a9d3f9fbd patch-libre-2.6.36-rc5.bz2
+754de7d199807e79c29ee98c8b5e0f12 patch-2.6.36-rc5-git4.bz2
OpenPOWER on IntegriCloud