9 #include <linux/types.h>
12 #include <asm/sn/addrs.h>
18 #include <asm/param.h>
49 BTE_PRINTK((
"shub1_bte_error_handler(%p) - %d\n", err_nodepda,
54 BTE_PRINTK((
"eh:%p:%d Nothing to do.\n", err_nodepda,
82 BTE_PRINTK((
"eh:%p:%d Marked Giving up\n", err_nodepda,
91 if (!((1 << i) & valid_crbs)) {
158 BTE_PRINTK((
"eh:%p:%d Marked Giving up\n", err_nodepda,
162 if (ia64_sn_bte_recovery(nasid))
163 panic(
"bte_error_handler(): Fatal BTE Error");
178 unsigned long irq_flags;
182 BTE_PRINTK((
"bte_error_handler(%p) - %d\n", err_nodepda,
192 if (err_nodepda->
bte_if[i].cleanup_active) {
195 spin_lock(&err_nodepda->
bte_if[i].spinlock);
196 BTE_PRINTK((
"eh:%p:%d locked %d\n", err_nodepda,
198 err_nodepda->
bte_if[
i].cleanup_active = 1;
203 spin_unlock_irqrestore(recovery_lock, irq_flags);
208 spin_unlock_irqrestore(recovery_lock, irq_flags);
214 bh_error = err_nodepda->
bte_if[
i].bh_error;
217 notify = err_nodepda->
bte_if[
i].most_rcnt_na;
219 err_nodepda->
bte_if[i].bte_cnode,
220 err_nodepda->
bte_if[i].bte_num,
226 err_nodepda->
bte_if[
i].cleanup_active = 0;
227 BTE_PRINTK((
"eh:%p:%d Unlocked %d\n", err_nodepda,
229 spin_unlock(&err_nodepda->
bte_if[i].spinlock);
232 spin_unlock_irqrestore(recovery_lock, irq_flags);
246 bte = &(
NODEPDA(cnode)->bte_if[btenum]);
256 BTE_PRINTK((
"Got an error on cnode %d bte %d: HW error type 0x%x\n",