On 1/7/20 6:59 PM, Ming Lei wrote: > On Tue, Jan 07, 2020 at 03:32:58PM -0700, Jens Axboe wrote: >> On 1/7/20 3:30 PM, Ming Lei wrote: >>> On Tue, Jan 07, 2020 at 10:11:45AM -0800, Guenter Roeck wrote: >>>> On Tue, Jan 07, 2020 at 11:23:39PM +0800, Ming Lei wrote: >>>>> On Tue, Jan 07, 2020 at 04:47:08AM -0800, Guenter Roeck wrote: >>>>>> Hi, >>>>>> >>>>>> On Sun, Dec 29, 2019 at 10:32:30AM +0800, Ming Lei wrote: >>>>>>> There are two issues in get_max_segment_size(): >>>>>>> >>>>>>> 1) the default segment boudary mask is bypassed, and some devices still >>>>>>> require segment to not cross the default 4G boundary >>>>>>> >>>>>>> 2) the segment start address isn't taken into account when checking >>>>>>> segment boundary limit >>>>>>> >>>>>>> Fixes the two issues. >>>>>>> >>>>>>> Fixes: dcebd755926b ("block: use bio_for_each_bvec() to compute multi-page bvec count") >>>>>>> Signed-off-by: Ming Lei <ming.lei@xxxxxxxxxx> >>>>>> >>>>>> This patch, pushed into mainline as "block: fix splitting segments on >>>>>> boundary masks", results in the following crash when booting 'versatilepb' >>>>>> in qemu from disk. Bisect log is attached. Detailed log is at >>>>>> https://kerneltests.org/builders/qemu-arm-master/builds/1410/steps/qemubuildcommand/logs/stdio >>>>>> >>>>>> Guenter >>>>>> >>>>>> --- >>>>>> Crash: >>>>>> >>>>>> kernel BUG at block/bio.c:1885! >>>>>> Internal error: Oops - BUG: 0 [#1] ARM >>>>> >>>>> Please apply the following debug patch, and post the log. >>>>> >>>> >>>> Here you are: >>>> >>>> max_sectors 2560 max_segs 96 max_seg_size 65536 mask ffffffff >>>> c738da80: 8c80/0 2416 28672, 0 >>>> total sectors 56 >>>> >>>> (I replaced %p with %px). >>>> >>> >>> Please try the following patch and see if it makes a difference. >>> If not, replace trace_printk with printk in previous debug patch, >>> and apply the debug patch only & post the log. >> >> If it is a 32-bit issue, then we should use a 64-bit type to make >> this nicer than ULL. But it seems reasonable that it could be! > > oops, just saw this email after sending out the patch. > > Do you need V2 to change ULL to u64? Nah, I can just edit it, that's fine. -- Jens Axboe