# HG changeset patch # User dietmar.hahn@xxxxxxxxxxxxxxxxxxx # Node ID b64739bfc400523479e26458926e6e071a7b96d8 # Parent 9313d0ce09f85e0d883bc5378d1fc9ca7a55a932 Setting of psr.pk bit in the domU leads to a domU panic. Fixed for emulation of rfi, ssm psr.pk, mov psr.l=reg. Signed-off-by: Dietmar Hahn diff -r 9313d0ce09f8 -r b64739bfc400 xen/arch/ia64/xen/vcpu.c --- a/xen/arch/ia64/xen/vcpu.c Tue Apr 24 09:26:32 2007 -0600 +++ b/xen/arch/ia64/xen/vcpu.c Thu Apr 26 10:55:00 2007 +0200 @@ -396,6 +396,10 @@ IA64FAULT vcpu_set_psr_l(VCPU * vcpu, u6 //if (val & ~(IA64_PSR_PP | IA64_PSR_UP | IA64_PSR_SP)) // return IA64_ILLOP_FAULT; // however trying to set other bits can't be an error as it is in ssm + if (newpsr.pk) { + printk("vcpu_set_psr_l: protection keys not supported\n"); + return IA64_ILLOP_FAULT; + } if (newpsr.dfh) { ipsr->dfh = 1; PSCB(vcpu, vpsr_dfh) = 1; @@ -1356,6 +1360,10 @@ IA64FAULT vcpu_rfi(VCPU * vcpu) psr.ia64_psr.it = 1; psr.ia64_psr.bn = 1; //psr.pk = 1; // checking pkeys shouldn't be a problem but seems broken + if(psr.ia64_psr.pk == 1) { + printk("vcpu_rfi: protection keys not supported\n"); + return IA64_ILLOP_FAULT; + } ifs = PSCB(vcpu, ifs); if (ifs & 0x8000000000000000UL)