All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v6 10/12] usb: dbc: add handshake between debug target and host
  2016-01-26  4:14 [PATCH v6 00/12] usb: early: add support for early printk through USB3 debug port Lu Baolu
@ 2016-01-26  4:14 ` Lu Baolu
  0 siblings, 0 replies; 3+ messages in thread
From: Lu Baolu @ 2016-01-26  4:14 UTC (permalink / raw)
  To: Greg Kroah-Hartman; +Cc: linux-usb, linux-kernel, Lu Baolu

After DbC setup, debug target needs to wait until tty driver and
application (e.g. mincom) on debug taget start.  Otherwise, out
messages might be ignored.

This patch adds a ping/pong mechanism between debug target and
host. Debug target will be waiting there until user presses 'Y'
or 'y' in the tty application.

Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
---
 drivers/usb/early/xhci-dbc.c | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/drivers/usb/early/xhci-dbc.c b/drivers/usb/early/xhci-dbc.c
index 6c24ba0..37c5c87 100644
--- a/drivers/usb/early/xhci-dbc.c
+++ b/drivers/usb/early/xhci-dbc.c
@@ -32,6 +32,9 @@
 static struct xdbc_state xdbc_stat;
 static struct xdbc_state *xdbcp = &xdbc_stat;
 
+static int early_xdbc_read(struct console *con, char *str, unsigned n);
+static void early_xdbc_write(struct console *con, const char *str, u32 n);
+
 #ifdef DBC_DEBUG
 #define	XDBC_DEBUG_BUF_SIZE	(PAGE_SIZE * 32)
 #define	MSG_MAX_LINE		128
@@ -860,8 +863,12 @@ int __init early_xdbc_init(char *s)
 {
 	u32 bus = 0, dev = 0, func = 0;
 	unsigned long dbgp_num = 0;
+	char *ping = "Press Y to continue...\n";
+	char pong[64];
+	size_t size;
 	u32 offset;
 	int ret;
+	int retry = 20;
 
 	if (!early_pci_allowed())
 		return -EPERM;
@@ -904,6 +911,21 @@ int __init early_xdbc_init(char *s)
 		return ret;
 	}
 
+	while (retry > 0) {
+		early_xdbc_write(NULL, ping, strlen(ping));
+		size = early_xdbc_read(NULL, pong, 64);
+		if (size > 0) {
+			xdbc_trace("%s: pong message: %s\n", __func__, pong);
+			if (pong[0] == 'Y' || pong[0] == 'y')
+				break;
+		} else {
+			xdbc_trace("%s: pong message error %d\n",
+				__func__, size);
+		}
+
+		retry--;
+	}
+
 	return 0;
 }
 
@@ -1325,6 +1347,11 @@ int xdbc_bulk_write(const char *bytes, int size)
  * Start a bulk-in or bulk-out transfer, wait until transfer completion
  * or error. Return the count of actually transferred bytes or error.
  */
+static int early_xdbc_read(struct console *con, char *str, unsigned n)
+{
+	return xdbc_bulk_read(str, n, 0);
+}
+
 static void early_xdbc_write(struct console *con, const char *str, u32 n)
 {
 	int chunk, ret;
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v6 10/12] usb: dbc: add handshake between debug target and host
       [not found] <201601261754.HqYDuGWL%fengguang.wu@intel.com>
@ 2016-01-26 10:40 ` Julia Lawall
  2016-01-26 11:01   ` Lu Baolu
  0 siblings, 1 reply; 3+ messages in thread
From: Julia Lawall @ 2016-01-26 10:40 UTC (permalink / raw)
  To: Lu Baolu; +Cc: kbuild-all, Greg Kroah-Hartman, linux-usb, linux-kernel

Please check.  As far as I can see, the call to early_xdbc_read ends up at
xdbc_bulk_transfer, which return negative error codes on failure.

julia

On Tue, 26 Jan 2016, kbuild test robot wrote:

> CC: kbuild-all@01.org
> In-Reply-To: <1453781665-4714-11-git-send-email-baolu.lu@linux.intel.com>
> TO: Lu Baolu <baolu.lu@linux.intel.com>
> CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> CC: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Lu Baolu <baolu.lu@linux.intel.com>
>
> Hi Lu,
>
> [auto build test WARNING on usb/usb-testing]
> [also build test WARNING on v4.5-rc1 next-20160125]
> [if your patch is applied to the wrong git tree, please drop us a note to help improving the system]
>
> url:    https://github.com/0day-ci/linux/commits/Lu-Baolu/usb-early-add-support-for-early-printk-through-USB3-debug-port/20160126-122049
> base:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing
> :::::: branch date: 5 hours ago
> :::::: commit date: 5 hours ago
>
> >> drivers/usb/early/xhci-dbc.c:917:6-10: WARNING: Unsigned expression compared with zero: size > 0
>
> git remote add linux-review https://github.com/0day-ci/linux
> git remote update linux-review
> git checkout cdae956781925bbc269faa7f40c931a2825be11a
> vim +917 drivers/usb/early/xhci-dbc.c
>
> 5319db53 Lu Baolu 2016-01-26  901
> 5319db53 Lu Baolu 2016-01-26  902  	/* hand over the owner of host from BIOS */
> 5319db53 Lu Baolu 2016-01-26  903  	xdbc_bios_handoff();
> 5319db53 Lu Baolu 2016-01-26  904
> 5319db53 Lu Baolu 2016-01-26  905  	ret = xdbc_setup();
> 5319db53 Lu Baolu 2016-01-26  906  	if (ret < 0) {
> 5319db53 Lu Baolu 2016-01-26  907  		pr_notice("failed to setup xHCI DbC connection\n");
> 5319db53 Lu Baolu 2016-01-26  908  		xdbcp->xhci_base = NULL;
> 5319db53 Lu Baolu 2016-01-26  909  		xdbcp->xdbc_reg = NULL;
> 12cd5775 Lu Baolu 2016-01-26  910  		xdbc_dump_debug_buffer();
> 5319db53 Lu Baolu 2016-01-26  911  		return ret;
> 5319db53 Lu Baolu 2016-01-26  912  	}
> 5319db53 Lu Baolu 2016-01-26  913
> cdae9567 Lu Baolu 2016-01-26  914  	while (retry > 0) {
> cdae9567 Lu Baolu 2016-01-26  915  		early_xdbc_write(NULL, ping, strlen(ping));
> cdae9567 Lu Baolu 2016-01-26  916  		size = early_xdbc_read(NULL, pong, 64);
> cdae9567 Lu Baolu 2016-01-26 @917  		if (size > 0) {
> cdae9567 Lu Baolu 2016-01-26  918  			xdbc_trace("%s: pong message: %s\n", __func__, pong);
> cdae9567 Lu Baolu 2016-01-26  919  			if (pong[0] == 'Y' || pong[0] == 'y')
> cdae9567 Lu Baolu 2016-01-26  920  				break;
> cdae9567 Lu Baolu 2016-01-26  921  		} else {
> cdae9567 Lu Baolu 2016-01-26  922  			xdbc_trace("%s: pong message error %d\n",
> cdae9567 Lu Baolu 2016-01-26  923  				__func__, size);
> cdae9567 Lu Baolu 2016-01-26  924  		}
> cdae9567 Lu Baolu 2016-01-26  925
>
> ---
> 0-DAY kernel test infrastructure                Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v6 10/12] usb: dbc: add handshake between debug target and host
  2016-01-26 10:40 ` [PATCH v6 10/12] usb: dbc: add handshake between debug target and host Julia Lawall
@ 2016-01-26 11:01   ` Lu Baolu
  0 siblings, 0 replies; 3+ messages in thread
From: Lu Baolu @ 2016-01-26 11:01 UTC (permalink / raw)
  To: Julia Lawall; +Cc: kbuild-all, Greg Kroah-Hartman, linux-usb, linux-kernel



On 01/26/2016 06:40 PM, Julia Lawall wrote:
> Please check.  As far as I can see, the call to early_xdbc_read ends up at
> xdbc_bulk_transfer, which return negative error codes on failure.

Good catch. Thank you. I will correct it.

>
> julia
>
> On Tue, 26 Jan 2016, kbuild test robot wrote:
>
>> CC: kbuild-all@01.org
>> In-Reply-To: <1453781665-4714-11-git-send-email-baolu.lu@linux.intel.com>
>> TO: Lu Baolu <baolu.lu@linux.intel.com>
>> CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>> CC: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Lu Baolu <baolu.lu@linux.intel.com>
>>
>> Hi Lu,
>>
>> [auto build test WARNING on usb/usb-testing]
>> [also build test WARNING on v4.5-rc1 next-20160125]
>> [if your patch is applied to the wrong git tree, please drop us a note to help improving the system]
>>
>> url:    https://github.com/0day-ci/linux/commits/Lu-Baolu/usb-early-add-support-for-early-printk-through-USB3-debug-port/20160126-122049
>> base:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing
>> :::::: branch date: 5 hours ago
>> :::::: commit date: 5 hours ago
>>
>>>> drivers/usb/early/xhci-dbc.c:917:6-10: WARNING: Unsigned expression compared with zero: size > 0
>> git remote add linux-review https://github.com/0day-ci/linux
>> git remote update linux-review
>> git checkout cdae956781925bbc269faa7f40c931a2825be11a
>> vim +917 drivers/usb/early/xhci-dbc.c
>>
>> 5319db53 Lu Baolu 2016-01-26  901
>> 5319db53 Lu Baolu 2016-01-26  902  	/* hand over the owner of host from BIOS */
>> 5319db53 Lu Baolu 2016-01-26  903  	xdbc_bios_handoff();
>> 5319db53 Lu Baolu 2016-01-26  904
>> 5319db53 Lu Baolu 2016-01-26  905  	ret = xdbc_setup();
>> 5319db53 Lu Baolu 2016-01-26  906  	if (ret < 0) {
>> 5319db53 Lu Baolu 2016-01-26  907  		pr_notice("failed to setup xHCI DbC connection\n");
>> 5319db53 Lu Baolu 2016-01-26  908  		xdbcp->xhci_base = NULL;
>> 5319db53 Lu Baolu 2016-01-26  909  		xdbcp->xdbc_reg = NULL;
>> 12cd5775 Lu Baolu 2016-01-26  910  		xdbc_dump_debug_buffer();
>> 5319db53 Lu Baolu 2016-01-26  911  		return ret;
>> 5319db53 Lu Baolu 2016-01-26  912  	}
>> 5319db53 Lu Baolu 2016-01-26  913
>> cdae9567 Lu Baolu 2016-01-26  914  	while (retry > 0) {
>> cdae9567 Lu Baolu 2016-01-26  915  		early_xdbc_write(NULL, ping, strlen(ping));
>> cdae9567 Lu Baolu 2016-01-26  916  		size = early_xdbc_read(NULL, pong, 64);
>> cdae9567 Lu Baolu 2016-01-26 @917  		if (size > 0) {
>> cdae9567 Lu Baolu 2016-01-26  918  			xdbc_trace("%s: pong message: %s\n", __func__, pong);
>> cdae9567 Lu Baolu 2016-01-26  919  			if (pong[0] == 'Y' || pong[0] == 'y')
>> cdae9567 Lu Baolu 2016-01-26  920  				break;
>> cdae9567 Lu Baolu 2016-01-26  921  		} else {
>> cdae9567 Lu Baolu 2016-01-26  922  			xdbc_trace("%s: pong message error %d\n",
>> cdae9567 Lu Baolu 2016-01-26  923  				__func__, size);
>> cdae9567 Lu Baolu 2016-01-26  924  		}
>> cdae9567 Lu Baolu 2016-01-26  925
>>
>> ---
>> 0-DAY kernel test infrastructure                Open Source Technology Center
>> https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
>>

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2016-01-26 11:01 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <201601261754.HqYDuGWL%fengguang.wu@intel.com>
2016-01-26 10:40 ` [PATCH v6 10/12] usb: dbc: add handshake between debug target and host Julia Lawall
2016-01-26 11:01   ` Lu Baolu
2016-01-26  4:14 [PATCH v6 00/12] usb: early: add support for early printk through USB3 debug port Lu Baolu
2016-01-26  4:14 ` [PATCH v6 10/12] usb: dbc: add handshake between debug target and host Lu Baolu

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.