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

[Xen-devel] [Q] PV page table seems to be reset to zero.. what happened?

Hello. I'm having some trouble,
I'm working on page table to basically build reverse mapping..
So I'm intercepting mapping changes in mod_l1_entry() and [alloc,free]_l1_table() and it seemed to work for some page tables. However, my L1 page table values are changed somewhere that I don't know.. this happens to do_update_va_mapping().

Here's the situation..
(1) do_update_va_mapping() calls mod_l1_entry() and pte's value is set.
(2) later do_update_va_mapping() find this pte value zero!!

see the below log from do_update_va_mapping() and mod_l1_entry(),
b7d6 is mfn, and dcc is offset in this page table.
'=0' means its original value is 0.
so it changed it to 'f79e067'..
(virtual address from the guset is b7f731d4)

(XEN) (va:b7d6:dcc(dcc)=0)
(XEN) 1@1 t:b7d6,dcc O:0(f79e067) N:f79e067 a:b7f731d4 r:a
(XEN) (va:b7d6:dcc(dcc)=0)
(XEN) 1@1 t:b7d6,dcc O:0(f79e065) N:f79e065 a:b7f73000 r:a

afterwards, it again calls do_update_va_mapping(), but now it reports its old value as 0, not 'f79e067' and try to change its value to f79e065. (it means, it's just changing its flags only)..

I was expecting this reports that the original value is f79e067, as it was set before.

This might seem to be racing, but note that they're same VCPU@PCPU (1@1) and there was rather long time between these two event. so I doubt it's racing problem. Also it happens pretty regularly.

It just seems to me someone is resetting/changing page table value to zero.. anybody can give me some hints/or comment?
Where else these mapping can change? I'm working on IA32, no pae,.
thanks in advance.


Xen-devel mailing list



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