On 21.02.2016 20:07, James Bottomley wrote: > On Sun, 2016-02-21 at 13:43 -0500, John David Anglin wrote: >> I verified that commit 54efd50bfd873e2dbf784e0b21a8027ba4299a3e in >> linux-block fails to >> boot and commit 41609892701e26724b8617201f43254cadf2e7ae (blk-cgroup: >> Drop unlikely >> before IS_ERR(_OR_NULL)) does boot successfully. Commit >> 41609892701e26724b8617201f43254cadf2e7ae >> is previous commit in tree. >> >> I don't believe that the change can be reverted from Linus' tree as >> this commit allowed other >> stuff to be removed (see second paragraph of commit description). > > OK, can you just verify you can boot 4.5-rc5 without the sata_sil24 > driver? I tried it on my c3000, debian kernel 4.4.2, in this case without the pata_ns87415. I used "modprobe.blacklist=libata,pata_ns87415,ata_generic" as additional kernel command line option. [ 45.980000] NEW SEGMENT sg = 00000000bbe991e8!!! [ 45.980000] __blk_segment_map_sg: length = 12288, nbytes = 4096, sum = 16384 > 65536 [ 45.980000] __blk_segment_map_sg: BIOVEC_PHYS_MERGEABLE = 0, BIOVEC_SEG_BOUNDARY = 1 [ 45.980000] NEW SEGMENT sg = 00000000bbe991e8!!! [ 45.980000] __blk_segment_map_sg: length = 65536, nbytes = 4096, sum = 69632 > 65536 ^^ here. [ 45.980000] __blk_segment_map_sg: BIOVEC_PHYS_MERGEABLE = 1, BIOVEC_SEG_BOUNDARY = 1 [ 45.980000] NEW SEGMENT sg = 00000000bbe991e8!!! [ 45.980000] __blk_segment_map_sg: length = 12288, nbytes = 4096, sum = 16384 > 65536 [ 45.980000] __blk_segment_map_sg: BIOVEC_PHYS_MERGEABLE = 0, BIOVEC_SEG_BOUNDARY = 1 [ 45.980000] NEW SEGMENT sg = 00000000bbe991e8!!! [ 45.980000] __blk_segment_map_sg: length = 4096, nbytes = 4096, sum = 8192 > 65536 [ 45.980000] __blk_segment_map_sg: BIOVEC_PHYS_MERGEABLE = 0, BIOVEC_SEG_BOUNDARY = 1 [ 45.980000] NEW SEGMENT sg = 00000000bbe991e8!!! [ 45.980000] __blk_segment_map_sg: length = 4096, nbytes = 4096, sum = 8192 > 65536 [ 45.980000] __blk_segment_map_sg: BIOVEC_PHYS_MERGEABLE = 0, BIOVEC_SEG_BOUNDARY = 1 [ 45.980000] NEW SEGMENT sg = 00000000bbe991e8!!! [ 45.980000] __blk_segment_map_sg: length = 4096, nbytes = 4096, sum = 8192 > 65536 [ 45.980000] __blk_segment_map_sg: BIOVEC_PHYS_MERGEABLE = 0, BIOVEC_SEG_BOUNDARY = 1 [ 45.980000] NEW SEGMENT sg = 00000000bbe991e8!!! [ 45.980000] __blk_segment_map_sg: length = 4096, nbytes = 4096, sum = 8192 > 65536 [ 45.980000] __blk_segment_map_sg: BIOVEC_PHYS_MERGEABLE = 0, BIOVEC_SEG_BOUNDARY = 1 [ 45.980000] NEW SEGMENT sg = 00000000bbe991e8!!! [ 45.980000] __blk_segment_map_sg: length = 4096, nbytes = 4096, sum = 8192 > 65536 [ 45.980000] __blk_segment_map_sg: BIOVEC_PHYS_MERGEABLE = 0, BIOVEC_SEG_BOUNDARY = 1 [ 45.980000] NEW SEGMENT sg = 00000000bbe991e8!!! [ 45.980000] __blk_segment_map_sg: length = 4096, nbytes = 4096, sum = 8192 > 65536 [ 45.980000] __blk_segment_map_sg: BIOVEC_PHYS_MERGEABLE = 0, BIOVEC_SEG_BOUNDARY = 1 [ 45.980000] NEW SEGMENT sg = 00000000bbe991e8!!! [ 45.980000] __blk_segment_map_sg: length = 4096, nbytes = 4096, sum = 8192 > 65536 [ 45.980000] __blk_segment_map_sg: BIOVEC_PHYS_MERGEABLE = 0, BIOVEC_SEG_BOUNDARY = 1 [ 45.980000] *** FIXIT *** HELGE: nsegs > rq->nr_phys_segments = 11 > 10 [ 45.980000] scsi_init_sgtable: count = 11, nents = 10 ^^ here [ 45.980000] timer_interrupt(CPU 0): delayed! cycles 73C0F821 rem 1E1DDF next/now 1D78B3071C/1D7894E93D [ 48.684000] ------------[ cut here ]------------ [ 48.740000] WARNING: at /build/linux-4.4/linux-4.4.2/drivers/scsi/scsi_lib.c:1104 [ 48.828000] Modules linked in: sd_mod ohci_pci ehci_pci ohci_hcd ehci_hcd sym53c8xx scsi_transport_spi usbcore scsi_mod usb_common tulip [ 48.976000] CPU: 0 PID: 66 Comm: systemd-udevd Not tainted 4.4.0-1-parisc64-smp #5 Debian 4.4.2-2 [ 49.084000] task: 00000000bbe97538 ti: 00000000bbe98000 task.ti: 00000000bbe98000 > My theory, based on what Helge produced is that this commit is building > a large transfer list > 65535 and then splitting it wrongly. Yes, this theory sounds right. > I think > the problem is that it's not respecting the DMA boundary, so Helge sees > a transfer size of 69632 which I think slops over on both sides, > requiring 3 segments to describe. However, the merge code thinks we > only need two (because the length is < 2*65536). The reason we only > see this with ATA drivers is because virtually no SCSI drivers set the > DMA boundary. Most ATA drivers require a dma boundary of 65535. In my test above there is no ATA driver included, only SCSI discs. Helge -- To unsubscribe from this list: send the line "unsubscribe linux-parisc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html