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&data=02%7C01%7CNehal-bakulchandra.Shah%40amd.com%7Ceb1ac5e877db4fa9d75f08d7a8ad87a3%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637163335569266081&sdata=KemJKkVhpqDo%2FSbHhVaMz7jrcploEALJYg%2BRWvhJ7bM%3D&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;
}
next prev parent 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).