Re: [patch 134/149] x86, paravirt: Add a global synchronization pointfor pvclock

From: Avi Kivity
Date: Tue Jul 13 2010 - 09:23:51 EST


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

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/