Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v10 0/5] PCI: VF resizable BAR
@ 2025-07-02  9:35 Michał Winiarski
  2025-07-02  9:35 ` [PATCH v10 1/5] PCI/IOV: Restore VF resizable BAR state after reset Michał Winiarski
                   ` (10 more replies)
  0 siblings, 11 replies; 12+ messages in thread
From: Michał Winiarski @ 2025-07-02  9:35 UTC (permalink / raw)
  To: Bjorn Helgaas, linux-pci, linux-kernel
  Cc: intel-xe, dri-devel, Christian König,
	Krzysztof Wilczyński, Ilpo Järvinen, Rodrigo Vivi,
	Michal Wajdeczko, Lucas De Marchi, Thomas Hellström,
	Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
	Simona Vetter, Matt Roper, Michał Winiarski

Hi,

The series is now reviewed, and it looks like there's no further
feedback.
To limit it to PCI subsystem, I removed the last patch in the series, as
it contained changes in drm/xe driver (it can still be found in v9 for
reference, and I expect that this single patch will go through DRM tree
anyways).

v9 can be found here:
https://lore.kernel.org/linux-pci/20250527120637.665506-1-michal.winiarski@intel.com/

For regular BAR, drivers can use pci_resize_resource to resize it to the
desired size provided that it is supported by the hardware, which the
driver can query using pci_rebar_get_possible_sizes.
This series expands the API to work with IOV BAR as well.
It also adds the additional API for drivers to change the VF BAR size
without resizing the entire underlying reservation (within the original
resource boundary).

Thanks,
-Michał

v9 -> v10:
- Remove last patch with drm/xe changes

v8 -> v9:
- Use u64 as do_div() dividend (LKP)
- Introduce a helper to access cached vf_rebar_cap (LKP)

v7 -> v8:
- Update variable ordering and missing includes (Ilpo)

v6 -> v7:
- Eliminate the loop in pci_iov_vf_bar_get_sizes() (Ilpo)
- Use helper variable for indexes (Ilpo)
- Kerneldoc formatting (Ilpo)
- Refer to latest PCI spec (Ilpo)
- Commit message wording (Ilpo)

v5 -> v6:
- Rebased on latest pci/next
- Cache the VF resizable BAR capability position to avoid multiple
  lookups (Ilpo)
- Use pci_resource_n helper (Ilpo)

v4 -> v5:
- Rename pci_resource_to/from_iov helpers and add WARN if called without
  CONFIG_PCI_IOV (Ilpo)
- Reword kerneldoc for pci_iov_vf_bar_get_sizes (Bjorn)
- Reword commit message for VF BAR size check, extract the additional
  size check to separate conditional (Bjorn)

v3 -> v4:
- Change the approach to extending the BAR (Christian)
- Tidy the commit messages, use 80 line limit where necessary (Bjorn)
- Add kerneldocs to exported functions (Bjorn)
- Add pci_resource_to_iov() / pci_resource_from_iov() helpers (Ilpo)
- Use FIELD_GET(), tidy whitespace (Ilpo)

v2 -> v3:
- Extract introducing pci_resource_is_iov to separate commit and
  use it elsewhere in PCI subsystem (Christian)
- Extract restoring VF rebar state to separate commit (Christian)
- Reorganize memory decoding check (Christian)
- Don't use dev_WARN (Ilpo)
- Fix build without CONFIG_PCI_IOV (CI)

v1 -> v2:
- Add pci_iov_resource_extend() and usage in Xe driver
- Reduce the number of ifdefs (Christian)
- Drop patch 2/2 from v1 (Christian)
- Add a helper to avoid upsetting static analysis tools (Krzysztof)

Michał Winiarski (5):
  PCI/IOV: Restore VF resizable BAR state after reset
  PCI: Add a helper to convert between VF BAR number and IOV resource
  PCI: Allow IOV resources to be resized in pci_resize_resource()
  PCI/IOV: Check that VF BAR fits within the reservation
  PCI: Allow drivers to control VF BAR size

 drivers/pci/iov.c             | 153 +++++++++++++++++++++++++++++++---
 drivers/pci/pci.c             |   8 +-
 drivers/pci/pci.h             |  39 +++++++++
 drivers/pci/setup-bus.c       |   3 +-
 drivers/pci/setup-res.c       |  35 ++++++--
 include/linux/pci.h           |   6 ++
 include/uapi/linux/pci_regs.h |   9 ++
 7 files changed, 235 insertions(+), 18 deletions(-)

-- 
2.49.0


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

* [PATCH v10 1/5] PCI/IOV: Restore VF resizable BAR state after reset
  2025-07-02  9:35 [PATCH v10 0/5] PCI: VF resizable BAR Michał Winiarski
@ 2025-07-02  9:35 ` Michał Winiarski
  2025-07-02  9:35 ` [PATCH v10 2/5] PCI: Add a helper to convert between VF BAR number and IOV resource Michał Winiarski
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: Michał Winiarski @ 2025-07-02  9:35 UTC (permalink / raw)
  To: Bjorn Helgaas, linux-pci, linux-kernel
  Cc: intel-xe, dri-devel, Christian König,
	Krzysztof Wilczyński, Ilpo Järvinen, Rodrigo Vivi,
	Michal Wajdeczko, Lucas De Marchi, Thomas Hellström,
	Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
	Simona Vetter, Matt Roper, Michał Winiarski

Similar to regular resizable BAR, VF BAR can also be resized, e.g. by
the system firmware or the PCI subsystem itself.

The capability layout is the same as PCI_EXT_CAP_ID_REBAR.

Add the capability ID and restore it as a part of IOV state.

See PCIe r6.2, sec 7.8.7.

Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
---
 drivers/pci/iov.c             | 30 +++++++++++++++++++++++++++++-
 drivers/pci/pci.h             | 12 ++++++++++++
 include/uapi/linux/pci_regs.h |  9 +++++++++
 3 files changed, 50 insertions(+), 1 deletion(-)

diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c
index 10693b5d7eb66..10ccef8afe145 100644
--- a/drivers/pci/iov.c
+++ b/drivers/pci/iov.c
@@ -7,6 +7,7 @@
  * Copyright (C) 2009 Intel Corporation, Yu Zhao <yu.zhao@intel.com>
  */
 
+#include <linux/bitfield.h>
 #include <linux/pci.h>
 #include <linux/slab.h>
 #include <linux/export.h>
@@ -850,6 +851,7 @@ static int sriov_init(struct pci_dev *dev, int pos)
 	pci_read_config_byte(dev, pos + PCI_SRIOV_FUNC_LINK, &iov->link);
 	if (pci_pcie_type(dev) == PCI_EXP_TYPE_RC_END)
 		iov->link = PCI_DEVFN(PCI_SLOT(dev->devfn), iov->link);
+	iov->vf_rebar_cap = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_VF_REBAR);
 
 	if (pdev)
 		iov->dev = pci_dev_get(pdev);
@@ -888,6 +890,30 @@ static void sriov_release(struct pci_dev *dev)
 	dev->sriov = NULL;
 }
 
+static void sriov_restore_vf_rebar_state(struct pci_dev *dev)
+{
+	unsigned int pos, nbars, i;
+	u32 ctrl;
+
+	pos = pci_iov_vf_rebar_cap(dev);
+	if (!pos)
+		return;
+
+	pci_read_config_dword(dev, pos + PCI_VF_REBAR_CTRL, &ctrl);
+	nbars = FIELD_GET(PCI_VF_REBAR_CTRL_NBAR_MASK, ctrl);
+
+	for (i = 0; i < nbars; i++, pos += 8) {
+		int bar_idx, size;
+
+		pci_read_config_dword(dev, pos + PCI_VF_REBAR_CTRL, &ctrl);
+		bar_idx = FIELD_GET(PCI_VF_REBAR_CTRL_BAR_IDX, ctrl);
+		size = pci_rebar_bytes_to_size(dev->sriov->barsz[bar_idx]);
+		ctrl &= ~PCI_VF_REBAR_CTRL_BAR_SIZE;
+		ctrl |= FIELD_PREP(PCI_VF_REBAR_CTRL_BAR_SIZE, size);
+		pci_write_config_dword(dev, pos + PCI_VF_REBAR_CTRL, ctrl);
+	}
+}
+
 static void sriov_restore_state(struct pci_dev *dev)
 {
 	int i;
@@ -1047,8 +1073,10 @@ resource_size_t pci_sriov_resource_alignment(struct pci_dev *dev, int resno)
  */
 void pci_restore_iov_state(struct pci_dev *dev)
 {
-	if (dev->is_physfn)
+	if (dev->is_physfn) {
+		sriov_restore_vf_rebar_state(dev);
 		sriov_restore_state(dev);
+	}
 }
 
 /**
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
index adabf59bae40e..3bd507583c3fa 100644
--- a/drivers/pci/pci.h
+++ b/drivers/pci/pci.h
@@ -494,6 +494,7 @@ struct pci_sriov {
 	u16		subsystem_vendor; /* VF subsystem vendor */
 	u16		subsystem_device; /* VF subsystem device */
 	resource_size_t	barsz[PCI_SRIOV_NUM_BARS];	/* VF BAR size */
+	u16		vf_rebar_cap;	/* VF Resizable BAR capability offset */
 	bool		drivers_autoprobe; /* Auto probing of VFs by driver */
 };
 
@@ -718,6 +719,13 @@ void pci_iov_update_resource(struct pci_dev *dev, int resno);
 resource_size_t pci_sriov_resource_alignment(struct pci_dev *dev, int resno);
 void pci_restore_iov_state(struct pci_dev *dev);
 int pci_iov_bus_range(struct pci_bus *bus);
+static inline u16 pci_iov_vf_rebar_cap(struct pci_dev *dev)
+{
+	if (!dev->is_physfn)
+		return 0;
+
+	return dev->sriov->vf_rebar_cap;
+}
 static inline bool pci_resource_is_iov(int resno)
 {
 	return resno >= PCI_IOV_RESOURCES && resno <= PCI_IOV_RESOURCE_END;
@@ -742,6 +750,10 @@ static inline int pci_iov_bus_range(struct pci_bus *bus)
 {
 	return 0;
 }
+static inline u16 pci_iov_vf_rebar_cap(struct pci_dev *dev)
+{
+	return 0;
+}
 static inline bool pci_resource_is_iov(int resno)
 {
 	return false;
diff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h
index a3a3e942dedff..f5b17745de607 100644
--- a/include/uapi/linux/pci_regs.h
+++ b/include/uapi/linux/pci_regs.h
@@ -745,6 +745,7 @@
 #define PCI_EXT_CAP_ID_L1SS	0x1E	/* L1 PM Substates */
 #define PCI_EXT_CAP_ID_PTM	0x1F	/* Precision Time Measurement */
 #define PCI_EXT_CAP_ID_DVSEC	0x23	/* Designated Vendor-Specific */
+#define PCI_EXT_CAP_ID_VF_REBAR 0x24	/* VF Resizable BAR */
 #define PCI_EXT_CAP_ID_DLF	0x25	/* Data Link Feature */
 #define PCI_EXT_CAP_ID_PL_16GT	0x26	/* Physical Layer 16.0 GT/s */
 #define PCI_EXT_CAP_ID_NPEM	0x29	/* Native PCIe Enclosure Management */
@@ -1141,6 +1142,14 @@
 #define PCI_DVSEC_HEADER2		0x8 /* Designated Vendor-Specific Header2 */
 #define  PCI_DVSEC_HEADER2_ID(x)		((x) & 0xffff)
 
+/* VF Resizable BARs, same layout as PCI_REBAR */
+#define PCI_VF_REBAR_CAP	PCI_REBAR_CAP
+#define  PCI_VF_REBAR_CAP_SIZES		PCI_REBAR_CAP_SIZES
+#define PCI_VF_REBAR_CTRL	PCI_REBAR_CTRL
+#define  PCI_VF_REBAR_CTRL_BAR_IDX	PCI_REBAR_CTRL_BAR_IDX
+#define  PCI_VF_REBAR_CTRL_NBAR_MASK	PCI_REBAR_CTRL_NBAR_MASK
+#define  PCI_VF_REBAR_CTRL_BAR_SIZE	PCI_REBAR_CTRL_BAR_SIZE
+
 /* Data Link Feature */
 #define PCI_DLF_CAP		0x04	/* Capabilities Register */
 #define  PCI_DLF_EXCHANGE_ENABLE	0x80000000  /* Data Link Feature Exchange Enable */
-- 
2.49.0


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

* [PATCH v10 2/5] PCI: Add a helper to convert between VF BAR number and IOV resource
  2025-07-02  9:35 [PATCH v10 0/5] PCI: VF resizable BAR Michał Winiarski
  2025-07-02  9:35 ` [PATCH v10 1/5] PCI/IOV: Restore VF resizable BAR state after reset Michał Winiarski
@ 2025-07-02  9:35 ` Michał Winiarski
  2025-07-02  9:35 ` [PATCH v10 3/5] PCI: Allow IOV resources to be resized in pci_resize_resource() Michał Winiarski
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: Michał Winiarski @ 2025-07-02  9:35 UTC (permalink / raw)
  To: Bjorn Helgaas, linux-pci, linux-kernel
  Cc: intel-xe, dri-devel, Christian König,
	Krzysztof Wilczyński, Ilpo Järvinen, Rodrigo Vivi,
	Michal Wajdeczko, Lucas De Marchi, Thomas Hellström,
	Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
	Simona Vetter, Matt Roper, Michał Winiarski

There are multiple places where conversions between IOV resources and
corresponding VF BAR numbers are done.

Extract the logic to pci_resource_num_from_vf_bar() and
pci_resource_num_to_vf_bar() helpers.

Suggested-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
Acked-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
---
 drivers/pci/iov.c       | 26 ++++++++++++++++----------
 drivers/pci/pci.h       | 18 ++++++++++++++++++
 drivers/pci/setup-bus.c |  3 ++-
 3 files changed, 36 insertions(+), 11 deletions(-)

diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c
index 10ccef8afe145..bdac078045525 100644
--- a/drivers/pci/iov.c
+++ b/drivers/pci/iov.c
@@ -151,7 +151,7 @@ resource_size_t pci_iov_resource_size(struct pci_dev *dev, int resno)
 	if (!dev->is_physfn)
 		return 0;
 
-	return dev->sriov->barsz[resno - PCI_IOV_RESOURCES];
+	return dev->sriov->barsz[pci_resource_num_to_vf_bar(resno)];
 }
 
 static void pci_read_vf_config_common(struct pci_dev *virtfn)
@@ -342,12 +342,14 @@ int pci_iov_add_virtfn(struct pci_dev *dev, int id)
 	virtfn->multifunction = 0;
 
 	for (i = 0; i < PCI_SRIOV_NUM_BARS; i++) {
-		res = &dev->resource[i + PCI_IOV_RESOURCES];
+		int idx = pci_resource_num_from_vf_bar(i);
+
+		res = &dev->resource[idx];
 		if (!res->parent)
 			continue;
 		virtfn->resource[i].name = pci_name(virtfn);
 		virtfn->resource[i].flags = res->flags;
-		size = pci_iov_resource_size(dev, i + PCI_IOV_RESOURCES);
+		size = pci_iov_resource_size(dev, idx);
 		resource_set_range(&virtfn->resource[i],
 				   res->start + size * id, size);
 		rc = request_resource(res, &virtfn->resource[i]);
@@ -644,8 +646,10 @@ static int sriov_enable(struct pci_dev *dev, int nr_virtfn)
 
 	nres = 0;
 	for (i = 0; i < PCI_SRIOV_NUM_BARS; i++) {
-		bars |= (1 << (i + PCI_IOV_RESOURCES));
-		res = &dev->resource[i + PCI_IOV_RESOURCES];
+		int idx = pci_resource_num_from_vf_bar(i);
+
+		bars |= (1 << idx);
+		res = &dev->resource[idx];
 		if (res->parent)
 			nres++;
 	}
@@ -811,8 +815,10 @@ static int sriov_init(struct pci_dev *dev, int pos)
 
 	nres = 0;
 	for (i = 0; i < PCI_SRIOV_NUM_BARS; i++) {
-		res = &dev->resource[i + PCI_IOV_RESOURCES];
-		res_name = pci_resource_name(dev, i + PCI_IOV_RESOURCES);
+		int idx = pci_resource_num_from_vf_bar(i);
+
+		res = &dev->resource[idx];
+		res_name = pci_resource_name(dev, idx);
 
 		/*
 		 * If it is already FIXED, don't change it, something
@@ -871,7 +877,7 @@ static int sriov_init(struct pci_dev *dev, int pos)
 	dev->is_physfn = 0;
 failed:
 	for (i = 0; i < PCI_SRIOV_NUM_BARS; i++) {
-		res = &dev->resource[i + PCI_IOV_RESOURCES];
+		res = &dev->resource[pci_resource_num_from_vf_bar(i)];
 		res->flags = 0;
 	}
 
@@ -933,7 +939,7 @@ static void sriov_restore_state(struct pci_dev *dev)
 	pci_write_config_word(dev, iov->pos + PCI_SRIOV_CTRL, ctrl);
 
 	for (i = 0; i < PCI_SRIOV_NUM_BARS; i++)
-		pci_update_resource(dev, i + PCI_IOV_RESOURCES);
+		pci_update_resource(dev, pci_resource_num_from_vf_bar(i));
 
 	pci_write_config_dword(dev, iov->pos + PCI_SRIOV_SYS_PGSIZE, iov->pgsz);
 	pci_iov_set_numvfs(dev, iov->num_VFs);
@@ -999,7 +1005,7 @@ void pci_iov_update_resource(struct pci_dev *dev, int resno)
 {
 	struct pci_sriov *iov = dev->is_physfn ? dev->sriov : NULL;
 	struct resource *res = pci_resource_n(dev, resno);
-	int vf_bar = resno - PCI_IOV_RESOURCES;
+	int vf_bar = pci_resource_num_to_vf_bar(resno);
 	struct pci_bus_region region;
 	u16 cmd;
 	u32 new;
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
index 3bd507583c3fa..6f6db4afcc200 100644
--- a/drivers/pci/pci.h
+++ b/drivers/pci/pci.h
@@ -730,6 +730,14 @@ static inline bool pci_resource_is_iov(int resno)
 {
 	return resno >= PCI_IOV_RESOURCES && resno <= PCI_IOV_RESOURCE_END;
 }
+static inline int pci_resource_num_from_vf_bar(int resno)
+{
+	return resno + PCI_IOV_RESOURCES;
+}
+static inline int pci_resource_num_to_vf_bar(int resno)
+{
+	return resno - PCI_IOV_RESOURCES;
+}
 extern const struct attribute_group sriov_pf_dev_attr_group;
 extern const struct attribute_group sriov_vf_dev_attr_group;
 #else
@@ -758,6 +766,16 @@ static inline bool pci_resource_is_iov(int resno)
 {
 	return false;
 }
+static inline int pci_resource_num_from_vf_bar(int resno)
+{
+	WARN_ON_ONCE(1);
+	return -ENODEV;
+}
+static inline int pci_resource_num_to_vf_bar(int resno)
+{
+	WARN_ON_ONCE(1);
+	return -ENODEV;
+}
 #endif /* CONFIG_PCI_IOV */
 
 #ifdef CONFIG_PCIE_TPH
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
index 07c3d021a47ec..7853ac6999e2c 100644
--- a/drivers/pci/setup-bus.c
+++ b/drivers/pci/setup-bus.c
@@ -1888,7 +1888,8 @@ static int iov_resources_unassigned(struct pci_dev *dev, void *data)
 	bool *unassigned = data;
 
 	for (i = 0; i < PCI_SRIOV_NUM_BARS; i++) {
-		struct resource *r = &dev->resource[i + PCI_IOV_RESOURCES];
+		int idx = pci_resource_num_from_vf_bar(i);
+		struct resource *r = &dev->resource[idx];
 		struct pci_bus_region region;
 
 		/* Not assigned or rejected by kernel? */
-- 
2.49.0


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

* [PATCH v10 3/5] PCI: Allow IOV resources to be resized in pci_resize_resource()
  2025-07-02  9:35 [PATCH v10 0/5] PCI: VF resizable BAR Michał Winiarski
  2025-07-02  9:35 ` [PATCH v10 1/5] PCI/IOV: Restore VF resizable BAR state after reset Michał Winiarski
  2025-07-02  9:35 ` [PATCH v10 2/5] PCI: Add a helper to convert between VF BAR number and IOV resource Michał Winiarski
@ 2025-07-02  9:35 ` Michał Winiarski
  2025-07-02  9:35 ` [PATCH v10 4/5] PCI/IOV: Check that VF BAR fits within the reservation Michał Winiarski
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: Michał Winiarski @ 2025-07-02  9:35 UTC (permalink / raw)
  To: Bjorn Helgaas, linux-pci, linux-kernel
  Cc: intel-xe, dri-devel, Christian König,
	Krzysztof Wilczyński, Ilpo Järvinen, Rodrigo Vivi,
	Michal Wajdeczko, Lucas De Marchi, Thomas Hellström,
	Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
	Simona Vetter, Matt Roper, Michał Winiarski

Similar to regular resizable BAR, VF BAR can also be resized.

The capability layout is the same as PCI_EXT_CAP_ID_REBAR, which means
we can reuse most of the implementation, the only difference being
resource size calculation (which is multiplied by total VFs) and memory
decoding (which is controlled by a separate VF MSE field in SR-IOV cap).

Extend the pci_resize_resource() function to accept IOV resources.

See PCIe r6.2, sec 7.8.7.

Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
---
 drivers/pci/iov.c       | 21 +++++++++++++++++++++
 drivers/pci/pci.c       |  8 +++++++-
 drivers/pci/pci.h       |  9 +++++++++
 drivers/pci/setup-res.c | 35 ++++++++++++++++++++++++++++++-----
 4 files changed, 67 insertions(+), 6 deletions(-)

diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c
index bdac078045525..852424cf2ae15 100644
--- a/drivers/pci/iov.c
+++ b/drivers/pci/iov.c
@@ -154,6 +154,27 @@ resource_size_t pci_iov_resource_size(struct pci_dev *dev, int resno)
 	return dev->sriov->barsz[pci_resource_num_to_vf_bar(resno)];
 }
 
+void pci_iov_resource_set_size(struct pci_dev *dev, int resno,
+			       resource_size_t size)
+{
+	if (!pci_resource_is_iov(resno)) {
+		pci_warn(dev, "%s is not an IOV resource\n",
+			 pci_resource_name(dev, resno));
+		return;
+	}
+
+	dev->sriov->barsz[pci_resource_num_to_vf_bar(resno)] = size;
+}
+
+bool pci_iov_is_memory_decoding_enabled(struct pci_dev *dev)
+{
+	u16 cmd;
+
+	pci_read_config_word(dev, dev->sriov->pos + PCI_SRIOV_CTRL, &cmd);
+
+	return cmd & PCI_SRIOV_CTRL_MSE;
+}
+
 static void pci_read_vf_config_common(struct pci_dev *virtfn)
 {
 	struct pci_dev *physfn = virtfn->physfn;
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index e9448d55113bd..55695852975b4 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -3752,7 +3752,13 @@ static int pci_rebar_find_pos(struct pci_dev *pdev, int bar)
 	unsigned int pos, nbars, i;
 	u32 ctrl;
 
-	pos = pdev->rebar_cap;
+	if (pci_resource_is_iov(bar)) {
+		pos = pci_iov_vf_rebar_cap(pdev);
+		bar = pci_resource_num_to_vf_bar(bar);
+	} else {
+		pos = pdev->rebar_cap;
+	}
+
 	if (!pos)
 		return -ENOTSUPP;
 
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
index 6f6db4afcc200..c233601532711 100644
--- a/drivers/pci/pci.h
+++ b/drivers/pci/pci.h
@@ -719,6 +719,9 @@ void pci_iov_update_resource(struct pci_dev *dev, int resno);
 resource_size_t pci_sriov_resource_alignment(struct pci_dev *dev, int resno);
 void pci_restore_iov_state(struct pci_dev *dev);
 int pci_iov_bus_range(struct pci_bus *bus);
+void pci_iov_resource_set_size(struct pci_dev *dev, int resno,
+			       resource_size_t size);
+bool pci_iov_is_memory_decoding_enabled(struct pci_dev *dev);
 static inline u16 pci_iov_vf_rebar_cap(struct pci_dev *dev)
 {
 	if (!dev->is_physfn)
@@ -758,6 +761,12 @@ static inline int pci_iov_bus_range(struct pci_bus *bus)
 {
 	return 0;
 }
+static inline void pci_iov_resource_set_size(struct pci_dev *dev, int resno,
+					     resource_size_t size) { }
+static inline bool pci_iov_is_memory_decoding_enabled(struct pci_dev *dev)
+{
+	return false;
+}
 static inline u16 pci_iov_vf_rebar_cap(struct pci_dev *dev)
 {
 	return 0;
diff --git a/drivers/pci/setup-res.c b/drivers/pci/setup-res.c
index c6657cdd06f67..d2b3ed51e8804 100644
--- a/drivers/pci/setup-res.c
+++ b/drivers/pci/setup-res.c
@@ -423,13 +423,39 @@ void pci_release_resource(struct pci_dev *dev, int resno)
 }
 EXPORT_SYMBOL(pci_release_resource);
 
+static bool pci_resize_is_memory_decoding_enabled(struct pci_dev *dev,
+						  int resno)
+{
+	u16 cmd;
+
+	if (pci_resource_is_iov(resno))
+		return pci_iov_is_memory_decoding_enabled(dev);
+
+	pci_read_config_word(dev, PCI_COMMAND, &cmd);
+
+	return cmd & PCI_COMMAND_MEMORY;
+}
+
+static void pci_resize_resource_set_size(struct pci_dev *dev, int resno,
+					 int size)
+{
+	resource_size_t res_size = pci_rebar_size_to_bytes(size);
+	struct resource *res = pci_resource_n(dev, resno);
+
+	if (!pci_resource_is_iov(resno)) {
+		resource_set_size(res, res_size);
+	} else {
+		resource_set_size(res, res_size * pci_sriov_get_totalvfs(dev));
+		pci_iov_resource_set_size(dev, resno, res_size);
+	}
+}
+
 int pci_resize_resource(struct pci_dev *dev, int resno, int size)
 {
 	struct resource *res = pci_resource_n(dev, resno);
 	struct pci_host_bridge *host;
 	int old, ret;
 	u32 sizes;
-	u16 cmd;
 
 	/* Check if we must preserve the firmware's resource assignment */
 	host = pci_find_host_bridge(dev->bus);
@@ -440,8 +466,7 @@ int pci_resize_resource(struct pci_dev *dev, int resno, int size)
 	if (!(res->flags & IORESOURCE_UNSET))
 		return -EBUSY;
 
-	pci_read_config_word(dev, PCI_COMMAND, &cmd);
-	if (cmd & PCI_COMMAND_MEMORY)
+	if (pci_resize_is_memory_decoding_enabled(dev, resno))
 		return -EBUSY;
 
 	sizes = pci_rebar_get_possible_sizes(dev, resno);
@@ -459,7 +484,7 @@ int pci_resize_resource(struct pci_dev *dev, int resno, int size)
 	if (ret)
 		return ret;
 
-	resource_set_size(res, pci_rebar_size_to_bytes(size));
+	pci_resize_resource_set_size(dev, resno, size);
 
 	/* Check if the new config works by trying to assign everything. */
 	if (dev->bus->self) {
@@ -471,7 +496,7 @@ int pci_resize_resource(struct pci_dev *dev, int resno, int size)
 
 error_resize:
 	pci_rebar_set_size(dev, resno, old);
-	resource_set_size(res, pci_rebar_size_to_bytes(old));
+	pci_resize_resource_set_size(dev, resno, old);
 	return ret;
 }
 EXPORT_SYMBOL(pci_resize_resource);
-- 
2.49.0


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

* [PATCH v10 4/5] PCI/IOV: Check that VF BAR fits within the reservation
  2025-07-02  9:35 [PATCH v10 0/5] PCI: VF resizable BAR Michał Winiarski
                   ` (2 preceding siblings ...)
  2025-07-02  9:35 ` [PATCH v10 3/5] PCI: Allow IOV resources to be resized in pci_resize_resource() Michał Winiarski
@ 2025-07-02  9:35 ` Michał Winiarski
  2025-07-02  9:35 ` [PATCH v10 5/5] PCI: Allow drivers to control VF BAR size Michał Winiarski
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: Michał Winiarski @ 2025-07-02  9:35 UTC (permalink / raw)
  To: Bjorn Helgaas, linux-pci, linux-kernel
  Cc: intel-xe, dri-devel, Christian König,
	Krzysztof Wilczyński, Ilpo Järvinen, Rodrigo Vivi,
	Michal Wajdeczko, Lucas De Marchi, Thomas Hellström,
	Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
	Simona Vetter, Matt Roper, Michał Winiarski

When the resource representing VF MMIO BAR reservation is created, its
size is always large enough to accommodate the BAR of all SR-IOV Virtual
Functions that can potentially be created (total VFs). If for whatever
reason it's not possible to accommodate all VFs - the resource is not
assigned and no VFs can be created.

An upcoming change will allow VF BAR size to be modified by drivers at
a later point in time, which means that the check for resource
assignment is no longer sufficient.

Add an additional check that verifies that VF BAR for all enabled VFs
fits within the underlying reservation resource.

Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
---
 drivers/pci/iov.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c
index 852424cf2ae15..f34173c70b32a 100644
--- a/drivers/pci/iov.c
+++ b/drivers/pci/iov.c
@@ -668,9 +668,12 @@ static int sriov_enable(struct pci_dev *dev, int nr_virtfn)
 	nres = 0;
 	for (i = 0; i < PCI_SRIOV_NUM_BARS; i++) {
 		int idx = pci_resource_num_from_vf_bar(i);
+		resource_size_t vf_bar_sz = pci_iov_resource_size(dev, idx);
 
 		bars |= (1 << idx);
 		res = &dev->resource[idx];
+		if (vf_bar_sz * nr_virtfn > resource_size(res))
+			continue;
 		if (res->parent)
 			nres++;
 	}
-- 
2.49.0


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

* [PATCH v10 5/5] PCI: Allow drivers to control VF BAR size
  2025-07-02  9:35 [PATCH v10 0/5] PCI: VF resizable BAR Michał Winiarski
                   ` (3 preceding siblings ...)
  2025-07-02  9:35 ` [PATCH v10 4/5] PCI/IOV: Check that VF BAR fits within the reservation Michał Winiarski
@ 2025-07-02  9:35 ` Michał Winiarski
  2025-07-02 11:13 ` ✗ CI.checkpatch: warning for PCI: VF resizable BAR (rev9) Patchwork
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: Michał Winiarski @ 2025-07-02  9:35 UTC (permalink / raw)
  To: Bjorn Helgaas, linux-pci, linux-kernel
  Cc: intel-xe, dri-devel, Christian König,
	Krzysztof Wilczyński, Ilpo Järvinen, Rodrigo Vivi,
	Michal Wajdeczko, Lucas De Marchi, Thomas Hellström,
	Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
	Simona Vetter, Matt Roper, Michał Winiarski

Drivers could leverage the fact that the VF BAR MMIO reservation is
created for total number of VFs supported by the device by resizing the
BAR to larger size when smaller number of VFs is enabled.

Add a pci_iov_vf_bar_set_size() function to control the size and a
pci_iov_vf_bar_get_sizes() helper to get the VF BAR sizes that will
allow up to num_vfs to be successfully enabled with the current
underlying reservation size.

Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
---
 drivers/pci/iov.c   | 73 +++++++++++++++++++++++++++++++++++++++++++++
 include/linux/pci.h |  6 ++++
 2 files changed, 79 insertions(+)

diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c
index f34173c70b32a..ac4375954c947 100644
--- a/drivers/pci/iov.c
+++ b/drivers/pci/iov.c
@@ -8,11 +8,15 @@
  */
 
 #include <linux/bitfield.h>
+#include <linux/bits.h>
+#include <linux/log2.h>
 #include <linux/pci.h>
+#include <linux/sizes.h>
 #include <linux/slab.h>
 #include <linux/export.h>
 #include <linux/string.h>
 #include <linux/delay.h>
+#include <asm/div64.h>
 #include "pci.h"
 
 #define VIRTFN_ID_LEN	17	/* "virtfn%u\0" for 2^32 - 1 */
@@ -1313,3 +1317,72 @@ int pci_sriov_configure_simple(struct pci_dev *dev, int nr_virtfn)
 	return nr_virtfn;
 }
 EXPORT_SYMBOL_GPL(pci_sriov_configure_simple);
+
+/**
+ * pci_iov_vf_bar_set_size - set a new size for a VF BAR
+ * @dev: the PCI device
+ * @resno: the resource number
+ * @size: new size as defined in the spec (0=1MB, 31=128TB)
+ *
+ * Set the new size of a VF BAR that supports VF resizable BAR capability.
+ * Unlike pci_resize_resource(), this does not cause the resource that
+ * reserves the MMIO space (originally up to total_VFs) to be resized, which
+ * means that following calls to pci_enable_sriov() can fail if the resources
+ * no longer fit.
+ *
+ * Return: 0 on success, or negative on failure.
+ */
+int pci_iov_vf_bar_set_size(struct pci_dev *dev, int resno, int size)
+{
+	u32 sizes;
+	int ret;
+
+	if (!pci_resource_is_iov(resno))
+		return -EINVAL;
+
+	if (pci_iov_is_memory_decoding_enabled(dev))
+		return -EBUSY;
+
+	sizes = pci_rebar_get_possible_sizes(dev, resno);
+	if (!sizes)
+		return -ENOTSUPP;
+
+	if (!(sizes & BIT(size)))
+		return -EINVAL;
+
+	ret = pci_rebar_set_size(dev, resno, size);
+	if (ret)
+		return ret;
+
+	pci_iov_resource_set_size(dev, resno, pci_rebar_size_to_bytes(size));
+
+	return 0;
+}
+EXPORT_SYMBOL_GPL(pci_iov_vf_bar_set_size);
+
+/**
+ * pci_iov_vf_bar_get_sizes - get VF BAR sizes allowing to create up to num_vfs
+ * @dev: the PCI device
+ * @resno: the resource number
+ * @num_vfs: number of VFs
+ *
+ * Get the sizes of a VF resizable BAR that can accommodate @num_vfs within
+ * the currently assigned size of the resource @resno.
+ *
+ * Return: A bitmask of sizes in format defined in the spec (bit 0=1MB,
+ * bit 31=128TB).
+ */
+u32 pci_iov_vf_bar_get_sizes(struct pci_dev *dev, int resno, int num_vfs)
+{
+	u64 vf_len = pci_resource_len(dev, resno);
+	u32 sizes;
+
+	if (!num_vfs)
+		return 0;
+
+	do_div(vf_len, num_vfs);
+	sizes = (roundup_pow_of_two(vf_len + 1) - 1) >> ilog2(SZ_1M);
+
+	return sizes & pci_rebar_get_possible_sizes(dev, resno);
+}
+EXPORT_SYMBOL_GPL(pci_iov_vf_bar_get_sizes);
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 05e68f35f3923..28f06045ab200 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -2438,6 +2438,8 @@ int pci_sriov_set_totalvfs(struct pci_dev *dev, u16 numvfs);
 int pci_sriov_get_totalvfs(struct pci_dev *dev);
 int pci_sriov_configure_simple(struct pci_dev *dev, int nr_virtfn);
 resource_size_t pci_iov_resource_size(struct pci_dev *dev, int resno);
+int pci_iov_vf_bar_set_size(struct pci_dev *dev, int resno, int size);
+u32 pci_iov_vf_bar_get_sizes(struct pci_dev *dev, int resno, int num_vfs);
 void pci_vf_drivers_autoprobe(struct pci_dev *dev, bool probe);
 
 /* Arch may override these (weak) */
@@ -2490,6 +2492,10 @@ static inline int pci_sriov_get_totalvfs(struct pci_dev *dev)
 #define pci_sriov_configure_simple	NULL
 static inline resource_size_t pci_iov_resource_size(struct pci_dev *dev, int resno)
 { return 0; }
+static inline int pci_iov_vf_bar_set_size(struct pci_dev *dev, int resno, int size)
+{ return -ENODEV; }
+static inline u32 pci_iov_vf_bar_get_sizes(struct pci_dev *dev, int resno, int num_vfs)
+{ return 0; }
 static inline void pci_vf_drivers_autoprobe(struct pci_dev *dev, bool probe) { }
 #endif
 
-- 
2.49.0


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

* ✗ CI.checkpatch: warning for PCI: VF resizable BAR (rev9)
  2025-07-02  9:35 [PATCH v10 0/5] PCI: VF resizable BAR Michał Winiarski
                   ` (4 preceding siblings ...)
  2025-07-02  9:35 ` [PATCH v10 5/5] PCI: Allow drivers to control VF BAR size Michał Winiarski
@ 2025-07-02 11:13 ` Patchwork
  2025-07-02 11:14 ` ✓ CI.KUnit: success " Patchwork
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2025-07-02 11:13 UTC (permalink / raw)
  To: Michał Winiarski; +Cc: intel-xe

== Series Details ==

Series: PCI: VF resizable BAR (rev9)
URL   : https://patchwork.freedesktop.org/series/138887/
State : warning

== Summary ==

+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt
Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master
f8ff75ae1d2127635239b134695774ed4045d05b
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 7e6589a2333722a6cb74cf67ece2b97b74bfbfc1
Author: Michał Winiarski <michal.winiarski@intel.com>
Date:   Wed Jul 2 11:35:22 2025 +0200

    PCI: Allow drivers to control VF BAR size
    
    Drivers could leverage the fact that the VF BAR MMIO reservation is
    created for total number of VFs supported by the device by resizing the
    BAR to larger size when smaller number of VFs is enabled.
    
    Add a pci_iov_vf_bar_set_size() function to control the size and a
    pci_iov_vf_bar_get_sizes() helper to get the VF BAR sizes that will
    allow up to num_vfs to be successfully enabled with the current
    underlying reservation size.
    
    Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
+ /mt/dim checkpatch e46fcd77ceacb06a5411cb77b7344d6b82e1ab72 drm-intel
059d3c165659 PCI/IOV: Restore VF resizable BAR state after reset
-:115: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations
#115: FILE: drivers/pci/pci.h:745:
 }
+static inline u16 pci_iov_vf_rebar_cap(struct pci_dev *dev)

total: 0 errors, 0 warnings, 1 checks, 106 lines checked
43ae323d2285 PCI: Add a helper to convert between VF BAR number and IOV resource
-:112: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations
#112: FILE: drivers/pci/pci.h:725:
 }
+static inline int pci_resource_num_from_vf_bar(int resno)

-:116: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations
#116: FILE: drivers/pci/pci.h:729:
+}
+static inline int pci_resource_num_to_vf_bar(int resno)

-:127: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations
#127: FILE: drivers/pci/pci.h:761:
 }
+static inline int pci_resource_num_from_vf_bar(int resno)

-:132: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations
#132: FILE: drivers/pci/pci.h:766:
+}
+static inline int pci_resource_num_to_vf_bar(int resno)

total: 0 errors, 0 warnings, 4 checks, 111 lines checked
00c25094bce9 PCI: Allow IOV resources to be resized in pci_resize_resource()
-:93: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations
#93: FILE: drivers/pci/pci.h:756:
 }
+static inline void pci_iov_resource_set_size(struct pci_dev *dev, int resno,

total: 0 errors, 0 warnings, 1 checks, 127 lines checked
f4165eff7ab7 PCI/IOV: Check that VF BAR fits within the reservation
7e6589a23337 PCI: Allow drivers to control VF BAR size
-:73: WARNING:ENOTSUPP: ENOTSUPP is not a SUSV4 error code, prefer EOPNOTSUPP
#73: FILE: drivers/pci/iov.c:1348:
+		return -ENOTSUPP;

total: 0 errors, 1 warnings, 0 checks, 105 lines checked



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

* ✓ CI.KUnit: success for PCI: VF resizable BAR (rev9)
  2025-07-02  9:35 [PATCH v10 0/5] PCI: VF resizable BAR Michał Winiarski
                   ` (5 preceding siblings ...)
  2025-07-02 11:13 ` ✗ CI.checkpatch: warning for PCI: VF resizable BAR (rev9) Patchwork
@ 2025-07-02 11:14 ` Patchwork
  2025-07-02 12:02 ` ✓ Xe.CI.BAT: " Patchwork
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2025-07-02 11:14 UTC (permalink / raw)
  To: Michał Winiarski; +Cc: intel-xe

== Series Details ==

Series: PCI: VF resizable BAR (rev9)
URL   : https://patchwork.freedesktop.org/series/138887/
State : success

== Summary ==

+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[11:13:09] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[11:13:13] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[11:13:40] Starting KUnit Kernel (1/1)...
[11:13:40] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[11:13:40] ================== guc_buf (11 subtests) ===================
[11:13:40] [PASSED] test_smallest
[11:13:40] [PASSED] test_largest
[11:13:40] [PASSED] test_granular
[11:13:40] [PASSED] test_unique
[11:13:40] [PASSED] test_overlap
[11:13:40] [PASSED] test_reusable
[11:13:40] [PASSED] test_too_big
[11:13:40] [PASSED] test_flush
[11:13:40] [PASSED] test_lookup
[11:13:40] [PASSED] test_data
[11:13:40] [PASSED] test_class
[11:13:40] ===================== [PASSED] guc_buf =====================
[11:13:40] =================== guc_dbm (7 subtests) ===================
[11:13:40] [PASSED] test_empty
[11:13:40] [PASSED] test_default
[11:13:40] ======================== test_size  ========================
[11:13:40] [PASSED] 4
[11:13:40] [PASSED] 8
[11:13:40] [PASSED] 32
[11:13:40] [PASSED] 256
[11:13:40] ==================== [PASSED] test_size ====================
[11:13:40] ======================= test_reuse  ========================
[11:13:40] [PASSED] 4
[11:13:40] [PASSED] 8
[11:13:40] [PASSED] 32
[11:13:40] [PASSED] 256
[11:13:40] =================== [PASSED] test_reuse ====================
[11:13:40] =================== test_range_overlap  ====================
[11:13:40] [PASSED] 4
[11:13:40] [PASSED] 8
[11:13:40] [PASSED] 32
[11:13:40] [PASSED] 256
[11:13:40] =============== [PASSED] test_range_overlap ================
[11:13:40] =================== test_range_compact  ====================
[11:13:40] [PASSED] 4
[11:13:40] [PASSED] 8
[11:13:40] [PASSED] 32
[11:13:40] [PASSED] 256
[11:13:40] =============== [PASSED] test_range_compact ================
[11:13:40] ==================== test_range_spare  =====================
[11:13:40] [PASSED] 4
[11:13:40] [PASSED] 8
[11:13:40] [PASSED] 32
[11:13:40] [PASSED] 256
[11:13:40] ================ [PASSED] test_range_spare =================
[11:13:40] ===================== [PASSED] guc_dbm =====================
[11:13:40] =================== guc_idm (6 subtests) ===================
[11:13:40] [PASSED] bad_init
[11:13:40] [PASSED] no_init
[11:13:40] [PASSED] init_fini
[11:13:40] [PASSED] check_used
[11:13:40] [PASSED] check_quota
[11:13:40] [PASSED] check_all
[11:13:40] ===================== [PASSED] guc_idm =====================
[11:13:40] ================== no_relay (3 subtests) ===================
[11:13:40] [PASSED] xe_drops_guc2pf_if_not_ready
[11:13:40] [PASSED] xe_drops_guc2vf_if_not_ready
[11:13:40] [PASSED] xe_rejects_send_if_not_ready
[11:13:40] ==================== [PASSED] no_relay =====================
[11:13:40] ================== pf_relay (14 subtests) ==================
[11:13:40] [PASSED] pf_rejects_guc2pf_too_short
[11:13:40] [PASSED] pf_rejects_guc2pf_too_long
[11:13:40] [PASSED] pf_rejects_guc2pf_no_payload
[11:13:40] [PASSED] pf_fails_no_payload
[11:13:40] [PASSED] pf_fails_bad_origin
[11:13:40] [PASSED] pf_fails_bad_type
[11:13:40] [PASSED] pf_txn_reports_error
[11:13:40] [PASSED] pf_txn_sends_pf2guc
[11:13:40] [PASSED] pf_sends_pf2guc
[11:13:40] [SKIPPED] pf_loopback_nop
[11:13:40] [SKIPPED] pf_loopback_echo
[11:13:40] [SKIPPED] pf_loopback_fail
[11:13:40] [SKIPPED] pf_loopback_busy
[11:13:40] [SKIPPED] pf_loopback_retry
[11:13:40] ==================== [PASSED] pf_relay =====================
[11:13:40] ================== vf_relay (3 subtests) ===================
[11:13:40] [PASSED] vf_rejects_guc2vf_too_short
[11:13:40] [PASSED] vf_rejects_guc2vf_too_long
[11:13:40] [PASSED] vf_rejects_guc2vf_no_payload
[11:13:40] ==================== [PASSED] vf_relay =====================
[11:13:40] ================= pf_service (11 subtests) =================
[11:13:40] [PASSED] pf_negotiate_any
[11:13:40] [PASSED] pf_negotiate_base_match
[11:13:40] [PASSED] pf_negotiate_base_newer
[11:13:40] [PASSED] pf_negotiate_base_next
[11:13:40] [SKIPPED] pf_negotiate_base_older
[11:13:40] [PASSED] pf_negotiate_base_prev
[11:13:40] [PASSED] pf_negotiate_latest_match
[11:13:40] [PASSED] pf_negotiate_latest_newer
[11:13:40] [PASSED] pf_negotiate_latest_next
[11:13:40] [SKIPPED] pf_negotiate_latest_older
[11:13:40] [SKIPPED] pf_negotiate_latest_prev
[11:13:40] =================== [PASSED] pf_service ====================
[11:13:40] ===================== lmtt (1 subtest) =====================
[11:13:40] ======================== test_ops  =========================
[11:13:40] [PASSED] 2-level
[11:13:40] [PASSED] multi-level
[11:13:40] ==================== [PASSED] test_ops =====================
[11:13:40] ====================== [PASSED] lmtt =======================
[11:13:40] =================== xe_mocs (2 subtests) ===================
[11:13:40] ================ xe_live_mocs_kernel_kunit  ================
[11:13:40] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[11:13:40] ================ xe_live_mocs_reset_kunit  =================
[11:13:40] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[11:13:40] ==================== [SKIPPED] xe_mocs =====================
[11:13:40] ================= xe_migrate (2 subtests) ==================
[11:13:40] ================= xe_migrate_sanity_kunit  =================
[11:13:40] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[11:13:40] ================== xe_validate_ccs_kunit  ==================
[11:13:40] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[11:13:40] =================== [SKIPPED] xe_migrate ===================
[11:13:40] ================== xe_dma_buf (1 subtest) ==================
[11:13:40] ==================== xe_dma_buf_kunit  =====================
[11:13:40] ================ [SKIPPED] xe_dma_buf_kunit ================
[11:13:40] =================== [SKIPPED] xe_dma_buf ===================
[11:13:40] ================= xe_bo_shrink (1 subtest) =================
[11:13:40] =================== xe_bo_shrink_kunit  ====================
[11:13:40] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[11:13:40] ================== [SKIPPED] xe_bo_shrink ==================
[11:13:40] ==================== xe_bo (2 subtests) ====================
[11:13:40] ================== xe_ccs_migrate_kunit  ===================
[11:13:40] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[11:13:40] ==================== xe_bo_evict_kunit  ====================
[11:13:40] =============== [SKIPPED] xe_bo_evict_kunit ================
[11:13:40] ===================== [SKIPPED] xe_bo ======================
[11:13:40] ==================== args (11 subtests) ====================
[11:13:40] [PASSED] count_args_test
[11:13:40] [PASSED] call_args_example
[11:13:40] [PASSED] call_args_test
[11:13:40] [PASSED] drop_first_arg_example
[11:13:40] [PASSED] drop_first_arg_test
[11:13:40] [PASSED] first_arg_example
[11:13:40] [PASSED] first_arg_test
[11:13:40] [PASSED] last_arg_example
[11:13:40] [PASSED] last_arg_test
[11:13:40] [PASSED] pick_arg_example
[11:13:40] [PASSED] sep_comma_example
[11:13:40] ====================== [PASSED] args =======================
[11:13:40] =================== xe_pci (2 subtests) ====================
[11:13:40] ==================== check_graphics_ip  ====================
[11:13:40] [PASSED] 12.70 Xe_LPG
[11:13:40] [PASSED] 12.71 Xe_LPG
[11:13:40] [PASSED] 12.74 Xe_LPG+
[11:13:40] [PASSED] 20.01 Xe2_HPG
[11:13:40] [PASSED] 20.02 Xe2_HPG
[11:13:40] [PASSED] 20.04 Xe2_LPG
[11:13:40] [PASSED] 30.00 Xe3_LPG
[11:13:40] [PASSED] 30.01 Xe3_LPG
[11:13:40] [PASSED] 30.03 Xe3_LPG
[11:13:40] ================ [PASSED] check_graphics_ip ================
[11:13:40] ===================== check_media_ip  ======================
[11:13:40] [PASSED] 13.00 Xe_LPM+
[11:13:40] [PASSED] 13.01 Xe2_HPM
[11:13:40] [PASSED] 20.00 Xe2_LPM
[11:13:40] [PASSED] 30.00 Xe3_LPM
[11:13:40] [PASSED] 30.02 Xe3_LPM
stty: 'standard input': Inappropriate ioctl for device
[11:13:40] ================= [PASSED] check_media_ip ==================
[11:13:40] ===================== [PASSED] xe_pci ======================
[11:13:40] =================== xe_rtp (2 subtests) ====================
[11:13:40] =============== xe_rtp_process_to_sr_tests  ================
[11:13:40] [PASSED] coalesce-same-reg
[11:13:40] [PASSED] no-match-no-add
[11:13:40] [PASSED] match-or
[11:13:40] [PASSED] match-or-xfail
[11:13:40] [PASSED] no-match-no-add-multiple-rules
[11:13:40] [PASSED] two-regs-two-entries
[11:13:40] [PASSED] clr-one-set-other
[11:13:40] [PASSED] set-field
[11:13:40] [PASSED] conflict-duplicate
[11:13:40] [PASSED] conflict-not-disjoint
[11:13:40] [PASSED] conflict-reg-type
[11:13:40] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[11:13:40] ================== xe_rtp_process_tests  ===================
[11:13:40] [PASSED] active1
[11:13:40] [PASSED] active2
[11:13:40] [PASSED] active-inactive
[11:13:40] [PASSED] inactive-active
[11:13:40] [PASSED] inactive-1st_or_active-inactive
[11:13:40] [PASSED] inactive-2nd_or_active-inactive
[11:13:40] [PASSED] inactive-last_or_active-inactive
[11:13:40] [PASSED] inactive-no_or_active-inactive
[11:13:40] ============== [PASSED] xe_rtp_process_tests ===============
[11:13:40] ===================== [PASSED] xe_rtp ======================
[11:13:40] ==================== xe_wa (1 subtest) =====================
[11:13:40] ======================== xe_wa_gt  =========================
[11:13:40] [PASSED] TIGERLAKE (B0)
[11:13:40] [PASSED] DG1 (A0)
[11:13:40] [PASSED] DG1 (B0)
[11:13:40] [PASSED] ALDERLAKE_S (A0)
[11:13:40] [PASSED] ALDERLAKE_S (B0)
[11:13:40] [PASSED] ALDERLAKE_S (C0)
[11:13:40] [PASSED] ALDERLAKE_S (D0)
[11:13:40] [PASSED] ALDERLAKE_P (A0)
[11:13:40] [PASSED] ALDERLAKE_P (B0)
[11:13:40] [PASSED] ALDERLAKE_P (C0)
[11:13:40] [PASSED] ALDERLAKE_S_RPLS (D0)
[11:13:40] [PASSED] ALDERLAKE_P_RPLU (E0)
[11:13:40] [PASSED] DG2_G10 (C0)
[11:13:40] [PASSED] DG2_G11 (B1)
[11:13:40] [PASSED] DG2_G12 (A1)
[11:13:40] [PASSED] METEORLAKE (g:A0, m:A0)
[11:13:40] [PASSED] METEORLAKE (g:A0, m:A0)
[11:13:40] [PASSED] METEORLAKE (g:A0, m:A0)
[11:13:40] [PASSED] LUNARLAKE (g:A0, m:A0)
[11:13:40] [PASSED] LUNARLAKE (g:B0, m:A0)
[11:13:40] [PASSED] BATTLEMAGE (g:A0, m:A1)
[11:13:40] ==================== [PASSED] xe_wa_gt =====================
[11:13:40] ====================== [PASSED] xe_wa ======================
[11:13:40] ============================================================
[11:13:40] Testing complete. Ran 145 tests: passed: 129, skipped: 16
[11:13:40] Elapsed time: 31.282s total, 4.155s configuring, 26.811s building, 0.296s running

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[11:13:40] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[11:13:42] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[11:14:03] Starting KUnit Kernel (1/1)...
[11:14:03] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[11:14:03] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[11:14:03] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[11:14:03] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[11:14:03] =========== drm_validate_clone_mode (2 subtests) ===========
[11:14:03] ============== drm_test_check_in_clone_mode  ===============
[11:14:03] [PASSED] in_clone_mode
[11:14:03] [PASSED] not_in_clone_mode
[11:14:03] ========== [PASSED] drm_test_check_in_clone_mode ===========
[11:14:03] =============== drm_test_check_valid_clones  ===============
[11:14:03] [PASSED] not_in_clone_mode
[11:14:03] [PASSED] valid_clone
[11:14:03] [PASSED] invalid_clone
[11:14:03] =========== [PASSED] drm_test_check_valid_clones ===========
[11:14:03] ============= [PASSED] drm_validate_clone_mode =============
[11:14:03] ============= drm_validate_modeset (1 subtest) =============
[11:14:03] [PASSED] drm_test_check_connector_changed_modeset
[11:14:03] ============== [PASSED] drm_validate_modeset ===============
[11:14:03] ====== drm_test_bridge_get_current_state (2 subtests) ======
[11:14:03] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[11:14:03] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[11:14:03] ======== [PASSED] drm_test_bridge_get_current_state ========
[11:14:03] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[11:14:03] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[11:14:03] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[11:14:03] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[11:14:03] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[11:14:03] ============== drm_bridge_alloc (2 subtests) ===============
[11:14:03] [PASSED] drm_test_drm_bridge_alloc_basic
[11:14:03] [PASSED] drm_test_drm_bridge_alloc_get_put
[11:14:03] ================ [PASSED] drm_bridge_alloc =================
[11:14:03] ================== drm_buddy (7 subtests) ==================
[11:14:03] [PASSED] drm_test_buddy_alloc_limit
[11:14:03] [PASSED] drm_test_buddy_alloc_optimistic
[11:14:03] [PASSED] drm_test_buddy_alloc_pessimistic
[11:14:03] [PASSED] drm_test_buddy_alloc_pathological
[11:14:03] [PASSED] drm_test_buddy_alloc_contiguous
[11:14:03] [PASSED] drm_test_buddy_alloc_clear
[11:14:03] [PASSED] drm_test_buddy_alloc_range_bias
[11:14:03] ==================== [PASSED] drm_buddy ====================
[11:14:03] ============= drm_cmdline_parser (40 subtests) =============
[11:14:03] [PASSED] drm_test_cmdline_force_d_only
[11:14:03] [PASSED] drm_test_cmdline_force_D_only_dvi
[11:14:03] [PASSED] drm_test_cmdline_force_D_only_hdmi
[11:14:03] [PASSED] drm_test_cmdline_force_D_only_not_digital
[11:14:03] [PASSED] drm_test_cmdline_force_e_only
[11:14:03] [PASSED] drm_test_cmdline_res
[11:14:03] [PASSED] drm_test_cmdline_res_vesa
[11:14:03] [PASSED] drm_test_cmdline_res_vesa_rblank
[11:14:03] [PASSED] drm_test_cmdline_res_rblank
[11:14:03] [PASSED] drm_test_cmdline_res_bpp
[11:14:03] [PASSED] drm_test_cmdline_res_refresh
[11:14:03] [PASSED] drm_test_cmdline_res_bpp_refresh
[11:14:03] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[11:14:03] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[11:14:03] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[11:14:03] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[11:14:03] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[11:14:03] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[11:14:03] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[11:14:03] [PASSED] drm_test_cmdline_res_margins_force_on
[11:14:03] [PASSED] drm_test_cmdline_res_vesa_margins
[11:14:03] [PASSED] drm_test_cmdline_name
[11:14:03] [PASSED] drm_test_cmdline_name_bpp
[11:14:03] [PASSED] drm_test_cmdline_name_option
[11:14:03] [PASSED] drm_test_cmdline_name_bpp_option
[11:14:03] [PASSED] drm_test_cmdline_rotate_0
[11:14:03] [PASSED] drm_test_cmdline_rotate_90
[11:14:03] [PASSED] drm_test_cmdline_rotate_180
[11:14:03] [PASSED] drm_test_cmdline_rotate_270
[11:14:03] [PASSED] drm_test_cmdline_hmirror
[11:14:03] [PASSED] drm_test_cmdline_vmirror
[11:14:03] [PASSED] drm_test_cmdline_margin_options
[11:14:03] [PASSED] drm_test_cmdline_multiple_options
[11:14:03] [PASSED] drm_test_cmdline_bpp_extra_and_option
[11:14:03] [PASSED] drm_test_cmdline_extra_and_option
[11:14:03] [PASSED] drm_test_cmdline_freestanding_options
[11:14:03] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[11:14:03] [PASSED] drm_test_cmdline_panel_orientation
[11:14:03] ================ drm_test_cmdline_invalid  =================
[11:14:03] [PASSED] margin_only
[11:14:03] [PASSED] interlace_only
[11:14:03] [PASSED] res_missing_x
[11:14:03] [PASSED] res_missing_y
[11:14:03] [PASSED] res_bad_y
[11:14:03] [PASSED] res_missing_y_bpp
[11:14:03] [PASSED] res_bad_bpp
[11:14:03] [PASSED] res_bad_refresh
[11:14:03] [PASSED] res_bpp_refresh_force_on_off
[11:14:03] [PASSED] res_invalid_mode
[11:14:03] [PASSED] res_bpp_wrong_place_mode
[11:14:03] [PASSED] name_bpp_refresh
[11:14:03] [PASSED] name_refresh
[11:14:03] [PASSED] name_refresh_wrong_mode
[11:14:03] [PASSED] name_refresh_invalid_mode
[11:14:03] [PASSED] rotate_multiple
[11:14:03] [PASSED] rotate_invalid_val
[11:14:03] [PASSED] rotate_truncated
[11:14:03] [PASSED] invalid_option
[11:14:03] [PASSED] invalid_tv_option
[11:14:03] [PASSED] truncated_tv_option
[11:14:03] ============ [PASSED] drm_test_cmdline_invalid =============
[11:14:03] =============== drm_test_cmdline_tv_options  ===============
[11:14:03] [PASSED] NTSC
[11:14:03] [PASSED] NTSC_443
[11:14:03] [PASSED] NTSC_J
[11:14:03] [PASSED] PAL
[11:14:03] [PASSED] PAL_M
[11:14:03] [PASSED] PAL_N
[11:14:03] [PASSED] SECAM
[11:14:03] [PASSED] MONO_525
[11:14:03] [PASSED] MONO_625
[11:14:03] =========== [PASSED] drm_test_cmdline_tv_options ===========
[11:14:03] =============== [PASSED] drm_cmdline_parser ================
[11:14:03] ========== drmm_connector_hdmi_init (20 subtests) ==========
[11:14:03] [PASSED] drm_test_connector_hdmi_init_valid
[11:14:03] [PASSED] drm_test_connector_hdmi_init_bpc_8
[11:14:03] [PASSED] drm_test_connector_hdmi_init_bpc_10
[11:14:03] [PASSED] drm_test_connector_hdmi_init_bpc_12
[11:14:03] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[11:14:03] [PASSED] drm_test_connector_hdmi_init_bpc_null
[11:14:03] [PASSED] drm_test_connector_hdmi_init_formats_empty
[11:14:03] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[11:14:03] === drm_test_connector_hdmi_init_formats_yuv420_allowed  ===
[11:14:03] [PASSED] supported_formats=0x9 yuv420_allowed=1
[11:14:03] [PASSED] supported_formats=0x9 yuv420_allowed=0
[11:14:03] [PASSED] supported_formats=0x3 yuv420_allowed=1
[11:14:03] [PASSED] supported_formats=0x3 yuv420_allowed=0
[11:14:03] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[11:14:03] [PASSED] drm_test_connector_hdmi_init_null_ddc
[11:14:03] [PASSED] drm_test_connector_hdmi_init_null_product
[11:14:03] [PASSED] drm_test_connector_hdmi_init_null_vendor
[11:14:03] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[11:14:03] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[11:14:03] [PASSED] drm_test_connector_hdmi_init_product_valid
[11:14:03] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[11:14:03] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[11:14:03] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[11:14:03] ========= drm_test_connector_hdmi_init_type_valid  =========
[11:14:03] [PASSED] HDMI-A
[11:14:03] [PASSED] HDMI-B
[11:14:03] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[11:14:03] ======== drm_test_connector_hdmi_init_type_invalid  ========
[11:14:03] [PASSED] Unknown
[11:14:03] [PASSED] VGA
[11:14:03] [PASSED] DVI-I
[11:14:03] [PASSED] DVI-D
[11:14:03] [PASSED] DVI-A
[11:14:03] [PASSED] Composite
[11:14:03] [PASSED] SVIDEO
[11:14:03] [PASSED] LVDS
[11:14:03] [PASSED] Component
[11:14:03] [PASSED] DIN
[11:14:03] [PASSED] DP
[11:14:03] [PASSED] TV
[11:14:03] [PASSED] eDP
[11:14:03] [PASSED] Virtual
[11:14:03] [PASSED] DSI
[11:14:03] [PASSED] DPI
[11:14:03] [PASSED] Writeback
[11:14:03] [PASSED] SPI
[11:14:03] [PASSED] USB
[11:14:03] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[11:14:03] ============ [PASSED] drmm_connector_hdmi_init =============
[11:14:03] ============= drmm_connector_init (3 subtests) =============
[11:14:03] [PASSED] drm_test_drmm_connector_init
[11:14:03] [PASSED] drm_test_drmm_connector_init_null_ddc
[11:14:03] ========= drm_test_drmm_connector_init_type_valid  =========
[11:14:03] [PASSED] Unknown
[11:14:03] [PASSED] VGA
[11:14:03] [PASSED] DVI-I
[11:14:03] [PASSED] DVI-D
[11:14:03] [PASSED] DVI-A
[11:14:03] [PASSED] Composite
[11:14:03] [PASSED] SVIDEO
[11:14:03] [PASSED] LVDS
[11:14:03] [PASSED] Component
[11:14:03] [PASSED] DIN
[11:14:03] [PASSED] DP
[11:14:03] [PASSED] HDMI-A
[11:14:03] [PASSED] HDMI-B
[11:14:03] [PASSED] TV
[11:14:03] [PASSED] eDP
[11:14:03] [PASSED] Virtual
[11:14:03] [PASSED] DSI
[11:14:03] [PASSED] DPI
[11:14:03] [PASSED] Writeback
[11:14:03] [PASSED] SPI
[11:14:03] [PASSED] USB
[11:14:03] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[11:14:03] =============== [PASSED] drmm_connector_init ===============
[11:14:03] ========= drm_connector_dynamic_init (6 subtests) ==========
[11:14:03] [PASSED] drm_test_drm_connector_dynamic_init
[11:14:03] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[11:14:03] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[11:14:03] [PASSED] drm_test_drm_connector_dynamic_init_properties
[11:14:03] ===== drm_test_drm_connector_dynamic_init_type_valid  ======
[11:14:03] [PASSED] Unknown
[11:14:03] [PASSED] VGA
[11:14:03] [PASSED] DVI-I
[11:14:03] [PASSED] DVI-D
[11:14:03] [PASSED] DVI-A
[11:14:03] [PASSED] Composite
[11:14:03] [PASSED] SVIDEO
[11:14:03] [PASSED] LVDS
[11:14:03] [PASSED] Component
[11:14:03] [PASSED] DIN
[11:14:03] [PASSED] DP
[11:14:03] [PASSED] HDMI-A
[11:14:03] [PASSED] HDMI-B
[11:14:03] [PASSED] TV
[11:14:03] [PASSED] eDP
[11:14:03] [PASSED] Virtual
[11:14:03] [PASSED] DSI
[11:14:03] [PASSED] DPI
[11:14:03] [PASSED] Writeback
[11:14:03] [PASSED] SPI
[11:14:03] [PASSED] USB
[11:14:03] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[11:14:03] ======== drm_test_drm_connector_dynamic_init_name  =========
[11:14:03] [PASSED] Unknown
[11:14:03] [PASSED] VGA
[11:14:03] [PASSED] DVI-I
[11:14:03] [PASSED] DVI-D
[11:14:03] [PASSED] DVI-A
[11:14:03] [PASSED] Composite
[11:14:03] [PASSED] SVIDEO
[11:14:03] [PASSED] LVDS
[11:14:03] [PASSED] Component
[11:14:03] [PASSED] DIN
[11:14:03] [PASSED] DP
[11:14:03] [PASSED] HDMI-A
[11:14:03] [PASSED] HDMI-B
[11:14:03] [PASSED] TV
[11:14:03] [PASSED] eDP
[11:14:03] [PASSED] Virtual
[11:14:03] [PASSED] DSI
[11:14:03] [PASSED] DPI
[11:14:03] [PASSED] Writeback
[11:14:03] [PASSED] SPI
[11:14:03] [PASSED] USB
[11:14:03] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[11:14:03] =========== [PASSED] drm_connector_dynamic_init ============
[11:14:03] ==== drm_connector_dynamic_register_early (4 subtests) =====
[11:14:03] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[11:14:03] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[11:14:03] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[11:14:03] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[11:14:03] ====== [PASSED] drm_connector_dynamic_register_early =======
[11:14:03] ======= drm_connector_dynamic_register (7 subtests) ========
[11:14:03] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[11:14:03] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[11:14:03] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[11:14:03] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[11:14:03] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[11:14:03] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[11:14:03] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[11:14:03] ========= [PASSED] drm_connector_dynamic_register ==========
[11:14:03] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[11:14:03] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[11:14:03] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[11:14:03] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[11:14:03] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[11:14:03] ========== drm_test_get_tv_mode_from_name_valid  ===========
[11:14:03] [PASSED] NTSC
[11:14:03] [PASSED] NTSC-443
[11:14:03] [PASSED] NTSC-J
[11:14:03] [PASSED] PAL
[11:14:03] [PASSED] PAL-M
[11:14:03] [PASSED] PAL-N
[11:14:03] [PASSED] SECAM
[11:14:03] [PASSED] Mono
[11:14:03] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[11:14:03] [PASSED] drm_test_get_tv_mode_from_name_truncated
[11:14:03] ============ [PASSED] drm_get_tv_mode_from_name ============
[11:14:03] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[11:14:03] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[11:14:03] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[11:14:03] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[11:14:03] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[11:14:03] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[11:14:03] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[11:14:03] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid  =
[11:14:03] [PASSED] VIC 96
[11:14:03] [PASSED] VIC 97
[11:14:03] [PASSED] VIC 101
[11:14:03] [PASSED] VIC 102
[11:14:03] [PASSED] VIC 106
[11:14:03] [PASSED] VIC 107
[11:14:03] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[11:14:03] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[11:14:03] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[11:14:03] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[11:14:03] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[11:14:03] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[11:14:03] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[11:14:03] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[11:14:03] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name  ====
[11:14:03] [PASSED] Automatic
[11:14:03] [PASSED] Full
[11:14:03] [PASSED] Limited 16:235
[11:14:03] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[11:14:03] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[11:14:03] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[11:14:03] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[11:14:03] === drm_test_drm_hdmi_connector_get_output_format_name  ====
[11:14:03] [PASSED] RGB
[11:14:03] [PASSED] YUV 4:2:0
[11:14:03] [PASSED] YUV 4:2:2
[11:14:03] [PASSED] YUV 4:4:4
[11:14:03] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[11:14:03] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[11:14:03] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[11:14:03] ============= drm_damage_helper (21 subtests) ==============
[11:14:03] [PASSED] drm_test_damage_iter_no_damage
[11:14:03] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[11:14:03] [PASSED] drm_test_damage_iter_no_damage_src_moved
[11:14:03] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[11:14:03] [PASSED] drm_test_damage_iter_no_damage_not_visible
[11:14:03] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[11:14:03] [PASSED] drm_test_damage_iter_no_damage_no_fb
[11:14:03] [PASSED] drm_test_damage_iter_simple_damage
[11:14:03] [PASSED] drm_test_damage_iter_single_damage
[11:14:03] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[11:14:03] [PASSED] drm_test_damage_iter_single_damage_outside_src
[11:14:03] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[11:14:03] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[11:14:03] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[11:14:03] [PASSED] drm_test_damage_iter_single_damage_src_moved
[11:14:03] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[11:14:03] [PASSED] drm_test_damage_iter_damage
[11:14:03] [PASSED] drm_test_damage_iter_damage_one_intersect
[11:14:03] [PASSED] drm_test_damage_iter_damage_one_outside
[11:14:03] [PASSED] drm_test_damage_iter_damage_src_moved
[11:14:03] [PASSED] drm_test_damage_iter_damage_not_visible
[11:14:03] ================ [PASSED] drm_damage_helper ================
[11:14:03] ============== drm_dp_mst_helper (3 subtests) ==============
[11:14:03] ============== drm_test_dp_mst_calc_pbn_mode  ==============
[11:14:03] [PASSED] Clock 154000 BPP 30 DSC disabled
[11:14:03] [PASSED] Clock 234000 BPP 30 DSC disabled
[11:14:03] [PASSED] Clock 297000 BPP 24 DSC disabled
[11:14:03] [PASSED] Clock 332880 BPP 24 DSC enabled
[11:14:03] [PASSED] Clock 324540 BPP 24 DSC enabled
[11:14:03] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[11:14:03] ============== drm_test_dp_mst_calc_pbn_div  ===============
[11:14:03] [PASSED] Link rate 2000000 lane count 4
[11:14:03] [PASSED] Link rate 2000000 lane count 2
[11:14:03] [PASSED] Link rate 2000000 lane count 1
[11:14:03] [PASSED] Link rate 1350000 lane count 4
[11:14:03] [PASSED] Link rate 1350000 lane count 2
[11:14:03] [PASSED] Link rate 1350000 lane count 1
[11:14:03] [PASSED] Link rate 1000000 lane count 4
[11:14:03] [PASSED] Link rate 1000000 lane count 2
[11:14:03] [PASSED] Link rate 1000000 lane count 1
[11:14:03] [PASSED] Link rate 810000 lane count 4
[11:14:03] [PASSED] Link rate 810000 lane count 2
[11:14:03] [PASSED] Link rate 810000 lane count 1
[11:14:03] [PASSED] Link rate 540000 lane count 4
[11:14:03] [PASSED] Link rate 540000 lane count 2
[11:14:03] [PASSED] Link rate 540000 lane count 1
[11:14:03] [PASSED] Link rate 270000 lane count 4
[11:14:03] [PASSED] Link rate 270000 lane count 2
[11:14:03] [PASSED] Link rate 270000 lane count 1
[11:14:03] [PASSED] Link rate 162000 lane count 4
[11:14:03] [PASSED] Link rate 162000 lane count 2
[11:14:03] [PASSED] Link rate 162000 lane count 1
[11:14:03] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[11:14:03] ========= drm_test_dp_mst_sideband_msg_req_decode  =========
[11:14:03] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[11:14:03] [PASSED] DP_POWER_UP_PHY with port number
[11:14:03] [PASSED] DP_POWER_DOWN_PHY with port number
[11:14:03] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[11:14:03] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[11:14:03] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[11:14:03] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[11:14:03] [PASSED] DP_QUERY_PAYLOAD with port number
[11:14:03] [PASSED] DP_QUERY_PAYLOAD with VCPI
[11:14:03] [PASSED] DP_REMOTE_DPCD_READ with port number
[11:14:03] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[11:14:03] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[11:14:03] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[11:14:03] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[11:14:03] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[11:14:03] [PASSED] DP_REMOTE_I2C_READ with port number
[11:14:03] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[11:14:03] [PASSED] DP_REMOTE_I2C_READ with transactions array
[11:14:03] [PASSED] DP_REMOTE_I2C_WRITE with port number
[11:14:03] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[11:14:03] [PASSED] DP_REMOTE_I2C_WRITE with data array
[11:14:03] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[11:14:03] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[11:14:03] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[11:14:03] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[11:14:03] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[11:14:03] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[11:14:03] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[11:14:03] ================ [PASSED] drm_dp_mst_helper ================
[11:14:03] ================== drm_exec (7 subtests) ===================
[11:14:03] [PASSED] sanitycheck
[11:14:03] [PASSED] test_lock
[11:14:03] [PASSED] test_lock_unlock
[11:14:03] [PASSED] test_duplicates
[11:14:03] [PASSED] test_prepare
[11:14:03] [PASSED] test_prepare_array
[11:14:03] [PASSED] test_multiple_loops
[11:14:03] ==================== [PASSED] drm_exec =====================
[11:14:03] =========== drm_format_helper_test (17 subtests) ===========
[11:14:03] ============== drm_test_fb_xrgb8888_to_gray8  ==============
[11:14:03] [PASSED] single_pixel_source_buffer
[11:14:03] [PASSED] single_pixel_clip_rectangle
[11:14:03] [PASSED] well_known_colors
[11:14:03] [PASSED] destination_pitch
[11:14:03] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[11:14:03] ============= drm_test_fb_xrgb8888_to_rgb332  ==============
[11:14:03] [PASSED] single_pixel_source_buffer
[11:14:03] [PASSED] single_pixel_clip_rectangle
[11:14:03] [PASSED] well_known_colors
[11:14:03] [PASSED] destination_pitch
[11:14:03] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[11:14:03] ============= drm_test_fb_xrgb8888_to_rgb565  ==============
[11:14:03] [PASSED] single_pixel_source_buffer
[11:14:03] [PASSED] single_pixel_clip_rectangle
[11:14:03] [PASSED] well_known_colors
[11:14:03] [PASSED] destination_pitch
[11:14:03] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[11:14:03] ============ drm_test_fb_xrgb8888_to_xrgb1555  =============
[11:14:03] [PASSED] single_pixel_source_buffer
[11:14:03] [PASSED] single_pixel_clip_rectangle
[11:14:03] [PASSED] well_known_colors
[11:14:03] [PASSED] destination_pitch
[11:14:03] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[11:14:03] ============ drm_test_fb_xrgb8888_to_argb1555  =============
[11:14:03] [PASSED] single_pixel_source_buffer
[11:14:03] [PASSED] single_pixel_clip_rectangle
[11:14:03] [PASSED] well_known_colors
[11:14:03] [PASSED] destination_pitch
[11:14:03] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[11:14:03] ============ drm_test_fb_xrgb8888_to_rgba5551  =============
[11:14:03] [PASSED] single_pixel_source_buffer
[11:14:03] [PASSED] single_pixel_clip_rectangle
[11:14:03] [PASSED] well_known_colors
[11:14:03] [PASSED] destination_pitch
[11:14:03] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[11:14:03] ============= drm_test_fb_xrgb8888_to_rgb888  ==============
[11:14:03] [PASSED] single_pixel_source_buffer
[11:14:03] [PASSED] single_pixel_clip_rectangle
[11:14:03] [PASSED] well_known_colors
[11:14:03] [PASSED] destination_pitch
[11:14:03] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[11:14:03] ============= drm_test_fb_xrgb8888_to_bgr888  ==============
[11:14:03] [PASSED] single_pixel_source_buffer
[11:14:03] [PASSED] single_pixel_clip_rectangle
[11:14:03] [PASSED] well_known_colors
[11:14:03] [PASSED] destination_pitch
[11:14:03] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[11:14:03] ============ drm_test_fb_xrgb8888_to_argb8888  =============
[11:14:03] [PASSED] single_pixel_source_buffer
[11:14:03] [PASSED] single_pixel_clip_rectangle
[11:14:03] [PASSED] well_known_colors
[11:14:03] [PASSED] destination_pitch
[11:14:03] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[11:14:03] =========== drm_test_fb_xrgb8888_to_xrgb2101010  ===========
[11:14:03] [PASSED] single_pixel_source_buffer
[11:14:03] [PASSED] single_pixel_clip_rectangle
[11:14:03] [PASSED] well_known_colors
[11:14:03] [PASSED] destination_pitch
[11:14:03] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[11:14:03] =========== drm_test_fb_xrgb8888_to_argb2101010  ===========
[11:14:03] [PASSED] single_pixel_source_buffer
[11:14:03] [PASSED] single_pixel_clip_rectangle
[11:14:03] [PASSED] well_known_colors
[11:14:03] [PASSED] destination_pitch
[11:14:03] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[11:14:03] ============== drm_test_fb_xrgb8888_to_mono  ===============
[11:14:03] [PASSED] single_pixel_source_buffer
[11:14:03] [PASSED] single_pixel_clip_rectangle
[11:14:03] [PASSED] well_known_colors
[11:14:03] [PASSED] destination_pitch
[11:14:03] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[11:14:03] ==================== drm_test_fb_swab  =====================
[11:14:03] [PASSED] single_pixel_source_buffer
[11:14:03] [PASSED] single_pixel_clip_rectangle
[11:14:03] [PASSED] well_known_colors
[11:14:03] [PASSED] destination_pitch
[11:14:03] ================ [PASSED] drm_test_fb_swab =================
[11:14:03] ============ drm_test_fb_xrgb8888_to_xbgr8888  =============
[11:14:03] [PASSED] single_pixel_source_buffer
[11:14:03] [PASSED] single_pixel_clip_rectangle
[11:14:03] [PASSED] well_known_colors
[11:14:03] [PASSED] destination_pitch
[11:14:03] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[11:14:03] ============ drm_test_fb_xrgb8888_to_abgr8888  =============
[11:14:03] [PASSED] single_pixel_source_buffer
[11:14:03] [PASSED] single_pixel_clip_rectangle
[11:14:03] [PASSED] well_known_colors
[11:14:03] [PASSED] destination_pitch
[11:14:03] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[11:14:03] ================= drm_test_fb_clip_offset  =================
[11:14:03] [PASSED] pass through
[11:14:03] [PASSED] horizontal offset
[11:14:03] [PASSED] vertical offset
[11:14:03] [PASSED] horizontal and vertical offset
[11:14:03] [PASSED] horizontal offset (custom pitch)
[11:14:03] [PASSED] vertical offset (custom pitch)
[11:14:03] [PASSED] horizontal and vertical offset (custom pitch)
[11:14:03] ============= [PASSED] drm_test_fb_clip_offset =============
[11:14:03] =================== drm_test_fb_memcpy  ====================
[11:14:03] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[11:14:03] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[11:14:03] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[11:14:03] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[11:14:03] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[11:14:03] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[11:14:03] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[11:14:03] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[11:14:03] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[11:14:03] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[11:14:03] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[11:14:03] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[11:14:03] =============== [PASSED] drm_test_fb_memcpy ================
[11:14:03] ============= [PASSED] drm_format_helper_test ==============
[11:14:03] ================= drm_format (18 subtests) =================
[11:14:03] [PASSED] drm_test_format_block_width_invalid
[11:14:03] [PASSED] drm_test_format_block_width_one_plane
[11:14:03] [PASSED] drm_test_format_block_width_two_plane
[11:14:03] [PASSED] drm_test_format_block_width_three_plane
[11:14:03] [PASSED] drm_test_format_block_width_tiled
[11:14:03] [PASSED] drm_test_format_block_height_invalid
[11:14:03] [PASSED] drm_test_format_block_height_one_plane
[11:14:03] [PASSED] drm_test_format_block_height_two_plane
[11:14:03] [PASSED] drm_test_format_block_height_three_plane
[11:14:03] [PASSED] drm_test_format_block_height_tiled
[11:14:03] [PASSED] drm_test_format_min_pitch_invalid
[11:14:03] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[11:14:03] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[11:14:03] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[11:14:03] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[11:14:03] [PASSED] drm_test_format_min_pitch_two_plane
[11:14:03] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[11:14:03] [PASSED] drm_test_format_min_pitch_tiled
[11:14:03] =================== [PASSED] drm_format ====================
[11:14:03] ============== drm_framebuffer (10 subtests) ===============
[11:14:03] ========== drm_test_framebuffer_check_src_coords  ==========
[11:14:03] [PASSED] Success: source fits into fb
[11:14:03] [PASSED] Fail: overflowing fb with x-axis coordinate
[11:14:03] [PASSED] Fail: overflowing fb with y-axis coordinate
[11:14:03] [PASSED] Fail: overflowing fb with source width
[11:14:03] [PASSED] Fail: overflowing fb with source height
[11:14:03] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[11:14:03] [PASSED] drm_test_framebuffer_cleanup
[11:14:03] =============== drm_test_framebuffer_create  ===============
[11:14:03] [PASSED] ABGR8888 normal sizes
[11:14:03] [PASSED] ABGR8888 max sizes
[11:14:03] [PASSED] ABGR8888 pitch greater than min required
[11:14:03] [PASSED] ABGR8888 pitch less than min required
[11:14:03] [PASSED] ABGR8888 Invalid width
[11:14:03] [PASSED] ABGR8888 Invalid buffer handle
[11:14:03] [PASSED] No pixel format
[11:14:03] [PASSED] ABGR8888 Width 0
[11:14:03] [PASSED] ABGR8888 Height 0
[11:14:03] [PASSED] ABGR8888 Out of bound height * pitch combination
[11:14:03] [PASSED] ABGR8888 Large buffer offset
[11:14:03] [PASSED] ABGR8888 Buffer offset for inexistent plane
[11:14:03] [PASSED] ABGR8888 Invalid flag
[11:14:03] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[11:14:03] [PASSED] ABGR8888 Valid buffer modifier
[11:14:03] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[11:14:03] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[11:14:03] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[11:14:03] [PASSED] NV12 Normal sizes
[11:14:03] [PASSED] NV12 Max sizes
[11:14:03] [PASSED] NV12 Invalid pitch
[11:14:03] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[11:14:03] [PASSED] NV12 different  modifier per-plane
[11:14:03] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[11:14:03] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[11:14:03] [PASSED] NV12 Modifier for inexistent plane
[11:14:03] [PASSED] NV12 Handle for inexistent plane
[11:14:03] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[11:14:03] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[11:14:03] [PASSED] YVU420 Normal sizes
[11:14:03] [PASSED] YVU420 Max sizes
[11:14:03] [PASSED] YVU420 Invalid pitch
[11:14:03] [PASSED] YVU420 Different pitches
[11:14:03] [PASSED] YVU420 Different buffer offsets/pitches
[11:14:03] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[11:14:03] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[11:14:03] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[11:14:03] [PASSED] YVU420 Valid modifier
[11:14:03] [PASSED] YVU420 Different modifiers per plane
[11:14:03] [PASSED] YVU420 Modifier for inexistent plane
[11:14:03] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[11:14:03] [PASSED] X0L2 Normal sizes
[11:14:03] [PASSED] X0L2 Max sizes
[11:14:03] [PASSED] X0L2 Invalid pitch
[11:14:03] [PASSED] X0L2 Pitch greater than minimum required
[11:14:03] [PASSED] X0L2 Handle for inexistent plane
[11:14:03] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[11:14:03] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[11:14:03] [PASSED] X0L2 Valid modifier
[11:14:03] [PASSED] X0L2 Modifier for inexistent plane
[11:14:03] =========== [PASSED] drm_test_framebuffer_create ===========
[11:14:03] [PASSED] drm_test_framebuffer_free
[11:14:03] [PASSED] drm_test_framebuffer_init
[11:14:03] [PASSED] drm_test_framebuffer_init_bad_format
[11:14:03] [PASSED] drm_test_framebuffer_init_dev_mismatch
[11:14:03] [PASSED] drm_test_framebuffer_lookup
[11:14:03] [PASSED] drm_test_framebuffer_lookup_inexistent
[11:14:03] [PASSED] drm_test_framebuffer_modifiers_not_supported
[11:14:03] ================= [PASSED] drm_framebuffer =================
[11:14:03] ================ drm_gem_shmem (8 subtests) ================
[11:14:03] [PASSED] drm_gem_shmem_test_obj_create
[11:14:03] [PASSED] drm_gem_shmem_test_obj_create_private
[11:14:03] [PASSED] drm_gem_shmem_test_pin_pages
[11:14:03] [PASSED] drm_gem_shmem_test_vmap
[11:14:03] [PASSED] drm_gem_shmem_test_get_pages_sgt
[11:14:03] [PASSED] drm_gem_shmem_test_get_sg_table
[11:14:03] [PASSED] drm_gem_shmem_test_madvise
[11:14:03] [PASSED] drm_gem_shmem_test_purge
[11:14:03] ================== [PASSED] drm_gem_shmem ==================
[11:14:03] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[11:14:03] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[11:14:03] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[11:14:03] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[11:14:03] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[11:14:03] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[11:14:03] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[11:14:03] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420  =======
[11:14:03] [PASSED] Automatic
[11:14:03] [PASSED] Full
[11:14:03] [PASSED] Limited 16:235
[11:14:03] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[11:14:03] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[11:14:03] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[11:14:03] [PASSED] drm_test_check_disable_connector
[11:14:03] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[11:14:03] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[11:14:03] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[11:14:03] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[11:14:03] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[11:14:03] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[11:14:03] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[11:14:03] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[11:14:03] [PASSED] drm_test_check_output_bpc_dvi
[11:14:03] [PASSED] drm_test_check_output_bpc_format_vic_1
[11:14:03] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[11:14:03] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[11:14:03] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[11:14:03] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[11:14:03] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[11:14:03] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[11:14:03] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[11:14:03] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[11:14:03] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[11:14:03] [PASSED] drm_test_check_broadcast_rgb_value
[11:14:03] [PASSED] drm_test_check_bpc_8_value
[11:14:03] [PASSED] drm_test_check_bpc_10_value
[11:14:03] [PASSED] drm_test_check_bpc_12_value
[11:14:03] [PASSED] drm_test_check_format_value
[11:14:03] [PASSED] drm_test_check_tmds_char_value
[11:14:03] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[11:14:03] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[11:14:03] [PASSED] drm_test_check_mode_valid
[11:14:03] [PASSED] drm_test_check_mode_valid_reject
[11:14:03] [PASSED] drm_test_check_mode_valid_reject_rate
[11:14:03] [PASSED] drm_test_check_mode_valid_reject_max_clock
[11:14:03] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[11:14:03] ================= drm_managed (2 subtests) =================
[11:14:03] [PASSED] drm_test_managed_release_action
[11:14:03] [PASSED] drm_test_managed_run_action
[11:14:03] =================== [PASSED] drm_managed ===================
[11:14:03] =================== drm_mm (6 subtests) ====================
[11:14:03] [PASSED] drm_test_mm_init
[11:14:03] [PASSED] drm_test_mm_debug
[11:14:03] [PASSED] drm_test_mm_align32
[11:14:03] [PASSED] drm_test_mm_align64
[11:14:03] [PASSED] drm_test_mm_lowest
[11:14:03] [PASSED] drm_test_mm_highest
[11:14:03] ===================== [PASSED] drm_mm ======================
[11:14:03] ============= drm_modes_analog_tv (5 subtests) =============
[11:14:03] [PASSED] drm_test_modes_analog_tv_mono_576i
[11:14:03] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[11:14:03] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[11:14:03] [PASSED] drm_test_modes_analog_tv_pal_576i
[11:14:03] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[11:14:03] =============== [PASSED] drm_modes_analog_tv ===============
[11:14:03] ============== drm_plane_helper (2 subtests) ===============
[11:14:03] =============== drm_test_check_plane_state  ================
[11:14:03] [PASSED] clipping_simple
[11:14:03] [PASSED] clipping_rotate_reflect
[11:14:03] [PASSED] positioning_simple
[11:14:03] [PASSED] upscaling
[11:14:03] [PASSED] downscaling
[11:14:03] [PASSED] rounding1
[11:14:03] [PASSED] rounding2
[11:14:03] [PASSED] rounding3
[11:14:03] [PASSED] rounding4
[11:14:03] =========== [PASSED] drm_test_check_plane_state ============
[11:14:03] =========== drm_test_check_invalid_plane_state  ============
[11:14:03] [PASSED] positioning_invalid
[11:14:03] [PASSED] upscaling_invalid
[11:14:03] [PASSED] downscaling_invalid
[11:14:03] ======= [PASSED] drm_test_check_invalid_plane_state ========
[11:14:03] ================ [PASSED] drm_plane_helper =================
[11:14:03] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[11:14:03] ====== drm_test_connector_helper_tv_get_modes_check  =======
[11:14:03] [PASSED] None
[11:14:03] [PASSED] PAL
[11:14:03] [PASSED] NTSC
[11:14:03] [PASSED] Both, NTSC Default
[11:14:03] [PASSED] Both, PAL Default
[11:14:03] [PASSED] Both, NTSC Default, with PAL on command-line
[11:14:03] [PASSED] Both, PAL Default, with NTSC on command-line
[11:14:03] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[11:14:03] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[11:14:03] ================== drm_rect (9 subtests) ===================
[11:14:03] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[11:14:03] [PASSED] drm_test_rect_clip_scaled_not_clipped
[11:14:03] [PASSED] drm_test_rect_clip_scaled_clipped
[11:14:03] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[11:14:03] ================= drm_test_rect_intersect  =================
[11:14:03] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[11:14:03] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[11:14:03] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[11:14:03] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[11:14:03] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[11:14:03] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[11:14:03] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[11:14:03] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[11:14:03] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[11:14:03] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[11:14:03] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[11:14:03] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[11:14:03] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[11:14:03] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[11:14:03] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[11:14:03] ============= [PASSED] drm_test_rect_intersect =============
[11:14:03] ================ drm_test_rect_calc_hscale  ================
[11:14:03] [PASSED] normal use
[11:14:03] [PASSED] out of max range
[11:14:03] [PASSED] out of min range
[11:14:03] [PASSED] zero dst
[11:14:03] [PASSED] negative src
[11:14:03] [PASSED] negative dst
[11:14:03] ============ [PASSED] drm_test_rect_calc_hscale ============
[11:14:03] ================ drm_test_rect_calc_vscale  ================
[11:14:03] [PASSED] normal use
[11:14:03] [PASSED] out of max range
[11:14:03] [PASSED] out of min range
[11:14:03] [PASSED] zero dst
[11:14:03] [PASSED] negative src
[11:14:03] [PASSED] negative dst
[11:14:03] ============ [PASSED] drm_test_rect_calc_vscale ============
[11:14:03] ================== drm_test_rect_rotate  ===================
[11:14:03] [PASSED] reflect-x
[11:14:03] [PASSED] reflect-y
[11:14:03] [PASSED] rotate-0
[11:14:03] [PASSED] rotate-90
[11:14:03] [PASSED] rotate-180
[11:14:03] [PASSED] rotate-270
stty: 'standard input': Inappropriate ioctl for device
[11:14:03] ============== [PASSED] drm_test_rect_rotate ===============
[11:14:03] ================ drm_test_rect_rotate_inv  =================
[11:14:03] [PASSED] reflect-x
[11:14:03] [PASSED] reflect-y
[11:14:03] [PASSED] rotate-0
[11:14:03] [PASSED] rotate-90
[11:14:03] [PASSED] rotate-180
[11:14:03] [PASSED] rotate-270
[11:14:03] ============ [PASSED] drm_test_rect_rotate_inv =============
[11:14:03] ==================== [PASSED] drm_rect =====================
[11:14:04] ============ drm_sysfb_modeset_test (1 subtest) ============
[11:14:04] ============ drm_test_sysfb_build_fourcc_list  =============
[11:14:04] [PASSED] no native formats
[11:14:04] [PASSED] XRGB8888 as native format
[11:14:04] [PASSED] remove duplicates
[11:14:04] [PASSED] convert alpha formats
[11:14:04] [PASSED] random formats
[11:14:04] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[11:14:04] ============= [PASSED] drm_sysfb_modeset_test ==============
[11:14:04] ============================================================
[11:14:04] Testing complete. Ran 616 tests: passed: 616
[11:14:04] Elapsed time: 23.276s total, 1.666s configuring, 21.440s building, 0.139s running

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[11:14:04] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[11:14:05] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[11:14:13] Starting KUnit Kernel (1/1)...
[11:14:13] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[11:14:13] ================= ttm_device (5 subtests) ==================
[11:14:13] [PASSED] ttm_device_init_basic
[11:14:13] [PASSED] ttm_device_init_multiple
[11:14:13] [PASSED] ttm_device_fini_basic
[11:14:13] [PASSED] ttm_device_init_no_vma_man
[11:14:13] ================== ttm_device_init_pools  ==================
[11:14:13] [PASSED] No DMA allocations, no DMA32 required
[11:14:13] [PASSED] DMA allocations, DMA32 required
[11:14:13] [PASSED] No DMA allocations, DMA32 required
[11:14:13] [PASSED] DMA allocations, no DMA32 required
[11:14:13] ============== [PASSED] ttm_device_init_pools ==============
[11:14:13] =================== [PASSED] ttm_device ====================
[11:14:13] ================== ttm_pool (8 subtests) ===================
[11:14:13] ================== ttm_pool_alloc_basic  ===================
[11:14:13] [PASSED] One page
[11:14:13] [PASSED] More than one page
[11:14:13] [PASSED] Above the allocation limit
[11:14:13] [PASSED] One page, with coherent DMA mappings enabled
[11:14:13] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[11:14:13] ============== [PASSED] ttm_pool_alloc_basic ===============
[11:14:13] ============== ttm_pool_alloc_basic_dma_addr  ==============
[11:14:13] [PASSED] One page
[11:14:13] [PASSED] More than one page
[11:14:13] [PASSED] Above the allocation limit
[11:14:13] [PASSED] One page, with coherent DMA mappings enabled
[11:14:13] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[11:14:13] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[11:14:13] [PASSED] ttm_pool_alloc_order_caching_match
[11:14:13] [PASSED] ttm_pool_alloc_caching_mismatch
[11:14:13] [PASSED] ttm_pool_alloc_order_mismatch
[11:14:13] [PASSED] ttm_pool_free_dma_alloc
[11:14:13] [PASSED] ttm_pool_free_no_dma_alloc
[11:14:13] [PASSED] ttm_pool_fini_basic
[11:14:13] ==================== [PASSED] ttm_pool =====================
[11:14:13] ================ ttm_resource (8 subtests) =================
[11:14:13] ================= ttm_resource_init_basic  =================
[11:14:13] [PASSED] Init resource in TTM_PL_SYSTEM
[11:14:13] [PASSED] Init resource in TTM_PL_VRAM
[11:14:13] [PASSED] Init resource in a private placement
[11:14:13] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[11:14:13] ============= [PASSED] ttm_resource_init_basic =============
[11:14:13] [PASSED] ttm_resource_init_pinned
[11:14:13] [PASSED] ttm_resource_fini_basic
[11:14:13] [PASSED] ttm_resource_manager_init_basic
[11:14:13] [PASSED] ttm_resource_manager_usage_basic
[11:14:13] [PASSED] ttm_resource_manager_set_used_basic
[11:14:13] [PASSED] ttm_sys_man_alloc_basic
[11:14:13] [PASSED] ttm_sys_man_free_basic
[11:14:13] ================== [PASSED] ttm_resource ===================
[11:14:13] =================== ttm_tt (15 subtests) ===================
[11:14:13] ==================== ttm_tt_init_basic  ====================
[11:14:13] [PASSED] Page-aligned size
[11:14:13] [PASSED] Extra pages requested
[11:14:13] ================ [PASSED] ttm_tt_init_basic ================
[11:14:13] [PASSED] ttm_tt_init_misaligned
[11:14:13] [PASSED] ttm_tt_fini_basic
[11:14:13] [PASSED] ttm_tt_fini_sg
[11:14:13] [PASSED] ttm_tt_fini_shmem
[11:14:13] [PASSED] ttm_tt_create_basic
[11:14:13] [PASSED] ttm_tt_create_invalid_bo_type
[11:14:13] [PASSED] ttm_tt_create_ttm_exists
[11:14:13] [PASSED] ttm_tt_create_failed
[11:14:13] [PASSED] ttm_tt_destroy_basic
[11:14:13] [PASSED] ttm_tt_populate_null_ttm
[11:14:13] [PASSED] ttm_tt_populate_populated_ttm
[11:14:13] [PASSED] ttm_tt_unpopulate_basic
[11:14:13] [PASSED] ttm_tt_unpopulate_empty_ttm
[11:14:13] [PASSED] ttm_tt_swapin_basic
[11:14:13] ===================== [PASSED] ttm_tt ======================
[11:14:13] =================== ttm_bo (14 subtests) ===================
[11:14:13] =========== ttm_bo_reserve_optimistic_no_ticket  ===========
[11:14:13] [PASSED] Cannot be interrupted and sleeps
[11:14:13] [PASSED] Cannot be interrupted, locks straight away
[11:14:13] [PASSED] Can be interrupted, sleeps
[11:14:13] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[11:14:13] [PASSED] ttm_bo_reserve_locked_no_sleep
[11:14:13] [PASSED] ttm_bo_reserve_no_wait_ticket
[11:14:13] [PASSED] ttm_bo_reserve_double_resv
[11:14:13] [PASSED] ttm_bo_reserve_interrupted
[11:14:13] [PASSED] ttm_bo_reserve_deadlock
[11:14:13] [PASSED] ttm_bo_unreserve_basic
[11:14:13] [PASSED] ttm_bo_unreserve_pinned
[11:14:13] [PASSED] ttm_bo_unreserve_bulk
[11:14:13] [PASSED] ttm_bo_put_basic
[11:14:13] [PASSED] ttm_bo_put_shared_resv
[11:14:13] [PASSED] ttm_bo_pin_basic
[11:14:13] [PASSED] ttm_bo_pin_unpin_resource
[11:14:13] [PASSED] ttm_bo_multiple_pin_one_unpin
[11:14:13] ===================== [PASSED] ttm_bo ======================
[11:14:13] ============== ttm_bo_validate (22 subtests) ===============
[11:14:13] ============== ttm_bo_init_reserved_sys_man  ===============
[11:14:13] [PASSED] Buffer object for userspace
[11:14:13] [PASSED] Kernel buffer object
[11:14:13] [PASSED] Shared buffer object
[11:14:13] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[11:14:13] ============== ttm_bo_init_reserved_mock_man  ==============
[11:14:13] [PASSED] Buffer object for userspace
[11:14:13] [PASSED] Kernel buffer object
[11:14:13] [PASSED] Shared buffer object
[11:14:13] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[11:14:13] [PASSED] ttm_bo_init_reserved_resv
[11:14:13] ================== ttm_bo_validate_basic  ==================
[11:14:13] [PASSED] Buffer object for userspace
[11:14:13] [PASSED] Kernel buffer object
[11:14:13] [PASSED] Shared buffer object
[11:14:13] ============== [PASSED] ttm_bo_validate_basic ==============
[11:14:13] [PASSED] ttm_bo_validate_invalid_placement
[11:14:13] ============= ttm_bo_validate_same_placement  ==============
[11:14:13] [PASSED] System manager
[11:14:13] [PASSED] VRAM manager
[11:14:13] ========= [PASSED] ttm_bo_validate_same_placement ==========
[11:14:13] [PASSED] ttm_bo_validate_failed_alloc
[11:14:13] [PASSED] ttm_bo_validate_pinned
[11:14:13] [PASSED] ttm_bo_validate_busy_placement
[11:14:13] ================ ttm_bo_validate_multihop  =================
[11:14:13] [PASSED] Buffer object for userspace
[11:14:13] [PASSED] Kernel buffer object
[11:14:13] [PASSED] Shared buffer object
[11:14:13] ============ [PASSED] ttm_bo_validate_multihop =============
[11:14:13] ========== ttm_bo_validate_no_placement_signaled  ==========
[11:14:13] [PASSED] Buffer object in system domain, no page vector
[11:14:13] [PASSED] Buffer object in system domain with an existing page vector
[11:14:13] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[11:14:13] ======== ttm_bo_validate_no_placement_not_signaled  ========
[11:14:13] [PASSED] Buffer object for userspace
[11:14:13] [PASSED] Kernel buffer object
[11:14:13] [PASSED] Shared buffer object
[11:14:13] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[11:14:13] [PASSED] ttm_bo_validate_move_fence_signaled
[11:14:13] ========= ttm_bo_validate_move_fence_not_signaled  =========
[11:14:13] [PASSED] Waits for GPU
[11:14:13] [PASSED] Tries to lock straight away
[11:14:14] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[11:14:14] [PASSED] ttm_bo_validate_swapout
[11:14:14] [PASSED] ttm_bo_validate_happy_evict
[11:14:14] [PASSED] ttm_bo_validate_all_pinned_evict
[11:14:14] [PASSED] ttm_bo_validate_allowed_only_evict
[11:14:14] [PASSED] ttm_bo_validate_deleted_evict
[11:14:14] [PASSED] ttm_bo_validate_busy_domain_evict
[11:14:14] [PASSED] ttm_bo_validate_evict_gutting
[11:14:14] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[11:14:14] ================= [PASSED] ttm_bo_validate =================
[11:14:14] ============================================================
[11:14:14] Testing complete. Ran 102 tests: passed: 102
[11:14:14] Elapsed time: 10.057s total, 1.672s configuring, 7.718s building, 0.560s running

+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel



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

* ✓ Xe.CI.BAT: success for PCI: VF resizable BAR (rev9)
  2025-07-02  9:35 [PATCH v10 0/5] PCI: VF resizable BAR Michał Winiarski
                   ` (6 preceding siblings ...)
  2025-07-02 11:14 ` ✓ CI.KUnit: success " Patchwork
@ 2025-07-02 12:02 ` Patchwork
  2025-07-04  2:42 ` ✗ Xe.CI.Full: failure " Patchwork
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2025-07-02 12:02 UTC (permalink / raw)
  To: Michał Winiarski; +Cc: intel-xe

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

== Series Details ==

Series: PCI: VF resizable BAR (rev9)
URL   : https://patchwork.freedesktop.org/series/138887/
State : success

== Summary ==

CI Bug Log - changes from xe-3334-b96850785acbd7f0221629625724533cefc2481e_BAT -> xe-pw-138887v9_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (9 -> 8)
------------------------------

  Missing    (1): bat-adlp-vm 

Known issues
------------

  Here are the changes found in xe-pw-138887v9_BAT that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - bat-lnl-2:          NOTRUN -> [SKIP][1] ([Intel XE#1466] / [Intel XE#2235])
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138887v9/bat-lnl-2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_flip@basic-flip-vs-dpms:
    - bat-lnl-2:          NOTRUN -> [SKIP][2] ([Intel XE#2235] / [Intel XE#2482]) +3 other tests skip
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138887v9/bat-lnl-2/igt@kms_flip@basic-flip-vs-dpms.html

  * igt@kms_force_connector_basic@force-connector-state:
    - bat-lnl-2:          NOTRUN -> [SKIP][3] ([Intel XE#2235] / [Intel XE#352]) +2 other tests skip
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138887v9/bat-lnl-2/igt@kms_force_connector_basic@force-connector-state.html

  * igt@kms_frontbuffer_tracking@basic:
    - bat-lnl-2:          NOTRUN -> [SKIP][4] ([Intel XE#2235] / [Intel XE#2548])
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138887v9/bat-lnl-2/igt@kms_frontbuffer_tracking@basic.html

  * igt@kms_hdmi_inject@inject-audio:
    - bat-lnl-2:          NOTRUN -> [SKIP][5] ([Intel XE#1470] / [Intel XE#2235] / [Intel XE#2853])
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138887v9/bat-lnl-2/igt@kms_hdmi_inject@inject-audio.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24:
    - bat-lnl-2:          NOTRUN -> [SKIP][6] ([Intel XE#2235]) +13 other tests skip
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138887v9/bat-lnl-2/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24.html

  * igt@kms_psr@psr-cursor-plane-move:
    - bat-lnl-2:          NOTRUN -> [SKIP][7] ([Intel XE#2850] / [Intel XE#929]) +2 other tests skip
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138887v9/bat-lnl-2/igt@kms_psr@psr-cursor-plane-move.html

  * igt@sriov_basic@enable-vfs-autoprobe-off:
    - bat-lnl-2:          NOTRUN -> [SKIP][8] ([Intel XE#1091] / [Intel XE#2849]) +1 other test skip
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138887v9/bat-lnl-2/igt@sriov_basic@enable-vfs-autoprobe-off.html

  * igt@xe_evict@evict-beng-small:
    - bat-lnl-2:          NOTRUN -> [SKIP][9] ([Intel XE#688]) +11 other tests skip
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138887v9/bat-lnl-2/igt@xe_evict@evict-beng-small.html

  * igt@xe_live_ktest@xe_bo@xe_bo_evict_kunit:
    - bat-lnl-2:          NOTRUN -> [SKIP][10] ([Intel XE#2229]) +2 other tests skip
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138887v9/bat-lnl-2/igt@xe_live_ktest@xe_bo@xe_bo_evict_kunit.html

  * igt@xe_mmap@vram:
    - bat-lnl-2:          NOTRUN -> [SKIP][11] ([Intel XE#1416])
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138887v9/bat-lnl-2/igt@xe_mmap@vram.html

  * igt@xe_pat@pat-index-xehpc:
    - bat-lnl-2:          NOTRUN -> [SKIP][12] ([Intel XE#1420] / [Intel XE#2838])
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138887v9/bat-lnl-2/igt@xe_pat@pat-index-xehpc.html

  * igt@xe_pat@pat-index-xelp:
    - bat-lnl-2:          NOTRUN -> [SKIP][13] ([Intel XE#977])
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138887v9/bat-lnl-2/igt@xe_pat@pat-index-xelp.html

  * igt@xe_pat@pat-index-xelpg:
    - bat-lnl-2:          NOTRUN -> [SKIP][14] ([Intel XE#2236] / [Intel XE#979])
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138887v9/bat-lnl-2/igt@xe_pat@pat-index-xelpg.html

  * igt@xe_sriov_flr@flr-vf1-clear:
    - bat-lnl-2:          NOTRUN -> [SKIP][15] ([Intel XE#3342])
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138887v9/bat-lnl-2/igt@xe_sriov_flr@flr-vf1-clear.html

  
#### Possible fixes ####

  * igt@intel_sysfs_debugfs@xe-sysfs-read-all-entries:
    - bat-lnl-2:          [ABORT][16] ([Intel XE#4624] / [Intel XE#4966]) -> [PASS][17]
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3334-b96850785acbd7f0221629625724533cefc2481e/bat-lnl-2/igt@intel_sysfs_debugfs@xe-sysfs-read-all-entries.html
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138887v9/bat-lnl-2/igt@intel_sysfs_debugfs@xe-sysfs-read-all-entries.html

  * igt@kms_flip@basic-plain-flip@a-edp1:
    - bat-adlp-7:         [DMESG-WARN][18] ([Intel XE#4543]) -> [PASS][19] +1 other test pass
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3334-b96850785acbd7f0221629625724533cefc2481e/bat-adlp-7/igt@kms_flip@basic-plain-flip@a-edp1.html
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138887v9/bat-adlp-7/igt@kms_flip@basic-plain-flip@a-edp1.html

  
  [Intel XE#1091]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1091
  [Intel XE#1416]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1416
  [Intel XE#1420]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1420
  [Intel XE#1466]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1466
  [Intel XE#1470]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1470
  [Intel XE#2229]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2229
  [Intel XE#2235]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2235
  [Intel XE#2236]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2236
  [Intel XE#2482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2482
  [Intel XE#2548]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2548
  [Intel XE#2838]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2838
  [Intel XE#2849]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2849
  [Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
  [Intel XE#2853]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2853
  [Intel XE#3342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3342
  [Intel XE#352]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/352
  [Intel XE#4543]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4543
  [Intel XE#4624]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4624
  [Intel XE#4966]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4966
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
  [Intel XE#977]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/977
  [Intel XE#979]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/979


Build changes
-------------

  * Linux: xe-3334-b96850785acbd7f0221629625724533cefc2481e -> xe-pw-138887v9

  IGT_8432: 4871829d8b7117553eb2dc1bdb9a0d18de428a98 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-3334-b96850785acbd7f0221629625724533cefc2481e: b96850785acbd7f0221629625724533cefc2481e
  xe-pw-138887v9: 138887v9

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138887v9/index.html

[-- Attachment #2: Type: text/html, Size: 8555 bytes --]

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

* ✗ Xe.CI.Full: failure for PCI: VF resizable BAR (rev9)
  2025-07-02  9:35 [PATCH v10 0/5] PCI: VF resizable BAR Michał Winiarski
                   ` (7 preceding siblings ...)
  2025-07-02 12:02 ` ✓ Xe.CI.BAT: " Patchwork
@ 2025-07-04  2:42 ` Patchwork
  2025-07-14  9:39 ` [PATCH v10 0/5] PCI: VF resizable BAR Michał Winiarski
  2025-07-14 20:05 ` Bjorn Helgaas
  10 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2025-07-04  2:42 UTC (permalink / raw)
  To: Michał Winiarski; +Cc: intel-xe

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

== Series Details ==

Series: PCI: VF resizable BAR (rev9)
URL   : https://patchwork.freedesktop.org/series/138887/
State : failure

== Summary ==

ERROR: The runconfig 'xe-3334-b96850785acbd7f0221629625724533cefc2481e_FULL' does not exist in the database

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-138887v9/index.html

[-- Attachment #2: Type: text/html, Size: 924 bytes --]

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

* Re: [PATCH v10 0/5] PCI: VF resizable BAR
  2025-07-02  9:35 [PATCH v10 0/5] PCI: VF resizable BAR Michał Winiarski
                   ` (8 preceding siblings ...)
  2025-07-04  2:42 ` ✗ Xe.CI.Full: failure " Patchwork
@ 2025-07-14  9:39 ` Michał Winiarski
  2025-07-14 20:05 ` Bjorn Helgaas
  10 siblings, 0 replies; 12+ messages in thread
From: Michał Winiarski @ 2025-07-14  9:39 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: linux-pci, linux-kernel, intel-xe, dri-devel,
	Christian König, Krzysztof Wilczyński,
	Ilpo Järvinen, Rodrigo Vivi, Michal Wajdeczko,
	Lucas De Marchi, Thomas Hellström, Maarten Lankhorst,
	Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
	Matt Roper

On Wed, Jul 02, 2025 at 11:35:17AM +0200, Michał Winiarski wrote:
> Hi,
> 
> The series is now reviewed, and it looks like there's no further
> feedback.
> To limit it to PCI subsystem, I removed the last patch in the series, as
> it contained changes in drm/xe driver (it can still be found in v9 for
> reference, and I expect that this single patch will go through DRM tree
> anyways).
> 
> v9 can be found here:
> https://lore.kernel.org/linux-pci/20250527120637.665506-1-michal.winiarski@intel.com/
> 
> For regular BAR, drivers can use pci_resize_resource to resize it to the
> desired size provided that it is supported by the hardware, which the
> driver can query using pci_rebar_get_possible_sizes.
> This series expands the API to work with IOV BAR as well.
> It also adds the additional API for drivers to change the VF BAR size
> without resizing the entire underlying reservation (within the original
> resource boundary).


Hi Bjorn,

Can you consider applying this series?
Or do you still have some comments?

Thanks,
-Michał

> 
> Thanks,
> -Michał
> 
> v9 -> v10:
> - Remove last patch with drm/xe changes
> 
> v8 -> v9:
> - Use u64 as do_div() dividend (LKP)
> - Introduce a helper to access cached vf_rebar_cap (LKP)
> 
> v7 -> v8:
> - Update variable ordering and missing includes (Ilpo)
> 
> v6 -> v7:
> - Eliminate the loop in pci_iov_vf_bar_get_sizes() (Ilpo)
> - Use helper variable for indexes (Ilpo)
> - Kerneldoc formatting (Ilpo)
> - Refer to latest PCI spec (Ilpo)
> - Commit message wording (Ilpo)
> 
> v5 -> v6:
> - Rebased on latest pci/next
> - Cache the VF resizable BAR capability position to avoid multiple
>   lookups (Ilpo)
> - Use pci_resource_n helper (Ilpo)
> 
> v4 -> v5:
> - Rename pci_resource_to/from_iov helpers and add WARN if called without
>   CONFIG_PCI_IOV (Ilpo)
> - Reword kerneldoc for pci_iov_vf_bar_get_sizes (Bjorn)
> - Reword commit message for VF BAR size check, extract the additional
>   size check to separate conditional (Bjorn)
> 
> v3 -> v4:
> - Change the approach to extending the BAR (Christian)
> - Tidy the commit messages, use 80 line limit where necessary (Bjorn)
> - Add kerneldocs to exported functions (Bjorn)
> - Add pci_resource_to_iov() / pci_resource_from_iov() helpers (Ilpo)
> - Use FIELD_GET(), tidy whitespace (Ilpo)
> 
> v2 -> v3:
> - Extract introducing pci_resource_is_iov to separate commit and
>   use it elsewhere in PCI subsystem (Christian)
> - Extract restoring VF rebar state to separate commit (Christian)
> - Reorganize memory decoding check (Christian)
> - Don't use dev_WARN (Ilpo)
> - Fix build without CONFIG_PCI_IOV (CI)
> 
> v1 -> v2:
> - Add pci_iov_resource_extend() and usage in Xe driver
> - Reduce the number of ifdefs (Christian)
> - Drop patch 2/2 from v1 (Christian)
> - Add a helper to avoid upsetting static analysis tools (Krzysztof)
> 
> Michał Winiarski (5):
>   PCI/IOV: Restore VF resizable BAR state after reset
>   PCI: Add a helper to convert between VF BAR number and IOV resource
>   PCI: Allow IOV resources to be resized in pci_resize_resource()
>   PCI/IOV: Check that VF BAR fits within the reservation
>   PCI: Allow drivers to control VF BAR size
> 
>  drivers/pci/iov.c             | 153 +++++++++++++++++++++++++++++++---
>  drivers/pci/pci.c             |   8 +-
>  drivers/pci/pci.h             |  39 +++++++++
>  drivers/pci/setup-bus.c       |   3 +-
>  drivers/pci/setup-res.c       |  35 ++++++--
>  include/linux/pci.h           |   6 ++
>  include/uapi/linux/pci_regs.h |   9 ++
>  7 files changed, 235 insertions(+), 18 deletions(-)
> 
> -- 
> 2.49.0
> 

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

* Re: [PATCH v10 0/5] PCI: VF resizable BAR
  2025-07-02  9:35 [PATCH v10 0/5] PCI: VF resizable BAR Michał Winiarski
                   ` (9 preceding siblings ...)
  2025-07-14  9:39 ` [PATCH v10 0/5] PCI: VF resizable BAR Michał Winiarski
@ 2025-07-14 20:05 ` Bjorn Helgaas
  10 siblings, 0 replies; 12+ messages in thread
From: Bjorn Helgaas @ 2025-07-14 20:05 UTC (permalink / raw)
  To: Michał Winiarski
  Cc: Bjorn Helgaas, linux-pci, linux-kernel, intel-xe, dri-devel,
	Christian König, Krzysztof Wilczyński,
	Ilpo Järvinen, Rodrigo Vivi, Michal Wajdeczko,
	Lucas De Marchi, Thomas Hellström, Maarten Lankhorst,
	Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
	Matt Roper

On Wed, Jul 02, 2025 at 11:35:17AM +0200, Michał Winiarski wrote:
> Hi,
> 
> The series is now reviewed, and it looks like there's no further
> feedback.
> To limit it to PCI subsystem, I removed the last patch in the series, as
> it contained changes in drm/xe driver (it can still be found in v9 for
> reference, and I expect that this single patch will go through DRM tree
> anyways).
> 
> v9 can be found here:
> https://lore.kernel.org/linux-pci/20250527120637.665506-1-michal.winiarski@intel.com/
> 
> For regular BAR, drivers can use pci_resize_resource to resize it to the
> desired size provided that it is supported by the hardware, which the
> driver can query using pci_rebar_get_possible_sizes.
> This series expands the API to work with IOV BAR as well.
> It also adds the additional API for drivers to change the VF BAR size
> without resizing the entire underlying reservation (within the original
> resource boundary).
> 
> Thanks,
> -Michał
> 
> v9 -> v10:
> - Remove last patch with drm/xe changes
> 
> v8 -> v9:
> - Use u64 as do_div() dividend (LKP)
> - Introduce a helper to access cached vf_rebar_cap (LKP)
> 
> v7 -> v8:
> - Update variable ordering and missing includes (Ilpo)
> 
> v6 -> v7:
> - Eliminate the loop in pci_iov_vf_bar_get_sizes() (Ilpo)
> - Use helper variable for indexes (Ilpo)
> - Kerneldoc formatting (Ilpo)
> - Refer to latest PCI spec (Ilpo)
> - Commit message wording (Ilpo)
> 
> v5 -> v6:
> - Rebased on latest pci/next
> - Cache the VF resizable BAR capability position to avoid multiple
>   lookups (Ilpo)
> - Use pci_resource_n helper (Ilpo)
> 
> v4 -> v5:
> - Rename pci_resource_to/from_iov helpers and add WARN if called without
>   CONFIG_PCI_IOV (Ilpo)
> - Reword kerneldoc for pci_iov_vf_bar_get_sizes (Bjorn)
> - Reword commit message for VF BAR size check, extract the additional
>   size check to separate conditional (Bjorn)
> 
> v3 -> v4:
> - Change the approach to extending the BAR (Christian)
> - Tidy the commit messages, use 80 line limit where necessary (Bjorn)
> - Add kerneldocs to exported functions (Bjorn)
> - Add pci_resource_to_iov() / pci_resource_from_iov() helpers (Ilpo)
> - Use FIELD_GET(), tidy whitespace (Ilpo)
> 
> v2 -> v3:
> - Extract introducing pci_resource_is_iov to separate commit and
>   use it elsewhere in PCI subsystem (Christian)
> - Extract restoring VF rebar state to separate commit (Christian)
> - Reorganize memory decoding check (Christian)
> - Don't use dev_WARN (Ilpo)
> - Fix build without CONFIG_PCI_IOV (CI)
> 
> v1 -> v2:
> - Add pci_iov_resource_extend() and usage in Xe driver
> - Reduce the number of ifdefs (Christian)
> - Drop patch 2/2 from v1 (Christian)
> - Add a helper to avoid upsetting static analysis tools (Krzysztof)
> 
> Michał Winiarski (5):
>   PCI/IOV: Restore VF resizable BAR state after reset
>   PCI: Add a helper to convert between VF BAR number and IOV resource
>   PCI: Allow IOV resources to be resized in pci_resize_resource()
>   PCI/IOV: Check that VF BAR fits within the reservation
>   PCI: Allow drivers to control VF BAR size
> 
>  drivers/pci/iov.c             | 153 +++++++++++++++++++++++++++++++---
>  drivers/pci/pci.c             |   8 +-
>  drivers/pci/pci.h             |  39 +++++++++
>  drivers/pci/setup-bus.c       |   3 +-
>  drivers/pci/setup-res.c       |  35 ++++++--
>  include/linux/pci.h           |   6 ++
>  include/uapi/linux/pci_regs.h |   9 ++
>  7 files changed, 235 insertions(+), 18 deletions(-)

Applied to pci/resources for v6.17, thanks for the reminder!

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

end of thread, other threads:[~2025-07-14 20:06 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-02  9:35 [PATCH v10 0/5] PCI: VF resizable BAR Michał Winiarski
2025-07-02  9:35 ` [PATCH v10 1/5] PCI/IOV: Restore VF resizable BAR state after reset Michał Winiarski
2025-07-02  9:35 ` [PATCH v10 2/5] PCI: Add a helper to convert between VF BAR number and IOV resource Michał Winiarski
2025-07-02  9:35 ` [PATCH v10 3/5] PCI: Allow IOV resources to be resized in pci_resize_resource() Michał Winiarski
2025-07-02  9:35 ` [PATCH v10 4/5] PCI/IOV: Check that VF BAR fits within the reservation Michał Winiarski
2025-07-02  9:35 ` [PATCH v10 5/5] PCI: Allow drivers to control VF BAR size Michał Winiarski
2025-07-02 11:13 ` ✗ CI.checkpatch: warning for PCI: VF resizable BAR (rev9) Patchwork
2025-07-02 11:14 ` ✓ CI.KUnit: success " Patchwork
2025-07-02 12:02 ` ✓ Xe.CI.BAT: " Patchwork
2025-07-04  2:42 ` ✗ Xe.CI.Full: failure " Patchwork
2025-07-14  9:39 ` [PATCH v10 0/5] PCI: VF resizable BAR Michał Winiarski
2025-07-14 20:05 ` Bjorn Helgaas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox