Apply some patches from linux-mips' linux-2.6.18-stable GIT tree

svn path=/dists/trunk/linux-2.6/; revision=7585
This commit is contained in:
Martin Michlmayr 2006-10-09 10:04:54 +00:00
parent 7d6ad8bcfe
commit 1cde678513
9 changed files with 268 additions and 0 deletions

10
debian/changelog vendored
View File

@ -15,6 +15,16 @@ linux-2.6 (2.6.18-3) UNRELEASED; urgency=low
[ maximilian attems ]
* [mipsel] Disable CONFIG_SECURITY_SECLVL on DECstations too.
[ Martin Michlmayr ]
* [mips] Apply some patches from linux-mips' linux-2.6.18-stable GIT tree:
- The o32 fstatat syscall behaves differently on 32 and 64 bit kernels
- fstatat syscall names
- Have headers_install install <asm/cachectl.h> and <asm/sysmips.h>.
- SB1250: Interrupt handler fixes
- BCM1480: Mask pending interrupts against c0_status.im.
- Cobalt: Time runs too quickly
- Show actual CPU information in /proc/cpuinfo
-- maximilian attems <maks@sternwelten.at> Thu, 5 Oct 2006 17:10:46 +0200
linux-2.6 (2.6.18-2) unstable; urgency=low

View File

@ -0,0 +1,29 @@
From: Scott Ashcroft <scott.ashcroft@talk21.com>
Date: Fri, 6 Oct 2006 15:54:54 +0000 (+0100)
Subject: [MIPS] Cobalt: Time runs too quickly
X-Git-Tag: linux-1.1.68
X-Git-Url: http://www.linux-mips.org/git?p=linux.git;a=commitdiff;h=57d3404f99d0b3848131e1467d7d2467f2415e4a
[MIPS] Cobalt: Time runs too quickly
A kernel built with HZ==250 runs about 4 four times too quickly on a
Cobalt RaQ2.
Signed-off-by: Scott Ashcroft <scott.ashcroft@talk21.com>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
(cherry picked from a49ead7800722591d9862c1d7f075fed9c767bc5 commit)
---
--- a/arch/mips/cobalt/setup.c
+++ b/arch/mips/cobalt/setup.c
@@ -51,8 +51,8 @@ const char *get_system_type(void)
void __init plat_timer_setup(struct irqaction *irq)
{
- /* Load timer value for 1KHz (TCLK is 50MHz) */
- GALILEO_OUTL(50*1000*1000 / 1000, GT_TC0_OFS);
+ /* Load timer value for HZ (TCLK is 50MHz) */
+ GALILEO_OUTL(50*1000*1000 / HZ, GT_TC0_OFS);
/* Enable timer */
GALILEO_OUTL(GALILEO_ENTC0 | GALILEO_SELTC0, GT_TC_CONTROL_OFS);

View File

@ -0,0 +1,57 @@
From: Richard Sandiford <richard@codesourcery.com>
Date: Sun, 17 Sep 2006 19:38:39 +0000 (+0100)
Subject: [MIPS] fstatat syscall names
X-Git-Tag: linux-1.1.68
X-Git-Url: http://www.linux-mips.org/git?p=linux.git;a=commitdiff;h=7b2b78a2e0960138002f01a2e5d63a961180dd5c
[MIPS] fstatat syscall names
MIPS is the only port to call its fstatat()-related syscalls
"__NR_fstatat". Now I can see why that might be seen as every
other port being wrong, but I think for o32, it is at best confusing.
__NR_fstat provides a plain (32-bit) stat while __NR_fstatat provides a
64-bit stat. Changing the name to __NR_fstatat64 would make things more
explicit, match x86, and make the glibc port slightly easier.
The current name is more appropriate for n32 and n64, but it would be
appropriate for other 64-bit targets too, and those targets have chosen
to call it __NR_newfstatat instead. Using the same name for MIPS would
again be more consistent and make the glibc port slightly easier.
I'm not wedded to this idea if the current names are preferred,
but FWIW...
Signed-off-by: Richard Sandiford <richard@codesourcery.com>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
(cherry picked from 3e60ebf8d477c95168708c64ed60823a08f559f0 commit)
---
--- a/include/asm-mips/unistd.h
+++ b/include/asm-mips/unistd.h
@@ -313,7 +313,7 @@
#define __NR_mknodat (__NR_Linux + 290)
#define __NR_fchownat (__NR_Linux + 291)
#define __NR_futimesat (__NR_Linux + 292)
-#define __NR_fstatat (__NR_Linux + 293)
+#define __NR_fstatat64 (__NR_Linux + 293)
#define __NR_unlinkat (__NR_Linux + 294)
#define __NR_renameat (__NR_Linux + 295)
#define __NR_linkat (__NR_Linux + 296)
@@ -600,7 +600,7 @@
#define __NR_mknodat (__NR_Linux + 249)
#define __NR_fchownat (__NR_Linux + 250)
#define __NR_futimesat (__NR_Linux + 251)
-#define __NR_fstatat (__NR_Linux + 252)
+#define __NR_newfstatat (__NR_Linux + 252)
#define __NR_unlinkat (__NR_Linux + 253)
#define __NR_renameat (__NR_Linux + 254)
#define __NR_linkat (__NR_Linux + 255)
@@ -891,7 +891,7 @@
#define __NR_mknodat (__NR_Linux + 253)
#define __NR_fchownat (__NR_Linux + 254)
#define __NR_futimesat (__NR_Linux + 255)
-#define __NR_fstatat (__NR_Linux + 256)
+#define __NR_newfstatat (__NR_Linux + 256)
#define __NR_unlinkat (__NR_Linux + 257)
#define __NR_renameat (__NR_Linux + 258)
#define __NR_linkat (__NR_Linux + 259)

View File

@ -0,0 +1,19 @@
From: Ralf Baechle <ralf@linux-mips.org>
Date: Sat, 23 Sep 2006 17:08:36 +0000 (+0100)
Subject: [MIPS] Have headers_install install <asm/cachectl.h> and <asm/sysmips.h>.
X-Git-Tag: linux-1.1.68
X-Git-Url: http://www.linux-mips.org/git?p=linux.git;a=commitdiff;h=e70d9b79a35ac822ec5913278d2472aa728d1476
[MIPS] Have headers_install install <asm/cachectl.h> and <asm/sysmips.h>.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
(cherry picked from 2ff556ab120549346660fd7e0cd25782ebe5381d commit)
---
--- a/include/asm-mips/Kbuild
+++ b/include/asm-mips/Kbuild
@@ -1,3 +1,3 @@
include include/asm-generic/Kbuild.asm
-header-y += sgidefs.h
+header-y += cachectl.h sgidefs.h sysmips.h

View File

@ -0,0 +1,34 @@
From: Richard Sandiford <richard@codesourcery.com>
Date: Sun, 17 Sep 2006 19:30:46 +0000 (+0100)
Subject: [MIPS] The o32 fstatat syscall behaves differently on 32 and 64 bit kernels
X-Git-Tag: linux-1.1.68
X-Git-Url: http://www.linux-mips.org/git?p=linux.git;a=commitdiff;h=ee0e97c8177cdc1362f34ac64445671c8ba3a813
[MIPS] The o32 fstatat syscall behaves differently on 32 and 64 bit kernels
While working on a glibc patch to support the fstatat() functions[1],
I noticed that the o32 implementation behaves differently on 32-bit and
64-bit kernels; the former provides a stat64 while the latter provides
a plain (o32) stat. I think the former is what's intended, as there is
no separate fstatat64. It's also what x86 does.
I think this is just a case of a compat too far.
[1] I've seen Khem's patch, but I don't think it's right.
Signed-off-by: Richard Sandiford <richard@codesourcery.com>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
(cherry picked from c38c8f19bd7566743fd80c1d42f54c9a5a5d1443 commit)
---
--- a/arch/mips/kernel/scall64-o32.S
+++ b/arch/mips/kernel/scall64-o32.S
@@ -498,7 +498,7 @@ sys_call_table:
PTR sys_mknodat /* 4290 */
PTR sys_fchownat
PTR compat_sys_futimesat
- PTR compat_sys_newfstatat
+ PTR sys_newfstatat
PTR sys_unlinkat
PTR sys_renameat /* 4295 */
PTR sys_linkat

View File

@ -0,0 +1,52 @@
From: Karl-Johan Karlsson <creideiki+linux-mips@ferretporn.se>
Date: Sat, 7 Oct 2006 23:15:02 +0000 (+0200)
Subject: [MIPS] Show actual CPU information in /proc/cpuinfo
X-Git-Tag: linux-1.1.68
X-Git-Url: http://www.linux-mips.org/git?p=linux.git;a=commitdiff;h=fc3dee0744865746ad02824e241442edc6ce7a07
[MIPS] Show actual CPU information in /proc/cpuinfo
Currently, /proc/cpuinfo contains several copies of the information for
whatever processor we happen to be scheduled on. This patch makes it contain
the proper information for each CPU, which is particularly useful on mixed
R12k/R10k IP27 machines.
Signed-off-by: Karl-Johan Karlsson <creideiki@lysator.liu.se>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
(cherry picked from fa91b67b68a484c0cd69f29ef9acb3683bc82928 commit)
---
--- a/arch/mips/kernel/proc.c
+++ b/arch/mips/kernel/proc.c
@@ -89,9 +89,9 @@ static const char *cpu_name[] = {
static int show_cpuinfo(struct seq_file *m, void *v)
{
- unsigned int version = current_cpu_data.processor_id;
- unsigned int fp_vers = current_cpu_data.fpu_id;
unsigned long n = (unsigned long) v - 1;
+ unsigned int version = cpu_data[n].processor_id;
+ unsigned int fp_vers = cpu_data[n].fpu_id;
char fmt [64];
#ifdef CONFIG_SMP
@@ -108,8 +108,8 @@ static int show_cpuinfo(struct seq_file
seq_printf(m, "processor\t\t: %ld\n", n);
sprintf(fmt, "cpu model\t\t: %%s V%%d.%%d%s\n",
cpu_has_fpu ? " FPU V%d.%d" : "");
- seq_printf(m, fmt, cpu_name[current_cpu_data.cputype <= CPU_LAST ?
- current_cpu_data.cputype : CPU_UNKNOWN],
+ seq_printf(m, fmt, cpu_name[cpu_data[n].cputype <= CPU_LAST ?
+ cpu_data[n].cputype : CPU_UNKNOWN],
(version >> 4) & 0x0f, version & 0x0f,
(fp_vers >> 4) & 0x0f, fp_vers & 0x0f);
seq_printf(m, "BogoMIPS\t\t: %lu.%02lu\n",
@@ -118,7 +118,7 @@ static int show_cpuinfo(struct seq_file
seq_printf(m, "wait instruction\t: %s\n", cpu_wait ? "yes" : "no");
seq_printf(m, "microsecond timers\t: %s\n",
cpu_has_counter ? "yes" : "no");
- seq_printf(m, "tlb_entries\t\t: %d\n", current_cpu_data.tlbsize);
+ seq_printf(m, "tlb_entries\t\t: %d\n", cpu_data[n].tlbsize);
seq_printf(m, "extra interrupt vector\t: %s\n",
cpu_has_divec ? "yes" : "no");
seq_printf(m, "hardware watchpoint\t: %s\n",

View File

@ -0,0 +1,37 @@
From: Maciej W. Rozycki <macro@linux-mips.org>
Date: Tue, 3 Oct 2006 11:42:02 +0000 (+0100)
Subject: [MIPS] SB1250: Interrupt handler fixes
X-Git-Tag: linux-1.1.68
X-Git-Url: http://www.linux-mips.org/git?p=linux.git;a=commitdiff;h=c9477be2bb9e9a1885630627f439d19d7df6d33a
[MIPS] SB1250: Interrupt handler fixes
Mask cp0.status against cp0.cause. Additionally, spurious interrupts are
not recorded.
Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
(cherry picked from 0196782e2ac607a19cfc88d9d2bd3f3f03e5908b commit)
---
--- a/arch/mips/sibyte/sb1250/irq.c
+++ b/arch/mips/sibyte/sb1250/irq.c
@@ -442,7 +442,7 @@ asmlinkage void plat_irq_dispatch(struct
* blasting the high 32 bits.
*/
- pending = read_c0_cause();
+ pending = read_c0_cause() & read_c0_status();
#ifdef CONFIG_SIBYTE_SB1250_PROF
if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */
@@ -476,5 +476,8 @@ asmlinkage void plat_irq_dispatch(struct
R_IMR_INTERRUPT_STATUS_BASE)));
if (mask)
do_IRQ(fls64(mask) - 1, regs);
- }
+ else
+ spurious_interrupt(regs);
+ } else
+ spurious_interrupt(regs);
}

View File

@ -0,0 +1,23 @@
From: Ralf Baechle <ralf@linux-mips.org>
Date: Tue, 3 Oct 2006 13:42:02 +0000 (+0100)
Subject: [MIPS] BCM1480: Mask pending interrupts against c0_status.im.
X-Git-Tag: linux-1.1.68
X-Git-Url: http://www.linux-mips.org/git?p=linux.git;a=commitdiff;h=b1f4fee6a18b48da275920df71b312e01ba973b9
[MIPS] BCM1480: Mask pending interrupts against c0_status.im.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
(cherry picked from f2268c74623b9d82e4fe9b1e0951706c2360109e commit)
---
--- a/arch/mips/sibyte/bcm1480/irq.c
+++ b/arch/mips/sibyte/bcm1480/irq.c
@@ -482,7 +482,7 @@ asmlinkage void plat_irq_dispatch(struct
write_c0_compare(read_c0_count());
#endif
- pending = read_c0_cause();
+ pending = read_c0_cause() & read_c0_status();
#ifdef CONFIG_SIBYTE_BCM1480_PROF
if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */

View File

@ -1 +1,8 @@
+ alpha-prctl.patch
+ bugfix/mips/o32_fstatat_syscall.patch
+ bugfix/mips/fstatat_syscall_names.patch
+ bugfix/mips/headers_install-add.patch
+ bugfix/mips/sb1250_interrupt_fixes.patch
+ bugfix/mips/sb1480_interrupt_fixes.patch
+ bugfix/mips/cobalt_hz.patch
+ bugfix/mips/real-cpu-cpuinfo.patch