merge huge 2.6.18.2-rc1 (minus Makefile and bcm43xx snipp)
delete all the included but not yet released patches revert the others svn path=/dists/trunk/linux-2.6/; revision=7685
This commit is contained in:
parent
2e30f4b857
commit
6c10c0aaa0
|
@ -1,4 +1,4 @@
|
|||
linux-2.6 (2.6.18-4) UNRELEASED; urgency=low
|
||||
linux-2.6 (2.6.18-4) unstable; urgency=low
|
||||
|
||||
[ Norbert Tretkowski ]
|
||||
* [alpha] Switched to gcc-4.1.
|
||||
|
@ -51,6 +51,9 @@ linux-2.6 (2.6.18-4) UNRELEASED; urgency=low
|
|||
* [s390]: Fix funny timespeed on hercules emulator. (closes: 395247)
|
||||
* bcm43xx: Add full netdev watchout timeout patch. (closes: 392065)
|
||||
Thanks Sjoerd Simons <sjoerd@spring.luon.net> for the testing.
|
||||
* Add stable prerelease 2.6.18.2:
|
||||
- Remove not yet released, revert the included patches.
|
||||
- Keep aboves bcm43xx fix, it's more complete.
|
||||
|
||||
[ Sven Luther ]
|
||||
* [powerpc] Added exception alignement patch from Benjamin Herrenschmidt.
|
||||
|
@ -94,7 +97,7 @@ linux-2.6 (2.6.18-4) UNRELEASED; urgency=low
|
|||
- bugfix/mips/dec-serial.patch, replaces mips-dec-serial.patch, fix
|
||||
serial console handling on DECstations.
|
||||
|
||||
-- Frederik Schüler <fs@debian.org> Wed, 1 Nov 2006 23:44:06 +0100
|
||||
-- maximilian attems <maks@sternwelten.at> Thu, 2 Nov 2006 18:47:45 +0100
|
||||
|
||||
linux-2.6 (2.6.18-3) unstable; urgency=low
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,260 +0,0 @@
|
|||
From stable-bounces@linux.kernel.org Thu Oct 12 05:42:07 2006
|
||||
From: Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||
To: greg@kroah.com
|
||||
Date: Thu, 12 Oct 2006 14:41:07 +0200
|
||||
Message-Id: <1160656867.15287.11.camel@localhost>
|
||||
Mime-Version: 1.0
|
||||
Cc: stable@kernel.org
|
||||
Subject: [S390] __div64_32 for 31 bit.
|
||||
Content-Type: text/plain; charset="us-ascii"
|
||||
|
||||
From: Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||
|
||||
The clocksource infrastructure introduced with commit
|
||||
ad596171ed635c51a9eef829187af100cbf8dcf7 broke 31 bit s390.
|
||||
The reason is that the do_div() primitive for 31 bit always
|
||||
had a restriction: it could only divide an unsigned 64 bit
|
||||
integer by an unsigned 31 bit integer. The clocksource code
|
||||
now uses do_div() with a base value that has the most
|
||||
significant bit set. The result is that clock->cycle_interval
|
||||
has a funny value which causes the linux time to jump around
|
||||
like mad.
|
||||
The solution is "obvious": implement a proper __div64_32
|
||||
function for 31 bit s390.
|
||||
|
||||
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
|
||||
---
|
||||
arch/s390/Kconfig | 4 +
|
||||
arch/s390/lib/Makefile | 1
|
||||
arch/s390/lib/div64.c | 151 +++++++++++++++++++++++++++++++++++++++++++++++
|
||||
include/asm-s390/div64.h | 48 --------------
|
||||
4 files changed, 156 insertions(+), 48 deletions(-)
|
||||
|
||||
--- linux-2.6.18.1.orig/arch/s390/Kconfig
|
||||
+++ linux-2.6.18.1/arch/s390/Kconfig
|
||||
@@ -51,6 +51,10 @@ config 64BIT
|
||||
Select this option if you have a 64 bit IBM zSeries machine
|
||||
and want to use the 64 bit addressing mode.
|
||||
|
||||
+config 32BIT
|
||||
+ bool
|
||||
+ default y if !64BIT
|
||||
+
|
||||
config SMP
|
||||
bool "Symmetric multi-processing support"
|
||||
---help---
|
||||
--- linux-2.6.18.1.orig/arch/s390/lib/Makefile
|
||||
+++ linux-2.6.18.1/arch/s390/lib/Makefile
|
||||
@@ -7,3 +7,4 @@ EXTRA_AFLAGS := -traditional
|
||||
lib-y += delay.o string.o
|
||||
lib-y += $(if $(CONFIG_64BIT),uaccess64.o,uaccess.o)
|
||||
lib-$(CONFIG_SMP) += spinlock.o
|
||||
+lib-$(CONFIG_32BIT) += div64.o
|
||||
--- /dev/null
|
||||
+++ linux-2.6.18.1/arch/s390/lib/div64.c
|
||||
@@ -0,0 +1,151 @@
|
||||
+/*
|
||||
+ * arch/s390/lib/div64.c
|
||||
+ *
|
||||
+ * __div64_32 implementation for 31 bit.
|
||||
+ *
|
||||
+ * Copyright (C) IBM Corp. 2006
|
||||
+ * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
|
||||
+ */
|
||||
+
|
||||
+#include <linux/types.h>
|
||||
+#include <linux/module.h>
|
||||
+
|
||||
+#ifdef CONFIG_MARCH_G5
|
||||
+
|
||||
+/*
|
||||
+ * Function to divide an unsigned 64 bit integer by an unsigned
|
||||
+ * 31 bit integer using signed 64/32 bit division.
|
||||
+ */
|
||||
+static uint32_t __div64_31(uint64_t *n, uint32_t base)
|
||||
+{
|
||||
+ register uint32_t reg2 asm("2");
|
||||
+ register uint32_t reg3 asm("3");
|
||||
+ uint32_t *words = (uint32_t *) n;
|
||||
+ uint32_t tmp;
|
||||
+
|
||||
+ /* Special case base==1, remainder = 0, quotient = n */
|
||||
+ if (base == 1)
|
||||
+ return 0;
|
||||
+ /*
|
||||
+ * Special case base==0 will cause a fixed point divide exception
|
||||
+ * on the dr instruction and may not happen anyway. For the
|
||||
+ * following calculation we can assume base > 1. The first
|
||||
+ * signed 64 / 32 bit division with an upper half of 0 will
|
||||
+ * give the correct upper half of the 64 bit quotient.
|
||||
+ */
|
||||
+ reg2 = 0UL;
|
||||
+ reg3 = words[0];
|
||||
+ asm volatile(
|
||||
+ " dr %0,%2\n"
|
||||
+ : "+d" (reg2), "+d" (reg3) : "d" (base) : "cc" );
|
||||
+ words[0] = reg3;
|
||||
+ reg3 = words[1];
|
||||
+ /*
|
||||
+ * To get the lower half of the 64 bit quotient and the 32 bit
|
||||
+ * remainder we have to use a little trick. Since we only have
|
||||
+ * a signed division the quotient can get too big. To avoid this
|
||||
+ * the 64 bit dividend is halved, then the signed division will
|
||||
+ * work. Afterwards the quotient and the remainder are doubled.
|
||||
+ * If the last bit of the dividend has been one the remainder
|
||||
+ * is increased by one then checked against the base. If the
|
||||
+ * remainder has overflown subtract base and increase the
|
||||
+ * quotient. Simple, no ?
|
||||
+ */
|
||||
+ asm volatile(
|
||||
+ " nr %2,%1\n"
|
||||
+ " srdl %0,1\n"
|
||||
+ " dr %0,%3\n"
|
||||
+ " alr %0,%0\n"
|
||||
+ " alr %1,%1\n"
|
||||
+ " alr %0,%2\n"
|
||||
+ " clr %0,%3\n"
|
||||
+ " jl 0f\n"
|
||||
+ " slr %0,%3\n"
|
||||
+ " alr %1,%2\n"
|
||||
+ "0:\n"
|
||||
+ : "+d" (reg2), "+d" (reg3), "=d" (tmp)
|
||||
+ : "d" (base), "2" (1UL) : "cc" );
|
||||
+ words[1] = reg3;
|
||||
+ return reg2;
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
+ * Function to divide an unsigned 64 bit integer by an unsigned
|
||||
+ * 32 bit integer using the unsigned 64/31 bit division.
|
||||
+ */
|
||||
+uint32_t __div64_32(uint64_t *n, uint32_t base)
|
||||
+{
|
||||
+ uint32_t r;
|
||||
+
|
||||
+ /*
|
||||
+ * If the most significant bit of base is set, divide n by
|
||||
+ * (base/2). That allows to use 64/31 bit division and gives a
|
||||
+ * good approximation of the result: n = (base/2)*q + r. The
|
||||
+ * result needs to be corrected with two simple transformations.
|
||||
+ * If base is already < 2^31-1 __div64_31 can be used directly.
|
||||
+ */
|
||||
+ r = __div64_31(n, ((signed) base < 0) ? (base/2) : base);
|
||||
+ if ((signed) base < 0) {
|
||||
+ uint64_t q = *n;
|
||||
+ /*
|
||||
+ * First transformation:
|
||||
+ * n = (base/2)*q + r
|
||||
+ * = ((base/2)*2)*(q/2) + ((q&1) ? (base/2) : 0) + r
|
||||
+ * Since r < (base/2), r + (base/2) < base.
|
||||
+ * With q1 = (q/2) and r1 = r + ((q&1) ? (base/2) : 0)
|
||||
+ * n = ((base/2)*2)*q1 + r1 with r1 < base.
|
||||
+ */
|
||||
+ if (q & 1)
|
||||
+ r += base/2;
|
||||
+ q >>= 1;
|
||||
+ /*
|
||||
+ * Second transformation. ((base/2)*2) could have lost the
|
||||
+ * last bit.
|
||||
+ * n = ((base/2)*2)*q1 + r1
|
||||
+ * = base*q1 - ((base&1) ? q1 : 0) + r1
|
||||
+ */
|
||||
+ if (base & 1) {
|
||||
+ int64_t rx = r - q;
|
||||
+ /*
|
||||
+ * base is >= 2^31. The worst case for the while
|
||||
+ * loop is n=2^64-1 base=2^31+1. That gives a
|
||||
+ * maximum for q=(2^64-1)/2^31 = 0x1ffffffff. Since
|
||||
+ * base >= 2^31 the loop is finished after a maximum
|
||||
+ * of three iterations.
|
||||
+ */
|
||||
+ while (rx < 0) {
|
||||
+ rx += base;
|
||||
+ q--;
|
||||
+ }
|
||||
+ r = rx;
|
||||
+ }
|
||||
+ *n = q;
|
||||
+ }
|
||||
+ return r;
|
||||
+}
|
||||
+
|
||||
+#else /* MARCH_G5 */
|
||||
+
|
||||
+uint32_t __div64_32(uint64_t *n, uint32_t base)
|
||||
+{
|
||||
+ register uint32_t reg2 asm("2");
|
||||
+ register uint32_t reg3 asm("3");
|
||||
+ uint32_t *words = (uint32_t *) n;
|
||||
+
|
||||
+ reg2 = 0UL;
|
||||
+ reg3 = words[0];
|
||||
+ asm volatile(
|
||||
+ " dlr %0,%2\n"
|
||||
+ : "+d" (reg2), "+d" (reg3) : "d" (base) : "cc" );
|
||||
+ words[0] = reg3;
|
||||
+ reg3 = words[1];
|
||||
+ asm volatile(
|
||||
+ " dlr %0,%2\n"
|
||||
+ : "+d" (reg2), "+d" (reg3) : "d" (base) : "cc" );
|
||||
+ words[1] = reg3;
|
||||
+ return reg2;
|
||||
+}
|
||||
+
|
||||
+#endif /* MARCH_G5 */
|
||||
+
|
||||
+EXPORT_SYMBOL(__div64_32);
|
||||
--- linux-2.6.18.1.orig/include/asm-s390/div64.h
|
||||
+++ linux-2.6.18.1/include/asm-s390/div64.h
|
||||
@@ -1,49 +1 @@
|
||||
-#ifndef __S390_DIV64
|
||||
-#define __S390_DIV64
|
||||
-
|
||||
-#ifndef __s390x__
|
||||
-
|
||||
-/* for do_div "base" needs to be smaller than 2^31-1 */
|
||||
-#define do_div(n, base) ({ \
|
||||
- unsigned long long __n = (n); \
|
||||
- unsigned long __r; \
|
||||
- \
|
||||
- asm (" slr 0,0\n" \
|
||||
- " l 1,%1\n" \
|
||||
- " srdl 0,1\n" \
|
||||
- " dr 0,%2\n" \
|
||||
- " alr 1,1\n" \
|
||||
- " alr 0,0\n" \
|
||||
- " lhi 2,1\n" \
|
||||
- " n 2,%1\n" \
|
||||
- " alr 0,2\n" \
|
||||
- " clr 0,%2\n" \
|
||||
- " jl 0f\n" \
|
||||
- " slr 0,%2\n" \
|
||||
- " ahi 1,1\n" \
|
||||
- "0: st 1,%1\n" \
|
||||
- " l 1,4+%1\n" \
|
||||
- " srdl 0,1\n" \
|
||||
- " dr 0,%2\n" \
|
||||
- " alr 1,1\n" \
|
||||
- " alr 0,0\n" \
|
||||
- " lhi 2,1\n" \
|
||||
- " n 2,4+%1\n" \
|
||||
- " alr 0,2\n" \
|
||||
- " clr 0,%2\n" \
|
||||
- " jl 1f\n" \
|
||||
- " slr 0,%2\n" \
|
||||
- " ahi 1,1\n" \
|
||||
- "1: st 1,4+%1\n" \
|
||||
- " lr %0,0" \
|
||||
- : "=d" (__r), "=m" (__n) \
|
||||
- : "d" (base), "m" (__n) : "0", "1", "2", "cc" ); \
|
||||
- (n) = (__n); \
|
||||
- __r; \
|
||||
-})
|
||||
-
|
||||
-#else /* __s390x__ */
|
||||
#include <asm-generic/div64.h>
|
||||
-#endif /* __s390x__ */
|
||||
-
|
||||
-#endif
|
|
@ -1,73 +0,0 @@
|
|||
From: Al Viro <viro@ftp.linux.org.uk>
|
||||
Date: Fri, 22 Sep 2006 23:10:18 +0000 (+0100)
|
||||
Subject: [PATCH] fix missing ifdefs in syscall classes hookup for generic targets
|
||||
X-Git-Tag: v2.6.19-rc1
|
||||
X-Git-Url: http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=a83fbf635992442edf6aa3252e4008d4a08edf12
|
||||
|
||||
[PATCH] fix missing ifdefs in syscall classes hookup for generic targets
|
||||
|
||||
several targets have no ....at() family and m32r calls its only chown variant
|
||||
chown32(), with __NR_chown being undefined. creat(2) is also absent in some
|
||||
targets.
|
||||
|
||||
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
|
||||
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
|
||||
---
|
||||
|
||||
--- a/include/asm-generic/audit_change_attr.h
|
||||
+++ b/include/asm-generic/audit_change_attr.h
|
||||
@@ -1,16 +1,20 @@
|
||||
__NR_chmod,
|
||||
__NR_fchmod,
|
||||
+#ifdef __NR_chown
|
||||
__NR_chown,
|
||||
__NR_fchown,
|
||||
__NR_lchown,
|
||||
+#endif
|
||||
__NR_setxattr,
|
||||
__NR_lsetxattr,
|
||||
__NR_fsetxattr,
|
||||
__NR_removexattr,
|
||||
__NR_lremovexattr,
|
||||
__NR_fremovexattr,
|
||||
+#ifdef __NR_fchownat
|
||||
__NR_fchownat,
|
||||
__NR_fchmodat,
|
||||
+#endif
|
||||
#ifdef __NR_chown32
|
||||
__NR_chown32,
|
||||
__NR_fchown32,
|
||||
--- a/include/asm-generic/audit_dir_write.h
|
||||
+++ b/include/asm-generic/audit_dir_write.h
|
||||
@@ -1,14 +1,18 @@
|
||||
__NR_rename,
|
||||
__NR_mkdir,
|
||||
__NR_rmdir,
|
||||
+#ifdef __NR_creat
|
||||
__NR_creat,
|
||||
+#endif
|
||||
__NR_link,
|
||||
__NR_unlink,
|
||||
__NR_symlink,
|
||||
__NR_mknod,
|
||||
+#ifdef __NR_mkdirat
|
||||
__NR_mkdirat,
|
||||
__NR_mknodat,
|
||||
__NR_unlinkat,
|
||||
__NR_renameat,
|
||||
__NR_linkat,
|
||||
__NR_symlinkat,
|
||||
+#endif
|
||||
--- a/lib/audit.c
|
||||
+++ b/lib/audit.c
|
||||
@@ -28,8 +28,10 @@ int audit_classify_syscall(int abi, unsi
|
||||
switch(syscall) {
|
||||
case __NR_open:
|
||||
return 2;
|
||||
+#ifdef __NR_openat
|
||||
case __NR_openat:
|
||||
return 3;
|
||||
+#endif
|
||||
#ifdef __NR_socketcall
|
||||
case __NR_socketcall:
|
||||
return 4;
|
|
@ -1,78 +0,0 @@
|
|||
From netdev-owner@vger.kernel.org Mon Oct 23 10:15:13 2006
|
||||
From: Stephen Hemminger <shemminger@osdl.org>
|
||||
Subject: [PATCH] sky2: 88E803X transmit lockup
|
||||
|
||||
The reason sky2 driver was locking up on transmit on the Yukon-FE chipset
|
||||
is that it was misconfiguring the internal RAM buffer so the transmitter
|
||||
and receiver were sharing the same space.
|
||||
|
||||
The code assumed there was 16K of RAM on Yukon-FE (taken from vendor driver
|
||||
sk98lin which is even more f*cked up on this). Then it assigned based on that.
|
||||
The giveaway was that the registers would only hold 9bits so both RX/TX
|
||||
had 0..1ff for space. It is a wonder it worked at all!
|
||||
|
||||
This patch addresses this, and fixes an easily reproducible hang on Transmit.
|
||||
Only the Yukon-FE chip is Marvell 88E803X (10/100 only) are affected.
|
||||
|
||||
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
|
||||
|
||||
--- sky2.orig/drivers/net/sky2.c 2006-10-20 16:37:56.000000000 -0700
|
||||
+++ sky2/drivers/net/sky2.c 2006-10-20 16:38:16.000000000 -0700
|
||||
@@ -699,16 +699,10 @@
|
||||
|
||||
}
|
||||
|
||||
-/* Assign Ram Buffer allocation.
|
||||
- * start and end are in units of 4k bytes
|
||||
- * ram registers are in units of 64bit words
|
||||
- */
|
||||
-static void sky2_ramset(struct sky2_hw *hw, u16 q, u8 startk, u8 endk)
|
||||
+/* Assign Ram Buffer allocation in units of 64bit (8 bytes) */
|
||||
+static void sky2_ramset(struct sky2_hw *hw, u16 q, u32 start, u32 end)
|
||||
{
|
||||
- u32 start, end;
|
||||
-
|
||||
- start = startk * 4096/8;
|
||||
- end = (endk * 4096/8) - 1;
|
||||
+ pr_debug(PFX "q %d %#x %#x\n", q, start, end);
|
||||
|
||||
sky2_write8(hw, RB_ADDR(q, RB_CTRL), RB_RST_CLR);
|
||||
sky2_write32(hw, RB_ADDR(q, RB_START), start);
|
||||
@@ -717,7 +711,7 @@
|
||||
sky2_write32(hw, RB_ADDR(q, RB_RP), start);
|
||||
|
||||
if (q == Q_R1 || q == Q_R2) {
|
||||
- u32 space = (endk - startk) * 4096/8;
|
||||
+ u32 space = end - start + 1;
|
||||
u32 tp = space - space/4;
|
||||
|
||||
/* On receive queue's set the thresholds
|
||||
@@ -1199,19 +1193,16 @@
|
||||
|
||||
sky2_mac_init(hw, port);
|
||||
|
||||
- /* Determine available ram buffer space (in 4K blocks).
|
||||
- * Note: not sure about the FE setting below yet
|
||||
- */
|
||||
- if (hw->chip_id == CHIP_ID_YUKON_FE)
|
||||
- ramsize = 4;
|
||||
- else
|
||||
- ramsize = sky2_read8(hw, B2_E_0);
|
||||
+ /* Determine available ram buffer space in qwords. */
|
||||
+ ramsize = sky2_read8(hw, B2_E_0) * 4096/8;
|
||||
|
||||
- /* Give transmitter one third (rounded up) */
|
||||
- rxspace = ramsize - (ramsize + 2) / 3;
|
||||
+ if (ramsize > 6*1024/8)
|
||||
+ rxspace = ramsize - (ramsize + 2) / 3;
|
||||
+ else
|
||||
+ rxspace = ramsize / 2;
|
||||
|
||||
- sky2_ramset(hw, rxqaddr[port], 0, rxspace);
|
||||
- sky2_ramset(hw, txqaddr[port], rxspace, ramsize);
|
||||
+ sky2_ramset(hw, rxqaddr[port], 0, rxspace-1);
|
||||
+ sky2_ramset(hw, txqaddr[port], rxspace, ramsize-1);
|
||||
|
||||
/* Make sure SyncQ is disabled */
|
||||
sky2_write8(hw, RB_ADDR(port == 0 ? Q_XS1 : Q_XS2, RB_CTRL),
|
||||
|
|
@ -1,135 +0,0 @@
|
|||
[SPARC64]: Fix PCI memory space root resource on Hummingbird.
|
||||
|
||||
For Hummingbird PCI controllers, we should create the root
|
||||
PCI memory space resource as the full 4GB area, and then
|
||||
allocate the IOMMU DMA translation window out of there.
|
||||
|
||||
The old code just assumed that the IOMMU DMA translation base
|
||||
to the top of the 4GB area was unusable. This is not true on
|
||||
many systems such as SB100 and SB150, where the IOMMU DMA
|
||||
translation window sits at 0xc0000000->0xdfffffff.
|
||||
|
||||
So what would happen is that any device mapped by the firmware
|
||||
at the top section 0xe0000000->0xffffffff would get remapped
|
||||
by Linux somewhere else leading to all kinds of problems and
|
||||
boot failures.
|
||||
|
||||
While we're here, report more cases of OBP resource assignment
|
||||
conflicts. The only truly valid ones are ROM resource conflicts.
|
||||
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
diff --git a/arch/sparc64/kernel/pci_common.c b/arch/sparc64/kernel/pci_common.c
|
||||
index 7a59cc7..827ae30 100644
|
||||
--- a/arch/sparc64/kernel/pci_common.c
|
||||
+++ b/arch/sparc64/kernel/pci_common.c
|
||||
@@ -330,19 +330,6 @@ #endif
|
||||
return res;
|
||||
}
|
||||
|
||||
-static int __init pdev_resource_collisions_expected(struct pci_dev *pdev)
|
||||
-{
|
||||
- if (pdev->vendor != PCI_VENDOR_ID_SUN)
|
||||
- return 0;
|
||||
-
|
||||
- if (pdev->device == PCI_DEVICE_ID_SUN_RIO_EBUS ||
|
||||
- pdev->device == PCI_DEVICE_ID_SUN_RIO_1394 ||
|
||||
- pdev->device == PCI_DEVICE_ID_SUN_RIO_USB)
|
||||
- return 1;
|
||||
-
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
static void __init pdev_record_assignments(struct pci_pbm_info *pbm,
|
||||
struct pci_dev *pdev)
|
||||
{
|
||||
@@ -400,19 +387,23 @@ static void __init pdev_record_assignmen
|
||||
pbm->parent->resource_adjust(pdev, res, root);
|
||||
|
||||
if (request_resource(root, res) < 0) {
|
||||
+ int rnum;
|
||||
+
|
||||
/* OK, there is some conflict. But this is fine
|
||||
* since we'll reassign it in the fixup pass.
|
||||
*
|
||||
- * We notify the user that OBP made an error if it
|
||||
- * is a case we don't expect.
|
||||
+ * Do not print the warning for ROM resources
|
||||
+ * as such a conflict is quite common and
|
||||
+ * harmless as the ROM bar is disabled.
|
||||
*/
|
||||
- if (!pdev_resource_collisions_expected(pdev)) {
|
||||
- printk(KERN_ERR "PCI: Address space collision on region %ld "
|
||||
+ rnum = (res - &pdev->resource[0]);
|
||||
+ if (rnum != PCI_ROM_RESOURCE)
|
||||
+ printk(KERN_ERR "PCI: Resource collision, "
|
||||
+ "region %d "
|
||||
"[%016lx:%016lx] of device %s\n",
|
||||
- (res - &pdev->resource[0]),
|
||||
+ rnum,
|
||||
res->start, res->end,
|
||||
pci_name(pdev));
|
||||
- }
|
||||
}
|
||||
}
|
||||
}
|
||||
diff --git a/arch/sparc64/kernel/pci_sabre.c b/arch/sparc64/kernel/pci_sabre.c
|
||||
index 4589185..f04c6d2 100644
|
||||
--- a/arch/sparc64/kernel/pci_sabre.c
|
||||
+++ b/arch/sparc64/kernel/pci_sabre.c
|
||||
@@ -1196,7 +1196,7 @@ static void pbm_register_toplevel_resour
|
||||
&pbm->mem_space);
|
||||
}
|
||||
|
||||
-static void sabre_pbm_init(struct pci_controller_info *p, struct device_node *dp, u32 dma_begin)
|
||||
+static void sabre_pbm_init(struct pci_controller_info *p, struct device_node *dp, u32 dma_start, u32 dma_end)
|
||||
{
|
||||
struct pci_pbm_info *pbm;
|
||||
struct device_node *node;
|
||||
@@ -1261,6 +1261,8 @@ static void sabre_pbm_init(struct pci_co
|
||||
node = node->sibling;
|
||||
}
|
||||
if (simbas_found == 0) {
|
||||
+ struct resource *rp;
|
||||
+
|
||||
/* No APBs underneath, probably this is a hummingbird
|
||||
* system.
|
||||
*/
|
||||
@@ -1302,8 +1304,10 @@ static void sabre_pbm_init(struct pci_co
|
||||
pbm->io_space.end = pbm->io_space.start + (1UL << 24) - 1UL;
|
||||
pbm->io_space.flags = IORESOURCE_IO;
|
||||
|
||||
- pbm->mem_space.start = p->pbm_A.controller_regs + SABRE_MEMSPACE;
|
||||
- pbm->mem_space.end = pbm->mem_space.start + (unsigned long)dma_begin - 1UL;
|
||||
+ pbm->mem_space.start =
|
||||
+ (p->pbm_A.controller_regs + SABRE_MEMSPACE);
|
||||
+ pbm->mem_space.end =
|
||||
+ (pbm->mem_space.start + ((1UL << 32UL) - 1UL));
|
||||
pbm->mem_space.flags = IORESOURCE_MEM;
|
||||
|
||||
if (request_resource(&ioport_resource, &pbm->io_space) < 0) {
|
||||
@@ -1315,6 +1319,17 @@ static void sabre_pbm_init(struct pci_co
|
||||
prom_halt();
|
||||
}
|
||||
|
||||
+ rp = kmalloc(sizeof(*rp), GFP_KERNEL);
|
||||
+ if (!rp) {
|
||||
+ prom_printf("Cannot allocate IOMMU resource.\n");
|
||||
+ prom_halt();
|
||||
+ }
|
||||
+ rp->name = "IOMMU";
|
||||
+ rp->start = pbm->mem_space.start + (unsigned long) dma_start;
|
||||
+ rp->end = pbm->mem_space.start + (unsigned long) dma_end - 1UL;
|
||||
+ rp->flags = IORESOURCE_BUSY;
|
||||
+ request_resource(&pbm->mem_space, rp);
|
||||
+
|
||||
pci_register_legacy_regions(&pbm->io_space,
|
||||
&pbm->mem_space);
|
||||
}
|
||||
@@ -1450,5 +1465,5 @@ void sabre_init(struct device_node *dp,
|
||||
/*
|
||||
* Look for APB underneath.
|
||||
*/
|
||||
- sabre_pbm_init(p, dp, vdma[0]);
|
||||
+ sabre_pbm_init(p, dp, vdma[0], vdma[0] + vdma[1]);
|
||||
}
|
|
@ -1,40 +0,0 @@
|
|||
From git-commits-head-owner@vger.kernel.org Mon Oct 23 10:18:42 2006
|
||||
Date: Sun, 22 Oct 2006 00:59:04 GMT
|
||||
Message-Id: <200610220059.k9M0x4e8025532@hera.kernel.org>
|
||||
From: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
|
||||
To: git-commits-head@vger.kernel.org
|
||||
Subject: [PATCH] x86-64: Fix C3 timer test
|
||||
|
||||
commit aa026ede513b7d672fa7d9106b2f2a475455dcf2
|
||||
tree 13a4e7934f3597336ebdfde1d720b5f2c877ad6e
|
||||
parent cb7fabcf9d4340b61f012cc7e8e3d7ff5c4f441c
|
||||
author Andi Kleen <ak@suse.de> 1161470475 +0200
|
||||
committer Andi Kleen <andi@basil.nowhere.org> 1161470475 +0200
|
||||
|
||||
[PATCH] x86-64: Fix C3 timer test
|
||||
|
||||
There was a typo in the C3 latency test to decide of the TSC
|
||||
should be used or not. It used the C2 latency threshold, not the
|
||||
C3 one. Fix that.
|
||||
|
||||
This should fix the time on various dual core laptops.
|
||||
|
||||
Signed-off-by: Andi Kleen <ak@suse.de>
|
||||
|
||||
arch/x86_64/kernel/time.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/x86_64/kernel/time.c b/arch/x86_64/kernel/time.c
|
||||
index 1ba5a44..88722f1 100644
|
||||
--- a/arch/x86_64/kernel/time.c
|
||||
+++ b/arch/x86_64/kernel/time.c
|
||||
@@ -948,7 +948,7 @@ #endif
|
||||
if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) {
|
||||
#ifdef CONFIG_ACPI
|
||||
/* But TSC doesn't tick in C3 so don't use it there */
|
||||
- if (acpi_fadt.length > 0 && acpi_fadt.plvl3_lat < 100)
|
||||
+ if (acpi_fadt.length > 0 && acpi_fadt.plvl3_lat < 1000)
|
||||
return 1;
|
||||
#endif
|
||||
return 0;
|
||||
|
|
@ -1,20 +1,22 @@
|
|||
- bugfix/serial_cs-resume.patch
|
||||
- bugfix/serial_core-suspend_oops.patch
|
||||
- bugfix/dac960_ipr_pci_clash.patch
|
||||
- sparc64-atyfb-xl-gr.patch
|
||||
+ bugfix/sparc/sunblade-clock-hang.patch
|
||||
- bugfix/bluetooth_rfcomm_oops.patch
|
||||
- bugfix/via_pmu_backlight-fix_panic_sleep.patch
|
||||
- bugfix/sky2-receive-FIFO-fix.patch
|
||||
+ bugfix/sparc/compat-alloc-user-space-alignment.patch
|
||||
+ bugfix/arm/n2100-serial-irq.patch
|
||||
+ bugfix/arm/n2100-eth1-irq.patch
|
||||
+ bugfix/sparc/bus-id-size.patch
|
||||
+ bugfix/net-netpoll.patch
|
||||
+ bugfix/net-sky2-lockup.patch
|
||||
+ features/net-forcedeth-swsusp.patch
|
||||
+ bugfix/net-r8169-mmio8167.patch
|
||||
+ features/net-r8169-pci_id-corega.patch
|
||||
+ bugfix/net-r8169-hotplug_loop.patch
|
||||
+ bugfix/arm/arm-generic-time.patch
|
||||
+ bugfix/arm/ixp4xx-clocksource.patch
|
||||
+ bugfix/audit-syscalls.patch
|
||||
+ bugfix/net-r8169-no_mac_adress_change.patch
|
||||
+ bugfix/x86-64-c3_timer.patch
|
||||
+ features/arm/nslu2-setup-mac.patch
|
||||
+ features/arm/nslu2-eth-mac.patch
|
||||
+ features/arm/ixp4xx-0.2.1-driver.patch
|
||||
|
@ -22,7 +24,6 @@
|
|||
+ features/arm/ixp4xx-net-driver-improve-mac-handling.patch
|
||||
+ bugfix/powerpc/interrupt-alignement.patch
|
||||
+ bugfix/sparc/sunblade1k-boot-fix.patch
|
||||
+ bugfix/__div64_32-for-31-bit.patch
|
||||
+ bugfix/net-bcm43xx_netdev_watchdog.patch
|
||||
+ bugfix/copy-user-highpage.patch
|
||||
- mips-sb1-duart-tts.patch
|
||||
|
@ -42,3 +43,4 @@
|
|||
+ features/mips/backtrace.patch
|
||||
+ features/fintek-f75375.patch
|
||||
+ bugfix/sparc/t1k-cpu-lockup.patch
|
||||
+ bugfix/2.6.18.2
|
||||
|
|
Loading…
Reference in New Issue