[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] [IA64] MCA support - fix timer issue, log size issue, and limit logs to dom0



# HG changeset patch
# User awilliam@xxxxxxxxxxx
# Node ID cef0cc0a3236f425e377fe97ee8846adfb6cbd4e
# Parent  22e58b2b0b451f3fec0611de61361b0dc12606b0
[IA64] MCA support - fix timer issue, log size issue, and limit logs to dom0

Signed-off-by: Yutaka Ezaki <yutaka.ezaki@xxxxxxxxxxxxxx>
Signed-off-by: Masaki Kanno <kanno.masaki@xxxxxxxxxxxxxx>
Signed-off-by: Kazuhiro Suzuki <kaz@xxxxxxxxxxxxxx>
---
 linux-2.6-xen-sparse/include/asm-ia64/sal.h |    8 ++++----
 xen/arch/ia64/linux-xen/mca.c               |   10 ++++++++++
 xen/arch/ia64/xen/fw_emul.c                 |    7 +++++--
 3 files changed, 19 insertions(+), 6 deletions(-)

diff -r 22e58b2b0b45 -r cef0cc0a3236 linux-2.6-xen-sparse/include/asm-ia64/sal.h
--- a/linux-2.6-xen-sparse/include/asm-ia64/sal.h       Sun Oct 29 09:27:26 
2006 -0700
+++ b/linux-2.6-xen-sparse/include/asm-ia64/sal.h       Wed Nov 15 11:34:31 
2006 -0700
@@ -699,16 +699,16 @@ ia64_sal_get_state_info (u64 sal_info_ty
        struct ia64_sal_retval isrv;
 #ifdef CONFIG_XEN
        if (is_running_on_xen()) {
-               struct xencomm_mini xc_area[2];
-               int nbr_area = 2;
                struct xencomm_handle *desc;
 
-               if (xencomm_create_mini(xc_area, &nbr_area, sal_info,
-                          ia64_sal_get_state_info_size(sal_info_type), &desc))
+               if (xencomm_create(sal_info,
+                                  ia64_sal_get_state_info_size(sal_info_type),
+                                  &desc, GFP_KERNEL))
                        return 0;
 
                SAL_CALL_REENTRANT(isrv, SAL_GET_STATE_INFO, sal_info_type, 0,
                                   desc, 0, 0, 0, 0);
+               xencomm_free(desc);
        } else
 #endif
        SAL_CALL_REENTRANT(isrv, SAL_GET_STATE_INFO, sal_info_type, 0,
diff -r 22e58b2b0b45 -r cef0cc0a3236 xen/arch/ia64/linux-xen/mca.c
--- a/xen/arch/ia64/linux-xen/mca.c     Sun Oct 29 09:27:26 2006 -0700
+++ b/xen/arch/ia64/linux-xen/mca.c     Wed Nov 15 11:34:31 2006 -0700
@@ -117,6 +117,12 @@ extern void setup_vector (unsigned int v
 #endif
 
 static ia64_mc_info_t          ia64_mc_info;
+
+#ifdef XEN
+#define jiffies                        NOW()
+#undef HZ
+#define HZ                     1000000000UL
+#endif
 
 #define MAX_CPE_POLL_INTERVAL (15*60*HZ) /* 15 minutes */
 #define MIN_CPE_POLL_INTERVAL (2*60*HZ)  /* 2 minutes */
@@ -1388,7 +1394,11 @@ ia64_mca_cpe_int_caller(int cpe_irq, voi
 ia64_mca_cpe_int_caller(int cpe_irq, void *arg, struct pt_regs *ptregs)
 {
        static int start_count = -1;
+#ifdef XEN
+       static unsigned long poll_time = MIN_CPE_POLL_INTERVAL;
+#else
        static int poll_time = MIN_CPE_POLL_INTERVAL;
+#endif
        unsigned int cpuid;
 
        cpuid = smp_processor_id();
diff -r 22e58b2b0b45 -r cef0cc0a3236 xen/arch/ia64/xen/fw_emul.c
--- a/xen/arch/ia64/xen/fw_emul.c       Sun Oct 29 09:27:26 2006 -0700
+++ b/xen/arch/ia64/xen/fw_emul.c       Wed Nov 15 11:34:31 2006 -0700
@@ -205,7 +205,7 @@ sal_emulator (long index, unsigned long 
                }
                break;
            case SAL_GET_STATE_INFO:
-               {
+               if (current->domain == dom0) {
                        sal_queue_entry_t *e;
                        unsigned long flags;
                        struct smp_call_args_t arg;
@@ -274,13 +274,16 @@ sal_emulator (long index, unsigned long 
                                spin_unlock_irqrestore(&sal_queue_lock, flags);
                                xfree(e);
                        }
+               } else {
+                       status = IA64_SAL_NO_INFORMATION_AVAILABLE;
+                       r9 = 0;
                }
                break;
            case SAL_GET_STATE_INFO_SIZE:
                r9 = ia64_sal_get_state_info_size(in1);
                break;
            case SAL_CLEAR_STATE_INFO:
-               {
+               if (current->domain == dom0) {
                        sal_queue_entry_t *e;
                        unsigned long flags;
                        struct smp_call_args_t arg;

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.