All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oleksandr Shamray <oleksandrs@mellanox.com>
To: Florian Fainelli <f.fainelli@gmail.com>,
	"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
	"arnd@arndb.de" <arnd@arndb.de>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"openbmc@lists.ozlabs.org" <openbmc@lists.ozlabs.org>,
	"joel@jms.id.au" <joel@jms.id.au>,
	"jiri@resnulli.us" <jiri@resnulli.us>,
	"tklauser@distanz.ch" <tklauser@distanz.ch>,
	"linux-serial@vger.kernel.org" <linux-serial@vger.kernel.org>,
	Vadim Pasternak <vadimp@mellanox.com>,
	system-sw-low-level <system-sw-low-level@mellanox.com>,
	"robh+dt@kernel.org" <robh+dt@kernel.org>,
	"openocd-devel-owner@lists.sourceforge.net" 
	<openocd-devel-owner@lists.sourceforge.net>,
	"linux-api@vger.kernel.org" <linux-api@vger.kernel.org>,
	"davem@davemloft.net" <davem@davemloft.net>,
	"mchehab@kernel.org" <mchehab@kernel.org>,
	Jiri Pirko <jiri@mellanox.com>
Subject: RE: [patch v15 1/4] drivers: jtag: Add JTAG core driver
Date: Fri, 12 Jan 2018 16:42:35 +0000	[thread overview]
Message-ID: <AM4PR0501MB2194A5EF09E5F3140F2C211CB1170@AM4PR0501MB2194.eurprd05.prod.outlook.com> (raw)
In-Reply-To: <13433849-cb7d-e2c0-4ce9-d91a6012d7d7@gmail.com>



> -----Original Message-----
> From: Florian Fainelli [mailto:f.fainelli@gmail.com]
> Sent: 26 декабря 2017 г. 1:09
> To: Oleksandr Shamray <oleksandrs@mellanox.com>;
> gregkh@linuxfoundation.org; arnd@arndb.de
> Cc: linux-kernel@vger.kernel.org; linux-arm-kernel@lists.infradead.org;
> devicetree@vger.kernel.org; openbmc@lists.ozlabs.org; joel@jms.id.au;
> jiri@resnulli.us; tklauser@distanz.ch; linux-serial@vger.kernel.org; Vadim
> Pasternak <vadimp@mellanox.com>; system-sw-low-level <system-sw-low-
> level@mellanox.com>; robh+dt@kernel.org; openocd-devel-
> owner@lists.sourceforge.net; linux-api@vger.kernel.org;
> davem@davemloft.net; mchehab@kernel.org; Jiri Pirko
> <jiri@mellanox.com>
> Subject: Re: [patch v15 1/4] drivers: jtag: Add JTAG core driver
> 
> 

[snip]

> > +
> > +	case JTAG_IOCXFER:
> > +		if (copy_from_user(&xfer, (void *)arg,
> > +				   sizeof(struct jtag_xfer)))
> > +			return -EFAULT;
> > +
> > +		if (xfer.length >= JTAG_MAX_XFER_DATA_LEN)
> > +			return -EINVAL;
> > +
> > +		if (xfer.type > JTAG_SDR_XFER)
> > +			return -EINVAL;
> > +
> > +		if (xfer.direction > JTAG_WRITE_XFER)
> > +			return -EINVAL;
> > +
> > +		if (xfer.endstate > JTAG_STATE_PAUSEDR)
> > +			return -EINVAL;
> > +
> > +		data_size = DIV_ROUND_UP(xfer.length, BITS_PER_BYTE);
> > +		xfer_data = memdup_user(u64_to_user_ptr(xfer.tdio),
> data_size);
> > +
> > +		if (!xfer_data)
> > +			return -EFAULT;
> > +
> > +		if (jtag->ops->xfer) {
> > +			err = jtag->ops->xfer(jtag, &xfer, xfer_data);
> > +		} else {
> > +			kfree(xfer_data);
> > +			return -EOPNOTSUPP;
> > +		}
> 
> Why don't you move all of the code here into a function which will make the
> error handling consistent? Also, checking whether the jtag adapter

Greg KH <gregkh@linuxfoundation.org> Say to move all of this insight ioctl 

> implements ops->xfer should probably be done before you do the
> memdup_user().

Yes

> > +		if (err) {
> > +			kfree(xfer_data);
> > +			return -EFAULT;
> > +		}
> > +
> > +		if (jtag->ops->mode_set)
> > +			err = jtag->ops->mode_set(jtag, value);
> > +		else
> > +			err = -EOPNOTSUPP;
> > +		break;
> 
> Same here, this can be checked before get_user().
> 

Yes

> > +	if (jtag->opened) {
> > +		mutex_unlock(&jtag->open_lock);
> > +		return -EINVAL;
> 
> -EBUSY maybe?
> 

Yes


> > +
> > +	jtag = kzalloc(sizeof(*jtag) + round_up(priv_size,
> ARCH_DMA_MINALIGN),
> > +		       GFP_KERNEL);
> > +	if (!jtag)
> > +		return NULL;
> 
> If you set ARCH_DMA_MINALIGN to 1 when not defined, what is this
> achieving that kmalloc() is not already doing?
> 

Removed ARCH_DMA_MINALIGN

> > +
> > +	jtag->ops = ops;
> > +	return jtag;
> > +}
> > +EXPORT_SYMBOL_GPL(jtag_alloc);
> > +
> > +void jtag_free(struct jtag *jtag)
> > +{
> > +	kfree(jtag);
> > +}
> > +EXPORT_SYMBOL_GPL(jtag_free);
> > +
> > +int jtag_register(struct jtag *jtag)
> > +{
> > +	char *name;
> > +	int err;
> > +	int id;
> > +
> > +	id = ida_simple_get(&jtag_ida, 0, 0, GFP_KERNEL);
> > +	if (id < 0)
> > +		return id;
> > +
> > +	jtag->id = id;
> > +
> > +	name = kzalloc(MAX_JTAG_NAME_LEN, GFP_KERNEL);
> > +	if (!name) {
> > +		err = -ENOMEM;
> > +		goto err_jtag_alloc;
> > +	}
> 
> Can't you use jtag->miscdev.dev here to simplify the allocation error
> handling?
> 

How, what you mean?

> > +#ifndef ARCH_DMA_MINALIGN
> > +#define ARCH_DMA_MINALIGN 1
> > +#endif
> 
> Why?
> 

Not used now, Deleted

> > +#endif /* __JTAG_H */
> > diff --git a/include/uapi/linux/jtag.h b/include/uapi/linux/jtag.h new
> > file mode 100644 index 0000000..cda2520
> > --- /dev/null
> > +++ b/include/uapi/linux/jtag.h
> 
> [snip]
> 
> > +struct jtag_xfer {
> > +	__u8	type;
> > +	__u8	direction;
> 
> Can these two be an enum referring to what you defined earlier?
> 

Greg KH <gregkh@linuxfoundation.org> say:

"All structures that cross the user/kernel boundry have to use the __ type variables.
No "unsigned char", it has to be "__u8", no "unsigned short", it has to be "__u16", and so on.
Also, watch out for your enumerated types, what's the packing end up looking like on these structures?  Have you verified it works with a 64bit kernel and 32bit userspace all correctly?"

So I use __u8 type instead of enum to avoid errors while crossing 64bit kernel and 32bit userspace.

> > +	__u8	endstate;
> > +	__u32	length;
> > +	__u64	tdio;
> > +};
> --
> Florian

Thaks.


WARNING: multiple messages have this Message-ID (diff)
From: Oleksandr Shamray <oleksandrs-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
To: Florian Fainelli
	<f.fainelli-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	"gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org"
	<gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>,
	"arnd-r2nGTMty4D4@public.gmane.org"
	<arnd-r2nGTMty4D4@public.gmane.org>
Cc: "linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
	<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>,
	"devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"openbmc-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org"
	<openbmc-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org>,
	"joel-U3u1mxZcP9KHXe+LvDLADg@public.gmane.org"
	<joel-U3u1mxZcP9KHXe+LvDLADg@public.gmane.org>,
	"jiri-rHqAuBHg3fBzbRFIqnYvSA@public.gmane.org"
	<jiri-rHqAuBHg3fBzbRFIqnYvSA@public.gmane.org>,
	"tklauser-93Khv+1bN0NyDzI6CaY1VQ@public.gmane.org"
	<tklauser-93Khv+1bN0NyDzI6CaY1VQ@public.gmane.org>,
	"linux-serial-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-serial-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Vadim Pasternak <vadimp-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
	system-sw-low-level
	<system-sw-low-level-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
	"robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org"
	<robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	"openocd-devel-owner-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org"
	<openocd-devel-owner-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>,
	"linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org"
	<davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
Subject: RE: [patch v15 1/4] drivers: jtag: Add JTAG core driver
Date: Fri, 12 Jan 2018 16:42:35 +0000	[thread overview]
Message-ID: <AM4PR0501MB2194A5EF09E5F3140F2C211CB1170@AM4PR0501MB2194.eurprd05.prod.outlook.com> (raw)
In-Reply-To: <13433849-cb7d-e2c0-4ce9-d91a6012d7d7-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>



> -----Original Message-----
> From: Florian Fainelli [mailto:f.fainelli@gmail.com]
> Sent: 26 декабря 2017 г. 1:09
> To: Oleksandr Shamray <oleksandrs@mellanox.com>;
> gregkh@linuxfoundation.org; arnd@arndb.de
> Cc: linux-kernel@vger.kernel.org; linux-arm-kernel@lists.infradead.org;
> devicetree@vger.kernel.org; openbmc@lists.ozlabs.org; joel@jms.id.au;
> jiri@resnulli.us; tklauser@distanz.ch; linux-serial@vger.kernel.org; Vadim
> Pasternak <vadimp@mellanox.com>; system-sw-low-level <system-sw-low-
> level@mellanox.com>; robh+dt@kernel.org; openocd-devel-
> owner@lists.sourceforge.net; linux-api@vger.kernel.org;
> davem@davemloft.net; mchehab@kernel.org; Jiri Pirko
> <jiri@mellanox.com>
> Subject: Re: [patch v15 1/4] drivers: jtag: Add JTAG core driver
> 
> 

[snip]

> > +
> > +	case JTAG_IOCXFER:
> > +		if (copy_from_user(&xfer, (void *)arg,
> > +				   sizeof(struct jtag_xfer)))
> > +			return -EFAULT;
> > +
> > +		if (xfer.length >= JTAG_MAX_XFER_DATA_LEN)
> > +			return -EINVAL;
> > +
> > +		if (xfer.type > JTAG_SDR_XFER)
> > +			return -EINVAL;
> > +
> > +		if (xfer.direction > JTAG_WRITE_XFER)
> > +			return -EINVAL;
> > +
> > +		if (xfer.endstate > JTAG_STATE_PAUSEDR)
> > +			return -EINVAL;
> > +
> > +		data_size = DIV_ROUND_UP(xfer.length, BITS_PER_BYTE);
> > +		xfer_data = memdup_user(u64_to_user_ptr(xfer.tdio),
> data_size);
> > +
> > +		if (!xfer_data)
> > +			return -EFAULT;
> > +
> > +		if (jtag->ops->xfer) {
> > +			err = jtag->ops->xfer(jtag, &xfer, xfer_data);
> > +		} else {
> > +			kfree(xfer_data);
> > +			return -EOPNOTSUPP;
> > +		}
> 
> Why don't you move all of the code here into a function which will make the
> error handling consistent? Also, checking whether the jtag adapter

Greg KH <gregkh@linuxfoundation.org> Say to move all of this insight ioctl 

> implements ops->xfer should probably be done before you do the
> memdup_user().

Yes

> > +		if (err) {
> > +			kfree(xfer_data);
> > +			return -EFAULT;
> > +		}
> > +
> > +		if (jtag->ops->mode_set)
> > +			err = jtag->ops->mode_set(jtag, value);
> > +		else
> > +			err = -EOPNOTSUPP;
> > +		break;
> 
> Same here, this can be checked before get_user().
> 

Yes

> > +	if (jtag->opened) {
> > +		mutex_unlock(&jtag->open_lock);
> > +		return -EINVAL;
> 
> -EBUSY maybe?
> 

Yes


> > +
> > +	jtag = kzalloc(sizeof(*jtag) + round_up(priv_size,
> ARCH_DMA_MINALIGN),
> > +		       GFP_KERNEL);
> > +	if (!jtag)
> > +		return NULL;
> 
> If you set ARCH_DMA_MINALIGN to 1 when not defined, what is this
> achieving that kmalloc() is not already doing?
> 

Removed ARCH_DMA_MINALIGN

> > +
> > +	jtag->ops = ops;
> > +	return jtag;
> > +}
> > +EXPORT_SYMBOL_GPL(jtag_alloc);
> > +
> > +void jtag_free(struct jtag *jtag)
> > +{
> > +	kfree(jtag);
> > +}
> > +EXPORT_SYMBOL_GPL(jtag_free);
> > +
> > +int jtag_register(struct jtag *jtag)
> > +{
> > +	char *name;
> > +	int err;
> > +	int id;
> > +
> > +	id = ida_simple_get(&jtag_ida, 0, 0, GFP_KERNEL);
> > +	if (id < 0)
> > +		return id;
> > +
> > +	jtag->id = id;
> > +
> > +	name = kzalloc(MAX_JTAG_NAME_LEN, GFP_KERNEL);
> > +	if (!name) {
> > +		err = -ENOMEM;
> > +		goto err_jtag_alloc;
> > +	}
> 
> Can't you use jtag->miscdev.dev here to simplify the allocation error
> handling?
> 

How, what you mean?

> > +#ifndef ARCH_DMA_MINALIGN
> > +#define ARCH_DMA_MINALIGN 1
> > +#endif
> 
> Why?
> 

Not used now, Deleted

> > +#endif /* __JTAG_H */
> > diff --git a/include/uapi/linux/jtag.h b/include/uapi/linux/jtag.h new
> > file mode 100644 index 0000000..cda2520
> > --- /dev/null
> > +++ b/include/uapi/linux/jtag.h
> 
> [snip]
> 
> > +struct jtag_xfer {
> > +	__u8	type;
> > +	__u8	direction;
> 
> Can these two be an enum referring to what you defined earlier?
> 

Greg KH <gregkh@linuxfoundation.org> say:

"All structures that cross the user/kernel boundry have to use the __ type variables.
No "unsigned char", it has to be "__u8", no "unsigned short", it has to be "__u16", and so on.
Also, watch out for your enumerated types, what's the packing end up looking like on these structures?  Have you verified it works with a 64bit kernel and 32bit userspace all correctly?"

So I use __u8 type instead of enum to avoid errors while crossing 64bit kernel and 32bit userspace.

> > +	__u8	endstate;
> > +	__u32	length;
> > +	__u64	tdio;
> > +};
> --
> Florian

Thaks.


WARNING: multiple messages have this Message-ID (diff)
From: oleksandrs@mellanox.com (Oleksandr Shamray)
To: linux-arm-kernel@lists.infradead.org
Subject: [patch v15 1/4] drivers: jtag: Add JTAG core driver
Date: Fri, 12 Jan 2018 16:42:35 +0000	[thread overview]
Message-ID: <AM4PR0501MB2194A5EF09E5F3140F2C211CB1170@AM4PR0501MB2194.eurprd05.prod.outlook.com> (raw)
In-Reply-To: <13433849-cb7d-e2c0-4ce9-d91a6012d7d7@gmail.com>



> -----Original Message-----
> From: Florian Fainelli [mailto:f.fainelli at gmail.com]
> Sent: 26 ??????? 2017 ?. 1:09
> To: Oleksandr Shamray <oleksandrs@mellanox.com>;
> gregkh at linuxfoundation.org; arnd at arndb.de
> Cc: linux-kernel at vger.kernel.org; linux-arm-kernel at lists.infradead.org;
> devicetree at vger.kernel.org; openbmc at lists.ozlabs.org; joel at jms.id.au;
> jiri at resnulli.us; tklauser at distanz.ch; linux-serial at vger.kernel.org; Vadim
> Pasternak <vadimp@mellanox.com>; system-sw-low-level <system-sw-low-
> level at mellanox.com>; robh+dt at kernel.org; openocd-devel-
> owner at lists.sourceforge.net; linux-api at vger.kernel.org;
> davem at davemloft.net; mchehab at kernel.org; Jiri Pirko
> <jiri@mellanox.com>
> Subject: Re: [patch v15 1/4] drivers: jtag: Add JTAG core driver
> 
> 

[snip]

> > +
> > +	case JTAG_IOCXFER:
> > +		if (copy_from_user(&xfer, (void *)arg,
> > +				   sizeof(struct jtag_xfer)))
> > +			return -EFAULT;
> > +
> > +		if (xfer.length >= JTAG_MAX_XFER_DATA_LEN)
> > +			return -EINVAL;
> > +
> > +		if (xfer.type > JTAG_SDR_XFER)
> > +			return -EINVAL;
> > +
> > +		if (xfer.direction > JTAG_WRITE_XFER)
> > +			return -EINVAL;
> > +
> > +		if (xfer.endstate > JTAG_STATE_PAUSEDR)
> > +			return -EINVAL;
> > +
> > +		data_size = DIV_ROUND_UP(xfer.length, BITS_PER_BYTE);
> > +		xfer_data = memdup_user(u64_to_user_ptr(xfer.tdio),
> data_size);
> > +
> > +		if (!xfer_data)
> > +			return -EFAULT;
> > +
> > +		if (jtag->ops->xfer) {
> > +			err = jtag->ops->xfer(jtag, &xfer, xfer_data);
> > +		} else {
> > +			kfree(xfer_data);
> > +			return -EOPNOTSUPP;
> > +		}
> 
> Why don't you move all of the code here into a function which will make the
> error handling consistent? Also, checking whether the jtag adapter

Greg KH <gregkh@linuxfoundation.org> Say to move all of this insight ioctl 

> implements ops->xfer should probably be done before you do the
> memdup_user().

Yes

> > +		if (err) {
> > +			kfree(xfer_data);
> > +			return -EFAULT;
> > +		}
> > +
> > +		if (jtag->ops->mode_set)
> > +			err = jtag->ops->mode_set(jtag, value);
> > +		else
> > +			err = -EOPNOTSUPP;
> > +		break;
> 
> Same here, this can be checked before get_user().
> 

Yes

> > +	if (jtag->opened) {
> > +		mutex_unlock(&jtag->open_lock);
> > +		return -EINVAL;
> 
> -EBUSY maybe?
> 

Yes


> > +
> > +	jtag = kzalloc(sizeof(*jtag) + round_up(priv_size,
> ARCH_DMA_MINALIGN),
> > +		       GFP_KERNEL);
> > +	if (!jtag)
> > +		return NULL;
> 
> If you set ARCH_DMA_MINALIGN to 1 when not defined, what is this
> achieving that kmalloc() is not already doing?
> 

Removed ARCH_DMA_MINALIGN

> > +
> > +	jtag->ops = ops;
> > +	return jtag;
> > +}
> > +EXPORT_SYMBOL_GPL(jtag_alloc);
> > +
> > +void jtag_free(struct jtag *jtag)
> > +{
> > +	kfree(jtag);
> > +}
> > +EXPORT_SYMBOL_GPL(jtag_free);
> > +
> > +int jtag_register(struct jtag *jtag)
> > +{
> > +	char *name;
> > +	int err;
> > +	int id;
> > +
> > +	id = ida_simple_get(&jtag_ida, 0, 0, GFP_KERNEL);
> > +	if (id < 0)
> > +		return id;
> > +
> > +	jtag->id = id;
> > +
> > +	name = kzalloc(MAX_JTAG_NAME_LEN, GFP_KERNEL);
> > +	if (!name) {
> > +		err = -ENOMEM;
> > +		goto err_jtag_alloc;
> > +	}
> 
> Can't you use jtag->miscdev.dev here to simplify the allocation error
> handling?
> 

How, what you mean?

> > +#ifndef ARCH_DMA_MINALIGN
> > +#define ARCH_DMA_MINALIGN 1
> > +#endif
> 
> Why?
> 

Not used now, Deleted

> > +#endif /* __JTAG_H */
> > diff --git a/include/uapi/linux/jtag.h b/include/uapi/linux/jtag.h new
> > file mode 100644 index 0000000..cda2520
> > --- /dev/null
> > +++ b/include/uapi/linux/jtag.h
> 
> [snip]
> 
> > +struct jtag_xfer {
> > +	__u8	type;
> > +	__u8	direction;
> 
> Can these two be an enum referring to what you defined earlier?
> 

Greg KH <gregkh@linuxfoundation.org> say:

"All structures that cross the user/kernel boundry have to use the __ type variables.
No "unsigned char", it has to be "__u8", no "unsigned short", it has to be "__u16", and so on.
Also, watch out for your enumerated types, what's the packing end up looking like on these structures?  Have you verified it works with a 64bit kernel and 32bit userspace all correctly?"

So I use __u8 type instead of enum to avoid errors while crossing 64bit kernel and 32bit userspace.

> > +	__u8	endstate;
> > +	__u32	length;
> > +	__u64	tdio;
> > +};
> --
> Florian

Thaks.

  parent reply	other threads:[~2018-01-12 16:42 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-25 11:53 [patch v15 0/4] JTAG driver introduction Oleksandr Shamray
2017-12-25 11:53 ` Oleksandr Shamray
2017-12-25 11:53 ` [patch v15 1/4] drivers: jtag: Add JTAG core driver Oleksandr Shamray
2017-12-25 11:53   ` Oleksandr Shamray
2017-12-25 23:09   ` Florian Fainelli
2017-12-25 23:09     ` Florian Fainelli
2017-12-25 23:09     ` Florian Fainelli
2017-12-26  8:47     ` Jiri Pirko
2017-12-26  8:47       ` Jiri Pirko
2017-12-26  8:47       ` Jiri Pirko
2018-01-12 16:42     ` Oleksandr Shamray [this message]
2018-01-12 16:42       ` Oleksandr Shamray
2018-01-12 16:42       ` Oleksandr Shamray
2018-01-12 16:42       ` Oleksandr Shamray
2017-12-25 11:53 ` [patch v15 2/4] drivers: jtag: Add Aspeed SoC 24xx and 25xx families JTAG master driver Oleksandr Shamray
2017-12-25 11:53   ` Oleksandr Shamray
2018-01-11 17:45   ` Joel Stanley
2018-01-11 17:45     ` Joel Stanley
2017-12-25 11:53 ` [patch v15 3/4] Documentation: jtag: Add bindings for " Oleksandr Shamray
2017-12-25 11:53   ` Oleksandr Shamray
2017-12-25 11:53   ` Oleksandr Shamray
2018-01-11 17:50   ` Joel Stanley
2018-01-11 17:50     ` Joel Stanley
2018-01-11 23:54     ` Joel Stanley
2018-01-11 23:54       ` Joel Stanley
2018-01-11 23:54       ` Joel Stanley
2017-12-25 11:53 ` [patch v15 4/4] Documentation: jtag: Add ABI documentation Oleksandr Shamray
2017-12-25 11:53   ` Oleksandr Shamray
2017-12-25 11:53   ` Oleksandr Shamray
2018-01-18 21:27   ` Pavel Machek
2018-01-18 21:27     ` Pavel Machek
2018-01-18 21:27     ` Pavel Machek
2017-12-25 23:17 ` [patch v15 0/4] JTAG driver introduction Florian Fainelli
2017-12-25 23:17   ` Florian Fainelli
2017-12-25 23:17   ` Florian Fainelli

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=AM4PR0501MB2194A5EF09E5F3140F2C211CB1170@AM4PR0501MB2194.eurprd05.prod.outlook.com \
    --to=oleksandrs@mellanox.com \
    --cc=arnd@arndb.de \
    --cc=davem@davemloft.net \
    --cc=devicetree@vger.kernel.org \
    --cc=f.fainelli@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jiri@mellanox.com \
    --cc=jiri@resnulli.us \
    --cc=joel@jms.id.au \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=openbmc@lists.ozlabs.org \
    --cc=openocd-devel-owner@lists.sourceforge.net \
    --cc=robh+dt@kernel.org \
    --cc=system-sw-low-level@mellanox.com \
    --cc=tklauser@distanz.ch \
    --cc=vadimp@mellanox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.