Correctly use sal call attribute such as mf-safe and reentrant Signed-off-by: Anthony Xu < anthony.xu@xxxxxxxxx > diff -urN linux-2.6.23-rc8/arch/ia64/kernel/sal.c linux/arch/ia64/kernel/sal.c --- linux-2.6.23-rc8/arch/ia64/kernel/sal.c 2007-09-25 08:33:10.000000000 +0800 +++ linux/arch/ia64/kernel/sal.c 2007-09-29 14:13:10.000000000 +0800 @@ -243,7 +243,7 @@ while (!ia64_get_irr(IA64_TIMER_VECTOR)) cpu_relax(); - SAL_CALL(isrv, SAL_CACHE_FLUSH, cache_type, 0, 0, 0, 0, 0, 0); + SAL_CALL_NOLOCK(isrv, SAL_CACHE_FLUSH, cache_type, 0, 0, 0, 0, 0, 0); if (isrv.status) printk(KERN_ERR "SAL_CAL_FLUSH failed with %ld\n", isrv.status); diff -urN linux-2.6.23-rc8/include/asm-ia64/sal.h linux/include/asm-ia64/sal.h --- linux-2.6.23-rc8/include/asm-ia64/sal.h 2007-09-25 08:33:10.000000000 +0800 +++ linux/include/asm-ia64/sal.h 2007-09-29 14:16:46.000000000 +0800 @@ -652,7 +652,7 @@ { struct ia64_sal_retval isrv; - SAL_CALL(isrv, SAL_FREQ_BASE, which, 0, 0, 0, 0, 0, 0); + SAL_CALL_NOLOCK(isrv, SAL_FREQ_BASE, which, 0, 0, 0, 0, 0, 0); *ticks_per_second = isrv.v0; *drift_info = isrv.v1; return isrv.status; @@ -666,7 +666,7 @@ ia64_sal_cache_init (void) { struct ia64_sal_retval isrv; - SAL_CALL(isrv, SAL_CACHE_INIT, 0, 0, 0, 0, 0, 0, 0); + SAL_CALL_NOLOCK(isrv, SAL_CACHE_INIT, 0, 0, 0, 0, 0, 0, 0); return isrv.status; } @@ -748,7 +748,8 @@ ia64_sal_pci_config_read (u64 pci_config_addr, int type, u64 size, u64 *value) { struct ia64_sal_retval isrv; - SAL_CALL(isrv, SAL_PCI_CONFIG_READ, pci_config_addr, size, type, 0, 0, 0, 0); + SAL_CALL_REENTRANT(isrv, SAL_PCI_CONFIG_READ, pci_config_addr, size, + type, 0, 0, 0, 0); if (value) *value = isrv.v0; return isrv.status; @@ -759,8 +760,8 @@ ia64_sal_pci_config_write (u64 pci_config_addr, int type, u64 size, u64 value) { struct ia64_sal_retval isrv; - SAL_CALL(isrv, SAL_PCI_CONFIG_WRITE, pci_config_addr, size, value, - type, 0, 0, 0); + SAL_CALL_REENTRANT(isrv, SAL_PCI_CONFIG_WRITE, pci_config_addr, size, + value, type, 0, 0, 0); return isrv.status; } @@ -815,7 +816,7 @@ ia64_sal_physical_id_info(u16 *splid) { struct ia64_sal_retval isrv; - SAL_CALL(isrv, SAL_PHYSICAL_ID_INFO, 0, 0, 0, 0, 0, 0, 0); + SAL_CALL_NOLOCK(isrv, SAL_PHYSICAL_ID_INFO, 0, 0, 0, 0, 0, 0, 0); if (splid) *splid = isrv.v0; return isrv.status; - To unsubscribe from this list: send the line "unsubscribe linux-ia64" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
![]() |