Messages in this thread | | | Date | Tue, 13 Jul 2010 16:23:20 +0300 | From | Avi Kivity <> | Subject | Re: [patch 134/149] x86, paravirt: Add a global synchronization point for pvclock |
| |
On 07/13/2010 01:23 PM, Peter Palfrader wrote: > Sorry for the delay. >
A good trace is worth it.
> [<ffffffff810373c0>] ? child_rip+0x0/0x20 > Code: 78 4f 44 89 e1 48 d3 e0 44 89 f2 48 f7 e2 48 0f ac d0 20 4a 8d 0c 38 44 39 03 75 a4 48 8b 15 15 df 6b 00 48 39 ca 77 17 48 89 d0<f0> 48 0f b1 0d 04 df 6b 00 48 39 c1 48 89 c2 75 e7 48 89 ca 48 > RIP [<ffffffff81054f73>] pvclock_clocksource_read+0x83/0xc0 > RSP<ffff88007fb47880> > CR2: ffffffff81712e80 > ---[ end trace 38f25e02ae34d4c1 ]--- > BUG: unable to handle kernel paging request at ffffffff81712e80 > IP: [<ffffffff81054f73>] pvclock_clocksource_read+0x83/0xc0 > PGD 1003067 PUD 1007063 PMD 7e8b1063 PTE 8000000001712161 >
Read-only pte
> Oops: 0003 [#2] SMP >
Write fault.
> Code: 78 4f 44 89 e1 48 d3 e0 44 89 f2 48 f7 e2 48 0f ac d0 20 4a 8d 0c 38 44 39 03 75 a4 48 8b 15 15 df 6b 00 48 39 ca 77 17 48 89 d0<f0> 48 0f b1 0d 04 df 6b 00 48 39 c1 48 89 c2 75 e7 48 89 ca 48 > RIP [<ffffffff81054f73>] pvclock_clocksource_read+0x83/0xc0 >
--> lock cmpxchg %rcx,0x6bdf04(%rip)
> static atomic64_t last_value = ATOMIC64_INIT(0); > > cycle_t pvclock_clocksource_read(struct pvclock_vcpu_time_info *src) > { >
[...]
> last = atomic64_read(&last_value); > do { > if (ret < last) > return last; > last = atomic64_cmpxchg(&last_value, last, ret); > } while (unlikely(last != ret)); > > return ret; > }
So it looks like last_value was placed in a read only section. Please post your System.map somewhere.
-- error compiling committee.c: too many arguments to function
| |