From: Mark Knecht on
On Tue, Aug 3, 2010 at 11:41 AM, Randy Dunlap <randy.dunlap(a)oracle.com> wrote:
> On Mon, 2 Aug 2010 15:07:11 -0700 Mark Knecht wrote:
>
>> On Thu, Jul 22, 2010 at 5:39 AM, Tejun Heo <tj(a)kernel.org> wrote:
>>
>> Hi Tejun,
>>    I'm finally home and trying to get back to this. I'm really a bad
>> programmer so I don't know what I've done wrong but it seems patch
>> isn't happy with me.
>>
>> c2stable linux # patch --dry-run -p1 <../ata_piix-sidpr-lock.patch
>> patching file drivers/ata/ata_piix.c
>> patch: **** malformed patch at line 13:
>
> Whenever the patch file was saved on this system, line 13 of it was
> split (probably by an email client).  Whenever I see this, I just
> join (merge) that line and the next one and try again... sometimes
> several lines are malformed and have to be fixed like this.
>

Randy,
Could very well be what happened. I added line 13 (the printk) by hand

<SNIP - ORIGINAL PATCH FILE>
struct piix_host_priv {
      const int *map;
      u32 saved_iocfg;
+       spinlock_t sidpr_lock;  /* FIXME: remove once locking in EH is fixed */
        void __iomem *sidpr;
};

<SNIP - MY CHANGE BY HAND>
struct piix_host_priv {
const int *map;
u32 saved_iocfg;
+ spinlock_t sidpr_lock; /* FIXME: remove once locking in EH is fixed */
+ printk("MWK - ata_sidpr patch applied!\n");
void __iomem *sidpr;
};

Maybe I should have just put it on the same line as the previous
spinlock command?

I'll play with it and see if I can get it working.

Thanks,
Mark
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Randy Dunlap on
On Mon, 2 Aug 2010 15:07:11 -0700 Mark Knecht wrote:

> On Thu, Jul 22, 2010 at 5:39 AM, Tejun Heo <tj(a)kernel.org> wrote:
>
> Hi Tejun,
> I'm finally home and trying to get back to this. I'm really a bad
> programmer so I don't know what I've done wrong but it seems patch
> isn't happy with me.
>
> c2stable linux # patch --dry-run -p1 <../ata_piix-sidpr-lock.patch
> patching file drivers/ata/ata_piix.c
> patch: **** malformed patch at line 13:

Whenever the patch file was saved on this system, line 13 of it was
split (probably by an email client). Whenever I see this, I just
join (merge) that line and the next one and try again... sometimes
several lines are malformed and have to be fixed like this.

>
> c2stable linux #
>
> Here's the change I tried to make to a copy of the file:
>
> c2stable linux # cat ../ata_piix-sidpr-lock.patch
> diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
> index 7409f98..3971bc0 100644
> --- a/drivers/ata/ata_piix.c
> +++ b/drivers/ata/ata_piix.c
> @@ -158,6 +158,7 @@ struct piix_map_db {
> struct piix_host_priv {
> const int *map;
> u32 saved_iocfg;
> + spinlock_t sidpr_lock; /* FIXME: remove once locking in EH is fixed */
> + printk("MWK - ata_sidpr patch applied!\n");
> void __iomem *sidpr;
> };
>
> @@ -951,12 +952,15 @@ static int piix_sidpr_scr_read(struct ata_link *link,
> unsigned int reg, u32 *val)
> {
> struct piix_host_priv *hpriv = link->ap->host->private_data;
> + unsigned long flags;
>
> if (reg >= ARRAY_SIZE(piix_sidx_map))
> return -EINVAL;
>
> + spin_lock_irqsave(&hpriv->sidpr_lock, flags);
> piix_sidpr_sel(link, reg);
> *val = ioread32(hpriv->sidpr + PIIX_SIDPR_DATA);
> + spin_unlock_irqrestore(&hpriv->sidpr_lock, flags);
> return 0;
> }
>
> @@ -964,12 +968,15 @@ static int piix_sidpr_scr_write(struct ata_link *link,
> unsigned int reg, u32 val)
> {
> struct piix_host_priv *hpriv = link->ap->host->private_data;
> + unsigned long flags;
>
> if (reg >= ARRAY_SIZE(piix_sidx_map))
> return -EINVAL;
>
> + spin_lock_irqsave(&hpriv->sidpr_lock, flags);
> piix_sidpr_sel(link, reg);
> iowrite32(val, hpriv->sidpr + PIIX_SIDPR_DATA);
> + spin_unlock_irqrestore(&hpriv->sidpr_lock, flags);
> return 0;
> }
>
> @@ -1566,6 +1573,7 @@ static int __devinit piix_init_one(struct pci_dev *pdev,
> hpriv = devm_kzalloc(dev, sizeof(*hpriv), GFP_KERNEL);
> if (!hpriv)
> return -ENOMEM;
> + spin_lock_init(&hpriv->sidpr_lock);
>
> /* Save IOCFG, this will be used for cable detection, quirk
> * detection and restoration on detach. This is necessary
> c2stable linux #
>
> Maybe you can shoot back something that's done correctly and I'll
> start testing.
>
> I've tried booting a few times. I've had 3 cold boot failures so
> far. No warm boot failures. Each time it failed on cold boot a warm
> boot fixed it.


---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Mark Knecht on
On Tue, Aug 3, 2010 at 11:49 AM, Jim Paris <jim(a)jtan.com> wrote:
> Randy Dunlap wrote:
>> On Mon, 2 Aug 2010 15:07:11 -0700 Mark Knecht wrote:
>>
>> > On Thu, Jul 22, 2010 at 5:39 AM, Tejun Heo <tj(a)kernel.org> wrote:
>> >
>> > Hi Tejun,
>> >    I'm finally home and trying to get back to this. I'm really a bad
>> > programmer so I don't know what I've done wrong but it seems patch
>> > isn't happy with me.
>> >
>> > c2stable linux # patch --dry-run -p1 <../ata_piix-sidpr-lock.patch
>> > patching file drivers/ata/ata_piix.c
>> > patch: **** malformed patch at line 13:
>>
>> Whenever the patch file was saved on this system, line 13 of it was
>> split (probably by an email client).  Whenever I see this, I just
>> join (merge) that line and the next one and try again... sometimes
>> several lines are malformed and have to be fixed like this.
>
> Tejun asked Mark to add a printk, and Mark added it directly to the
> patch.  Mark, just apply the original patch as-is, and then add the
> printk to the source code in ata_piix.c.  You should add it somewhere
> like the piix_init_one function, e.g. right before the "Save IOCFG"
> comment around line 1575.
>
> -jim

Thanks Jim. I'll give it a shot.

Cheers,
Mark
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Randy Dunlap on
On Tue, 3 Aug 2010 11:47:25 -0700 Mark Knecht wrote:

> On Tue, Aug 3, 2010 at 11:41 AM, Randy Dunlap <randy.dunlap(a)oracle.com> wrote:
> > On Mon, 2 Aug 2010 15:07:11 -0700 Mark Knecht wrote:
> >
> >> On Thu, Jul 22, 2010 at 5:39 AM, Tejun Heo <tj(a)kernel.org> wrote:
> >>
> >> Hi Tejun,
> >> � �I'm finally home and trying to get back to this. I'm really a bad
> >> programmer so I don't know what I've done wrong but it seems patch
> >> isn't happy with me.
> >>
> >> c2stable linux # patch --dry-run -p1 <../ata_piix-sidpr-lock.patch
> >> patching file drivers/ata/ata_piix.c
> >> patch: **** malformed patch at line 13:
> >
> > Whenever the patch file was saved on this system, line 13 of it was
> > split (probably by an email client). �Whenever I see this, I just
> > join (merge) that line and the next one and try again... sometimes
> > several lines are malformed and have to be fixed like this.
> >
>
> Randy,
> Could very well be what happened. I added line 13 (the printk) by hand
>
> <SNIP - ORIGINAL PATCH FILE>
> struct piix_host_priv {
> � � � const int *map;
> � � � u32 saved_iocfg;
> + � � � spinlock_t sidpr_lock; �/* FIXME: remove once locking in EH is fixed */
> � � � � void __iomem *sidpr;
> };
>
> <SNIP - MY CHANGE BY HAND>
> struct piix_host_priv {
> const int *map;
> u32 saved_iocfg;
> + spinlock_t sidpr_lock; /* FIXME: remove once locking in EH is fixed */
> + printk("MWK - ata_sidpr patch applied!\n");
> void __iomem *sidpr;
> };
>
> Maybe I should have just put it on the same line as the previous
> spinlock command?
>
> I'll play with it and see if I can get it working.


Ah, so you added a line to a patch file. That means that the patch
block header must be changed from something like this:

@@ -964,12 +968,15 @@

to like this:

@@ -964,12 +968,16 @@

Any text following the second "@@" is just a comment so it does not matter.

The ,12 ,15 ,16 are all line counts. The ",12" is the number of lines
in the before version of the patch. The ",15" or ",16" is the number of lines
in the after version of the patch, so you would need to increase it by 1 if
you added one line. Or you can just put the printk on the same line as another
part of the patch and it won't matter. :)


---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Jim Paris on
Randy Dunlap wrote:
> On Mon, 2 Aug 2010 15:07:11 -0700 Mark Knecht wrote:
>
> > On Thu, Jul 22, 2010 at 5:39 AM, Tejun Heo <tj(a)kernel.org> wrote:
> >
> > Hi Tejun,
> > I'm finally home and trying to get back to this. I'm really a bad
> > programmer so I don't know what I've done wrong but it seems patch
> > isn't happy with me.
> >
> > c2stable linux # patch --dry-run -p1 <../ata_piix-sidpr-lock.patch
> > patching file drivers/ata/ata_piix.c
> > patch: **** malformed patch at line 13:
>
> Whenever the patch file was saved on this system, line 13 of it was
> split (probably by an email client). Whenever I see this, I just
> join (merge) that line and the next one and try again... sometimes
> several lines are malformed and have to be fixed like this.

Tejun asked Mark to add a printk, and Mark added it directly to the
patch. Mark, just apply the original patch as-is, and then add the
printk to the source code in ata_piix.c. You should add it somewhere
like the piix_init_one function, e.g. right before the "Save IOCFG"
comment around line 1575.

-jim

>
> >
> > c2stable linux #
> >
> > Here's the change I tried to make to a copy of the file:
> >
> > c2stable linux # cat ../ata_piix-sidpr-lock.patch
> > diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
> > index 7409f98..3971bc0 100644
> > --- a/drivers/ata/ata_piix.c
> > +++ b/drivers/ata/ata_piix.c
> > @@ -158,6 +158,7 @@ struct piix_map_db {
> > struct piix_host_priv {
> > const int *map;
> > u32 saved_iocfg;
> > + spinlock_t sidpr_lock; /* FIXME: remove once locking in EH is fixed */
> > + printk("MWK - ata_sidpr patch applied!\n");
> > void __iomem *sidpr;
> > };
> >
> > @@ -951,12 +952,15 @@ static int piix_sidpr_scr_read(struct ata_link *link,
> > unsigned int reg, u32 *val)
> > {
> > struct piix_host_priv *hpriv = link->ap->host->private_data;
> > + unsigned long flags;
> >
> > if (reg >= ARRAY_SIZE(piix_sidx_map))
> > return -EINVAL;
> >
> > + spin_lock_irqsave(&hpriv->sidpr_lock, flags);
> > piix_sidpr_sel(link, reg);
> > *val = ioread32(hpriv->sidpr + PIIX_SIDPR_DATA);
> > + spin_unlock_irqrestore(&hpriv->sidpr_lock, flags);
> > return 0;
> > }
> >
> > @@ -964,12 +968,15 @@ static int piix_sidpr_scr_write(struct ata_link *link,
> > unsigned int reg, u32 val)
> > {
> > struct piix_host_priv *hpriv = link->ap->host->private_data;
> > + unsigned long flags;
> >
> > if (reg >= ARRAY_SIZE(piix_sidx_map))
> > return -EINVAL;
> >
> > + spin_lock_irqsave(&hpriv->sidpr_lock, flags);
> > piix_sidpr_sel(link, reg);
> > iowrite32(val, hpriv->sidpr + PIIX_SIDPR_DATA);
> > + spin_unlock_irqrestore(&hpriv->sidpr_lock, flags);
> > return 0;
> > }
> >
> > @@ -1566,6 +1573,7 @@ static int __devinit piix_init_one(struct pci_dev *pdev,
> > hpriv = devm_kzalloc(dev, sizeof(*hpriv), GFP_KERNEL);
> > if (!hpriv)
> > return -ENOMEM;
> > + spin_lock_init(&hpriv->sidpr_lock);
> >
> > /* Save IOCFG, this will be used for cable detection, quirk
> > * detection and restoration on detach. This is necessary
> > c2stable linux #
> >
> > Maybe you can shoot back something that's done correctly and I'll
> > start testing.
> >
> > I've tried booting a few times. I've had 3 cold boot failures so
> > far. No warm boot failures. Each time it failed on cold boot a warm
> > boot fixed it.
>
>
> ---
> ~Randy
> *** Remember to use Documentation/SubmitChecklist when testing your code ***
> --
> To unsubscribe from this list: send the line "unsubscribe linux-ide" in
> the body of a message to majordomo(a)vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/