linux-usb.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Heikki Krogerus <heikki.krogerus@linux.intel.com>
To: "Shah, Nehal-bakulchandra" <nbshah@amd.com>
Cc: ajayg@nvidia.com, linux-usb@vger.kernel.org
Subject: Re: UCSI:CCG: AMD Platform
Date: Thu, 13 Feb 2020 14:00:11 +0200	[thread overview]
Message-ID: <20200213120011.GL1498@kuha.fi.intel.com> (raw)
In-Reply-To: <aca4968f-06e8-6ac3-09c8-4810947e92b3@amd.com>

[-- Attachment #1: Type: text/plain, Size: 2336 bytes --]

On Mon, Feb 10, 2020 at 03:39:38PM +0530, Shah, Nehal-bakulchandra wrote:
> Hi
> 
> Sorry for the delayed response. I was on vacation.
> On 2/3/2020 7:02 PM, Heikki Krogerus wrote:
> > On Mon, Feb 03, 2020 at 03:28:11PM +0200, Heikki Krogerus wrote:
> >> Hi,
> >>
> >> On Mon, Feb 03, 2020 at 10:52:52AM +0530, Shah, Nehal-bakulchandra wrote:
> >>> Currently i am working on enabling UCSI support
> >>> for CCGx based controller on AMD GPU Cards.
> >>>
> >>> Now i am observing the issue reported here when
> >>> i unplug the cable.
> >>>
> >>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugzilla.redhat.com%2Fshow_bug.cgi%3Fid%3D1762031&amp;data=02%7C01%7CNehal-bakulchandra.Shah%40amd.com%7Ceb1ac5e877db4fa9d75f08d7a8ad87a3%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637163335569266081&amp;sdata=KemJKkVhpqDo%2FSbHhVaMz7jrcploEALJYg%2BRWvhJ7bM%3D&amp;reserved=0
> >>>
> >>> Also would like to know is there any way we can
> >>> get user level notifications for UCSI?
> >>
> >> If you want to see the actual UCSI notification in user space, then
> >> that is not possible, but the driver does produce trace output, and I
> >> would actually like to see what we got there. You need debugfs to be
> >> mounted. Then try the following:
> >>
> >>         # Unload all UCSI modules
> >>         modprobe -r ucsi_acpi
> >>
> >>         # At this point you should plug-in the problematic device
> >>
> >>         # Reload the UCSI core module
> >>         modprobe typec_ucsi
> >>
> >>         # Enable UCSI tracing
> >>         echo 1 > /sys/kernel/debug/tracing/events/ucsi/enable
> >>
> >>         # Now reload the ACPI glue driver
> >>         modprobe ucsi_acpi
> >>
> >>         # Unplug the problematic device so that you see the error
> >>
> >>         # Finally dump the trace output
> >>         cat /sys/kernel/debug/tracing/trace
> >>
> >> So if that works, please send the trace output to me.
> > 
> > Actually, first things first. Please share your dmesg output. Are you
> > using ucsi_acpi or ucsi_ccg glue driver?
> > 
> > thanks,
> > 
> 
> I am using CCG based UCSI driver without any
> modification.For I2C part i have written custom
> driver.
> 
> I have attached the trace out and dmesg crash log.
> 
> Please have a look

Thanks for the logs. Can you test the attached diff?

thanks,

-- 
heikki

[-- Attachment #2: port_lock.diff --]
[-- Type: text/plain, Size: 1485 bytes --]

diff --git a/drivers/usb/typec/ucsi/ucsi.c b/drivers/usb/typec/ucsi/ucsi.c
index ddf2ad3752de..37837bf5385b 100644
--- a/drivers/usb/typec/ucsi/ucsi.c
+++ b/drivers/usb/typec/ucsi/ucsi.c
@@ -870,12 +870,16 @@ static int ucsi_register_port(struct ucsi *ucsi, int index)
 	con->num = index + 1;
 	con->ucsi = ucsi;
 
+	mutex_lock(&con->lock);
+
 	/* Get connector capability */
 	command = UCSI_GET_CONNECTOR_CAPABILITY;
 	command |= UCSI_CONNECTOR_NUMBER(con->num);
 	ret = ucsi_run_command(ucsi, command, &con->cap, sizeof(con->cap));
-	if (ret < 0)
+	if (ret < 0) {
+		mutex_unlock(&con->lock);
 		return ret;
+	}
 
 	if (con->cap.op_mode & UCSI_CONCAP_OPMODE_DRP)
 		cap->data = TYPEC_PORT_DRD;
@@ -907,8 +911,10 @@ static int ucsi_register_port(struct ucsi *ucsi, int index)
 
 	/* Register the connector */
 	con->port = typec_register_port(ucsi->dev, cap);
-	if (IS_ERR(con->port))
+	if (IS_ERR(con->port)) {
+		mutex_unlock(&con->lock);
 		return PTR_ERR(con->port);
+	}
 
 	/* Alternate modes */
 	ret = ucsi_register_altmodes(con, UCSI_RECIPIENT_CON);
@@ -922,6 +928,7 @@ static int ucsi_register_port(struct ucsi *ucsi, int index)
 			       sizeof(con->status));
 	if (ret < 0) {
 		dev_err(ucsi->dev, "con%d: failed to get status\n", con->num);
+		mutex_unlock(&con->lock);
 		return 0;
 	}
 
@@ -956,6 +963,7 @@ static int ucsi_register_port(struct ucsi *ucsi, int index)
 
 	trace_ucsi_register_port(con->num, &con->status);
 
+	mutex_unlock(&con->lock);
 	return 0;
 }
 

  reply	other threads:[~2020-02-13 12:00 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-03  5:22 UCSI:CCG: AMD Platform Shah, Nehal-bakulchandra
2020-02-03 13:28 ` Heikki Krogerus
2020-02-03 13:32   ` Heikki Krogerus
2020-02-10 10:09     ` Shah, Nehal-bakulchandra
2020-02-13 12:00       ` Heikki Krogerus [this message]
2020-02-13 12:05         ` Heikki Krogerus
2020-02-14 14:28           ` Shah, Nehal-bakulchandra
2020-02-24  9:08             ` Shah, Nehal-bakulchandra
2020-02-27 12:23               ` Heikki Krogerus
2020-02-27 16:59                 ` Shah, Nehal-bakulchandra
2020-02-29  3:25                   ` Shah, Nehal-bakulchandra
2020-03-26  8:35                     ` Heikki Krogerus
2020-03-26 13:41                       ` Shah, Nehal-bakulchandra

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=20200213120011.GL1498@kuha.fi.intel.com \
    --to=heikki.krogerus@linux.intel.com \
    --cc=ajayg@nvidia.com \
    --cc=linux-usb@vger.kernel.org \
    --cc=nbshah@amd.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).