Re: remove block layer bounce buffering for MMC v2
On Fri, 8 Mar 2019 at 10:18, Christoph Hellwig wrote: > > On Mon, Feb 25, 2019 at 02:54:13PM +0100, Ulf Hansson wrote: > > This looks good to me, however the lack of feedback/tests worries me a > > bit. So, unless you think it's a bad idea, I intend to apply this when > > v5.1 rc1 is out, which allows a lengthy test period in linux-next. > > Please don't rush to merge this. Based on a talk to some folks I > have an idea for a sg iterator that can hide the kmapping from > the drivers, which should allow for some less scary driver code and > clean this up a bit further. Okay, I see. Thanks for letting me know! Kind regards Uffe ___ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu
Re: remove block layer bounce buffering for MMC v2
On Mon, Feb 25, 2019 at 02:54:13PM +0100, Ulf Hansson wrote: > This looks good to me, however the lack of feedback/tests worries me a > bit. So, unless you think it's a bad idea, I intend to apply this when > v5.1 rc1 is out, which allows a lengthy test period in linux-next. Please don't rush to merge this. Based on a talk to some folks I have an idea for a sg iterator that can hide the kmapping from the drivers, which should allow for some less scary driver code and clean this up a bit further. ___ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu
Re: remove block layer bounce buffering for MMC v2
On Tue, 12 Feb 2019 at 08:25, Christoph Hellwig wrote: > > Hi everyone, > > this series converts the remaining MMC host drivers to properly kmap the > scatterlist entries it does PIO operations on, and then goes on to > remove the usage of block layer bounce buffering (which I plan to remove > eventually) from the MMC layer. > > As a bonus I've converted various drivers to the proper scatterlist > helpers so that at least in theory they are ready for chained > scatterlists. > > All the changes are compile tested only as I don't have any of the > hardware, so a careful review would be appreciated. > > Changes since v1: > - fix a missing kunmap_atomic in mvsdio > - fix a stray whitespace in s3cmci > - add new sg_kmap_atomic and sg_kunmap_atomic helpers > - set the DMA and block layer dma boundary > - use pointer arithmetics to reduce the amount of changes in >various drivers > This looks good to me, however the lack of feedback/tests worries me a bit. So, unless you think it's a bad idea, I intend to apply this when v5.1 rc1 is out, which allows a lengthy test period in linux-next. Make sense? Kind regards Uffe ___ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu
remove block layer bounce buffering for MMC v2
Hi everyone, this series converts the remaining MMC host drivers to properly kmap the scatterlist entries it does PIO operations on, and then goes on to remove the usage of block layer bounce buffering (which I plan to remove eventually) from the MMC layer. As a bonus I've converted various drivers to the proper scatterlist helpers so that at least in theory they are ready for chained scatterlists. All the changes are compile tested only as I don't have any of the hardware, so a careful review would be appreciated. Changes since v1: - fix a missing kunmap_atomic in mvsdio - fix a stray whitespace in s3cmci - add new sg_kmap_atomic and sg_kunmap_atomic helpers - set the DMA and block layer dma boundary - use pointer arithmetics to reduce the amount of changes in various drivers ___ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu
Re: remove block layer bounce buffering for MMC
On Wed, Jan 16, 2019 at 2:51 PM Linus Walleij wrote: > > On Wed, Jan 16, 2019 at 11:25 AM Arnd Bergmann wrote: > > On Mon, Jan 14, 2019 at 11:27 AM Ulf Hansson wrote: > > > > > > +Linus Walleij (recently made a cleanup of the mmc bounce buffering code). > > Nah it's not THAT bounce buffer. > > > Linus probably knows more here, but I have a vague recollection of > > the MMC bounce buffer code being needed mostly for performance > > reasons: when the scatterlist is discontiguous, that can result in > > a request being split up into separate MMC commands, which due > > to the lack of queued commands combined with the need for > > garbage collection on sub-page writes results in a huge slowdown > > compared to having larger bounce buffers all the time. > > > > We had discussed finding a different way to do this (separate > > from the bounce buffering), but I don't know if that ever happened, > > or if this is even the code that you are changing here. > > Nope not the same code. > > The term "bounce buffer" is sadly used as ambigously as > __underscores in front of function names. > > That other "bounce buffer" was first deleted and then > reimplemented as a local hack in the SDHCI driver core > after it caused performance regressions on the i.MX and > some laptops, see commit: > > commit bd9b902798ab14d19ca116b10bde581ddff8f905 > mmc: sdhci: Implement an SDHCI-specific bounce buffer > > That should be orthogonal to Christoph's changes in this > patch series. Ok, thanks for the clarification. Please ignore my comments then. Arnd ___ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu
Re: remove block layer bounce buffering for MMC
On Wed, Jan 16, 2019 at 11:25 AM Arnd Bergmann wrote: > On Mon, Jan 14, 2019 at 11:27 AM Ulf Hansson wrote: > > > > +Linus Walleij (recently made a cleanup of the mmc bounce buffering code). Nah it's not THAT bounce buffer. > Linus probably knows more here, but I have a vague recollection of > the MMC bounce buffer code being needed mostly for performance > reasons: when the scatterlist is discontiguous, that can result in > a request being split up into separate MMC commands, which due > to the lack of queued commands combined with the need for > garbage collection on sub-page writes results in a huge slowdown > compared to having larger bounce buffers all the time. > > We had discussed finding a different way to do this (separate > from the bounce buffering), but I don't know if that ever happened, > or if this is even the code that you are changing here. Nope not the same code. The term "bounce buffer" is sadly used as ambigously as __underscores in front of function names. That other "bounce buffer" was first deleted and then reimplemented as a local hack in the SDHCI driver core after it caused performance regressions on the i.MX and some laptops, see commit: commit bd9b902798ab14d19ca116b10bde581ddff8f905 mmc: sdhci: Implement an SDHCI-specific bounce buffer That should be orthogonal to Christoph's changes in this patch series. Yours, Linus Walleij ___ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu
Re: remove block layer bounce buffering for MMC
On Mon, Jan 14, 2019 at 11:27 AM Ulf Hansson wrote: > > +Linus Walleij (recently made a cleanup of the mmc bounce buffering code). > > On Mon, 14 Jan 2019 at 10:58, Christoph Hellwig wrote: > > > > Hi everyone, > > > > this series converts the remaining MMC host drivers to properly kmap the > > scatterlist entries it does PIO operations on, and then goes on to > > remove the usage of block layer bounce buffering (which I plan to remove > > eventually) from the MMC layer. > > > > As a bonus I've converted various drivers to the proper scatterlist > > helpers so that at least in theory they are ready for chained > > scatterlists. > > > > All the changes are compile tested only as I don't have any of the > > hardware, so a careful review would be appreciated. > > Thanks for posting this. I will have a look as soon as I can, but > first needs to catch up with things since the holidays. Linus probably knows more here, but I have a vague recollection of the MMC bounce buffer code being needed mostly for performance reasons: when the scatterlist is discontiguous, that can result in a request being split up into separate MMC commands, which due to the lack of queued commands combined with the need for garbage collection on sub-page writes results in a huge slowdown compared to having larger bounce buffers all the time. We had discussed finding a different way to do this (separate from the bounce buffering), but I don't know if that ever happened, or if this is even the code that you are changing here. Arnd ___ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu
Re: remove block layer bounce buffering for MMC
On Mon, Jan 14, 2019 at 04:52:40PM +, Robin Murphy wrote: > One general point for the kmap() conversions - it's not obvious (to me at > least) whether or how that would work for a segment where sg->length > > PAGE_SIZE. Or is there some cast-iron guarantee from the MMC mid-layer that > it will never let the block layer generate such things in the first place? None of this will with such segments. But yes, I guess the old case could have worked as long as any physical contigous ranges are also virtually contigous. So we might have to throw in a page size segment boundary here. ___ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu
Re: remove block layer bounce buffering for MMC
On 14/01/2019 09:57, Christoph Hellwig wrote: Hi everyone, this series converts the remaining MMC host drivers to properly kmap the scatterlist entries it does PIO operations on, and then goes on to remove the usage of block layer bounce buffering (which I plan to remove eventually) from the MMC layer. As a bonus I've converted various drivers to the proper scatterlist helpers so that at least in theory they are ready for chained scatterlists. All the changes are compile tested only as I don't have any of the hardware, so a careful review would be appreciated. One general point for the kmap() conversions - it's not obvious (to me at least) whether or how that would work for a segment where sg->length > PAGE_SIZE. Or is there some cast-iron guarantee from the MMC mid-layer that it will never let the block layer generate such things in the first place? Robin. ___ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu
Re: remove block layer bounce buffering for MMC
+Linus Walleij (recently made a cleanup of the mmc bounce buffering code). On Mon, 14 Jan 2019 at 10:58, Christoph Hellwig wrote: > > Hi everyone, > > this series converts the remaining MMC host drivers to properly kmap the > scatterlist entries it does PIO operations on, and then goes on to > remove the usage of block layer bounce buffering (which I plan to remove > eventually) from the MMC layer. > > As a bonus I've converted various drivers to the proper scatterlist > helpers so that at least in theory they are ready for chained > scatterlists. > > All the changes are compile tested only as I don't have any of the > hardware, so a careful review would be appreciated. Thanks for posting this. I will have a look as soon as I can, but first needs to catch up with things since the holidays. Kind regards Uffe ___ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu
remove block layer bounce buffering for MMC
Hi everyone, this series converts the remaining MMC host drivers to properly kmap the scatterlist entries it does PIO operations on, and then goes on to remove the usage of block layer bounce buffering (which I plan to remove eventually) from the MMC layer. As a bonus I've converted various drivers to the proper scatterlist helpers so that at least in theory they are ready for chained scatterlists. All the changes are compile tested only as I don't have any of the hardware, so a careful review would be appreciated. ___ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu