Re: [patch 1/5] add cpuidle-haltpoll driver

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

 



On Thu, Jul 04, 2019 at 10:16:47AM +0100, Joao Martins wrote:
> On 7/4/19 12:51 AM, Marcelo Tosatti wrote:
> > +++ linux-2.6-newcpuidle.git/drivers/cpuidle/cpuidle-haltpoll.c
> > @@ -0,0 +1,69 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * cpuidle driver for haltpoll governor.
> > + *
> > + * Copyright 2019 Red Hat, Inc. and/or its affiliates.
> > + *
> > + * This work is licensed under the terms of the GNU GPL, version 2.  See
> > + * the COPYING file in the top-level directory.
> > + *
> > + * Authors: Marcelo Tosatti <mtosatti@xxxxxxxxxx>
> > + */
> > +
> > +#include <linux/init.h>
> > +#include <linux/cpuidle.h>
> > +#include <linux/module.h>
> > +#include <linux/sched/idle.h>
> > +#include <linux/kvm_para.h>
> > +
> > +static int default_enter_idle(struct cpuidle_device *dev,
> > +			      struct cpuidle_driver *drv, int index)
> > +{
> > +	if (current_clr_polling_and_test()) {
> > +		local_irq_enable();
> > +		return index;
> > +	}
> > +	default_idle();
> > +	return index;
> > +}
> > +
> > +static struct cpuidle_driver haltpoll_driver = {
> > +	.name = "haltpoll",
> > +	.owner = THIS_MODULE,
> > +	.states = {
> > +		{ /* entry 0 is for polling */ },
> > +		{
> > +			.enter			= default_enter_idle,
> > +			.exit_latency		= 1,
> > +			.target_residency	= 1,
> > +			.power_usage		= -1,
> > +			.name			= "haltpoll idle",
> > +			.desc			= "default architecture idle",
> > +		},
> > +	},
> > +	.safe_state_index = 0,
> > +	.state_count = 2,
> > +};
> > +
> > +static int __init haltpoll_init(void)
> > +{
> > +	struct cpuidle_driver *drv = &haltpoll_driver;
> > +
> > +	cpuidle_poll_state_init(drv);
> > +
> > +	if (!kvm_para_available())
> > +		return 0;
> > +
> 
> Isn't this meant to return -ENODEV value if the module is meant to not load?

Well, the cpuidle drivers return an error only if registration fails.

> Also this check should probably be placed before initializing the poll state,
> provided poll state isn't used anyways if you're not a kvm guest.

Poll state init is only local variable initialization, it does not
have any external effect.



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux