Displaying 2 results from an estimated 2 matches for "critical_exit".
2011 Jun 02
0
Debian 6.0 + Xen4.0 + FreeBSD hvm amd64 -> fpudna: fpcurthread == curthread XXXX times
...pu.c
+++ b/sys/amd64/amd64/fpu.c
@@ -394,14 +394,8 @@ fpudna(void)
struct pcb *pcb;
critical_enter();
- if (PCPU_GET(fpcurthread) == curthread) {
- printf("fpudna: fpcurthread == curthread %d times\n",
- ++err_count);
- stop_emulating();
- critical_exit();
- return;
- }
- if (PCPU_GET(fpcurthread) != NULL) {
+ if (PCPU_GET(fpcurthread) != NULL&&
+ PCPU_GET(fpcurthread) != curthread) {
printf("fpudna: fpcurthread = %p (%d), curthread = %p (%d)\n",
PCPU_GET(fpcurthread),...
2013 Oct 28
5
FreeBSD PVH guest support
...struct vcpu_info *vcpu = DPCPU_GET(vcpu_info);
src = &vcpu->time;
- critical_enter();
do {
pre_version = xen_fetch_vcpu_tinfo(&dst, src);
barrier();
@@ -266,16 +267,19 @@ xen_fetch_vcpu_time(void)
}
} while (!atomic_cmpset_64(&xen_timer_last_time, last, now));
- critical_exit();
-
return (now);
}
static uint32_t
xentimer_get_timecount(struct timecounter *tc)
{
+ uint32_t xen_time;
+
+ critical_enter();
+ xen_time = (uint32_t)xen_fetch_vcpu_time(DPCPU_GET(vcpu_info)) & UINT_MAX;
+ critical_exit();
- return ((uint32_t)xen_fetch_vcpu_time() & UINT_MAX);
+...