* [PATCH 1/6] accel/ivpu: Add missing locks around mmu queues
2025-02-04 8:46 [PATCH 0/6] accel/ivpu: Changes for 6.15 2025-02-04 Jacek Lawrynowicz
@ 2025-02-04 8:46 ` Jacek Lawrynowicz
2025-02-14 16:41 ` Jeffrey Hugo
2025-02-04 8:46 ` [PATCH 2/6] accel/ivpu: Prevent runtime suspend during context abort work Jacek Lawrynowicz
` (6 subsequent siblings)
7 siblings, 1 reply; 27+ messages in thread
From: Jacek Lawrynowicz @ 2025-02-04 8:46 UTC (permalink / raw)
To: dri-devel
Cc: oded.gabbay, quic_jhugo, maciej.falkowski, Andrzej Kacprowski,
Jacek Lawrynowicz
From: Andrzej Kacprowski <Andrzej.Kacprowski@intel.com>
Multiple threads were accessing mmu cmd queue simultaneously
causing sporadic failures in ivpu_mmu_cmdq_sync() function.
Protect critical code with mmu mutex.
Reviewed-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Signed-off-by: Andrzej Kacprowski <Andrzej.Kacprowski@intel.com>
Signed-off-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
---
drivers/accel/ivpu/ivpu_mmu.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/drivers/accel/ivpu/ivpu_mmu.c b/drivers/accel/ivpu/ivpu_mmu.c
index b80bdded9fd79..5ea010568faa4 100644
--- a/drivers/accel/ivpu/ivpu_mmu.c
+++ b/drivers/accel/ivpu/ivpu_mmu.c
@@ -895,6 +895,9 @@ static int ivpu_mmu_evtq_disable(struct ivpu_device *vdev)
void ivpu_mmu_discard_events(struct ivpu_device *vdev)
{
+ struct ivpu_mmu_info *mmu = vdev->mmu;
+
+ mutex_lock(&mmu->lock);
/*
* Disable event queue (stop MMU from updating the producer)
* to allow synchronization of consumer and producer indexes
@@ -908,6 +911,8 @@ void ivpu_mmu_discard_events(struct ivpu_device *vdev)
ivpu_mmu_evtq_enable(vdev);
drm_WARN_ON_ONCE(&vdev->drm, vdev->mmu->evtq.cons != vdev->mmu->evtq.prod);
+
+ mutex_unlock(&mmu->lock);
}
int ivpu_mmu_disable_ssid_events(struct ivpu_device *vdev, u32 ssid)
@@ -920,6 +925,8 @@ int ivpu_mmu_disable_ssid_events(struct ivpu_device *vdev, u32 ssid)
if (ssid > IVPU_MMU_CDTAB_ENT_COUNT)
return -EINVAL;
+ mutex_lock(&mmu->lock);
+
entry = cdtab->base + (ssid * IVPU_MMU_CDTAB_ENT_SIZE);
val = READ_ONCE(entry[0]);
@@ -932,6 +939,8 @@ int ivpu_mmu_disable_ssid_events(struct ivpu_device *vdev, u32 ssid)
ivpu_mmu_cmdq_write_cfgi_all(vdev);
ivpu_mmu_cmdq_sync(vdev);
+ mutex_unlock(&mmu->lock);
+
return 0;
}
--
2.45.1
^ permalink raw reply related [flat|nested] 27+ messages in thread* Re: [PATCH 1/6] accel/ivpu: Add missing locks around mmu queues
2025-02-04 8:46 ` [PATCH 1/6] accel/ivpu: Add missing locks around mmu queues Jacek Lawrynowicz
@ 2025-02-14 16:41 ` Jeffrey Hugo
2025-02-17 15:26 ` Jacek Lawrynowicz
0 siblings, 1 reply; 27+ messages in thread
From: Jeffrey Hugo @ 2025-02-14 16:41 UTC (permalink / raw)
To: Jacek Lawrynowicz, dri-devel
Cc: oded.gabbay, maciej.falkowski, Andrzej Kacprowski
On 2/4/2025 1:46 AM, Jacek Lawrynowicz wrote:
> From: Andrzej Kacprowski <Andrzej.Kacprowski@intel.com>
>
> Multiple threads were accessing mmu cmd queue simultaneously
> causing sporadic failures in ivpu_mmu_cmdq_sync() function.
> Protect critical code with mmu mutex.
Describe a scenario in which this can occur? The two functions this
patch modify cannot run concurrently from what I can tell.
-Jeff
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH 1/6] accel/ivpu: Add missing locks around mmu queues
2025-02-14 16:41 ` Jeffrey Hugo
@ 2025-02-17 15:26 ` Jacek Lawrynowicz
2025-02-18 15:52 ` Jeffrey Hugo
0 siblings, 1 reply; 27+ messages in thread
From: Jacek Lawrynowicz @ 2025-02-17 15:26 UTC (permalink / raw)
To: Jeffrey Hugo, dri-devel; +Cc: oded.gabbay, maciej.falkowski, Andrzej Kacprowski
Hi,
On 2/14/2025 5:41 PM, Jeffrey Hugo wrote:
> On 2/4/2025 1:46 AM, Jacek Lawrynowicz wrote:
>> From: Andrzej Kacprowski <Andrzej.Kacprowski@intel.com>
>>
>> Multiple threads were accessing mmu cmd queue simultaneously
>> causing sporadic failures in ivpu_mmu_cmdq_sync() function.
>> Protect critical code with mmu mutex.
>
> Describe a scenario in which this can occur? The two functions this patch modify cannot run concurrently from what I can tell.
Functions from this diff are called in bottom IRQ handler when memory faults are detected.
The CMDQ is also accessed from IOCTLs when mapping/unmapping buffers in NPU MMU (ivpu_mmu_invalidate_tlb()).
Jacek
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH 1/6] accel/ivpu: Add missing locks around mmu queues
2025-02-17 15:26 ` Jacek Lawrynowicz
@ 2025-02-18 15:52 ` Jeffrey Hugo
0 siblings, 0 replies; 27+ messages in thread
From: Jeffrey Hugo @ 2025-02-18 15:52 UTC (permalink / raw)
To: Jacek Lawrynowicz, dri-devel
Cc: oded.gabbay, maciej.falkowski, Andrzej Kacprowski
On 2/17/2025 8:26 AM, Jacek Lawrynowicz wrote:
> Hi,
>
> On 2/14/2025 5:41 PM, Jeffrey Hugo wrote:
>> On 2/4/2025 1:46 AM, Jacek Lawrynowicz wrote:
>>> From: Andrzej Kacprowski <Andrzej.Kacprowski@intel.com>
>>>
>>> Multiple threads were accessing mmu cmd queue simultaneously
>>> causing sporadic failures in ivpu_mmu_cmdq_sync() function.
>>> Protect critical code with mmu mutex.
>>
>> Describe a scenario in which this can occur? The two functions this patch modify cannot run concurrently from what I can tell.
>
> Functions from this diff are called in bottom IRQ handler when memory faults are detected.
> The CMDQ is also accessed from IOCTLs when mapping/unmapping buffers in NPU MMU (ivpu_mmu_invalidate_tlb()).
Ah. Ok. I think pointing that out in the commit text would be very
helpful.
Reviewed-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH 2/6] accel/ivpu: Prevent runtime suspend during context abort work
2025-02-04 8:46 [PATCH 0/6] accel/ivpu: Changes for 6.15 2025-02-04 Jacek Lawrynowicz
2025-02-04 8:46 ` [PATCH 1/6] accel/ivpu: Add missing locks around mmu queues Jacek Lawrynowicz
@ 2025-02-04 8:46 ` Jacek Lawrynowicz
2025-02-14 16:49 ` Jeffrey Hugo
2025-02-04 8:46 ` [PATCH 3/6] accel/ivpu: Add debugfs interface for setting HWS priority bands Jacek Lawrynowicz
` (5 subsequent siblings)
7 siblings, 1 reply; 27+ messages in thread
From: Jacek Lawrynowicz @ 2025-02-04 8:46 UTC (permalink / raw)
To: dri-devel
Cc: oded.gabbay, quic_jhugo, maciej.falkowski, Andrzej Kacprowski,
Jacek Lawrynowicz
From: Andrzej Kacprowski <Andrzej.Kacprowski@intel.com>
Increment the runtime PM counter when entering
ivpu_context_abort_work_fn() to prevent the device
from suspending while the function is executing.
Reviewed-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Signed-off-by: Andrzej Kacprowski <Andrzej.Kacprowski@intel.com>
Signed-off-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
---
drivers/accel/ivpu/ivpu_job.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/drivers/accel/ivpu/ivpu_job.c b/drivers/accel/ivpu/ivpu_job.c
index c1013f511efa6..004059e4f1e89 100644
--- a/drivers/accel/ivpu/ivpu_job.c
+++ b/drivers/accel/ivpu/ivpu_job.c
@@ -8,6 +8,7 @@
#include <linux/bitfield.h>
#include <linux/highmem.h>
#include <linux/pci.h>
+#include <linux/pm_runtime.h>
#include <linux/module.h>
#include <uapi/drm/ivpu_accel.h>
@@ -965,6 +966,9 @@ void ivpu_context_abort_work_fn(struct work_struct *work)
unsigned long ctx_id;
unsigned long id;
+ if (drm_WARN_ON(&vdev->drm, pm_runtime_get_if_active(vdev->drm.dev) <= 0))
+ return;
+
if (vdev->fw->sched_mode == VPU_SCHEDULING_MODE_HW)
ivpu_jsm_reset_engine(vdev, 0);
@@ -987,7 +991,7 @@ void ivpu_context_abort_work_fn(struct work_struct *work)
ivpu_mmu_discard_events(vdev);
if (vdev->fw->sched_mode != VPU_SCHEDULING_MODE_HW)
- return;
+ goto runtime_put;
ivpu_jsm_hws_resume_engine(vdev, 0);
/*
@@ -1000,4 +1004,8 @@ void ivpu_context_abort_work_fn(struct work_struct *work)
if (job->file_priv->aborted)
ivpu_job_signal_and_destroy(vdev, job->job_id, DRM_IVPU_JOB_STATUS_ABORTED);
mutex_unlock(&vdev->submitted_jobs_lock);
+
+runtime_put:
+ pm_runtime_mark_last_busy(vdev->drm.dev);
+ pm_runtime_put_autosuspend(vdev->drm.dev);
}
--
2.45.1
^ permalink raw reply related [flat|nested] 27+ messages in thread* Re: [PATCH 2/6] accel/ivpu: Prevent runtime suspend during context abort work
2025-02-04 8:46 ` [PATCH 2/6] accel/ivpu: Prevent runtime suspend during context abort work Jacek Lawrynowicz
@ 2025-02-14 16:49 ` Jeffrey Hugo
2025-02-17 15:33 ` Jacek Lawrynowicz
0 siblings, 1 reply; 27+ messages in thread
From: Jeffrey Hugo @ 2025-02-14 16:49 UTC (permalink / raw)
To: Jacek Lawrynowicz, dri-devel
Cc: oded.gabbay, maciej.falkowski, Andrzej Kacprowski
On 2/4/2025 1:46 AM, Jacek Lawrynowicz wrote:
> From: Andrzej Kacprowski <Andrzej.Kacprowski@intel.com>
>
> Increment the runtime PM counter when entering
> ivpu_context_abort_work_fn() to prevent the device
> from suspending while the function is executing.
Why should suspend be prevented during the abort fn?
-Jeff
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH 2/6] accel/ivpu: Prevent runtime suspend during context abort work
2025-02-14 16:49 ` Jeffrey Hugo
@ 2025-02-17 15:33 ` Jacek Lawrynowicz
2025-02-18 15:48 ` Jeffrey Hugo
0 siblings, 1 reply; 27+ messages in thread
From: Jacek Lawrynowicz @ 2025-02-17 15:33 UTC (permalink / raw)
To: Jeffrey Hugo, dri-devel; +Cc: oded.gabbay, maciej.falkowski, Andrzej Kacprowski
Hi,
On 2/14/2025 5:49 PM, Jeffrey Hugo wrote:
> On 2/4/2025 1:46 AM, Jacek Lawrynowicz wrote:
>> From: Andrzej Kacprowski <Andrzej.Kacprowski@intel.com>
>>
>> Increment the runtime PM counter when entering
>> ivpu_context_abort_work_fn() to prevent the device
>> from suspending while the function is executing.
>
> Why should suspend be prevented during the abort fn?
ivpu_context_abort_work_fn() executes a pair of reset/resume engine IPC commands that always have to be paired.
Suspend/resume between them cases related FW state to be lost and resume engine then fails.
Jacek
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH 2/6] accel/ivpu: Prevent runtime suspend during context abort work
2025-02-17 15:33 ` Jacek Lawrynowicz
@ 2025-02-18 15:48 ` Jeffrey Hugo
0 siblings, 0 replies; 27+ messages in thread
From: Jeffrey Hugo @ 2025-02-18 15:48 UTC (permalink / raw)
To: Jacek Lawrynowicz, dri-devel
Cc: oded.gabbay, maciej.falkowski, Andrzej Kacprowski
On 2/17/2025 8:33 AM, Jacek Lawrynowicz wrote:
> Hi,
>
> On 2/14/2025 5:49 PM, Jeffrey Hugo wrote:
>> On 2/4/2025 1:46 AM, Jacek Lawrynowicz wrote:
>>> From: Andrzej Kacprowski <Andrzej.Kacprowski@intel.com>
>>>
>>> Increment the runtime PM counter when entering
>>> ivpu_context_abort_work_fn() to prevent the device
>>> from suspending while the function is executing.
>>
>> Why should suspend be prevented during the abort fn?
>
> ivpu_context_abort_work_fn() executes a pair of reset/resume engine IPC commands that always have to be paired.
> Suspend/resume between them cases related FW state to be lost and resume engine then fails.
This feels like relevant information that should be included in the
commit text as justification for making this change.
Assuming such an update,
Reviewed-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH 3/6] accel/ivpu: Add debugfs interface for setting HWS priority bands
2025-02-04 8:46 [PATCH 0/6] accel/ivpu: Changes for 6.15 2025-02-04 Jacek Lawrynowicz
2025-02-04 8:46 ` [PATCH 1/6] accel/ivpu: Add missing locks around mmu queues Jacek Lawrynowicz
2025-02-04 8:46 ` [PATCH 2/6] accel/ivpu: Prevent runtime suspend during context abort work Jacek Lawrynowicz
@ 2025-02-04 8:46 ` Jacek Lawrynowicz
2025-02-14 16:51 ` Jeffrey Hugo
2025-02-04 8:46 ` [PATCH 4/6] accel/ivpu: Allow to import single buffer into multiple contexts Jacek Lawrynowicz
` (4 subsequent siblings)
7 siblings, 1 reply; 27+ messages in thread
From: Jacek Lawrynowicz @ 2025-02-04 8:46 UTC (permalink / raw)
To: dri-devel
Cc: oded.gabbay, quic_jhugo, maciej.falkowski, Karol Wachowski,
Jacek Lawrynowicz
From: Karol Wachowski <karol.wachowski@intel.com>
Add debugfs interface to modify following priority bands properties:
* grace period
* process grace period
* process quantum
This allows for the adjustment of hardware scheduling algorithm parameters
for each existing priority band, facilitating validation and fine-tuning.
Reviewed-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Signed-off-by: Karol Wachowski <karol.wachowski@intel.com>
Signed-off-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
---
drivers/accel/ivpu/ivpu_debugfs.c | 84 +++++++++++++++++++++++++++++++
drivers/accel/ivpu/ivpu_hw.c | 21 ++++++++
drivers/accel/ivpu/ivpu_hw.h | 5 ++
drivers/accel/ivpu/ivpu_jsm_msg.c | 29 ++++-------
4 files changed, 121 insertions(+), 18 deletions(-)
diff --git a/drivers/accel/ivpu/ivpu_debugfs.c b/drivers/accel/ivpu/ivpu_debugfs.c
index e79715c53f2a0..0825851656a27 100644
--- a/drivers/accel/ivpu/ivpu_debugfs.c
+++ b/drivers/accel/ivpu/ivpu_debugfs.c
@@ -398,6 +398,88 @@ static int dct_active_set(void *data, u64 active_percent)
DEFINE_DEBUGFS_ATTRIBUTE(ivpu_dct_fops, dct_active_get, dct_active_set, "%llu\n");
+static int priority_bands_show(struct seq_file *s, void *v)
+{
+ struct ivpu_device *vdev = s->private;
+ struct ivpu_hw_info *hw = vdev->hw;
+
+ for (int band = VPU_JOB_SCHEDULING_PRIORITY_BAND_IDLE;
+ band < VPU_JOB_SCHEDULING_PRIORITY_BAND_COUNT; band++) {
+ switch (band) {
+ case VPU_JOB_SCHEDULING_PRIORITY_BAND_IDLE:
+ seq_puts(s, "Idle: ");
+ break;
+
+ case VPU_JOB_SCHEDULING_PRIORITY_BAND_NORMAL:
+ seq_puts(s, "Normal: ");
+ break;
+
+ case VPU_JOB_SCHEDULING_PRIORITY_BAND_FOCUS:
+ seq_puts(s, "Focus: ");
+ break;
+
+ case VPU_JOB_SCHEDULING_PRIORITY_BAND_REALTIME:
+ seq_puts(s, "Realtime: ");
+ break;
+ }
+
+ seq_printf(s, "grace_period %9u process_grace_period %9u process_quantum %9u\n",
+ hw->hws.grace_period[band], hw->hws.process_grace_period[band],
+ hw->hws.process_quantum[band]);
+ }
+
+ return 0;
+}
+
+static int priority_bands_fops_open(struct inode *inode, struct file *file)
+{
+ return single_open(file, priority_bands_show, inode->i_private);
+}
+
+static ssize_t
+priority_bands_fops_write(struct file *file, const char __user *user_buf, size_t size, loff_t *pos)
+{
+ struct seq_file *s = file->private_data;
+ struct ivpu_device *vdev = s->private;
+ char buf[64];
+ u32 grace_period;
+ u32 process_grace_period;
+ u32 process_quantum;
+ u32 band;
+ int ret;
+
+ if (size >= sizeof(buf))
+ return -EINVAL;
+
+ ret = simple_write_to_buffer(buf, sizeof(buf) - 1, pos, user_buf, size);
+ if (ret < 0)
+ return ret;
+
+ buf[size] = '\0';
+ ret = sscanf(buf, "%u %u %u %u", &band, &grace_period, &process_grace_period,
+ &process_quantum);
+ if (ret != 4)
+ return -EINVAL;
+
+ if (band >= VPU_JOB_SCHEDULING_PRIORITY_BAND_COUNT)
+ return -EINVAL;
+
+ vdev->hw->hws.grace_period[band] = grace_period;
+ vdev->hw->hws.process_grace_period[band] = process_grace_period;
+ vdev->hw->hws.process_quantum[band] = process_quantum;
+
+ return size;
+}
+
+static const struct file_operations ivpu_hws_priority_bands_fops = {
+ .owner = THIS_MODULE,
+ .open = priority_bands_fops_open,
+ .write = priority_bands_fops_write,
+ .read = seq_read,
+ .llseek = seq_lseek,
+ .release = single_release,
+};
+
void ivpu_debugfs_init(struct ivpu_device *vdev)
{
struct dentry *debugfs_root = vdev->drm.debugfs_root;
@@ -420,6 +502,8 @@ void ivpu_debugfs_init(struct ivpu_device *vdev)
&fw_trace_hw_comp_mask_fops);
debugfs_create_file("fw_trace_level", 0200, debugfs_root, vdev,
&fw_trace_level_fops);
+ debugfs_create_file("hws_priority_bands", 0200, debugfs_root, vdev,
+ &ivpu_hws_priority_bands_fops);
debugfs_create_file("reset_engine", 0200, debugfs_root, vdev,
&ivpu_reset_engine_fops);
diff --git a/drivers/accel/ivpu/ivpu_hw.c b/drivers/accel/ivpu/ivpu_hw.c
index 2057907c5aa6a..f31702b3ecbdc 100644
--- a/drivers/accel/ivpu/ivpu_hw.c
+++ b/drivers/accel/ivpu/ivpu_hw.c
@@ -113,6 +113,26 @@ static void timeouts_init(struct ivpu_device *vdev)
}
}
+static void priority_bands_init(struct ivpu_device *vdev)
+{
+ /* Idle */
+ vdev->hw->hws.grace_period[VPU_JOB_SCHEDULING_PRIORITY_BAND_IDLE] = 0;
+ vdev->hw->hws.process_grace_period[VPU_JOB_SCHEDULING_PRIORITY_BAND_IDLE] = 50000;
+ vdev->hw->hws.process_quantum[VPU_JOB_SCHEDULING_PRIORITY_BAND_IDLE] = 160000;
+ /* Normal */
+ vdev->hw->hws.grace_period[VPU_JOB_SCHEDULING_PRIORITY_BAND_NORMAL] = 50000;
+ vdev->hw->hws.process_grace_period[VPU_JOB_SCHEDULING_PRIORITY_BAND_NORMAL] = 50000;
+ vdev->hw->hws.process_quantum[VPU_JOB_SCHEDULING_PRIORITY_BAND_NORMAL] = 300000;
+ /* Focus */
+ vdev->hw->hws.grace_period[VPU_JOB_SCHEDULING_PRIORITY_BAND_FOCUS] = 50000;
+ vdev->hw->hws.process_grace_period[VPU_JOB_SCHEDULING_PRIORITY_BAND_FOCUS] = 50000;
+ vdev->hw->hws.process_quantum[VPU_JOB_SCHEDULING_PRIORITY_BAND_FOCUS] = 200000;
+ /* Realtime */
+ vdev->hw->hws.grace_period[VPU_JOB_SCHEDULING_PRIORITY_BAND_REALTIME] = 0;
+ vdev->hw->hws.process_grace_period[VPU_JOB_SCHEDULING_PRIORITY_BAND_REALTIME] = 50000;
+ vdev->hw->hws.process_quantum[VPU_JOB_SCHEDULING_PRIORITY_BAND_REALTIME] = 200000;
+}
+
static void memory_ranges_init(struct ivpu_device *vdev)
{
if (ivpu_hw_ip_gen(vdev) == IVPU_HW_IP_37XX) {
@@ -251,6 +271,7 @@ int ivpu_hw_init(struct ivpu_device *vdev)
{
ivpu_hw_btrs_info_init(vdev);
ivpu_hw_btrs_freq_ratios_init(vdev);
+ priority_bands_init(vdev);
memory_ranges_init(vdev);
platform_init(vdev);
wa_init(vdev);
diff --git a/drivers/accel/ivpu/ivpu_hw.h b/drivers/accel/ivpu/ivpu_hw.h
index fbef9816b9d0c..16435f2756d02 100644
--- a/drivers/accel/ivpu/ivpu_hw.h
+++ b/drivers/accel/ivpu/ivpu_hw.h
@@ -36,6 +36,11 @@ struct ivpu_hw_info {
u8 pn_ratio;
u32 profiling_freq;
} pll;
+ struct {
+ u32 grace_period[VPU_HWS_NUM_PRIORITY_BANDS];
+ u32 process_quantum[VPU_HWS_NUM_PRIORITY_BANDS];
+ u32 process_grace_period[VPU_HWS_NUM_PRIORITY_BANDS];
+ } hws;
u32 tile_fuse;
u32 sku;
u16 config;
diff --git a/drivers/accel/ivpu/ivpu_jsm_msg.c b/drivers/accel/ivpu/ivpu_jsm_msg.c
index 30a40be769301..219ab8afefabd 100644
--- a/drivers/accel/ivpu/ivpu_jsm_msg.c
+++ b/drivers/accel/ivpu/ivpu_jsm_msg.c
@@ -7,6 +7,7 @@
#include "ivpu_hw.h"
#include "ivpu_ipc.h"
#include "ivpu_jsm_msg.h"
+#include "vpu_jsm_api.h"
const char *ivpu_jsm_msg_type_to_str(enum vpu_ipc_msg_type type)
{
@@ -407,26 +408,18 @@ int ivpu_jsm_hws_setup_priority_bands(struct ivpu_device *vdev)
{
struct vpu_jsm_msg req = { .type = VPU_JSM_MSG_SET_PRIORITY_BAND_SETUP };
struct vpu_jsm_msg resp;
+ struct ivpu_hw_info *hw = vdev->hw;
+ struct vpu_ipc_msg_payload_hws_priority_band_setup *setup =
+ &req.payload.hws_priority_band_setup;
int ret;
- /* Idle */
- req.payload.hws_priority_band_setup.grace_period[0] = 0;
- req.payload.hws_priority_band_setup.process_grace_period[0] = 50000;
- req.payload.hws_priority_band_setup.process_quantum[0] = 160000;
- /* Normal */
- req.payload.hws_priority_band_setup.grace_period[1] = 50000;
- req.payload.hws_priority_band_setup.process_grace_period[1] = 50000;
- req.payload.hws_priority_band_setup.process_quantum[1] = 300000;
- /* Focus */
- req.payload.hws_priority_band_setup.grace_period[2] = 50000;
- req.payload.hws_priority_band_setup.process_grace_period[2] = 50000;
- req.payload.hws_priority_band_setup.process_quantum[2] = 200000;
- /* Realtime */
- req.payload.hws_priority_band_setup.grace_period[3] = 0;
- req.payload.hws_priority_band_setup.process_grace_period[3] = 50000;
- req.payload.hws_priority_band_setup.process_quantum[3] = 200000;
-
- req.payload.hws_priority_band_setup.normal_band_percentage = 10;
+ for (int band = VPU_JOB_SCHEDULING_PRIORITY_BAND_IDLE;
+ band < VPU_JOB_SCHEDULING_PRIORITY_BAND_COUNT; band++) {
+ setup->grace_period[band] = hw->hws.grace_period[band];
+ setup->process_grace_period[band] = hw->hws.process_grace_period[band];
+ setup->process_quantum[band] = hw->hws.process_quantum[band];
+ }
+ setup->normal_band_percentage = 10;
ret = ivpu_ipc_send_receive_internal(vdev, &req, VPU_JSM_MSG_SET_PRIORITY_BAND_SETUP_RSP,
&resp, VPU_IPC_CHAN_ASYNC_CMD, vdev->timeout.jsm);
--
2.45.1
^ permalink raw reply related [flat|nested] 27+ messages in thread* Re: [PATCH 3/6] accel/ivpu: Add debugfs interface for setting HWS priority bands
2025-02-04 8:46 ` [PATCH 3/6] accel/ivpu: Add debugfs interface for setting HWS priority bands Jacek Lawrynowicz
@ 2025-02-14 16:51 ` Jeffrey Hugo
0 siblings, 0 replies; 27+ messages in thread
From: Jeffrey Hugo @ 2025-02-14 16:51 UTC (permalink / raw)
To: Jacek Lawrynowicz, dri-devel
Cc: oded.gabbay, maciej.falkowski, Karol Wachowski
On 2/4/2025 1:46 AM, Jacek Lawrynowicz wrote:
> From: Karol Wachowski <karol.wachowski@intel.com>
>
> Add debugfs interface to modify following priority bands properties:
> * grace period
> * process grace period
> * process quantum
>
> This allows for the adjustment of hardware scheduling algorithm parameters
> for each existing priority band, facilitating validation and fine-tuning.
>
> Reviewed-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
> Signed-off-by: Karol Wachowski <karol.wachowski@intel.com>
> Signed-off-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
As a stand alone patch, seems ok to me.
Reviewed-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH 4/6] accel/ivpu: Allow to import single buffer into multiple contexts
2025-02-04 8:46 [PATCH 0/6] accel/ivpu: Changes for 6.15 2025-02-04 Jacek Lawrynowicz
` (2 preceding siblings ...)
2025-02-04 8:46 ` [PATCH 3/6] accel/ivpu: Add debugfs interface for setting HWS priority bands Jacek Lawrynowicz
@ 2025-02-04 8:46 ` Jacek Lawrynowicz
2025-02-14 16:53 ` Jeffrey Hugo
2025-02-04 8:46 ` [PATCH 5/6] accel/ivpu: Add test modes to toggle clock relinquish disable Jacek Lawrynowicz
` (3 subsequent siblings)
7 siblings, 1 reply; 27+ messages in thread
From: Jacek Lawrynowicz @ 2025-02-04 8:46 UTC (permalink / raw)
To: dri-devel
Cc: oded.gabbay, quic_jhugo, maciej.falkowski, Tomasz Rusinowicz,
Jacek Lawrynowicz
From: Tomasz Rusinowicz <tomasz.rusinowicz@intel.com>
Use ivpu_gem_prime_import() based on drm_gem_prime_import_dev()
for importing buffers, removing optimization for same device
imports. This optimization reused the same ivpu_bo object in multiple
contexts but a single buffer can be MMU-mapped only to a single context.
Each import now creates a new instance of ivpu_bo object that shares
the same sg_table but have separate MMU mappings.
Reviewed-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Signed-off-by: Tomasz Rusinowicz <tomasz.rusinowicz@intel.com>
Signed-off-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
---
drivers/accel/ivpu/ivpu_drv.c | 2 +-
drivers/accel/ivpu/ivpu_gem.c | 43 +++++++++++++++++++++++++++++++++++
drivers/accel/ivpu/ivpu_gem.h | 1 +
3 files changed, 45 insertions(+), 1 deletion(-)
diff --git a/drivers/accel/ivpu/ivpu_drv.c b/drivers/accel/ivpu/ivpu_drv.c
index 6a80d626d6098..f23e3e8ea9d80 100644
--- a/drivers/accel/ivpu/ivpu_drv.c
+++ b/drivers/accel/ivpu/ivpu_drv.c
@@ -452,7 +452,7 @@ static const struct drm_driver driver = {
.postclose = ivpu_postclose,
.gem_create_object = ivpu_gem_create_object,
- .gem_prime_import_sg_table = drm_gem_shmem_prime_import_sg_table,
+ .gem_prime_import = ivpu_gem_prime_import,
.ioctls = ivpu_drm_ioctls,
.num_ioctls = ARRAY_SIZE(ivpu_drm_ioctls),
diff --git a/drivers/accel/ivpu/ivpu_gem.c b/drivers/accel/ivpu/ivpu_gem.c
index d8e97a760fbc0..3467fc0fffe90 100644
--- a/drivers/accel/ivpu/ivpu_gem.c
+++ b/drivers/accel/ivpu/ivpu_gem.c
@@ -20,6 +20,8 @@
#include "ivpu_mmu.h"
#include "ivpu_mmu_context.h"
+MODULE_IMPORT_NS("DMA_BUF");
+
static const struct drm_gem_object_funcs ivpu_gem_funcs;
static inline void ivpu_dbg_bo(struct ivpu_device *vdev, struct ivpu_bo *bo, const char *action)
@@ -172,6 +174,47 @@ struct drm_gem_object *ivpu_gem_create_object(struct drm_device *dev, size_t siz
return &bo->base.base;
}
+struct drm_gem_object *ivpu_gem_prime_import(struct drm_device *dev,
+ struct dma_buf *dma_buf)
+{
+ struct device *attach_dev = dev->dev;
+ struct dma_buf_attachment *attach;
+ struct sg_table *sgt;
+ struct drm_gem_object *obj;
+ int ret;
+
+ attach = dma_buf_attach(dma_buf, attach_dev);
+ if (IS_ERR(attach))
+ return ERR_CAST(attach);
+
+ get_dma_buf(dma_buf);
+
+ sgt = dma_buf_map_attachment_unlocked(attach, DMA_BIDIRECTIONAL);
+ if (IS_ERR(sgt)) {
+ ret = PTR_ERR(sgt);
+ goto fail_detach;
+ }
+
+ obj = drm_gem_shmem_prime_import_sg_table(dev, attach, sgt);
+ if (IS_ERR(obj)) {
+ ret = PTR_ERR(obj);
+ goto fail_unmap;
+ }
+
+ obj->import_attach = attach;
+ obj->resv = dma_buf->resv;
+
+ return obj;
+
+fail_unmap:
+ dma_buf_unmap_attachment_unlocked(attach, sgt, DMA_BIDIRECTIONAL);
+fail_detach:
+ dma_buf_detach(dma_buf, attach);
+ dma_buf_put(dma_buf);
+
+ return ERR_PTR(ret);
+}
+
static struct ivpu_bo *ivpu_bo_alloc(struct ivpu_device *vdev, u64 size, u32 flags)
{
struct drm_gem_shmem_object *shmem;
diff --git a/drivers/accel/ivpu/ivpu_gem.h b/drivers/accel/ivpu/ivpu_gem.h
index d975000abd785..a222a9ec9d611 100644
--- a/drivers/accel/ivpu/ivpu_gem.h
+++ b/drivers/accel/ivpu/ivpu_gem.h
@@ -28,6 +28,7 @@ int ivpu_bo_pin(struct ivpu_bo *bo);
void ivpu_bo_unbind_all_bos_from_context(struct ivpu_device *vdev, struct ivpu_mmu_context *ctx);
struct drm_gem_object *ivpu_gem_create_object(struct drm_device *dev, size_t size);
+struct drm_gem_object *ivpu_gem_prime_import(struct drm_device *dev, struct dma_buf *dma_buf);
struct ivpu_bo *ivpu_bo_create(struct ivpu_device *vdev, struct ivpu_mmu_context *ctx,
struct ivpu_addr_range *range, u64 size, u32 flags);
struct ivpu_bo *ivpu_bo_create_global(struct ivpu_device *vdev, u64 size, u32 flags);
--
2.45.1
^ permalink raw reply related [flat|nested] 27+ messages in thread* Re: [PATCH 4/6] accel/ivpu: Allow to import single buffer into multiple contexts
2025-02-04 8:46 ` [PATCH 4/6] accel/ivpu: Allow to import single buffer into multiple contexts Jacek Lawrynowicz
@ 2025-02-14 16:53 ` Jeffrey Hugo
0 siblings, 0 replies; 27+ messages in thread
From: Jeffrey Hugo @ 2025-02-14 16:53 UTC (permalink / raw)
To: Jacek Lawrynowicz, dri-devel
Cc: oded.gabbay, maciej.falkowski, Tomasz Rusinowicz
On 2/4/2025 1:46 AM, Jacek Lawrynowicz wrote:
> From: Tomasz Rusinowicz <tomasz.rusinowicz@intel.com>
>
> Use ivpu_gem_prime_import() based on drm_gem_prime_import_dev()
> for importing buffers, removing optimization for same device
> imports. This optimization reused the same ivpu_bo object in multiple
> contexts but a single buffer can be MMU-mapped only to a single context.
> Each import now creates a new instance of ivpu_bo object that shares
> the same sg_table but have separate MMU mappings.
>
> Reviewed-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
> Signed-off-by: Tomasz Rusinowicz <tomasz.rusinowicz@intel.com>
> Signed-off-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Reviewed-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH 5/6] accel/ivpu: Add test modes to toggle clock relinquish disable
2025-02-04 8:46 [PATCH 0/6] accel/ivpu: Changes for 6.15 2025-02-04 Jacek Lawrynowicz
` (3 preceding siblings ...)
2025-02-04 8:46 ` [PATCH 4/6] accel/ivpu: Allow to import single buffer into multiple contexts Jacek Lawrynowicz
@ 2025-02-04 8:46 ` Jacek Lawrynowicz
2025-02-14 16:59 ` Jeffrey Hugo
2025-02-04 8:46 ` [PATCH 6/6] accel/ivpu: Implement D0i2 disable test mode Jacek Lawrynowicz
` (2 subsequent siblings)
7 siblings, 1 reply; 27+ messages in thread
From: Jacek Lawrynowicz @ 2025-02-04 8:46 UTC (permalink / raw)
To: dri-devel
Cc: oded.gabbay, quic_jhugo, maciej.falkowski, Karol Wachowski,
Jacek Lawrynowicz
From: Karol Wachowski <karol.wachowski@intel.com>
Add IVPU_TEST_MODE_CLK_RELINQ_[DISABLE|ENABLE] that overrides
workaround for disabling clock relinquish for testing purposes.
Reviewed-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Signed-off-by: Karol Wachowski <karol.wachowski@intel.com>
Signed-off-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
---
drivers/accel/ivpu/ivpu_drv.h | 2 ++
drivers/accel/ivpu/ivpu_hw.c | 6 ++++++
2 files changed, 8 insertions(+)
diff --git a/drivers/accel/ivpu/ivpu_drv.h b/drivers/accel/ivpu/ivpu_drv.h
index ca21102ca366c..73d808068c8b7 100644
--- a/drivers/accel/ivpu/ivpu_drv.h
+++ b/drivers/accel/ivpu/ivpu_drv.h
@@ -206,6 +206,8 @@ extern bool ivpu_force_snoop;
#define IVPU_TEST_MODE_MIP_DISABLE BIT(6)
#define IVPU_TEST_MODE_DISABLE_TIMEOUTS BIT(8)
#define IVPU_TEST_MODE_TURBO BIT(9)
+#define IVPU_TEST_MODE_CLK_RELINQ_DISABLE BIT(10)
+#define IVPU_TEST_MODE_CLK_RELINQ_ENABLE BIT(11)
extern int ivpu_test_mode;
struct ivpu_file_priv *ivpu_file_priv_get(struct ivpu_file_priv *file_priv);
diff --git a/drivers/accel/ivpu/ivpu_hw.c b/drivers/accel/ivpu/ivpu_hw.c
index f31702b3ecbdc..4d9f30e3b505d 100644
--- a/drivers/accel/ivpu/ivpu_hw.c
+++ b/drivers/accel/ivpu/ivpu_hw.c
@@ -68,6 +68,12 @@ static void wa_init(struct ivpu_device *vdev)
ivpu_revision(vdev) < IVPU_HW_IP_REV_LNL_B0)
vdev->wa.disable_clock_relinquish = true;
+ if (ivpu_test_mode & IVPU_TEST_MODE_CLK_RELINQ_ENABLE)
+ vdev->wa.disable_clock_relinquish = false;
+
+ if (ivpu_test_mode & IVPU_TEST_MODE_CLK_RELINQ_DISABLE)
+ vdev->wa.disable_clock_relinquish = true;
+
if (ivpu_hw_ip_gen(vdev) == IVPU_HW_IP_37XX)
vdev->wa.wp0_during_power_up = true;
--
2.45.1
^ permalink raw reply related [flat|nested] 27+ messages in thread* Re: [PATCH 5/6] accel/ivpu: Add test modes to toggle clock relinquish disable
2025-02-04 8:46 ` [PATCH 5/6] accel/ivpu: Add test modes to toggle clock relinquish disable Jacek Lawrynowicz
@ 2025-02-14 16:59 ` Jeffrey Hugo
0 siblings, 0 replies; 27+ messages in thread
From: Jeffrey Hugo @ 2025-02-14 16:59 UTC (permalink / raw)
To: Jacek Lawrynowicz, dri-devel
Cc: oded.gabbay, maciej.falkowski, Karol Wachowski
On 2/4/2025 1:46 AM, Jacek Lawrynowicz wrote:
> From: Karol Wachowski <karol.wachowski@intel.com>
>
> Add IVPU_TEST_MODE_CLK_RELINQ_[DISABLE|ENABLE] that overrides
> workaround for disabling clock relinquish for testing purposes.
>
> Reviewed-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
> Signed-off-by: Karol Wachowski <karol.wachowski@intel.com>
> Signed-off-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Reviewed-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH 6/6] accel/ivpu: Implement D0i2 disable test mode
2025-02-04 8:46 [PATCH 0/6] accel/ivpu: Changes for 6.15 2025-02-04 Jacek Lawrynowicz
` (4 preceding siblings ...)
2025-02-04 8:46 ` [PATCH 5/6] accel/ivpu: Add test modes to toggle clock relinquish disable Jacek Lawrynowicz
@ 2025-02-04 8:46 ` Jacek Lawrynowicz
2025-02-14 17:04 ` Jeffrey Hugo
2025-02-10 9:48 ` [PATCH 0/6] accel/ivpu: Changes for 6.15 2025-02-04 Jacek Lawrynowicz
2025-02-12 10:20 ` Thomas Zimmermann
7 siblings, 1 reply; 27+ messages in thread
From: Jacek Lawrynowicz @ 2025-02-04 8:46 UTC (permalink / raw)
To: dri-devel
Cc: oded.gabbay, quic_jhugo, maciej.falkowski, Karol Wachowski,
Jacek Lawrynowicz
From: Karol Wachowski <karol.wachowski@intel.com>
Add power_profile firmware boot param and set it to 0 by default
which is default FW power profile.
Implement IVPU_TEST_MODE_D0I2_DISABLE which is used for setting
power profile boot param value to 1 which prevents NPU from entering
d0i2 power state.
Reviewed-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Signed-off-by: Karol Wachowski <karol.wachowski@intel.com>
Signed-off-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
---
drivers/accel/ivpu/ivpu_drv.h | 2 ++
drivers/accel/ivpu/ivpu_fw.c | 4 ++++
drivers/accel/ivpu/ivpu_hw.c | 4 ++++
3 files changed, 10 insertions(+)
diff --git a/drivers/accel/ivpu/ivpu_drv.h b/drivers/accel/ivpu/ivpu_drv.h
index 73d808068c8b7..92753effb1c99 100644
--- a/drivers/accel/ivpu/ivpu_drv.h
+++ b/drivers/accel/ivpu/ivpu_drv.h
@@ -111,6 +111,7 @@ struct ivpu_wa_table {
bool disable_clock_relinquish;
bool disable_d0i3_msg;
bool wp0_during_power_up;
+ bool disable_d0i2;
};
struct ivpu_hw_info;
@@ -208,6 +209,7 @@ extern bool ivpu_force_snoop;
#define IVPU_TEST_MODE_TURBO BIT(9)
#define IVPU_TEST_MODE_CLK_RELINQ_DISABLE BIT(10)
#define IVPU_TEST_MODE_CLK_RELINQ_ENABLE BIT(11)
+#define IVPU_TEST_MODE_D0I2_DISABLE BIT(12)
extern int ivpu_test_mode;
struct ivpu_file_priv *ivpu_file_priv_get(struct ivpu_file_priv *file_priv);
diff --git a/drivers/accel/ivpu/ivpu_fw.c b/drivers/accel/ivpu/ivpu_fw.c
index cfe8f79ec5a6f..7a1bb92d8c816 100644
--- a/drivers/accel/ivpu/ivpu_fw.c
+++ b/drivers/accel/ivpu/ivpu_fw.c
@@ -534,6 +534,8 @@ static void ivpu_fw_boot_params_print(struct ivpu_device *vdev, struct vpu_boot_
boot_params->d0i3_entry_vpu_ts);
ivpu_dbg(vdev, FW_BOOT, "boot_params.system_time_us = %llu\n",
boot_params->system_time_us);
+ ivpu_dbg(vdev, FW_BOOT, "boot_params.power_profile = %u\n",
+ boot_params->power_profile);
}
void ivpu_fw_boot_params_setup(struct ivpu_device *vdev, struct vpu_boot_params *boot_params)
@@ -634,6 +636,8 @@ void ivpu_fw_boot_params_setup(struct ivpu_device *vdev, struct vpu_boot_params
boot_params->d0i3_delayed_entry = 1;
boot_params->d0i3_residency_time_us = 0;
boot_params->d0i3_entry_vpu_ts = 0;
+ if (IVPU_WA(disable_d0i2))
+ boot_params->power_profile = 1;
boot_params->system_time_us = ktime_to_us(ktime_get_real());
wmb(); /* Flush WC buffers after writing bootparams */
diff --git a/drivers/accel/ivpu/ivpu_hw.c b/drivers/accel/ivpu/ivpu_hw.c
index 4d9f30e3b505d..ec9a3629da3a9 100644
--- a/drivers/accel/ivpu/ivpu_hw.c
+++ b/drivers/accel/ivpu/ivpu_hw.c
@@ -77,11 +77,15 @@ static void wa_init(struct ivpu_device *vdev)
if (ivpu_hw_ip_gen(vdev) == IVPU_HW_IP_37XX)
vdev->wa.wp0_during_power_up = true;
+ if (ivpu_test_mode & IVPU_TEST_MODE_D0I2_DISABLE)
+ vdev->wa.disable_d0i2 = true;
+
IVPU_PRINT_WA(punit_disabled);
IVPU_PRINT_WA(clear_runtime_mem);
IVPU_PRINT_WA(interrupt_clear_with_0);
IVPU_PRINT_WA(disable_clock_relinquish);
IVPU_PRINT_WA(wp0_during_power_up);
+ IVPU_PRINT_WA(disable_d0i2);
}
static void timeouts_init(struct ivpu_device *vdev)
--
2.45.1
^ permalink raw reply related [flat|nested] 27+ messages in thread* Re: [PATCH 6/6] accel/ivpu: Implement D0i2 disable test mode
2025-02-04 8:46 ` [PATCH 6/6] accel/ivpu: Implement D0i2 disable test mode Jacek Lawrynowicz
@ 2025-02-14 17:04 ` Jeffrey Hugo
2025-02-17 15:35 ` Jacek Lawrynowicz
0 siblings, 1 reply; 27+ messages in thread
From: Jeffrey Hugo @ 2025-02-14 17:04 UTC (permalink / raw)
To: Jacek Lawrynowicz, dri-devel
Cc: oded.gabbay, maciej.falkowski, Karol Wachowski
On 2/4/2025 1:46 AM, Jacek Lawrynowicz wrote:
> From: Karol Wachowski <karol.wachowski@intel.com>
>
> Add power_profile firmware boot param and set it to 0 by default
> which is default FW power profile.
I don't think that patch does this. It looks like
boot_params->power_profile is already defined. What am I missing?
-Jeff
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH 6/6] accel/ivpu: Implement D0i2 disable test mode
2025-02-14 17:04 ` Jeffrey Hugo
@ 2025-02-17 15:35 ` Jacek Lawrynowicz
0 siblings, 0 replies; 27+ messages in thread
From: Jacek Lawrynowicz @ 2025-02-17 15:35 UTC (permalink / raw)
To: Jeffrey Hugo, dri-devel; +Cc: oded.gabbay, maciej.falkowski, Karol Wachowski
Hi,
On 2/14/2025 6:04 PM, Jeffrey Hugo wrote:
> On 2/4/2025 1:46 AM, Jacek Lawrynowicz wrote:
>> From: Karol Wachowski <karol.wachowski@intel.com>
>>
>> Add power_profile firmware boot param and set it to 0 by default
>> which is default FW power profile.
>
> I don't think that patch does this. It looks like boot_params->power_profile is already defined. What am I missing?
Yes, the description is unfortunate, the power_profile is indeed already defined and always set to 0. This change adds the ability to set it to 1 using a WA.
I will fix the description.
Jacek
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH 0/6] accel/ivpu: Changes for 6.15 2025-02-04
2025-02-04 8:46 [PATCH 0/6] accel/ivpu: Changes for 6.15 2025-02-04 Jacek Lawrynowicz
` (5 preceding siblings ...)
2025-02-04 8:46 ` [PATCH 6/6] accel/ivpu: Implement D0i2 disable test mode Jacek Lawrynowicz
@ 2025-02-10 9:48 ` Jacek Lawrynowicz
2025-02-12 10:20 ` Thomas Zimmermann
7 siblings, 0 replies; 27+ messages in thread
From: Jacek Lawrynowicz @ 2025-02-10 9:48 UTC (permalink / raw)
To: dri-devel; +Cc: oded.gabbay, quic_jhugo, maciej.falkowski
Applied to drm-misc-next
On 2/4/2025 9:46 AM, Jacek Lawrynowicz wrote:
> Add possibility to import single buffer into multiple contexts,
> fix locking when aborting contexts and add some debug features.
>
> Andrzej Kacprowski (2):
> accel/ivpu: Add missing locks around mmu queues
> accel/ivpu: Prevent runtime suspend during context abort work
>
> Karol Wachowski (3):
> accel/ivpu: Add debugfs interface for setting HWS priority bands
> accel/ivpu: Add test modes to toggle clock relinquish disable
> accel/ivpu: Implement D0i2 disable test modea
>
> Tomasz Rusinowicz (1):
> accel/ivpu: Allow to import single buffer into multiple contexts
>
> drivers/accel/ivpu/ivpu_debugfs.c | 84 +++++++++++++++++++++++++++++++
> drivers/accel/ivpu/ivpu_drv.c | 2 +-
> drivers/accel/ivpu/ivpu_drv.h | 4 ++
> drivers/accel/ivpu/ivpu_fw.c | 4 ++
> drivers/accel/ivpu/ivpu_gem.c | 43 ++++++++++++++++
> drivers/accel/ivpu/ivpu_gem.h | 1 +
> drivers/accel/ivpu/ivpu_hw.c | 31 ++++++++++++
> drivers/accel/ivpu/ivpu_hw.h | 5 ++
> drivers/accel/ivpu/ivpu_job.c | 10 +++-
> drivers/accel/ivpu/ivpu_jsm_msg.c | 29 ++++-------
> drivers/accel/ivpu/ivpu_mmu.c | 9 ++++
> 11 files changed, 202 insertions(+), 20 deletions(-)
>
> --
> 2.45.1
^ permalink raw reply [flat|nested] 27+ messages in thread* Re: [PATCH 0/6] accel/ivpu: Changes for 6.15 2025-02-04
2025-02-04 8:46 [PATCH 0/6] accel/ivpu: Changes for 6.15 2025-02-04 Jacek Lawrynowicz
` (6 preceding siblings ...)
2025-02-10 9:48 ` [PATCH 0/6] accel/ivpu: Changes for 6.15 2025-02-04 Jacek Lawrynowicz
@ 2025-02-12 10:20 ` Thomas Zimmermann
2025-02-12 12:59 ` Maxime Ripard
2025-02-12 13:27 ` Jacek Lawrynowicz
7 siblings, 2 replies; 27+ messages in thread
From: Thomas Zimmermann @ 2025-02-12 10:20 UTC (permalink / raw)
To: Jacek Lawrynowicz, dri-devel
Cc: oded.gabbay, quic_jhugo, maciej.falkowski, Simona Vetter,
Dave Airlie, Maxime Ripard, maarten.lankhorst@linux.intel.com
Hi,
here's a complaint about the lack of process and documentation in
accel/, and ivpu specifically. I came across this series while preparing
the weekly PR for drm-misc-next and found myself unable to extract much
useful information to report. This is a problem for a development
process that relies on transparency, accountability and collaboration.
Other problematic examples are at [1] and [2]. IIRC I had similar issues
in previous development cycles.
I cannot assess the quality of the code itself, but the process and
documentation involved does not meet the requirements.
- 'Changes for <version>' is not an meaningful description for a patch
series. It's not the submitter (or anyone else) deciding that this
series gets merged into version so-and-so. The series gets merged when
it is ready to be merged.
- Apparently this series contains 3 different things (buffer imports,
locking, debugging); so it should be 3 series with each addressing one
of these topics.
- The series' description just restates the patch descriptions briefly.
It should rather give some indication of the problem being solved by the
contained patches, and context on why this is worth solving. (I know
that this is often complicated to state clearly to outsiders.)
- Review should be public. I understand that it's often only one dev
team working on a specific driver, discussing issues internally. Still
it makes sense to do the code reviews in public, so that others can
follow what is going on in the driver. Public code reviews are also
necessary to establish consent and institutional knowledge within the
wider developer community. You miss that with internal reviews.
- These patches come with R-b tags pre-applied. Even for trivial
changes, R-b tags should given in public. If the R-bs have been given
elsewhere, please include a reference to that location. The tags (R-b,
A-b, T-b, etc) are not just for verifying the code itself. They also
establish trust in the development process involving each patch; and in
the developers involved in that process. This needs to happen in public
to be effective.
- The kernel's (or any FOSS') development is organized around
individuals, not organizations. Having each developer send their changes
individually would likely resolve most of the current problems.
I understand that accel is not graphics and can feel somewhat detached
from the rest of DRM. Yet it is part of the DRM subsystem. This
development cycles' ivpu series' made me go to IRC and ask for accel/ to
be removed from the drm-misc tree. Luckily the other maintainer were
more charitable. So I make these remarks in good faith and hope that we
can improve the processes within accel/.
Best regards
Thomas
[1] https://patchwork.freedesktop.org/series/143182/
[2] https://patchwork.freedesktop.org/series/144101/
Am 04.02.25 um 09:46 schrieb Jacek Lawrynowicz:
> Add possibility to import single buffer into multiple contexts,
> fix locking when aborting contexts and add some debug features.
>
> Andrzej Kacprowski (2):
> accel/ivpu: Add missing locks around mmu queues
> accel/ivpu: Prevent runtime suspend during context abort work
>
> Karol Wachowski (3):
> ccel/ivpu: Add debugfs interface for setting HWS priority bands
> accel/ivpu: Add test modes to toggle clock relinquish disable
> accel/ivpu: Implement D0i2 disable test modea
>
> Tomasz Rusinowicz (1):
> accel/ivpu: Allow to import single buffer into multiple contexts
>
> drivers/accel/ivpu/ivpu_debugfs.c | 84 +++++++++++++++++++++++++++++++
> drivers/accel/ivpu/ivpu_drv.c | 2 +-
> drivers/accel/ivpu/ivpu_drv.h | 4 ++
> drivers/accel/ivpu/ivpu_fw.c | 4 ++
> drivers/accel/ivpu/ivpu_gem.c | 43 ++++++++++++++++
> drivers/accel/ivpu/ivpu_gem.h | 1 +
> drivers/accel/ivpu/ivpu_hw.c | 31 ++++++++++++
> drivers/accel/ivpu/ivpu_hw.h | 5 ++
> drivers/accel/ivpu/ivpu_job.c | 10 +++-
> drivers/accel/ivpu/ivpu_jsm_msg.c | 29 ++++-------
> drivers/accel/ivpu/ivpu_mmu.c | 9 ++++
> 11 files changed, 202 insertions(+), 20 deletions(-)
>
> --
> 2.45.1
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)
^ permalink raw reply [flat|nested] 27+ messages in thread* Re: [PATCH 0/6] accel/ivpu: Changes for 6.15 2025-02-04
2025-02-12 10:20 ` Thomas Zimmermann
@ 2025-02-12 12:59 ` Maxime Ripard
2025-02-12 13:27 ` Jacek Lawrynowicz
1 sibling, 0 replies; 27+ messages in thread
From: Maxime Ripard @ 2025-02-12 12:59 UTC (permalink / raw)
To: Thomas Zimmermann
Cc: Jacek Lawrynowicz, dri-devel, oded.gabbay, quic_jhugo,
maciej.falkowski, Simona Vetter, Dave Airlie,
maarten.lankhorst@linux.intel.com
[-- Attachment #1: Type: text/plain, Size: 3093 bytes --]
On Wed, Feb 12, 2025 at 11:20:46AM +0100, Thomas Zimmermann wrote:
> Hi,
>
> here's a complaint about the lack of process and documentation in accel/,
> and ivpu specifically. I came across this series while preparing the weekly
> PR for drm-misc-next and found myself unable to extract much useful
> information to report. This is a problem for a development process that
> relies on transparency, accountability and collaboration. Other problematic
> examples are at [1] and [2]. IIRC I had similar issues in previous
> development cycles.
>
> I cannot assess the quality of the code itself, but the process and
> documentation involved does not meet the requirements.
>
> - 'Changes for <version>' is not an meaningful description for a patch
> series. It's not the submitter (or anyone else) deciding that this series
> gets merged into version so-and-so. The series gets merged when it is ready
> to be merged.
>
> - Apparently this series contains 3 different things (buffer imports,
> locking, debugging); so it should be 3 series with each addressing one of
> these topics.
>
> - The series' description just restates the patch descriptions briefly. It
> should rather give some indication of the problem being solved by the
> contained patches, and context on why this is worth solving. (I know that
> this is often complicated to state clearly to outsiders.)
>
> - Review should be public. I understand that it's often only one dev team
> working on a specific driver, discussing issues internally. Still it makes
> sense to do the code reviews in public, so that others can follow what is
> going on in the driver. Public code reviews are also necessary to establish
> consent and institutional knowledge within the wider developer community.
> You miss that with internal reviews.
>
> - These patches come with R-b tags pre-applied. Even for trivial changes,
> R-b tags should given in public. If the R-bs have been given elsewhere,
> please include a reference to that location. The tags (R-b, A-b, T-b, etc)
> are not just for verifying the code itself. They also establish trust in the
> development process involving each patch; and in the developers involved in
> that process. This needs to happen in public to be effective.
>
> - The kernel's (or any FOSS') development is organized around individuals,
> not organizations. Having each developer send their changes individually
> would likely resolve most of the current problems.
>
> I understand that accel is not graphics and can feel somewhat detached from
> the rest of DRM. Yet it is part of the DRM subsystem. This development
> cycles' ivpu series' made me go to IRC and ask for accel/ to be removed from
> the drm-misc tree. Luckily the other maintainer were more charitable. So I
> make these remarks in good faith and hope that we can improve the processes
> within accel/.
I'd also want to emphatize that the last three items at least are
applicable to the entire kernel, so even if they had a different tree,
it would still not be ok.
Maxime
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 273 bytes --]
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH 0/6] accel/ivpu: Changes for 6.15 2025-02-04
2025-02-12 10:20 ` Thomas Zimmermann
2025-02-12 12:59 ` Maxime Ripard
@ 2025-02-12 13:27 ` Jacek Lawrynowicz
2025-02-12 15:52 ` Jeffrey Hugo
2025-02-13 14:06 ` Thomas Zimmermann
1 sibling, 2 replies; 27+ messages in thread
From: Jacek Lawrynowicz @ 2025-02-12 13:27 UTC (permalink / raw)
To: Thomas Zimmermann, dri-devel
Cc: oded.gabbay, quic_jhugo, maciej.falkowski, Simona Vetter,
Dave Airlie, Maxime Ripard, maarten.lankhorst@linux.intel.com
Hi,
Thanks for your detailed feedback and constructive suggestions. I appreciate this as it is not easy to learn all process details otherwise.
On 2/12/2025 11:20 AM, Thomas Zimmermann wrote:
> Hi,
>
> here's a complaint about the lack of process and documentation in accel/, and ivpu specifically. I came across this series while preparing the weekly PR for drm-misc-next and found myself unable to extract much useful information to report. This is a problem for a development process that relies on transparency, accountability and collaboration. Other problematic examples are at [1] and [2]. IIRC I had similar issues in previous development cycles.
>
> I cannot assess the quality of the code itself, but the process and documentation involved does not meet the requirements.
>
> - 'Changes for <version>' is not an meaningful description for a patch series. It's not the submitter (or anyone else) deciding that this series gets merged into version so-and-so. The series gets merged when it is ready to be merged.
>
> - Apparently this series contains 3 different things (buffer imports, locking, debugging); so it should be 3 series with each addressing one of these topics.
>
> - The series' description just restates the patch descriptions briefly. It should rather give some indication of the problem being solved by the contained patches, and context on why this is worth solving. (I know that this is often complicated to state clearly to outsiders.)
We were sometimes using patchsets to bundle patches that were tested together. We apologize for any confusion this may have caused, as we were not aware that this approach was not preferred. Moving forward, we will ensure that patches are split into separate series, each addressing a specific topic. I hope this will help improve clarity and make it easier to understand and assess the changes.
> - Review should be public. I understand that it's often only one dev team working on a specific driver, discussing issues internally. Still it makes sense to do the code reviews in public, so that others can follow what is going on in the driver. Public code reviews are also necessary to establish consent and institutional knowledge within the wider developer community. You miss that with internal reviews.
>
> - These patches come with R-b tags pre-applied. Even for trivial changes, R-b tags should given in public. If the R-bs have been given elsewhere, please include a reference to that location. The tags (R-b, A-b, T-b, etc) are not just for verifying the code itself. They also establish trust in the development process involving each patch; and in the developers involved in that process. This needs to happen in public to be effective.
We value all public comments and typically wait a week for public reviews before submitting patches, regardless of whether an R-b tag is pre-applied. I was not aware that pre-applying R-b tags was an issue. We we will ensure that all R-b tags are added publicly from now on.
> - The kernel's (or any FOSS') development is organized around individuals, not organizations. Having each developer send their changes individually would likely resolve most of the current problems.
OK, I'll talk to the team about this.
> I understand that accel is not graphics and can feel somewhat detached from the rest of DRM. Yet it is part of the DRM subsystem. This development cycles' ivpu series' made me go to IRC and ask for accel/ to be removed from the drm-misc tree. Luckily the other maintainer were more charitable. So I make these remarks in good faith and hope that we can improve the processes within accel/.
I appreciate your feedback and would welcome more remarks. Please keep in mind that all accel drivers are new, and it takes time to learn all the upstream rules.
The kernel/DRM development process is quite unique, and not everything is fully documented. I find emails like this to be incredibly valuable and I am eager to comply with the guidelines.
I just need some patience and guidance as I navigate through this. Thank you for your understanding and support.
Regards,
Jacek
> Best regards
> Thomas
>
> [1] https://patchwork.freedesktop.org/series/143182/
> [2] https://patchwork.freedesktop.org/series/144101/
>
>
> Am 04.02.25 um 09:46 schrieb Jacek Lawrynowicz:
>> Add possibility to import single buffer into multiple contexts,
>> fix locking when aborting contexts and add some debug features.
>>
>> Andrzej Kacprowski (2):
>> accel/ivpu: Add missing locks around mmu queues
>> accel/ivpu: Prevent runtime suspend during context abort work
>>
>> Karol Wachowski (3):
>> ccel/ivpu: Add debugfs interface for setting HWS priority bands
>> accel/ivpu: Add test modes to toggle clock relinquish disable
>> accel/ivpu: Implement D0i2 disable test modea
>>
>> Tomasz Rusinowicz (1):
>> accel/ivpu: Allow to import single buffer into multiple contexts
>>
>> drivers/accel/ivpu/ivpu_debugfs.c | 84 +++++++++++++++++++++++++++++++
>> drivers/accel/ivpu/ivpu_drv.c | 2 +-
>> drivers/accel/ivpu/ivpu_drv.h | 4 ++
>> drivers/accel/ivpu/ivpu_fw.c | 4 ++
>> drivers/accel/ivpu/ivpu_gem.c | 43 ++++++++++++++++
>> drivers/accel/ivpu/ivpu_gem.h | 1 +
>> drivers/accel/ivpu/ivpu_hw.c | 31 ++++++++++++
>> drivers/accel/ivpu/ivpu_hw.h | 5 ++
>> drivers/accel/ivpu/ivpu_job.c | 10 +++-
>> drivers/accel/ivpu/ivpu_jsm_msg.c | 29 ++++-------
>> drivers/accel/ivpu/ivpu_mmu.c | 9 ++++
>> 11 files changed, 202 insertions(+), 20 deletions(-)
>>
>> --
>> 2.45.1
>
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH 0/6] accel/ivpu: Changes for 6.15 2025-02-04
2025-02-12 13:27 ` Jacek Lawrynowicz
@ 2025-02-12 15:52 ` Jeffrey Hugo
2025-02-13 14:17 ` Thomas Zimmermann
2025-02-13 14:06 ` Thomas Zimmermann
1 sibling, 1 reply; 27+ messages in thread
From: Jeffrey Hugo @ 2025-02-12 15:52 UTC (permalink / raw)
To: Jacek Lawrynowicz, Thomas Zimmermann, dri-devel
Cc: oded.gabbay, maciej.falkowski, Simona Vetter, Dave Airlie,
Maxime Ripard, maarten.lankhorst@linux.intel.com
On 2/12/2025 6:27 AM, Jacek Lawrynowicz wrote:
> Hi,
>
> Thanks for your detailed feedback and constructive suggestions. I appreciate this as it is not easy to learn all process details otherwise.
I echo this. At times, accel feels a bit isolated from DRM.
>
> On 2/12/2025 11:20 AM, Thomas Zimmermann wrote:
>> Hi,
>>
>> here's a complaint about the lack of process and documentation in accel/, and ivpu specifically. I came across this series while preparing the weekly PR for drm-misc-next and found myself unable to extract much useful information to report. This is a problem for a development process that relies on transparency, accountability and collaboration. Other problematic examples are at [1] and [2]. IIRC I had similar issues in previous development cycles.
>>
>> I cannot assess the quality of the code itself, but the process and documentation involved does not meet the requirements.
>>
>> - 'Changes for <version>' is not an meaningful description for a patch series. It's not the submitter (or anyone else) deciding that this series gets merged into version so-and-so. The series gets merged when it is ready to be merged.
>>
>> - Apparently this series contains 3 different things (buffer imports, locking, debugging); so it should be 3 series with each addressing one of these topics.
>>
>> - The series' description just restates the patch descriptions briefly. It should rather give some indication of the problem being solved by the contained patches, and context on why this is worth solving. (I know that this is often complicated to state clearly to outsiders.)
>
> We were sometimes using patchsets to bundle patches that were tested together. We apologize for any confusion this may have caused, as we were not aware that this approach was not preferred. Moving forward, we will ensure that patches are split into separate series, each addressing a specific topic. I hope this will help improve clarity and make it easier to understand and assess the changes.
>
>> - Review should be public. I understand that it's often only one dev team working on a specific driver, discussing issues internally. Still it makes sense to do the code reviews in public, so that others can follow what is going on in the driver. Public code reviews are also necessary to establish consent and institutional knowledge within the wider developer community. You miss that with internal reviews.
>>
>> - These patches come with R-b tags pre-applied. Even for trivial changes, R-b tags should given in public. If the R-bs have been given elsewhere, please include a reference to that location. The tags (R-b, A-b, T-b, etc) are not just for verifying the code itself. They also establish trust in the development process involving each patch; and in the developers involved in that process. This needs to happen in public to be effective.
>
> We value all public comments and typically wait a week for public reviews before submitting patches, regardless of whether an R-b tag is pre-applied. I was not aware that pre-applying R-b tags was an issue. We we will ensure that all R-b tags are added publicly from now on.
I'll provide a counter point on the pre-applied RBs - Qualcomm has been
told many times in the past decade or so to do this (GregKH comes to
mind although I'm certain he is not the only one). I don't particularly
like it, but we seem to have a reputation for poor quality in the
community, and it would appear that the first step to mitigating that is
to indicate that we have actually done internal reviews. We've been
warned that the next step is requiring a "community approved" developer
to SOB everything. I hope to avoid that.
Personally, I value community given RBs for maillist patches over
internal ones and will typically wait/seek them unless the change is
very trivial. I can't speak for The Intel/AMD/Habana folks although I
suspect they will concur with this but I lurk on IRC and of course you
have my email address. Please feel free to reach out with any feedback.
I would hope that we can learn and improve without annoying the
community to the point that the community feels frustrated and suggests
drastic action.
To Jacek, I'm hoping to be more responsive to reviewing your patches now
that we are out of the holidays and other things have settled down
again. I'm sorry if you've felt ignored.
>> - The kernel's (or any FOSS') development is organized around individuals, not organizations. Having each developer send their changes individually would likely resolve most of the current problems.
> OK, I'll talk to the team about this.
>
>> I understand that accel is not graphics and can feel somewhat detached from the rest of DRM. Yet it is part of the DRM subsystem. This development cycles' ivpu series' made me go to IRC and ask for accel/ to be removed from the drm-misc tree. Luckily the other maintainer were more charitable. So I make these remarks in good faith and hope that we can improve the processes within accel/.
>
> I appreciate your feedback and would welcome more remarks. Please keep in mind that all accel drivers are new, and it takes time to learn all the upstream rules.
> The kernel/DRM development process is quite unique, and not everything is fully documented. I find emails like this to be incredibly valuable and I am eager to comply with the guidelines.
> I just need some patience and guidance as I navigate through this. Thank you for your understanding and support.
>
> Regards,
> Jacek
>
>> Best regards
>> Thomas
>>
>> [1] https://patchwork.freedesktop.org/series/143182/
>> [2] https://patchwork.freedesktop.org/series/144101/
>>
>>
>> Am 04.02.25 um 09:46 schrieb Jacek Lawrynowicz:
>>> Add possibility to import single buffer into multiple contexts,
>>> fix locking when aborting contexts and add some debug features.
>>>
>>> Andrzej Kacprowski (2):
>>> accel/ivpu: Add missing locks around mmu queues
>>> accel/ivpu: Prevent runtime suspend during context abort work
>>>
>>> Karol Wachowski (3):
>>> ccel/ivpu: Add debugfs interface for setting HWS priority bands
>>> accel/ivpu: Add test modes to toggle clock relinquish disable
>>> accel/ivpu: Implement D0i2 disable test modea
>>>
>>> Tomasz Rusinowicz (1):
>>> accel/ivpu: Allow to import single buffer into multiple contexts
>>>
>>> drivers/accel/ivpu/ivpu_debugfs.c | 84 +++++++++++++++++++++++++++++++
>>> drivers/accel/ivpu/ivpu_drv.c | 2 +-
>>> drivers/accel/ivpu/ivpu_drv.h | 4 ++
>>> drivers/accel/ivpu/ivpu_fw.c | 4 ++
>>> drivers/accel/ivpu/ivpu_gem.c | 43 ++++++++++++++++
>>> drivers/accel/ivpu/ivpu_gem.h | 1 +
>>> drivers/accel/ivpu/ivpu_hw.c | 31 ++++++++++++
>>> drivers/accel/ivpu/ivpu_hw.h | 5 ++
>>> drivers/accel/ivpu/ivpu_job.c | 10 +++-
>>> drivers/accel/ivpu/ivpu_jsm_msg.c | 29 ++++-------
>>> drivers/accel/ivpu/ivpu_mmu.c | 9 ++++
>>> 11 files changed, 202 insertions(+), 20 deletions(-)
>>>
>>> --
>>> 2.45.1
>>
>
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH 0/6] accel/ivpu: Changes for 6.15 2025-02-04
2025-02-12 15:52 ` Jeffrey Hugo
@ 2025-02-13 14:17 ` Thomas Zimmermann
2025-02-14 15:47 ` Jeffrey Hugo
0 siblings, 1 reply; 27+ messages in thread
From: Thomas Zimmermann @ 2025-02-13 14:17 UTC (permalink / raw)
To: Jeffrey Hugo, Jacek Lawrynowicz, dri-devel
Cc: oded.gabbay, maciej.falkowski, Simona Vetter, Dave Airlie,
Maxime Ripard, maarten.lankhorst@linux.intel.com
Hi
Am 12.02.25 um 16:52 schrieb Jeffrey Hugo:
> On 2/12/2025 6:27 AM, Jacek Lawrynowicz wrote:
>> Hi,
>>
>> Thanks for your detailed feedback and constructive suggestions. I
>> appreciate this as it is not easy to learn all process details
>> otherwise.
>
> I echo this. At times, accel feels a bit isolated from DRM.
Agreed, but IDK how to fix that. Although both share common code, there
seems little overlap driver-wise.
>
>>
>> On 2/12/2025 11:20 AM, Thomas Zimmermann wrote:
>>> Hi,
>>>
>>> here's a complaint about the lack of process and documentation in
>>> accel/, and ivpu specifically. I came across this series while
>>> preparing the weekly PR for drm-misc-next and found myself unable to
>>> extract much useful information to report. This is a problem for a
>>> development process that relies on transparency, accountability and
>>> collaboration. Other problematic examples are at [1] and [2]. IIRC I
>>> had similar issues in previous development cycles.
>>>
>>> I cannot assess the quality of the code itself, but the process and
>>> documentation involved does not meet the requirements.
>>>
>>> - 'Changes for <version>' is not an meaningful description for a
>>> patch series. It's not the submitter (or anyone else) deciding that
>>> this series gets merged into version so-and-so. The series gets
>>> merged when it is ready to be merged.
>>>
>>> - Apparently this series contains 3 different things (buffer
>>> imports, locking, debugging); so it should be 3 series with each
>>> addressing one of these topics.
>>>
>>> - The series' description just restates the patch descriptions
>>> briefly. It should rather give some indication of the problem being
>>> solved by the contained patches, and context on why this is worth
>>> solving. (I know that this is often complicated to state clearly to
>>> outsiders.)
>>
>> We were sometimes using patchsets to bundle patches that were tested
>> together. We apologize for any confusion this may have caused, as we
>> were not aware that this approach was not preferred. Moving forward,
>> we will ensure that patches are split into separate series, each
>> addressing a specific topic. I hope this will help improve clarity
>> and make it easier to understand and assess the changes.
>>
>>> - Review should be public. I understand that it's often only one dev
>>> team working on a specific driver, discussing issues internally.
>>> Still it makes sense to do the code reviews in public, so that
>>> others can follow what is going on in the driver. Public code
>>> reviews are also necessary to establish consent and institutional
>>> knowledge within the wider developer community. You miss that with
>>> internal reviews.
>>>
>>> - These patches come with R-b tags pre-applied. Even for trivial
>>> changes, R-b tags should given in public. If the R-bs have been
>>> given elsewhere, please include a reference to that location. The
>>> tags (R-b, A-b, T-b, etc) are not just for verifying the code
>>> itself. They also establish trust in the development process
>>> involving each patch; and in the developers involved in that
>>> process. This needs to happen in public to be effective.
>>
>> We value all public comments and typically wait a week for public
>> reviews before submitting patches, regardless of whether an R-b tag
>> is pre-applied. I was not aware that pre-applying R-b tags was an
>> issue. We we will ensure that all R-b tags are added publicly from
>> now on.
>
> I'll provide a counter point on the pre-applied RBs - Qualcomm has
> been told many times in the past decade or so to do this (GregKH comes
> to mind although I'm certain he is not the only one). I don't
> particularly like it, but we seem to have a reputation for poor
> quality in the community, and it would appear that the first step to
> mitigating that is to indicate that we have actually done internal
> reviews. We've been warned that the next step is requiring a
> "community approved" developer to SOB everything. I hope to avoid that.
>
> Personally, I value community given RBs for maillist patches over
> internal ones and will typically wait/seek them unless the change is
> very trivial. I can't speak for The Intel/AMD/Habana folks although I
> suspect they will concur with this but I lurk on IRC and of course you
> have my email address. Please feel free to reach out with any
> feedback. I would hope that we can learn and improve without annoying
> the community to the point that the community feels frustrated and
> suggests drastic action.
I'd disagree with GregKH here, but him saying this is like having an
'official' statement for what to do. But I don't think other DRM driver
teams pre-apply R-bs. If a patch got an R-b from an internal review,
maybe briefly mention it in the cover letter. At least it's clear then.
Best regards
Thomas
>
> To Jacek, I'm hoping to be more responsive to reviewing your patches
> now that we are out of the holidays and other things have settled down
> again. I'm sorry if you've felt ignored.
>
>>> - The kernel's (or any FOSS') development is organized around
>>> individuals, not organizations. Having each developer send their
>>> changes individually would likely resolve most of the current problems.
>> OK, I'll talk to the team about this.
>>
>>> I understand that accel is not graphics and can feel somewhat
>>> detached from the rest of DRM. Yet it is part of the DRM subsystem.
>>> This development cycles' ivpu series' made me go to IRC and ask for
>>> accel/ to be removed from the drm-misc tree. Luckily the other
>>> maintainer were more charitable. So I make these remarks in good
>>> faith and hope that we can improve the processes within accel/.
>>
>> I appreciate your feedback and would welcome more remarks. Please
>> keep in mind that all accel drivers are new, and it takes time to
>> learn all the upstream rules.
>> The kernel/DRM development process is quite unique, and not
>> everything is fully documented. I find emails like this to be
>> incredibly valuable and I am eager to comply with the guidelines.
>> I just need some patience and guidance as I navigate through this.
>> Thank you for your understanding and support.
>>
>> Regards,
>> Jacek
>>
>>> Best regards
>>> Thomas
>>>
>>> [1] https://patchwork.freedesktop.org/series/143182/
>>> [2] https://patchwork.freedesktop.org/series/144101/
>>>
>>>
>>> Am 04.02.25 um 09:46 schrieb Jacek Lawrynowicz:
>>>> Add possibility to import single buffer into multiple contexts,
>>>> fix locking when aborting contexts and add some debug features.
>>>>
>>>> Andrzej Kacprowski (2):
>>>> accel/ivpu: Add missing locks around mmu queues
>>>> accel/ivpu: Prevent runtime suspend during context abort work
>>>>
>>>> Karol Wachowski (3):
>>>> ccel/ivpu: Add debugfs interface for setting HWS priority bands
>>>> accel/ivpu: Add test modes to toggle clock relinquish disable
>>>> accel/ivpu: Implement D0i2 disable test modea
>>>>
>>>> Tomasz Rusinowicz (1):
>>>> accel/ivpu: Allow to import single buffer into multiple contexts
>>>>
>>>> drivers/accel/ivpu/ivpu_debugfs.c | 84
>>>> +++++++++++++++++++++++++++++++
>>>> drivers/accel/ivpu/ivpu_drv.c | 2 +-
>>>> drivers/accel/ivpu/ivpu_drv.h | 4 ++
>>>> drivers/accel/ivpu/ivpu_fw.c | 4 ++
>>>> drivers/accel/ivpu/ivpu_gem.c | 43 ++++++++++++++++
>>>> drivers/accel/ivpu/ivpu_gem.h | 1 +
>>>> drivers/accel/ivpu/ivpu_hw.c | 31 ++++++++++++
>>>> drivers/accel/ivpu/ivpu_hw.h | 5 ++
>>>> drivers/accel/ivpu/ivpu_job.c | 10 +++-
>>>> drivers/accel/ivpu/ivpu_jsm_msg.c | 29 ++++-------
>>>> drivers/accel/ivpu/ivpu_mmu.c | 9 ++++
>>>> 11 files changed, 202 insertions(+), 20 deletions(-)
>>>>
>>>> --
>>>> 2.45.1
>>>
>>
>
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH 0/6] accel/ivpu: Changes for 6.15 2025-02-04
2025-02-13 14:17 ` Thomas Zimmermann
@ 2025-02-14 15:47 ` Jeffrey Hugo
2025-02-17 16:53 ` Simona Vetter
0 siblings, 1 reply; 27+ messages in thread
From: Jeffrey Hugo @ 2025-02-14 15:47 UTC (permalink / raw)
To: Thomas Zimmermann, Jacek Lawrynowicz, dri-devel
Cc: oded.gabbay, maciej.falkowski, Simona Vetter, Dave Airlie,
Maxime Ripard, maarten.lankhorst@linux.intel.com
On 2/13/2025 7:17 AM, Thomas Zimmermann wrote:
> Hi
>
> Am 12.02.25 um 16:52 schrieb Jeffrey Hugo:
>> On 2/12/2025 6:27 AM, Jacek Lawrynowicz wrote:
>>> Hi,
>>>
>>> Thanks for your detailed feedback and constructive suggestions. I
>>> appreciate this as it is not easy to learn all process details
>>> otherwise.
>>
>> I echo this. At times, accel feels a bit isolated from DRM.
>
> Agreed, but IDK how to fix that. Although both share common code, there
> seems little overlap driver-wise.
>
>>
>>>
>>> On 2/12/2025 11:20 AM, Thomas Zimmermann wrote:
>>>> Hi,
>>>>
>>>> here's a complaint about the lack of process and documentation in
>>>> accel/, and ivpu specifically. I came across this series while
>>>> preparing the weekly PR for drm-misc-next and found myself unable to
>>>> extract much useful information to report. This is a problem for a
>>>> development process that relies on transparency, accountability and
>>>> collaboration. Other problematic examples are at [1] and [2]. IIRC I
>>>> had similar issues in previous development cycles.
>>>>
>>>> I cannot assess the quality of the code itself, but the process and
>>>> documentation involved does not meet the requirements.
>>>>
>>>> - 'Changes for <version>' is not an meaningful description for a
>>>> patch series. It's not the submitter (or anyone else) deciding that
>>>> this series gets merged into version so-and-so. The series gets
>>>> merged when it is ready to be merged.
>>>>
>>>> - Apparently this series contains 3 different things (buffer
>>>> imports, locking, debugging); so it should be 3 series with each
>>>> addressing one of these topics.
>>>>
>>>> - The series' description just restates the patch descriptions
>>>> briefly. It should rather give some indication of the problem being
>>>> solved by the contained patches, and context on why this is worth
>>>> solving. (I know that this is often complicated to state clearly to
>>>> outsiders.)
>>>
>>> We were sometimes using patchsets to bundle patches that were tested
>>> together. We apologize for any confusion this may have caused, as we
>>> were not aware that this approach was not preferred. Moving forward,
>>> we will ensure that patches are split into separate series, each
>>> addressing a specific topic. I hope this will help improve clarity
>>> and make it easier to understand and assess the changes.
>>>
>>>> - Review should be public. I understand that it's often only one dev
>>>> team working on a specific driver, discussing issues internally.
>>>> Still it makes sense to do the code reviews in public, so that
>>>> others can follow what is going on in the driver. Public code
>>>> reviews are also necessary to establish consent and institutional
>>>> knowledge within the wider developer community. You miss that with
>>>> internal reviews.
>>>>
>>>> - These patches come with R-b tags pre-applied. Even for trivial
>>>> changes, R-b tags should given in public. If the R-bs have been
>>>> given elsewhere, please include a reference to that location. The
>>>> tags (R-b, A-b, T-b, etc) are not just for verifying the code
>>>> itself. They also establish trust in the development process
>>>> involving each patch; and in the developers involved in that
>>>> process. This needs to happen in public to be effective.
>>>
>>> We value all public comments and typically wait a week for public
>>> reviews before submitting patches, regardless of whether an R-b tag
>>> is pre-applied. I was not aware that pre-applying R-b tags was an
>>> issue. We we will ensure that all R-b tags are added publicly from
>>> now on.
>>
>> I'll provide a counter point on the pre-applied RBs - Qualcomm has
>> been told many times in the past decade or so to do this (GregKH comes
>> to mind although I'm certain he is not the only one). I don't
>> particularly like it, but we seem to have a reputation for poor
>> quality in the community, and it would appear that the first step to
>> mitigating that is to indicate that we have actually done internal
>> reviews. We've been warned that the next step is requiring a
>> "community approved" developer to SOB everything. I hope to avoid that.
>>
>> Personally, I value community given RBs for maillist patches over
>> internal ones and will typically wait/seek them unless the change is
>> very trivial. I can't speak for The Intel/AMD/Habana folks although I
>> suspect they will concur with this but I lurk on IRC and of course you
>> have my email address. Please feel free to reach out with any
>> feedback. I would hope that we can learn and improve without annoying
>> the community to the point that the community feels frustrated and
>> suggests drastic action.
>
> I'd disagree with GregKH here, but him saying this is like having an
> 'official' statement for what to do. But I don't think other DRM driver
> teams pre-apply R-bs. If a patch got an R-b from an internal review,
> maybe briefly mention it in the cover letter. At least it's clear then.
This seems like a good idea. I will incorporate it.
-Jeff
>
> Best regards
> Thomas
>
>>
>> To Jacek, I'm hoping to be more responsive to reviewing your patches
>> now that we are out of the holidays and other things have settled down
>> again. I'm sorry if you've felt ignored.
>>
>>>> - The kernel's (or any FOSS') development is organized around
>>>> individuals, not organizations. Having each developer send their
>>>> changes individually would likely resolve most of the current problems.
>>> OK, I'll talk to the team about this.
>>>
>>>> I understand that accel is not graphics and can feel somewhat
>>>> detached from the rest of DRM. Yet it is part of the DRM subsystem.
>>>> This development cycles' ivpu series' made me go to IRC and ask for
>>>> accel/ to be removed from the drm-misc tree. Luckily the other
>>>> maintainer were more charitable. So I make these remarks in good
>>>> faith and hope that we can improve the processes within accel/.
>>>
>>> I appreciate your feedback and would welcome more remarks. Please
>>> keep in mind that all accel drivers are new, and it takes time to
>>> learn all the upstream rules.
>>> The kernel/DRM development process is quite unique, and not
>>> everything is fully documented. I find emails like this to be
>>> incredibly valuable and I am eager to comply with the guidelines.
>>> I just need some patience and guidance as I navigate through this.
>>> Thank you for your understanding and support.
>>>
>>> Regards,
>>> Jacek
>>>
>>>> Best regards
>>>> Thomas
>>>>
>>>> [1] https://patchwork.freedesktop.org/series/143182/
>>>> [2] https://patchwork.freedesktop.org/series/144101/
>>>>
>>>>
>>>> Am 04.02.25 um 09:46 schrieb Jacek Lawrynowicz:
>>>>> Add possibility to import single buffer into multiple contexts,
>>>>> fix locking when aborting contexts and add some debug features.
>>>>>
>>>>> Andrzej Kacprowski (2):
>>>>> accel/ivpu: Add missing locks around mmu queues
>>>>> accel/ivpu: Prevent runtime suspend during context abort work
>>>>>
>>>>> Karol Wachowski (3):
>>>>> ccel/ivpu: Add debugfs interface for setting HWS priority bands
>>>>> accel/ivpu: Add test modes to toggle clock relinquish disable
>>>>> accel/ivpu: Implement D0i2 disable test modea
>>>>>
>>>>> Tomasz Rusinowicz (1):
>>>>> accel/ivpu: Allow to import single buffer into multiple contexts
>>>>>
>>>>> drivers/accel/ivpu/ivpu_debugfs.c | 84
>>>>> +++++++++++++++++++++++++++++++
>>>>> drivers/accel/ivpu/ivpu_drv.c | 2 +-
>>>>> drivers/accel/ivpu/ivpu_drv.h | 4 ++
>>>>> drivers/accel/ivpu/ivpu_fw.c | 4 ++
>>>>> drivers/accel/ivpu/ivpu_gem.c | 43 ++++++++++++++++
>>>>> drivers/accel/ivpu/ivpu_gem.h | 1 +
>>>>> drivers/accel/ivpu/ivpu_hw.c | 31 ++++++++++++
>>>>> drivers/accel/ivpu/ivpu_hw.h | 5 ++
>>>>> drivers/accel/ivpu/ivpu_job.c | 10 +++-
>>>>> drivers/accel/ivpu/ivpu_jsm_msg.c | 29 ++++-------
>>>>> drivers/accel/ivpu/ivpu_mmu.c | 9 ++++
>>>>> 11 files changed, 202 insertions(+), 20 deletions(-)
>>>>>
>>>>> --
>>>>> 2.45.1
>>>>
>>>
>>
>
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH 0/6] accel/ivpu: Changes for 6.15 2025-02-04
2025-02-14 15:47 ` Jeffrey Hugo
@ 2025-02-17 16:53 ` Simona Vetter
0 siblings, 0 replies; 27+ messages in thread
From: Simona Vetter @ 2025-02-17 16:53 UTC (permalink / raw)
To: Jeffrey Hugo
Cc: Thomas Zimmermann, Jacek Lawrynowicz, dri-devel, oded.gabbay,
maciej.falkowski, Simona Vetter, Dave Airlie, Maxime Ripard,
maarten.lankhorst@linux.intel.com
On Fri, Feb 14, 2025 at 08:47:26AM -0700, Jeffrey Hugo wrote:
> On 2/13/2025 7:17 AM, Thomas Zimmermann wrote:
> > Hi
> >
> > Am 12.02.25 um 16:52 schrieb Jeffrey Hugo:
> > > On 2/12/2025 6:27 AM, Jacek Lawrynowicz wrote:
> > > > Hi,
> > > >
> > > > Thanks for your detailed feedback and constructive suggestions.
> > > > I appreciate this as it is not easy to learn all process details
> > > > otherwise.
> > >
> > > I echo this. At times, accel feels a bit isolated from DRM.
> >
> > Agreed, but IDK how to fix that. Although both share common code, there
> > seems little overlap driver-wise.
Thanks to Thomas for raising this. I just wanted to add that we knowingly
added accel fully aware that there's work to do here, and at first it will
be isolated.
We do have some other accel drivers now, so it would be great if teams
could review/ack across drivers. That's how we get collaboration going and
ideas for gaps in the drm core/helper infrastructure, and make this all
less lonely.
> > > > On 2/12/2025 11:20 AM, Thomas Zimmermann wrote:
> > > > > Hi,
> > > > >
> > > > > here's a complaint about the lack of process and
> > > > > documentation in accel/, and ivpu specifically. I came
> > > > > across this series while preparing the weekly PR for
> > > > > drm-misc-next and found myself unable to extract much useful
> > > > > information to report. This is a problem for a development
> > > > > process that relies on transparency, accountability and
> > > > > collaboration. Other problematic examples are at [1] and
> > > > > [2]. IIRC I had similar issues in previous development
> > > > > cycles.
> > > > >
> > > > > I cannot assess the quality of the code itself, but the
> > > > > process and documentation involved does not meet the
> > > > > requirements.
> > > > >
> > > > > - 'Changes for <version>' is not an meaningful description
> > > > > for a patch series. It's not the submitter (or anyone else)
> > > > > deciding that this series gets merged into version
> > > > > so-and-so. The series gets merged when it is ready to be
> > > > > merged.
> > > > >
> > > > > - Apparently this series contains 3 different things (buffer
> > > > > imports, locking, debugging); so it should be 3 series with
> > > > > each addressing one of these topics.
> > > > >
> > > > > - The series' description just restates the patch
> > > > > descriptions briefly. It should rather give some indication
> > > > > of the problem being solved by the contained patches, and
> > > > > context on why this is worth solving. (I know that this is
> > > > > often complicated to state clearly to outsiders.)
> > > >
> > > > We were sometimes using patchsets to bundle patches that were
> > > > tested together. We apologize for any confusion this may have
> > > > caused, as we were not aware that this approach was not
> > > > preferred. Moving forward, we will ensure that patches are split
> > > > into separate series, each addressing a specific topic. I hope
> > > > this will help improve clarity and make it easier to understand
> > > > and assess the changes.
> > > >
> > > > > - Review should be public. I understand that it's often only
> > > > > one dev team working on a specific driver, discussing issues
> > > > > internally. Still it makes sense to do the code reviews in
> > > > > public, so that others can follow what is going on in the
> > > > > driver. Public code reviews are also necessary to establish
> > > > > consent and institutional knowledge within the wider
> > > > > developer community. You miss that with internal reviews.
> > > > >
> > > > > - These patches come with R-b tags pre-applied. Even for
> > > > > trivial changes, R-b tags should given in public. If the
> > > > > R-bs have been given elsewhere, please include a reference
> > > > > to that location. The tags (R-b, A-b, T-b, etc) are not just
> > > > > for verifying the code itself. They also establish trust in
> > > > > the development process involving each patch; and in the
> > > > > developers involved in that process. This needs to happen in
> > > > > public to be effective.
> > > >
> > > > We value all public comments and typically wait a week for
> > > > public reviews before submitting patches, regardless of whether
> > > > an R-b tag is pre-applied. I was not aware that pre-applying R-b
> > > > tags was an issue. We we will ensure that all R-b tags are added
> > > > publicly from now on.
> > >
> > > I'll provide a counter point on the pre-applied RBs - Qualcomm has
> > > been told many times in the past decade or so to do this (GregKH
> > > comes to mind although I'm certain he is not the only one). I don't
> > > particularly like it, but we seem to have a reputation for poor
> > > quality in the community, and it would appear that the first step to
> > > mitigating that is to indicate that we have actually done internal
> > > reviews. We've been warned that the next step is requiring a
> > > "community approved" developer to SOB everything. I hope to avoid
> > > that.
> > >
> > > Personally, I value community given RBs for maillist patches over
> > > internal ones and will typically wait/seek them unless the change is
> > > very trivial. I can't speak for The Intel/AMD/Habana folks although
> > > I suspect they will concur with this but I lurk on IRC and of course
> > > you have my email address. Please feel free to reach out with any
> > > feedback. I would hope that we can learn and improve without
> > > annoying the community to the point that the community feels
> > > frustrated and suggests drastic action.
> >
> > I'd disagree with GregKH here, but him saying this is like having an
> > 'official' statement for what to do. But I don't think other DRM driver
> > teams pre-apply R-bs. If a patch got an R-b from an internal review,
> > maybe briefly mention it in the cover letter. At least it's clear then.
>
> This seems like a good idea. I will incorporate it.
Yup, drm/dri-devel does fundamentally disagree with Greg KH and many other
maintainers in the kernel - we _want_ the messy internal discussion in
public, if at all possible, because that often allows us to catch issues
earlier. And it's also much easier to collaborate across drivers and
companies if you only have a draft hack and not yet the fully polished
implementation.
And as I've mentioned above, we now have another smaller accel driver with
amd's, so it feels like a good time to start pushing for that.
Cheers, Sima
>
> -Jeff
>
> >
> > Best regards
> > Thomas
> >
> > >
> > > To Jacek, I'm hoping to be more responsive to reviewing your patches
> > > now that we are out of the holidays and other things have settled
> > > down again. I'm sorry if you've felt ignored.
> > >
> > > > > - The kernel's (or any FOSS') development is organized
> > > > > around individuals, not organizations. Having each developer
> > > > > send their changes individually would likely resolve most of
> > > > > the current problems.
> > > > OK, I'll talk to the team about this.
> > > >
> > > > > I understand that accel is not graphics and can feel
> > > > > somewhat detached from the rest of DRM. Yet it is part of
> > > > > the DRM subsystem. This development cycles' ivpu series'
> > > > > made me go to IRC and ask for accel/ to be removed from the
> > > > > drm-misc tree. Luckily the other maintainer were more
> > > > > charitable. So I make these remarks in good faith and hope
> > > > > that we can improve the processes within accel/.
> > > >
> > > > I appreciate your feedback and would welcome more remarks.
> > > > Please keep in mind that all accel drivers are new, and it takes
> > > > time to learn all the upstream rules.
> > > > The kernel/DRM development process is quite unique, and not
> > > > everything is fully documented. I find emails like this to be
> > > > incredibly valuable and I am eager to comply with the
> > > > guidelines.
> > > > I just need some patience and guidance as I navigate through
> > > > this. Thank you for your understanding and support.
> > > >
> > > > Regards,
> > > > Jacek
> > > >
> > > > > Best regards
> > > > > Thomas
> > > > >
> > > > > [1] https://patchwork.freedesktop.org/series/143182/
> > > > > [2] https://patchwork.freedesktop.org/series/144101/
> > > > >
> > > > >
> > > > > Am 04.02.25 um 09:46 schrieb Jacek Lawrynowicz:
> > > > > > Add possibility to import single buffer into multiple contexts,
> > > > > > fix locking when aborting contexts and add some debug features.
> > > > > >
> > > > > > Andrzej Kacprowski (2):
> > > > > > accel/ivpu: Add missing locks around mmu queues
> > > > > > accel/ivpu: Prevent runtime suspend during context abort work
> > > > > >
> > > > > > Karol Wachowski (3):
> > > > > > ccel/ivpu: Add debugfs interface for setting HWS priority bands
> > > > > > accel/ivpu: Add test modes to toggle clock relinquish disable
> > > > > > accel/ivpu: Implement D0i2 disable test modea
> > > > > >
> > > > > > Tomasz Rusinowicz (1):
> > > > > > accel/ivpu: Allow to import single buffer into multiple contexts
> > > > > >
> > > > > > drivers/accel/ivpu/ivpu_debugfs.c | 84
> > > > > > +++++++++++++++++++++++++++++++
> > > > > > drivers/accel/ivpu/ivpu_drv.c | 2 +-
> > > > > > drivers/accel/ivpu/ivpu_drv.h | 4 ++
> > > > > > drivers/accel/ivpu/ivpu_fw.c | 4 ++
> > > > > > drivers/accel/ivpu/ivpu_gem.c | 43 ++++++++++++++++
> > > > > > drivers/accel/ivpu/ivpu_gem.h | 1 +
> > > > > > drivers/accel/ivpu/ivpu_hw.c | 31 ++++++++++++
> > > > > > drivers/accel/ivpu/ivpu_hw.h | 5 ++
> > > > > > drivers/accel/ivpu/ivpu_job.c | 10 +++-
> > > > > > drivers/accel/ivpu/ivpu_jsm_msg.c | 29 ++++-------
> > > > > > drivers/accel/ivpu/ivpu_mmu.c | 9 ++++
> > > > > > 11 files changed, 202 insertions(+), 20 deletions(-)
> > > > > >
> > > > > > --
> > > > > > 2.45.1
> > > > >
> > > >
> > >
> >
>
--
Simona Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH 0/6] accel/ivpu: Changes for 6.15 2025-02-04
2025-02-12 13:27 ` Jacek Lawrynowicz
2025-02-12 15:52 ` Jeffrey Hugo
@ 2025-02-13 14:06 ` Thomas Zimmermann
1 sibling, 0 replies; 27+ messages in thread
From: Thomas Zimmermann @ 2025-02-13 14:06 UTC (permalink / raw)
To: Jacek Lawrynowicz, dri-devel
Cc: oded.gabbay, quic_jhugo, maciej.falkowski, Simona Vetter,
Dave Airlie, Maxime Ripard, maarten.lankhorst@linux.intel.com
Hi
Am 12.02.25 um 14:27 schrieb Jacek Lawrynowicz:
> Hi,
>
> Thanks for your detailed feedback and constructive suggestions. I appreciate this as it is not easy to learn all process details otherwise.
>
> On 2/12/2025 11:20 AM, Thomas Zimmermann wrote:
>> Hi,
>>
>> here's a complaint about the lack of process and documentation in accel/, and ivpu specifically. I came across this series while preparing the weekly PR for drm-misc-next and found myself unable to extract much useful information to report. This is a problem for a development process that relies on transparency, accountability and collaboration. Other problematic examples are at [1] and [2]. IIRC I had similar issues in previous development cycles.
>>
>> I cannot assess the quality of the code itself, but the process and documentation involved does not meet the requirements.
>>
>> - 'Changes for <version>' is not an meaningful description for a patch series. It's not the submitter (or anyone else) deciding that this series gets merged into version so-and-so. The series gets merged when it is ready to be merged.
>>
>> - Apparently this series contains 3 different things (buffer imports, locking, debugging); so it should be 3 series with each addressing one of these topics.
>>
>> - The series' description just restates the patch descriptions briefly. It should rather give some indication of the problem being solved by the contained patches, and context on why this is worth solving. (I know that this is often complicated to state clearly to outsiders.)
> We were sometimes using patchsets to bundle patches that were tested together. We apologize for any confusion this may have caused, as we were not aware that this approach was not preferred. Moving forward, we will ensure that patches are split into separate series, each addressing a specific topic. I hope this will help improve clarity and make it easier to understand and assess the changes.
Thank you.
>
>> - Review should be public. I understand that it's often only one dev team working on a specific driver, discussing issues internally. Still it makes sense to do the code reviews in public, so that others can follow what is going on in the driver. Public code reviews are also necessary to establish consent and institutional knowledge within the wider developer community. You miss that with internal reviews.
>>
>> - These patches come with R-b tags pre-applied. Even for trivial changes, R-b tags should given in public. If the R-bs have been given elsewhere, please include a reference to that location. The tags (R-b, A-b, T-b, etc) are not just for verifying the code itself. They also establish trust in the development process involving each patch; and in the developers involved in that process. This needs to happen in public to be effective.
> We value all public comments and typically wait a week for public reviews before submitting patches, regardless of whether an R-b tag is pre-applied. I was not aware that pre-applying R-b tags was an issue. We we will ensure that all R-b tags are added publicly from now on.
>
>> - The kernel's (or any FOSS') development is organized around individuals, not organizations. Having each developer send their changes individually would likely resolve most of the current problems.
> OK, I'll talk to the team about this.
Thanks again.
>
>> I understand that accel is not graphics and can feel somewhat detached from the rest of DRM. Yet it is part of the DRM subsystem. This development cycles' ivpu series' made me go to IRC and ask for accel/ to be removed from the drm-misc tree. Luckily the other maintainer were more charitable. So I make these remarks in good faith and hope that we can improve the processes within accel/.
> I appreciate your feedback and would welcome more remarks. Please keep in mind that all accel drivers are new, and it takes time to learn all the upstream rules.
> The kernel/DRM development process is quite unique, and not everything is fully documented. I find emails like this to be incredibly valuable and I am eager to comply with the guidelines.
> I just need some patience and guidance as I navigate through this. Thank you for your understanding and support.
Remember, you DO have a say in these guidelines. Those rules come from
what works best for everyone; not only what maintainers say. It's just
that now it doesn't work too well for accel/.
Best regards
Thomas
>
> Regards,
> Jacek
>
>> Best regards
>> Thomas
>>
>> [1] https://patchwork.freedesktop.org/series/143182/
>> [2] https://patchwork.freedesktop.org/series/144101/
>>
>>
>> Am 04.02.25 um 09:46 schrieb Jacek Lawrynowicz:
>>> Add possibility to import single buffer into multiple contexts,
>>> fix locking when aborting contexts and add some debug features.
>>>
>>> Andrzej Kacprowski (2):
>>> accel/ivpu: Add missing locks around mmu queues
>>> accel/ivpu: Prevent runtime suspend during context abort work
>>>
>>> Karol Wachowski (3):
>>> ccel/ivpu: Add debugfs interface for setting HWS priority bands
>>> accel/ivpu: Add test modes to toggle clock relinquish disable
>>> accel/ivpu: Implement D0i2 disable test modea
>>>
>>> Tomasz Rusinowicz (1):
>>> accel/ivpu: Allow to import single buffer into multiple contexts
>>>
>>> drivers/accel/ivpu/ivpu_debugfs.c | 84 +++++++++++++++++++++++++++++++
>>> drivers/accel/ivpu/ivpu_drv.c | 2 +-
>>> drivers/accel/ivpu/ivpu_drv.h | 4 ++
>>> drivers/accel/ivpu/ivpu_fw.c | 4 ++
>>> drivers/accel/ivpu/ivpu_gem.c | 43 ++++++++++++++++
>>> drivers/accel/ivpu/ivpu_gem.h | 1 +
>>> drivers/accel/ivpu/ivpu_hw.c | 31 ++++++++++++
>>> drivers/accel/ivpu/ivpu_hw.h | 5 ++
>>> drivers/accel/ivpu/ivpu_job.c | 10 +++-
>>> drivers/accel/ivpu/ivpu_jsm_msg.c | 29 ++++-------
>>> drivers/accel/ivpu/ivpu_mmu.c | 9 ++++
>>> 11 files changed, 202 insertions(+), 20 deletions(-)
>>>
>>> --
>>> 2.45.1
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)
^ permalink raw reply [flat|nested] 27+ messages in thread