Commit 3eec4b93 authored by Linus Torvalds's avatar Linus Torvalds

Merge http://lia64.bkbits.net/to-base-2.6

into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents 223e5b74 8e61b243
......@@ -90,6 +90,7 @@ bte_error_handler(unsigned long _nodepda)
ii_icrb0_d_u_t icrbd; /* II CRB Register D */
ii_ibcr_u_t ibcr;
ii_icmr_u_t icmr;
ii_ieclr_u_t ieclr;
BTE_PRINTK(("bte_error_handler(%p) - %d\n", err_nodepda,
......@@ -177,6 +178,14 @@ bte_error_handler(unsigned long _nodepda)
imem.ii_imem_fld_s.i_b0_esd = imem.ii_imem_fld_s.i_b1_esd = 1;
REMOTE_HUB_S(nasid, IIO_IMEM, imem.ii_imem_regval);
/* Clear IBLS0/1 error bits */
ieclr.ii_ieclr_regval = 0;
if (err_nodepda->bte_if[0].bh_error != BTE_SUCCESS)
ieclr.ii_ieclr_fld_s.i_e_bte_0 = 1;
if (err_nodepda->bte_if[1].bh_error != BTE_SUCCESS)
ieclr.ii_ieclr_fld_s.i_e_bte_1 = 1;
REMOTE_HUB_S(nasid, IIO_IECLR, ieclr.ii_ieclr_regval);
/* Reinitialize both BTE state machines. */
ibcr.ii_ibcr_regval = REMOTE_HUB_L(nasid, IIO_IBCR);
ibcr.ii_ibcr_fld_s.i_soft_reset = 1;
......
......@@ -16,7 +16,6 @@
#include <asm/sn/pda.h>
#include <asm/sn/sn2/shubio.h>
#include <asm/nodedata.h>
#include <asm/delay.h>
#include <linux/bootmem.h>
#include <linux/string.h>
......@@ -71,6 +70,7 @@ bte_result_t
bte_copy(u64 src, u64 dest, u64 len, u64 mode, void *notification)
{
u64 transfer_size;
u64 transfer_stat;
struct bteinfo_s *bte;
bte_result_t bte_status;
unsigned long irq_flags;
......@@ -148,9 +148,6 @@ bte_copy(u64 src, u64 dest, u64 len, u64 mode, void *notification)
if (!(mode & BTE_WACQUIRE)) {
return BTEFAIL_NOTAVAIL;
}
/* Wait until a bte is available. */
udelay(1);
} while (1);
......@@ -194,15 +191,15 @@ bte_copy(u64 src, u64 dest, u64 len, u64 mode, void *notification)
return BTE_SUCCESS;
}
while (*bte->most_rcnt_na == -1UL) {
while ((transfer_stat = *bte->most_rcnt_na) == -1UL) {
}
BTE_PRINTKV((" Delay Done. IBLS = 0x%lx, most_rcnt_na = 0x%lx\n",
BTE_LNSTAT_LOAD(bte), *bte->most_rcnt_na));
if (*bte->most_rcnt_na & IBLS_ERROR) {
bte_status = *bte->most_rcnt_na & ~IBLS_ERROR;
if (transfer_stat & IBLS_ERROR) {
bte_status = transfer_stat & ~IBLS_ERROR;
*bte->most_rcnt_na = 0L;
} else {
bte_status = BTE_SUCCESS;
......
......@@ -105,10 +105,9 @@ static struct miscdevice misc; /* used with misc_register for dynamic */
extern u64 master_node_bedrock_address;
extern void early_sn_setup(void);
static int sn_debug_printf(const char *fmt, ...);
#undef DEBUG
#ifdef DEBUG
static int sn_debug_printf(const char *fmt, ...);
#define DPRINTF(x...) sn_debug_printf(x)
#else
#define DPRINTF(x...) do { } while (0)
......@@ -489,6 +488,8 @@ static struct uart_ops sn_console_ops = {
/* End of uart struct functions and defines */
#ifdef DEBUG
/**
* sn_debug_printf - close to hardware debugging printf
* @fmt: printf format
......@@ -520,6 +521,7 @@ sn_debug_printf(const char *fmt, ...)
va_end(args);
return printed_len;
}
#endif /* DEBUG */
/*
* Interrupt handling routines.
......@@ -654,7 +656,7 @@ sn_transmit_chars(struct sn_cons_port *port, int raw)
port->sc_ops->sal_puts(start, xmit_count);
#ifdef DEBUG
if (!result)
sn_debug_printf("`");
DPRINTF("`");
#endif
if (result > 0) {
xmit_count -= result;
......@@ -971,6 +973,7 @@ module_exit(sn_sal_module_exit);
/**
* puts_raw_fixed - sn_sal_console_write helper for adding \r's as required
* @puts_raw : puts function to do the writing
* @s: input string
* @count: length
*
......@@ -978,19 +981,19 @@ module_exit(sn_sal_module_exit);
* ia64_sn_console_putb (what sal_puts_raw below actually does).
*
*/
static void puts_raw_fixed(const char *s, int count)
static void puts_raw_fixed(int (*puts_raw) (const char *s, int len), const char *s, int count)
{
const char *s1;
struct sn_cons_port *port = &sal_console_port;
/* Output '\r' before each '\n' */
while ((s1 = memchr(s, '\n', count)) != NULL) {
port->sc_ops->sal_puts_raw(s, s1 - s);
port->sc_ops->sal_puts_raw("\r\n", 2);
puts_raw(s, s1 - s);
puts_raw("\r\n", 2);
count -= s1 + 1 - s;
s = s1 + 1;
}
port->sc_ops->sal_puts_raw(s, count);
puts_raw(s, count);
}
/**
......@@ -1072,7 +1075,7 @@ sn_sal_console_write(struct console *co, const char *s, unsigned count)
/* fell thru */
stole_lock = 1;
}
puts_raw_fixed(s, count);
puts_raw_fixed(port->sc_ops->sal_puts_raw, s, count);
}
else {
stole_lock = 0;
......@@ -1081,12 +1084,12 @@ sn_sal_console_write(struct console *co, const char *s, unsigned count)
sn_transmit_chars(port, 1);
spin_unlock_irqrestore(&port->sc_port.lock, flags);
puts_raw_fixed(s, count);
puts_raw_fixed(port->sc_ops->sal_puts_raw, s, count);
}
}
else {
/* Not yet registered with serial core - simple case */
puts_raw_fixed(s, count);
puts_raw_fixed(port->sc_ops->sal_puts_raw, s, count);
}
}
......@@ -1123,7 +1126,7 @@ sn_sal_console_setup(struct console *co, char *options)
static void __init
sn_sal_console_write_early(struct console *co, const char *s, unsigned count)
{
sal_console_port.sc_ops->sal_puts(s, count);
puts_raw_fixed(sal_console_port.sc_ops->sal_puts_raw, s, count);
}
/* Used for very early console printing - again, before
......
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