All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH V9 0/9] CXL: Read CDAT and DSMAS data
@ 2022-05-31 15:26 ira.weiny
  2022-05-31 15:26 ` [PATCH V9 1/9] PCI: Add vendor ID for the PCI SIG ira.weiny
                   ` (8 more replies)
  0 siblings, 9 replies; 34+ messages in thread
From: ira.weiny @ 2022-05-31 15:26 UTC (permalink / raw)
  To: Dan Williams, Bjorn Helgaas, Jonathan Cameron
  Cc: Alison Schofield, Vishal Verma, Ira Weiny, Dave Jiang,
	Ben Widawsky, linux-kernel, linux-cxl, linux-pci

From: Ira Weiny <ira.weiny@intel.com>

Changes from V8:[5]
	For this version I've punted a bit to get it out and drop the auxiliary
	bus functionality.  I like where Jonathan is going with the port driver
	idea.  I think eventually the irq/mailbox creation will need to be more
	generic in a PCI port driver.  I've modeled this version on such an
	architecture but used the CXL port for the time being.

	From Dan
		Drop the auxiliary bus/device
	From Jonathan
		Cleanups
	From Bjorn
		Clean up commit messages
		move pci-doe.c to doe.c
		Clean up PCI spec references
		Ensure all messages use pci_*()
		Add offset to error messages to distinguish mailboxes
			use hex for DOE offsets
		Print 4 nibbles for Vendor ID and 2 for type.
		s/irq/IRQ in comments
		Fix long lines
		Fix typos


Changes from V7:[4]
	Avoid code bloat by making pci-doe.c conditional on CONFIG_PCI_DOE
		which is auto selected by the CXL_PCI config option.
	Minor code clean ups
	Fix bug in pci_doe_supports_prot()
	Rebase to cxl-pending

Changes from V6:[3]
	The big change is the removal of the auxiliary bus code from the PCI
	layer.  The auxiliary bus usage is now in the CXL layer.  The PCI layer
	provides helpers for subsystems to utilize DOE mailboxes by creating a
	pci_doe_mb object which controls a state machine for that mailbox
	capability.  The CXL layer wraps this object in an auxiliary device and
	driver which can then be used to determine if the kernel is controlling
	the capability or it is available to be used by user space.  Reads from
	user space via lspci are allowed.  Writes are allowed but flagged via a
	tainting the kernel.

	Feedback from Bjorn, Jonathan, and Dan
		Details in each patch

Changes from V5:[0]

	Rework the patch set to split PCI vs CXL changes
		Also make each change a bit more stand alone for easier review
	Add cxl_cdat structure
	Put CDAT related data structures in cdat.h
	Clarify some device lifetimes with comments
	Incorporate feedback from Jonathan, Bjorn and Dan
		The bigest change is placing the DOE scanning code into the
			pci_doe driver (part of the PCI codre).
		Validate the CDAT when it is read rather than before DSMAS
			parsing
		Do not report DSMAS failure as an error, report a warning and
			keep going.
		Retry reading the table 1 time.
	Update commit messages and this cover letter



CXL drivers need various data which are provided through generic DOE mailboxes
as defined in the PCIe 6.0 spec.[1]

One such data is the Coherent Device Atribute Table (CDAT).  CDAT data provides
coherent information about the various devices in the system.  It was developed
because systems no longer have a priori knowledge of all coherent devices
within a system.  CDAT describes the coherent characteristics of the
components on the CXL bus separate from system configurations.  The OS can
then, for example, use this information to form correct interleave sets.

To begin reading the CDAT the OS must have support to access the DOE mailboxes
provided by the CXL devices.

Because DOE is not specific to DOE but is provided within the PCI spec, the
series adds PCI DOE capability library functions.  These functions allow for
the iteration of the DOE capabilities on a device as well as creating
pci_doe_mb structures which can control the operation of the DOE state machine.

CXL iterates the DOE capabilities creates auxiliary bus devices.  These devices
are driven by a CXL DOE auxiliary driver which calls into the PCI DOE library
functions as appropriate.

The auxiliary bus architecture allows for root users to control which DOE
mailboxes are controlled by the kernel and which should be allowed for
unrestricted access by user space.  One such use case is to allow for CXL
Compliance Testing (CXL 2.0 14.16.4 Compliance Mode DOE).  By default the
kernel controls all mailboxes found.

After the devices are created and the driver attaches, CDAT data is read from
the device and DSMAS information parsed from that CDAT blob for use later.

This work was tested using qemu with additional patches.


[0] https://lore.kernel.org/linux-cxl/20211105235056.3711389-1-ira.weiny@intel.com/
[1] https://pcisig.com/specifications
[2] https://lore.kernel.org/qemu-devel/20210202005948.241655-1-ben.widawsky@intel.com/
[3] https://lore.kernel.org/linux-cxl/20220201071952.900068-1-ira.weiny@intel.com/
[4] https://lore.kernel.org/linux-cxl/20220330235920.2800929-1-ira.weiny@intel.com/
[5] https://lore.kernel.org/linux-cxl/20220414203237.2198665-1-ira.weiny@intel.com/


Ira Weiny (6):
PCI: Replace magic constant for PCI Sig Vendor ID
cxl/pci: Create PCI DOE mailbox's for memory devices
cxl/port: Find a DOE mailbox which supports CDAT
cxl/port: Introduce cxl_cdat_valid()
cxl/port: Retry reading CDAT on failure
cxl/port: Parse out DSMAS data from CDAT table

Jonathan Cameron (3):
PCI: Add vendor ID for the PCI SIG
PCI: Create PCI library functions in support of DOE mailboxes.
cxl/port: Read CDAT table

drivers/cxl/Kconfig | 1 +
drivers/cxl/cdat.h | 118 +++++++
drivers/cxl/core/pci.c | 267 ++++++++++++++
drivers/cxl/core/port.c | 45 +++
drivers/cxl/cxl.h | 7 +
drivers/cxl/cxlmem.h | 10 +
drivers/cxl/cxlpci.h | 3 +
drivers/cxl/mem.c | 1 +
drivers/cxl/pci.c | 111 ++++++
drivers/pci/Kconfig | 3 +
drivers/pci/Makefile | 1 +
drivers/pci/doe.c | 633 ++++++++++++++++++++++++++++++++++
drivers/pci/probe.c | 2 +-
include/linux/pci-doe.h | 120 +++++++
include/linux/pci_ids.h | 1 +
include/uapi/linux/pci_regs.h | 29 +-
16 files changed, 1350 insertions(+), 2 deletions(-)
create mode 100644 drivers/cxl/cdat.h
create mode 100644 drivers/pci/doe.c
create mode 100644 include/linux/pci-doe.h

--
2.35.1


^ permalink raw reply	[flat|nested] 34+ messages in thread
* Re: [PATCH V9 4/9] cxl/pci: Create PCI DOE mailbox's for memory devices
  2022-05-31 15:26 ` [PATCH V9 4/9] cxl/pci: Create PCI DOE mailbox's for memory devices ira.weiny
@ 2022-06-06 11:22 ` Dan Carpenter
  0 siblings, 0 replies; 34+ messages in thread
From: kernel test robot @ 2022-06-01  5:44 UTC (permalink / raw)
  To: kbuild

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

CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
In-Reply-To: <20220531152632.1397976-5-ira.weiny@intel.com>
References: <20220531152632.1397976-5-ira.weiny@intel.com>
TO: ira.weiny(a)intel.com

Hi,

I love your patch! Perhaps something to improve:

[auto build test WARNING on linus/master]
[also build test WARNING on next-20220601]
[cannot apply to helgaas-pci/next v5.18]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/intel-lab-lkp/linux/commits/ira-weiny-intel-com/CXL-Read-CDAT-and-DSMAS-data/20220531-232807
base:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 8ab2afa23bd197df47819a87f0265c0ac95c5b6a
:::::: branch date: 14 hours ago
:::::: commit date: 14 hours ago
config: i386-randconfig-m021 (https://download.01.org/0day-ci/archive/20220601/202206011300.xtt4Q8PJ-lkp(a)intel.com/config)
compiler: gcc-11 (Debian 11.3.0-1) 11.3.0

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/pci/doe.c:324 doe_statemachine_work() error: uninitialized symbol 'rc'.

vim +/rc +324 drivers/pci/doe.c

c67f0d52ff51105 Jonathan Cameron 2022-05-31  182  
c67f0d52ff51105 Jonathan Cameron 2022-05-31  183  static void doe_statemachine_work(struct work_struct *work)
c67f0d52ff51105 Jonathan Cameron 2022-05-31  184  {
c67f0d52ff51105 Jonathan Cameron 2022-05-31  185  	struct delayed_work *w = to_delayed_work(work);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  186  	struct pci_doe_mb *doe_mb = container_of(w, struct pci_doe_mb,
c67f0d52ff51105 Jonathan Cameron 2022-05-31  187  						 statemachine);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  188  	struct pci_dev *pdev = doe_mb->pdev;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  189  	int offset = doe_mb->cap_offset;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  190  	struct pci_doe_task *task;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  191  	u32 val;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  192  	int rc;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  193  
c67f0d52ff51105 Jonathan Cameron 2022-05-31  194  	mutex_lock(&doe_mb->task_lock);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  195  	task = doe_mb->cur_task;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  196  	mutex_unlock(&doe_mb->task_lock);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  197  
c67f0d52ff51105 Jonathan Cameron 2022-05-31  198  	if (test_and_clear_bit(PCI_DOE_FLAG_ABORT, &doe_mb->flags)) {
c67f0d52ff51105 Jonathan Cameron 2022-05-31  199  		/*
c67f0d52ff51105 Jonathan Cameron 2022-05-31  200  		 * Currently only used during init - care needed if
c67f0d52ff51105 Jonathan Cameron 2022-05-31  201  		 * pci_doe_abort() is generally exposed as it would impact
c67f0d52ff51105 Jonathan Cameron 2022-05-31  202  		 * queries in flight.
c67f0d52ff51105 Jonathan Cameron 2022-05-31  203  		 */
c67f0d52ff51105 Jonathan Cameron 2022-05-31  204  		if (task)
c67f0d52ff51105 Jonathan Cameron 2022-05-31  205  			pci_err(pdev, "DOE [%x] Aborting with active task!\n",
c67f0d52ff51105 Jonathan Cameron 2022-05-31  206  				doe_mb->cap_offset);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  207  		doe_mb->state = DOE_WAIT_ABORT;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  208  		pci_doe_abort_start(doe_mb);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  209  		return;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  210  	}
c67f0d52ff51105 Jonathan Cameron 2022-05-31  211  
c67f0d52ff51105 Jonathan Cameron 2022-05-31  212  	switch (doe_mb->state) {
c67f0d52ff51105 Jonathan Cameron 2022-05-31  213  	case DOE_IDLE:
c67f0d52ff51105 Jonathan Cameron 2022-05-31  214  		if (task == NULL)
c67f0d52ff51105 Jonathan Cameron 2022-05-31  215  			return;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  216  
c67f0d52ff51105 Jonathan Cameron 2022-05-31  217  		rc = pci_doe_send_req(doe_mb, task);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  218  
c67f0d52ff51105 Jonathan Cameron 2022-05-31  219  		/*
c67f0d52ff51105 Jonathan Cameron 2022-05-31  220  		 * The specification does not provide any guidance on how long
c67f0d52ff51105 Jonathan Cameron 2022-05-31  221  		 * some other entity could keep the DOE busy, so try for 1
c67f0d52ff51105 Jonathan Cameron 2022-05-31  222  		 * second then fail. Busy handling is best effort only, because
c67f0d52ff51105 Jonathan Cameron 2022-05-31  223  		 * there is no way of avoiding racing against another user of
c67f0d52ff51105 Jonathan Cameron 2022-05-31  224  		 * the DOE.
c67f0d52ff51105 Jonathan Cameron 2022-05-31  225  		 */
c67f0d52ff51105 Jonathan Cameron 2022-05-31  226  		if (rc == -EBUSY) {
c67f0d52ff51105 Jonathan Cameron 2022-05-31  227  			doe_mb->busy_retries++;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  228  			if (doe_mb->busy_retries == PCI_DOE_BUSY_MAX_RETRIES) {
c67f0d52ff51105 Jonathan Cameron 2022-05-31  229  				/* Long enough, fail this request */
c67f0d52ff51105 Jonathan Cameron 2022-05-31  230  				pci_warn(pdev,
c67f0d52ff51105 Jonathan Cameron 2022-05-31  231  					"DOE [%x] busy for too long (> 1 sec)\n",
c67f0d52ff51105 Jonathan Cameron 2022-05-31  232  					doe_mb->cap_offset);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  233  				doe_mb->busy_retries = 0;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  234  				goto err_busy;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  235  			}
c67f0d52ff51105 Jonathan Cameron 2022-05-31  236  			schedule_delayed_work(w, HZ / PCI_DOE_BUSY_MAX_RETRIES);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  237  			return;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  238  		}
c67f0d52ff51105 Jonathan Cameron 2022-05-31  239  		if (rc)
c67f0d52ff51105 Jonathan Cameron 2022-05-31  240  			goto err_abort;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  241  		doe_mb->busy_retries = 0;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  242  
c67f0d52ff51105 Jonathan Cameron 2022-05-31  243  		doe_mb->state = DOE_WAIT_RESP;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  244  		doe_mb->timeout_jiffies = jiffies + HZ;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  245  		/* Now poll or wait for IRQ with timeout */
c67f0d52ff51105 Jonathan Cameron 2022-05-31  246  		if (doe_mb->irq >= 0)
c67f0d52ff51105 Jonathan Cameron 2022-05-31  247  			schedule_delayed_work(w, PCI_DOE_TIMEOUT);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  248  		else
c67f0d52ff51105 Jonathan Cameron 2022-05-31  249  			schedule_delayed_work(w, PCI_DOE_POLL_INTERVAL);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  250  		return;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  251  
c67f0d52ff51105 Jonathan Cameron 2022-05-31  252  	case DOE_WAIT_RESP:
c67f0d52ff51105 Jonathan Cameron 2022-05-31  253  		/* Not possible to get here with NULL task */
c67f0d52ff51105 Jonathan Cameron 2022-05-31  254  		pci_read_config_dword(pdev, offset + PCI_DOE_STATUS, &val);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  255  		if (FIELD_GET(PCI_DOE_STATUS_ERROR, val)) {
c67f0d52ff51105 Jonathan Cameron 2022-05-31  256  			rc = -EIO;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  257  			goto err_abort;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  258  		}
c67f0d52ff51105 Jonathan Cameron 2022-05-31  259  
c67f0d52ff51105 Jonathan Cameron 2022-05-31  260  		if (!FIELD_GET(PCI_DOE_STATUS_DATA_OBJECT_READY, val)) {
c67f0d52ff51105 Jonathan Cameron 2022-05-31  261  			/* If not yet at timeout reschedule otherwise abort */
c67f0d52ff51105 Jonathan Cameron 2022-05-31  262  			if (time_after(jiffies, doe_mb->timeout_jiffies)) {
c67f0d52ff51105 Jonathan Cameron 2022-05-31  263  				rc = -ETIMEDOUT;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  264  				goto err_abort;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  265  			}
c67f0d52ff51105 Jonathan Cameron 2022-05-31  266  			schedule_delayed_work(w, PCI_DOE_POLL_INTERVAL);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  267  			return;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  268  		}
c67f0d52ff51105 Jonathan Cameron 2022-05-31  269  
c67f0d52ff51105 Jonathan Cameron 2022-05-31  270  		rc  = pci_doe_recv_resp(doe_mb, task);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  271  		if (rc < 0)
c67f0d52ff51105 Jonathan Cameron 2022-05-31  272  			goto err_abort;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  273  
c67f0d52ff51105 Jonathan Cameron 2022-05-31  274  		doe_mb->state = DOE_IDLE;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  275  
c67f0d52ff51105 Jonathan Cameron 2022-05-31  276  		retire_cur_task(doe_mb);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  277  		/* Set the return value to the length of received payload */
c67f0d52ff51105 Jonathan Cameron 2022-05-31  278  		signal_task_complete(task, rc);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  279  
c67f0d52ff51105 Jonathan Cameron 2022-05-31  280  		return;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  281  
c67f0d52ff51105 Jonathan Cameron 2022-05-31  282  	case DOE_WAIT_ABORT:
c67f0d52ff51105 Jonathan Cameron 2022-05-31  283  	case DOE_WAIT_ABORT_ON_ERR:
c67f0d52ff51105 Jonathan Cameron 2022-05-31  284  		pci_read_config_dword(pdev, offset + PCI_DOE_STATUS, &val);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  285  
c67f0d52ff51105 Jonathan Cameron 2022-05-31  286  		if (!FIELD_GET(PCI_DOE_STATUS_ERROR, val) &&
c67f0d52ff51105 Jonathan Cameron 2022-05-31  287  		    !FIELD_GET(PCI_DOE_STATUS_BUSY, val)) {
c67f0d52ff51105 Jonathan Cameron 2022-05-31  288  			/* Back to normal state - carry on */
c67f0d52ff51105 Jonathan Cameron 2022-05-31  289  			retire_cur_task(doe_mb);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  290  
c67f0d52ff51105 Jonathan Cameron 2022-05-31  291  			/*
c67f0d52ff51105 Jonathan Cameron 2022-05-31  292  			 * For deliberately triggered abort, someone is
c67f0d52ff51105 Jonathan Cameron 2022-05-31  293  			 * waiting.
c67f0d52ff51105 Jonathan Cameron 2022-05-31  294  			 */
c67f0d52ff51105 Jonathan Cameron 2022-05-31  295  			if (doe_mb->state == DOE_WAIT_ABORT) {
c67f0d52ff51105 Jonathan Cameron 2022-05-31  296  				if (task)
c67f0d52ff51105 Jonathan Cameron 2022-05-31  297  					signal_task_complete(task, -EFAULT);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  298  				complete(&doe_mb->abort_c);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  299  			}
c67f0d52ff51105 Jonathan Cameron 2022-05-31  300  
c67f0d52ff51105 Jonathan Cameron 2022-05-31  301  			doe_mb->state = DOE_IDLE;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  302  			return;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  303  		}
c67f0d52ff51105 Jonathan Cameron 2022-05-31  304  		if (time_after(jiffies, doe_mb->timeout_jiffies)) {
c67f0d52ff51105 Jonathan Cameron 2022-05-31  305  			/* Task has timed out and is dead - abort */
c67f0d52ff51105 Jonathan Cameron 2022-05-31  306  			pci_err(pdev, "DOE [%x] ABORT timed out\n",
c67f0d52ff51105 Jonathan Cameron 2022-05-31  307  				doe_mb->cap_offset);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  308  			set_bit(PCI_DOE_FLAG_DEAD, &doe_mb->flags);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  309  			retire_cur_task(doe_mb);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  310  
c67f0d52ff51105 Jonathan Cameron 2022-05-31  311  			if (doe_mb->state == DOE_WAIT_ABORT) {
c67f0d52ff51105 Jonathan Cameron 2022-05-31  312  				if (task)
c67f0d52ff51105 Jonathan Cameron 2022-05-31  313  					signal_task_complete(task, -EFAULT);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  314  				complete(&doe_mb->abort_c);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  315  			}
c67f0d52ff51105 Jonathan Cameron 2022-05-31  316  		}
c67f0d52ff51105 Jonathan Cameron 2022-05-31  317  		return;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  318  	}
c67f0d52ff51105 Jonathan Cameron 2022-05-31  319  
c67f0d52ff51105 Jonathan Cameron 2022-05-31  320  err_abort:
c67f0d52ff51105 Jonathan Cameron 2022-05-31  321  	doe_mb->state = DOE_WAIT_ABORT_ON_ERR;
c67f0d52ff51105 Jonathan Cameron 2022-05-31  322  	pci_doe_abort_start(doe_mb);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  323  err_busy:
c67f0d52ff51105 Jonathan Cameron 2022-05-31 @324  	signal_task_complete(task, rc);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  325  	if (doe_mb->state == DOE_IDLE)
c67f0d52ff51105 Jonathan Cameron 2022-05-31  326  		retire_cur_task(doe_mb);
c67f0d52ff51105 Jonathan Cameron 2022-05-31  327  }
c67f0d52ff51105 Jonathan Cameron 2022-05-31  328  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

^ permalink raw reply	[flat|nested] 34+ messages in thread

end of thread, other threads:[~2022-06-06 14:50 UTC | newest]

Thread overview: 34+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-31 15:26 [PATCH V9 0/9] CXL: Read CDAT and DSMAS data ira.weiny
2022-05-31 15:26 ` [PATCH V9 1/9] PCI: Add vendor ID for the PCI SIG ira.weiny
2022-05-31 17:00   ` [PATCH v9 " Davidlohr Bueso
2022-05-31 15:26 ` [PATCH V9 2/9] PCI: Replace magic constant for PCI Sig Vendor ID ira.weiny
2022-05-31 17:00   ` [PATCH v9 " Davidlohr Bueso
2022-05-31 15:26 ` [PATCH V9 3/9] PCI: Create PCI library functions in support of DOE mailboxes ira.weiny
2022-05-31 17:25   ` [PATCH v9 " Davidlohr Bueso
2022-05-31 17:56     ` Davidlohr Bueso
2022-06-01  4:53       ` Ira Weiny
2022-06-01 13:59         ` Davidlohr Bueso
2022-06-01 16:55           ` Ira Weiny
2022-05-31 15:26 ` [PATCH V9 4/9] cxl/pci: Create PCI DOE mailbox's for memory devices ira.weiny
2022-05-31 17:50   ` Ben Widawsky
2022-06-01 14:35     ` Jonathan Cameron
2022-06-01 23:01     ` Ira Weiny
2022-05-31 15:26 ` [PATCH V9 5/9] cxl/port: Find a DOE mailbox which supports CDAT ira.weiny
2022-05-31 17:57   ` Ben Widawsky
2022-06-01 22:03     ` Ira Weiny
2022-05-31 15:26 ` [PATCH V9 6/9] cxl/port: Read CDAT table ira.weiny
2022-06-01 15:35   ` Jonathan Cameron
2022-06-01 16:31     ` Jonathan Cameron
2022-06-02 18:31       ` Ira Weiny
2022-06-02 22:47         ` Ira Weiny
2022-06-06 14:49           ` Jonathan Cameron
2022-05-31 15:26 ` [PATCH V9 7/9] cxl/port: Introduce cxl_cdat_valid() ira.weiny
2022-05-31 17:21   ` Alison Schofield
2022-06-01 22:10     ` Ira Weiny
2022-05-31 15:26 ` [PATCH V9 8/9] cxl/port: Retry reading CDAT on failure ira.weiny
2022-05-31 17:07   ` Alison Schofield
2022-06-01  4:54     ` Ira Weiny
2022-05-31 19:30   ` [PATCH v9 " Davidlohr Bueso
2022-05-31 15:26 ` [PATCH V9 9/9] cxl/port: Parse out DSMAS data from CDAT table ira.weiny
2022-06-01  5:44 [PATCH V9 4/9] cxl/pci: Create PCI DOE mailbox's for memory devices kernel test robot
2022-06-06 11:22 ` Dan Carpenter

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.