[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-ia64-devel] RE: ar.unat[patch] fixed this ar.uant issue.[patch] fixed ar.unat save/restore issue
See my comments, >-----Original Message----- >From: Magenheimer, Dan (HP Labs Fort Collins) [mailto:dan.magenheimer@xxxxxx] >Sent: 2005年11月8日 2:07 >To: Xu, Anthony >Cc: xen-ia64-devel@xxxxxxxxxxxxxxxxxxx >Subject: RE: ar.unat[patch] fixed this ar.uant issue.[patch] fixed ar.unat >save/restore issue > >Another NaT question... > >>I recall that some time ago (around the time of the merge) >>you submitted some patches related to fixing ar.unat saving >>and restoring. > >Another part of your earlier patch was a change in >ia64_handle_reflection. I still periodically get the >message: > > NaT fault... attempting to handle as privop > >Since your latest fix, Tony's regcheck tool no longer >reports ar.unat as being saved/restored incorrectly. >I was hoping that the above message would go away also, >but it has not. I see it a couple times at boot and >a couple times for every linux compile (at the end so >it is probably the linker or some other link-related >tool). I have also seen programs segfault after printing >this message. So I went to look at the Xen/ia64 code where >this is printed. > I have not seen nat consumptions and segmentations faults for a long time, in your build test and ltp test. Otherwise, I'll definitely try to fix that. >It doesn't look right to me. There are two issues: > >1) Your patch added a "return"... I think this means that > NaT faults will never get reflected to a guest (even > Register NaT Consumption faults). Yes, you are right, we should inject Nat Consumption faults to guest, but as I know there should be not NaT consumption faults in linux, so I simply added a "return". I think the best way is to add "panic" at this place, this will enforce us to debug this issue rather than temporarily work around. >2) Since a Instruction NaTPage Consumption fault has higher > priority than a Privileged Operation fault, I think the > original printf/priv_emulate code was intended to catch > this case and properly emulate a privileged instruction > on a NaTPage. I think it may also be necessary if a Data > NaTPage Consumption fault is incurred when the privop > emulation code fetches the instruction. (The code in > ia64_handle_reflection should probably check the ISR to > avoid calling priv_emulate for other kinds of NaT > Consumption though.) I have been being curious why use emulate function to handle NaT consumption. Now I understand, thank you for your detailed explain. Maybe we need to put more comments in the confusing place like this. >You know more about NaT's than I do... could you recheck >this code in ia64_handle_reflection please? Do you have >any test code that provokes any of these NaT faults? > It' is very kind of you to say that, unfortunately I have not seen those issues. What I suspect is dom0 does bank switch on shared page but not consider ar.unat. Anyway, I'll try to provoke this fault, If I find, I'll definitely fix it. >Thanks. >Dan > >> -----Original Message----- >> From: Xu, Anthony [mailto:anthony.xu@xxxxxxxxx] >> Sent: Friday, November 04, 2005 12:10 AM >> To: Magenheimer, Dan (HP Labs Fort Collins) >> Cc: xen-ia64-devel@xxxxxxxxxxxxxxxxxxx >> Subject: RE: ar.unat[patch] fixed this ar.uant issue.[patch] >> fixed ar.unat save/restore issue >> >> >I am curious about the use of B1NATS in the code >> >around this patch. Under what circumstances does >> >this get set/used? >> >> 1. emulate bsw1, bsw0 >> 2. emulate rfi. >> 3. inject fault to guest. >> >> There is similar unat code in >> >fast_tick (default off) and fast_reflect (default on) >> >and I am wondering if similar unat changes are needed >> >and whether it is now OK to turn on HANDLE_AR_UNAT >> >(which is now default off). >> You are right, in above two cases you should also save >> ar.unat to XSI_B1NATS_OFS after spilling the guest bank1to >> share page. I had handled all this in C code. I didn't look >> into fast hypercall code, It's hard to read due to I am not >> good at assembly code. The principle of handling ar.unat is >> obvious; every time you spill banking register you must save >> corresponding ar.unat after it, every time you fill banking >> register you must restore corresponding ar.unat before it. >> >> We don't need to clear all guest b0 registers and their's nat >> bit. Because r16~r23 are preserved regs and r24~r31 are >> scratch regs, we only need to restore r16~r23 rather than >> clear r16~r23 to 0. >> >> Next time you enable some functions like hyper_ssm_i, when >> you save bank1 regs you should also save bank1 unat. >> >> Below patch enables HANDLE_AR_UNAT. >> >> >> >> Signed-off-by Anthony Xu <Anthony.xu@xxxxxxxxx> >> >> Thanks, >> Anthony. >> >> >> >> >> >-----Original Message----- >> >From: Magenheimer, Dan (HP Labs Fort Collins) >> [mailto:dan.magenheimer@xxxxxx] >> >Sent: 2005年11月3日 22:42 >> >To: Xu, Anthony >> >Cc: xen-ia64-devel@xxxxxxxxxxxxxxxxxxx >> >Subject: RE: ar.unat[patch] fixed this ar.uant issue. >> > >> >Hi Anthony -- >> > >> >I am curious about the use of B1NATS in the code >> >around this patch. Under what circumstances does >> >this get set/used? There is similar unat code in >> >fast_tick (default off) and fast_reflect (default on) >> >and I am wondering if similar unat changes are needed >> >and whether it is now OK to turn on HANDLE_AR_UNAT >> >(which is now default off). >> > >> >Thanks, >> >Dan >> > >> >> -----Original Message----- >> >> From: Xu, Anthony [mailto:anthony.xu@xxxxxxxxx] >> >> Sent: Thursday, November 03, 2005 1:08 AM >> >> To: Magenheimer, Dan (HP Labs Fort Collins) >> >> Cc: xen-ia64-devel@xxxxxxxxxxxxxxxxxxx >> >> Subject: RE: ar.unat[patch] fixed this ar.uant issue. >> >> >> >> Dan, >> >> Last time, I used ar.unat register to restore guest general >> >> register nat bit in hyper_rfi function for eliminating nat >> >> bit consumption fault,but not restored ar.unat. >> >> >> >> Signed-off-by Anthony Xu <Anthony.xu@xxxxxxxxx> >> >> >> >> Thanks, >> >> Anthony. >> >> >> >> >> >> >> >> >> >> >-----Original Message----- >> >> >From: Magenheimer, Dan (HP Labs Fort Collins) >> >> [mailto:dan.magenheimer@xxxxxx] >> >> >Sent: 2005年11月3日 11:54 >> >> >To: Xu, Anthony >> >> >Cc: xen-ia64-devel@xxxxxxxxxxxxxxxxxxx >> >> >Subject: RE: ar.unat >> >> > >> >> >> I can take a look at this, please send me regcheck utilty. >> >> >> >> >> >> >> >> >> Thanks >> >> >> Anthony >> >> > >> >> >Great, thanks! Here's where I got Tony's regcheck tool. If >> >> >it's not still there, perhaps Tony can post it. >> >> > >> >> >By the way, if anyone tries this on a domU, Matt Chapman >> >> >has a pending fix that resolves a FP save/restore issue. >> >> > >> >> >Thanks, >> >> >Dan >> >> > >> >> >> -----Original Message----- >> >> >> From: linux-ia64-owner@xxxxxxxxxxxxxxx >> >> >> [mailto:linux-ia64-owner@xxxxxxxxxxxxxxx] On Behalf Of >> Luck, Tony >> >> >> Sent: Tuesday, March 01, 2005 4:33 PM >> >> >> To: linux-ia64@xxxxxxxxxxxxxxx >> >> >> Subject: RE: [patch 2.6.11-rc3-bk4] Correctly dereference >> >> >> ia64_mca_data >> >> >> >> >> >> Back on February 9th, I wrote: >> >> >> >I wrote a test program that loads up random values >> into registers >> >> >> >(just r1-r31, a bunch of stacked registers, and >> f2-f127 for now) >> >> >> >and then checks that all the registers haven't changed value a >> >> >> >few thousand times, before reloading with a new set of random >> >> >> >values. >> >> >> >> >> >> A few people asked whether I could post the program ... it took >> >> >> a while to get sign-off ... but that gave me time to >> add "branch", >> >> >> "predicate" and half a dozen "application" registers to the mix, >> >> >> plus make it print the name of the register that was >> nuked (instead >> >> >> of a number that required manual translation). >> >> >> >> >> >> I've tested it by using a debugger to zap one of each class >> >> >> of register >> >> >> that is being monitored to check that it works. >> >> >> >> >> >> >> http://www.kernel.org/pub/linux/kernel/people/aegl/ia64regcheck.tgz >> >> >> >> >> >> Usage ... compile, and run a few copies. If they all >> >> "exit(0)" (which >> >> >> may take a couple of days) the test passed. Otherwise you >> >> should see >> >> >> the name of the register printed to stderr, and exit code 1. >> >> >> >> >> >> Apart from the MCA case, I haven't seen it report a problem >> >> >> yet ... but >> >> >> I've only run a few hours. >> >> >> >> >> >> -Tony >> >> >> _______________________________________________ Xen-ia64-devel mailing list Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-ia64-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |