[0/8] lib/zlib: Set of s390 DFLTCC related patches for kernel zlib

Message ID 20230126131428.1222214-1-zaslonko@linux.ibm.com
Headers
Series lib/zlib: Set of s390 DFLTCC related patches for kernel zlib |

Message

Zaslonko Mikhail Jan. 26, 2023, 1:14 p.m. UTC
  Patches 1-7 represent a set of s390 zlib hardware support (DFLTCC) related fixes
and enhancements integrated from zlib-ng repo relevant to kernel zlib
(https://github.com/zlib-ng/zlib-ng).
Since the official zlib repository never got DFLTCC support code merged, all
the patches have been picked from zlib-ng fork (zlib data compression library
for the next generation systems). This repo contains new optimizations and
fixes not getting implemented into the official zlib repository and falls under
the same zlib License. All of the original patches from zlib-ng were authored
by Ilya Leoshkevich <iii@linux.ibm.com>. Coding style has been preserved for
future maintainability.
Patches 1-2 should have no effect for the kernel zlib but make the code
closer to zlib-ng for future maintainability.
Only Patch 3 touches common zlib_deflate code, other patches are relevant to
s390 tree only.

Patch 8 is separate and intends to resolve an issue with kernel PPP driver
which can use kernel zlib for packet compression. Without this patch PPP
decompression can fail due to error code returned by hardware (dfltcc_inflate)
and PPP disables zlib compression for further packets.

@Andrew, would you pick this patch series yourself (which is totally fine
with me) or shall we carry it via s390 tree?

Mikhail Zaslonko (8):
  lib/zlib: Adjust offset calculation for dfltcc_state
  lib/zlib: Implement switching between DFLTCC and software
  lib/zlib: Fix DFLTCC not flushing EOBS when creating raw streams
  lib/zlib: Fix DFLTCC ignoring flush modes when avail_in == 0
  lib/zlib: DFLTCC not writing header bits when avail_out == 0
  lib/zlib: Split deflate and inflate states for DFLTCC
  lib/zlib: DFLTCC support inflate with small window
  lib/zlib: DFLTCC always switch to software inflate for Z_PACKET_FLUSH
    option

 lib/zlib_deflate/deflate.c       | 23 ++++++---
 lib/zlib_dfltcc/dfltcc.c         | 25 ++-------
 lib/zlib_dfltcc/dfltcc.h         | 57 +++++---------------
 lib/zlib_dfltcc/dfltcc_deflate.c | 89 +++++++++++++++++++++-----------
 lib/zlib_dfltcc/dfltcc_deflate.h | 21 ++++++++
 lib/zlib_dfltcc/dfltcc_inflate.c | 24 +++++----
 lib/zlib_dfltcc/dfltcc_inflate.h | 37 +++++++++++++
 lib/zlib_inflate/inflate.c       |  2 +-
 8 files changed, 163 insertions(+), 115 deletions(-)
 create mode 100644 lib/zlib_dfltcc/dfltcc_deflate.h
 create mode 100644 lib/zlib_dfltcc/dfltcc_inflate.h
  

Comments

Andrew Morton Jan. 26, 2023, 11:16 p.m. UTC | #1
On Thu, 26 Jan 2023 14:14:20 +0100 Mikhail Zaslonko <zaslonko@linux.ibm.com> wrote:

> Patches 1-7 represent a set of s390 zlib hardware support (DFLTCC) related fixes
> and enhancements integrated from zlib-ng repo relevant to kernel zlib
> (https://github.com/zlib-ng/zlib-ng).
> Since the official zlib repository never got DFLTCC support code merged, all
> the patches have been picked from zlib-ng fork (zlib data compression library
> for the next generation systems). This repo contains new optimizations and
> fixes not getting implemented into the official zlib repository and falls under
> the same zlib License. All of the original patches from zlib-ng were authored
> by Ilya Leoshkevich <iii@linux.ibm.com>. Coding style has been preserved for
> future maintainability.
> Patches 1-2 should have no effect for the kernel zlib but make the code
> closer to zlib-ng for future maintainability.
> Only Patch 3 touches common zlib_deflate code, other patches are relevant to
> s390 tree only.
> 
> Patch 8 is separate and intends to resolve an issue with kernel PPP driver
> which can use kernel zlib for packet compression. Without this patch PPP
> decompression can fail due to error code returned by hardware (dfltcc_inflate)
> and PPP disables zlib compression for further packets.
> 
> @Andrew, would you pick this patch series yourself (which is totally fine
> with me) or shall we carry it via s390 tree?

I'll grab.  zlib changes are pretty rare, but perhaps someone else will
do something..

> Mikhail Zaslonko (8):
>   lib/zlib: Adjust offset calculation for dfltcc_state
>   lib/zlib: Implement switching between DFLTCC and software
>   lib/zlib: Fix DFLTCC not flushing EOBS when creating raw streams
>   lib/zlib: Fix DFLTCC ignoring flush modes when avail_in == 0
>   lib/zlib: DFLTCC not writing header bits when avail_out == 0
>   lib/zlib: Split deflate and inflate states for DFLTCC
>   lib/zlib: DFLTCC support inflate with small window
>   lib/zlib: DFLTCC always switch to software inflate for Z_PACKET_FLUSH
>     option

Most of these have a github link in lieu of a changelog.  And most of
the github commits are unchangelogged.  That's pretty sad, but the zlib
audience is small and zlib isn't really kernel code anyway, so I guess
we can look the other way.