[PATCH] PPC64 iSeries: cleanup viopath

Hollis Blanchard hollis at penguinppc.org
Thu Mar 17 02:12:51 EST 2005


On Mar 15, 2005, at 9:53 AM, Stephen Rothwell wrote:

> On Tue, 15 Mar 2005 08:32:27 -0600 Hollis Blanchard 
> <hollis at penguinppc.org> wrote:
>>
>> On Mar 14, 2005, at 9:34 PM, Stephen Rothwell wrote:
>>>
>>> Since you brought this file to my attention, I figured I might as 
>>> well
>>> do
>>> some simple cleanups.  This patch does:
>>> 	- single bit int bitfields are a bit suspect and Anndrew pointed
>>> 	  out recently that they are probably slower to access than ints
>>
>>> --- linus/arch/ppc64/kernel/viopath.c	2005-03-13 04:07:42.000000000
>>> +1100
>>> +++ linus-cleanup.1/arch/ppc64/kernel/viopath.c	2005-03-15
>>> 14:02:48.000000000 +1100
>>> @@ -56,8 +57,8 @@
>>>   * But this allows for other support in the future.
>>>   */
>>>  static struct viopathStatus {
>>> -	int isOpen:1;		/* Did we open the path?            */
>>> -	int isActive:1;		/* Do we have a mon msg outstanding */
>>> +	int isOpen;		/* Did we open the path?            */
>>> +	int isActive;		/* Do we have a mon msg outstanding */
>>>  	int users[VIO_MAX_SUBTYPES];
>>>  	HvLpInstanceId mSourceInst;
>>>  	HvLpInstanceId mTargetInst;
>>
>> Why not use a byte instead of a full int (reordering the members for
>> alignment)?
>
> Because "classical" boleans are ints.
>
> Because I don't know the relative speed of accessing single byte 
> variables.

I didn't see the original observation that bitfields are slow. If the 
argument was that loading a bitfield requires a load then mask, then 
you'll be happy to find that PPC has word, halfword, and byte load 
instructions. So loading a byte (unsigned, as Brad pointed out) should 
be just as fast as loading a word.

> It really makes little difference, I was just trying to get rid of the
> silly signed single bit bitfields ...

I understand. I was half being nitpicky, and half wondering if there 
was an actual reason I was missing.

-Hollis




More information about the Linuxppc64-dev mailing list