lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.LFD.2.02.1205250135340.3231@ionos>
Date:	Fri, 25 May 2012 01:42:14 +0200 (CEST)
From:	Thomas Gleixner <tglx@...utronix.de>
To:	Magnus Damm <magnus.damm@...il.com>
cc:	linux-kernel@...r.kernel.org, arnd@...db.de, horms@...ge.net.au,
	linux-sh@...r.kernel.org, johnstul@...ibm.com, rjw@...k.pl,
	lethal@...ux-sh.org, gregkh@...uxfoundation.org, olof@...om.net
Subject: Re: [PATCH 02/03] clocksource: em_sti: Emma Mobile STI driver V2

On Wed, 9 May 2012, Magnus Damm wrote:
> +static irqreturn_t em_sti_interrupt(int irq, void *dev_id)
> +{
> +	struct em_sti_priv *p = dev_id;
> +
> +	/* Always regprogram timer compare A */
> +	if (p->ced.mode == CLOCK_EVT_MODE_PERIODIC)
> +		em_sti_update(p);

Why do you want to do that? The core code already handles timers which
only support oneshot mode.

> +	spin_lock_irqsave(&p->lock, flags);

Please make that a raw_spinlock.

> +static void em_sti_clock_event_mode(enum clock_event_mode mode,
> +				    struct clock_event_device *ced)
> +{
> +	struct em_sti_priv *p = ced_to_em_sti(ced);
> +
> +	/* deal with old setting first */
> +	switch (ced->mode) {
> +	case CLOCK_EVT_MODE_PERIODIC:
> +	case CLOCK_EVT_MODE_ONESHOT:
> +		em_sti_stop(p, USER_CLOCKEVENT);
> +		break;
> +	default:
> +		break;
> +	}
> +
> +	switch (mode) {
> +	case CLOCK_EVT_MODE_PERIODIC:
> +		dev_info(&p->pdev->dev, "used for periodic clock events\n");
> +		em_sti_start(p, USER_CLOCKEVENT);
> +		clockevents_config(&p->ced, p->rate);
> +		p->delta = (p->rate + HZ/2) / HZ;
> +		p->next = em_sti_count(p);
> +		em_sti_update(p);
> +		break;

All that code in this case can go away.

> +static void em_sti_register_clockevent(struct em_sti_priv *p)
> +{
> +	struct clock_event_device *ced = &p->ced;
> +
> +	memset(ced, 0, sizeof(*ced));
> +	ced->name = dev_name(&p->pdev->dev);
> +	ced->features = CLOCK_EVT_FEAT_PERIODIC;
> +	ced->features |= CLOCK_EVT_FEAT_ONESHOT;

If you make that:

	ced->features = CLOCK_EVT_FEAT_ONESHOT;

Thanks,

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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ