[IA64-SGI] Add PROM feature set for device flush list
Introduce PRF_DEVICE_FLUSH_LIST flag for older PROMs. Signed-off-by: Prarit Bhargava <prarit@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
This commit is contained in:
parent
139366a093
commit
61d67f2e07
2 changed files with 22 additions and 21 deletions
|
@ -10,6 +10,7 @@
|
|||
#include <linux/nodemask.h>
|
||||
#include <asm/sn/types.h>
|
||||
#include <asm/sn/addrs.h>
|
||||
#include <asm/sn/sn_feature_sets.h>
|
||||
#include <asm/sn/geo.h>
|
||||
#include <asm/sn/io.h>
|
||||
#include <asm/sn/pcibr_provider.h>
|
||||
|
@ -173,8 +174,8 @@ sn_pcidev_info_get(struct pci_dev *dev)
|
|||
*/
|
||||
static u8 war_implemented = 0;
|
||||
|
||||
static void sn_device_fixup_war(u64 nasid, u64 widget, int device,
|
||||
struct sn_flush_device_common *common)
|
||||
static s64 sn_device_fixup_war(u64 nasid, u64 widget, int device,
|
||||
struct sn_flush_device_common *common)
|
||||
{
|
||||
struct sn_flush_device_war *war_list;
|
||||
struct sn_flush_device_war *dev_entry;
|
||||
|
@ -198,8 +199,9 @@ static void sn_device_fixup_war(u64 nasid, u64 widget, int device,
|
|||
|
||||
dev_entry = war_list + device;
|
||||
memcpy(common,dev_entry, sizeof(*common));
|
||||
|
||||
kfree(war_list);
|
||||
|
||||
return isrv.status;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -279,23 +281,21 @@ static void sn_fixup_ionodes(void)
|
|||
memset(dev_entry->common, 0x0, sizeof(struct
|
||||
sn_flush_device_common));
|
||||
|
||||
status = sal_get_device_dmaflush_list(nasid,
|
||||
widget,
|
||||
device,
|
||||
if (sn_prom_feature_available(
|
||||
PRF_DEVICE_FLUSH_LIST))
|
||||
status = sal_get_device_dmaflush_list(
|
||||
nasid,
|
||||
widget,
|
||||
device,
|
||||
(u64)(dev_entry->common));
|
||||
if (status) {
|
||||
if (sn_sal_rev() < 0x0450) {
|
||||
/* shortlived WAR for older
|
||||
* PROM images
|
||||
*/
|
||||
sn_device_fixup_war(nasid,
|
||||
widget,
|
||||
device,
|
||||
else
|
||||
status = sn_device_fixup_war(nasid,
|
||||
widget,
|
||||
device,
|
||||
dev_entry->common);
|
||||
}
|
||||
else
|
||||
BUG();
|
||||
}
|
||||
if (status != SALRET_OK)
|
||||
panic("SAL call failed: %s\n",
|
||||
ia64_sal_strerror(status));
|
||||
|
||||
spin_lock_init(&dev_entry->sfdl_flush_lock);
|
||||
}
|
||||
|
|
|
@ -31,7 +31,8 @@ extern int sn_prom_feature_available(int id);
|
|||
* ...
|
||||
*/
|
||||
|
||||
#define PRF_PAL_CACHE_FLUSH_SAFE 0
|
||||
#define PRF_PAL_CACHE_FLUSH_SAFE 0
|
||||
#define PRF_DEVICE_FLUSH_LIST 1
|
||||
|
||||
|
||||
|
||||
|
@ -48,7 +49,7 @@ extern int sn_prom_feature_available(int id);
|
|||
*
|
||||
* By default, features are disabled unless explicitly enabled.
|
||||
*/
|
||||
#define OSF_MCA_SLV_TO_OS_INIT_SLV 0
|
||||
#define OSF_FEAT_LOG_SBES 1
|
||||
#define OSF_MCA_SLV_TO_OS_INIT_SLV 0
|
||||
#define OSF_FEAT_LOG_SBES 1
|
||||
|
||||
#endif /* _ASM_IA64_SN_FEATURE_SETS_H */
|
||||
|
|
Loading…
Reference in a new issue