Re: test10-pre7 on Sparc

From: David S. Miller (davem@redhat.com)
Date: Tue Oct 31 2000 - 15:32:02 EST


   Date: Tue, 31 Oct 2000 19:11:23 +0100
   From: Rafal Maszkowski <rzm@icm.edu.pl>

   I am trying to run 2.4 kernel to have up to date ATM on SPARCstation 10,
   possibly with 2 CPUs. Did not succeed to boot neither Linus nor CVS version
   recently. Compilation of 2.4.0.10.7:

Current CVS has both of these errors fixed, and such patches
were sent to Linus (included below):

diff -u --recursive --new-file --exclude=CVS --exclude=.cvsignore vanilla/linux/arch/sparc64/defconfig linux/arch/sparc64/defconfig
--- vanilla/linux/arch/sparc64/defconfig Mon Oct 30 11:24:56 2000
+++ linux/arch/sparc64/defconfig Fri Oct 27 16:15:59 2000
@@ -263,6 +263,7 @@
 # CONFIG_BLK_DEV_OPTI621 is not set
 # CONFIG_BLK_DEV_PDC202XX is not set
 # CONFIG_PDC202XX_BURST is not set
+# CONFIG_BLK_DEV_OSB4 is not set
 # CONFIG_BLK_DEV_SIS5513 is not set
 # CONFIG_BLK_DEV_SLC90E66 is not set
 # CONFIG_BLK_DEV_TRM290 is not set
diff -u --recursive --new-file --exclude=CVS --exclude=.cvsignore vanilla/linux/arch/sparc64/kernel/smp.c linux/arch/sparc64/kernel/smp.c
--- vanilla/linux/arch/sparc64/kernel/smp.c Sun Aug 6 11:43:17 2000
+++ linux/arch/sparc64/kernel/smp.c Fri Oct 27 11:23:45 2000
@@ -28,6 +28,7 @@
 #include <asm/softirq.h>
 #include <asm/uaccess.h>
 #include <asm/timer.h>
+#include <asm/starfire.h>
 
 #define __KERNEL_SYSCALLS__
 #include <linux/unistd.h>
@@ -302,9 +303,17 @@
 
 static inline void xcall_deliver(u64 data0, u64 data1, u64 data2, u64 pstate, unsigned long cpu)
 {
- u64 result, target = (cpu << 14) | 0x70;
+ u64 result, target;
         int stuck, tmp;
 
+ if (this_is_starfire) {
+ /* map to real upaid */
+ cpu = (((cpu & 0x3c) << 1) |
+ ((cpu & 0x40) >> 4) |
+ (cpu & 0x3));
+ }
+
+ target = (cpu << 14) | 0x70;
 #ifdef XCALL_DEBUG
         printk("CPU[%d]: xcall(data[%016lx:%016lx:%016lx],tgt[%016lx])\n",
                smp_processor_id(), data0, data1, data2, target);
diff -u --recursive --new-file --exclude=CVS --exclude=.cvsignore vanilla/linux/arch/sparc64/kernel/sparc64_ksyms.c linux/arch/sparc64/kernel/sparc64_ksyms.c
--- vanilla/linux/arch/sparc64/kernel/sparc64_ksyms.c Mon Oct 30 11:24:56 2000
+++ linux/arch/sparc64/kernel/sparc64_ksyms.c Mon Oct 30 13:01:40 2000
@@ -1,4 +1,4 @@
-/* $Id: sparc64_ksyms.c,v 1.92 2000/08/09 08:45:40 anton Exp $
+/* $Id: sparc64_ksyms.c,v 1.95 2000/10/30 21:01:40 davem Exp $
  * arch/sparc64/kernel/sparc64_ksyms.c: Sparc64 specific ksyms support.
  *
  * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
@@ -18,6 +18,8 @@
 #include <linux/in6.h>
 #include <linux/pci.h>
 #include <linux/interrupt.h>
+#include <linux/fs_struct.h>
+#include <linux/mm.h>
 
 #include <asm/oplib.h>
 #include <asm/delay.h>
@@ -29,6 +31,7 @@
 #include <asm/hardirq.h>
 #include <asm/idprom.h>
 #include <asm/svr4.h>
+#include <asm/elf.h>
 #include <asm/head.h>
 #include <asm/smp.h>
 #include <asm/mostek.h>
@@ -37,6 +40,7 @@
 #include <asm/uaccess.h>
 #include <asm/checksum.h>
 #include <asm/fpumacro.h>
+#include <asm/pgalloc.h>
 #ifdef CONFIG_SBUS
 #include <asm/sbus.h>
 #include <asm/dma.h>
@@ -88,6 +92,7 @@
 extern int __ashrdi3(int, int);
 
 extern void dump_thread(struct pt_regs *, struct user *);
+extern int dump_fpu (struct pt_regs * regs, elf_fpregset_t * fpregs);
 
 #ifdef CONFIG_SMP
 extern spinlock_t kernel_flag;
@@ -230,6 +235,13 @@
 
 /* Should really be in linux/kernel/ksyms.c */
 EXPORT_SYMBOL(dump_thread);
+EXPORT_SYMBOL(dump_fpu);
+EXPORT_SYMBOL(get_pmd_slow);
+EXPORT_SYMBOL(get_pte_slow);
+#ifndef CONFIG_SMP
+EXPORT_SYMBOL(pgt_quicklists);
+#endif
+EXPORT_SYMBOL(put_fs_struct);
 
 /* math-emu wants this */
 EXPORT_SYMBOL(die_if_kernel);
@@ -264,6 +276,7 @@
 EXPORT_SYMBOL(__strlen);
 EXPORT_SYMBOL(strlen);
 EXPORT_SYMBOL(strnlen);
+EXPORT_SYMBOL(__strlen_user);
 EXPORT_SYMBOL(strcpy);
 EXPORT_SYMBOL(strncpy);
 EXPORT_SYMBOL(strcat);
diff -u --recursive --new-file --exclude=CVS --exclude=.cvsignore vanilla/linux/arch/sparc64/kernel/starfire.c linux/arch/sparc64/kernel/starfire.c
--- vanilla/linux/arch/sparc64/kernel/starfire.c Tue Oct 3 09:24:41 2000
+++ linux/arch/sparc64/kernel/starfire.c Fri Oct 27 11:25:36 2000
@@ -1,4 +1,4 @@
-/* $Id: starfire.c,v 1.7 2000/09/22 23:02:13 davem Exp $
+/* $Id: starfire.c,v 1.8 2000/10/27 18:36:47 anton Exp $
  * starfire.c: Starfire/E10000 support.
  *
  * Copyright (C) 1998 David S. Miller (davem@redhat.com)
@@ -31,7 +31,12 @@
 void starfire_cpu_setup(void)
 {
         if (this_is_starfire) {
-/* We do this in starfire_translate - Anton */
+/*
+ * We do this in starfire_translate and xcall_deliver. When we fix our cpu
+ * arrays to support > 64 processors we can use the real upaid instead
+ * of the logical cpuid in __cpu_number_map etc, then we can get rid of
+ * the translations everywhere. - Anton
+ */
 #if 0
                 int i;
 
diff -u --recursive --new-file --exclude=CVS --exclude=.cvsignore vanilla/linux/drivers/sbus/audio/cs4215.h linux/drivers/sbus/audio/cs4215.h
--- vanilla/linux/drivers/sbus/audio/cs4215.h Mon Dec 20 22:06:42 1999
+++ linux/drivers/sbus/audio/cs4215.h Fri Oct 27 11:34:10 2000
@@ -1,4 +1,4 @@
-/* $Id: cs4215.h,v 1.7 1999/09/21 14:37:19 davem Exp $
+/* $Id: cs4215.h,v 1.8 2000/10/27 07:01:38 uzi Exp $
  * drivers/sbus/audio/cs4215.h
  *
  * Copyright (C) 1997 Rudolf Koenig (rfkoenig@immd4.informatik.uni-erlangen.de)
@@ -103,7 +103,7 @@
 
 /* Time Slot 6, Output Setting */
 #define CS4215_RO(v) v /* Right Output Attenuation 0x3f: -94.5 dB */
-#define CS4215_SE (1<<6) /* Line Out Enable */
+#define CS4215_SE (1<<6) /* Speaker Enable */
 #define CS4215_ADI (1<<7) /* A/D Data Invalid: Busy in calibration */
 
 /* Time Slot 7, Input Setting */
diff -u --recursive --new-file --exclude=CVS --exclude=.cvsignore vanilla/linux/drivers/sbus/audio/dbri.c linux/drivers/sbus/audio/dbri.c
--- vanilla/linux/drivers/sbus/audio/dbri.c Thu Sep 7 08:32:01 2000
+++ linux/drivers/sbus/audio/dbri.c Fri Oct 27 11:34:10 2000
@@ -1,4 +1,4 @@
-/* $Id: dbri.c,v 1.21 2000/08/31 23:44:17 davem Exp $
+/* $Id: dbri.c,v 1.22 2000/10/27 07:01:38 uzi Exp $
  * drivers/sbus/audio/dbri.c
  *
  * Copyright (C) 1997 Rudolf Koenig (rfkoenig@immd4.informatik.uni-erlangen.de)
@@ -486,6 +486,7 @@
                 else if ((dbri->dbri_irqp & (DBRI_INT_BLK-1)) == 0)
                         dbri->dbri_irqp++;
 
+ tprintk(("dbri->dbri_irqp == %d\n", dbri->dbri_irqp));
                 dbri_process_one_interrupt(dbri, x);
         }
 }
@@ -1269,6 +1270,7 @@
         } else {
                 int left_gain = (dbri->perchip_info.play.gain / 4) % 64;
                 int right_gain = (dbri->perchip_info.play.gain / 4) % 64;
+ int outport = dbri->perchip_info.play.port;
 
                 if (dbri->perchip_info.play.balance < AUDIO_MID_BALANCE) {
                         right_gain *= dbri->perchip_info.play.balance;
@@ -1282,8 +1284,11 @@
                 dprintk(D_MM, ("DBRI: Setting codec gain left: %d right: %d\n",
                                left_gain, right_gain));
 
- dbri->mm.data[0] = CS4215_LE | CS4215_HE | (63 - left_gain);
- dbri->mm.data[1] = CS4215_SE | (63 - right_gain);
+ dbri->mm.data[0] = (63 - left_gain);
+ if (outport & AUDIO_HEADPHONE) dbri->mm.data[0] |= CS4215_HE;
+ if (outport & AUDIO_LINE_OUT) dbri->mm.data[0] |= CS4215_LE;
+ dbri->mm.data[1] = (63 - right_gain);
+ if (outport & AUDIO_SPEAKER) dbri->mm.data[1] |= CS4215_SE;
         }
 
         xmit_fixed(dbri, 20, *(int *)dbri->mm.data);
@@ -1484,8 +1489,14 @@
 
         dbri->perchip_info.play.channels = 1;
         dbri->perchip_info.play.precision = 8;
- dbri->perchip_info.play.gain = 255;
+ dbri->perchip_info.play.gain = (AUDIO_MAX_GAIN * 7 / 10); /* 70% */
         dbri->perchip_info.play.balance = AUDIO_MID_BALANCE;
+ dbri->perchip_info.play.port = dbri->perchip_info.play.avail_ports =
+ AUDIO_SPEAKER | AUDIO_HEADPHONE | AUDIO_LINE_OUT;
+ dbri->perchip_info.record.port = AUDIO_MICROPHONE;
+ dbri->perchip_info.record.avail_ports =
+ AUDIO_MICROPHONE | AUDIO_LINE_IN;
+
         mmcodec_init_data(dbri);
 
         return 0;
@@ -1834,32 +1845,52 @@
 
 static int dbri_set_output_port(struct sparcaudio_driver *drv, int port)
 {
- return 0;
+ struct dbri *dbri = (struct dbri *) drv->private;
+
+ port &= dbri->perchip_info.play.avail_ports;
+ dbri->perchip_info.play.port = port;
+ mmcodec_setgain(dbri, 0);
+
+ return 0;
 }
 
 static int dbri_get_output_port(struct sparcaudio_driver *drv)
 {
- return 0;
+ struct dbri *dbri = (struct dbri *) drv->private;
+
+ return dbri->perchip_info.play.port;
 }
 
 static int dbri_set_input_port(struct sparcaudio_driver *drv, int port)
 {
- return 0;
+ struct dbri *dbri = (struct dbri *) drv->private;
+
+ port &= dbri->perchip_info.record.avail_ports;
+ dbri->perchip_info.record.port = port;
+ mmcodec_setgain(dbri, 0);
+
+ return 0;
 }
 
 static int dbri_get_input_port(struct sparcaudio_driver *drv)
 {
- return 0;
+ struct dbri *dbri = (struct dbri *) drv->private;
+
+ return dbri->perchip_info.record.port;
 }
 
 static int dbri_get_output_ports(struct sparcaudio_driver *drv)
 {
- return 0;
+ struct dbri *dbri = (struct dbri *) drv->private;
+
+ return dbri->perchip_info.play.avail_ports;
 }
 
 static int dbri_get_input_ports(struct sparcaudio_driver *drv)
 {
- return 0;
+ struct dbri *dbri = (struct dbri *) drv->private;
+
+ return dbri->perchip_info.record.avail_ports;
 }
 
 /******************* sparcaudio midlevel - driver ID ********************/
@@ -1888,12 +1919,6 @@
                      struct sparcaudio_driver *drv)
 {
         MOD_INC_USE_COUNT;
-
- /* I've taken the liberty of setting half gain and
- * mid balance, to put the codec in a known state.
- */
- dbri_set_output_balance(drv, AUDIO_MID_BALANCE);
- dbri_set_output_volume(drv, AUDIO_MAX_GAIN / 2);
 
         return 0;
 }
diff -u --recursive --new-file --exclude=CVS --exclude=.cvsignore vanilla/linux/include/asm-sparc/page.h linux/include/asm-sparc/page.h
--- vanilla/linux/include/asm-sparc/page.h Mon Oct 30 11:25:15 2000
+++ linux/include/asm-sparc/page.h Mon Oct 30 13:01:41 2000
@@ -1,4 +1,4 @@
-/* $Id: page.h,v 1.54 2000/08/10 01:04:53 davem Exp $
+/* $Id: page.h,v 1.55 2000/10/30 21:01:41 davem Exp $
  * page.h: Various defines and such for MMU operations on the Sparc for
  * the Linux kernel.
  *
diff -u --recursive --new-file --exclude=CVS --exclude=.cvsignore vanilla/linux/include/asm-sparc/param.h linux/include/asm-sparc/param.h
--- vanilla/linux/include/asm-sparc/param.h Sat Nov 9 00:29:52 1996
+++ linux/include/asm-sparc/param.h Mon Oct 30 13:01:41 2000
@@ -1,4 +1,4 @@
-/* $Id: param.h,v 1.3 1995/11/25 02:32:18 davem Exp $ */
+/* $Id: param.h,v 1.4 2000/10/30 21:01:41 davem Exp $ */
 #ifndef _ASMSPARC_PARAM_H
 #define _ASMSPARC_PARAM_H
 
@@ -17,5 +17,9 @@
 #endif
 
 #define MAXHOSTNAMELEN 64 /* max length of hostname */
+
+#ifdef __KERNEL__
+# define CLOCKS_PER_SEC HZ /* frequency at which times() counts */
+#endif
 
 #endif
diff -u --recursive --new-file --exclude=CVS --exclude=.cvsignore vanilla/linux/include/asm-sparc/pgtable.h linux/include/asm-sparc/pgtable.h
--- vanilla/linux/include/asm-sparc/pgtable.h Mon Oct 30 11:25:15 2000
+++ linux/include/asm-sparc/pgtable.h Mon Oct 30 13:01:41 2000
@@ -1,4 +1,4 @@
-/* $Id: pgtable.h,v 1.104 2000/10/19 00:50:16 davem Exp $ */
+/* $Id: pgtable.h,v 1.105 2000/10/30 21:01:41 davem Exp $ */
 #ifndef _SPARC_PGTABLE_H
 #define _SPARC_PGTABLE_H
 
diff -u --recursive --new-file --exclude=CVS --exclude=.cvsignore vanilla/linux/include/asm-sparc64/param.h linux/include/asm-sparc64/param.h
--- vanilla/linux/include/asm-sparc64/param.h Fri Dec 13 01:37:47 1996
+++ linux/include/asm-sparc64/param.h Mon Oct 30 13:01:41 2000
@@ -1,4 +1,4 @@
-/* $Id: param.h,v 1.1 1996/12/02 00:08:24 davem Exp $ */
+/* $Id: param.h,v 1.2 2000/10/30 21:01:41 davem Exp $ */
 #ifndef _ASMSPARC64_PARAM_H
 #define _ASMSPARC64_PARAM_H
 
@@ -17,5 +17,9 @@
 #endif
 
 #define MAXHOSTNAMELEN 64 /* max length of hostname */
+
+#ifdef __KERNEL__
+# define CLOCKS_PER_SEC HZ /* frequency at which times() counts */
+#endif
 
 #endif /* _ASMSPARC64_PARAM_H */
diff -u --recursive --new-file --exclude=CVS --exclude=.cvsignore vanilla/linux/include/asm-sparc64/string.h linux/include/asm-sparc64/string.h
--- vanilla/linux/include/asm-sparc64/string.h Mon Oct 30 11:25:15 2000
+++ linux/include/asm-sparc64/string.h Mon Oct 30 13:01:41 2000
@@ -1,4 +1,4 @@
-/* $Id: string.h,v 1.17 2000/06/19 06:24:58 davem Exp $
+/* $Id: string.h,v 1.18 2000/10/30 21:01:41 davem Exp $
  * string.h: External definitions for optimized assembly string
  * routines for the Linux Kernel.
  *
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue Oct 31 2000 - 21:00:30 EST