From: Greg Kroah-Hartman Date: Tue, 27 Aug 2024 14:28:12 +0000 (+0200) Subject: drop queue-5.4/revert-s390-dasd-establish-dma-alignment.patch X-Git-Tag: v6.1.107~6 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c470f693395b7afcc6922583e3383b2964f346d5;p=thirdparty%2Fkernel%2Fstable-queue.git drop queue-5.4/revert-s390-dasd-establish-dma-alignment.patch My fault :( --- diff --git a/queue-5.4/revert-s390-dasd-establish-dma-alignment.patch b/queue-5.4/revert-s390-dasd-establish-dma-alignment.patch deleted file mode 100644 index 36f79cb59e5..00000000000 --- a/queue-5.4/revert-s390-dasd-establish-dma-alignment.patch +++ /dev/null @@ -1,103 +0,0 @@ -From hoeppner@linux.ibm.com Tue Aug 27 15:13:30 2024 -From: "Jan Höppner" -Date: Tue, 20 Aug 2024 16:13:07 +0200 -Subject: Revert "s390/dasd: Establish DMA alignment" -To: gregkh@linuxfoundation.org -Cc: stable@vger.kernel.org, sth@linux.ibm.com -Message-ID: <20240820141307.2869182-1-hoeppner@linux.ibm.com> - -From: "Jan Höppner" - -This reverts commit bc792884b76f ("s390/dasd: Establish DMA alignment"). - -Quoting the original commit: - linux-next commit bf8d08532bc1 ("iomap: add support for dma aligned - direct-io") changes the alignment requirement to come from the block - device rather than the block size, and the default alignment - requirement is 512-byte boundaries. Since DASD I/O has page - alignments for IDAW/TIDAW requests, let's override this value to - restore the expected behavior. - -I mentioned TIDAW, but that was wrong. TIDAWs have no distinct alignment -requirement (per p. 15-70 of POPS SA22-7832-13): - - Unless otherwise specified, TIDAWs may designate - a block of main storage on any boundary and length - up to 4K bytes, provided the specified block does not - cross a 4 K-byte boundary. - -IDAWs do, but the original commit neglected that while ECKD DASD are -typically formatted in 4096-byte blocks, they don't HAVE to be. Formatting -an ECKD volume with smaller blocks is permitted (dasdfmt -b xxx), and the -problematic commit enforces alignment properties to such a device that -will result in errors, such as: - - [test@host ~]# lsdasd -l a367 | grep blksz - blksz: 512 - [test@host ~]# mkfs.xfs -f /dev/disk/by-path/ccw-0.0.a367-part1 - meta-data=/dev/dasdc1 isize=512 agcount=4, agsize=230075 blks - = sectsz=512 attr=2, projid32bit=1 - = crc=1 finobt=1, sparse=1, rmapbt=1 - = reflink=1 bigtime=1 inobtcount=1 nrext64=1 - data = bsize=4096 blocks=920299, imaxpct=25 - = sunit=0 swidth=0 blks - naming =version 2 bsize=4096 ascii-ci=0, ftype=1 - log =internal log bsize=4096 blocks=16384, version=2 - = sectsz=512 sunit=0 blks, lazy-count=1 - realtime =none extsz=4096 blocks=0, rtextents=0 - error reading existing superblock: Invalid argument - mkfs.xfs: pwrite failed: Invalid argument - libxfs_bwrite: write failed on (unknown) bno 0x70565c/0x100, err=22 - mkfs.xfs: Releasing dirty buffer to free list! - found dirty buffer (bulk) on free list! - mkfs.xfs: pwrite failed: Invalid argument - ...snipped... - -The original commit omitted the FBA discipline for just this reason, -but the formatted block size of the other disciplines was overlooked. -The solution to all of this is to revert to the original behavior, -such that the block size can be respected. - -But what of the original problem? That was manifested with a direct-io -QEMU guest, where QEMU itself was changed a month or two later with -commit 25474d90aa ("block: use the request length for iov alignment") -such that the blamed kernel commit is unnecessary. - -Note: This is an adapted version of the original upstream commit -2a07bb64d801 ("s390/dasd: Remove DMA alignment"). - -Cc: stable@vger.kernel.org # 6.0+ -Signed-off-by: Jan Höppner -Signed-off-by: Greg Kroah-Hartman ---- - drivers/s390/block/dasd_diag.c | 1 - - drivers/s390/block/dasd_eckd.c | 1 - - 2 files changed, 2 deletions(-) - -diff --git a/drivers/s390/block/dasd_diag.c b/drivers/s390/block/dasd_diag.c -index 2e4e555b37c3..12db1046aad0 100644 ---- a/drivers/s390/block/dasd_diag.c -+++ b/drivers/s390/block/dasd_diag.c -@@ -639,7 +639,6 @@ static void dasd_diag_setup_blk_queue(struct dasd_block *block) - /* With page sized segments each segment can be translated into one idaw/tidaw */ - blk_queue_max_segment_size(q, PAGE_SIZE); - blk_queue_segment_boundary(q, PAGE_SIZE - 1); -- blk_queue_dma_alignment(q, PAGE_SIZE - 1); - } - - static int dasd_diag_pe_handler(struct dasd_device *device, -diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c -index bd89b032968a..18b63210ac5d 100644 ---- a/drivers/s390/block/dasd_eckd.c -+++ b/drivers/s390/block/dasd_eckd.c -@@ -6895,7 +6895,6 @@ static void dasd_eckd_setup_blk_queue(struct dasd_block *block) - /* With page sized segments each segment can be translated into one idaw/tidaw */ - blk_queue_max_segment_size(q, PAGE_SIZE); - blk_queue_segment_boundary(q, PAGE_SIZE - 1); -- blk_queue_dma_alignment(q, PAGE_SIZE - 1); - } - - static struct ccw_driver dasd_eckd_driver = { --- -2.43.0 - diff --git a/queue-5.4/series b/queue-5.4/series index 8049a7469a1..a5e604117f6 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -105,4 +105,3 @@ mmc-dw_mmc-allow-biu-and-ciu-clocks-to-defer.patch alsa-timer-relax-start-tick-time-check-for-slave-timer-elements.patch bluetooth-hci_ldisc-check-hci_uart_proto_ready-flag-in-hciuartgetproto.patch input-mt-limit-max-slots.patch -revert-s390-dasd-establish-dma-alignment.patch