Re: [PATCH 1/1] block: IBM RamSan 70/80 driver fixes.

From: Philip J. Kelleher
Date: Tue Feb 19 2013 - 10:41:12 EST


On Tue, Feb 19, 2013 at 08:18:51AM -0600, Brian King wrote:
> On 02/18/2013 02:00 PM, Philip J. Kelleher wrote:
> > diff -uprN -X linux-block-vanilla/Documentation/dontdiff linux-block-vanilla/drivers/block/rsxx/config.c linux-block/drivers/block/rsxx/config.c
> > --- linux-block-vanilla/drivers/block/rsxx/config.c 2013-02-12 11:25:37.756352070 -0600
> > +++ linux-block/drivers/block/rsxx/config.c 2013-02-15 09:01:43.221166194 -0600
> > @@ -31,7 +31,7 @@
> >
> > static void initialize_config(void *config)
> > {
> > - struct rsxx_card_cfg *cfg = (struct rsxx_card_cfg *) config;
> > + struct rsxx_card_cfg *cfg = config;
>
> Why not pass a struct rsxx_card_cfg * here instead of a void*?
>
>
>

Alright, I guess that makes it more readable.

> > @@ -126,7 +126,11 @@ static void creg_issue_cmd(struct rsxx_c
> > cmd->buf, cmd->stream);
> > }
> >
> > - /* Data copy must complete before initiating the command. */
> > + /*
> > + * Data copy must complete before initiating the command. This is
> > + * needed for weakly ordered processors (i.e. PowerPC), so that all
> > + * neccessary registers are written before we kick the hardware.
> > + */
> > wmb();
>
> When you say data copy are you referring to the writes to the host DMA
> buffer that occurred previously? If so, the iowrite / writel macros
> already ensure this, as they have a sync instruction built in to them
> to cover this case, so a wmb would be redundant.
>
> If its to ensure that all the iowrite's make it to the device as one
> transaction and don't get interleaved with some other iowrite's, as
> long as you have a spinlock protecting these writes, the PowerPC
> spin_unlock will guarantee an mmiowb, so this shouldn't be an issue
> either.
>
>

Alright, I'll look into it. Again, I just needed to make sure that the
proper register were written before I kick off the HW.

> > diff -uprN -X linux-block-vanilla/Documentation/dontdiff linux-block-vanilla/drivers/block/rsxx/rsxx.h linux-block/drivers/block/rsxx/rsxx.h
> > --- linux-block-vanilla/drivers/block/rsxx/rsxx.h 2013-02-12 11:25:37.780170779 -0600
> > +++ linux-block/drivers/block/rsxx/rsxx.h 2013-02-18 08:54:59.692973434 -0600
> > @@ -35,6 +35,8 @@ struct rsxx_reg_access {
> > __u32 data[8];
> > };
> >
> > +#define RSXX_MAX_REG_CNT (8 * (sizeof(__u32)))
>
> Is this 8 related to the 8 in the array above? If so, why not have a literal
> to define the 8 and use it in both places to make this clear?
>

Alright.

> -Brian
>
> --
> Brian King
> Power Linux I/O
> IBM Linux Technology Center
>
>

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