Commit 9aef3b7c authored by Linus Torvalds's avatar Linus Torvalds
parents e0ae2355 61d67f2e
...@@ -1176,8 +1176,8 @@ T: git kernel.org:/pub/scm/linux/kernel/git/aegl/linux-2.6.git ...@@ -1176,8 +1176,8 @@ T: git kernel.org:/pub/scm/linux/kernel/git/aegl/linux-2.6.git
S: Maintained S: Maintained
SN-IA64 (Itanium) SUB-PLATFORM SN-IA64 (Itanium) SUB-PLATFORM
P: Greg Edwards P: Jes Sorensen
M: edwardsg@sgi.com M: jes@sgi.com
L: linux-altix@sgi.com L: linux-altix@sgi.com
L: linux-ia64@vger.kernel.org L: linux-ia64@vger.kernel.org
W: http://www.sgi.com/altix W: http://www.sgi.com/altix
......
...@@ -512,7 +512,7 @@ ia64_state_save: ...@@ -512,7 +512,7 @@ ia64_state_save:
st8 [temp1]=r12 // os_status, default is cold boot st8 [temp1]=r12 // os_status, default is cold boot
mov r6=IA64_MCA_SAME_CONTEXT mov r6=IA64_MCA_SAME_CONTEXT
;; ;;
st8 [temp1]=r6 // context, default is same context st8 [temp2]=r6 // context, default is same context
// Save the pt_regs data that is not in minstate. The previous code // Save the pt_regs data that is not in minstate. The previous code
// left regs at sos. // left regs at sos.
......
...@@ -1283,8 +1283,9 @@ within_logging_rate_limit (void) ...@@ -1283,8 +1283,9 @@ within_logging_rate_limit (void)
if (jiffies - last_time > 5*HZ) if (jiffies - last_time > 5*HZ)
count = 0; count = 0;
if (++count < 5) { if (count < 5) {
last_time = jiffies; last_time = jiffies;
count++;
return 1; return 1;
} }
return 0; return 0;
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include <linux/nodemask.h> #include <linux/nodemask.h>
#include <asm/sn/types.h> #include <asm/sn/types.h>
#include <asm/sn/addrs.h> #include <asm/sn/addrs.h>
#include <asm/sn/sn_feature_sets.h>
#include <asm/sn/geo.h> #include <asm/sn/geo.h>
#include <asm/sn/io.h> #include <asm/sn/io.h>
#include <asm/sn/pcibr_provider.h> #include <asm/sn/pcibr_provider.h>
...@@ -173,8 +174,8 @@ sn_pcidev_info_get(struct pci_dev *dev) ...@@ -173,8 +174,8 @@ sn_pcidev_info_get(struct pci_dev *dev)
*/ */
static u8 war_implemented = 0; static u8 war_implemented = 0;
static void sn_device_fixup_war(u64 nasid, u64 widget, int device, static s64 sn_device_fixup_war(u64 nasid, u64 widget, int device,
struct sn_flush_device_common *common) struct sn_flush_device_common *common)
{ {
struct sn_flush_device_war *war_list; struct sn_flush_device_war *war_list;
struct sn_flush_device_war *dev_entry; struct sn_flush_device_war *dev_entry;
...@@ -198,8 +199,9 @@ static void sn_device_fixup_war(u64 nasid, u64 widget, int device, ...@@ -198,8 +199,9 @@ static void sn_device_fixup_war(u64 nasid, u64 widget, int device,
dev_entry = war_list + device; dev_entry = war_list + device;
memcpy(common,dev_entry, sizeof(*common)); memcpy(common,dev_entry, sizeof(*common));
kfree(war_list); kfree(war_list);
return isrv.status;
} }
/* /*
...@@ -279,23 +281,21 @@ static void sn_fixup_ionodes(void) ...@@ -279,23 +281,21 @@ static void sn_fixup_ionodes(void)
memset(dev_entry->common, 0x0, sizeof(struct memset(dev_entry->common, 0x0, sizeof(struct
sn_flush_device_common)); sn_flush_device_common));
status = sal_get_device_dmaflush_list(nasid, if (sn_prom_feature_available(
widget, PRF_DEVICE_FLUSH_LIST))
device, status = sal_get_device_dmaflush_list(
nasid,
widget,
device,
(u64)(dev_entry->common)); (u64)(dev_entry->common));
if (status) { else
if (sn_sal_rev() < 0x0450) { status = sn_device_fixup_war(nasid,
/* shortlived WAR for older widget,
* PROM images device,
*/
sn_device_fixup_war(nasid,
widget,
device,
dev_entry->common); dev_entry->common);
} if (status != SALRET_OK)
else panic("SAL call failed: %s\n",
BUG(); ia64_sal_strerror(status));
}
spin_lock_init(&dev_entry->sfdl_flush_lock); spin_lock_init(&dev_entry->sfdl_flush_lock);
} }
......
...@@ -447,7 +447,7 @@ xpc_allocate_local_msgqueue(struct xpc_channel *ch) ...@@ -447,7 +447,7 @@ xpc_allocate_local_msgqueue(struct xpc_channel *ch)
nbytes = nentries * ch->msg_size; nbytes = nentries * ch->msg_size;
ch->local_msgqueue = xpc_kmalloc_cacheline_aligned(nbytes, ch->local_msgqueue = xpc_kmalloc_cacheline_aligned(nbytes,
(GFP_KERNEL | GFP_DMA), GFP_KERNEL,
&ch->local_msgqueue_base); &ch->local_msgqueue_base);
if (ch->local_msgqueue == NULL) { if (ch->local_msgqueue == NULL) {
continue; continue;
...@@ -455,7 +455,7 @@ xpc_allocate_local_msgqueue(struct xpc_channel *ch) ...@@ -455,7 +455,7 @@ xpc_allocate_local_msgqueue(struct xpc_channel *ch)
memset(ch->local_msgqueue, 0, nbytes); memset(ch->local_msgqueue, 0, nbytes);
nbytes = nentries * sizeof(struct xpc_notify); nbytes = nentries * sizeof(struct xpc_notify);
ch->notify_queue = kmalloc(nbytes, (GFP_KERNEL | GFP_DMA)); ch->notify_queue = kmalloc(nbytes, GFP_KERNEL);
if (ch->notify_queue == NULL) { if (ch->notify_queue == NULL) {
kfree(ch->local_msgqueue_base); kfree(ch->local_msgqueue_base);
ch->local_msgqueue = NULL; ch->local_msgqueue = NULL;
...@@ -502,7 +502,7 @@ xpc_allocate_remote_msgqueue(struct xpc_channel *ch) ...@@ -502,7 +502,7 @@ xpc_allocate_remote_msgqueue(struct xpc_channel *ch)
nbytes = nentries * ch->msg_size; nbytes = nentries * ch->msg_size;
ch->remote_msgqueue = xpc_kmalloc_cacheline_aligned(nbytes, ch->remote_msgqueue = xpc_kmalloc_cacheline_aligned(nbytes,
(GFP_KERNEL | GFP_DMA), GFP_KERNEL,
&ch->remote_msgqueue_base); &ch->remote_msgqueue_base);
if (ch->remote_msgqueue == NULL) { if (ch->remote_msgqueue == NULL) {
continue; continue;
......
...@@ -90,14 +90,14 @@ void *sn_dma_alloc_coherent(struct device *dev, size_t size, ...@@ -90,14 +90,14 @@ void *sn_dma_alloc_coherent(struct device *dev, size_t size,
*/ */
node = pcibus_to_node(pdev->bus); node = pcibus_to_node(pdev->bus);
if (likely(node >=0)) { if (likely(node >=0)) {
struct page *p = alloc_pages_node(node, GFP_ATOMIC, get_order(size)); struct page *p = alloc_pages_node(node, flags, get_order(size));
if (likely(p)) if (likely(p))
cpuaddr = page_address(p); cpuaddr = page_address(p);
else else
return NULL; return NULL;
} else } else
cpuaddr = (void *)__get_free_pages(GFP_ATOMIC, get_order(size)); cpuaddr = (void *)__get_free_pages(flags, get_order(size));
if (unlikely(!cpuaddr)) if (unlikely(!cpuaddr))
return NULL; return NULL;
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* License. See the file "COPYING" in the main directory of this archive * License. See the file "COPYING" in the main directory of this archive
* for more details. * for more details.
* *
* Copyright (c) 2005 Silicon Graphics, Inc. All rights reserved. * Copyright (c) 2005-2006 Silicon Graphics, Inc. All rights reserved.
*/ */
...@@ -27,14 +27,12 @@ extern int sn_prom_feature_available(int id); ...@@ -27,14 +27,12 @@ extern int sn_prom_feature_available(int id);
* "false" for new features. * "false" for new features.
* *
* Use: * Use:
* if (sn_prom_feature_available(PRF_FEATURE_XXX)) * if (sn_prom_feature_available(PRF_XXX))
* ... * ...
*/ */
/* #define PRF_PAL_CACHE_FLUSH_SAFE 0
* Example: feature XXX #define PRF_DEVICE_FLUSH_LIST 1
*/
#define PRF_FEATURE_XXX 0
...@@ -51,7 +49,7 @@ extern int sn_prom_feature_available(int id); ...@@ -51,7 +49,7 @@ extern int sn_prom_feature_available(int id);
* *
* By default, features are disabled unless explicitly enabled. * By default, features are disabled unless explicitly enabled.
*/ */
#define OSF_MCA_SLV_TO_OS_INIT_SLV 0 #define OSF_MCA_SLV_TO_OS_INIT_SLV 0
#define OSF_FEAT_LOG_SBES 1 #define OSF_FEAT_LOG_SBES 1
#endif /* _ASM_IA64_SN_FEATURE_SETS_H */ #endif /* _ASM_IA64_SN_FEATURE_SETS_H */
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