Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1558045
| From | Nikita Yushchenko <nikita.yoush@cogentembedded.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: blk_queue_bounce_limit() broken for mask=0xffffffff on 64bit archs |
| Date | 2017-01-13 07:20 +0100 |
| Message-ID | <sZ3nr-5Pk-1@gated-at.bofh.it> (permalink) |
| References | <sXP3b-qJ-27@gated-at.bofh.it> <sZ3dM-5M4-3@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
>> There is a use cases when architecture is 64-bit but hardware supports >> only DMA to lower 4G of address space. E.g. NVMe device on RCar PCIe host. >> >> For such cases, it looks proper to call blk_queue_bounce_limit() with >> mask set to 0xffffffff - thus making block layer to use bounce buffers >> for any addresses beyond 4G. To support that, architecture provides >> GFP_DMA zone that covers exactly low 4G on arm64. >> >> However setting this limit does not work: >> >> if (b_pfn < (min_t(u64, 0xffffffffUL, BLK_BOUNCE_HIGH) >> PAGE_SHIFT)) >> dma = 1; >> >> When mask is 0xffffffff that condition is false > > That should have been true in your case, since the b_pfn is smaller than > 0xffffffff. b_pfn is exactly 0xffffffffUL >> SHIFT, thus contition is false >> q->limits.bounce_pfn = max(max_low_pfn, b_pfn); >> >> this line is executed and replaces any limit with end of memory (on >> 64bit arch all memory is low). > > I don't understand why max() is used? And why not min()? > > Looks the above line just disables bounce for 64bit arch, doesn't it? Effectively yes. And I don't understand logic behind this code. Nikita
Back to linux.kernel | Previous | Next — Previous in thread | Find similar | Unroll thread
blk_queue_bounce_limit() broken for mask=0xffffffff on 64bit archs Nikita Yushchenko <nikita.yoush@cogentembedded.com> - 2017-01-09 21:50 +0100
Re: blk_queue_bounce_limit() broken for mask=0xffffffff on 64bit archs Christoph Hellwig <hch@infradead.org> - 2017-01-09 22:10 +0100
Re: blk_queue_bounce_limit() broken for mask=0xffffffff on 64bit archs Ming Lei <tom.leiming@gmail.com> - 2017-01-13 07:10 +0100
Re: blk_queue_bounce_limit() broken for mask=0xffffffff on 64bit archs Nikita Yushchenko <nikita.yoush@cogentembedded.com> - 2017-01-13 07:20 +0100
csiph-web