diff options
author | Jack Steiner <steiner@sgi.com> | 2005-08-11 13:28:00 -0400 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2005-08-17 18:31:53 -0400 |
commit | 68b9753f47953930cb94de0223c163f289399091 (patch) | |
tree | d30b9def802b154eef00c8e9fc1dc35ddf0631e6 /arch/ia64 | |
parent | 7e95b9d6e21eda23bac1ff024d465d2072c8996d (diff) |
[IA64-SGI] - New SN hardware support - cpu_relax
Add a few missing calls to "hint @pause".
Signed-off-by: Jack Steiner <steiner@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch/ia64')
-rw-r--r-- | arch/ia64/sn/kernel/bte.c | 1 | ||||
-rw-r--r-- | arch/ia64/sn/kernel/huberror.c | 2 | ||||
-rw-r--r-- | arch/ia64/sn/pci/pcibr/pcibr_dma.c | 3 |
3 files changed, 4 insertions, 2 deletions
diff --git a/arch/ia64/sn/kernel/bte.c b/arch/ia64/sn/kernel/bte.c index 7adef84190db..b75814efadba 100644 --- a/arch/ia64/sn/kernel/bte.c +++ b/arch/ia64/sn/kernel/bte.c | |||
@@ -215,6 +215,7 @@ retry_bteop: | |||
215 | } | 215 | } |
216 | 216 | ||
217 | while ((transfer_stat = *bte->most_rcnt_na) == BTE_WORD_BUSY) { | 217 | while ((transfer_stat = *bte->most_rcnt_na) == BTE_WORD_BUSY) { |
218 | cpu_relax(); | ||
218 | if (ia64_get_itc() > itc_end) { | 219 | if (ia64_get_itc() > itc_end) { |
219 | BTE_PRINTK(("BTE timeout nasid 0x%x bte%d IBLS = 0x%lx na 0x%lx\n", | 220 | BTE_PRINTK(("BTE timeout nasid 0x%x bte%d IBLS = 0x%lx na 0x%lx\n", |
220 | NASID_GET(bte->bte_base_addr), bte->bte_num, | 221 | NASID_GET(bte->bte_base_addr), bte->bte_num, |
diff --git a/arch/ia64/sn/kernel/huberror.c b/arch/ia64/sn/kernel/huberror.c index 5c39b43ba3c0..5c5eb01c50f0 100644 --- a/arch/ia64/sn/kernel/huberror.c +++ b/arch/ia64/sn/kernel/huberror.c | |||
@@ -76,7 +76,7 @@ void hubiio_crb_free(struct hubdev_info *hubdev_info, int crbnum) | |||
76 | */ | 76 | */ |
77 | REMOTE_HUB_S(hubdev_info->hdi_nasid, IIO_ICDR, (IIO_ICDR_PND | crbnum)); | 77 | REMOTE_HUB_S(hubdev_info->hdi_nasid, IIO_ICDR, (IIO_ICDR_PND | crbnum)); |
78 | while (REMOTE_HUB_L(hubdev_info->hdi_nasid, IIO_ICDR) & IIO_ICDR_PND) | 78 | while (REMOTE_HUB_L(hubdev_info->hdi_nasid, IIO_ICDR) & IIO_ICDR_PND) |
79 | udelay(1); | 79 | cpu_relax(); |
80 | 80 | ||
81 | } | 81 | } |
82 | 82 | ||
diff --git a/arch/ia64/sn/pci/pcibr/pcibr_dma.c b/arch/ia64/sn/pci/pcibr/pcibr_dma.c index 0f254255f6a1..34093476e965 100644 --- a/arch/ia64/sn/pci/pcibr/pcibr_dma.c +++ b/arch/ia64/sn/pci/pcibr/pcibr_dma.c | |||
@@ -317,7 +317,8 @@ void sn_dma_flush(uint64_t addr) | |||
317 | *(volatile uint32_t *)(p->sfdl_force_int_addr) = 1; | 317 | *(volatile uint32_t *)(p->sfdl_force_int_addr) = 1; |
318 | 318 | ||
319 | /* wait for the interrupt to come back. */ | 319 | /* wait for the interrupt to come back. */ |
320 | while (*(p->sfdl_flush_addr) != 0x10f) ; | 320 | while (*(p->sfdl_flush_addr) != 0x10f) |
321 | cpu_relax(); | ||
321 | 322 | ||
322 | /* okay, everything is synched up. */ | 323 | /* okay, everything is synched up. */ |
323 | spin_unlock_irqrestore((spinlock_t *)&p->sfdl_flush_lock, flags); | 324 | spin_unlock_irqrestore((spinlock_t *)&p->sfdl_flush_lock, flags); |