linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: <dan.j.williams@intel.com>
To: Alexey Kardashevskiy <aik@amd.com>,
	Dan Williams <dan.j.williams@intel.com>,
	<linux-coco@lists.linux.dev>, <linux-pci@vger.kernel.org>
Cc: <yilun.xu@linux.intel.com>, <aneesh.kumar@kernel.org>,
	<gregkh@linuxfoundation.org>, Bjorn Helgaas <bhelgaas@google.com>,
	"Lukas Wunner" <lukas@wunner.de>,
	Samuel Ortiz <sameo@rivosinc.com>
Subject: Re: [PATCH v5 07/10] PCI/IDE: Add IDE establishment helpers
Date: Thu, 4 Sep 2025 18:27:59 -0700	[thread overview]
Message-ID: <68ba3c9f508ed_75e3100ef@dwillia2-mobl4.notmuch> (raw)
In-Reply-To: <eeca3820-01dd-4abc-a437-cf46dc718ab6@amd.com>

Alexey Kardashevskiy wrote:
[..]
> > +static void set_ide_sel_ctl(struct pci_dev *pdev, struct pci_ide *ide, int pos,
> > +			    bool enable)
> > +{
> > +	u32 val = FIELD_PREP(PCI_IDE_SEL_CTL_ID, ide->stream_id) |
> > +		  FIELD_PREP(PCI_IDE_SEL_CTL_CFG_EN, pdev->ide_cfg) |
> 
> There was:
> FIELD_PREP(PCI_IDE_SEL_CTL_DEFAULT, 1) |
> 
> and now it is gone, why? And it is not in any change log, took me a while to find out what broke.

Oh, sorry, it results from this feedback.

http://lore.kernel.org/9683c850-3152-4da5-97f1-3e86ba39e8d3@nvidia.com

...but since the address association registers are not programmed then
nothing routes TLPs to the IDE stream. My mistake.

We may eventually need the ability for the stream allocation path to also
allocate a traffic class in the root-port, but for now this assumes single
device TC==0.

For now I am adding this:

-- 8< --
diff --git a/drivers/pci/ide.c b/drivers/pci/ide.c
index 4f5aa42e05ef..610603865d9e 100644
--- a/drivers/pci/ide.c
+++ b/drivers/pci/ide.c
@@ -379,10 +379,12 @@ struct pci_ide_partner *pci_ide_to_settings(struct pci_dev *pdev, struct pci_ide
 }
 EXPORT_SYMBOL_GPL(pci_ide_to_settings);
 
-static void set_ide_sel_ctl(struct pci_dev *pdev, struct pci_ide *ide, int pos,
+static void set_ide_sel_ctl(struct pci_dev *pdev, struct pci_ide *ide,
+			    struct pci_ide_partner *settings, int pos,
 			    bool enable)
 {
 	u32 val = FIELD_PREP(PCI_IDE_SEL_CTL_ID, ide->stream_id) |
+		  FIELD_PREP(PCI_IDE_SEL_CTL_DEFAULT, settings->default_stream) |
 		  FIELD_PREP(PCI_IDE_SEL_CTL_CFG_EN, pdev->ide_cfg) |
 		  FIELD_PREP(PCI_IDE_SEL_CTL_TEE_LIMITED, pdev->ide_tee_limit) |
 		  FIELD_PREP(PCI_IDE_SEL_CTL_EN, enable);
@@ -424,7 +426,7 @@ void pci_ide_stream_setup(struct pci_dev *pdev, struct pci_ide *ide)
 	 * Setup control register early for devices that expect
 	 * stream_id is set during key programming.
 	 */
-	set_ide_sel_ctl(pdev, ide, pos, false);
+	set_ide_sel_ctl(pdev, ide, settings, pos, false);
 	settings->setup = 1;
 }
 EXPORT_SYMBOL_GPL(pci_ide_stream_setup);
@@ -481,12 +483,12 @@ int pci_ide_stream_enable(struct pci_dev *pdev, struct pci_ide *ide)
 
 	pos = sel_ide_offset(pdev, settings);
 
-	set_ide_sel_ctl(pdev, ide, pos, true);
+	set_ide_sel_ctl(pdev, ide, settings, pos, true);
 
 	pci_read_config_dword(pdev, pos + PCI_IDE_SEL_STS, &val);
 	if (FIELD_GET(PCI_IDE_SEL_STS_STATE, val) !=
 	    PCI_IDE_SEL_STS_STATE_SECURE) {
-		set_ide_sel_ctl(pdev, ide, pos, false);
+		set_ide_sel_ctl(pdev, ide, settings, pos, false);
 		return -ENXIO;
 	}
 
diff --git a/include/linux/pci-ide.h b/include/linux/pci-ide.h
index cf1f7a10e8e0..a2d3fb4a289b 100644
--- a/include/linux/pci-ide.h
+++ b/include/linux/pci-ide.h
@@ -24,6 +24,8 @@ enum pci_ide_partner_select {
  * @rid_start: Partner Port Requester ID range start
  * @rid_start: Partner Port Requester ID range end
  * @stream_index: Selective IDE Stream Register Block selection
+ * @default_stream: Endpoint uses this stream for all upstream TLPs regardless of
+ * 		    address and RID association registers
  * @setup: flag to track whether to run pci_ide_stream_teardown() for this
  *	   partner slot
  * @enable: flag whether to run pci_ide_stream_disable() for this partner slot
@@ -32,6 +34,7 @@ struct pci_ide_partner {
 	u16 rid_start;
 	u16 rid_end;
 	u8 stream_index;
+	unsigned int default_stream:1;
 	unsigned int setup:1;
 	unsigned int enable:1;
 };

  parent reply	other threads:[~2025-09-05  1:28 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-27  3:51 [PATCH v5 00/10] PCI/TSM: Core infrastructure for PCI device security (TDISP) Dan Williams
2025-08-27  3:51 ` [PATCH v5 01/10] coco/tsm: Introduce a core device for TEE Security Managers Dan Williams
2025-08-27  3:51 ` [PATCH v5 02/10] PCI/IDE: Enumerate Selective Stream IDE capabilities Dan Williams
2025-08-27  3:51 ` [PATCH v5 03/10] PCI: Introduce pci_walk_bus_reverse(), for_each_pci_dev_reverse() Dan Williams
2025-08-27  3:51 ` [PATCH v5 04/10] PCI/TSM: Authenticate devices via platform TSM Dan Williams
2025-08-27 13:25   ` Alexey Kardashevskiy
2025-08-29  1:06     ` dan.j.williams
2025-08-29  1:58       ` Alexey Kardashevskiy
2025-09-05  0:50         ` dan.j.williams
2025-09-05  3:34           ` Alexey Kardashevskiy
2025-09-06  2:07             ` dan.j.williams
2025-08-28 11:43   ` Alexey Kardashevskiy
2025-08-29  1:23     ` dan.j.williams
2025-08-30 13:26   ` Alexey Kardashevskiy
2025-09-05  0:51     ` dan.j.williams
2025-09-02 15:08   ` Aneesh Kumar K.V
2025-09-03  2:03     ` Alexey Kardashevskiy
2025-09-05 20:06       ` dan.j.williams
2025-09-05 19:13     ` dan.j.williams
2025-09-02 15:13   ` Aneesh Kumar K.V
2025-09-03  2:07     ` Alexey Kardashevskiy
2025-09-05 20:13       ` dan.j.williams
2025-09-05 20:03     ` dan.j.williams
2025-09-03  2:17   ` Alexey Kardashevskiy
2025-09-05 20:35     ` dan.j.williams
2025-08-27  3:51 ` [PATCH v5 05/10] samples/devsec: Introduce a PCI device-security bus + endpoint sample Dan Williams
2025-08-27  3:51 ` [PATCH v5 06/10] PCI: Add PCIe Device 3 Extended Capability enumeration Dan Williams
2025-08-27  3:51 ` [PATCH v5 07/10] PCI/IDE: Add IDE establishment helpers Dan Williams
2025-09-02  1:29   ` Alexey Kardashevskiy
2025-09-02  1:54     ` Alexey Kardashevskiy
2025-09-05  1:40       ` dan.j.williams
2025-09-05  2:14         ` Alexey Kardashevskiy
2025-09-06  2:00           ` dan.j.williams
2025-09-05  1:27     ` dan.j.williams [this message]
2025-09-05  2:23       ` Alexey Kardashevskiy
2025-08-27  3:51 ` [PATCH v5 08/10] PCI/IDE: Report available IDE streams Dan Williams
2025-08-27  3:51 ` [PATCH v5 09/10] PCI/TSM: Report active " Dan Williams
2025-08-27  3:51 ` [PATCH v5 10/10] samples/devsec: Add sample IDE establishment Dan Williams

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=68ba3c9f508ed_75e3100ef@dwillia2-mobl4.notmuch \
    --to=dan.j.williams@intel.com \
    --cc=aik@amd.com \
    --cc=aneesh.kumar@kernel.org \
    --cc=bhelgaas@google.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-coco@lists.linux.dev \
    --cc=linux-pci@vger.kernel.org \
    --cc=lukas@wunner.de \
    --cc=sameo@rivosinc.com \
    --cc=yilun.xu@linux.intel.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).