2007-09-18 04:30:12

by Borislav Petkov

[permalink] [raw]
Subject: [PATCH 0/2] unify DMA_..BIT_MASK definitions: v1

These patches remove redundant DMA_..BIT_MASK definitions across two drivers.
In this version of the patches, the computation of the bitmasks is done by
the compiler.

Signed-off-by: Borislav Petkov <[email protected]>
Cc: Jeremy Fitzhardinge <[email protected]>

--
Index: 23-rc6/include/linux/dma-mapping.h
===================================================================
--- 23-rc6/include/linux/dma-mapping.h.orig 2007-09-17 17:48:20.000000000 +0200
+++ 23-rc6/include/linux/dma-mapping.h 2007-09-18 06:12:33.000000000 +0200
@@ -13,16 +13,19 @@
DMA_NONE = 3,
};

-#define DMA_64BIT_MASK 0xffffffffffffffffULL
-#define DMA_48BIT_MASK 0x0000ffffffffffffULL
-#define DMA_40BIT_MASK 0x000000ffffffffffULL
-#define DMA_39BIT_MASK 0x0000007fffffffffULL
-#define DMA_32BIT_MASK 0x00000000ffffffffULL
-#define DMA_31BIT_MASK 0x000000007fffffffULL
-#define DMA_30BIT_MASK 0x000000003fffffffULL
-#define DMA_29BIT_MASK 0x000000001fffffffULL
-#define DMA_28BIT_MASK 0x000000000fffffffULL
-#define DMA_24BIT_MASK 0x0000000000ffffffULL
+#define DMA_BIT_MASK(n) ((1ULL<<(n))-1)
+
+#define DMA_64BIT_MASK DMA_BIT_MASK(64)
+#define DMA_48BIT_MASK DMA_BIT_MASK(48)
+#define DMA_40BIT_MASK DMA_BIT_MASK(40)
+#define DMA_39BIT_MASK DMA_BIT_MASK(39)
+#define DMA_35BIT_MASK DMA_BIT_MASK(35)
+#define DMA_32BIT_MASK DMA_BIT_MASK(32)
+#define DMA_31BIT_MASK DMA_BIT_MASK(31)
+#define DMA_30BIT_MASK DMA_BIT_MASK(30)
+#define DMA_29BIT_MASK DMA_BIT_MASK(29)
+#define DMA_28BIT_MASK DMA_BIT_MASK(28)
+#define DMA_24BIT_MASK DMA_BIT_MASK(24)

static inline int valid_dma_direction(int dma_direction)
{

--
Regards/Gru?,
Boris.


2007-09-18 05:58:18

by Muli Ben-Yehuda

[permalink] [raw]
Subject: Re: [PATCH 0/2] unify DMA_..BIT_MASK definitions: v1

On Tue, Sep 18, 2007 at 06:29:19AM +0200, Borislav Petkov wrote:
> These patches remove redundant DMA_..BIT_MASK definitions across two drivers.
> In this version of the patches, the computation of the bitmasks is done by
> the compiler.
>
> Signed-off-by: Borislav Petkov <[email protected]>
> Cc: Jeremy Fitzhardinge <[email protected]>
>
> --
> Index: 23-rc6/include/linux/dma-mapping.h
> ===================================================================
> --- 23-rc6/include/linux/dma-mapping.h.orig 2007-09-17 17:48:20.000000000 +0200
> +++ 23-rc6/include/linux/dma-mapping.h 2007-09-18 06:12:33.000000000 +0200
> @@ -13,16 +13,19 @@
> DMA_NONE = 3,
> };
>
> -#define DMA_64BIT_MASK 0xffffffffffffffffULL
> -#define DMA_48BIT_MASK 0x0000ffffffffffffULL
> -#define DMA_40BIT_MASK 0x000000ffffffffffULL
> -#define DMA_39BIT_MASK 0x0000007fffffffffULL
> -#define DMA_32BIT_MASK 0x00000000ffffffffULL
> -#define DMA_31BIT_MASK 0x000000007fffffffULL
> -#define DMA_30BIT_MASK 0x000000003fffffffULL
> -#define DMA_29BIT_MASK 0x000000001fffffffULL
> -#define DMA_28BIT_MASK 0x000000000fffffffULL
> -#define DMA_24BIT_MASK 0x0000000000ffffffULL
> +#define DMA_BIT_MASK(n) ((1ULL<<(n))-1)
> +
> +#define DMA_64BIT_MASK DMA_BIT_MASK(64)

This one does not do what you mean. You need an explicit mask or a
~0ULL here.

Cheers,
Muli

2007-09-18 06:01:28

by Jeremy Fitzhardinge

[permalink] [raw]
Subject: Re: [PATCH 0/2] unify DMA_..BIT_MASK definitions: v1

Muli Ben-Yehuda wrote:
>> +#define DMA_64BIT_MASK DMA_BIT_MASK(64)
>>
>
> This one does not do what you mean. You need an explicit mask or a
> ~0ULL here.

Yeah, I was just about to comment on it. Its possible the compiler
might decide to shift by x%64 = 0.

J

2007-09-18 06:09:42

by Borislav Petkov

[permalink] [raw]
Subject: Re: [PATCH 0/2] unify DMA_..BIT_MASK definitions: v1

On Mon, Sep 17, 2007 at 11:01:21PM -0700, Jeremy Fitzhardinge wrote:
> Muli Ben-Yehuda wrote:
> >> +#define DMA_64BIT_MASK DMA_BIT_MASK(64)
> >>
> >
> > This one does not do what you mean. You need an explicit mask or a
> > ~0ULL here.
>
> Yeah, I was just about to comment on it. Its possible the compiler
> might decide to shift by x%64 = 0.
>
> J
ups, i knew that this might be a corner/boundary case. Thanks, updated patches
follow...
--
Regards/Gru?,
Boris.

2007-09-18 06:14:09

by Satyam Sharma

[permalink] [raw]
Subject: Re: [PATCH 0/2] unify DMA_..BIT_MASK definitions: v1

Hi Borislav,


On Tue, 18 Sep 2007, Borislav Petkov wrote:

> On Mon, Sep 17, 2007 at 11:01:21PM -0700, Jeremy Fitzhardinge wrote:
> > Muli Ben-Yehuda wrote:
> > >> +#define DMA_64BIT_MASK DMA_BIT_MASK(64)
> > >>
> > >
> > > This one does not do what you mean. You need an explicit mask or a
> > > ~0ULL here.
> >
> > Yeah, I was just about to comment on it. Its possible the compiler
> > might decide to shift by x%64 = 0.
> >
> > J
> ups, i knew that this might be a corner/boundary case. Thanks, updated patches
> follow...

Please fold all three patches into a single patch in the updated series,
otherwise git bisecters falling in between these patches will see the
"redefinition ... previous definition was here" warnings of gcc ...


Satyam

2007-09-18 06:35:32

by Borislav Petkov

[permalink] [raw]
Subject: Re: [PATCH 0/2] unify DMA_..BIT_MASK definitions: v1

On Tue, Sep 18, 2007 at 11:46:40AM +0530, Satyam Sharma wrote:
> Hi Borislav,
>
>
> On Tue, 18 Sep 2007, Borislav Petkov wrote:
>
> > On Mon, Sep 17, 2007 at 11:01:21PM -0700, Jeremy Fitzhardinge wrote:
> > > Muli Ben-Yehuda wrote:
> > > >> +#define DMA_64BIT_MASK DMA_BIT_MASK(64)
> > > >>
> > > >
> > > > This one does not do what you mean. You need an explicit mask or a
> > > > ~0ULL here.
> > >
> > > Yeah, I was just about to comment on it. Its possible the compiler
> > > might decide to shift by x%64 = 0.
> > >
> > > J
> > ups, i knew that this might be a corner/boundary case. Thanks, updated patches
> > follow...
>
> Please fold all three patches into a single patch in the updated series,
> otherwise git bisecters falling in between these patches will see the
> "redefinition ... previous definition was here" warnings of gcc ...

Will do later today, thanks.
--
Regards/Gru?,
Boris.