I will never forget you
I will never forget you Greetings I'm sorry your response is very slow and i contacted another person, for the project.. I am happy to inform you about my success in getting those fund transferred to another account with the help of a new partner who is an international businessman. I am currently in India for investment project with my own share of the total sum after the transfer of fund. Meanwhile, i did not forget that once I have contacted you in transferring that fund despite that it didn't work out for us somehow. But my greatest joy is that you kept it very secret until i successfully get the fund transferred. Now, to prove to you that I'm not the type of person you're implying to be. I want to inform you that I have deposited the sum of ($1.500.000.00 USD.). In your name, to the (Bank) They told me that they will be sending the fund to you via (ATM) card. Now you have to contact Mrs. Sarah Emily. Contact her, below as she is my secretary over there. Send an email to her and tell her that I'm the one who brings you in contact with her in relation to the fund.I will visit you in Country after my project in India. Her, contact are, as follow: Name: Mrs. Sarah Emily. Email: (sarahemily...@yahoo.com) Address: Burkina Faso. Thanks and remain blessed. Mr. John Mark,
[PATCH v16 2/7] parisc: iomap: introduce io{read|write}64
Add support for io{read|write}64() functions in parisc architecture. These are pretty straightforward copies of similar functions which make use of readq and writeq. Also, indicate that the lo_hi and hi_lo variants of these functions are not provided by this architecture. Signed-off-by: Logan GunthorpeReviewed-by: Andy Shevchenko Cc: "James E.J. Bottomley" Cc: Helge Deller Cc: Greg Kroah-Hartman Cc: Philippe Ombredanne Cc: Kate Stewart Cc: Thomas Gleixner --- arch/parisc/include/asm/io.h | 9 +++ arch/parisc/lib/iomap.c | 64 2 files changed, 73 insertions(+) diff --git a/arch/parisc/include/asm/io.h b/arch/parisc/include/asm/io.h index afe493b23d04..30a8315d5c07 100644 --- a/arch/parisc/include/asm/io.h +++ b/arch/parisc/include/asm/io.h @@ -311,6 +311,15 @@ extern void outsl (unsigned long port, const void *src, unsigned long count); * value for either 32 or 64 bit mode */ #define F_EXTEND(x) ((unsigned long)((x) | (0xULL))) +#define ioread64 ioread64 +#define ioread64be ioread64be +#define iowrite64 iowrite64 +#define iowrite64be iowrite64be +extern u64 ioread64(void __iomem *addr); +extern u64 ioread64be(void __iomem *addr); +extern void iowrite64(u64 val, void __iomem *addr); +extern void iowrite64be(u64 val, void __iomem *addr); + #include /* diff --git a/arch/parisc/lib/iomap.c b/arch/parisc/lib/iomap.c index 4b19e6e64fb7..0195aec657e2 100644 --- a/arch/parisc/lib/iomap.c +++ b/arch/parisc/lib/iomap.c @@ -48,11 +48,15 @@ struct iomap_ops { unsigned int (*read16be)(void __iomem *); unsigned int (*read32)(void __iomem *); unsigned int (*read32be)(void __iomem *); + u64 (*read64)(void __iomem *); + u64 (*read64be)(void __iomem *); void (*write8)(u8, void __iomem *); void (*write16)(u16, void __iomem *); void (*write16be)(u16, void __iomem *); void (*write32)(u32, void __iomem *); void (*write32be)(u32, void __iomem *); + void (*write64)(u64, void __iomem *); + void (*write64be)(u64, void __iomem *); void (*read8r)(void __iomem *, void *, unsigned long); void (*read16r)(void __iomem *, void *, unsigned long); void (*read32r)(void __iomem *, void *, unsigned long); @@ -171,6 +175,16 @@ static unsigned int iomem_read32be(void __iomem *addr) return __raw_readl(addr); } +static u64 iomem_read64(void __iomem *addr) +{ + return readq(addr); +} + +static u64 iomem_read64be(void __iomem *addr) +{ + return __raw_readq(addr); +} + static void iomem_write8(u8 datum, void __iomem *addr) { writeb(datum, addr); @@ -196,6 +210,16 @@ static void iomem_write32be(u32 datum, void __iomem *addr) __raw_writel(datum, addr); } +static void iomem_write64(u64 datum, void __iomem *addr) +{ + writel(datum, addr); +} + +static void iomem_write64be(u64 datum, void __iomem *addr) +{ + __raw_writel(datum, addr); +} + static void iomem_read8r(void __iomem *addr, void *dst, unsigned long count) { while (count--) { @@ -250,11 +274,15 @@ static const struct iomap_ops iomem_ops = { .read16be = iomem_read16be, .read32 = iomem_read32, .read32be = iomem_read32be, + .read64 = iomem_read64, + .read64be = iomem_read64be, .write8 = iomem_write8, .write16 = iomem_write16, .write16be = iomem_write16be, .write32 = iomem_write32, .write32be = iomem_write32be, + .write64 = iomem_write64, + .write64be = iomem_write64be, .read8r = iomem_read8r, .read16r = iomem_read16r, .read32r = iomem_read32r, @@ -304,6 +332,20 @@ unsigned int ioread32be(void __iomem *addr) return *((u32 *)addr); } +u64 ioread64(void __iomem *addr) +{ + if (unlikely(INDIRECT_ADDR(addr))) + return iomap_ops[ADDR_TO_REGION(addr)]->read64(addr); + return le64_to_cpup((u64 *)addr); +} + +u64 ioread64be(void __iomem *addr) +{ + if (unlikely(INDIRECT_ADDR(addr))) + return iomap_ops[ADDR_TO_REGION(addr)]->read64be(addr); + return *((u64 *)addr); +} + void iowrite8(u8 datum, void __iomem *addr) { if (unlikely(INDIRECT_ADDR(addr))) { @@ -349,6 +391,24 @@ void iowrite32be(u32 datum, void __iomem *addr) } } +void iowrite64(u64 datum, void __iomem *addr) +{ + if (unlikely(INDIRECT_ADDR(addr))) { + iomap_ops[ADDR_TO_REGION(addr)]->write64(datum, addr); + } else { + *((u64 *)addr) = cpu_to_le64(datum); + } +} + +void iowrite64be(u64 datum, void __iomem *addr) +{ + if (unlikely(INDIRECT_ADDR(addr))) { + iomap_ops[ADDR_TO_REGION(addr)]->write64be(datum, addr); + } else { +
[PATCH v16 0/7] Add io{read|write}64 to io-64-atomic headers
This is v14 of my cleanup series to push a number of instances of people defining their own io{read|write}64 functions into common headers seing they don't exist in non-64bit systems. This series adds inline functions to the io-64-nonatomic headers and then cleans up the drivers that defined their own copies. This cleanup was originally requested by Greg after he reviewed my Switchtec NTB code. @Andrew, can you please consider merging this series as it has a number of cross-tree pieces? It has been around for a number of cycles, has had some reviews, and a few small pieces of it have been accepted through various other trees. Thanks, Logan -- Changes since v15: - Rebased onto v4.17-rc1, dropping the powerpc patches which were picked up by Michael Changes since v14: - Rebased onto v4.16-rc7 - Replace the first two patches so that instead of correcting the endianness annotations we change to using writeX() and readX() with swabX() calls. This makes the big-endian functions more symmetric with the little-endian versions (with respect to barriers that are not included in the raw functions). As a side effect, it also fixes the kbuild warnings that the first two patches tried to address. Changes since v13: - Changed the subject of patch 0001 to correct a nit pointed out by Luc Changes since v12: - Rebased onto v4.16-rc6 - Split patch 0001 into two and reworked the commit log as requested by Luc Van Oostenryck Changes since v11: - Rebased onto v4.16-rc5 - Added a patch (0001) to fix some old and new sparse warnings that the kbuild robot warned about this cycle. The latest version of sparse was required to reproduce these. - Added a patch (0002) to add io{read|write}64 to parisc which the kbuild robot also found errors for this cycle Changes since v10: - Rebased onto v4.16-rc4, this droped the drm/tilcdc patch which was picked up by that tree and is already in 4.16. Changes since v9: - Rebased onto v4.15-rc6 - Fixed a couple of issues in the new version of the CAAM patch as pointed out by Horia Changes since v8: - Rebased onto v4.15-rc2, as a result rewrote patch 7 seeing someone did some similar cleanup in that area. - Added a patch to clean up the Switchtec NTB driver which landed in v4.15-rc1 Changes since v7: - Fix minor nits from Andy Shevchenko - Rebased onto v4.14-rc1 Changes since v6: ** none ** Changes since v5: - Added a fix to the tilcdc driver to ensure it doesn't use the non-atomic operation. (This includes adding io{read|write}64[be]_is_nonatomic defines). Changes since v4: - Add functions so the powerpc implementation of iomap.c compiles. (As noticed by Horia) Changes since v3: - I noticed powerpc didn't use the appropriate functions seeing readq/writeq were not defined when iomap.h was included. Thus I've included a patch to adjust this - Fixed some mistakes with a couple of the defines in io-64-nonatomic* headers - Fixed a typo noticed by Horia. (earlier versions were drastically different) -- Logan Gunthorpe (7): iomap: Use non-raw io functions for io{read|write}XXbe parisc: iomap: introduce io{read|write}64 iomap: introduce io{read|write}64_{lo_hi|hi_lo} io-64-nonatomic: add io{read|write}64[be]{_lo_hi|_hi_lo} macros ntb: ntb_hw_intel: use io-64-nonatomic instead of in-driver hacks crypto: caam: cleanup CONFIG_64BIT ifdefs when using io{read|write}64 ntb: ntb_hw_switchtec: Cleanup 64bit IO defines to use the common header arch/parisc/include/asm/io.h | 9 +++ arch/parisc/lib/iomap.c| 64 +++ arch/powerpc/include/asm/io.h | 2 + drivers/crypto/caam/regs.h | 30 +-- drivers/ntb/hw/intel/ntb_hw_intel.c| 30 +-- drivers/ntb/hw/mscc/ntb_hw_switchtec.c | 36 + include/asm-generic/iomap.h| 26 -- include/linux/io-64-nonatomic-hi-lo.h | 64 +++ include/linux/io-64-nonatomic-lo-hi.h | 64 +++ lib/iomap.c| 140 - 10 files changed, 367 insertions(+), 98 deletions(-) -- 2.11.0
[PATCH v16 3/7] iomap: introduce io{read|write}64_{lo_hi|hi_lo}
In order to provide non-atomic functions for io{read|write}64 that will use readq and writeq when appropriate. We define a number of variants of these functions in the generic iomap that will do non-atomic operations on pio but atomic operations on mmio. These functions are only defined if readq and writeq are defined. If they are not, then the wrappers that always use non-atomic operations from include/linux/io-64-nonatomic*.h will be used. Signed-off-by: Logan GunthorpeReviewed-by: Andy Shevchenko Cc: Benjamin Herrenschmidt Cc: Paul Mackerras Cc: Michael Ellerman Cc: Arnd Bergmann Cc: Suresh Warrier Cc: Nicholas Piggin --- arch/powerpc/include/asm/io.h | 2 + include/asm-generic/iomap.h | 26 +++-- lib/iomap.c | 132 ++ 3 files changed, 154 insertions(+), 6 deletions(-) diff --git a/arch/powerpc/include/asm/io.h b/arch/powerpc/include/asm/io.h index af074923d598..4cc420cfaa78 100644 --- a/arch/powerpc/include/asm/io.h +++ b/arch/powerpc/include/asm/io.h @@ -788,8 +788,10 @@ extern void __iounmap_at(void *ea, unsigned long size); #define mmio_read16be(addr)readw_be(addr) #define mmio_read32be(addr)readl_be(addr) +#define mmio_read64be(addr)readq_be(addr) #define mmio_write16be(val, addr) writew_be(val, addr) #define mmio_write32be(val, addr) writel_be(val, addr) +#define mmio_write64be(val, addr) writeq_be(val, addr) #define mmio_insb(addr, dst, count)readsb(addr, dst, count) #define mmio_insw(addr, dst, count)readsw(addr, dst, count) #define mmio_insl(addr, dst, count)readsl(addr, dst, count) diff --git a/include/asm-generic/iomap.h b/include/asm-generic/iomap.h index 5b63b94ef6b5..5a4af0199b32 100644 --- a/include/asm-generic/iomap.h +++ b/include/asm-generic/iomap.h @@ -31,9 +31,16 @@ extern unsigned int ioread16(void __iomem *); extern unsigned int ioread16be(void __iomem *); extern unsigned int ioread32(void __iomem *); extern unsigned int ioread32be(void __iomem *); -#ifdef CONFIG_64BIT -extern u64 ioread64(void __iomem *); -extern u64 ioread64be(void __iomem *); + +#ifdef readq +#define ioread64_lo_hi ioread64_lo_hi +#define ioread64_hi_lo ioread64_hi_lo +#define ioread64be_lo_hi ioread64be_lo_hi +#define ioread64be_hi_lo ioread64be_hi_lo +extern u64 ioread64_lo_hi(void __iomem *addr); +extern u64 ioread64_hi_lo(void __iomem *addr); +extern u64 ioread64be_lo_hi(void __iomem *addr); +extern u64 ioread64be_hi_lo(void __iomem *addr); #endif extern void iowrite8(u8, void __iomem *); @@ -41,9 +48,16 @@ extern void iowrite16(u16, void __iomem *); extern void iowrite16be(u16, void __iomem *); extern void iowrite32(u32, void __iomem *); extern void iowrite32be(u32, void __iomem *); -#ifdef CONFIG_64BIT -extern void iowrite64(u64, void __iomem *); -extern void iowrite64be(u64, void __iomem *); + +#ifdef writeq +#define iowrite64_lo_hi iowrite64_lo_hi +#define iowrite64_hi_lo iowrite64_hi_lo +#define iowrite64be_lo_hi iowrite64be_lo_hi +#define iowrite64be_hi_lo iowrite64be_hi_lo +extern void iowrite64_lo_hi(u64 val, void __iomem *addr); +extern void iowrite64_hi_lo(u64 val, void __iomem *addr); +extern void iowrite64be_lo_hi(u64 val, void __iomem *addr); +extern void iowrite64be_hi_lo(u64 val, void __iomem *addr); #endif /* diff --git a/lib/iomap.c b/lib/iomap.c index 2c293b22569f..e909ab71e995 100644 --- a/lib/iomap.c +++ b/lib/iomap.c @@ -67,6 +67,7 @@ static void bad_io_access(unsigned long port, const char *access) #ifndef mmio_read16be #define mmio_read16be(addr) swab16(readw(addr)) #define mmio_read32be(addr) swab32(readl(addr)) +#define mmio_read64be(addr) swab64(readq(addr)) #endif unsigned int ioread8(void __iomem *addr) @@ -100,6 +101,80 @@ EXPORT_SYMBOL(ioread16be); EXPORT_SYMBOL(ioread32); EXPORT_SYMBOL(ioread32be); +#ifdef readq +static u64 pio_read64_lo_hi(unsigned long port) +{ + u64 lo, hi; + + lo = inl(port); + hi = inl(port + sizeof(u32)); + + return lo | (hi << 32); +} + +static u64 pio_read64_hi_lo(unsigned long port) +{ + u64 lo, hi; + + hi = inl(port + sizeof(u32)); + lo = inl(port); + + return lo | (hi << 32); +} + +static u64 pio_read64be_lo_hi(unsigned long port) +{ + u64 lo, hi; + + lo = pio_read32be(port + sizeof(u32)); + hi = pio_read32be(port); + + return lo | (hi << 32); +} + +static u64 pio_read64be_hi_lo(unsigned long port) +{ + u64 lo, hi; + + hi = pio_read32be(port); + lo = pio_read32be(port + sizeof(u32)); + + return lo | (hi << 32); +} + +u64 ioread64_lo_hi(void __iomem *addr) +{ + IO_COND(addr, return pio_read64_lo_hi(port), return readq(addr)); + return 0xULL; +} + +u64 ioread64_hi_lo(void __iomem
[PATCH v16 6/7] crypto: caam: cleanup CONFIG_64BIT ifdefs when using io{read|write}64
Clean up the extra ifdefs which defined the wr_reg64 and rd_reg64 functions in non-64bit cases in favour of the new common io-64-nonatomic-lo-hi header. To be consistent with CAAM engine HW spec: in case of 64-bit registers, irrespective of device endianness, the lower address should be read from / written to first, followed by the upper address. Indeed the I/O accessors in CAAM driver currently don't follow the spec, however this is a good opportunity to fix the code. Signed-off-by: Logan GunthorpeReviewed-by: Horia Geantă Reviewed-by: Andy Shevchenko Cc: Dan Douglass Cc: Herbert Xu Cc: "David S. Miller" --- drivers/crypto/caam/regs.h | 30 +++--- 1 file changed, 3 insertions(+), 27 deletions(-) diff --git a/drivers/crypto/caam/regs.h b/drivers/crypto/caam/regs.h index fee363865d88..f887b371040f 100644 --- a/drivers/crypto/caam/regs.h +++ b/drivers/crypto/caam/regs.h @@ -10,7 +10,7 @@ #include #include -#include +#include /* * Architecture-specific register access methods @@ -136,10 +136,9 @@ static inline void clrsetbits_32(void __iomem *reg, u32 clear, u32 set) *base + 0x : least-significant 32 bits *base + 0x0004 : most-significant 32 bits */ -#ifdef CONFIG_64BIT static inline void wr_reg64(void __iomem *reg, u64 data) { - if (caam_little_end) + if (!caam_imx && caam_little_end) iowrite64(data, reg); else iowrite64be(data, reg); @@ -147,35 +146,12 @@ static inline void wr_reg64(void __iomem *reg, u64 data) static inline u64 rd_reg64(void __iomem *reg) { - if (caam_little_end) + if (!caam_imx && caam_little_end) return ioread64(reg); else return ioread64be(reg); } -#else /* CONFIG_64BIT */ -static inline void wr_reg64(void __iomem *reg, u64 data) -{ - if (!caam_imx && caam_little_end) { - wr_reg32((u32 __iomem *)(reg) + 1, data >> 32); - wr_reg32((u32 __iomem *)(reg), data); - } else { - wr_reg32((u32 __iomem *)(reg), data >> 32); - wr_reg32((u32 __iomem *)(reg) + 1, data); - } -} - -static inline u64 rd_reg64(void __iomem *reg) -{ - if (!caam_imx && caam_little_end) - return ((u64)rd_reg32((u32 __iomem *)(reg) + 1) << 32 | - (u64)rd_reg32((u32 __iomem *)(reg))); - - return ((u64)rd_reg32((u32 __iomem *)(reg)) << 32 | - (u64)rd_reg32((u32 __iomem *)(reg) + 1)); -} -#endif /* CONFIG_64BIT */ - static inline u64 cpu_to_caam_dma64(dma_addr_t value) { if (caam_imx) -- 2.11.0
[PATCH v16 1/7] iomap: Use non-raw io functions for io{read|write}XXbe
Fix an asymmetry in the io{read|write}XXbe functions in that the big-endian variants make use of the raw io accessors while the little-endian variants use the regular accessors. Some architectures implement barriers to order against both spinlocks and DMA accesses and for these case, the big-endian variant of the API would not be protected. Thus, change the mmio_be macros to use the appropriate swab() function wrapping the regular accessor. This is similar to what was done for PIO. When this code was originally written, barriers in the IO accessors were not common and the accessors simply wrapped the raw functions in a conversion to CPU endianness. Since then, barriers have been added in some architectures and are now missing in the big endian variant of the API. This also manages to silence a few sparse warnings that check for using the correct endian types which the original code did not annotate correctly. Signed-off-by: Logan GunthorpeCc: Thomas Gleixner Cc: Kate Stewart Cc: Philippe Ombredanne Cc: Greg Kroah-Hartman Cc: Arnd Bergmann Link: http://lkml.kernel.org/r/cak8p3a25zqdxyay3ivv+jmsszs7f6ssgc+hdbkgs54zfvix...@mail.gmail.com --- lib/iomap.c | 8 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/iomap.c b/lib/iomap.c index 541d926da95e..2c293b22569f 100644 --- a/lib/iomap.c +++ b/lib/iomap.c @@ -65,8 +65,8 @@ static void bad_io_access(unsigned long port, const char *access) #endif #ifndef mmio_read16be -#define mmio_read16be(addr) be16_to_cpu(__raw_readw(addr)) -#define mmio_read32be(addr) be32_to_cpu(__raw_readl(addr)) +#define mmio_read16be(addr) swab16(readw(addr)) +#define mmio_read32be(addr) swab32(readl(addr)) #endif unsigned int ioread8(void __iomem *addr) @@ -106,8 +106,8 @@ EXPORT_SYMBOL(ioread32be); #endif #ifndef mmio_write16be -#define mmio_write16be(val,port) __raw_writew(be16_to_cpu(val),port) -#define mmio_write32be(val,port) __raw_writel(be32_to_cpu(val),port) +#define mmio_write16be(val,port) writew(swab16(val),port) +#define mmio_write32be(val,port) writel(swab32(val),port) #endif void iowrite8(u8 val, void __iomem *addr) -- 2.11.0
[PATCH v16 4/7] io-64-nonatomic: add io{read|write}64[be]{_lo_hi|_hi_lo} macros
This patch adds generic io{read|write}64[be]{_lo_hi|_hi_lo} macros if they are not already defined by the architecture. (As they are provided by the generic iomap library). The patch also points io{read|write}64[be] to the variant specified by the header name. This is because new drivers are encouraged to use ioreadXX, et al instead of readX[1], et al -- and mixing ioreadXX with readq is pretty ugly. [1] LDD3: section 9.4.2 Signed-off-by: Logan GunthorpeReviewed-by: Andy Shevchenko Cc: Christoph Hellwig Cc: Arnd Bergmann Cc: Alan Cox Cc: Greg Kroah-Hartman --- include/linux/io-64-nonatomic-hi-lo.h | 64 +++ include/linux/io-64-nonatomic-lo-hi.h | 64 +++ 2 files changed, 128 insertions(+) diff --git a/include/linux/io-64-nonatomic-hi-lo.h b/include/linux/io-64-nonatomic-hi-lo.h index 862d786a904f..ae21b72cce85 100644 --- a/include/linux/io-64-nonatomic-hi-lo.h +++ b/include/linux/io-64-nonatomic-hi-lo.h @@ -55,4 +55,68 @@ static inline void hi_lo_writeq_relaxed(__u64 val, volatile void __iomem *addr) #define writeq_relaxed hi_lo_writeq_relaxed #endif +#ifndef ioread64_hi_lo +#define ioread64_hi_lo ioread64_hi_lo +static inline u64 ioread64_hi_lo(void __iomem *addr) +{ + u32 low, high; + + high = ioread32(addr + sizeof(u32)); + low = ioread32(addr); + + return low + ((u64)high << 32); +} +#endif + +#ifndef iowrite64_hi_lo +#define iowrite64_hi_lo iowrite64_hi_lo +static inline void iowrite64_hi_lo(u64 val, void __iomem *addr) +{ + iowrite32(val >> 32, addr + sizeof(u32)); + iowrite32(val, addr); +} +#endif + +#ifndef ioread64be_hi_lo +#define ioread64be_hi_lo ioread64be_hi_lo +static inline u64 ioread64be_hi_lo(void __iomem *addr) +{ + u32 low, high; + + high = ioread32be(addr); + low = ioread32be(addr + sizeof(u32)); + + return low + ((u64)high << 32); +} +#endif + +#ifndef iowrite64be_hi_lo +#define iowrite64be_hi_lo iowrite64be_hi_lo +static inline void iowrite64be_hi_lo(u64 val, void __iomem *addr) +{ + iowrite32be(val >> 32, addr); + iowrite32be(val, addr + sizeof(u32)); +} +#endif + +#ifndef ioread64 +#define ioread64_is_nonatomic +#define ioread64 ioread64_hi_lo +#endif + +#ifndef iowrite64 +#define iowrite64_is_nonatomic +#define iowrite64 iowrite64_hi_lo +#endif + +#ifndef ioread64be +#define ioread64be_is_nonatomic +#define ioread64be ioread64be_hi_lo +#endif + +#ifndef iowrite64be +#define iowrite64be_is_nonatomic +#define iowrite64be iowrite64be_hi_lo +#endif + #endif /* _LINUX_IO_64_NONATOMIC_HI_LO_H_ */ diff --git a/include/linux/io-64-nonatomic-lo-hi.h b/include/linux/io-64-nonatomic-lo-hi.h index d042e7bb5adb..faaa842dbdb9 100644 --- a/include/linux/io-64-nonatomic-lo-hi.h +++ b/include/linux/io-64-nonatomic-lo-hi.h @@ -55,4 +55,68 @@ static inline void lo_hi_writeq_relaxed(__u64 val, volatile void __iomem *addr) #define writeq_relaxed lo_hi_writeq_relaxed #endif +#ifndef ioread64_lo_hi +#define ioread64_lo_hi ioread64_lo_hi +static inline u64 ioread64_lo_hi(void __iomem *addr) +{ + u32 low, high; + + low = ioread32(addr); + high = ioread32(addr + sizeof(u32)); + + return low + ((u64)high << 32); +} +#endif + +#ifndef iowrite64_lo_hi +#define iowrite64_lo_hi iowrite64_lo_hi +static inline void iowrite64_lo_hi(u64 val, void __iomem *addr) +{ + iowrite32(val, addr); + iowrite32(val >> 32, addr + sizeof(u32)); +} +#endif + +#ifndef ioread64be_lo_hi +#define ioread64be_lo_hi ioread64be_lo_hi +static inline u64 ioread64be_lo_hi(void __iomem *addr) +{ + u32 low, high; + + low = ioread32be(addr + sizeof(u32)); + high = ioread32be(addr); + + return low + ((u64)high << 32); +} +#endif + +#ifndef iowrite64be_lo_hi +#define iowrite64be_lo_hi iowrite64be_lo_hi +static inline void iowrite64be_lo_hi(u64 val, void __iomem *addr) +{ + iowrite32be(val, addr + sizeof(u32)); + iowrite32be(val >> 32, addr); +} +#endif + +#ifndef ioread64 +#define ioread64_is_nonatomic +#define ioread64 ioread64_lo_hi +#endif + +#ifndef iowrite64 +#define iowrite64_is_nonatomic +#define iowrite64 iowrite64_lo_hi +#endif + +#ifndef ioread64be +#define ioread64be_is_nonatomic +#define ioread64be ioread64be_lo_hi +#endif + +#ifndef iowrite64be +#define iowrite64be_is_nonatomic +#define iowrite64be iowrite64be_lo_hi +#endif + #endif /* _LINUX_IO_64_NONATOMIC_LO_HI_H_ */ -- 2.11.0
[PATCH v16 5/7] ntb: ntb_hw_intel: use io-64-nonatomic instead of in-driver hacks
Now that ioread64 and iowrite64 are available in io-64-nonatomic, we can remove the hack at the top of ntb_hw_intel.c and replace it with an include. Signed-off-by: Logan GunthorpeReviewed-by: Andy Shevchenko Acked-by: Dave Jiang Acked-by: Allen Hubbe Acked-by: Jon Mason --- drivers/ntb/hw/intel/ntb_hw_intel.c | 30 +- 1 file changed, 1 insertion(+), 29 deletions(-) diff --git a/drivers/ntb/hw/intel/ntb_hw_intel.c b/drivers/ntb/hw/intel/ntb_hw_intel.c index 156b45cd4a19..5cf40ab21366 100644 --- a/drivers/ntb/hw/intel/ntb_hw_intel.c +++ b/drivers/ntb/hw/intel/ntb_hw_intel.c @@ -59,6 +59,7 @@ #include #include #include +#include #include "ntb_hw_intel.h" @@ -149,35 +150,6 @@ MODULE_PARM_DESC(xeon_b2b_dsd_bar5_addr32, static inline enum ntb_topo xeon_ppd_topo(struct intel_ntb_dev *ndev, u8 ppd); static int xeon_init_isr(struct intel_ntb_dev *ndev); -#ifndef ioread64 -#ifdef readq -#define ioread64 readq -#else -#define ioread64 _ioread64 -static inline u64 _ioread64(void __iomem *mmio) -{ - u64 low, high; - - low = ioread32(mmio); - high = ioread32(mmio + sizeof(u32)); - return low | (high << 32); -} -#endif -#endif - -#ifndef iowrite64 -#ifdef writeq -#define iowrite64 writeq -#else -#define iowrite64 _iowrite64 -static inline void _iowrite64(u64 val, void __iomem *mmio) -{ - iowrite32(val, mmio); - iowrite32(val >> 32, mmio + sizeof(u32)); -} -#endif -#endif - static inline int pdev_is_xeon(struct pci_dev *pdev) { switch (pdev->device) { -- 2.11.0
[PATCH v16 7/7] ntb: ntb_hw_switchtec: Cleanup 64bit IO defines to use the common header
Clean up the ifdefs which conditionally defined the io{read|write}64 functions in favour of the new common io-64-nonatomic-lo-hi header. Per a nit from Andy Shevchenko, the include list is also made alphabetical. Signed-off-by: Logan GunthorpeReviewed-by: Andy Shevchenko Cc: Jon Mason --- drivers/ntb/hw/mscc/ntb_hw_switchtec.c | 36 -- 1 file changed, 4 insertions(+), 32 deletions(-) diff --git a/drivers/ntb/hw/mscc/ntb_hw_switchtec.c b/drivers/ntb/hw/mscc/ntb_hw_switchtec.c index f624ae27eabe..f403da24b833 100644 --- a/drivers/ntb/hw/mscc/ntb_hw_switchtec.c +++ b/drivers/ntb/hw/mscc/ntb_hw_switchtec.c @@ -13,12 +13,13 @@ * */ -#include -#include +#include +#include #include #include -#include +#include #include +#include MODULE_DESCRIPTION("Microsemi Switchtec(tm) NTB Driver"); MODULE_VERSION("0.1"); @@ -35,35 +36,6 @@ module_param(use_lut_mws, bool, 0644); MODULE_PARM_DESC(use_lut_mws, "Enable the use of the LUT based memory windows"); -#ifndef ioread64 -#ifdef readq -#define ioread64 readq -#else -#define ioread64 _ioread64 -static inline u64 _ioread64(void __iomem *mmio) -{ - u64 low, high; - - low = ioread32(mmio); - high = ioread32(mmio + sizeof(u32)); - return low | (high << 32); -} -#endif -#endif - -#ifndef iowrite64 -#ifdef writeq -#define iowrite64 writeq -#else -#define iowrite64 _iowrite64 -static inline void _iowrite64(u64 val, void __iomem *mmio) -{ - iowrite32(val, mmio); - iowrite32(val >> 32, mmio + sizeof(u32)); -} -#endif -#endif - #define SWITCHTEC_NTB_MAGIC 0x45CC0001 #define MAX_MWS 128 -- 2.11.0
Re: [PATCH v4 2/2] crypto: caam - allow retrieving 'era' from register
Hi Herbert, On Fri, Apr 20, 2018 at 3:01 PM, Herbert Xuwrote: > Is this a regression or a preexisting bug? It is not a regression. We haven't seen this problem before because dtsi files passed the 'fsl,sec-era' property. Since 4.17-rc1, imx7 supports CAAM: 0eeabcad7da5 ("ARM: dts: imx7s: add CAAM device node") ,but it does not pass the 'fsl,sec-era' property leading to the following error: caam 3090.caam: device ID = 0x0a160300 (Era -524) Documentation/devicetree/bindings/crypto/fsl-sec4.txt states that 'fsl,sec-era' property is optional, so 0eeabcad7da5 is not incorrect by not passing it. As we can retrieve the era information by reading the CAAM registers we can fix the problem on imx7 running 4.17-rc with this patch. Thanks
Re: [PATCH v4 2/2] crypto: caam - allow retrieving 'era' from register
On Fri, Apr 20, 2018 at 02:11:07PM -0300, Fabio Estevam wrote: > > Would it be possible to consider applying this one for 4.17-rc? > > Without this patch we get incorrect CAAM IP block version (era) on > i.MX7 on 4.17-rc1: > > caam 3090.caam: device ID = 0x0a160300 (Era -524) Is this a regression or a preexisting bug? Cheers, -- Email: Herbert XuHome Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Re: [PATCH v4 2/2] crypto: caam - allow retrieving 'era' from register
Hi Herbert, On Fri, Apr 20, 2018 at 1:52 PM, Herbert Xuwrote: > On Wed, Apr 11, 2018 at 09:45:20AM -0300, Fabio Estevam wrote: >> From: Fabio Estevam >> >> The 'era' information can be retrieved from CAAM registers, so >> introduce a caam_get_era_from_hw() function that gets it via register >> reads in case the 'fsl,sec-era' property is not passed in the device >> tree. >> >> This function is based on the U-Boot implementation from >> drivers/crypto/fsl/sec.c >> >> Signed-off-by: Fabio Estevam > > Patch applied. Thanks. Would it be possible to consider applying this one for 4.17-rc? Without this patch we get incorrect CAAM IP block version (era) on i.MX7 on 4.17-rc1: caam 3090.caam: device ID = 0x0a160300 (Era -524) Thanks
Re: [PATCH] hwrng: via-rng - support new Centaur CPU
On Fri, Apr 13, 2018 at 03:03:03PM +0800, David Wang wrote: > New Centaur CPU(Family > 6) supprt Random Number Generator, but can't > support MSR_VIA_RNG. Just like VIA Nano. > > Signed-off-by: David WangPatch applied. Thanks. -- Email: Herbert Xu Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Re: [PATCH] crypto: api - fix finding algorithm currently being tested
On Mon, Apr 16, 2018 at 04:59:13PM -0700, Eric Biggers wrote: > From: Eric Biggers> > Commit eb02c38f0197 ("crypto: api - Keep failed instances alive") is > making allocating crypto transforms sometimes fail with ELIBBAD, when > multiple processes try to access encrypted files with fscrypt for the > first time since boot. The problem is that the "request larval" for the > algorithm is being mistaken for an algorithm which failed its tests. > > Fix it by only returning ELIBBAD for "non-larval" algorithms. Also > don't leak a reference to the algorithm. > > Fixes: eb02c38f0197 ("crypto: api - Keep failed instances alive") > Signed-off-by: Eric Biggers Patch applied. Thanks. -- Email: Herbert Xu Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Re: [PATCH v2] crypto: caam: - Use kmemdup() function
On Mon, Apr 16, 2018 at 01:05:01PM -0300, Fabio Estevam wrote: > From: Fabio Estevam> > Use kmemdup() rather than duplicating its implementation. > > By usign kmemdup() we can also get rid of the 'val' variable. > > Detected with Coccinelle script. > > Signed-off-by: Fabio Estevam Patch applied. Thanks. -- Email: Herbert Xu Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Re: [PATCH] crypto: caam - strip input zeros from RSA input buffer
On Mon, Apr 16, 2018 at 12:34:45PM +0300, Horia Geantă wrote: > Sometimes the provided RSA input buffer provided is not stripped > of leading zeros. This could cause its size to be bigger than that > of the modulus, making the HW complain: > > caam_jr 2142000.jr1: 4789: DECO: desc idx 7: > Protocol Size Error - A protocol has seen an error in size. When > running RSA, pdb size N < (size of F) when no formatting is used; or > pdb size N < (F + 11) when formatting is used. > > Fix the problem by stripping off the leading zero from input data > before feeding it to the CAAM accelerator. > > Fixes: 8c419778ab57e ("crypto: caam - add support for RSA algorithm") > Cc:# 4.8+ > Reported-by: Martin Townsend > Link: > https://lkml.kernel.org/r/cabatt_ytyoryktapcb4izhnanekkgfi9xaqmjhi_n-8ywoc...@mail.gmail.com > Signed-off-by: Horia Geantă Patch applied. Thanks. -- Email: Herbert Xu Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Re: [PATCH] crypto: drbg - set freed buffers to NULL
On Thu, Apr 12, 2018 at 08:40:55AM +0200, Stephan Müller wrote: > Add the Fixes, CC stable tags. > > ---8<--- > > During freeing of the internal buffers used by the DRBG, set the pointer > to NULL. It is possible that the context with the freed buffers is > reused. In case of an error during initialization where the pointers > do not yet point to allocated memory, the NULL value prevents a double > free. > > Cc: sta...@vger.kernel.org > Fixes: 3cfc3b9721123 ("crypto: drbg - use aligned buffers") > Signed-off-by: Stephan Mueller> Reported-by: syzbot+75397ee3df5c70164...@syzkaller.appspotmail.com Patch applied. Thanks. -- Email: Herbert Xu Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Re: [PATCH] crypto: rsa - Remove unneeded error assignment
On Wed, Apr 11, 2018 at 06:37:17PM -0300, Fabio Estevam wrote: > From: Fabio Estevam> > There is no need to assign an error value to 'ret' prior > to calling mpi_read_raw_from_sgl() because in the case > of error the 'ret' variable will be assigned to the error > code inside the if block. > > In the case of non failure, 'ret' will be overwritten > immediately after, so remove the unneeded assignment. > > Signed-off-by: Fabio Estevam Patch applied. Thanks. -- Email: Herbert Xu Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Re: [PATCH] crypto: testmgr: Allow different compression results
On Thu, Apr 19, 2018 at 01:58:40PM +0200, Jan Glauber wrote: > > Nice idea. Would a crypto_alloc_cipher("deflate", ...) pick the generic > implementation or how can we select it? For our ciphers we generally use the -generic suffix in the driver name. The compression algorithms seem to be all over the place on this so we should fix them all to use the -generic suffix and then we can simply append the -generic suffix here before allocating it. Cheers, -- Email: Herbert XuHome Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Re: [PATCH][next] crypto: chtls: don't leak information from the stack to userspace
On Thu, Apr 05, 2018 at 05:44:03PM +0100, Colin King wrote: > From: Colin Ian King> > The structure crypto_info contains fields that are not initialized and > only .version is set. The copy_to_user call is hence leaking information > from the stack to userspace which must be avoided. Fix this by zero'ing > all the unused fields. > > Detected by CoverityScan, CID#1467421 ("Uninitialized scalar variable") > > Fixes: a08943947873 ("crypto: chtls - Register chtls with net tls") > Signed-off-by: Colin Ian King Patch applied. Thanks. -- Email: Herbert Xu Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Re: [PATCH] crypto : chtls_cm - Fix potential NULL pointer dereferences
On Tue, Apr 03, 2018 at 03:09:12PM -0500, Gustavo A. R. Silva wrote: > Add null checks on lookup_tid() return value in order to prevent > null pointer dereferences. > > Addresses-Coverity-ID: 1467422 ("Dereference null return value") > Addresses-Coverity-ID: 1467443 ("Dereference null return value") > Addresses-Coverity-ID: 1467445 ("Dereference null return value") > Addresses-Coverity-ID: 1467449 ("Dereference null return value") > Fixes: cc35c88ae4db ("crypto : chtls - CPL handler definition") > Signed-off-by: Gustavo A. R. SilvaPatch applied. Thanks. -- Email: Herbert Xu Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Re: [PATCH][next] crypto: chtls: remove redundant assignment to cdev->ports
On Fri, Apr 06, 2018 at 05:58:47PM +0100, Colin King wrote: > From: Colin Ian King> > There is a double assignment to cdev->ports, the first is redundant > as it is over-written so remove it. > > Detected by CoverityScan, CID#1467432 ("Unused value") > > Signed-off-by: Colin Ian King Patch applied. Thanks. -- Email: Herbert Xu Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Re: [PATCH v4 1/2] crypto: caam - staticize caam_get_era()
On Wed, Apr 11, 2018 at 09:45:19AM -0300, Fabio Estevam wrote: > From: Fabio Estevam> > caam_get_era() is only used locally, so do not export this function > and make it static instead. > > Signed-off-by: Fabio Estevam > Reviewed-by: Horia Geantă Patch applied. Thanks. -- Email: Herbert Xu Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Re: [PATCH] crypto: testmgr: Allow different compression results
On Wed, Apr 11, 2018 at 08:28:32PM +0200, Jan Glauber wrote: > From: Mahipal Challa> > The following error is triggered by the ThunderX ZIP driver > if the testmanager is enabled: > > [ 199.069437] ThunderX-ZIP :03:00.0: Found ZIP device 0 177d:a01a on > Node 0 > [ 199.073573] alg: comp: Compression test 1 failed for deflate-generic: > output len = 37 > > The reason for this error is the verification of the compression > results. Verifying the compression result only works if all > algorithm parameters are identical, in this case to the software > implementation. > > Different compression engines like the ThunderX ZIP coprocessor > might yield different compression results by tuning the > algorithm parameters. In our case the compressed result is > shorter than the test vector. > > We should not forbid different compression results but only > check that compression -> decompression yields the same > result. This is done already in the acomp test. Do something > similar for test_comp(). > > Signed-off-by: Mahipal Challa > Signed-off-by: Balakrishna Bhamidipati > [jglau...@cavium.com: removed unrelated printk changes, rewrote commit msg, > fixed whitespace and unneeded initialization] > Signed-off-by: Jan Glauber Patch applied. Thanks. -- Email: Herbert Xu Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Re: [PATCH v2 0/2] crypto: removing various VLAs
On Mon, Apr 09, 2018 at 03:54:45PM +0200, Salvatore Mesoraca wrote: > v2: > As suggested by Herbert Xu, the blocksize and alignmask checks > have been moved to crypto_check_alg. > So, now, all the other separate checks are not necessary. > Also, the defines have been moved to include/crypto/algapi.h. > > v1: > As suggested by Laura Abbott[1], I'm resending my patch with > MAX_BLOCKSIZE and MAX_ALIGNMASK defined in an header, so they > can be used in other places. > I took this opportunity to deal with some other VLAs not > handled in the old patch. > > [1] http://lkml.kernel.org/r/4e536889-439a-49e6-dd95-2d4286913...@redhat.com > > Salvatore Mesoraca (2): > crypto: api - laying defines and checks for statically allocated > buffers > crypto: remove several VLAs > > crypto/algapi.c | 10 ++ > crypto/cfb.c| 7 +++ > crypto/cipher.c | 3 ++- > crypto/ctr.c| 4 ++-- > crypto/cts.c| 5 +++-- > crypto/pcbc.c | 5 +++-- > include/crypto/algapi.h | 8 > 7 files changed, 31 insertions(+), 11 deletions(-) All applied. Thanks. -- Email: Herbert XuHome Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Re: [PATCH v4 2/2] crypto: caam - allow retrieving 'era' from register
On Wed, Apr 11, 2018 at 09:45:20AM -0300, Fabio Estevam wrote: > From: Fabio Estevam> > The 'era' information can be retrieved from CAAM registers, so > introduce a caam_get_era_from_hw() function that gets it via register > reads in case the 'fsl,sec-era' property is not passed in the device > tree. > > This function is based on the U-Boot implementation from > drivers/crypto/fsl/sec.c > > Signed-off-by: Fabio Estevam Patch applied. Thanks. -- Email: Herbert Xu Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Re: [PATCH v2 0/5] ThunderX ZIP driver bug fixes
On Mon, Apr 09, 2018 at 05:45:49PM +0200, Jan Glauber wrote: > Some bug fixes for this driver after it stopped working with virtual mapped > stacks. I think the first two patches qualify for stable. > > Jan Glauber (5): > crypto: thunderx_zip: Fix fallout from CONFIG_VMAP_STACK > crypto: thunderx_zip: Limit result reading attempts > crypto: thunderx_zip: Prevent division by zero > crypto: thunderx_zip: Fix statistics pending request value > crypto: thunderx_zip: Fix smp_processor_id() warnings > > drivers/crypto/cavium/zip/common.h | 21 + > drivers/crypto/cavium/zip/zip_crypto.c | 22 ++ > drivers/crypto/cavium/zip/zip_deflate.c | 4 ++-- > drivers/crypto/cavium/zip/zip_device.c | 4 ++-- > drivers/crypto/cavium/zip/zip_inflate.c | 4 ++-- > drivers/crypto/cavium/zip/zip_main.c| 24 +++- > drivers/crypto/cavium/zip/zip_main.h| 1 - > 7 files changed, 52 insertions(+), 28 deletions(-) All applied. Thanks. -- Email: Herbert XuHome Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Re: [PATCH v3 1/2] crypto: authenc - don't leak pointers to authenc keys
On Tue, Apr 03, 2018 at 09:39:00AM +0300, Tudor Ambarus wrote: > In crypto_authenc_setkey we save pointers to the authenc keys in > a local variable of type struct crypto_authenc_keys and we don't > zeroize it after use. Fix this and don't leak pointers to the > authenc keys. > > Signed-off-by: Tudor AmbarusPatch applied. Thanks. -- Email: Herbert Xu Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Re: [RESEND PATCH] crypto: Add zstd support
On Fri, Mar 30, 2018 at 12:14:53PM -0700, Nick Terrell wrote: > Adds zstd support to crypto and scompress. Only supports the default > level. > > Previously we held off on this patch, since there weren't any users. > Now zram is ready for zstd support, but depends on CONFIG_CRYPTO_ZSTD, > which isn't defined until this patch is in. I also see a patch adding > zstd to pstore [0], which depends on crypto zstd. > > [0] > lkml.kernel.org/r/9c9416b2dff19f05fb4c35879aaa83d11ff72c92.1521626182.git.geliangt...@gmail.com > > Signed-off-by: Nick TerrellPatch applied. Thanks. -- Email: Herbert Xu Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Re: [PATCH v3 2/2] crypto: authencesn - don't leak pointers to authenc keys
On Tue, Apr 03, 2018 at 09:39:01AM +0300, Tudor Ambarus wrote: > In crypto_authenc_esn_setkey we save pointers to the authenc keys > in a local variable of type struct crypto_authenc_keys and we don't > zeroize it after use. Fix this and don't leak pointers to the > authenc keys. > > Signed-off-by: Tudor AmbarusPatch applied. Thanks. -- Email: Herbert Xu Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Re: [PATCH v2] crypto/ecc: Actually remove stack VLA usage
On Fri, Mar 30, 2018 at 09:55:44AM -0700, Kees Cook wrote: > On the quest to remove all VLAs from the kernel[1], this avoids VLAs > by just using the maximum allocation size (4 bytes) for stack arrays. > All the VLAs in ecc were either 3 or 4 bytes (or a multiple), so just > make it 4 bytes all the time. Initialization routines are adjusted to > check that ndigits does not end up larger than the arrays. > > This includes a removal of the earlier attempt at this fix from > commit a963834b4742 ("crypto/ecc: Remove stack VLA usage") > > [1] https://lkml.org/lkml/2018/3/7/621 > > Signed-off-by: Kees CookPatch applied. Thanks. -- Email: Herbert Xu Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Re: [PATCH 0/3] crypto: caam - IV-related fixes
On Wed, Mar 28, 2018 at 03:39:16PM +0300, Horia Geantă wrote: > This patch set fixes several issues related to IV handling: > -in some cases IV direction is incorrect > -IVs need to be DMA mapped (when they are not provided directly > as "immediate" values in the descriptors); however, crypto API does not > guarantee the IV buffers to be DMAable > -in-place ablkcipher decryption needs special handling since ciphertext > will be overwritten by the time we want to update the IV with the last > ciphertext block > > Horia Geantă (3): > crypto: caam - fix DMA mapping dir for generated IV > crypto: caam - fix IV DMA mapping and updating > crypto: caam/qi - fix IV DMA mapping and updating > > drivers/crypto/caam/caamalg.c| 231 > +-- > drivers/crypto/caam/caamalg_qi.c | 227 +++--- > 2 files changed, 219 insertions(+), 239 deletions(-) All applied. Thanks. -- Email: Herbert XuHome Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Re: [PATCH v7 0/5] add compression algorithm zBeWalgo
Hi Benjamin, Today I tried your new patchset but I couldn't go further due to below problem. Unfortunately, I don't have the time to look into. Could you check on it? Thanks. [ 169.597064] zram0: detected capacity change from 1073741824 to 0 [ 177.523268] zram0: detected capacity change from 0 to 1073741824 [ 181.312545] BUG: sleeping function called from invalid context at mm/page-writeback.c:2274 [ 181.315578] in_atomic(): 1, irqs_disabled(): 0, pid: 2051, name: dd [ 181.317804] 1 lock held by dd/2051: [ 181.318973] #0: d83cd3cb (>bd_mutex){+.+.}, at: __blkdev_put+0x41/0x1f0 [ 181.321590] CPU: 5 PID: 2051 Comm: dd Not tainted 4.16.0-mm1+ #202 [ 181.323599] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1 04/01/2014 [ 181.326295] Call Trace: [ 181.327117] dump_stack+0x67/0x9b [ 181.328246] ___might_sleep+0x149/0x230 [ 181.329475] write_cache_pages+0x31d/0x620 [ 181.330726] ? tag_pages_for_writeback+0x140/0x140 [ 181.332201] ? __lock_acquire+0x2b5/0x1300 [ 181.333466] generic_writepages+0x5f/0x90 [ 181.334695] ? do_writepages+0x4b/0xf0 [ 181.335840] ? blkdev_readpages+0x20/0x20 [ 181.337077] do_writepages+0x4b/0xf0 [ 181.338174] ? __filemap_fdatawrite_range+0xb4/0x100 [ 181.339672] ? __blkdev_put+0x41/0x1f0 [ 181.340826] ? __filemap_fdatawrite_range+0xc1/0x100 [ 181.342251] __filemap_fdatawrite_range+0xc1/0x100 [ 181.343610] filemap_write_and_wait+0x2c/0x70 [ 181.344867] __blkdev_put+0x71/0x1f0 [ 181.345891] blkdev_close+0x21/0x30 [ 181.346889] __fput+0xeb/0x220 [ 181.347769] task_work_run+0x93/0xc0 [ 181.348803] exit_to_usermode_loop+0x8d/0x90 [ 181.350009] do_syscall_64+0x16b/0x1b0 [ 181.351080] entry_SYSCALL_64_after_hwframe+0x42/0xb7 [ 181.352498] RIP: 0033:0x7f5e88e028f0 [ 181.353512] RSP: 002b:7fff448399d8 EFLAGS: 0246 ORIG_RAX: 0003 [ 181.355501] RAX: RBX: 0001 RCX: 7f5e88e028f0 [ 181.357382] RDX: 1000 RSI: RDI: 0001 [ 181.359254] RBP: 7f5e892e2698 R08: 0117e000 R09: 7fff448f2080 [ 181.361134] R10: 086f R11: 0246 R12: [ 181.362995] R13: R14: R15: [ 181.365448] show_signal_msg: 12 callbacks suppressed [ 181.365452] dd[2051]: segfault at 7f5e88d78d70 ip 7f5e88d78d70 sp 7fff44839548 error 14 in libc-2.23.so[7f5e88d0b000+1c] [ 181.369877] BUG: scheduling while atomic: dd/2051/0x0002 [ 181.371734] no locks held by dd/2051. [ 181.372658] Modules linked in: [ 181.373503] CPU: 5 PID: 2051 Comm: dd Tainted: GW 4.16.0-mm1+ #202 [ 181.375379] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1 04/01/2014 [ 181.377454] Call Trace: [ 181.378055] dump_stack+0x67/0x9b [ 181.378854] __schedule_bug+0x5d/0x80 [ 181.379731] __schedule+0x7b5/0xbd0 [ 181.380569] ? find_held_lock+0x2d/0x90 [ 181.381503] ? try_to_wake_up+0x56/0x510 [ 181.382437] ? wait_for_completion+0x112/0x1a0 [ 181.383486] schedule+0x2f/0x90 [ 181.384237] schedule_timeout+0x22b/0x550 [ 181.385198] ? find_held_lock+0x2d/0x90 [ 181.386105] ? wait_for_completion+0x132/0x1a0 [ 181.387158] ? wait_for_completion+0x112/0x1a0 [ 181.388221] wait_for_completion+0x13a/0x1a0 [ 181.389236] ? wake_up_q+0x70/0x70 [ 181.390008] call_usermodehelper_exec+0x13b/0x170 [ 181.391067] do_coredump+0xaed/0x1040 [ 181.391893] ? try_to_wake_up+0x56/0x510 [ 181.392815] ? __lock_is_held+0x55/0x90 [ 181.393694] get_signal+0x32f/0x8e0 [ 181.394485] ? page_fault+0x2f/0x50 [ 181.395271] do_signal+0x36/0x6f0 [ 181.396021] ? force_sig_info_fault+0x97/0xf0 [ 181.397018] ? __bad_area_nosemaphore+0x19e/0x1b0 [ 181.398074] ? __do_page_fault+0xde/0x4b0 [ 181.398977] ? page_fault+0x2f/0x50 [ 181.399780] exit_to_usermode_loop+0x62/0x90 [ 181.400770] prepare_exit_to_usermode+0xbf/0xd0 [ 181.401734] retint_user+0x8/0x18 [ 181.402446] RIP: 0033:0x7f5e88d78d70 [ 181.403213] RSP: 002b:7fff44839548 EFLAGS: 00010246 [ 181.404319] RAX: 7fff4483956f RBX: 7fff44839550 RCX: 007361696c612e65 [ 181.405827] RDX: RSI: 7f5e88e97733 RDI: 7fff44839550 [ 181.407245] RBP: 7fff44839790 R08: 656c61636f6c2f65 R09: feff7e5cff372c00 [ 181.408920] R10: R11: R12: 0117df30 [ 181.410817] R13: 7fff44839860 R14: 7fff44839880 R15: On Fri, Apr 13, 2018 at 05:48:35PM +0200, Benjamin Warnke wrote: > This patch series adds a new compression algorithm to the kernel and to > the crypto api. > > Changes since v6: > - Fixed git apply error due to other recently applied patches > > Changes since v5: > - Fixed compile-error due to variable definitions inside #ifdef > CONFIG_ZRAM_WRITEBACK > > Changes since v4: > - Fix mismatching function-prototypes > - Fix mismatching License errors > - Add static to global
Re: [PATCH 06/61] crypto: simplify getting .drvdata
On Thu, Apr 19, 2018 at 4:05 PM, Wolfram Sangwrote: > We should get drvdata from struct device directly. Going via > platform_device is an unneeded step back and forth. > > Signed-off-by: Wolfram Sang > --- > > Build tested only. buildbot is happy. Please apply individually. > > drivers/crypto/exynos-rng.c | 6 ++ > drivers/crypto/picoxcell_crypto.c | 6 ++ > 2 files changed, 4 insertions(+), 8 deletions(-) Reviewed-by: Krzysztof Kozlowski Best regards, Krzysztof