mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Adam Young <admiyo@amperemail.onmicrosoft.com>
To: Dan Williams <dan.j.williams@intel.com>, admiyo@os.amperecomputing.com
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	Jeremy Kerr <jk@codeconstruct.com.au>,
	Matt Johnston <matt@codeconstruct.com.au>,
	"David S . Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Sudeep Holla <sudeep.holla@arm.com>,
	Jonathan Cameron <Jonathan.Cameron@huawei.com>,
	Huisong Li <lihuisong@huawei.com>
Subject: Re: [PATCH v4 0/3] MCTP over PCC
Date: Mon, 15 Jul 2024 14:21:11 -0400	[thread overview]
Message-ID: <3ad21332-c58a-46bb-8d3b-8b3d1cd8cb75@amperemail.onmicrosoft.com> (raw)
In-Reply-To: <66900ef8e7c79_1a77429414@dwillia2-xfh.jf.intel.com.notmuch>

Apologies for not addressing these concerns before updating.  If there 
is a V6 (am sure there will be) I will update the cover.

MCTP is a general purpose  protocol so  it would  be impossible to 
enumerate all the use cases, but some of the ones that are most topical 
are attestation and RAS support.  There are a handful of protocols built 
on top of MCTP, to include PLDM and SPDM, both specified by the DMTF.

https://www.dmtf.org/sites/default/files/standards/documents/DSP0240_1.0.0.pdf
https://www.dmtf.org/sites/default/files/standards/documents/DSP0274_1.3.0.pd

SPDM entails various usages, including device identity collection, 
device authentication, measurement collection, and device secure session 
establishment.

PLDM is more likely to be used  for hardware support: temperature, 
voltage, or fan sensor control.

At least two companies have devices that can make use of the mechanism. 
One is Ampere Computing, my employer.

The mechanism it uses is called Platform Communication Channels is part 
of the ACPI spec: 
https://uefi.org/htmlspecs/ACPI_Spec_6_4_html/14_Platform_Communications_Channel/Platform_Comm_Channel.html

Since it is a socket interface, the system administrator also has  the 
ability to ignore an MCTP link that they do not want to enable.  This 
link would be exposed to the end user, but would not be usable.

If MCTP support is disabled  in the Kernel, this driver would also be 
disabled.

PCC is based on a shared buffer and a set of I/O mapped memory locations 
that the Spec calls registers.  This mechanism exists regardless of the 
existence of the driver. Thus, if the user has the ability to map these  
physical location to virtual locations, they have the ability to drive 
the hardware.  Thus, there is a security aspect to this mechanism that 
extends beyond the responsibilities of the operating system.

If the hardware does not expose the PCC in the ACPI table, this device 
will never be enabled.  Thus it is only an issue on hard that does 
support PCC.  In that case, it is up to the remote controller to 
sanitize communication; MCTP will be exposed as a socket interface, and 
userland can send any crafted packet it wants.  It would thus also be 
incumbent on the hardware manufacturer to allow the end user to disable 
MCTP over PCC communication if they did not want to expose it.

Does this cover you concerns?


On 7/11/24 12:57, Dan Williams wrote:

> admiyo@ wrote:
>> From: Adam Young<admiyo@os.amperecomputing.com>
>>
>> This series adds support for the Management Control Transport Protocol (MCTP)
>> over the Platform Communication Channel (PCC) mechanism.
>>
>> MCTP defines a communication model intended to
>> facilitate communication between Management controllers
>> and other management controllers, and between Management
>> controllers and management devices
>>
>> PCC is a mechanism for communication between components within
>> the  Platform.  It is a composed of shared memory regions,
>> interrupt registers, and status registers.
>>
>> The MCTP over PCC driver makes use of two PCC channels. For
>> sending messages, it uses a Type 3 channel, and for receiving
>> messages it uses the paired Type 4 channel.  The device
>> and corresponding channels are specified via ACPI.
>>
>> The first patch in the series implements a mechanism to allow the driver
>> to indicate whether an ACK should be sent back to the caller
>> after processing the interrupt.  This is an optional feature in
>> the PCC code, but has been made explicitly required in another driver.
>> The implementation here maintains the backwards compatibility of that
>> driver.
>>
>> The second patch in the series is the required change from ACPICA
>> code that will be imported into the Linux kernel when synchronized
>> with the ACPICA repository. It ahs already merged there and will
>> be merged in as is.  It is included here so that the patch series
>> can run and be tested prior to that merge.
> This cover letter looks woefully insufficient.
>
> What is the end user visible effect of merging these patches, or not
> merging these patches?  I.e. what does Linux gain by merging them, what
> pressing end user need goes unsatisfied if these are not merged? What is
> the security model for these commands, i.e. how does a distro judge
> whether this facility allows bypass of Kernel Lockdown protections?
>
> The Kconfig does not help either. All this patch says is "communication
> path exists, plumb it direct to userspace", with no discussion of
> intended use cases, assumptions, or tradeoffs.

      reply	other threads:[~2024-07-15 18:21 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-02 22:58 admiyo
2024-07-02 22:58 ` [PATCH v4 1/3] mctp pcc: Check before sending MCTP PCC response ACK admiyo
2024-07-03 19:52   ` Simon Horman
2024-07-04  2:44   ` kernel test robot
2024-07-04  8:53   ` kernel test robot
2024-07-04  9:40   ` Jeremy Kerr
2024-07-02 22:58 ` [PATCH v4 2/3] mctp pcc: Allow PCC Data Type in MCTP resource admiyo
2024-07-02 22:58 ` [PATCH v4 3/3] mctp pcc: Implement MCTP over PCC Transport admiyo
2024-07-03 19:53   ` Simon Horman
2024-07-04  5:43   ` kernel test robot
2024-07-04  6:08   ` kernel test robot
2024-07-04 10:23   ` Jeremy Kerr
2024-07-08 22:16     ` Adam Young
2024-07-11 16:57 ` [PATCH v4 0/3] MCTP over PCC Dan Williams
2024-07-15 18:21   ` Adam Young [this message]

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=3ad21332-c58a-46bb-8d3b-8b3d1cd8cb75@amperemail.onmicrosoft.com \
    --to=admiyo@amperemail.onmicrosoft.com \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=admiyo@os.amperecomputing.com \
    --cc=dan.j.williams@intel.com \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=jk@codeconstruct.com.au \
    --cc=kuba@kernel.org \
    --cc=lihuisong@huawei.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=matt@codeconstruct.com.au \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=sudeep.holla@arm.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

all inboxes | Powered by JetHome®