Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'libata-5.14-2021-07-30' of git://git.kernel.dk/linux-block

Pull libata fixlets from Jens Axboe:

- A fix for PIO highmem (Christoph)

- Kill HAVE_IDE as it's now unused (Lukas)

* tag 'libata-5.14-2021-07-30' of git://git.kernel.dk/linux-block:
arch: Kconfig: clean up obsolete use of HAVE_IDE
libata: fix ata_pio_sector for CONFIG_HIGHMEM

+27 -26
-1
arch/alpha/Kconfig
··· 14 14 select PCI_SYSCALL if PCI 15 15 select HAVE_AOUT 16 16 select HAVE_ASM_MODVERSIONS 17 - select HAVE_IDE 18 17 select HAVE_PCSPKR_PLATFORM 19 18 select HAVE_PERF_EVENTS 20 19 select NEED_DMA_MAP_STATE
-6
arch/arm/Kconfig
··· 95 95 select HAVE_FUNCTION_TRACER if !XIP_KERNEL 96 96 select HAVE_GCC_PLUGINS 97 97 select HAVE_HW_BREAKPOINT if PERF_EVENTS && (CPU_V6 || CPU_V6K || CPU_V7) 98 - select HAVE_IDE if PCI || ISA || PCMCIA 99 98 select HAVE_IRQ_TIME_ACCOUNTING 100 99 select HAVE_KERNEL_GZIP 101 100 select HAVE_KERNEL_LZ4 ··· 360 361 bool "FootBridge" 361 362 select CPU_SA110 362 363 select FOOTBRIDGE 363 - select HAVE_IDE 364 364 select NEED_MACH_IO_H if !MMU 365 365 select NEED_MACH_MEMORY_H 366 366 help ··· 428 430 select GENERIC_IRQ_MULTI_HANDLER 429 431 select GPIO_PXA 430 432 select GPIOLIB 431 - select HAVE_IDE 432 433 select IRQ_DOMAIN 433 434 select PLAT_PXA 434 435 select SPARSE_IRQ ··· 443 446 select ARM_HAS_SG_CHAIN 444 447 select CPU_SA110 445 448 select FIQ 446 - select HAVE_IDE 447 449 select HAVE_PATA_PLATFORM 448 450 select ISA_DMA_API 449 451 select LEGACY_TIMER_TICK ··· 465 469 select CPU_SA1100 466 470 select GENERIC_IRQ_MULTI_HANDLER 467 471 select GPIOLIB 468 - select HAVE_IDE 469 472 select IRQ_DOMAIN 470 473 select ISA 471 474 select NEED_MACH_MEMORY_H ··· 500 505 select GENERIC_IRQ_CHIP 501 506 select GENERIC_IRQ_MULTI_HANDLER 502 507 select GPIOLIB 503 - select HAVE_IDE 504 508 select HAVE_LEGACY_CLK 505 509 select IRQ_DOMAIN 506 510 select NEED_MACH_IO_H if PCCARD
-1
arch/arm/mach-davinci/Kconfig
··· 9 9 select PM_GENERIC_DOMAINS_OF if PM && OF 10 10 select REGMAP_MMIO 11 11 select RESET_CONTROLLER 12 - select HAVE_IDE 13 12 select PINCTRL_SINGLE 14 13 15 14 if ARCH_DAVINCI
-1
arch/h8300/Kconfig.cpu
··· 44 44 bool "H8MAX" 45 45 select H83069 46 46 select RAMKERNEL 47 - select HAVE_IDE 48 47 help 49 48 H8MAX Evaluation Board Support 50 49 More Information. (Japanese Only)
-1
arch/ia64/Kconfig
··· 25 25 select HAVE_ASM_MODVERSIONS 26 26 select HAVE_UNSTABLE_SCHED_CLOCK 27 27 select HAVE_EXIT_THREAD 28 - select HAVE_IDE 29 28 select HAVE_KPROBES 30 29 select HAVE_KRETPROBES 31 30 select HAVE_FTRACE_MCOUNT_RECORD
-1
arch/m68k/Kconfig
··· 23 23 select HAVE_DEBUG_BUGVERBOSE 24 24 select HAVE_EFFICIENT_UNALIGNED_ACCESS if !CPU_HAS_NO_UNALIGNED 25 25 select HAVE_FUTEX_CMPXCHG if MMU && FUTEX 26 - select HAVE_IDE 27 26 select HAVE_MOD_ARCH_SPECIFIC 28 27 select HAVE_UID16 29 28 select MMU_GATHER_NO_RANGE if MMU
-1
arch/mips/Kconfig
··· 71 71 select HAVE_FUNCTION_TRACER 72 72 select HAVE_GCC_PLUGINS 73 73 select HAVE_GENERIC_VDSO 74 - select HAVE_IDE 75 74 select HAVE_IOREMAP_PROT 76 75 select HAVE_IRQ_EXIT_ON_IRQ_STACK 77 76 select HAVE_IRQ_TIME_ACCOUNTING
-1
arch/parisc/Kconfig
··· 3 3 def_bool y 4 4 select ARCH_32BIT_OFF_T if !64BIT 5 5 select ARCH_MIGHT_HAVE_PC_PARPORT 6 - select HAVE_IDE 7 6 select HAVE_FUNCTION_TRACER 8 7 select HAVE_FUNCTION_GRAPH_TRACER 9 8 select HAVE_SYSCALL_TRACEPOINTS
-1
arch/powerpc/Kconfig
··· 220 220 select HAVE_HARDLOCKUP_DETECTOR_ARCH if PPC_BOOK3S_64 && SMP 221 221 select HAVE_HARDLOCKUP_DETECTOR_PERF if PERF_EVENTS && HAVE_PERF_EVENTS_NMI && !HAVE_HARDLOCKUP_DETECTOR_ARCH 222 222 select HAVE_HW_BREAKPOINT if PERF_EVENTS && (PPC_BOOK3S || PPC_8xx) 223 - select HAVE_IDE 224 223 select HAVE_IOREMAP_PROT 225 224 select HAVE_IRQ_EXIT_ON_IRQ_STACK 226 225 select HAVE_IRQ_TIME_ACCOUNTING
-1
arch/sh/Kconfig
··· 39 39 select HAVE_FUTEX_CMPXCHG if FUTEX 40 40 select HAVE_FTRACE_MCOUNT_RECORD 41 41 select HAVE_HW_BREAKPOINT 42 - select HAVE_IDE if HAS_IOPORT_MAP 43 42 select HAVE_IOREMAP_PROT if MMU && !X2TLB 44 43 select HAVE_KERNEL_BZIP2 45 44 select HAVE_KERNEL_GZIP
-1
arch/sparc/Kconfig
··· 19 19 select OF 20 20 select OF_PROMTREE 21 21 select HAVE_ASM_MODVERSIONS 22 - select HAVE_IDE 23 22 select HAVE_ARCH_KGDB if !SMP || SPARC64 24 23 select HAVE_ARCH_TRACEHOOK 25 24 select HAVE_ARCH_SECCOMP if SPARC64
-1
arch/x86/Kconfig
··· 202 202 select HAVE_FUNCTION_TRACER 203 203 select HAVE_GCC_PLUGINS 204 204 select HAVE_HW_BREAKPOINT 205 - select HAVE_IDE 206 205 select HAVE_IOREMAP_PROT 207 206 select HAVE_IRQ_EXIT_ON_IRQ_STACK if X86_64 208 207 select HAVE_IRQ_TIME_ACCOUNTING
-1
arch/xtensa/Kconfig
··· 327 327 328 328 config XTENSA_PLATFORM_XT2000 329 329 bool "XT2000" 330 - select HAVE_IDE 331 330 help 332 331 XT2000 is the name of Tensilica's feature-rich emulation platform. 333 332 This hardware is capable of running a full Linux distribution.
+27 -8
drivers/ata/libata-sff.c
··· 637 637 } 638 638 EXPORT_SYMBOL_GPL(ata_sff_data_xfer32); 639 639 640 + static void ata_pio_xfer(struct ata_queued_cmd *qc, struct page *page, 641 + unsigned int offset, size_t xfer_size) 642 + { 643 + bool do_write = (qc->tf.flags & ATA_TFLAG_WRITE); 644 + unsigned char *buf; 645 + 646 + buf = kmap_atomic(page); 647 + qc->ap->ops->sff_data_xfer(qc, buf + offset, xfer_size, do_write); 648 + kunmap_atomic(buf); 649 + 650 + if (!do_write && !PageSlab(page)) 651 + flush_dcache_page(page); 652 + } 653 + 640 654 /** 641 655 * ata_pio_sector - Transfer a sector of data. 642 656 * @qc: Command on going ··· 662 648 */ 663 649 static void ata_pio_sector(struct ata_queued_cmd *qc) 664 650 { 665 - int do_write = (qc->tf.flags & ATA_TFLAG_WRITE); 666 651 struct ata_port *ap = qc->ap; 667 652 struct page *page; 668 653 unsigned int offset; 669 - unsigned char *buf; 670 654 671 655 if (!qc->cursg) { 672 656 qc->curbytes = qc->nbytes; ··· 682 670 683 671 DPRINTK("data %s\n", qc->tf.flags & ATA_TFLAG_WRITE ? "write" : "read"); 684 672 685 - /* do the actual data transfer */ 686 - buf = kmap_atomic(page); 687 - ap->ops->sff_data_xfer(qc, buf + offset, qc->sect_size, do_write); 688 - kunmap_atomic(buf); 673 + /* 674 + * Split the transfer when it splits a page boundary. Note that the 675 + * split still has to be dword aligned like all ATA data transfers. 676 + */ 677 + WARN_ON_ONCE(offset % 4); 678 + if (offset + qc->sect_size > PAGE_SIZE) { 679 + unsigned int split_len = PAGE_SIZE - offset; 689 680 690 - if (!do_write && !PageSlab(page)) 691 - flush_dcache_page(page); 681 + ata_pio_xfer(qc, page, offset, split_len); 682 + ata_pio_xfer(qc, nth_page(page, 1), 0, 683 + qc->sect_size - split_len); 684 + } else { 685 + ata_pio_xfer(qc, page, offset, qc->sect_size); 686 + } 692 687 693 688 qc->curbytes += qc->sect_size; 694 689 qc->cursg_ofs += qc->sect_size;