Commit a76e8f99 authored by David S. Miller's avatar David S. Miller

Merge nuts.ninka.net:/home/davem/src/BK/sparcwork-2.5

into nuts.ninka.net:/home/davem/src/BK/sparc-2.5
parents d7b7a72d 841c7879
...@@ -1000,6 +1000,13 @@ config DEBUG_SPINLOCK_SLEEP ...@@ -1000,6 +1000,13 @@ config DEBUG_SPINLOCK_SLEEP
If you say Y here, various routines which may sleep will become very If you say Y here, various routines which may sleep will become very
noisy if they are called with a spinlock held. noisy if they are called with a spinlock held.
config DEBUG_BUGVERBOSE
bool "Verbose BUG() reporting (adds 70K)"
help
Say Y here to make BUG() panics output the file name and line number
of the BUG call as well as the EIP and oops trace. This aids
debugging but costs about 70-100K of memory.
endmenu endmenu
source "security/Kconfig" source "security/Kconfig"
......
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# #
CONFIG_MMU=y CONFIG_MMU=y
CONFIG_SWAP=y
CONFIG_UID16=y CONFIG_UID16=y
CONFIG_HIGHMEM=y CONFIG_HIGHMEM=y
CONFIG_GENERIC_ISA_DMA=y CONFIG_GENERIC_ISA_DMA=y
...@@ -15,10 +14,11 @@ CONFIG_EXPERIMENTAL=y ...@@ -15,10 +14,11 @@ CONFIG_EXPERIMENTAL=y
# #
# General setup # General setup
# #
CONFIG_NET=y CONFIG_SWAP=y
CONFIG_SYSVIPC=y CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set # CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y CONFIG_SYSCTL=y
CONFIG_LOG_BUF_SHIFT=14
# #
# Loadable module support # Loadable module support
...@@ -26,6 +26,8 @@ CONFIG_SYSCTL=y ...@@ -26,6 +26,8 @@ CONFIG_SYSCTL=y
CONFIG_MODULES=y CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y CONFIG_MODULE_UNLOAD=y
# CONFIG_MODULE_FORCE_UNLOAD is not set # CONFIG_MODULE_FORCE_UNLOAD is not set
CONFIG_OBSOLETE_MODPARM=y
# CONFIG_MODVERSIONS is not set
CONFIG_KMOD=y CONFIG_KMOD=y
# #
...@@ -45,6 +47,7 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y ...@@ -45,6 +47,7 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
CONFIG_SUN_PM=y CONFIG_SUN_PM=y
# CONFIG_SUN4 is not set # CONFIG_SUN4 is not set
CONFIG_PCI=y CONFIG_PCI=y
# CONFIG_PCI_LEGACY_PROC is not set
# CONFIG_PCI_NAMES is not set # CONFIG_PCI_NAMES is not set
CONFIG_SUN_OPENPROMFS=m CONFIG_SUN_OPENPROMFS=m
CONFIG_KCORE_ELF=y CONFIG_KCORE_ELF=y
...@@ -59,15 +62,17 @@ CONFIG_SUNOS_EMUL=y ...@@ -59,15 +62,17 @@ CONFIG_SUNOS_EMUL=y
# CONFIG_PARPORT is not set # CONFIG_PARPORT is not set
# #
# Console drivers # Graphics support
# #
# CONFIG_PROM_CONSOLE is not set # CONFIG_FB is not set
CONFIG_DUMMY_CONSOLE=y
# #
# Frame-buffer support # Console display driver support
# #
# CONFIG_FB is not set # CONFIG_VGA_CONSOLE is not set
# CONFIG_MDA_CONSOLE is not set
# CONFIG_PROM_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
# #
# Memory Technology Devices (MTD) # Memory Technology Devices (MTD)
...@@ -130,13 +135,43 @@ CONFIG_BLK_DEV_INITRD=y ...@@ -130,13 +135,43 @@ CONFIG_BLK_DEV_INITRD=y
# #
# SCSI support # SCSI support
# #
# CONFIG_SCSI is not set CONFIG_SCSI=y
#
# SCSI support type (disk, tape, CDrom)
#
CONFIG_BLK_DEV_SD=y
CONFIG_SD_EXTRA_DEVS=40
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
CONFIG_BLK_DEV_SR=m
# CONFIG_BLK_DEV_SR_VENDOR is not set
CONFIG_SR_EXTRA_DEVS=2
CONFIG_CHR_DEV_SG=m
#
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
#
# CONFIG_SCSI_MULTI_LUN is not set
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
#
# SCSI low-level drivers
#
CONFIG_SCSI_SUNESP=y
CONFIG_SCSI_QLOGICPTI=m
# #
# Fibre Channel support # Fibre Channel support
# #
# CONFIG_FC4 is not set # CONFIG_FC4 is not set
#
# Networking support
#
CONFIG_NET=y
# #
# Networking options # Networking options
# #
...@@ -389,6 +424,7 @@ CONFIG_NLS_DEFAULT="iso8859-1" ...@@ -389,6 +424,7 @@ CONFIG_NLS_DEFAULT="iso8859-1"
# USB support # USB support
# #
# CONFIG_USB is not set # CONFIG_USB is not set
# CONFIG_USB_GADGET is not set
# #
# Bluetooth support # Bluetooth support
...@@ -407,6 +443,7 @@ CONFIG_DEBUG_SLAB=y ...@@ -407,6 +443,7 @@ CONFIG_DEBUG_SLAB=y
CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_SPINLOCK=y CONFIG_DEBUG_SPINLOCK=y
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
CONFIG_DEBUG_BUGVERBOSE=y
# #
# Security options # Security options
......
...@@ -359,11 +359,11 @@ maybe_smp4m_msg: ...@@ -359,11 +359,11 @@ maybe_smp4m_msg:
andcc %o1, %o4, %g0 andcc %o1, %o4, %g0
be,a smp4m_ticker be,a smp4m_ticker
cmp %l7, 14 cmp %l7, 14
cmp %l7, 13 sethi %hi(0x40000000), %o2
add %o5, %o3, %o5 add %o5, %o3, %o5
bne,a 1f andcc %o1, %o2, %g0
sethi %hi(0x40000000), %o2 be,a 1f
sethi %hi(0x20000000), %o2 sethi %hi(0x20000000), %o2
1: 1:
st %o2, [%o5 + 0x4] st %o2, [%o5 + 0x4]
WRITE_PAUSE WRITE_PAUSE
...@@ -374,7 +374,8 @@ maybe_smp4m_msg: ...@@ -374,7 +374,8 @@ maybe_smp4m_msg:
WRITE_PAUSE WRITE_PAUSE
wr %l4, PSR_ET, %psr wr %l4, PSR_ET, %psr
WRITE_PAUSE WRITE_PAUSE
cmp %l7, 13 srl %o2, (16+14), %o2
tst %o2
bne 2f bne 2f
nop nop
call C_LABEL(smp_reschedule_irq) call C_LABEL(smp_reschedule_irq)
......
...@@ -133,6 +133,16 @@ void __init smp_boot_cpus(void) ...@@ -133,6 +133,16 @@ void __init smp_boot_cpus(void)
smp4d_boot_cpus(); smp4d_boot_cpus();
} }
void smp_send_reschedule(int cpu)
{
smp_message_pass (cpu, MSG_RESCHEDULE, 0, 0);
}
void smp_send_stop(void)
{
smp_message_pass (MSG_ALL_BUT_SELF, MSG_STOP_CPU, 0, 0);
}
void smp_flush_cache_all(void) void smp_flush_cache_all(void)
{ {
xc0((smpfunc_t) BTFIXUP_CALL(local_flush_cache_all)); xc0((smpfunc_t) BTFIXUP_CALL(local_flush_cache_all));
......
...@@ -53,6 +53,7 @@ ...@@ -53,6 +53,7 @@
#endif #endif
#include <asm/a.out.h> #include <asm/a.out.h>
#include <asm/io-unit.h> #include <asm/io-unit.h>
#include <asm/bug.h>
extern spinlock_t rtc_lock; extern spinlock_t rtc_lock;
...@@ -312,5 +313,9 @@ EXPORT_SYMBOL_DOT(umul); ...@@ -312,5 +313,9 @@ EXPORT_SYMBOL_DOT(umul);
EXPORT_SYMBOL_DOT(div); EXPORT_SYMBOL_DOT(div);
EXPORT_SYMBOL_DOT(udiv); EXPORT_SYMBOL_DOT(udiv);
#ifdef CONFIG_DEBUG_BUGVERBOSE
EXPORT_SYMBOL(do_BUG);
#endif
/* Sun Power Management Idle Handler */ /* Sun Power Management Idle Handler */
EXPORT_SYMBOL(pm_idle); EXPORT_SYMBOL(pm_idle);
...@@ -463,6 +463,14 @@ void handle_hw_divzero(struct pt_regs *regs, unsigned long pc, unsigned long npc ...@@ -463,6 +463,14 @@ void handle_hw_divzero(struct pt_regs *regs, unsigned long pc, unsigned long npc
send_sig_info(SIGFPE, &info, current); send_sig_info(SIGFPE, &info, current);
} }
#ifdef CONFIG_DEBUG_BUGVERBOSE
void do_BUG(const char *file, int line)
{
// bust_spinlocks(1); XXX Not in our original BUG()
printk("kernel BUG at %s:%d!\n", file, line);
}
#endif
/* Since we have our mappings set up, on multiprocessors we can spin them /* Since we have our mappings set up, on multiprocessors we can spin them
* up here so that timer interrupts work during initialization. * up here so that timer interrupts work during initialization.
*/ */
......
...@@ -1215,11 +1215,33 @@ static int __init esp_detect(Scsi_Host_Template *tpnt) ...@@ -1215,11 +1215,33 @@ static int __init esp_detect(Scsi_Host_Template *tpnt)
#endif /* !CONFIG_SUN4 */ #endif /* !CONFIG_SUN4 */
/*
*/
static int esp_release(struct Scsi_Host *host)
{
struct esp *esp = (struct esp *) host->hostdata;
ESP_INTSOFF(esp->dregs);
#if 0
esp_reset_dma(esp);
esp_reset_esp(esp);
#endif
free_irq(esp->ehost->irq, esp);
sbus_free_consistent(esp->sdev, 16,
(void *) esp->esp_command, esp->esp_command_dvma);
sbus_iounmap(esp->eregs, ESP_REG_SIZE);
esp->dma->allocated = 0;
esp_chain_del(esp);
return 0;
}
/* The info function will return whatever useful /* The info function will return whatever useful
* information the developer sees fit. If not provided, then * information the developer sees fit. If not provided, then
* the name field will be used instead. * the name field will be used instead.
*/ */
const char *esp_info(struct Scsi_Host *host) static const char *esp_info(struct Scsi_Host *host)
{ {
struct esp *esp; struct esp *esp;
...@@ -4370,6 +4392,7 @@ static Scsi_Host_Template driver_template = { ...@@ -4370,6 +4392,7 @@ static Scsi_Host_Template driver_template = {
.detect = esp_detect, .detect = esp_detect,
.slave_alloc = esp_slave_alloc, .slave_alloc = esp_slave_alloc,
.slave_destroy = esp_slave_destroy, .slave_destroy = esp_slave_destroy,
.release = esp_release,
.info = esp_info, .info = esp_info,
.command = esp_command, .command = esp_command,
.queuecommand = esp_queue, .queuecommand = esp_queue,
......
...@@ -2,24 +2,18 @@ ...@@ -2,24 +2,18 @@
#ifndef _SPARC_BUG_H #ifndef _SPARC_BUG_H
#define _SPARC_BUG_H #define _SPARC_BUG_H
/* #ifdef CONFIG_DEBUG_BUGVERBOSE
* XXX I am hitting compiler bugs with __builtin_trap. This has extern void do_BUG(const char *file, int line);
* hit me before and rusty was blaming his netfilter bugs on #define BUG() do { \
* this so lets disable it. - Anton do_BUG(__FILE__, __LINE__); \
*/ __builtin_trap(); \
#if 0
/* We need the mb()'s so we don't trigger a compiler bug - Anton */
#define BUG() do { \
mb(); \
__builtin_trap(); \
mb(); \
} while(0)
#else
#define BUG() do { \
printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); *(int *)0=0; \
} while (0) } while (0)
#else
#define BUG() __builtin_trap()
#endif #endif
#define PAGE_BUG(page) BUG() #define PAGE_BUG(page) do { \
BUG(); \
} while (0)
#endif #endif
...@@ -169,9 +169,6 @@ extern __inline__ int hard_smp_processor_id(void) ...@@ -169,9 +169,6 @@ extern __inline__ int hard_smp_processor_id(void)
#endif #endif
#define smp_processor_id() hard_smp_processor_id() #define smp_processor_id() hard_smp_processor_id()
/* XXX We really need to implement this now. -DaveM */
extern __inline__ void smp_send_reschedule(int cpu) { }
extern __inline__ void smp_send_stop(void) { }
#endif /* !(__ASSEMBLY__) */ #endif /* !(__ASSEMBLY__) */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment