All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Måns Rullgård" <mans@mansr.com>
To: Doug Berger <opendmb@gmail.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
	Marc Zyngier <marc.zyngier@arm.com>,
	Bartosz Golaszewski <brgl@bgdev.pl>,
	Sebastian Frias <sf84@laposte.net>,
	Boris Brezillon <boris.brezillon@free-electrons.com>,
	open list <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 1/6] genirq: generic chip: add generic irq_mask_ack functions
Date: Wed, 12 Jul 2017 21:49:39 +0100	[thread overview]
Message-ID: <yw1xr2xltm70.fsf@mansr.com> (raw)
In-Reply-To: <4f4c2873-9b24-a544-fc76-b02d6e3f3be3@gmail.com> (Doug Berger's message of "Wed, 12 Jul 2017 12:24:30 -0700")

Doug Berger <opendmb@gmail.com> writes:

> Mans, as the author of the only existing upstream user of this code,
> should have received this as well.
>
> -Doug
>
> On 07/07/2017 12:20 PM, Doug Berger wrote:
>> The irq_gc_mask_disable_reg_and_ack() function name implies that it
>> provides the combined functions of irq_gc_mask_disable_reg() and
>> irq_gc_ack().  However, the implementation does not actually do
>> that since it writes the mask instead of the disable register. It
>> also does not maintain the mask cache which makes it inappropriate
>> to use with other masking functions.
>> 
>> In addition, commit 659fb32d1b67 ("genirq: replace irq_gc_ack() with
>> {set,clr}_bit variants (fwd)") effectively renamed irq_gc_ack() to
>> irq_gc_set_bit() so this function probably should have also been
>> renamed at that time.
>> 
>> Since this generic chip code provides three mask functions and two
>> ack functions, this commit provides generic implementations for all
>> six combinations of the mask and ack functions suitable for use
>> with the irq_mask_ack member of the struct irq_chip.
>> 
>> The '_reg' and '_bit' portions of the base function names were left
>> out of the new combined function names in an attempt to keep the
>> function name lengths manageable with the 80 character source code
>> line length while still capturing the distinct aspects of each
>> combination of functions.
>> 
>> Signed-off-by: Doug Berger <opendmb@gmail.com>

Hmm, something is wrong here.  The irq_gc_mask_disable_reg_and_ack()
function writes to regs.mask, but the irq-tango driver doesn't set this
field (there is no corresponding hardware register).  Either it is never
called, or the write ends up being harmless.  I don't remember why I set
irq_mask_ack that way.

>>  /**
>> + * irq_gc_mask_disable_and_ack_set - Mask and ack pending interrupt
>> + * @d: irq_data
>> + *
>> + * Chip has separate enable/disable registers instead of a single mask
>> + * register and pending interrupt is acknowledged by setting a bit.
>> + */
>> +void irq_gc_mask_disable_and_ack_set(struct irq_data *d)
>> +{
>> +	struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
>> +	struct irq_chip_type *ct = irq_data_get_chip_type(d);
>> +	u32 mask = d->mask;
>> +
>> +	irq_gc_lock(gc);
>> +	irq_reg_writel(gc, mask, ct->regs.disable);
>> +	*ct->mask_cache &= ~mask;
>> +	irq_reg_writel(gc, mask, ct->regs.ack);
>> +	irq_gc_unlock(gc);
>> +}

This function looks like it should probably be used instead.  I'll try
to remember to test it when I have time to fire up that hardware.

-- 
Måns Rullgård

  reply	other threads:[~2017-07-12 20:56 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20170707192016.13001-1-opendmb@gmail.com>
2017-07-07 19:20 ` [PATCH 1/6] genirq: generic chip: add generic irq_mask_ack functions Doug Berger
2017-07-08 12:08   ` Thomas Gleixner
2017-07-10 17:39     ` Doug Berger
2017-07-17 17:23       ` Doug Berger
2017-07-17 20:58         ` Thomas Gleixner
2017-07-12 19:24   ` Doug Berger
2017-07-12 20:49     ` Måns Rullgård [this message]
2017-07-07 19:20 ` [PATCH 2/6] irqchip/tango: Use irq_gc_mask_disable_and_ack_set Doug Berger
2017-07-07 19:20   ` Doug Berger
2017-07-12 12:34   ` Marc Gonzalez
2017-07-12 12:34     ` Marc Gonzalez
2017-07-13 10:16     ` Måns Rullgård
2017-07-13 10:16       ` Måns Rullgård
2017-07-07 19:20 ` [PATCH 3/6] genirq: generic chip: remove irq_gc_mask_disable_reg_and_ack() Doug Berger
2017-07-07 19:20 ` [PATCH 4/6] irqchip: brcmstb-l2: Remove some processing from the handler Doug Berger
2017-07-07 19:20   ` Doug Berger
2017-07-07 19:20   ` Doug Berger
2017-07-10 15:53   ` Florian Fainelli
2017-07-10 15:53     ` Florian Fainelli
2017-07-07 19:20 ` [PATCH 5/6] irqchip: brcmstb-l2: Abstract register accesses Doug Berger
2017-07-07 19:20   ` Doug Berger
2017-07-07 19:20   ` Doug Berger
2017-07-10 15:54   ` Florian Fainelli
2017-07-10 15:54     ` Florian Fainelli
2017-07-07 19:20 ` [PATCH 6/6] irqchip: brcmstb-l2: Add support for the BCM7271 L2 controller Doug Berger
2017-07-07 19:20   ` Doug Berger
2017-07-07 19:20   ` Doug Berger
2017-07-10 15:53   ` Rob Herring
2017-07-10 15:53     ` Rob Herring
2017-07-10 15:54   ` Florian Fainelli
2017-07-10 15:54     ` Florian Fainelli
2017-07-10 15:54     ` Florian Fainelli
2017-07-07 19:34 ` [PATCH 0/6] Add support for BCM7271 style interrupt controller Doug Berger
2017-07-07 19:34   ` Doug Berger
2017-07-07 19:34   ` Doug Berger
2017-07-07 19:39   ` Florian Fainelli
2017-07-07 19:39     ` Florian Fainelli
2017-07-07 19:39     ` Florian Fainelli

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=yw1xr2xltm70.fsf@mansr.com \
    --to=mans@mansr.com \
    --cc=boris.brezillon@free-electrons.com \
    --cc=brgl@bgdev.pl \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marc.zyngier@arm.com \
    --cc=opendmb@gmail.com \
    --cc=sf84@laposte.net \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.