[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] [IA64] More SN2 SAL calls that needs to be emulated.
# HG changeset patch # User Alex Williamson <alex.williamson@xxxxxx> # Date 1182466255 21600 # Node ID 6b1b119191f1c27daec93a11a9a387b85149c021 # Parent 593fe08cfca2783f6e42e9d7ed8abab2c3292aab [IA64] More SN2 SAL calls that needs to be emulated. Signed-off-by: Jes Sorensen <jes@xxxxxxx> --- xen/arch/ia64/xen/fw_emul.c | 134 +++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 125 insertions(+), 9 deletions(-) diff -r 593fe08cfca2 -r 6b1b119191f1 xen/arch/ia64/xen/fw_emul.c --- a/xen/arch/ia64/xen/fw_emul.c Thu Jun 21 16:45:41 2007 -0600 +++ b/xen/arch/ia64/xen/fw_emul.c Thu Jun 21 16:50:55 2007 -0600 @@ -23,6 +23,7 @@ #include <asm/pal.h> #include <asm/sal.h> #include <asm/sn/sn_sal.h> +#include <asm/sn/hubdev.h> #include <asm/xenmca.h> #include <public/sched.h> @@ -380,7 +381,7 @@ sal_emulator (long index, unsigned long case SN_SAL_GET_MASTER_NASID: status = -1; if (current->domain == dom0) { - printk("*** Emulating SN_SAL_GET_MASTER_NASID ***\n"); + /* printk("*** Emulating SN_SAL_GET_MASTER_NASID ***\n"); */ SAL_CALL_NOLOCK(ret_stuff, SN_SAL_GET_MASTER_NASID, 0, 0, 0, 0, 0, 0, 0); status = ret_stuff.status; @@ -392,7 +393,7 @@ sal_emulator (long index, unsigned long case SN_SAL_GET_KLCONFIG_ADDR: status = -1; if (current->domain == dom0) { - printk("*** Emulating SN_SAL_GET_KLCONFIG_ADDR ***\n"); + /* printk("*** Emulating SN_SAL_GET_KLCONFIG_ADDR ***\n"); */ SAL_CALL_NOLOCK(ret_stuff, SN_SAL_GET_KLCONFIG_ADDR, in1, 0, 0, 0, 0, 0, 0); status = ret_stuff.status; @@ -404,9 +405,9 @@ sal_emulator (long index, unsigned long case SN_SAL_GET_SAPIC_INFO: status = -1; if (current->domain == dom0) { - printk("*** Emulating SN_SAL_GET_SAPIC_INFO ***\n"); - SAL_CALL_NOLOCK(ret_stuff, SN_SAL_GET_SAPIC_INFO, in1, - 0, 0, 0, 0, 0, 0); + /* printk("*** Emulating SN_SAL_GET_SAPIC_INFO ***\n"); */ + SAL_CALL_NOLOCK(ret_stuff, SN_SAL_GET_SAPIC_INFO, + in1, 0, 0, 0, 0, 0, 0); status = ret_stuff.status; r9 = ret_stuff.v0; r10 = ret_stuff.v1; @@ -416,9 +417,9 @@ sal_emulator (long index, unsigned long case SN_SAL_GET_SN_INFO: status = -1; if (current->domain == dom0) { - printk("*** Emulating SN_SAL_GET_SN_INFO ***\n"); - SAL_CALL_NOLOCK(ret_stuff, SN_SAL_GET_SN_INFO, in1, - 0, 0, 0, 0, 0, 0); + /* printk("*** Emulating SN_SAL_GET_SN_INFO ***\n"); */ + SAL_CALL_NOLOCK(ret_stuff, SN_SAL_GET_SN_INFO, + in1, 0, 0, 0, 0, 0, 0); status = ret_stuff.status; r9 = ret_stuff.v0; r10 = ret_stuff.v1; @@ -428,9 +429,124 @@ sal_emulator (long index, unsigned long case SN_SAL_IOIF_GET_HUBDEV_INFO: status = -1; if (current->domain == dom0) { - printk("*** Emulating SN_SAL_IOIF_GET_HUBDEV_INFO ***\n"); + /* printk("*** Emulating SN_SAL_IOIF_GET_HUBDEV_INFO ***\n"); */ SAL_CALL_NOLOCK(ret_stuff, SN_SAL_IOIF_GET_HUBDEV_INFO, in1, in2, 0, 0, 0, 0, 0); + status = ret_stuff.status; + r9 = ret_stuff.v0; + r10 = ret_stuff.v1; + r11 = ret_stuff.v2; + } + break; + case SN_SAL_IOIF_INIT: + status = -1; + if (current->domain == dom0) { + /* printk("*** Emulating SN_SAL_IOIF_INIT ***\n"); */ + SAL_CALL_NOLOCK(ret_stuff, SN_SAL_IOIF_INIT, + 0, 0, 0, 0, 0, 0, 0); + status = ret_stuff.status; + r9 = ret_stuff.v0; + r10 = ret_stuff.v1; + r11 = ret_stuff.v2; + } + break; + case SN_SAL_GET_PROM_FEATURE_SET: + status = -1; + if (current->domain == dom0) { + /* printk("*** Emulating SN_SAL_GET_PROM_FEATURE_SET ***\n"); */ + SAL_CALL_NOLOCK(ret_stuff, SN_SAL_GET_PROM_FEATURE_SET, + in1, 0, 0, 0, 0, 0, 0); + status = ret_stuff.status; + r9 = ret_stuff.v0; + r10 = ret_stuff.v1; + r11 = ret_stuff.v2; + } + break; + case SN_SAL_SET_OS_FEATURE_SET: + status = -1; + if (current->domain == dom0) { + /* printk("*** Emulating SN_SAL_SET_OS_FEATURE_SET ***\n"); */ + SAL_CALL_NOLOCK(ret_stuff, SN_SAL_SET_OS_FEATURE_SET, + in1, 0, 0, 0, 0, 0, 0); + status = ret_stuff.status; + r9 = ret_stuff.v0; + r10 = ret_stuff.v1; + r11 = ret_stuff.v2; + } + break; + case SN_SAL_SET_ERROR_HANDLING_FEATURES: + status = -1; + if (current->domain == dom0) { + /* printk("*** Emulating SN_SAL_SET_ERROR_HANDLING_FEATURES ***\n"); */ + SAL_CALL_NOLOCK(ret_stuff, + SN_SAL_SET_ERROR_HANDLING_FEATURES, + in1, 0, 0, 0, 0, 0, 0); + status = ret_stuff.status; + r9 = ret_stuff.v0; + r10 = ret_stuff.v1; + r11 = ret_stuff.v2; + } + break; +#if 0 +/* + * Somehow ACPI breaks if allowing this one + */ + case SN_SAL_SET_CPU_NUMBER: + status = -1; + if (current->domain == dom0) { + printk("*** Emulating SN_SAL_SET_CPU_NUMBER ***\n"); + SAL_CALL_NOLOCK(ret_stuff, SN_SAL_SET_CPU_NUMBER, + in1, 0, 0, 0, 0, 0, 0); + status = ret_stuff.status; + r9 = ret_stuff.v0; + r10 = ret_stuff.v1; + r11 = ret_stuff.v2; + } + break; +#endif + case SN_SAL_LOG_CE: + status = -1; + if (current->domain == dom0) { + static int log_ce = 0; + if (!log_ce) { + printk("*** Emulating SN_SAL_LOG_CE *** " + " this will only be printed once\n"); + log_ce = 1; + } + SAL_CALL_NOLOCK(ret_stuff, SN_SAL_LOG_CE, + 0, 0, 0, 0, 0, 0, 0); + status = ret_stuff.status; + r9 = ret_stuff.v0; + r10 = ret_stuff.v1; + r11 = ret_stuff.v2; + } + break; + case SN_SAL_IOIF_GET_DEVICE_DMAFLUSH_LIST: + status = -1; + if (current->domain == dom0) { + struct sn_flush_device_common flush; + int flush_size; + + flush_size = sizeof(struct sn_flush_device_common); + memset(&flush, 0, flush_size); + SAL_CALL_NOLOCK(ret_stuff, + SN_SAL_IOIF_GET_DEVICE_DMAFLUSH_LIST, + in1, in2, in3, &flush, 0, 0, 0); +#if 0 + printk("*** Emulating " + "SN_SAL_IOIF_GET_DEVICE_DMAFLUSH_LIST ***\n"); +#endif + if (ret_stuff.status == SALRET_OK) { + XEN_GUEST_HANDLE(void) handle = + *(XEN_GUEST_HANDLE(void)*)&in4; + if (copy_to_guest(handle, &flush, 1)) { + printk("SN_SAL_IOIF_GET_DEVICE_" + "DMAFLUSH_LIST can't copy " + "to user!\n"); + ret_stuff.status = SALRET_ERROR; + } + } + status = ret_stuff.status; r9 = ret_stuff.v0; r10 = ret_stuff.v1; _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |