From: Joakim Tjernlund <Joakim.Tjernlund@infinera.com> To: "richard@nod.at" <richard@nod.at>, "computersforpeace@gmail.com" <computersforpeace@gmail.com>, "vigneshr@ti.com" <vigneshr@ti.com>, "Chris.Packham@alliedtelesis.co.nz" <Chris.Packham@alliedtelesis.co.nz>, "marek.vasut@gmail.com" <marek.vasut@gmail.com>, "dwmw2@infradead.org" <dwmw2@infradead.org>, "miquel.raynal@bootlin.com" <miquel.raynal@bootlin.com> Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, "sr@denx.de" <sr@denx.de>, "linux-mtd@lists.infradead.org" <linux-mtd@lists.infradead.org> Subject: Re: [PATCH] mtd: cfi_cmdset_0002: dynamically determine the max sectors Date: Fri, 14 Jun 2019 07:18:57 +0000 [thread overview] Message-ID: <4913398a9317f240235e45f5d1ad886dd8c7e259.camel@infinera.com> (raw) In-Reply-To: <8e80d911f0dd4759b3edc72fb76530d6@svr-chch-ex1.atlnz.lc> On Fri, 2019-06-14 at 03:23 +0000, Chris Packham wrote: > > > Hi All, > > I think this may have got lost in the change of maintainer for mtd. We need this too, ATM we have a local hack that just changes MAX_SECTORS to 1024 > > On 22/05/19 12:06 PM, Chris Packham wrote: > > Because PPB unlocking unlocks the whole chip cfi_ppb_unlock() needs to > > remember the locked status for each sector so it can re-lock the > > unaddressed sectors. Dynamically calculate the maximum number of sectors > > rather than using a hardcoded value that is too small for larger chips. > > > > Tested with Spansion S29GL01GS11TFI flash device. > > > > Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz> > > --- > > drivers/mtd/chips/cfi_cmdset_0002.c | 13 ++++++++----- > > 1 file changed, 8 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/mtd/chips/cfi_cmdset_0002.c b/drivers/mtd/chips/cfi_cmdset_0002.c > > index c8fa5906bdf9..a1a7d334aa82 100644 > > --- a/drivers/mtd/chips/cfi_cmdset_0002.c > > +++ b/drivers/mtd/chips/cfi_cmdset_0002.c > > @@ -2533,8 +2533,6 @@ struct ppb_lock { > > int locked; > > }; > > > > -#define MAX_SECTORS 512 > > - > > #define DO_XXLOCK_ONEBLOCK_LOCK ((void *)1) > > #define DO_XXLOCK_ONEBLOCK_UNLOCK ((void *)2) > > #define DO_XXLOCK_ONEBLOCK_GETLOCK ((void *)3) > > @@ -2633,6 +2631,7 @@ static int __maybe_unused cfi_ppb_unlock(struct mtd_info *mtd, loff_t ofs, > > int i; > > int sectors; > > int ret; > > + int max_sectors; > > > > /* > > * PPB unlocking always unlocks all sectors of the flash chip. > > @@ -2640,7 +2639,11 @@ static int __maybe_unused cfi_ppb_unlock(struct mtd_info *mtd, loff_t ofs, > > * first check the locking status of all sectors and save > > * it for future use. > > */ > > - sect = kcalloc(MAX_SECTORS, sizeof(struct ppb_lock), GFP_KERNEL); > > + max_sectors = 0; > > + for (i = 0; i < mtd->numeraseregions; i++) > > + max_sectors += regions[i].numblocks; > > + > > + sect = kcalloc(max_sectors, sizeof(struct ppb_lock), GFP_KERNEL); > > if (!sect) > > return -ENOMEM; > > > > @@ -2689,9 +2692,9 @@ static int __maybe_unused cfi_ppb_unlock(struct mtd_info *mtd, loff_t ofs, > > } > > > > sectors++; > > - if (sectors >= MAX_SECTORS) { > > + if (sectors >= max_sectors) { > > printk(KERN_ERR "Only %d sectors for PPB locking supported!\n", > > - MAX_SECTORS); > > + max_sectors); > > kfree(sect); > > return -EINVAL; > > } > > > > ______________________________________________________ > Linux MTD discussion mailing list > https://nam03.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists.infradead.org%2Fmailman%2Flistinfo%2Flinux-mtd%2F&data=02%7C01%7Cjoakim.tjernlund%40infinera.com%7C32742fa3a7134e77f21908d6f078e67b%7C285643de5f5b4b03a1530ae2dc8aaf77%7C1%7C0%7C636960799408384144&sdata=JidMNGuW7GdQO%2FA%2BBs8Q0mnqt%2BWlDUnjsbCRJIDkDvU%3D&reserved=0
WARNING: multiple messages have this Message-ID (diff)
From: Joakim Tjernlund <Joakim.Tjernlund@infinera.com> To: "richard@nod.at" <richard@nod.at>, "computersforpeace@gmail.com" <computersforpeace@gmail.com>, "vigneshr@ti.com" <vigneshr@ti.com>, "Chris.Packham@alliedtelesis.co.nz" <Chris.Packham@alliedtelesis.co.nz>, "marek.vasut@gmail.com" <marek.vasut@gmail.com>, "dwmw2@infradead.org" <dwmw2@infradead.org>, "miquel.raynal@bootlin.com" <miquel.raynal@bootlin.com> Cc: "sr@denx.de" <sr@denx.de>, "linux-mtd@lists.infradead.org" <linux-mtd@lists.infradead.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org> Subject: Re: [PATCH] mtd: cfi_cmdset_0002: dynamically determine the max sectors Date: Fri, 14 Jun 2019 07:18:57 +0000 [thread overview] Message-ID: <4913398a9317f240235e45f5d1ad886dd8c7e259.camel@infinera.com> (raw) In-Reply-To: <8e80d911f0dd4759b3edc72fb76530d6@svr-chch-ex1.atlnz.lc> On Fri, 2019-06-14 at 03:23 +0000, Chris Packham wrote: > > > Hi All, > > I think this may have got lost in the change of maintainer for mtd. We need this too, ATM we have a local hack that just changes MAX_SECTORS to 1024 > > On 22/05/19 12:06 PM, Chris Packham wrote: > > Because PPB unlocking unlocks the whole chip cfi_ppb_unlock() needs to > > remember the locked status for each sector so it can re-lock the > > unaddressed sectors. Dynamically calculate the maximum number of sectors > > rather than using a hardcoded value that is too small for larger chips. > > > > Tested with Spansion S29GL01GS11TFI flash device. > > > > Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz> > > --- > > drivers/mtd/chips/cfi_cmdset_0002.c | 13 ++++++++----- > > 1 file changed, 8 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/mtd/chips/cfi_cmdset_0002.c b/drivers/mtd/chips/cfi_cmdset_0002.c > > index c8fa5906bdf9..a1a7d334aa82 100644 > > --- a/drivers/mtd/chips/cfi_cmdset_0002.c > > +++ b/drivers/mtd/chips/cfi_cmdset_0002.c > > @@ -2533,8 +2533,6 @@ struct ppb_lock { > > int locked; > > }; > > > > -#define MAX_SECTORS 512 > > - > > #define DO_XXLOCK_ONEBLOCK_LOCK ((void *)1) > > #define DO_XXLOCK_ONEBLOCK_UNLOCK ((void *)2) > > #define DO_XXLOCK_ONEBLOCK_GETLOCK ((void *)3) > > @@ -2633,6 +2631,7 @@ static int __maybe_unused cfi_ppb_unlock(struct mtd_info *mtd, loff_t ofs, > > int i; > > int sectors; > > int ret; > > + int max_sectors; > > > > /* > > * PPB unlocking always unlocks all sectors of the flash chip. > > @@ -2640,7 +2639,11 @@ static int __maybe_unused cfi_ppb_unlock(struct mtd_info *mtd, loff_t ofs, > > * first check the locking status of all sectors and save > > * it for future use. > > */ > > - sect = kcalloc(MAX_SECTORS, sizeof(struct ppb_lock), GFP_KERNEL); > > + max_sectors = 0; > > + for (i = 0; i < mtd->numeraseregions; i++) > > + max_sectors += regions[i].numblocks; > > + > > + sect = kcalloc(max_sectors, sizeof(struct ppb_lock), GFP_KERNEL); > > if (!sect) > > return -ENOMEM; > > > > @@ -2689,9 +2692,9 @@ static int __maybe_unused cfi_ppb_unlock(struct mtd_info *mtd, loff_t ofs, > > } > > > > sectors++; > > - if (sectors >= MAX_SECTORS) { > > + if (sectors >= max_sectors) { > > printk(KERN_ERR "Only %d sectors for PPB locking supported!\n", > > - MAX_SECTORS); > > + max_sectors); > > kfree(sect); > > return -EINVAL; > > } > > > > ______________________________________________________ > Linux MTD discussion mailing list > https://nam03.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists.infradead.org%2Fmailman%2Flistinfo%2Flinux-mtd%2F&data=02%7C01%7Cjoakim.tjernlund%40infinera.com%7C32742fa3a7134e77f21908d6f078e67b%7C285643de5f5b4b03a1530ae2dc8aaf77%7C1%7C0%7C636960799408384144&sdata=JidMNGuW7GdQO%2FA%2BBs8Q0mnqt%2BWlDUnjsbCRJIDkDvU%3D&reserved=0 ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/
next prev parent reply other threads:[~2019-06-14 7:19 UTC|newest] Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-05-22 0:06 [PATCH] mtd: cfi_cmdset_0002: dynamically determine the max sectors Chris Packham 2019-05-22 0:06 ` Chris Packham 2019-05-22 6:01 ` Stefan Roese 2019-05-22 6:01 ` Stefan Roese 2019-06-14 3:23 ` Chris Packham 2019-06-14 3:23 ` Chris Packham 2019-06-14 7:18 ` Joakim Tjernlund [this message] 2019-06-14 7:18 ` Joakim Tjernlund 2019-06-14 7:39 ` Vignesh Raghavendra 2019-06-14 7:39 ` Vignesh Raghavendra 2019-06-28 14:32 ` Vignesh Raghavendra 2019-06-28 14:32 ` Vignesh Raghavendra
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=4913398a9317f240235e45f5d1ad886dd8c7e259.camel@infinera.com \ --to=joakim.tjernlund@infinera.com \ --cc=Chris.Packham@alliedtelesis.co.nz \ --cc=computersforpeace@gmail.com \ --cc=dwmw2@infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mtd@lists.infradead.org \ --cc=marek.vasut@gmail.com \ --cc=miquel.raynal@bootlin.com \ --cc=richard@nod.at \ --cc=sr@denx.de \ --cc=vigneshr@ti.com \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.