Re: [LGUEST] updated nohz/hrtimer WIP patches (v04)

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

 



James Morris wrote:
> At http://namei.org/misc/lguest/patches/time/v04/
>
> Just a resync to the latest upstream lguest patch queue, after some fun 
> with bare metal bugs and assorted churn.
>
>
>
> - James
>   

+void guest_clockevent(struct lguest *lg, const ktime_t __user *u)
+{
+	ktime_t kdelta;
+
+	lgread(lg, &kdelta, (u32)u, sizeof(kdelta));
+
+	if (ktime_to_ns(kdelta) < LG_CLOCK_MIN_DELTA) {
+		if (printk_ratelimit())
+			printk(KERN_DEBUG "%s: guest %u small delta %Ld ns\n",
+			       __FUNCTION__, lg->guestid, ktime_to_ns(kdelta));
+
+		/* kick guest timer immediately */
+		set_bit(0, lg->irqs_pending);
+	} else
+		hrtimer_start(&lg->hrt, kdelta, HRTIMER_MODE_REL);
+}


Two things:

   1. It's probably better to make this interface specified in absolute
      rather than relative time.  Asking for a timeout "X ns from _now_"
      is a bit vague if the guest can be preempted and _now_ can be
      arbitrarily deferred.  The tricky part about using an absolute
      time is that the guest needs to work out how to convert from a
      guest time into hypervisor time...
   2. Rather than kicking the timer immediately for too-short (or
      negative) timeouts, it should have the option to return -ETIME, to
      match the clockevents set_next_event API.


+static int lguest_clockevent_set_next_event(unsigned long delta,
+					    struct clock_event_device *evt)
+{
+	ktime_t kdelta = ktime_sub(evt->next_event, ktime_get());
+	hcall(LHCALL_CLOCKEVENT, __pa(&kdelta), 0, 0);
+	return 0;
+}


Why compute kdelta?  Why not just use "delta"?

    J
_______________________________________________
Virtualization mailing list
Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linux-foundation.org/mailman/listinfo/virtualization


[Index of Archives]     [KVM Development]     [Libvirt Development]     [Libvirt Users]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux