RE: [Xen-ia64-devel] Paravirt_ops/hybrid directions and next steps

2008-03-13 Thread Dong, Eddie
Tristan:
We are talking about pv_ops interface calling convention, not 
hypervisor API convention. It should not violate each other because we still 
have hypervisor wrapper which can do the convertion.

One thing in my mind is that when we do pv_ops, we stand in hypervisor 
neutral position. Only when we implement xen hypervisor wrapper of pv_ops, we 
stand on Xen.

But yes, since we use single source, dual compile to generate code in 
place. Actually those pv_cpu_asm_ops won't be used frequently, most of them are 
not used. So even we use this policy, it is very few place which may use a 
formal pv_ops for ASM code which imply the calling convention.  All IVT/gate 
table/page doesn't have this issue.

Thanks, eddie 

-Original Message-
From: Tristan Gingold [mailto:[EMAIL PROTECTED] 
Sent: 2008年3月11日 17:24
To: Dong, Eddie
Cc: Alex Williamson; xen-ia64-devel
Subject: Re: [Xen-ia64-devel] Paravirt_ops/hybrid directions and next steps

Hi,

just a point about call convention: I don't think switching to PAL static
convention is a good idea as it doesn't work well with xen hyperprivop
because of banked registers.

Tristan.

___
Xen-ia64-devel mailing list
Xen-ia64-devel@lists.xensource.com
http://lists.xensource.com/xen-ia64-devel


[Xen-ia64-devel]PATCH:vmx_init_env must be called on every processor

2008-03-13 Thread Xu, Anthony
vmx_init_env must be called on every processor


Signed-off-by: Anthony Xu  [EMAIL PROTECTED] 


vp_init_env.patch
Description: vp_init_env.patch
___
Xen-ia64-devel mailing list
Xen-ia64-devel@lists.xensource.com
http://lists.xensource.com/xen-ia64-devel

[Xen-ia64-devel] [PATCH] fix behavior with unimplemented physical address

2008-03-13 Thread Kouya Shimura
A behavior with unimplemented physical address on HVM is unpredictable.
An unimplemented data fault or an unimplemented instruction trap
should be raised.

Signed-off-by: Kouya Shimura [EMAIL PROTECTED]

diff -r 716a637722e4 xen/arch/ia64/vmx/vmx_fault.c
--- a/xen/arch/ia64/vmx/vmx_fault.c Mon Mar 10 11:55:40 2008 -0600
+++ b/xen/arch/ia64/vmx/vmx_fault.c Thu Mar 13 13:54:14 2008 +0900
@@ -328,6 +328,11 @@ static int vmx_handle_lds(REGS* regs)
 return IA64_FAULT;
 }
 
+static inline int unimpl_phys_addr (u64 paddr)
+{
+return (pa_clear_uc(paddr)  MAX_PHYS_ADDR_BITS) != 0;
+}
+
 /* We came here because the H/W VHPT walker failed to find an entry */
 IA64FAULT
 vmx_hpw_miss(u64 vadr, u64 vec, REGS* regs)
@@ -351,20 +356,26 @@ vmx_hpw_miss(u64 vadr, u64 vec, REGS* re
 else
 panic_domain(regs, wrong vec:%lx\n, vec);
 
-/* Physical mode and region is 0 or 4.  */
 mmu_mode = VMX_MMU_MODE(v);
 if ((mmu_mode == VMX_MMU_PHY_DT
- || (mmu_mode == VMX_MMU_PHY_D  type == DSIDE_TLB))
- (REGION_NUMBER(vadr)  3) == 0) {
+ || (mmu_mode == VMX_MMU_PHY_D  type == DSIDE_TLB))) {
 if (type == DSIDE_TLB) {
 u64 pte;
 /* DTLB miss.  */
 if (misr.sp) /* Refer to SDM Vol2 Table 4-11,4-12 */
 return vmx_handle_lds(regs);
+if (unlikely(unimpl_phys_addr(vadr))) {
+unimpl_daddr(v);
+return IA64_FAULT;
+}
 pte = lookup_domain_mpa(v-domain, pa_clear_uc(vadr), NULL);
-/* Clear UC bit in vadr with the shifts.  */
 if (v-domain != dom0  (pte  GPFN_IO_MASK)) {
 emulate_io_inst(v, pa_clear_uc(vadr), 4, pte);
+return IA64_FAULT;
+}
+} else {
+if (unlikely(unimpl_phys_addr(vadr))) {
+unimpl_iaddr_trap(v, vadr);
 return IA64_FAULT;
 }
 }
diff -r 716a637722e4 xen/arch/ia64/vmx/vmx_virt.c
--- a/xen/arch/ia64/vmx/vmx_virt.c  Mon Mar 10 11:55:40 2008 -0600
+++ b/xen/arch/ia64/vmx/vmx_virt.c  Thu Mar 13 13:42:58 2008 +0900
@@ -277,9 +277,6 @@ static IA64FAULT vmx_emul_ptc_l(VCPU *vc
 }
 #ifdef  VMAL_NO_FAULT_CHECK
 if (unimplemented_gva(vcpu,r3) ) {
-isr.val = set_isr_ei_ni(vcpu);
-isr.code = IA64_RESERVED_REG_FAULT;
-vcpu_set_isr(vcpu, isr.val);
 unimpl_daddr(vcpu);
 return IA64_FAULT;
 }
@@ -338,9 +335,6 @@ static IA64FAULT vmx_emul_ptc_g(VCPU *vc
 }
 #ifdef  VMAL_NO_FAULT_CHECK
 if (unimplemented_gva(vcpu,r3) ) {
-isr.val = set_isr_ei_ni(vcpu);
-isr.code = IA64_RESERVED_REG_FAULT;
-vcpu_set_isr(vcpu, isr.val);
 unimpl_daddr(vcpu);
 return IA64_FAULT;
 }
@@ -374,9 +368,6 @@ static IA64FAULT vmx_emul_ptc_ga(VCPU *v
 }
 #ifdef  VMAL_NO_FAULT_CHECK
 if (unimplemented_gva(vcpu,r3) ) {
-isr.val = set_isr_ei_ni(vcpu);
-isr.code = IA64_RESERVED_REG_FAULT;
-vcpu_set_isr(vcpu, isr.val);
 unimpl_daddr(vcpu);
 return IA64_FAULT;
 }
@@ -411,9 +402,6 @@ static IA64FAULT ptr_fault_check(VCPU *v
 return IA64_FAULT;
 }
 if (unimplemented_gva(vcpu,r3) ) {
-isr.val = set_isr_ei_ni(vcpu);
-isr.code = IA64_RESERVED_REG_FAULT;
-vcpu_set_isr(vcpu, isr.val);
 unimpl_daddr(vcpu);
 return IA64_FAULT;
}
@@ -635,9 +623,6 @@ static IA64FAULT vmx_emul_itr_d(VCPU *vc
return IA64_FAULT;
 }
 if (unimplemented_gva(vcpu, ifa)) {
-isr.val = set_isr_ei_ni(vcpu);
-isr.code = IA64_RESERVED_REG_FAULT;
-vcpu_set_isr(vcpu, isr.val);
 unimpl_daddr(vcpu);
 return IA64_FAULT;
}
@@ -703,9 +688,6 @@ static IA64FAULT vmx_emul_itr_i(VCPU *vc
return IA64_FAULT;
 }
 if (unimplemented_gva(vcpu, ifa)) {
-isr.val = set_isr_ei_ni(vcpu);
-isr.code = IA64_RESERVED_REG_FAULT;
-vcpu_set_isr(vcpu, isr.val);
 unimpl_daddr(vcpu);
 return IA64_FAULT;
 }
@@ -764,9 +746,6 @@ static IA64FAULT itc_fault_check(VCPU *v
 }
 #ifdef  VMAL_NO_FAULT_CHECK
 if (unimplemented_gva(vcpu,ifa) ) {
-isr.val = set_isr_ei_ni(vcpu);
-isr.code = IA64_RESERVED_REG_FAULT;
-vcpu_set_isr(vcpu, isr.val);
 unimpl_daddr(vcpu);
 return IA64_FAULT;
 }
diff -r 716a637722e4 xen/include/asm-ia64/vmx_vcpu.h
--- a/xen/include/asm-ia64/vmx_vcpu.h   Mon Mar 10 11:55:40 2008 -0600
+++ b/xen/include/asm-ia64/vmx_vcpu.h   Thu Mar 13 13:55:46 2008 +0900
@@ -582,6 +582,11 @@ static inline void
 static inline void
 unimpl_daddr (VCPU *vcpu)
 {
+   ISR isr;
+
+   isr.val = set_isr_ei_ni(vcpu);
+   isr.code = IA64_UNIMPL_DADDR_FAULT;
+   vcpu_set_isr(vcpu, isr.val);
_general_exception(vcpu);
 }
 
@@ -695,4 +700,21 @@ data_access_rights(VCPU *vcpu, u64 vadr)
set_ifa_itir_iha(vcpu, vadr, 1, 1, 0);

Re: [Xen-ia64-devel] Mini-OS registers and libgcc

2008-03-13 Thread Tristan Gingold
On Wed, Feb 13, 2008 at 01:59:05PM +0100, Dietmar Hahn wrote:
 Hi Samuel,
 
 comments are within the text!
 
 Am Mittwoch, 13. Februar 2008 schrieb Samuel Thibault:
  Hello,
 
  Dietmar Hahn, le Wed 13 Feb 2008 11:53:59 +0100, a écrit :
   Am Dienstag, 12. Februar 2008 schrieb Samuel Thibault:
Is there a reason for using -mfixed-range=f2-f5,f12-f15,f32-f127
when compiling Mini-OS?  Is it really needed since it doesn't
have a user-land? (though I guess some support would be needed in
switch_context for instance)
  
   To handle this in a clean way the trap_frame has to be expanded and some
   fp registers have to stored/restored in trap handling.
 
  Ok. Would this be needed in order to be able to use libgcc.a?
 
 No, both things are independent from each other.

Humm not sure: libgcc uses f12-f15.

Tristan.

___
Xen-ia64-devel mailing list
Xen-ia64-devel@lists.xensource.com
http://lists.xensource.com/xen-ia64-devel


[Xen-ia64-devel] [Patch] cleanup set_psr_l

2008-03-13 Thread Akio Takebe
Hi,

This patch cleanup vcpu_set_psr_l().

Signed-off-by: Akio Takebe [EMAIL PROTECTED]

Best Regards,

Akio Takebe

cleanup_set_psr_l.patch
Description: Binary data
___
Xen-ia64-devel mailing list
Xen-ia64-devel@lists.xensource.com
http://lists.xensource.com/xen-ia64-devel

[Xen-ia64-devel] PATCH: cleanup in vmx_ivt.S

2008-03-13 Thread tgingold
Hi,

this patch removes the commented lines in order to make the code clearer.

Tristan.
# HG changeset patch
# User Tristan Gingold [EMAIL PROTECTED]
# Date 1205382564 -3600
# Node ID ac30e3a6b9fccc9d0213dc0eed7c1545c4312b1f
# Parent  7a00b54e1ce9b0ec3930f7d78d5a519cf588d680
Cleanup: remove useless commented lines.

Signed-off-by: Tristan Gingold [EMAIL PROTECTED]

diff -r 7a00b54e1ce9 -r ac30e3a6b9fc xen/arch/ia64/vmx/vmx_ivt.S
--- a/xen/arch/ia64/vmx/vmx_ivt.S   Wed Mar 12 06:46:15 2008 +0100
+++ b/xen/arch/ia64/vmx/vmx_ivt.S   Thu Mar 13 05:29:24 2008 +0100
@@ -524,38 +524,33 @@ ENTRY(vmx_break_fault)
 * to prevent leaking bits from kernel to user level.
 */

-//  mov.m r16=IA64_KR(CURRENT) // M2 r16 - current task (12 cyc)
-mov r14=r21
-bsw.1  // B (6 cyc) regs are saved, 
switch to bank 1
+mov r14=r21// save r21 before bsw.1
+bsw.1  // B (6 cyc) switch to bank 1
 ;;   
-mov r29=cr.ipsr// M2 (12 cyc)
+mov r29=cr.ipsr// M2 (12 cyc)
 mov r31=pr // I0 (2 cyc)
 mov r16=r14
 mov r15=r2
 
-mov r17=cr.iim // M2 (2 cyc)
+mov r17=cr.iim // M2 (2 cyc)
 mov.m r27=ar.rsc   // M2 (12 cyc)
-//  mov r18=__IA64_BREAK_SYSCALL   // A
-
-mov.m ar.rsc=0 // M2
+
+mov.m ar.rsc=0 // M2
 mov.m r21=ar.fpsr  // M2 (12 cyc)
 mov r19=b6 // I0 (2 cyc)
 ;;
-mov.m r23=ar.bspstore  // M2 (12 cyc)
+mov.m r23=ar.bspstore  // M2 (12 cyc)
 mov.m r24=ar.rnat  // M2 (5 cyc)
 mov.i r26=ar.pfs   // I0 (2 cyc)
 
-invala // M0|1
-nop.m 0// M
+invala // M0|1
+nop.m 0// M
 mov r20=r1 // Asave r1
 
 nop.m 0
-//  movl r30=sys_call_table// X
-movl r30=ia64_hypercall_table  // X
-
-mov r28=cr.iip // M2 (2 cyc)
-//  cmp.eq p0,p7=r18,r17   // I0 is this a system call?
-//(p7)  br.cond.spnt non_syscall   // B  no -
+movl r30=ia64_hypercall_table  // X
+
+mov r28=cr.iip // M2 (2 cyc)
//
// From this point on, we are definitely on the syscall-path
// and we can use (non-banked) scratch registers.
@@ -563,37 +558,30 @@ ENTRY(vmx_break_fault)
 ///
 mov r1=r16 // Amove task-pointer to 
addl-addressable reg
 mov r2=r16 // Asetup r2 for ia64_syscall_setup
-//  add r9=TI_FLAGS+IA64_TASK_SIZE,r16 // Ar9 = 
current_thread_info()-flags
-
-//  adds r16=IA64_TASK_THREAD_ON_USTACK_OFFSET,r16
-//  adds r15=-1024,r15 // Asubtract 1024 from syscall 
number
-//  mov r3=NR_syscalls - 1
+
 mov r3=NR_hypercalls - 1
 ;;
-//  ld1.bias r17=[r16] // M0|1 r17 = current-thread.on_ustack 
flag
-//  ld4 r9=[r9]// M0|1 r9 = 
current_thread_info()-flags
-mov r9=r0   // force flags = 0
+mov r9=r0  // force flags = 0
 extr.u r8=r29,41,2 // I0   extract ei field from cr.ipsr
 
-shladd r30=r15,3,r30   // Ar30 = sys_call_table + 
8*(syscall-1024)
+shladd r30=r15,3,r30   // Ar30 = hcall_table + 8*syscall
 addl r22=IA64_RBS_OFFSET,r1// Acompute base of RBS
-cmp.leu p6,p7=r15,r3   // Asyscall number in range?
+cmp.leu p6,p7=r15,r3   // Asyscall number in range?
 ;;
 
 lfetch.fault.excl.nt1 [r22]// M0|1 prefetch RBS
-(p6) ld8 r30=[r30] // M0|1 load address of syscall 
entry point
-tnat.nz.or p7,p0=r15   // I0   is syscall nr a NaT?
-
-mov.m ar.bspstore=r22  // M2   switch to kernel RBS
+(p6) ld8 r30=[r30] // M0|1 load address of syscall entry 
point
+tnat.nz.or p7,p0=r15   // I0   is syscall nr a NaT?
+
+mov.m ar.bspstore=r22  // M2   switch to kernel RBS
 cmp.eq p8,p9=2,r8  // Aisr.ei==2?
 ;;
 
 (p8) mov r8=0  // Aclear ei to 0
-//(p7)  movl r30=sys_ni_syscall// X
-(p7) movl r30=do_ni_hypercall  // X
-
-(p8) adds r28=16,r28   // Aswitch cr.iip to next 
bundle
-(p9) adds r8=1,r8  

[Xen-ia64-devel] Re: [PATCH][OpenGFW] Enable to handle xm trigger domain init

2008-03-13 Thread Tristan Gingold
On Wed, Mar 12, 2008 at 03:37:24PM +0900, SUZUKI Kazuhiro wrote:
 Hi Tristan,
 
 When `xm trigger domain init' is called, the guest domain panics on
 current OpenGFW.
 The following patch enables to send INIT to guest and to call INIT
 handlers(monarch and slave).

Thanks!

We now have to improve INIT virtualization (eg testing psr.mc, ...)

Tristan.

___
Xen-ia64-devel mailing list
Xen-ia64-devel@lists.xensource.com
http://lists.xensource.com/xen-ia64-devel


[Xen-ia64-devel] [PATCH][OpenGFW] Enable to handle xm trigger domain init

2008-03-13 Thread SUZUKI Kazuhiro
Hi Tristan,

When `xm trigger domain init' is called, the guest domain panics on
current OpenGFW.
The following patch enables to send INIT to guest and to call INIT
handlers(monarch and slave).

Thanks,
KAZ

Signed-off-by: Kazuhiro Suzuki [EMAIL PROTECTED]
diff -r 9e4b5bb76049 edk2-sparse/EdkXenPkg/Dxe/XenSal/Sal.c
--- a/edk2-sparse/EdkXenPkg/Dxe/XenSal/Sal.cWed Feb 20 16:26:26 2008 +0900
+++ b/edk2-sparse/EdkXenPkg/Dxe/XenSal/Sal.cFri Mar 07 09:28:05 2008 +0900
@@ -3,10 +3,13 @@
 #define BUILD_CMD(addr)  ((0x8000 | (addr))  ~3)
 #define REG_OFFSET(addr) (0x00FF  (addr))
 
-struct {
+struct Fptr {
   UINT64 Ip;
   UINT64 Gp;
 } SalRendezVector;
+
+struct Fptr *SalMonarchInitVector = (struct Fptr *)0x8000ff80;
+struct Fptr *SalSlaveInitVector = (struct Fptr *)0x8000ff90 ;
 
 STATIC
 EFI_SAL_STATUS
@@ -108,11 +111,26 @@ SalProc
   return (SAL_RETURN_REGS) {EFI_SAL_INVALID_ARGUMENT, r9, r10, r11};
 }
 status = EFI_SAL_SUCCESS;
-  } else if (FunctionId == EFI_SAL_SET_VECTORS
- Arg2 == EFI_SAL_SET_BOOT_RENDEZ_VECTOR) {
-SalRendezVector.Ip = Arg3;
-SalRendezVector.Gp = Arg4;
-status = EFI_SAL_SUCCESS;
+  } else if (FunctionId == EFI_SAL_SET_VECTORS) {
+switch (Arg2) {
+case EFI_SAL_SET_MCA_VECTOR:
+  return SalEmulator (FunctionId, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, 
Arg8);
+case EFI_SAL_SET_INIT_VECTOR:
+  SalMonarchInitVector-Ip = Arg3;
+  SalMonarchInitVector-Gp = Arg4;
+  SalSlaveInitVector-Ip = Arg6;
+  SalSlaveInitVector-Gp = Arg7;
+
+  status = EFI_SAL_SUCCESS;
+  return SalEmulator (FunctionId, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, 
Arg8);
+case EFI_SAL_SET_BOOT_RENDEZ_VECTOR:
+  SalRendezVector.Ip = Arg3;
+  SalRendezVector.Gp = Arg4;
+  status = EFI_SAL_SUCCESS;
+  break;
+default:
+  return (SAL_RETURN_REGS) {EFI_SAL_INVALID_ARGUMENT, r9, r10, r11};
+}
   } else {
 return SalEmulator (FunctionId, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8);
   }
diff -r 9e4b5bb76049 edk2-sparse/EdkXenPkg/SecMain/Ipf/startup.s
--- a/edk2-sparse/EdkXenPkg/SecMain/Ipf/startup.s   Wed Feb 20 16:26:26 
2008 +0900
+++ b/edk2-sparse/EdkXenPkg/SecMain/Ipf/startup.s   Wed Mar 12 14:31:06 
2008 +0900
@@ -12,6 +12,26 @@
 #define SCRATCH_REG5r28
 #define SCRATCH_REG6r29
 #define PR_REG  r30
+
+#defineUC_BIT  (163)
+#define IA64_IPI_DEFAULT_BASE_ADDR 0xfee0
+#define IA64_IPI_DM_INIT   0x5
+
+/*
+ *  Calculates percpu minstate address like `min_state + cpu_id * 0x200'.
+ *  cr.lid is defined as follows.
+ * cr.lid = (id  24) | (eid  16)
+ *  id and eid is set in EdkXenPkg/Dxe/XenAcpi/build.c.
+ * id  = cpu_id
+ * eid = 0
+ */
+#defineMINSTATE(reg,tmp)   \
+   mov tmp=cr.lid;;\
+   extrtmp=tmp,24,8;   \
+   movlreg=min_state;; \
+   ld8 reg=[reg];  \
+   dep.z   tmp=tmp,9,8;;   \
+   add reg=tmp,reg
 
 #define VECTOR(offset) \
.org base + offset  ;   \
@@ -943,6 +963,346 @@ 1:break 0
 
.endp _start
 
+   .align  16
+   .globl _init
+   .proc _init
+_init: 
+   MINSTATE(r2,r3);;
+   mov r17=r2  // min_state
+   add r20=16,r2
+   mov r19=ar.unat
+   ;;
+   st8.spill   [r20]=r19,8 // @0
+   ;;
+   st8.spill   [r20]=r1,8  // @8
+   ;;
+   st8.spill   [r20]=r2,8  // @10
+   ;;
+   st8.spill   [r20]=r3,8  // @18
+   ;;
+   st8.spill   [r20]=r4,8  // @20
+   ;;
+   st8.spill   [r20]=r5,8  // @28
+   ;;
+   st8.spill   [r20]=r6,8  // @30
+   ;;
+   st8.spill   [r20]=r7,8  // @38
+   ;;
+   st8.spill   [r20]=r8,8  // @40
+   ;;
+   st8.spill   [r20]=r9,8  // @48
+   ;;
+   st8.spill   [r20]=r10,8 // @50
+   ;;
+   st8.spill   [r20]=r11,8 // @58
+   ;;
+   st8.spill   [r20]=r12,8 // @60
+   ;;
+   st8.spill   [r20]=r13,8 // @68
+   ;;
+   st8.spill   [r20]=r14,8 // @70
+   ;;
+   add r9=8,r20
+   st8.spill   [r20]=r15   // @78
+   ;;
+bsw.0;;
+srlz.d
+   
+   st8.spill   [r9]=r16,8  // @80
+   ;;
+   st8.spill   [r9]=r17,8  // @88
+   ;;
+   st8.spill   [r9]=r18,8  // @90
+   ;;
+   st8.spill   [r9]=r19,8  // @98
+   ;;
+   st8.spill   [r9]=r20,8  // @a0
+   ;;
+   st8.spill   [r9]=r21,8  // @a8
+   ;;
+   st8.spill   [r9]=r22,8  // @b0
+   ;;
+   st8.spill   [r9]=r23,8  // @b8
+   ;;
+   st8.spill   [r9]=r24,8  // @c0
+   ;;
+   st8.spill   

Re: [Xen-ia64-devel] Mini-OS registers and libgcc

2008-03-13 Thread Samuel Thibault
Tristan Gingold, le Wed 12 Mar 2008 17:19:55 +0100, a écrit :
 On Wed, Feb 13, 2008 at 01:59:05PM +0100, Dietmar Hahn wrote:
  comments are within the text!
  
  Am Mittwoch, 13. Februar 2008 schrieb Samuel Thibault:
   Hello,
  
   Dietmar Hahn, le Wed 13 Feb 2008 11:53:59 +0100, a écrit :
Am Dienstag, 12. Februar 2008 schrieb Samuel Thibault:
 Is there a reason for using -mfixed-range=f2-f5,f12-f15,f32-f127
 when compiling Mini-OS?  Is it really needed since it doesn't
 have a user-land? (though I guess some support would be needed in
 switch_context for instance)
   
To handle this in a clean way the trap_frame has to be expanded and some
fp registers have to stored/restored in trap handling.
  
   Ok. Would this be needed in order to be able to use libgcc.a?
  
  No, both things are independent from each other.
 
 Humm not sure: libgcc uses f12-f15.

Ok, so with the red zone of x86_64, that's another reason for not using
it :/

Samuel

___
Xen-ia64-devel mailing list
Xen-ia64-devel@lists.xensource.com
http://lists.xensource.com/xen-ia64-devel


Re: [Xen-ia64-devel] [PATCH] fix behavior with unimplemented physical address

2008-03-13 Thread Tristan Gingold
On Thu, Mar 13, 2008 at 02:31:03PM +0900, Kouya Shimura wrote:
Content-Description: message body text
 A behavior with unimplemented physical address on HVM is unpredictable.
 An unimplemented data fault or an unimplemented instruction trap
 should be raised.

I think you shouldn't remove the region test.  vpsr.rt may still be set in
some modes.
This is to be discussed (so it might be easier to split this patch in two
pieces).

Tristan.

___
Xen-ia64-devel mailing list
Xen-ia64-devel@lists.xensource.com
http://lists.xensource.com/xen-ia64-devel


[Xen-ia64-devel] GFW release

2008-03-13 Thread Tristan Gingold
Hi,

I have just updated the GFW binary.  Please test it.
If it is OK, it will be used for the official GFW release.

[ I made this patch before adding INIT support.  Should I make a new release ?]

Tristan.


___
Xen-ia64-devel mailing list
Xen-ia64-devel@lists.xensource.com
http://lists.xensource.com/xen-ia64-devel


[Xen-ia64-devel] need advices for vcpu params

2008-03-13 Thread Tristan Gingold
Hi,

I have a general question for implementing an ia64 specific feature.
The ia64 architecture has several parameters not fixed: number of itr, dtr
and pk registers, size of virtual addresses, size of physical addresses, size
of rid and pk...

It would be nie to be able to specify these parameters when a domain is
created (as this will open new doors).

What is the best way to add these not-for-newbie parameters:
- adding them one per one, eg:
  vcpu_nbr_itrs=8
  ...
- adding only one generic parameter such as:
  vcpu_params=nbr_itrs=9 nbr_dtrs=8
  and parsing this string in the libxc domain builder.

Thanks for ideas or opinions,
Tristan.

___
Xen-ia64-devel mailing list
Xen-ia64-devel@lists.xensource.com
http://lists.xensource.com/xen-ia64-devel


[Xen-ia64-devel] Xen debugging on ia64? gdbserver-xen or other tools?

2008-03-13 Thread Kayvan Sylvan
Hi everyone,

I'm trying to debug an issue that looks to be related to the way the guest 
firmware sets up the various EFI tables.

Has anyone gotten gdbserver-xen to work under IA64?

When I try to compile it, I get the following compile error:

gcc-o gdbserver-xen inferiors.o regcache.o remote-utils.o server.o 
signals.o target.o utils.o mem-break.o reg-ia64.o linux-low.o linux-ia64-low.o  
\
  -L../../../../../libxc/ -lxenctrl
server.o(.text+0x12d1): In function `ctrl_c_handler':
../../../gdb-6.2.1/gdb/gdbserver/server.c:346: undefined reference to 
`control_c_pressed_flag'
server.o(.text+0x12e1):../../../gdb-6.2.1/gdb/gdbserver/server.c:346: undefined 
reference to `control_c_pressed_flag'
collect2: ld returned 1 exit status

It looks like maybe this code is x86-specific.

How does one debug Xen related issues? What tools do you all use?

Thanks for your replies.

---Kayvan
___
Xen-ia64-devel mailing list
Xen-ia64-devel@lists.xensource.com
http://lists.xensource.com/xen-ia64-devel

Re: [Xen-ia64-devel] GFW release

2008-03-13 Thread SUZUKI Kazuhiro
Hi Tristan,

 [ I made this patch before adding INIT support.  Should I make a new release 
 ?]
 

Please add INIT support to a binary release.
I want you to release a new one.

Thanks,
KAZ

From: Tristan Gingold [EMAIL PROTECTED]
Subject: [Xen-ia64-devel] GFW release
Date: Thu, 13 Mar 2008 13:46:27 +0100

 Hi,
 
 I have just updated the GFW binary.  Please test it.
 If it is OK, it will be used for the official GFW release.
 
 [ I made this patch before adding INIT support.  Should I make a new release 
 ?]
 
 Tristan.
 
 
 ___
 Xen-ia64-devel mailing list
 Xen-ia64-devel@lists.xensource.com
 http://lists.xensource.com/xen-ia64-devel

___
Xen-ia64-devel mailing list
Xen-ia64-devel@lists.xensource.com
http://lists.xensource.com/xen-ia64-devel


RE: [Xen-ia64-devel] GFW release

2008-03-13 Thread Zhang, Xiantao
I checked it at kvm side. It also works well. :)
Xiantao 

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Tristan Gingold
Sent: 2008年3月13日 20:46
To: Xen-ia64-devel
Subject: [Xen-ia64-devel] GFW release

Hi,

I have just updated the GFW binary.  Please test it.
If it is OK, it will be used for the official GFW release.

[ I made this patch before adding INIT support.  Should I make a new release ?]

Tristan.


___
Xen-ia64-devel mailing list
Xen-ia64-devel@lists.xensource.com
http://lists.xensource.com/xen-ia64-devel

___
Xen-ia64-devel mailing list
Xen-ia64-devel@lists.xensource.com
http://lists.xensource.com/xen-ia64-devel


Re: [Xen-ia64-devel] [PATCH] fix behavior with unimplemented physical address

2008-03-13 Thread Kouya Shimura
Hi Tristan,

You are right. I forgot about register stack translation.
Thank you for pointing out. I'll split the patch.
umm, this seems to be quite troublesome.

Thanks,
Kouya

Tristan Gingold writes:
 I think you shouldn't remove the region test.  vpsr.rt may still be set in
 some modes.
 This is to be discussed (so it might be easier to split this patch in two
 pieces).

___
Xen-ia64-devel mailing list
Xen-ia64-devel@lists.xensource.com
http://lists.xensource.com/xen-ia64-devel


[Xen-ia64-devel] [PATCH] raise a fault with unimplemented physical address

2008-03-13 Thread Kouya Shimura
An unimplemented data fault or an unimplemented instruction trap
should be raised with unimplemented physical address.
Also some cleanups.

Signed-off-by: Kouya Shimura [EMAIL PROTECTED]

diff -r 716a637722e4 xen/arch/ia64/vmx/vmx_fault.c
--- a/xen/arch/ia64/vmx/vmx_fault.c Mon Mar 10 11:55:40 2008 -0600
+++ b/xen/arch/ia64/vmx/vmx_fault.c Fri Mar 14 11:03:35 2008 +0900
@@ -328,6 +328,11 @@ static int vmx_handle_lds(REGS* regs)
 return IA64_FAULT;
 }
 
+static inline int unimpl_phys_addr (u64 paddr)
+{
+return (pa_clear_uc(paddr)  MAX_PHYS_ADDR_BITS) != 0;
+}
+
 /* We came here because the H/W VHPT walker failed to find an entry */
 IA64FAULT
 vmx_hpw_miss(u64 vadr, u64 vec, REGS* regs)
@@ -361,10 +366,18 @@ vmx_hpw_miss(u64 vadr, u64 vec, REGS* re
 /* DTLB miss.  */
 if (misr.sp) /* Refer to SDM Vol2 Table 4-11,4-12 */
 return vmx_handle_lds(regs);
+if (unlikely(unimpl_phys_addr(vadr))) {
+unimpl_daddr(v);
+return IA64_FAULT;
+}
 pte = lookup_domain_mpa(v-domain, pa_clear_uc(vadr), NULL);
-/* Clear UC bit in vadr with the shifts.  */
 if (v-domain != dom0  (pte  GPFN_IO_MASK)) {
 emulate_io_inst(v, pa_clear_uc(vadr), 4, pte);
+return IA64_FAULT;
+}
+} else {
+if (unlikely(unimpl_phys_addr(vadr))) {
+unimpl_iaddr_trap(v, vadr);
 return IA64_FAULT;
 }
 }
diff -r 716a637722e4 xen/arch/ia64/vmx/vmx_virt.c
--- a/xen/arch/ia64/vmx/vmx_virt.c  Mon Mar 10 11:55:40 2008 -0600
+++ b/xen/arch/ia64/vmx/vmx_virt.c  Fri Mar 14 11:02:24 2008 +0900
@@ -277,9 +277,6 @@ static IA64FAULT vmx_emul_ptc_l(VCPU *vc
 }
 #ifdef  VMAL_NO_FAULT_CHECK
 if (unimplemented_gva(vcpu,r3) ) {
-isr.val = set_isr_ei_ni(vcpu);
-isr.code = IA64_RESERVED_REG_FAULT;
-vcpu_set_isr(vcpu, isr.val);
 unimpl_daddr(vcpu);
 return IA64_FAULT;
 }
@@ -338,9 +335,6 @@ static IA64FAULT vmx_emul_ptc_g(VCPU *vc
 }
 #ifdef  VMAL_NO_FAULT_CHECK
 if (unimplemented_gva(vcpu,r3) ) {
-isr.val = set_isr_ei_ni(vcpu);
-isr.code = IA64_RESERVED_REG_FAULT;
-vcpu_set_isr(vcpu, isr.val);
 unimpl_daddr(vcpu);
 return IA64_FAULT;
 }
@@ -374,9 +368,6 @@ static IA64FAULT vmx_emul_ptc_ga(VCPU *v
 }
 #ifdef  VMAL_NO_FAULT_CHECK
 if (unimplemented_gva(vcpu,r3) ) {
-isr.val = set_isr_ei_ni(vcpu);
-isr.code = IA64_RESERVED_REG_FAULT;
-vcpu_set_isr(vcpu, isr.val);
 unimpl_daddr(vcpu);
 return IA64_FAULT;
 }
@@ -411,9 +402,6 @@ static IA64FAULT ptr_fault_check(VCPU *v
 return IA64_FAULT;
 }
 if (unimplemented_gva(vcpu,r3) ) {
-isr.val = set_isr_ei_ni(vcpu);
-isr.code = IA64_RESERVED_REG_FAULT;
-vcpu_set_isr(vcpu, isr.val);
 unimpl_daddr(vcpu);
 return IA64_FAULT;
}
@@ -635,9 +623,6 @@ static IA64FAULT vmx_emul_itr_d(VCPU *vc
return IA64_FAULT;
 }
 if (unimplemented_gva(vcpu, ifa)) {
-isr.val = set_isr_ei_ni(vcpu);
-isr.code = IA64_RESERVED_REG_FAULT;
-vcpu_set_isr(vcpu, isr.val);
 unimpl_daddr(vcpu);
 return IA64_FAULT;
}
@@ -703,9 +688,6 @@ static IA64FAULT vmx_emul_itr_i(VCPU *vc
return IA64_FAULT;
 }
 if (unimplemented_gva(vcpu, ifa)) {
-isr.val = set_isr_ei_ni(vcpu);
-isr.code = IA64_RESERVED_REG_FAULT;
-vcpu_set_isr(vcpu, isr.val);
 unimpl_daddr(vcpu);
 return IA64_FAULT;
 }
@@ -764,9 +746,6 @@ static IA64FAULT itc_fault_check(VCPU *v
 }
 #ifdef  VMAL_NO_FAULT_CHECK
 if (unimplemented_gva(vcpu,ifa) ) {
-isr.val = set_isr_ei_ni(vcpu);
-isr.code = IA64_RESERVED_REG_FAULT;
-vcpu_set_isr(vcpu, isr.val);
 unimpl_daddr(vcpu);
 return IA64_FAULT;
 }
diff -r 716a637722e4 xen/include/asm-ia64/vmx_vcpu.h
--- a/xen/include/asm-ia64/vmx_vcpu.h   Mon Mar 10 11:55:40 2008 -0600
+++ b/xen/include/asm-ia64/vmx_vcpu.h   Fri Mar 14 11:02:24 2008 +0900
@@ -582,6 +582,11 @@ static inline void
 static inline void
 unimpl_daddr (VCPU *vcpu)
 {
+   ISR isr;
+
+   isr.val = set_isr_ei_ni(vcpu);
+   isr.code = IA64_UNIMPL_DADDR_FAULT;
+   vcpu_set_isr(vcpu, isr.val);
_general_exception(vcpu);
 }
 
@@ -695,4 +700,21 @@ data_access_rights(VCPU *vcpu, u64 vadr)
set_ifa_itir_iha(vcpu, vadr, 1, 1, 0);
inject_guest_interruption(vcpu, IA64_DATA_ACCESS_RIGHTS_VECTOR);
 }
+
+/*
+ * Unimplement Instruction Address Trap
+ *  @ Lower-Privilege Transfer Trap Vector
+ * Refer to SDM Vol2 Table 5-6  8-1
+ */
+static inline void
+unimpl_iaddr_trap (VCPU *vcpu, u64 vadr)
+{
+   ISR isr;
+
+   isr.val = set_isr_ei_ni(vcpu);
+   isr.code = IA64_UNIMPL_IADDR_TRAP;
+   vcpu_set_isr(vcpu, isr.val);
+   

[Xen-ia64-devel] Re: [patch] ia64: kexec: add __va_efi

2008-03-13 Thread Alex Williamson

On Fri, 2008-03-14 at 10:51 +0900, Simon Horman wrote:
 On an HP rx2600 this eliminates the problem where the SAL rendezvous address
 can't be registered and subsequently the boot fails. I suspect it
 solves similar problems that have been seen on other HP machines too.
 
 Actually, its rather amazing that the HP rx2620 and Tiger2 that
 I have been using work without this fix.

   Wow, that is rather surprising.  Congratulations on tracking this
down.  I'll try to verify if this also solves the problem on superdome
tomorrow.  Thanks,

Alex

-- 
Alex Williamson HP Open Source  Linux Org.


___
Xen-ia64-devel mailing list
Xen-ia64-devel@lists.xensource.com
http://lists.xensource.com/xen-ia64-devel


Re: [Xen-ia64-devel] GFW release

2008-03-13 Thread Tristan Gingold
On Fri, Mar 14, 2008 at 09:53:49AM +0800, Zhang, Xiantao wrote:
 I checked it at kvm side. It also works well. :)

Good news!  Thank you for the report.

Tristan.

___
Xen-ia64-devel mailing list
Xen-ia64-devel@lists.xensource.com
http://lists.xensource.com/xen-ia64-devel