mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 04:33:26 +02:00
Merge tag 'for-6.5/block-2023-06-23' of git://git.kernel.dk/linux
Pull block updates from Jens Axboe: - NVMe pull request via Keith: - Various cleanups all around (Irvin, Chaitanya, Christophe) - Better struct packing (Christophe JAILLET) - Reduce controller error logs for optional commands (Keith) - Support for >=64KiB block sizes (Daniel Gomez) - Fabrics fixes and code organization (Max, Chaitanya, Daniel Wagner) - bcache updates via Coly: - Fix a race at init time (Mingzhe Zou) - Misc fixes and cleanups (Andrea, Thomas, Zheng, Ye) - use page pinning in the block layer for dio (David) - convert old block dio code to page pinning (David, Christoph) - cleanups for pktcdvd (Andy) - cleanups for rnbd (Guoqing) - use the unchecked __bio_add_page() for the initial single page additions (Johannes) - fix overflows in the Amiga partition handling code (Michael) - improve mq-deadline zoned device support (Bart) - keep passthrough requests out of the IO schedulers (Christoph, Ming) - improve support for flush requests, making them less special to deal with (Christoph) - add bdev holder ops and shutdown methods (Christoph) - fix the name_to_dev_t() situation and use cases (Christoph) - decouple the block open flags from fmode_t (Christoph) - ublk updates and cleanups, including adding user copy support (Ming) - BFQ sanity checking (Bart) - convert brd from radix to xarray (Pankaj) - constify various structures (Thomas, Ivan) - more fine grained persistent reservation ioctl capability checks (Jingbo) - misc fixes and cleanups (Arnd, Azeem, Demi, Ed, Hengqi, Hou, Jan, Jordy, Li, Min, Yu, Zhong, Waiman) * tag 'for-6.5/block-2023-06-23' of git://git.kernel.dk/linux: (266 commits) scsi/sg: don't grab scsi host module reference ext4: Fix warning in blkdev_put() block: don't return -EINVAL for not found names in devt_from_devname cdrom: Fix spectre-v1 gadget block: Improve kernel-doc headers blk-mq: don't insert passthrough request into sw queue bsg: make bsg_class a static const structure ublk: make ublk_chr_class a static const structure aoe: make aoe_class a static const structure block/rnbd: make all 'class' structures const block: fix the exclusive open mask in disk_scan_partitions block: add overflow checks for Amiga partition support block: change all __u32 annotations to __be32 in affs_hardblocks.h block: fix signed int overflow in Amiga partition support block: add capacity validation in bdev_add_partition() block: fine-granular CAP_SYS_ADMIN for Persistent Reservation block: disallow Persistent Reservation on partitions reiserfs: fix blkdev_put() warning from release_journal_dev() block: fix wrong mode for blkdev_get_by_dev() from disk_scan_partitions() block: document the holder argument to blkdev_get_by_path ...
This commit is contained in:
@@ -1082,8 +1082,7 @@ static struct page *first_bvec_segment(const struct iov_iter *i,
|
||||
|
||||
static ssize_t __iov_iter_get_pages_alloc(struct iov_iter *i,
|
||||
struct page ***pages, size_t maxsize,
|
||||
unsigned int maxpages, size_t *start,
|
||||
iov_iter_extraction_t extraction_flags)
|
||||
unsigned int maxpages, size_t *start)
|
||||
{
|
||||
unsigned int n, gup_flags = 0;
|
||||
|
||||
@@ -1093,8 +1092,6 @@ static ssize_t __iov_iter_get_pages_alloc(struct iov_iter *i,
|
||||
return 0;
|
||||
if (maxsize > MAX_RW_COUNT)
|
||||
maxsize = MAX_RW_COUNT;
|
||||
if (extraction_flags & ITER_ALLOW_P2PDMA)
|
||||
gup_flags |= FOLL_PCI_P2PDMA;
|
||||
|
||||
if (likely(user_backed_iter(i))) {
|
||||
unsigned long addr;
|
||||
@@ -1144,49 +1141,31 @@ static ssize_t __iov_iter_get_pages_alloc(struct iov_iter *i,
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
ssize_t iov_iter_get_pages(struct iov_iter *i,
|
||||
struct page **pages, size_t maxsize, unsigned maxpages,
|
||||
size_t *start, iov_iter_extraction_t extraction_flags)
|
||||
ssize_t iov_iter_get_pages2(struct iov_iter *i, struct page **pages,
|
||||
size_t maxsize, unsigned maxpages, size_t *start)
|
||||
{
|
||||
if (!maxpages)
|
||||
return 0;
|
||||
BUG_ON(!pages);
|
||||
|
||||
return __iov_iter_get_pages_alloc(i, &pages, maxsize, maxpages,
|
||||
start, extraction_flags);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(iov_iter_get_pages);
|
||||
|
||||
ssize_t iov_iter_get_pages2(struct iov_iter *i, struct page **pages,
|
||||
size_t maxsize, unsigned maxpages, size_t *start)
|
||||
{
|
||||
return iov_iter_get_pages(i, pages, maxsize, maxpages, start, 0);
|
||||
return __iov_iter_get_pages_alloc(i, &pages, maxsize, maxpages, start);
|
||||
}
|
||||
EXPORT_SYMBOL(iov_iter_get_pages2);
|
||||
|
||||
ssize_t iov_iter_get_pages_alloc(struct iov_iter *i,
|
||||
struct page ***pages, size_t maxsize,
|
||||
size_t *start, iov_iter_extraction_t extraction_flags)
|
||||
ssize_t iov_iter_get_pages_alloc2(struct iov_iter *i,
|
||||
struct page ***pages, size_t maxsize, size_t *start)
|
||||
{
|
||||
ssize_t len;
|
||||
|
||||
*pages = NULL;
|
||||
|
||||
len = __iov_iter_get_pages_alloc(i, pages, maxsize, ~0U, start,
|
||||
extraction_flags);
|
||||
len = __iov_iter_get_pages_alloc(i, pages, maxsize, ~0U, start);
|
||||
if (len <= 0) {
|
||||
kvfree(*pages);
|
||||
*pages = NULL;
|
||||
}
|
||||
return len;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(iov_iter_get_pages_alloc);
|
||||
|
||||
ssize_t iov_iter_get_pages_alloc2(struct iov_iter *i,
|
||||
struct page ***pages, size_t maxsize, size_t *start)
|
||||
{
|
||||
return iov_iter_get_pages_alloc(i, pages, maxsize, start, 0);
|
||||
}
|
||||
EXPORT_SYMBOL(iov_iter_get_pages_alloc2);
|
||||
|
||||
size_t csum_and_copy_from_iter(void *addr, size_t bytes, __wsum *csum,
|
||||
|
22
lib/raid6/neon.h
Normal file
22
lib/raid6/neon.h
Normal file
@@ -0,0 +1,22 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
void raid6_neon1_gen_syndrome_real(int disks, unsigned long bytes, void **ptrs);
|
||||
void raid6_neon1_xor_syndrome_real(int disks, int start, int stop,
|
||||
unsigned long bytes, void **ptrs);
|
||||
void raid6_neon2_gen_syndrome_real(int disks, unsigned long bytes, void **ptrs);
|
||||
void raid6_neon2_xor_syndrome_real(int disks, int start, int stop,
|
||||
unsigned long bytes, void **ptrs);
|
||||
void raid6_neon4_gen_syndrome_real(int disks, unsigned long bytes, void **ptrs);
|
||||
void raid6_neon4_xor_syndrome_real(int disks, int start, int stop,
|
||||
unsigned long bytes, void **ptrs);
|
||||
void raid6_neon8_gen_syndrome_real(int disks, unsigned long bytes, void **ptrs);
|
||||
void raid6_neon8_xor_syndrome_real(int disks, int start, int stop,
|
||||
unsigned long bytes, void **ptrs);
|
||||
void __raid6_2data_recov_neon(int bytes, uint8_t *p, uint8_t *q, uint8_t *dp,
|
||||
uint8_t *dq, const uint8_t *pbmul,
|
||||
const uint8_t *qmul);
|
||||
|
||||
void __raid6_datap_recov_neon(int bytes, uint8_t *p, uint8_t *q, uint8_t *dq,
|
||||
const uint8_t *qmul);
|
||||
|
||||
|
@@ -25,6 +25,7 @@
|
||||
*/
|
||||
|
||||
#include <arm_neon.h>
|
||||
#include "neon.h"
|
||||
|
||||
typedef uint8x16_t unative_t;
|
||||
|
||||
|
@@ -8,6 +8,7 @@
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#include <asm/neon.h>
|
||||
#include "neon.h"
|
||||
#else
|
||||
#define kernel_neon_begin()
|
||||
#define kernel_neon_end()
|
||||
@@ -19,13 +20,6 @@ static int raid6_has_neon(void)
|
||||
return cpu_has_neon();
|
||||
}
|
||||
|
||||
void __raid6_2data_recov_neon(int bytes, uint8_t *p, uint8_t *q, uint8_t *dp,
|
||||
uint8_t *dq, const uint8_t *pbmul,
|
||||
const uint8_t *qmul);
|
||||
|
||||
void __raid6_datap_recov_neon(int bytes, uint8_t *p, uint8_t *q, uint8_t *dq,
|
||||
const uint8_t *qmul);
|
||||
|
||||
static void raid6_2data_recov_neon(int disks, size_t bytes, int faila,
|
||||
int failb, void **ptrs)
|
||||
{
|
||||
|
@@ -5,6 +5,7 @@
|
||||
*/
|
||||
|
||||
#include <arm_neon.h>
|
||||
#include "neon.h"
|
||||
|
||||
#ifdef CONFIG_ARM
|
||||
/*
|
||||
|
Reference in New Issue
Block a user