lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CANFp7mUAeqekz57yOB8oF67wZ9=f9b8decmr-maia0DYVUQ89A@mail.gmail.com>
Date: Wed, 25 Sep 2024 14:35:14 -0700
From: Abhishek Pandit-Subedi <abhishekpandit@...omium.org>
To: Dmitry Baryshkov <dmitry.baryshkov@...aro.org>
Cc: heikki.krogerus@...ux.intel.com, tzungbi@...nel.org, jthies@...gle.com, 
	pmalani@...omium.org, akuchynski@...gle.com, 
	Benson Leung <bleung@...omium.org>, Guenter Roeck <groeck@...omium.org>, 
	chrome-platform@...ts.linux.dev, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 8/8] platform/chrome: cros_ec_typec: Disable auto_enter

On Wed, Sep 25, 2024 at 2:24 PM Dmitry Baryshkov
<dmitry.baryshkov@...aro.org> wrote:
>
> On Wed, Sep 25, 2024 at 10:39:00AM GMT, Abhishek Pandit-Subedi wrote:
> > On Wed, Sep 25, 2024 at 10:03 AM Dmitry Baryshkov
> > <dmitry.baryshkov@...aro.org> wrote:
> > >
> > > On Wed, Sep 25, 2024 at 09:25:09AM GMT, Abhishek Pandit-Subedi wrote:
> > > > Altmodes with cros_ec are either automatically entered by the EC or
> > > > entered by typecd in userspace so we should not auto enter from the
> > > > kernel.
> > >
> > > This makes policy decision for the whole platform. Consider somebody
> > > running normal Linux distro on chromebooks. Can this be configured by
> > > the userspace itself?
> >
> > This is just the default for when the driver registers. You will then
> > find that there is now a sysfs entry for auto_enter that you can
> > control from userspace to allow you to auto-enter the mode on partner
> > attach (which you could probably write a udev rule for).
>
> I think, a usual policy is to handle everything automatically, unless
> userspace configures it in a different way. Otherwise it might be really
> surprising to users, if the kernel expects an action from the
> non-existing userspace agent.



>
> > I still need to send a follow-up for how to handle auto-enter when
> > there are multiple modes available on the partner that are all
> > enabled. This first patch series is mostly about supporting existing
> > use-case for ChromeOS.
>
> Doesn't EC decide that, which AltMode to select?

On ChromeOS systems with only DisplayPort supported, ChromeOS EC
automatically enters DP altmode.

However, systems with Thunderbolt + USB4 have the AP_DRIVEN_MODE
feature enabled which expects the AP to enter/exit modes (due to the
security implication of TBT PCIE tunnels). ChromeOS has a userspace
daemon, typecd (https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/typecd),
which handles the mode entry policy for ChromeOS. Currently, it talks
to the EC directly (via ectool) and this patch series is moving this
support to the kernel so we can use sysfs instead.

Currently, if you put a normal Linux distro on a ChromeOS device with
AP_DRIVEN_MODE enabled from the EC, it will not automatically enter
any alternate modes and there's no mechanism to do so via sysfs
either. You will need to either port typecd or compile + deploy ectool
to make the mode requests directly.

>
> > > > Signed-off-by: Abhishek Pandit-Subedi <abhishekpandit@...omium.org>
> > > > ---
> > > >
> > > >  drivers/platform/chrome/cros_ec_typec.c | 2 ++
> > > >  1 file changed, 2 insertions(+)
> > > >
> > > > diff --git a/drivers/platform/chrome/cros_ec_typec.c b/drivers/platform/chrome/cros_ec_typec.c
> > > > index ec13d84d11b8..e06a0f2712ce 100644
> > > > --- a/drivers/platform/chrome/cros_ec_typec.c
> > > > +++ b/drivers/platform/chrome/cros_ec_typec.c
> > > > @@ -294,6 +294,7 @@ static int cros_typec_register_port_altmodes(struct cros_typec_data *typec,
> > > >       desc.svid = USB_TYPEC_DP_SID;
> > > >       desc.mode = USB_TYPEC_DP_MODE;
> > > >       desc.vdo = DP_PORT_VDO;
> > > > +     desc.no_auto_enter = true;
> > > >       amode = cros_typec_register_displayport(port, &desc,
> > > >                                               typec->ap_driven_altmode);
> > > >       if (IS_ERR(amode))
> > > > @@ -314,6 +315,7 @@ static int cros_typec_register_port_altmodes(struct cros_typec_data *typec,
> > > >               memset(&desc, 0, sizeof(desc));
> > > >               desc.svid = USB_TYPEC_TBT_SID;
> > > >               desc.mode = TYPEC_ANY_MODE;
> > > > +             desc.no_auto_enter = true;
> > > >               amode = cros_typec_register_thunderbolt(port, &desc);
> > > >               if (IS_ERR(amode))
> > > >                       return PTR_ERR(amode);
> > > > --
> > > > 2.46.0.792.g87dc391469-goog
> > > >
> > >
> > > --
> > > With best wishes
> > > Dmitry
>
> --
> With best wishes
> Dmitry

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ