diff --git a/debian/changelog b/debian/changelog index 380de99fd..a2c60f23d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -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 and . + - 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 Thu, 5 Oct 2006 17:10:46 +0200 linux-2.6 (2.6.18-2) unstable; urgency=low diff --git a/debian/patches/bugfix/mips/cobalt_hz.patch b/debian/patches/bugfix/mips/cobalt_hz.patch new file mode 100644 index 000000000..4478bdbae --- /dev/null +++ b/debian/patches/bugfix/mips/cobalt_hz.patch @@ -0,0 +1,29 @@ +From: Scott Ashcroft +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 +Signed-off-by: Ralf Baechle +(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); diff --git a/debian/patches/bugfix/mips/fstatat_syscall_names.patch b/debian/patches/bugfix/mips/fstatat_syscall_names.patch new file mode 100644 index 000000000..16eb9191d --- /dev/null +++ b/debian/patches/bugfix/mips/fstatat_syscall_names.patch @@ -0,0 +1,57 @@ +From: Richard Sandiford +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 +Signed-off-by: Ralf Baechle +(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) diff --git a/debian/patches/bugfix/mips/headers_install-add.patch b/debian/patches/bugfix/mips/headers_install-add.patch new file mode 100644 index 000000000..e74b9661d --- /dev/null +++ b/debian/patches/bugfix/mips/headers_install-add.patch @@ -0,0 +1,19 @@ +From: Ralf Baechle +Date: Sat, 23 Sep 2006 17:08:36 +0000 (+0100) +Subject: [MIPS] Have headers_install install and . +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 and . + +Signed-off-by: Ralf Baechle +(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 diff --git a/debian/patches/bugfix/mips/o32_fstatat_syscall.patch b/debian/patches/bugfix/mips/o32_fstatat_syscall.patch new file mode 100644 index 000000000..669677b0b --- /dev/null +++ b/debian/patches/bugfix/mips/o32_fstatat_syscall.patch @@ -0,0 +1,34 @@ +From: Richard Sandiford +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 +Signed-off-by: Ralf Baechle +(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 diff --git a/debian/patches/bugfix/mips/real-cpu-cpuinfo.patch b/debian/patches/bugfix/mips/real-cpu-cpuinfo.patch new file mode 100644 index 000000000..3890def7a --- /dev/null +++ b/debian/patches/bugfix/mips/real-cpu-cpuinfo.patch @@ -0,0 +1,52 @@ +From: Karl-Johan Karlsson +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 +Signed-off-by: Ralf Baechle +(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", diff --git a/debian/patches/bugfix/mips/sb1250_interrupt_fixes.patch b/debian/patches/bugfix/mips/sb1250_interrupt_fixes.patch new file mode 100644 index 000000000..241b416b9 --- /dev/null +++ b/debian/patches/bugfix/mips/sb1250_interrupt_fixes.patch @@ -0,0 +1,37 @@ +From: Maciej W. Rozycki +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 +Signed-off-by: Ralf Baechle +(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); + } diff --git a/debian/patches/bugfix/mips/sb1480_interrupt_fixes.patch b/debian/patches/bugfix/mips/sb1480_interrupt_fixes.patch new file mode 100644 index 000000000..3d036ec42 --- /dev/null +++ b/debian/patches/bugfix/mips/sb1480_interrupt_fixes.patch @@ -0,0 +1,23 @@ +From: Ralf Baechle +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 +(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 */ diff --git a/debian/patches/series/3 b/debian/patches/series/3 index 9aeaccb47..59c19ef93 100644 --- a/debian/patches/series/3 +++ b/debian/patches/series/3 @@ -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