From: Jack Steiner <steiner@sgi.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [Patch 1/2] GRU - function to generate chipset IPI values
Date: Thu, 3 Dec 2009 17:31:17 -0600 [thread overview]
Message-ID: <20091203233117.GA13926@sgi.com> (raw)
In-Reply-To: <20091203151912.c99c4173.akpm@linux-foundation.org>
On Thu, Dec 03, 2009 at 03:19:12PM -0800, Andrew Morton wrote:
> On Thu, 03 Dec 2009 16:34:15 -0600
> steiner@sgi.com wrote:
>
> > From: Jack Steiner <steiner@sgi.com>
> >
> > Create a function to generate the value that is written to the UV hub
> > MMR to cause an IPI interrupt to be sent. The function will be
> > used in the GRU message queue error recovery code that sends IPIs to
> > nodes in remote partitions.
> >
> > ...
> >
> > +static unsigned long uv_hub_ipi_value(int apicid, int vector, int mode)
> > +{
> > + return (1UL << UVH_IPI_INT_SEND_SHFT) |
> > + ((apicid) << UVH_IPI_INT_APIC_ID_SHFT) |
> > + (mode << UVH_IPI_INT_DELIVERY_MODE_SHFT) |
> > + (vector << UVH_IPI_INT_VECTOR_SHFT);
> > +}
>
> You've taken care to avoid a shift overflow of "1", but not of
> `apicid', `vector' and `mode'.
>
> Maybe the compiler does that, I forget.
I sure hate the 32/64 bit issues with shifts of ints. I am bitten by
that more than I'd like.
I think we are ok in this case. In the above code, all of the fields
of the result except bit 63 reside in the low 32 bits of the resulting
unsigned long. I think that makes it work.
--- jack
next prev parent reply other threads:[~2009-12-03 23:31 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-03 22:34 [Patch 0/2] GRU - GRU Updates - GRU Update for cross SSI interrupts steiner
2009-12-03 22:34 ` [Patch 1/2] GRU - function to generate chipset IPI values steiner
2009-12-03 23:19 ` Andrew Morton
2009-12-03 23:31 ` Jack Steiner [this message]
2009-12-03 22:34 ` [Patch 2/2] GRU - send cross partition interrupts using the gru steiner
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=20091203233117.GA13926@sgi.com \
--to=steiner@sgi.com \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox