* mmap support for m25p80 device @ 2015-10-20 14:31 Simon Falsig 2015-11-18 2:15 ` Brian Norris 0 siblings, 1 reply; 6+ messages in thread From: Simon Falsig @ 2015-10-20 14:31 UTC (permalink / raw) To: linux-mtd Hi, I'm currently working on a new custom board (with a TI AM3356 ARM-Cortex A8 CPU), with a 32 kB Everspin MR25H256 MRAM chip, attached over SPI. It works fine using the m25p80 driver, but I was wondering how complex it would be to add the possibility of memory-mapping the device in userspace? - mainly to make the interface consistent with the board that it is replacing, which uses a different, mmap-able, RAM chip. I'm not very experienced in the deeper aspects of the kernel, but I've been poking around a bit in the mtd subsystem, and it seems as if the main thing that is missing, is a valid get_unmapped_area() function for the m25p80 driver, and then to change the mtdchar_mmap() function (in mtdchar.c) to actually allow mmap'ing on MMU systems. But - does it even make sense to create such a function for m25p80? - and how would I start? Any pointers and/or comments are appreciated! Thanks and best regards, Simon Falsig simon@newtec.dk ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: mmap support for m25p80 device 2015-10-20 14:31 mmap support for m25p80 device Simon Falsig @ 2015-11-18 2:15 ` Brian Norris 2015-11-19 21:31 ` Brian Norris 2015-11-20 4:08 ` Vignesh R 0 siblings, 2 replies; 6+ messages in thread From: Brian Norris @ 2015-11-18 2:15 UTC (permalink / raw) To: Simon Falsig; +Cc: linux-mtd, Vignesh R + Vignesh Vignesh is working on supporting mmap'd flash reads in the SPI core, particularly for the TI QSPI driver. I don't believe he's planning on exposing this to userspace, though, and I believe that might be pretty difficult to do now. Perhaps Vignesh can comment. On Tue, Oct 20, 2015 at 04:31:20PM +0200, Simon Falsig wrote: > Hi, > > I'm currently working on a new custom board (with a TI AM3356 ARM-Cortex > A8 > CPU), with a 32 kB Everspin MR25H256 MRAM chip, attached over SPI. It > works > fine using the m25p80 driver, but I was wondering how complex it would be > to > add the possibility of memory-mapping the device in userspace? - mainly to > make the interface consistent with the board that it is replacing, which > uses > a different, mmap-able, RAM chip. > > I'm not very experienced in the deeper aspects of the kernel, but I've > been > poking around a bit in the mtd subsystem, and it seems as if the main > thing > that is missing, is a valid get_unmapped_area() function for the m25p80 > driver, and then to change the mtdchar_mmap() function (in mtdchar.c) to > actually allow mmap'ing on MMU systems. It's not quite so simple. Read the comments in mtdchar, and you'll see that there's some layering bugs that caused us to disable MMU mmap entirely. Apparently no one cared so far. Read the comments here: commit f5cf8f07423b2677cebebcebc863af77223a4972 Author: David Woodhouse <David.Woodhouse@intel.com> Date: Tue Oct 9 15:08:10 2012 +0100 mtd: Disable mtdchar mmap on MMU systems But feel free to fix it. > But - does it even make sense to create such a function for m25p80? - and > how would I start? SPI drivers don't really expose a mmap-able interface, so this isn't possible at the moment. Even once it can be done, it would be restricted only to those controllers that can do memory map for you. AIUI, your SoC might (?). But even if it supports it, I expect you'll have difficulty coordinating this properly, since the SPI bus technically can be shared with multiple devices, whereas mmap would kind of assume that user-space can access the flash at any time. So I guess m25p80 would have to grab exclusive access of the entire SPI bus? If your system design can handle that, then I guess it CAN be done... ...but why do you want to do this, again? Brian > Any pointers and/or comments are appreciated! > Thanks and best regards, > Simon Falsig > simon@newtec.dk > > ______________________________________________________ > Linux MTD discussion mailing list > http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: mmap support for m25p80 device 2015-11-18 2:15 ` Brian Norris @ 2015-11-19 21:31 ` Brian Norris 2015-11-20 8:41 ` Philippe De Muyter 2015-11-20 4:08 ` Vignesh R 1 sibling, 1 reply; 6+ messages in thread From: Brian Norris @ 2015-11-19 21:31 UTC (permalink / raw) To: Simon Falsig; +Cc: linux-mtd, Vignesh R, Philippe De Muyter + Philippe On Tue, Nov 17, 2015 at 06:15:03PM -0800, Brian Norris wrote: > + Vignesh > > Vignesh is working on supporting mmap'd flash reads in the SPI core, > particularly for the TI QSPI driver. I don't believe he's planning on > exposing this to userspace, though, and I believe that might be pretty > difficult to do now. > > Perhaps Vignesh can comment. > > On Tue, Oct 20, 2015 at 04:31:20PM +0200, Simon Falsig wrote: > > Hi, > > > > I'm currently working on a new custom board (with a TI AM3356 ARM-Cortex > > A8 > > CPU), with a 32 kB Everspin MR25H256 MRAM chip, attached over SPI. It > > works > > fine using the m25p80 driver, but I was wondering how complex it would be > > to > > add the possibility of memory-mapping the device in userspace? - mainly to > > make the interface consistent with the board that it is replacing, which > > uses > > a different, mmap-able, RAM chip. > > > > I'm not very experienced in the deeper aspects of the kernel, but I've > > been > > poking around a bit in the mtd subsystem, and it seems as if the main > > thing > > that is missing, is a valid get_unmapped_area() function for the m25p80 > > driver, and then to change the mtdchar_mmap() function (in mtdchar.c) to > > actually allow mmap'ing on MMU systems. > > It's not quite so simple. Read the comments in mtdchar, and you'll see > that there's some layering bugs that caused us to disable MMU mmap > entirely. Apparently no one cared so far. Read the comments here: > > commit f5cf8f07423b2677cebebcebc863af77223a4972 > Author: David Woodhouse <David.Woodhouse@intel.com> > Date: Tue Oct 9 15:08:10 2012 +0100 > > mtd: Disable mtdchar mmap on MMU systems > > But feel free to fix it. I see there's an old patch that never got reviewed/tested, for doing this: http://patchwork.ozlabs.org/patch/327981/ You could check that out. Brian > > But - does it even make sense to create such a function for m25p80? - and > > how would I start? > > SPI drivers don't really expose a mmap-able interface, so this isn't > possible at the moment. Even once it can be done, it would be restricted > only to those controllers that can do memory map for you. AIUI, your SoC > might (?). > > But even if it supports it, I expect you'll have difficulty coordinating > this properly, since the SPI bus technically can be shared with multiple > devices, whereas mmap would kind of assume that user-space can access > the flash at any time. So I guess m25p80 would have to grab exclusive > access of the entire SPI bus? If your system design can handle that, > then I guess it CAN be done... > > ...but why do you want to do this, again? > > Brian > > > Any pointers and/or comments are appreciated! > > Thanks and best regards, > > Simon Falsig > > simon@newtec.dk > > > > ______________________________________________________ > > Linux MTD discussion mailing list > > http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: mmap support for m25p80 device 2015-11-19 21:31 ` Brian Norris @ 2015-11-20 8:41 ` Philippe De Muyter 2015-11-21 0:12 ` Brian Norris 0 siblings, 1 reply; 6+ messages in thread From: Philippe De Muyter @ 2015-11-20 8:41 UTC (permalink / raw) To: Brian Norris; +Cc: Simon Falsig, linux-mtd, Vignesh R On Thu, Nov 19, 2015 at 01:31:19PM -0800, Brian Norris wrote: > + Philippe > > On Tue, Nov 17, 2015 at 06:15:03PM -0800, Brian Norris wrote: > > + Vignesh > > > > Vignesh is working on supporting mmap'd flash reads in the SPI core, > > particularly for the TI QSPI driver. I don't believe he's planning on > > exposing this to userspace, though, and I believe that might be pretty > > difficult to do now. > > > > Perhaps Vignesh can comment. > > > > On Tue, Oct 20, 2015 at 04:31:20PM +0200, Simon Falsig wrote: > > > Hi, > > > > > > I'm currently working on a new custom board (with a TI AM3356 ARM-Cortex > > > A8 > > > CPU), with a 32 kB Everspin MR25H256 MRAM chip, attached over SPI. It > > > works > > > fine using the m25p80 driver, but I was wondering how complex it would be > > > to > > > add the possibility of memory-mapping the device in userspace? - mainly to > > > make the interface consistent with the board that it is replacing, which > > > uses > > > a different, mmap-able, RAM chip. > > > > > > I'm not very experienced in the deeper aspects of the kernel, but I've > > > been > > > poking around a bit in the mtd subsystem, and it seems as if the main > > > thing > > > that is missing, is a valid get_unmapped_area() function for the m25p80 > > > driver, and then to change the mtdchar_mmap() function (in mtdchar.c) to > > > actually allow mmap'ing on MMU systems. > > > > It's not quite so simple. Read the comments in mtdchar, and you'll see > > that there's some layering bugs that caused us to disable MMU mmap > > entirely. Apparently no one cared so far. Read the comments here: > > > > commit f5cf8f07423b2677cebebcebc863af77223a4972 > > Author: David Woodhouse <David.Woodhouse@intel.com> > > Date: Tue Oct 9 15:08:10 2012 +0100 > > > > mtd: Disable mtdchar mmap on MMU systems > > > > But feel free to fix it. > > I see there's an old patch that never got reviewed/tested, for doing > this: > > http://patchwork.ozlabs.org/patch/327981/ I use that patch to access a battery-back-up'ed SRAM connected to the WEIM bus of a Freescale i.MX6q ARM processor, and it works perfectly for that. On that processor, the WEIM bus maps the connected peripherals in the physical memory addresses range, so it is really easy to make that user-accessible through mmap. Only the above patch was needed. Philippe > > You could check that out. > > Brian > > > > But - does it even make sense to create such a function for m25p80? - and > > > how would I start? > > > > SPI drivers don't really expose a mmap-able interface, so this isn't > > possible at the moment. Even once it can be done, it would be restricted > > only to those controllers that can do memory map for you. AIUI, your SoC > > might (?). > > > > But even if it supports it, I expect you'll have difficulty coordinating > > this properly, since the SPI bus technically can be shared with multiple > > devices, whereas mmap would kind of assume that user-space can access > > the flash at any time. So I guess m25p80 would have to grab exclusive > > access of the entire SPI bus? If your system design can handle that, > > then I guess it CAN be done... > > > > ...but why do you want to do this, again? > > > > Brian > > > > > Any pointers and/or comments are appreciated! > > > Thanks and best regards, > > > Simon Falsig > > > simon@newtec.dk > > > > > > ______________________________________________________ > > > Linux MTD discussion mailing list > > > http://lists.infradead.org/mailman/listinfo/linux-mtd/ -- Philippe De Muyter +32 2 6101532 Macq SA rue de l'Aeronef 2 B-1140 Bruxelles ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: mmap support for m25p80 device 2015-11-20 8:41 ` Philippe De Muyter @ 2015-11-21 0:12 ` Brian Norris 0 siblings, 0 replies; 6+ messages in thread From: Brian Norris @ 2015-11-21 0:12 UTC (permalink / raw) To: Philippe De Muyter; +Cc: Simon Falsig, linux-mtd, Vignesh R On Fri, Nov 20, 2015 at 09:41:52AM +0100, Philippe De Muyter wrote: > On Thu, Nov 19, 2015 at 01:31:19PM -0800, Brian Norris wrote: > > On Tue, Nov 17, 2015 at 06:15:03PM -0800, Brian Norris wrote: > > > It's not quite so simple. Read the comments in mtdchar, and you'll see > > > that there's some layering bugs that caused us to disable MMU mmap > > > entirely. Apparently no one cared so far. Read the comments here: > > > > > > commit f5cf8f07423b2677cebebcebc863af77223a4972 > > > Author: David Woodhouse <David.Woodhouse@intel.com> > > > Date: Tue Oct 9 15:08:10 2012 +0100 > > > > > > mtd: Disable mtdchar mmap on MMU systems > > > > > > But feel free to fix it. > > > > I see there's an old patch that never got reviewed/tested, for doing > > this: > > > > http://patchwork.ozlabs.org/patch/327981/ > > I use that patch to access a battery-back-up'ed SRAM connected to the > WEIM bus of a Freescale i.MX6q ARM processor, and it works perfectly for > that. On that processor, the WEIM bus maps the connected peripherals in > the physical memory addresses range, so it is really easy to make that > user-accessible through mmap. Only the above patch was needed. OK, would you mind resending it, so it can get fresh eyes? Brian ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: mmap support for m25p80 device 2015-11-18 2:15 ` Brian Norris 2015-11-19 21:31 ` Brian Norris @ 2015-11-20 4:08 ` Vignesh R 1 sibling, 0 replies; 6+ messages in thread From: Vignesh R @ 2015-11-20 4:08 UTC (permalink / raw) To: Brian Norris, Simon Falsig; +Cc: linux-mtd On 11/18/2015 07:45 AM, Brian Norris wrote: > + Vignesh > > Vignesh is working on supporting mmap'd flash reads in the SPI core, > particularly for the TI QSPI driver. I don't believe he's planning on > exposing this to userspace, though, and I believe that might be pretty > difficult to do now. > > Perhaps Vignesh can comment. I have no plans of exposing this to userspace anytime sooner. Supporting DMA and all types of opcode/address/data combinations are the first steps. > > On Tue, Oct 20, 2015 at 04:31:20PM +0200, Simon Falsig wrote: >> Hi, >> >> I'm currently working on a new custom board (with a TI AM3356 ARM-Cortex >> A8 >> CPU), with a 32 kB Everspin MR25H256 MRAM chip, attached over SPI. It >> works >> fine using the m25p80 driver, but I was wondering how complex it would be >> to >> add the possibility of memory-mapping the device in userspace? - mainly to >> make the interface consistent with the board that it is replacing, which >> uses >> a different, mmap-able, RAM chip. >> >> I'm not very experienced in the deeper aspects of the kernel, but I've >> been >> poking around a bit in the mtd subsystem, and it seems as if the main >> thing >> that is missing, is a valid get_unmapped_area() function for the m25p80 >> driver, and then to change the mtdchar_mmap() function (in mtdchar.c) to >> actually allow mmap'ing on MMU systems. > > It's not quite so simple. Read the comments in mtdchar, and you'll see > that there's some layering bugs that caused us to disable MMU mmap > entirely. Apparently no one cared so far. Read the comments here: > > commit f5cf8f07423b2677cebebcebc863af77223a4972 > Author: David Woodhouse <David.Woodhouse@intel.com> > Date: Tue Oct 9 15:08:10 2012 +0100 > > mtd: Disable mtdchar mmap on MMU systems > > But feel free to fix it. > >> But - does it even make sense to create such a function for m25p80? - and >> how would I start? > > SPI drivers don't really expose a mmap-able interface, so this isn't > possible at the moment. Even once it can be done, it would be restricted > only to those controllers that can do memory map for you. AIUI, your SoC > might (?). > > But even if it supports it, I expect you'll have difficulty coordinating > this properly, since the SPI bus technically can be shared with multiple > devices, whereas mmap would kind of assume that user-space can access > the flash at any time. So I guess m25p80 would have to grab exclusive > access of the entire SPI bus? If your system design can handle that, > then I guess it CAN be done... > > ...but why do you want to do this, again? > > Brian > >> Any pointers and/or comments are appreciated! >> Thanks and best regards, >> Simon Falsig >> simon@newtec.dk >> >> ______________________________________________________ >> Linux MTD discussion mailing list >> http://lists.infradead.org/mailman/listinfo/linux-mtd/ -- Regards Vignesh ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-11-21 0:12 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-10-20 14:31 mmap support for m25p80 device Simon Falsig 2015-11-18 2:15 ` Brian Norris 2015-11-19 21:31 ` Brian Norris 2015-11-20 8:41 ` Philippe De Muyter 2015-11-21 0:12 ` Brian Norris 2015-11-20 4:08 ` Vignesh R
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).