From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mga07.intel.com ([134.134.136.100]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hOINQ-0003VZ-Uk for ath10k@lists.infradead.org; Wed, 08 May 2019 08:56:38 +0000 From: Jani Nikula Subject: Re: [PATCH v2 4/7] lib/hexdump.c: Replace ascii bool in hex_dump_to_buffer with flags In-Reply-To: <20190508070148.23130-5-alastair@au1.ibm.com> References: <20190508070148.23130-1-alastair@au1.ibm.com> <20190508070148.23130-5-alastair@au1.ibm.com> Date: Wed, 08 May 2019 11:58:34 +0300 Message-ID: <87v9yll3ut.fsf@intel.com> MIME-Version: 1.0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "ath10k" Errors-To: ath10k-bounces+kvalo=adurom.com@lists.infradead.org To: Alastair D'Silva , alastair@d-silva.org Cc: linux-fbdev@vger.kernel.org, Stanislaw Gruszka , Petr Mladek , David Airlie , Joonas Lahtinen , dri-devel@lists.freedesktop.org, devel@driverdev.osuosl.org, linux-scsi@vger.kernel.org, Jassi Brar , ath10k@lists.infradead.org, intel-gfx@lists.freedesktop.org, Dan Carpenter , Jose Abreu , Tom Lendacky , "James E.J. Bottomley" , Steven Rostedt , linux-fsdevel@vger.kernel.org, Alexander Viro , Rodrigo Vivi , Benson Leung , Kalle Valo , Karsten Keil , "Martin K. Petersen" , Greg Kroah-Hartman , linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, Sergey Senozhatsky , David Laight , Daniel Vetter , netdev@vger.kernel.org, Enric Balletbo i Serra , Andrew Morton , "David S. Miller" On Wed, 08 May 2019, Alastair D'Silva wrote: > From: Alastair D'Silva > > In order to support additional features in hex_dump_to_buffer, replace > the ascii bool parameter with flags. > > Signed-off-by: Alastair D'Silva > --- > drivers/gpu/drm/i915/intel_engine_cs.c | 2 +- For i915, Acked-by: Jani Nikula > drivers/isdn/hardware/mISDN/mISDNisar.c | 6 ++++-- > drivers/mailbox/mailbox-test.c | 2 +- > drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 2 +- > drivers/net/ethernet/synopsys/dwc-xlgmac-common.c | 2 +- > drivers/net/wireless/ath/ath10k/debug.c | 3 ++- > drivers/net/wireless/intel/iwlegacy/3945-mac.c | 2 +- > drivers/platform/chrome/wilco_ec/debugfs.c | 2 +- > drivers/scsi/scsi_logging.c | 8 +++----- > drivers/staging/fbtft/fbtft-core.c | 2 +- > fs/seq_file.c | 3 ++- > include/linux/printk.h | 8 ++++---- > lib/hexdump.c | 15 ++++++++------- > lib/test_hexdump.c | 5 +++-- > 14 files changed, 33 insertions(+), 29 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c > index 49fa43ff02ba..fb133e729f9a 100644 > --- a/drivers/gpu/drm/i915/intel_engine_cs.c > +++ b/drivers/gpu/drm/i915/intel_engine_cs.c > @@ -1318,7 +1318,7 @@ static void hexdump(struct drm_printer *m, const void *buf, size_t len) > WARN_ON_ONCE(hex_dump_to_buffer(buf + pos, len - pos, > rowsize, sizeof(u32), > line, sizeof(line), > - false) >= sizeof(line)); > + 0) >= sizeof(line)); > drm_printf(m, "[%04zx] %s\n", pos, line); > > prev = buf + pos; > diff --git a/drivers/isdn/hardware/mISDN/mISDNisar.c b/drivers/isdn/hardware/mISDN/mISDNisar.c > index 386731ec2489..f13f34db6c17 100644 > --- a/drivers/isdn/hardware/mISDN/mISDNisar.c > +++ b/drivers/isdn/hardware/mISDN/mISDNisar.c > @@ -84,7 +84,8 @@ send_mbox(struct isar_hw *isar, u8 his, u8 creg, u8 len, u8 *msg) > > while (l < (int)len) { > hex_dump_to_buffer(msg + l, len - l, 32, 1, > - isar->log, 256, 1); > + isar->log, 256, > + HEXDUMP_ASCII); > pr_debug("%s: %s %02x: %s\n", isar->name, > __func__, l, isar->log); > l += 32; > @@ -113,7 +114,8 @@ rcv_mbox(struct isar_hw *isar, u8 *msg) > > while (l < (int)isar->clsb) { > hex_dump_to_buffer(msg + l, isar->clsb - l, 32, > - 1, isar->log, 256, 1); > + 1, isar->log, 256, > + HEXDUMP_ASCII); > pr_debug("%s: %s %02x: %s\n", isar->name, > __func__, l, isar->log); > l += 32; > diff --git a/drivers/mailbox/mailbox-test.c b/drivers/mailbox/mailbox-test.c > index 4e4ac4be6423..2f9a094d0259 100644 > --- a/drivers/mailbox/mailbox-test.c > +++ b/drivers/mailbox/mailbox-test.c > @@ -213,7 +213,7 @@ static ssize_t mbox_test_message_read(struct file *filp, char __user *userbuf, > hex_dump_to_buffer(ptr, > MBOX_BYTES_PER_LINE, > MBOX_BYTES_PER_LINE, 1, touser + l, > - MBOX_HEXDUMP_LINE_LEN, true); > + MBOX_HEXDUMP_LINE_LEN, HEXDUMP_ASCII); > > ptr += MBOX_BYTES_PER_LINE; > l += MBOX_HEXDUMP_LINE_LEN; > diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c > index 0cc911f928b1..e954a31cee0c 100644 > --- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c > +++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c > @@ -2992,7 +2992,7 @@ void xgbe_print_pkt(struct net_device *netdev, struct sk_buff *skb, bool tx_rx) > unsigned int len = min(skb->len - i, 32U); > > hex_dump_to_buffer(&skb->data[i], len, 32, 1, > - buffer, sizeof(buffer), false); > + buffer, sizeof(buffer), 0); > netdev_dbg(netdev, " %#06x: %s\n", i, buffer); > } > > diff --git a/drivers/net/ethernet/synopsys/dwc-xlgmac-common.c b/drivers/net/ethernet/synopsys/dwc-xlgmac-common.c > index eb1c6b03c329..b80adfa1f890 100644 > --- a/drivers/net/ethernet/synopsys/dwc-xlgmac-common.c > +++ b/drivers/net/ethernet/synopsys/dwc-xlgmac-common.c > @@ -349,7 +349,7 @@ void xlgmac_print_pkt(struct net_device *netdev, > unsigned int len = min(skb->len - i, 32U); > > hex_dump_to_buffer(&skb->data[i], len, 32, 1, > - buffer, sizeof(buffer), false); > + buffer, sizeof(buffer), 0); > netdev_dbg(netdev, " %#06x: %s\n", i, buffer); > } > > diff --git a/drivers/net/wireless/ath/ath10k/debug.c b/drivers/net/wireless/ath/ath10k/debug.c > index 32d967a31c65..4c99ea03226d 100644 > --- a/drivers/net/wireless/ath/ath10k/debug.c > +++ b/drivers/net/wireless/ath/ath10k/debug.c > @@ -2662,7 +2662,8 @@ void ath10k_dbg_dump(struct ath10k *ar, > (unsigned int)(ptr - buf)); > hex_dump_to_buffer(ptr, len - (ptr - buf), 16, 1, > linebuf + linebuflen, > - sizeof(linebuf) - linebuflen, true); > + sizeof(linebuf) - linebuflen, > + HEXDUMP_ASCII); > dev_printk(KERN_DEBUG, ar->dev, "%s\n", linebuf); > } > } > diff --git a/drivers/net/wireless/intel/iwlegacy/3945-mac.c b/drivers/net/wireless/intel/iwlegacy/3945-mac.c > index 271977f7fbb0..acbe26d22c34 100644 > --- a/drivers/net/wireless/intel/iwlegacy/3945-mac.c > +++ b/drivers/net/wireless/intel/iwlegacy/3945-mac.c > @@ -3247,7 +3247,7 @@ il3945_show_measurement(struct device *d, struct device_attribute *attr, > > while (size && PAGE_SIZE - len) { > hex_dump_to_buffer(data + ofs, size, 16, 1, buf + len, > - PAGE_SIZE - len, true); > + PAGE_SIZE - len, HEXDUMP_ASCII); > len = strlen(buf); > if (PAGE_SIZE - len) > buf[len++] = '\n'; > diff --git a/drivers/platform/chrome/wilco_ec/debugfs.c b/drivers/platform/chrome/wilco_ec/debugfs.c > index c090db2cd5be..26d9ae5c2dc2 100644 > --- a/drivers/platform/chrome/wilco_ec/debugfs.c > +++ b/drivers/platform/chrome/wilco_ec/debugfs.c > @@ -174,7 +174,7 @@ static ssize_t raw_read(struct file *file, char __user *user_buf, size_t count, > fmt_len = hex_dump_to_buffer(debug_info->raw_data, > debug_info->response_size, > 16, 1, debug_info->formatted_data, > - FORMATTED_BUFFER_SIZE, true); > + FORMATTED_BUFFER_SIZE, HEXDUMP_ASCII); > /* Only return response the first time it is read */ > debug_info->response_size = 0; > } > diff --git a/drivers/scsi/scsi_logging.c b/drivers/scsi/scsi_logging.c > index bd70339c1242..fce542bb40e6 100644 > --- a/drivers/scsi/scsi_logging.c > +++ b/drivers/scsi/scsi_logging.c > @@ -263,7 +263,7 @@ void scsi_print_command(struct scsi_cmnd *cmd) > "CDB[%02x]: ", k); > hex_dump_to_buffer(&cmd->cmnd[k], linelen, > 16, 1, logbuf + off, > - logbuf_len - off, false); > + logbuf_len - off, 0); > } > dev_printk(KERN_INFO, &cmd->device->sdev_gendev, "%s", > logbuf); > @@ -274,8 +274,7 @@ void scsi_print_command(struct scsi_cmnd *cmd) > if (!WARN_ON(off > logbuf_len - 49)) { > off += scnprintf(logbuf + off, logbuf_len - off, " "); > hex_dump_to_buffer(cmd->cmnd, cmd->cmd_len, 16, 1, > - logbuf + off, logbuf_len - off, > - false); > + logbuf + off, logbuf_len - off, 0); > } > out_printk: > dev_printk(KERN_INFO, &cmd->device->sdev_gendev, "%s", logbuf); > @@ -354,8 +353,7 @@ scsi_log_dump_sense(const struct scsi_device *sdev, const char *name, int tag, > off = sdev_format_header(logbuf, logbuf_len, > name, tag); > hex_dump_to_buffer(&sense_buffer[i], len, 16, 1, > - logbuf + off, logbuf_len - off, > - false); > + logbuf + off, logbuf_len - off, 0); > dev_printk(KERN_INFO, &sdev->sdev_gendev, "%s", logbuf); > } > scsi_log_release_buffer(logbuf); > diff --git a/drivers/staging/fbtft/fbtft-core.c b/drivers/staging/fbtft/fbtft-core.c > index 9b07badf4c6c..2e5df5cc9d61 100644 > --- a/drivers/staging/fbtft/fbtft-core.c > +++ b/drivers/staging/fbtft/fbtft-core.c > @@ -61,7 +61,7 @@ void fbtft_dbg_hex(const struct device *dev, int groupsize, > va_end(args); > > hex_dump_to_buffer(buf, len, 32, groupsize, text + text_len, > - 512 - text_len, false); > + 512 - text_len, 0); > > if (len > 32) > dev_info(dev, "%s ...\n", text); > diff --git a/fs/seq_file.c b/fs/seq_file.c > index 1dea7a8a5255..a0213637af3e 100644 > --- a/fs/seq_file.c > +++ b/fs/seq_file.c > @@ -873,7 +873,8 @@ void seq_hex_dump(struct seq_file *m, const char *prefix_str, int prefix_type, > > size = seq_get_buf(m, &buffer); > ret = hex_dump_to_buffer(ptr + i, linelen, rowsize, groupsize, > - buffer, size, ascii); > + buffer, size, > + ascii ? HEXDUMP_ASCII : 0); > seq_commit(m, ret < size ? ret : -1); > > seq_putc(m, '\n'); > diff --git a/include/linux/printk.h b/include/linux/printk.h > index 938a67580d78..00a82e468643 100644 > --- a/include/linux/printk.h > +++ b/include/linux/printk.h > @@ -480,13 +480,13 @@ enum { > DUMP_PREFIX_OFFSET > }; > > -extern int hex_dump_to_buffer(const void *buf, size_t len, int rowsize, > - int groupsize, char *linebuf, size_t linebuflen, > - bool ascii); > - > #define HEXDUMP_ASCII (1 << 0) > #define HEXDUMP_SUPPRESS_REPEATED (1 << 1) > > +extern int hex_dump_to_buffer(const void *buf, size_t len, int rowsize, > + int groupsize, char *linebuf, size_t linebuflen, > + u64 flags); > + > #ifdef CONFIG_PRINTK > extern void print_hex_dump_ext(const char *level, const char *prefix_str, > int prefix_type, int rowsize, int groupsize, > diff --git a/lib/hexdump.c b/lib/hexdump.c > index d61a1e4f19fa..ddd1697e5f9b 100644 > --- a/lib/hexdump.c > +++ b/lib/hexdump.c > @@ -85,7 +85,8 @@ EXPORT_SYMBOL(bin2hex); > * @groupsize: number of bytes to print at a time (1, 2, 4, 8; default = 1) > * @linebuf: where to put the converted data > * @linebuflen: total size of @linebuf, including space for terminating NUL > - * @ascii: include ASCII after the hex output > + * @flags: A bitwise OR of the following flags: > + * HEXDUMP_ASCII: include ASCII after the hex output > * > * hex_dump_to_buffer() works on one "line" of output at a time, converting > * bytes of input to hexadecimal (and optionally printable ASCII) > @@ -97,7 +98,7 @@ EXPORT_SYMBOL(bin2hex); > * > * E.g.: > * hex_dump_to_buffer(frame->data, frame->len, 16, 1, > - * linebuf, sizeof(linebuf), true); > + * linebuf, sizeof(linebuf), HEXDUMP_ASCII); > * > * example output buffer: > * 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f @ABCDEFGHIJKLMNO > @@ -109,7 +110,7 @@ EXPORT_SYMBOL(bin2hex); > * string if enough space had been available. > */ > int hex_dump_to_buffer(const void *buf, size_t len, int rowsize, int groupsize, > - char *linebuf, size_t linebuflen, bool ascii) > + char *linebuf, size_t linebuflen, u64 flags) > { > const u8 *ptr = buf; > int ngroups; > @@ -187,7 +188,7 @@ int hex_dump_to_buffer(const void *buf, size_t len, int rowsize, int groupsize, > if (j) > lx--; > } > - if (!ascii) > + if (!(flags & HEXDUMP_ASCII)) > goto nil; > > while (lx < ascii_column) { > @@ -207,7 +208,8 @@ int hex_dump_to_buffer(const void *buf, size_t len, int rowsize, int groupsize, > overflow2: > linebuf[lx++] = '\0'; > overflow1: > - return ascii ? ascii_column + len : (groupsize * 2 + 1) * ngroups - 1; > + return (flags & HEXDUMP_ASCII) ? ascii_column + len : > + (groupsize * 2 + 1) * ngroups - 1; > } > EXPORT_SYMBOL(hex_dump_to_buffer); > > @@ -336,8 +338,7 @@ void print_hex_dump_ext(const char *level, const char *prefix_str, > } > > hex_dump_to_buffer(ptr + i, linelen, rowsize, groupsize, > - linebuf, linebuf_len, > - flags & HEXDUMP_ASCII); > + linebuf, linebuf_len, flags); > > switch (prefix_type) { > case DUMP_PREFIX_ADDRESS: > diff --git a/lib/test_hexdump.c b/lib/test_hexdump.c > index 6ab75a209b43..ae340c5c1c6f 100644 > --- a/lib/test_hexdump.c > +++ b/lib/test_hexdump.c > @@ -166,7 +166,7 @@ static void __init test_hexdump(size_t len, int rowsize, int groupsize, > > memset(real, FILL_CHAR, sizeof(real)); > hex_dump_to_buffer(data_b, len, rowsize, groupsize, real, sizeof(real), > - ascii); > + ascii ? HEXDUMP_ASCII : 0); > > memset(test, FILL_CHAR, sizeof(test)); > test_hexdump_prepare_test(len, rowsize, groupsize, test, sizeof(test), > @@ -204,7 +204,8 @@ static void __init test_hexdump_overflow(size_t buflen, size_t len, > > memset(buf, FILL_CHAR, sizeof(buf)); > > - rc = hex_dump_to_buffer(data_b, len, rowsize, groupsize, buf, buflen, ascii); > + rc = hex_dump_to_buffer(data_b, len, rowsize, groupsize, buf, buflen, > + ascii ? HEXDUMP_ASCII : 0); > > /* > * Caller must provide the data length multiple of groupsize. The -- Jani Nikula, Intel Open Source Graphics Center _______________________________________________ ath10k mailing list ath10k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath10k From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Date: Wed, 08 May 2019 08:58:34 +0000 Subject: Re: [PATCH v2 4/7] lib/hexdump.c: Replace ascii bool in hex_dump_to_buffer with flags Message-Id: <87v9yll3ut.fsf@intel.com> List-Id: References: <20190508070148.23130-1-alastair@au1.ibm.com> <20190508070148.23130-5-alastair@au1.ibm.com> In-Reply-To: <20190508070148.23130-5-alastair@au1.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Alastair D'Silva , alastair@d-silva.org Cc: linux-fbdev@vger.kernel.org, Stanislaw Gruszka , Petr Mladek , David Airlie , dri-devel@lists.freedesktop.org, devel@driverdev.osuosl.org, linux-scsi@vger.kernel.org, Jassi Brar , ath10k@lists.infradead.org, intel-gfx@lists.freedesktop.org, Dan Carpenter , Jose Abreu , Tom Lendacky , "James E.J. Bottomley" , Steven Rostedt , linux-fsdevel@vger.kernel.org, Alexander Viro , Kalle Valo , Karsten Keil , "Martin K. Petersen" , Greg Kroah-Hartman , linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, Sergey Senozhatsky On Wed, 08 May 2019, Alastair D'Silva wrote: > From: Alastair D'Silva > > In order to support additional features in hex_dump_to_buffer, replace > the ascii bool parameter with flags. > > Signed-off-by: Alastair D'Silva > --- > drivers/gpu/drm/i915/intel_engine_cs.c | 2 +- For i915, Acked-by: Jani Nikula > drivers/isdn/hardware/mISDN/mISDNisar.c | 6 ++++-- > drivers/mailbox/mailbox-test.c | 2 +- > drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 2 +- > drivers/net/ethernet/synopsys/dwc-xlgmac-common.c | 2 +- > drivers/net/wireless/ath/ath10k/debug.c | 3 ++- > drivers/net/wireless/intel/iwlegacy/3945-mac.c | 2 +- > drivers/platform/chrome/wilco_ec/debugfs.c | 2 +- > drivers/scsi/scsi_logging.c | 8 +++----- > drivers/staging/fbtft/fbtft-core.c | 2 +- > fs/seq_file.c | 3 ++- > include/linux/printk.h | 8 ++++---- > lib/hexdump.c | 15 ++++++++------- > lib/test_hexdump.c | 5 +++-- > 14 files changed, 33 insertions(+), 29 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c > index 49fa43ff02ba..fb133e729f9a 100644 > --- a/drivers/gpu/drm/i915/intel_engine_cs.c > +++ b/drivers/gpu/drm/i915/intel_engine_cs.c > @@ -1318,7 +1318,7 @@ static void hexdump(struct drm_printer *m, const void *buf, size_t len) > WARN_ON_ONCE(hex_dump_to_buffer(buf + pos, len - pos, > rowsize, sizeof(u32), > line, sizeof(line), > - false) >= sizeof(line)); > + 0) >= sizeof(line)); > drm_printf(m, "[%04zx] %s\n", pos, line); > > prev = buf + pos; > diff --git a/drivers/isdn/hardware/mISDN/mISDNisar.c b/drivers/isdn/hardware/mISDN/mISDNisar.c > index 386731ec2489..f13f34db6c17 100644 > --- a/drivers/isdn/hardware/mISDN/mISDNisar.c > +++ b/drivers/isdn/hardware/mISDN/mISDNisar.c > @@ -84,7 +84,8 @@ send_mbox(struct isar_hw *isar, u8 his, u8 creg, u8 len, u8 *msg) > > while (l < (int)len) { > hex_dump_to_buffer(msg + l, len - l, 32, 1, > - isar->log, 256, 1); > + isar->log, 256, > + HEXDUMP_ASCII); > pr_debug("%s: %s %02x: %s\n", isar->name, > __func__, l, isar->log); > l += 32; > @@ -113,7 +114,8 @@ rcv_mbox(struct isar_hw *isar, u8 *msg) > > while (l < (int)isar->clsb) { > hex_dump_to_buffer(msg + l, isar->clsb - l, 32, > - 1, isar->log, 256, 1); > + 1, isar->log, 256, > + HEXDUMP_ASCII); > pr_debug("%s: %s %02x: %s\n", isar->name, > __func__, l, isar->log); > l += 32; > diff --git a/drivers/mailbox/mailbox-test.c b/drivers/mailbox/mailbox-test.c > index 4e4ac4be6423..2f9a094d0259 100644 > --- a/drivers/mailbox/mailbox-test.c > +++ b/drivers/mailbox/mailbox-test.c > @@ -213,7 +213,7 @@ static ssize_t mbox_test_message_read(struct file *filp, char __user *userbuf, > hex_dump_to_buffer(ptr, > MBOX_BYTES_PER_LINE, > MBOX_BYTES_PER_LINE, 1, touser + l, > - MBOX_HEXDUMP_LINE_LEN, true); > + MBOX_HEXDUMP_LINE_LEN, HEXDUMP_ASCII); > > ptr += MBOX_BYTES_PER_LINE; > l += MBOX_HEXDUMP_LINE_LEN; > diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c > index 0cc911f928b1..e954a31cee0c 100644 > --- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c > +++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c > @@ -2992,7 +2992,7 @@ void xgbe_print_pkt(struct net_device *netdev, struct sk_buff *skb, bool tx_rx) > unsigned int len = min(skb->len - i, 32U); > > hex_dump_to_buffer(&skb->data[i], len, 32, 1, > - buffer, sizeof(buffer), false); > + buffer, sizeof(buffer), 0); > netdev_dbg(netdev, " %#06x: %s\n", i, buffer); > } > > diff --git a/drivers/net/ethernet/synopsys/dwc-xlgmac-common.c b/drivers/net/ethernet/synopsys/dwc-xlgmac-common.c > index eb1c6b03c329..b80adfa1f890 100644 > --- a/drivers/net/ethernet/synopsys/dwc-xlgmac-common.c > +++ b/drivers/net/ethernet/synopsys/dwc-xlgmac-common.c > @@ -349,7 +349,7 @@ void xlgmac_print_pkt(struct net_device *netdev, > unsigned int len = min(skb->len - i, 32U); > > hex_dump_to_buffer(&skb->data[i], len, 32, 1, > - buffer, sizeof(buffer), false); > + buffer, sizeof(buffer), 0); > netdev_dbg(netdev, " %#06x: %s\n", i, buffer); > } > > diff --git a/drivers/net/wireless/ath/ath10k/debug.c b/drivers/net/wireless/ath/ath10k/debug.c > index 32d967a31c65..4c99ea03226d 100644 > --- a/drivers/net/wireless/ath/ath10k/debug.c > +++ b/drivers/net/wireless/ath/ath10k/debug.c > @@ -2662,7 +2662,8 @@ void ath10k_dbg_dump(struct ath10k *ar, > (unsigned int)(ptr - buf)); > hex_dump_to_buffer(ptr, len - (ptr - buf), 16, 1, > linebuf + linebuflen, > - sizeof(linebuf) - linebuflen, true); > + sizeof(linebuf) - linebuflen, > + HEXDUMP_ASCII); > dev_printk(KERN_DEBUG, ar->dev, "%s\n", linebuf); > } > } > diff --git a/drivers/net/wireless/intel/iwlegacy/3945-mac.c b/drivers/net/wireless/intel/iwlegacy/3945-mac.c > index 271977f7fbb0..acbe26d22c34 100644 > --- a/drivers/net/wireless/intel/iwlegacy/3945-mac.c > +++ b/drivers/net/wireless/intel/iwlegacy/3945-mac.c > @@ -3247,7 +3247,7 @@ il3945_show_measurement(struct device *d, struct device_attribute *attr, > > while (size && PAGE_SIZE - len) { > hex_dump_to_buffer(data + ofs, size, 16, 1, buf + len, > - PAGE_SIZE - len, true); > + PAGE_SIZE - len, HEXDUMP_ASCII); > len = strlen(buf); > if (PAGE_SIZE - len) > buf[len++] = '\n'; > diff --git a/drivers/platform/chrome/wilco_ec/debugfs.c b/drivers/platform/chrome/wilco_ec/debugfs.c > index c090db2cd5be..26d9ae5c2dc2 100644 > --- a/drivers/platform/chrome/wilco_ec/debugfs.c > +++ b/drivers/platform/chrome/wilco_ec/debugfs.c > @@ -174,7 +174,7 @@ static ssize_t raw_read(struct file *file, char __user *user_buf, size_t count, > fmt_len = hex_dump_to_buffer(debug_info->raw_data, > debug_info->response_size, > 16, 1, debug_info->formatted_data, > - FORMATTED_BUFFER_SIZE, true); > + FORMATTED_BUFFER_SIZE, HEXDUMP_ASCII); > /* Only return response the first time it is read */ > debug_info->response_size = 0; > } > diff --git a/drivers/scsi/scsi_logging.c b/drivers/scsi/scsi_logging.c > index bd70339c1242..fce542bb40e6 100644 > --- a/drivers/scsi/scsi_logging.c > +++ b/drivers/scsi/scsi_logging.c > @@ -263,7 +263,7 @@ void scsi_print_command(struct scsi_cmnd *cmd) > "CDB[%02x]: ", k); > hex_dump_to_buffer(&cmd->cmnd[k], linelen, > 16, 1, logbuf + off, > - logbuf_len - off, false); > + logbuf_len - off, 0); > } > dev_printk(KERN_INFO, &cmd->device->sdev_gendev, "%s", > logbuf); > @@ -274,8 +274,7 @@ void scsi_print_command(struct scsi_cmnd *cmd) > if (!WARN_ON(off > logbuf_len - 49)) { > off += scnprintf(logbuf + off, logbuf_len - off, " "); > hex_dump_to_buffer(cmd->cmnd, cmd->cmd_len, 16, 1, > - logbuf + off, logbuf_len - off, > - false); > + logbuf + off, logbuf_len - off, 0); > } > out_printk: > dev_printk(KERN_INFO, &cmd->device->sdev_gendev, "%s", logbuf); > @@ -354,8 +353,7 @@ scsi_log_dump_sense(const struct scsi_device *sdev, const char *name, int tag, > off = sdev_format_header(logbuf, logbuf_len, > name, tag); > hex_dump_to_buffer(&sense_buffer[i], len, 16, 1, > - logbuf + off, logbuf_len - off, > - false); > + logbuf + off, logbuf_len - off, 0); > dev_printk(KERN_INFO, &sdev->sdev_gendev, "%s", logbuf); > } > scsi_log_release_buffer(logbuf); > diff --git a/drivers/staging/fbtft/fbtft-core.c b/drivers/staging/fbtft/fbtft-core.c > index 9b07badf4c6c..2e5df5cc9d61 100644 > --- a/drivers/staging/fbtft/fbtft-core.c > +++ b/drivers/staging/fbtft/fbtft-core.c > @@ -61,7 +61,7 @@ void fbtft_dbg_hex(const struct device *dev, int groupsize, > va_end(args); > > hex_dump_to_buffer(buf, len, 32, groupsize, text + text_len, > - 512 - text_len, false); > + 512 - text_len, 0); > > if (len > 32) > dev_info(dev, "%s ...\n", text); > diff --git a/fs/seq_file.c b/fs/seq_file.c > index 1dea7a8a5255..a0213637af3e 100644 > --- a/fs/seq_file.c > +++ b/fs/seq_file.c > @@ -873,7 +873,8 @@ void seq_hex_dump(struct seq_file *m, const char *prefix_str, int prefix_type, > > size = seq_get_buf(m, &buffer); > ret = hex_dump_to_buffer(ptr + i, linelen, rowsize, groupsize, > - buffer, size, ascii); > + buffer, size, > + ascii ? HEXDUMP_ASCII : 0); > seq_commit(m, ret < size ? ret : -1); > > seq_putc(m, '\n'); > diff --git a/include/linux/printk.h b/include/linux/printk.h > index 938a67580d78..00a82e468643 100644 > --- a/include/linux/printk.h > +++ b/include/linux/printk.h > @@ -480,13 +480,13 @@ enum { > DUMP_PREFIX_OFFSET > }; > > -extern int hex_dump_to_buffer(const void *buf, size_t len, int rowsize, > - int groupsize, char *linebuf, size_t linebuflen, > - bool ascii); > - > #define HEXDUMP_ASCII (1 << 0) > #define HEXDUMP_SUPPRESS_REPEATED (1 << 1) > > +extern int hex_dump_to_buffer(const void *buf, size_t len, int rowsize, > + int groupsize, char *linebuf, size_t linebuflen, > + u64 flags); > + > #ifdef CONFIG_PRINTK > extern void print_hex_dump_ext(const char *level, const char *prefix_str, > int prefix_type, int rowsize, int groupsize, > diff --git a/lib/hexdump.c b/lib/hexdump.c > index d61a1e4f19fa..ddd1697e5f9b 100644 > --- a/lib/hexdump.c > +++ b/lib/hexdump.c > @@ -85,7 +85,8 @@ EXPORT_SYMBOL(bin2hex); > * @groupsize: number of bytes to print at a time (1, 2, 4, 8; default = 1) > * @linebuf: where to put the converted data > * @linebuflen: total size of @linebuf, including space for terminating NUL > - * @ascii: include ASCII after the hex output > + * @flags: A bitwise OR of the following flags: > + * HEXDUMP_ASCII: include ASCII after the hex output > * > * hex_dump_to_buffer() works on one "line" of output at a time, converting > * bytes of input to hexadecimal (and optionally printable ASCII) > @@ -97,7 +98,7 @@ EXPORT_SYMBOL(bin2hex); > * > * E.g.: > * hex_dump_to_buffer(frame->data, frame->len, 16, 1, > - * linebuf, sizeof(linebuf), true); > + * linebuf, sizeof(linebuf), HEXDUMP_ASCII); > * > * example output buffer: > * 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f @ABCDEFGHIJKLMNO > @@ -109,7 +110,7 @@ EXPORT_SYMBOL(bin2hex); > * string if enough space had been available. > */ > int hex_dump_to_buffer(const void *buf, size_t len, int rowsize, int groupsize, > - char *linebuf, size_t linebuflen, bool ascii) > + char *linebuf, size_t linebuflen, u64 flags) > { > const u8 *ptr = buf; > int ngroups; > @@ -187,7 +188,7 @@ int hex_dump_to_buffer(const void *buf, size_t len, int rowsize, int groupsize, > if (j) > lx--; > } > - if (!ascii) > + if (!(flags & HEXDUMP_ASCII)) > goto nil; > > while (lx < ascii_column) { > @@ -207,7 +208,8 @@ int hex_dump_to_buffer(const void *buf, size_t len, int rowsize, int groupsize, > overflow2: > linebuf[lx++] = '\0'; > overflow1: > - return ascii ? ascii_column + len : (groupsize * 2 + 1) * ngroups - 1; > + return (flags & HEXDUMP_ASCII) ? ascii_column + len : > + (groupsize * 2 + 1) * ngroups - 1; > } > EXPORT_SYMBOL(hex_dump_to_buffer); > > @@ -336,8 +338,7 @@ void print_hex_dump_ext(const char *level, const char *prefix_str, > } > > hex_dump_to_buffer(ptr + i, linelen, rowsize, groupsize, > - linebuf, linebuf_len, > - flags & HEXDUMP_ASCII); > + linebuf, linebuf_len, flags); > > switch (prefix_type) { > case DUMP_PREFIX_ADDRESS: > diff --git a/lib/test_hexdump.c b/lib/test_hexdump.c > index 6ab75a209b43..ae340c5c1c6f 100644 > --- a/lib/test_hexdump.c > +++ b/lib/test_hexdump.c > @@ -166,7 +166,7 @@ static void __init test_hexdump(size_t len, int rowsize, int groupsize, > > memset(real, FILL_CHAR, sizeof(real)); > hex_dump_to_buffer(data_b, len, rowsize, groupsize, real, sizeof(real), > - ascii); > + ascii ? HEXDUMP_ASCII : 0); > > memset(test, FILL_CHAR, sizeof(test)); > test_hexdump_prepare_test(len, rowsize, groupsize, test, sizeof(test), > @@ -204,7 +204,8 @@ static void __init test_hexdump_overflow(size_t buflen, size_t len, > > memset(buf, FILL_CHAR, sizeof(buf)); > > - rc = hex_dump_to_buffer(data_b, len, rowsize, groupsize, buf, buflen, ascii); > + rc = hex_dump_to_buffer(data_b, len, rowsize, groupsize, buf, buflen, > + ascii ? HEXDUMP_ASCII : 0); > > /* > * Caller must provide the data length multiple of groupsize. The -- Jani Nikula, Intel Open Source Graphics Center From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v2 4/7] lib/hexdump.c: Replace ascii bool in hex_dump_to_buffer with flags Date: Wed, 08 May 2019 11:58:34 +0300 Message-ID: <87v9yll3ut.fsf@intel.com> References: <20190508070148.23130-1-alastair@au1.ibm.com> <20190508070148.23130-5-alastair@au1.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190508070148.23130-5-alastair@au1.ibm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Alastair D'Silva , alastair@d-silva.org Cc: linux-fbdev@vger.kernel.org, Stanislaw Gruszka , Petr Mladek , David Airlie , dri-devel@lists.freedesktop.org, devel@driverdev.osuosl.org, linux-scsi@vger.kernel.org, Jassi Brar , ath10k@lists.infradead.org, intel-gfx@lists.freedesktop.org, Dan Carpenter , Jose Abreu , Tom Lendacky , "James E.J. Bottomley" , Steven Rostedt , linux-fsdevel@vger.kernel.org, Alexander Viro , Kalle Valo , Karsten Keil , "Martin K. Petersen" , Greg Kroah-Hartman , linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, Sergey Senozhatsky List-Id: linux-scsi@vger.kernel.org T24gV2VkLCAwOCBNYXkgMjAxOSwgQWxhc3RhaXIgRCdTaWx2YSA8YWxhc3RhaXJAYXUxLmlibS5j b20+IHdyb3RlOgo+IEZyb206IEFsYXN0YWlyIEQnU2lsdmEgPGFsYXN0YWlyQGQtc2lsdmEub3Jn Pgo+Cj4gSW4gb3JkZXIgdG8gc3VwcG9ydCBhZGRpdGlvbmFsIGZlYXR1cmVzIGluIGhleF9kdW1w X3RvX2J1ZmZlciwgcmVwbGFjZQo+IHRoZSBhc2NpaSBib29sIHBhcmFtZXRlciB3aXRoIGZsYWdz Lgo+Cj4gU2lnbmVkLW9mZi1ieTogQWxhc3RhaXIgRCdTaWx2YSA8YWxhc3RhaXJAZC1zaWx2YS5v cmc+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jICAgICAg ICAgICAgfCAgMiArLQoKRm9yIGk5MTUsCgpBY2tlZC1ieTogSmFuaSBOaWt1bGEgPGphbmkubmlr dWxhQGludGVsLmNvbT4KCj4gIGRyaXZlcnMvaXNkbi9oYXJkd2FyZS9tSVNETi9tSVNETmlzYXIu YyAgICAgICAgICAgfCAgNiArKysrLS0KPiAgZHJpdmVycy9tYWlsYm94L21haWxib3gtdGVzdC5j ICAgICAgICAgICAgICAgICAgICB8ICAyICstCj4gIGRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94 Z2JlL3hnYmUtZHJ2LmMgICAgICAgICAgfCAgMiArLQo+ICBkcml2ZXJzL25ldC9ldGhlcm5ldC9z eW5vcHN5cy9kd2MteGxnbWFjLWNvbW1vbi5jIHwgIDIgKy0KPiAgZHJpdmVycy9uZXQvd2lyZWxl c3MvYXRoL2F0aDEway9kZWJ1Zy5jICAgICAgICAgICB8ICAzICsrLQo+ICBkcml2ZXJzL25ldC93 aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS8zOTQ1LW1hYy5jICAgIHwgIDIgKy0KPiAgZHJpdmVycy9w bGF0Zm9ybS9jaHJvbWUvd2lsY29fZWMvZGVidWdmcy5jICAgICAgICB8ICAyICstCj4gIGRyaXZl cnMvc2NzaS9zY3NpX2xvZ2dpbmcuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgOCArKystLS0t LQo+ICBkcml2ZXJzL3N0YWdpbmcvZmJ0ZnQvZmJ0ZnQtY29yZS5jICAgICAgICAgICAgICAgIHwg IDIgKy0KPiAgZnMvc2VxX2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAzICsrLQo+ICBpbmNsdWRlL2xpbnV4L3ByaW50ay5oICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDggKysrKy0tLS0KPiAgbGliL2hleGR1bXAuYyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IDE1ICsrKysrKysrLS0tLS0tLQo+ICBsaWIvdGVzdF9oZXhkdW1w LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUgKysrLS0KPiAgMTQgZmlsZXMg Y2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+IGluZGV4IDQ5ZmE0M2ZmMDJiYS4uZmIxMzNlNzI5 ZjlhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPiBAQCAtMTMx OCw3ICsxMzE4LDcgQEAgc3RhdGljIHZvaWQgaGV4ZHVtcChzdHJ1Y3QgZHJtX3ByaW50ZXIgKm0s IGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbikKPiAgCQlXQVJOX09OX09OQ0UoaGV4X2R1bXBf dG9fYnVmZmVyKGJ1ZiArIHBvcywgbGVuIC0gcG9zLAo+ICAJCQkJCQlyb3dzaXplLCBzaXplb2Yo dTMyKSwKPiAgCQkJCQkJbGluZSwgc2l6ZW9mKGxpbmUpLAo+IC0JCQkJCQlmYWxzZSkgPj0gc2l6 ZW9mKGxpbmUpKTsKPiArCQkJCQkJMCkgPj0gc2l6ZW9mKGxpbmUpKTsKPiAgCQlkcm1fcHJpbnRm KG0sICJbJTA0enhdICVzXG4iLCBwb3MsIGxpbmUpOwo+ICAKPiAgCQlwcmV2ID0gYnVmICsgcG9z Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvbUlTRE4vbUlTRE5pc2FyLmMg Yi9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvbUlTRE4vbUlTRE5pc2FyLmMKPiBpbmRleCAzODY3MzFl YzI0ODkuLmYxM2YzNGRiNmMxNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lzZG4vaGFyZHdhcmUv bUlTRE4vbUlTRE5pc2FyLmMKPiArKysgYi9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvbUlTRE4vbUlT RE5pc2FyLmMKPiBAQCAtODQsNyArODQsOCBAQCBzZW5kX21ib3goc3RydWN0IGlzYXJfaHcgKmlz YXIsIHU4IGhpcywgdTggY3JlZywgdTggbGVuLCB1OCAqbXNnKQo+ICAKPiAgCQkJd2hpbGUgKGwg PCAoaW50KWxlbikgewo+ICAJCQkJaGV4X2R1bXBfdG9fYnVmZmVyKG1zZyArIGwsIGxlbiAtIGws IDMyLCAxLAo+IC0JCQkJCQkgICBpc2FyLT5sb2csIDI1NiwgMSk7Cj4gKwkJCQkJCSAgIGlzYXIt PmxvZywgMjU2LAo+ICsJCQkJCQkgICBIRVhEVU1QX0FTQ0lJKTsKPiAgCQkJCXByX2RlYnVnKCIl czogJXMgJTAyeDogJXNcbiIsIGlzYXItPm5hbWUsCj4gIAkJCQkJIF9fZnVuY19fLCBsLCBpc2Fy LT5sb2cpOwo+ICAJCQkJbCArPSAzMjsKPiBAQCAtMTEzLDcgKzExNCw4IEBAIHJjdl9tYm94KHN0 cnVjdCBpc2FyX2h3ICppc2FyLCB1OCAqbXNnKQo+ICAKPiAgCQkJd2hpbGUgKGwgPCAoaW50KWlz YXItPmNsc2IpIHsKPiAgCQkJCWhleF9kdW1wX3RvX2J1ZmZlcihtc2cgKyBsLCBpc2FyLT5jbHNi IC0gbCwgMzIsCj4gLQkJCQkJCSAgIDEsIGlzYXItPmxvZywgMjU2LCAxKTsKPiArCQkJCQkJICAg MSwgaXNhci0+bG9nLCAyNTYsCj4gKwkJCQkJCSAgIEhFWERVTVBfQVNDSUkpOwo+ICAJCQkJcHJf ZGVidWcoIiVzOiAlcyAlMDJ4OiAlc1xuIiwgaXNhci0+bmFtZSwKPiAgCQkJCQkgX19mdW5jX18s IGwsIGlzYXItPmxvZyk7Cj4gIAkJCQlsICs9IDMyOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21h aWxib3gvbWFpbGJveC10ZXN0LmMgYi9kcml2ZXJzL21haWxib3gvbWFpbGJveC10ZXN0LmMKPiBp bmRleCA0ZTRhYzRiZTY0MjMuLjJmOWEwOTRkMDI1OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21h aWxib3gvbWFpbGJveC10ZXN0LmMKPiArKysgYi9kcml2ZXJzL21haWxib3gvbWFpbGJveC10ZXN0 LmMKPiBAQCAtMjEzLDcgKzIxMyw3IEBAIHN0YXRpYyBzc2l6ZV90IG1ib3hfdGVzdF9tZXNzYWdl X3JlYWQoc3RydWN0IGZpbGUgKmZpbHAsIGNoYXIgX191c2VyICp1c2VyYnVmLAo+ICAJCWhleF9k dW1wX3RvX2J1ZmZlcihwdHIsCj4gIAkJCQkgICBNQk9YX0JZVEVTX1BFUl9MSU5FLAo+ICAJCQkJ ICAgTUJPWF9CWVRFU19QRVJfTElORSwgMSwgdG91c2VyICsgbCwKPiAtCQkJCSAgIE1CT1hfSEVY RFVNUF9MSU5FX0xFTiwgdHJ1ZSk7Cj4gKwkJCQkgICBNQk9YX0hFWERVTVBfTElORV9MRU4sIEhF WERVTVBfQVNDSUkpOwo+ICAKPiAgCQlwdHIgKz0gTUJPWF9CWVRFU19QRVJfTElORTsKPiAgCQls ICs9IE1CT1hfSEVYRFVNUF9MSU5FX0xFTjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRo ZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2Jl L3hnYmUtZHJ2LmMKPiBpbmRleCAwY2M5MTFmOTI4YjEuLmU5NTRhMzFjZWUwYyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jCj4gKysrIGIvZHJp dmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYwo+IEBAIC0yOTkyLDcgKzI5OTIs NyBAQCB2b2lkIHhnYmVfcHJpbnRfcGt0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHN0cnVj dCBza19idWZmICpza2IsIGJvb2wgdHhfcngpCj4gIAkJdW5zaWduZWQgaW50IGxlbiA9IG1pbihz a2ItPmxlbiAtIGksIDMyVSk7Cj4gIAo+ICAJCWhleF9kdW1wX3RvX2J1ZmZlcigmc2tiLT5kYXRh W2ldLCBsZW4sIDMyLCAxLAo+IC0JCQkJICAgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgZmFsc2Up Owo+ICsJCQkJICAgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgMCk7Cj4gIAkJbmV0ZGV2X2RiZyhu ZXRkZXYsICIgICUjMDZ4OiAlc1xuIiwgaSwgYnVmZmVyKTsKPiAgCX0KPiAgCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N5bm9wc3lzL2R3Yy14bGdtYWMtY29tbW9uLmMgYi9k cml2ZXJzL25ldC9ldGhlcm5ldC9zeW5vcHN5cy9kd2MteGxnbWFjLWNvbW1vbi5jCj4gaW5kZXgg ZWIxYzZiMDNjMzI5Li5iODBhZGZhMWY4OTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9uZXQvZXRo ZXJuZXQvc3lub3BzeXMvZHdjLXhsZ21hYy1jb21tb24uYwo+ICsrKyBiL2RyaXZlcnMvbmV0L2V0 aGVybmV0L3N5bm9wc3lzL2R3Yy14bGdtYWMtY29tbW9uLmMKPiBAQCAtMzQ5LDcgKzM0OSw3IEBA IHZvaWQgeGxnbWFjX3ByaW50X3BrdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAo+ICAJCXVu c2lnbmVkIGludCBsZW4gPSBtaW4oc2tiLT5sZW4gLSBpLCAzMlUpOwo+ICAKPiAgCQloZXhfZHVt cF90b19idWZmZXIoJnNrYi0+ZGF0YVtpXSwgbGVuLCAzMiwgMSwKPiAtCQkJCSAgIGJ1ZmZlciwg c2l6ZW9mKGJ1ZmZlciksIGZhbHNlKTsKPiArCQkJCSAgIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciks IDApOwo+ICAJCW5ldGRldl9kYmcobmV0ZGV2LCAiICAlIzA2eDogJXNcbiIsIGksIGJ1ZmZlcik7 Cj4gIAl9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBr L2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMKPiBpbmRl eCAzMmQ5NjdhMzFjNjUuLjRjOTllYTAzMjI2ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL25ldC93 aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMKPiArKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9h dGgvYXRoMTBrL2RlYnVnLmMKPiBAQCAtMjY2Miw3ICsyNjYyLDggQEAgdm9pZCBhdGgxMGtfZGJn X2R1bXAoc3RydWN0IGF0aDEwayAqYXIsCj4gIAkJCQkJCSh1bnNpZ25lZCBpbnQpKHB0ciAtIGJ1 ZikpOwo+ICAJCQloZXhfZHVtcF90b19idWZmZXIocHRyLCBsZW4gLSAocHRyIC0gYnVmKSwgMTYs IDEsCj4gIAkJCQkJICAgbGluZWJ1ZiArIGxpbmVidWZsZW4sCj4gLQkJCQkJICAgc2l6ZW9mKGxp bmVidWYpIC0gbGluZWJ1ZmxlbiwgdHJ1ZSk7Cj4gKwkJCQkJICAgc2l6ZW9mKGxpbmVidWYpIC0g bGluZWJ1ZmxlbiwKPiArCQkJCQkgICBIRVhEVU1QX0FTQ0lJKTsKPiAgCQkJZGV2X3ByaW50ayhL RVJOX0RFQlVHLCBhci0+ZGV2LCAiJXNcbiIsIGxpbmVidWYpOwo+ICAJCX0KPiAgCX0KPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvMzk0NS1tYWMuYyBi L2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtbWFjLmMKPiBpbmRleCAy NzE5NzdmN2ZiYjAuLmFjYmUyNmQyMmMzNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL25ldC93aXJl bGVzcy9pbnRlbC9pd2xlZ2FjeS8zOTQ1LW1hYy5jCj4gKysrIGIvZHJpdmVycy9uZXQvd2lyZWxl c3MvaW50ZWwvaXdsZWdhY3kvMzk0NS1tYWMuYwo+IEBAIC0zMjQ3LDcgKzMyNDcsNyBAQCBpbDM5 NDVfc2hvd19tZWFzdXJlbWVudChzdHJ1Y3QgZGV2aWNlICpkLCBzdHJ1Y3QgZGV2aWNlX2F0dHJp YnV0ZSAqYXR0ciwKPiAgCj4gIAl3aGlsZSAoc2l6ZSAmJiBQQUdFX1NJWkUgLSBsZW4pIHsKPiAg CQloZXhfZHVtcF90b19idWZmZXIoZGF0YSArIG9mcywgc2l6ZSwgMTYsIDEsIGJ1ZiArIGxlbiwK PiAtCQkJCSAgIFBBR0VfU0laRSAtIGxlbiwgdHJ1ZSk7Cj4gKwkJCQkgICBQQUdFX1NJWkUgLSBs ZW4sIEhFWERVTVBfQVNDSUkpOwo+ICAJCWxlbiA9IHN0cmxlbihidWYpOwo+ICAJCWlmIChQQUdF X1NJWkUgLSBsZW4pCj4gIAkJCWJ1ZltsZW4rK10gPSAnXG4nOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL3BsYXRmb3JtL2Nocm9tZS93aWxjb19lYy9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL3BsYXRmb3Jt L2Nocm9tZS93aWxjb19lYy9kZWJ1Z2ZzLmMKPiBpbmRleCBjMDkwZGIyY2Q1YmUuLjI2ZDlhZTVj MmRjMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3BsYXRmb3JtL2Nocm9tZS93aWxjb19lYy9kZWJ1 Z2ZzLmMKPiArKysgYi9kcml2ZXJzL3BsYXRmb3JtL2Nocm9tZS93aWxjb19lYy9kZWJ1Z2ZzLmMK PiBAQCAtMTc0LDcgKzE3NCw3IEBAIHN0YXRpYyBzc2l6ZV90IHJhd19yZWFkKHN0cnVjdCBmaWxl ICpmaWxlLCBjaGFyIF9fdXNlciAqdXNlcl9idWYsIHNpemVfdCBjb3VudCwKPiAgCQlmbXRfbGVu ID0gaGV4X2R1bXBfdG9fYnVmZmVyKGRlYnVnX2luZm8tPnJhd19kYXRhLAo+ICAJCQkJCSAgICAg ZGVidWdfaW5mby0+cmVzcG9uc2Vfc2l6ZSwKPiAgCQkJCQkgICAgIDE2LCAxLCBkZWJ1Z19pbmZv LT5mb3JtYXR0ZWRfZGF0YSwKPiAtCQkJCQkgICAgIEZPUk1BVFRFRF9CVUZGRVJfU0laRSwgdHJ1 ZSk7Cj4gKwkJCQkJICAgICBGT1JNQVRURURfQlVGRkVSX1NJWkUsIEhFWERVTVBfQVNDSUkpOwo+ ICAJCS8qIE9ubHkgcmV0dXJuIHJlc3BvbnNlIHRoZSBmaXJzdCB0aW1lIGl0IGlzIHJlYWQgKi8K PiAgCQlkZWJ1Z19pbmZvLT5yZXNwb25zZV9zaXplID0gMDsKPiAgCX0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9zY3NpL3Njc2lfbG9nZ2luZy5jIGIvZHJpdmVycy9zY3NpL3Njc2lfbG9nZ2luZy5j Cj4gaW5kZXggYmQ3MDMzOWMxMjQyLi5mY2U1NDJiYjQwZTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9zY3NpL3Njc2lfbG9nZ2luZy5jCj4gKysrIGIvZHJpdmVycy9zY3NpL3Njc2lfbG9nZ2luZy5j Cj4gQEAgLTI2Myw3ICsyNjMsNyBAQCB2b2lkIHNjc2lfcHJpbnRfY29tbWFuZChzdHJ1Y3Qgc2Nz aV9jbW5kICpjbWQpCj4gIAkJCQkJCSAiQ0RCWyUwMnhdOiAiLCBrKTsKPiAgCQkJCWhleF9kdW1w X3RvX2J1ZmZlcigmY21kLT5jbW5kW2tdLCBsaW5lbGVuLAo+ICAJCQkJCQkgICAxNiwgMSwgbG9n YnVmICsgb2ZmLAo+IC0JCQkJCQkgICBsb2didWZfbGVuIC0gb2ZmLCBmYWxzZSk7Cj4gKwkJCQkJ CSAgIGxvZ2J1Zl9sZW4gLSBvZmYsIDApOwo+ICAJCQl9Cj4gIAkJCWRldl9wcmludGsoS0VSTl9J TkZPLCAmY21kLT5kZXZpY2UtPnNkZXZfZ2VuZGV2LCAiJXMiLAo+ICAJCQkJICAgbG9nYnVmKTsK PiBAQCAtMjc0LDggKzI3NCw3IEBAIHZvaWQgc2NzaV9wcmludF9jb21tYW5kKHN0cnVjdCBzY3Np X2NtbmQgKmNtZCkKPiAgCWlmICghV0FSTl9PTihvZmYgPiBsb2didWZfbGVuIC0gNDkpKSB7Cj4g IAkJb2ZmICs9IHNjbnByaW50Zihsb2didWYgKyBvZmYsIGxvZ2J1Zl9sZW4gLSBvZmYsICIgIik7 Cj4gIAkJaGV4X2R1bXBfdG9fYnVmZmVyKGNtZC0+Y21uZCwgY21kLT5jbWRfbGVuLCAxNiwgMSwK PiAtCQkJCSAgIGxvZ2J1ZiArIG9mZiwgbG9nYnVmX2xlbiAtIG9mZiwKPiAtCQkJCSAgIGZhbHNl KTsKPiArCQkJCSAgIGxvZ2J1ZiArIG9mZiwgbG9nYnVmX2xlbiAtIG9mZiwgMCk7Cj4gIAl9Cj4g IG91dF9wcmludGs6Cj4gIAlkZXZfcHJpbnRrKEtFUk5fSU5GTywgJmNtZC0+ZGV2aWNlLT5zZGV2 X2dlbmRldiwgIiVzIiwgbG9nYnVmKTsKPiBAQCAtMzU0LDggKzM1Myw3IEBAIHNjc2lfbG9nX2R1 bXBfc2Vuc2UoY29uc3Qgc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2LCBjb25zdCBjaGFyICpuYW1l LCBpbnQgdGFnLAo+ICAJCW9mZiA9IHNkZXZfZm9ybWF0X2hlYWRlcihsb2didWYsIGxvZ2J1Zl9s ZW4sCj4gIAkJCQkJIG5hbWUsIHRhZyk7Cj4gIAkJaGV4X2R1bXBfdG9fYnVmZmVyKCZzZW5zZV9i dWZmZXJbaV0sIGxlbiwgMTYsIDEsCj4gLQkJCQkgICBsb2didWYgKyBvZmYsIGxvZ2J1Zl9sZW4g LSBvZmYsCj4gLQkJCQkgICBmYWxzZSk7Cj4gKwkJCQkgICBsb2didWYgKyBvZmYsIGxvZ2J1Zl9s ZW4gLSBvZmYsIDApOwo+ICAJCWRldl9wcmludGsoS0VSTl9JTkZPLCAmc2Rldi0+c2Rldl9nZW5k ZXYsICIlcyIsIGxvZ2J1Zik7Cj4gIAl9Cj4gIAlzY3NpX2xvZ19yZWxlYXNlX2J1ZmZlcihsb2di dWYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZmJ0ZnQvZmJ0ZnQtY29yZS5jIGIv ZHJpdmVycy9zdGFnaW5nL2ZidGZ0L2ZidGZ0LWNvcmUuYwo+IGluZGV4IDliMDdiYWRmNGM2Yy4u MmU1ZGY1Y2M5ZDYxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9mYnRmdC9mYnRmdC1j b3JlLmMKPiArKysgYi9kcml2ZXJzL3N0YWdpbmcvZmJ0ZnQvZmJ0ZnQtY29yZS5jCj4gQEAgLTYx LDcgKzYxLDcgQEAgdm9pZCBmYnRmdF9kYmdfaGV4KGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldiwg aW50IGdyb3Vwc2l6ZSwKPiAgCXZhX2VuZChhcmdzKTsKPiAgCj4gIAloZXhfZHVtcF90b19idWZm ZXIoYnVmLCBsZW4sIDMyLCBncm91cHNpemUsIHRleHQgKyB0ZXh0X2xlbiwKPiAtCQkJICAgNTEy IC0gdGV4dF9sZW4sIGZhbHNlKTsKPiArCQkJICAgNTEyIC0gdGV4dF9sZW4sIDApOwo+ICAKPiAg CWlmIChsZW4gPiAzMikKPiAgCQlkZXZfaW5mbyhkZXYsICIlcyAuLi5cbiIsIHRleHQpOwo+IGRp ZmYgLS1naXQgYS9mcy9zZXFfZmlsZS5jIGIvZnMvc2VxX2ZpbGUuYwo+IGluZGV4IDFkZWE3YThh NTI1NS4uYTAyMTM2MzdhZjNlIDEwMDY0NAo+IC0tLSBhL2ZzL3NlcV9maWxlLmMKPiArKysgYi9m cy9zZXFfZmlsZS5jCj4gQEAgLTg3Myw3ICs4NzMsOCBAQCB2b2lkIHNlcV9oZXhfZHVtcChzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sIGNvbnN0IGNoYXIgKnByZWZpeF9zdHIsIGludCBwcmVmaXhfdHlwZSwK PiAgCj4gIAkJc2l6ZSA9IHNlcV9nZXRfYnVmKG0sICZidWZmZXIpOwo+ICAJCXJldCA9IGhleF9k dW1wX3RvX2J1ZmZlcihwdHIgKyBpLCBsaW5lbGVuLCByb3dzaXplLCBncm91cHNpemUsCj4gLQkJ CQkJIGJ1ZmZlciwgc2l6ZSwgYXNjaWkpOwo+ICsJCQkJCSBidWZmZXIsIHNpemUsCj4gKwkJCQkJ IGFzY2lpID8gSEVYRFVNUF9BU0NJSSA6IDApOwo+ICAJCXNlcV9jb21taXQobSwgcmV0IDwgc2l6 ZSA/IHJldCA6IC0xKTsKPiAgCj4gIAkJc2VxX3B1dGMobSwgJ1xuJyk7Cj4gZGlmZiAtLWdpdCBh L2luY2x1ZGUvbGludXgvcHJpbnRrLmggYi9pbmNsdWRlL2xpbnV4L3ByaW50ay5oCj4gaW5kZXgg OTM4YTY3NTgwZDc4Li4wMGE4MmU0Njg2NDMgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9saW51eC9w cmludGsuaAo+ICsrKyBiL2luY2x1ZGUvbGludXgvcHJpbnRrLmgKPiBAQCAtNDgwLDEzICs0ODAs MTMgQEAgZW51bSB7Cj4gIAlEVU1QX1BSRUZJWF9PRkZTRVQKPiAgfTsKPiAgCj4gLWV4dGVybiBp bnQgaGV4X2R1bXBfdG9fYnVmZmVyKGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbiwgaW50IHJv d3NpemUsCj4gLQkJCSAgICAgIGludCBncm91cHNpemUsIGNoYXIgKmxpbmVidWYsIHNpemVfdCBs aW5lYnVmbGVuLAo+IC0JCQkgICAgICBib29sIGFzY2lpKTsKPiAtCj4gICNkZWZpbmUgSEVYRFVN UF9BU0NJSQkJCSgxIDw8IDApCj4gICNkZWZpbmUgSEVYRFVNUF9TVVBQUkVTU19SRVBFQVRFRAko MSA8PCAxKQo+ICAKPiArZXh0ZXJuIGludCBoZXhfZHVtcF90b19idWZmZXIoY29uc3Qgdm9pZCAq YnVmLCBzaXplX3QgbGVuLCBpbnQgcm93c2l6ZSwKPiArCQkJICAgICAgaW50IGdyb3Vwc2l6ZSwg Y2hhciAqbGluZWJ1Ziwgc2l6ZV90IGxpbmVidWZsZW4sCj4gKwkJCSAgICAgIHU2NCBmbGFncyk7 Cj4gKwo+ICAjaWZkZWYgQ09ORklHX1BSSU5USwo+ICBleHRlcm4gdm9pZCBwcmludF9oZXhfZHVt cF9leHQoY29uc3QgY2hhciAqbGV2ZWwsIGNvbnN0IGNoYXIgKnByZWZpeF9zdHIsCj4gIAkJCSAg IGludCBwcmVmaXhfdHlwZSwgaW50IHJvd3NpemUsIGludCBncm91cHNpemUsCj4gZGlmZiAtLWdp dCBhL2xpYi9oZXhkdW1wLmMgYi9saWIvaGV4ZHVtcC5jCj4gaW5kZXggZDYxYTFlNGYxOWZhLi5k ZGQxNjk3ZTVmOWIgMTAwNjQ0Cj4gLS0tIGEvbGliL2hleGR1bXAuYwo+ICsrKyBiL2xpYi9oZXhk dW1wLmMKPiBAQCAtODUsNyArODUsOCBAQCBFWFBPUlRfU1lNQk9MKGJpbjJoZXgpOwo+ICAgKiBA Z3JvdXBzaXplOiBudW1iZXIgb2YgYnl0ZXMgdG8gcHJpbnQgYXQgYSB0aW1lICgxLCAyLCA0LCA4 OyBkZWZhdWx0ID0gMSkKPiAgICogQGxpbmVidWY6IHdoZXJlIHRvIHB1dCB0aGUgY29udmVydGVk IGRhdGEKPiAgICogQGxpbmVidWZsZW46IHRvdGFsIHNpemUgb2YgQGxpbmVidWYsIGluY2x1ZGlu ZyBzcGFjZSBmb3IgdGVybWluYXRpbmcgTlVMCj4gLSAqIEBhc2NpaTogaW5jbHVkZSBBU0NJSSBh ZnRlciB0aGUgaGV4IG91dHB1dAo+ICsgKiBAZmxhZ3M6IEEgYml0d2lzZSBPUiBvZiB0aGUgZm9s bG93aW5nIGZsYWdzOgo+ICsgKglIRVhEVU1QX0FTQ0lJOgkJCWluY2x1ZGUgQVNDSUkgYWZ0ZXIg dGhlIGhleCBvdXRwdXQKPiAgICoKPiAgICogaGV4X2R1bXBfdG9fYnVmZmVyKCkgd29ya3Mgb24g b25lICJsaW5lIiBvZiBvdXRwdXQgYXQgYSB0aW1lLCBjb252ZXJ0aW5nCj4gICAqIDxncm91cHNp emU+IGJ5dGVzIG9mIGlucHV0IHRvIGhleGFkZWNpbWFsIChhbmQgb3B0aW9uYWxseSBwcmludGFi bGUgQVNDSUkpCj4gQEAgLTk3LDcgKzk4LDcgQEAgRVhQT1JUX1NZTUJPTChiaW4yaGV4KTsKPiAg ICoKPiAgICogRS5nLjoKPiAgICogICBoZXhfZHVtcF90b19idWZmZXIoZnJhbWUtPmRhdGEsIGZy YW1lLT5sZW4sIDE2LCAxLAo+IC0gKgkJCWxpbmVidWYsIHNpemVvZihsaW5lYnVmKSwgdHJ1ZSk7 Cj4gKyAqCQkJbGluZWJ1Ziwgc2l6ZW9mKGxpbmVidWYpLCBIRVhEVU1QX0FTQ0lJKTsKPiAgICoK PiAgICogZXhhbXBsZSBvdXRwdXQgYnVmZmVyOgo+ICAgKiA0MCA0MSA0MiA0MyA0NCA0NSA0NiA0 NyA0OCA0OSA0YSA0YiA0YyA0ZCA0ZSA0ZiAgQEFCQ0RFRkdISUpLTE1OTwo+IEBAIC0xMDksNyAr MTEwLDcgQEAgRVhQT1JUX1NZTUJPTChiaW4yaGV4KTsKPiAgICogc3RyaW5nIGlmIGVub3VnaCBz cGFjZSBoYWQgYmVlbiBhdmFpbGFibGUuCj4gICAqLwo+ICBpbnQgaGV4X2R1bXBfdG9fYnVmZmVy KGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbiwgaW50IHJvd3NpemUsIGludCBncm91cHNpemUs Cj4gLQkJICAgICAgIGNoYXIgKmxpbmVidWYsIHNpemVfdCBsaW5lYnVmbGVuLCBib29sIGFzY2lp KQo+ICsJCSAgICAgICBjaGFyICpsaW5lYnVmLCBzaXplX3QgbGluZWJ1ZmxlbiwgdTY0IGZsYWdz KQo+ICB7Cj4gIAljb25zdCB1OCAqcHRyID0gYnVmOwo+ICAJaW50IG5ncm91cHM7Cj4gQEAgLTE4 Nyw3ICsxODgsNyBAQCBpbnQgaGV4X2R1bXBfdG9fYnVmZmVyKGNvbnN0IHZvaWQgKmJ1Ziwgc2l6 ZV90IGxlbiwgaW50IHJvd3NpemUsIGludCBncm91cHNpemUsCj4gIAkJaWYgKGopCj4gIAkJCWx4 LS07Cj4gIAl9Cj4gLQlpZiAoIWFzY2lpKQo+ICsJaWYgKCEoZmxhZ3MgJiBIRVhEVU1QX0FTQ0lJ KSkKPiAgCQlnb3RvIG5pbDsKPiAgCj4gIAl3aGlsZSAobHggPCBhc2NpaV9jb2x1bW4pIHsKPiBA QCAtMjA3LDcgKzIwOCw4IEBAIGludCBoZXhfZHVtcF90b19idWZmZXIoY29uc3Qgdm9pZCAqYnVm LCBzaXplX3QgbGVuLCBpbnQgcm93c2l6ZSwgaW50IGdyb3Vwc2l6ZSwKPiAgb3ZlcmZsb3cyOgo+ ICAJbGluZWJ1ZltseCsrXSA9ICdcMCc7Cj4gIG92ZXJmbG93MToKPiAtCXJldHVybiBhc2NpaSA/ IGFzY2lpX2NvbHVtbiArIGxlbiA6IChncm91cHNpemUgKiAyICsgMSkgKiBuZ3JvdXBzIC0gMTsK PiArCXJldHVybiAoZmxhZ3MgJiBIRVhEVU1QX0FTQ0lJKSA/IGFzY2lpX2NvbHVtbiArIGxlbiA6 Cj4gKwkJCQkJIChncm91cHNpemUgKiAyICsgMSkgKiBuZ3JvdXBzIC0gMTsKPiAgfQo+ICBFWFBP UlRfU1lNQk9MKGhleF9kdW1wX3RvX2J1ZmZlcik7Cj4gIAo+IEBAIC0zMzYsOCArMzM4LDcgQEAg dm9pZCBwcmludF9oZXhfZHVtcF9leHQoY29uc3QgY2hhciAqbGV2ZWwsIGNvbnN0IGNoYXIgKnBy ZWZpeF9zdHIsCj4gIAkJfQo+ICAKPiAgCQloZXhfZHVtcF90b19idWZmZXIocHRyICsgaSwgbGlu ZWxlbiwgcm93c2l6ZSwgZ3JvdXBzaXplLAo+IC0JCQkJICAgbGluZWJ1ZiwgbGluZWJ1Zl9sZW4s Cj4gLQkJCQkgICBmbGFncyAmIEhFWERVTVBfQVNDSUkpOwo+ICsJCQkJICAgbGluZWJ1ZiwgbGlu ZWJ1Zl9sZW4sIGZsYWdzKTsKPiAgCj4gIAkJc3dpdGNoIChwcmVmaXhfdHlwZSkgewo+ICAJCWNh c2UgRFVNUF9QUkVGSVhfQUREUkVTUzoKPiBkaWZmIC0tZ2l0IGEvbGliL3Rlc3RfaGV4ZHVtcC5j IGIvbGliL3Rlc3RfaGV4ZHVtcC5jCj4gaW5kZXggNmFiNzVhMjA5YjQzLi5hZTM0MGM1YzFjNmYg MTAwNjQ0Cj4gLS0tIGEvbGliL3Rlc3RfaGV4ZHVtcC5jCj4gKysrIGIvbGliL3Rlc3RfaGV4ZHVt cC5jCj4gQEAgLTE2Niw3ICsxNjYsNyBAQCBzdGF0aWMgdm9pZCBfX2luaXQgdGVzdF9oZXhkdW1w KHNpemVfdCBsZW4sIGludCByb3dzaXplLCBpbnQgZ3JvdXBzaXplLAo+ICAKPiAgCW1lbXNldChy ZWFsLCBGSUxMX0NIQVIsIHNpemVvZihyZWFsKSk7Cj4gIAloZXhfZHVtcF90b19idWZmZXIoZGF0 YV9iLCBsZW4sIHJvd3NpemUsIGdyb3Vwc2l6ZSwgcmVhbCwgc2l6ZW9mKHJlYWwpLAo+IC0JCQkg ICBhc2NpaSk7Cj4gKwkJCSAgIGFzY2lpID8gSEVYRFVNUF9BU0NJSSA6IDApOwo+ICAKPiAgCW1l bXNldCh0ZXN0LCBGSUxMX0NIQVIsIHNpemVvZih0ZXN0KSk7Cj4gIAl0ZXN0X2hleGR1bXBfcHJl cGFyZV90ZXN0KGxlbiwgcm93c2l6ZSwgZ3JvdXBzaXplLCB0ZXN0LCBzaXplb2YodGVzdCksCj4g QEAgLTIwNCw3ICsyMDQsOCBAQCBzdGF0aWMgdm9pZCBfX2luaXQgdGVzdF9oZXhkdW1wX292ZXJm bG93KHNpemVfdCBidWZsZW4sIHNpemVfdCBsZW4sCj4gIAo+ICAJbWVtc2V0KGJ1ZiwgRklMTF9D SEFSLCBzaXplb2YoYnVmKSk7Cj4gIAo+IC0JcmMgPSBoZXhfZHVtcF90b19idWZmZXIoZGF0YV9i LCBsZW4sIHJvd3NpemUsIGdyb3Vwc2l6ZSwgYnVmLCBidWZsZW4sIGFzY2lpKTsKPiArCXJjID0g aGV4X2R1bXBfdG9fYnVmZmVyKGRhdGFfYiwgbGVuLCByb3dzaXplLCBncm91cHNpemUsIGJ1Ziwg YnVmbGVuLAo+ICsJCQkJYXNjaWkgPyBIRVhEVU1QX0FTQ0lJIDogMCk7Cj4gIAo+ICAJLyoKPiAg CSAqIENhbGxlciBtdXN0IHByb3ZpZGUgdGhlIGRhdGEgbGVuZ3RoIG11bHRpcGxlIG9mIGdyb3Vw c2l6ZS4gVGhlCgotLSAKSmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIEdyYXBoaWNzIENl bnRlcgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 88522C46460 for ; Wed, 8 May 2019 08:56:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 517C721479 for ; Wed, 8 May 2019 08:56:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727118AbfEHI4h (ORCPT ); Wed, 8 May 2019 04:56:37 -0400 Received: from mga01.intel.com ([192.55.52.88]:51270 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725815AbfEHI4g (ORCPT ); Wed, 8 May 2019 04:56:36 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 08 May 2019 01:56:35 -0700 X-ExtLoop1: 1 Received: from jnikula-mobl3.fi.intel.com (HELO localhost) ([10.237.66.150]) by fmsmga001.fm.intel.com with ESMTP; 08 May 2019 01:56:27 -0700 From: Jani Nikula To: Alastair D'Silva , alastair@d-silva.org Cc: Joonas Lahtinen , Rodrigo Vivi , David Airlie , Daniel Vetter , Dan Carpenter , Karsten Keil , Jassi Brar , Tom Lendacky , "David S. Miller" , Jose Abreu , Kalle Valo , Stanislaw Gruszka , Benson Leung , Enric Balletbo i Serra , "James E.J. Bottomley" , "Martin K. Petersen" , Greg Kroah-Hartman , Alexander Viro , Petr Mladek , Sergey Senozhatsky , Steven Rostedt , David Laight , Andrew Morton , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, ath10k@lists.infradead.org, linux-wireless@vger.kernel.org, linux-scsi@vger.kernel.org, linux-fbdev@vger.kernel.org, devel@driverdev.osuosl.org, linux-fsdevel@vger.kernel.org Subject: Re: [PATCH v2 4/7] lib/hexdump.c: Replace ascii bool in hex_dump_to_buffer with flags In-Reply-To: <20190508070148.23130-5-alastair@au1.ibm.com> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo References: <20190508070148.23130-1-alastair@au1.ibm.com> <20190508070148.23130-5-alastair@au1.ibm.com> Date: Wed, 08 May 2019 11:58:34 +0300 Message-ID: <87v9yll3ut.fsf@intel.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org On Wed, 08 May 2019, Alastair D'Silva wrote: > From: Alastair D'Silva > > In order to support additional features in hex_dump_to_buffer, replace > the ascii bool parameter with flags. > > Signed-off-by: Alastair D'Silva > --- > drivers/gpu/drm/i915/intel_engine_cs.c | 2 +- For i915, Acked-by: Jani Nikula > drivers/isdn/hardware/mISDN/mISDNisar.c | 6 ++++-- > drivers/mailbox/mailbox-test.c | 2 +- > drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 2 +- > drivers/net/ethernet/synopsys/dwc-xlgmac-common.c | 2 +- > drivers/net/wireless/ath/ath10k/debug.c | 3 ++- > drivers/net/wireless/intel/iwlegacy/3945-mac.c | 2 +- > drivers/platform/chrome/wilco_ec/debugfs.c | 2 +- > drivers/scsi/scsi_logging.c | 8 +++----- > drivers/staging/fbtft/fbtft-core.c | 2 +- > fs/seq_file.c | 3 ++- > include/linux/printk.h | 8 ++++---- > lib/hexdump.c | 15 ++++++++------- > lib/test_hexdump.c | 5 +++-- > 14 files changed, 33 insertions(+), 29 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c > index 49fa43ff02ba..fb133e729f9a 100644 > --- a/drivers/gpu/drm/i915/intel_engine_cs.c > +++ b/drivers/gpu/drm/i915/intel_engine_cs.c > @@ -1318,7 +1318,7 @@ static void hexdump(struct drm_printer *m, const void *buf, size_t len) > WARN_ON_ONCE(hex_dump_to_buffer(buf + pos, len - pos, > rowsize, sizeof(u32), > line, sizeof(line), > - false) >= sizeof(line)); > + 0) >= sizeof(line)); > drm_printf(m, "[%04zx] %s\n", pos, line); > > prev = buf + pos; > diff --git a/drivers/isdn/hardware/mISDN/mISDNisar.c b/drivers/isdn/hardware/mISDN/mISDNisar.c > index 386731ec2489..f13f34db6c17 100644 > --- a/drivers/isdn/hardware/mISDN/mISDNisar.c > +++ b/drivers/isdn/hardware/mISDN/mISDNisar.c > @@ -84,7 +84,8 @@ send_mbox(struct isar_hw *isar, u8 his, u8 creg, u8 len, u8 *msg) > > while (l < (int)len) { > hex_dump_to_buffer(msg + l, len - l, 32, 1, > - isar->log, 256, 1); > + isar->log, 256, > + HEXDUMP_ASCII); > pr_debug("%s: %s %02x: %s\n", isar->name, > __func__, l, isar->log); > l += 32; > @@ -113,7 +114,8 @@ rcv_mbox(struct isar_hw *isar, u8 *msg) > > while (l < (int)isar->clsb) { > hex_dump_to_buffer(msg + l, isar->clsb - l, 32, > - 1, isar->log, 256, 1); > + 1, isar->log, 256, > + HEXDUMP_ASCII); > pr_debug("%s: %s %02x: %s\n", isar->name, > __func__, l, isar->log); > l += 32; > diff --git a/drivers/mailbox/mailbox-test.c b/drivers/mailbox/mailbox-test.c > index 4e4ac4be6423..2f9a094d0259 100644 > --- a/drivers/mailbox/mailbox-test.c > +++ b/drivers/mailbox/mailbox-test.c > @@ -213,7 +213,7 @@ static ssize_t mbox_test_message_read(struct file *filp, char __user *userbuf, > hex_dump_to_buffer(ptr, > MBOX_BYTES_PER_LINE, > MBOX_BYTES_PER_LINE, 1, touser + l, > - MBOX_HEXDUMP_LINE_LEN, true); > + MBOX_HEXDUMP_LINE_LEN, HEXDUMP_ASCII); > > ptr += MBOX_BYTES_PER_LINE; > l += MBOX_HEXDUMP_LINE_LEN; > diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c > index 0cc911f928b1..e954a31cee0c 100644 > --- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c > +++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c > @@ -2992,7 +2992,7 @@ void xgbe_print_pkt(struct net_device *netdev, struct sk_buff *skb, bool tx_rx) > unsigned int len = min(skb->len - i, 32U); > > hex_dump_to_buffer(&skb->data[i], len, 32, 1, > - buffer, sizeof(buffer), false); > + buffer, sizeof(buffer), 0); > netdev_dbg(netdev, " %#06x: %s\n", i, buffer); > } > > diff --git a/drivers/net/ethernet/synopsys/dwc-xlgmac-common.c b/drivers/net/ethernet/synopsys/dwc-xlgmac-common.c > index eb1c6b03c329..b80adfa1f890 100644 > --- a/drivers/net/ethernet/synopsys/dwc-xlgmac-common.c > +++ b/drivers/net/ethernet/synopsys/dwc-xlgmac-common.c > @@ -349,7 +349,7 @@ void xlgmac_print_pkt(struct net_device *netdev, > unsigned int len = min(skb->len - i, 32U); > > hex_dump_to_buffer(&skb->data[i], len, 32, 1, > - buffer, sizeof(buffer), false); > + buffer, sizeof(buffer), 0); > netdev_dbg(netdev, " %#06x: %s\n", i, buffer); > } > > diff --git a/drivers/net/wireless/ath/ath10k/debug.c b/drivers/net/wireless/ath/ath10k/debug.c > index 32d967a31c65..4c99ea03226d 100644 > --- a/drivers/net/wireless/ath/ath10k/debug.c > +++ b/drivers/net/wireless/ath/ath10k/debug.c > @@ -2662,7 +2662,8 @@ void ath10k_dbg_dump(struct ath10k *ar, > (unsigned int)(ptr - buf)); > hex_dump_to_buffer(ptr, len - (ptr - buf), 16, 1, > linebuf + linebuflen, > - sizeof(linebuf) - linebuflen, true); > + sizeof(linebuf) - linebuflen, > + HEXDUMP_ASCII); > dev_printk(KERN_DEBUG, ar->dev, "%s\n", linebuf); > } > } > diff --git a/drivers/net/wireless/intel/iwlegacy/3945-mac.c b/drivers/net/wireless/intel/iwlegacy/3945-mac.c > index 271977f7fbb0..acbe26d22c34 100644 > --- a/drivers/net/wireless/intel/iwlegacy/3945-mac.c > +++ b/drivers/net/wireless/intel/iwlegacy/3945-mac.c > @@ -3247,7 +3247,7 @@ il3945_show_measurement(struct device *d, struct device_attribute *attr, > > while (size && PAGE_SIZE - len) { > hex_dump_to_buffer(data + ofs, size, 16, 1, buf + len, > - PAGE_SIZE - len, true); > + PAGE_SIZE - len, HEXDUMP_ASCII); > len = strlen(buf); > if (PAGE_SIZE - len) > buf[len++] = '\n'; > diff --git a/drivers/platform/chrome/wilco_ec/debugfs.c b/drivers/platform/chrome/wilco_ec/debugfs.c > index c090db2cd5be..26d9ae5c2dc2 100644 > --- a/drivers/platform/chrome/wilco_ec/debugfs.c > +++ b/drivers/platform/chrome/wilco_ec/debugfs.c > @@ -174,7 +174,7 @@ static ssize_t raw_read(struct file *file, char __user *user_buf, size_t count, > fmt_len = hex_dump_to_buffer(debug_info->raw_data, > debug_info->response_size, > 16, 1, debug_info->formatted_data, > - FORMATTED_BUFFER_SIZE, true); > + FORMATTED_BUFFER_SIZE, HEXDUMP_ASCII); > /* Only return response the first time it is read */ > debug_info->response_size = 0; > } > diff --git a/drivers/scsi/scsi_logging.c b/drivers/scsi/scsi_logging.c > index bd70339c1242..fce542bb40e6 100644 > --- a/drivers/scsi/scsi_logging.c > +++ b/drivers/scsi/scsi_logging.c > @@ -263,7 +263,7 @@ void scsi_print_command(struct scsi_cmnd *cmd) > "CDB[%02x]: ", k); > hex_dump_to_buffer(&cmd->cmnd[k], linelen, > 16, 1, logbuf + off, > - logbuf_len - off, false); > + logbuf_len - off, 0); > } > dev_printk(KERN_INFO, &cmd->device->sdev_gendev, "%s", > logbuf); > @@ -274,8 +274,7 @@ void scsi_print_command(struct scsi_cmnd *cmd) > if (!WARN_ON(off > logbuf_len - 49)) { > off += scnprintf(logbuf + off, logbuf_len - off, " "); > hex_dump_to_buffer(cmd->cmnd, cmd->cmd_len, 16, 1, > - logbuf + off, logbuf_len - off, > - false); > + logbuf + off, logbuf_len - off, 0); > } > out_printk: > dev_printk(KERN_INFO, &cmd->device->sdev_gendev, "%s", logbuf); > @@ -354,8 +353,7 @@ scsi_log_dump_sense(const struct scsi_device *sdev, const char *name, int tag, > off = sdev_format_header(logbuf, logbuf_len, > name, tag); > hex_dump_to_buffer(&sense_buffer[i], len, 16, 1, > - logbuf + off, logbuf_len - off, > - false); > + logbuf + off, logbuf_len - off, 0); > dev_printk(KERN_INFO, &sdev->sdev_gendev, "%s", logbuf); > } > scsi_log_release_buffer(logbuf); > diff --git a/drivers/staging/fbtft/fbtft-core.c b/drivers/staging/fbtft/fbtft-core.c > index 9b07badf4c6c..2e5df5cc9d61 100644 > --- a/drivers/staging/fbtft/fbtft-core.c > +++ b/drivers/staging/fbtft/fbtft-core.c > @@ -61,7 +61,7 @@ void fbtft_dbg_hex(const struct device *dev, int groupsize, > va_end(args); > > hex_dump_to_buffer(buf, len, 32, groupsize, text + text_len, > - 512 - text_len, false); > + 512 - text_len, 0); > > if (len > 32) > dev_info(dev, "%s ...\n", text); > diff --git a/fs/seq_file.c b/fs/seq_file.c > index 1dea7a8a5255..a0213637af3e 100644 > --- a/fs/seq_file.c > +++ b/fs/seq_file.c > @@ -873,7 +873,8 @@ void seq_hex_dump(struct seq_file *m, const char *prefix_str, int prefix_type, > > size = seq_get_buf(m, &buffer); > ret = hex_dump_to_buffer(ptr + i, linelen, rowsize, groupsize, > - buffer, size, ascii); > + buffer, size, > + ascii ? HEXDUMP_ASCII : 0); > seq_commit(m, ret < size ? ret : -1); > > seq_putc(m, '\n'); > diff --git a/include/linux/printk.h b/include/linux/printk.h > index 938a67580d78..00a82e468643 100644 > --- a/include/linux/printk.h > +++ b/include/linux/printk.h > @@ -480,13 +480,13 @@ enum { > DUMP_PREFIX_OFFSET > }; > > -extern int hex_dump_to_buffer(const void *buf, size_t len, int rowsize, > - int groupsize, char *linebuf, size_t linebuflen, > - bool ascii); > - > #define HEXDUMP_ASCII (1 << 0) > #define HEXDUMP_SUPPRESS_REPEATED (1 << 1) > > +extern int hex_dump_to_buffer(const void *buf, size_t len, int rowsize, > + int groupsize, char *linebuf, size_t linebuflen, > + u64 flags); > + > #ifdef CONFIG_PRINTK > extern void print_hex_dump_ext(const char *level, const char *prefix_str, > int prefix_type, int rowsize, int groupsize, > diff --git a/lib/hexdump.c b/lib/hexdump.c > index d61a1e4f19fa..ddd1697e5f9b 100644 > --- a/lib/hexdump.c > +++ b/lib/hexdump.c > @@ -85,7 +85,8 @@ EXPORT_SYMBOL(bin2hex); > * @groupsize: number of bytes to print at a time (1, 2, 4, 8; default = 1) > * @linebuf: where to put the converted data > * @linebuflen: total size of @linebuf, including space for terminating NUL > - * @ascii: include ASCII after the hex output > + * @flags: A bitwise OR of the following flags: > + * HEXDUMP_ASCII: include ASCII after the hex output > * > * hex_dump_to_buffer() works on one "line" of output at a time, converting > * bytes of input to hexadecimal (and optionally printable ASCII) > @@ -97,7 +98,7 @@ EXPORT_SYMBOL(bin2hex); > * > * E.g.: > * hex_dump_to_buffer(frame->data, frame->len, 16, 1, > - * linebuf, sizeof(linebuf), true); > + * linebuf, sizeof(linebuf), HEXDUMP_ASCII); > * > * example output buffer: > * 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f @ABCDEFGHIJKLMNO > @@ -109,7 +110,7 @@ EXPORT_SYMBOL(bin2hex); > * string if enough space had been available. > */ > int hex_dump_to_buffer(const void *buf, size_t len, int rowsize, int groupsize, > - char *linebuf, size_t linebuflen, bool ascii) > + char *linebuf, size_t linebuflen, u64 flags) > { > const u8 *ptr = buf; > int ngroups; > @@ -187,7 +188,7 @@ int hex_dump_to_buffer(const void *buf, size_t len, int rowsize, int groupsize, > if (j) > lx--; > } > - if (!ascii) > + if (!(flags & HEXDUMP_ASCII)) > goto nil; > > while (lx < ascii_column) { > @@ -207,7 +208,8 @@ int hex_dump_to_buffer(const void *buf, size_t len, int rowsize, int groupsize, > overflow2: > linebuf[lx++] = '\0'; > overflow1: > - return ascii ? ascii_column + len : (groupsize * 2 + 1) * ngroups - 1; > + return (flags & HEXDUMP_ASCII) ? ascii_column + len : > + (groupsize * 2 + 1) * ngroups - 1; > } > EXPORT_SYMBOL(hex_dump_to_buffer); > > @@ -336,8 +338,7 @@ void print_hex_dump_ext(const char *level, const char *prefix_str, > } > > hex_dump_to_buffer(ptr + i, linelen, rowsize, groupsize, > - linebuf, linebuf_len, > - flags & HEXDUMP_ASCII); > + linebuf, linebuf_len, flags); > > switch (prefix_type) { > case DUMP_PREFIX_ADDRESS: > diff --git a/lib/test_hexdump.c b/lib/test_hexdump.c > index 6ab75a209b43..ae340c5c1c6f 100644 > --- a/lib/test_hexdump.c > +++ b/lib/test_hexdump.c > @@ -166,7 +166,7 @@ static void __init test_hexdump(size_t len, int rowsize, int groupsize, > > memset(real, FILL_CHAR, sizeof(real)); > hex_dump_to_buffer(data_b, len, rowsize, groupsize, real, sizeof(real), > - ascii); > + ascii ? HEXDUMP_ASCII : 0); > > memset(test, FILL_CHAR, sizeof(test)); > test_hexdump_prepare_test(len, rowsize, groupsize, test, sizeof(test), > @@ -204,7 +204,8 @@ static void __init test_hexdump_overflow(size_t buflen, size_t len, > > memset(buf, FILL_CHAR, sizeof(buf)); > > - rc = hex_dump_to_buffer(data_b, len, rowsize, groupsize, buf, buflen, ascii); > + rc = hex_dump_to_buffer(data_b, len, rowsize, groupsize, buf, buflen, > + ascii ? HEXDUMP_ASCII : 0); > > /* > * Caller must provide the data length multiple of groupsize. The -- Jani Nikula, Intel Open Source Graphics Center