Commit 6531a2cf authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge tag 'drm-xe-next-fixes-2025-07-31' of...

Merge tag 'drm-xe-next-fixes-2025-07-31' of https://gitlab.freedesktop.org/drm/xe/kernel

 into drm-next

- Fix BMG probe on unsupported mailbox command (Raag)
- Fix OA static checker warning about null gt (Ashutosh)
- Fix a NULL vs IS_ERR() bug in xe_i2c_register_adapter (Dan)
- Fix missing unwind goto in GuC/HuC (Zhanjun)
- Don't register I2C devices if VF (Lukasz)
- Clear whole GuC g2h_fence during initialization (Michal)
- Avoid call kfree for drmm_kzalloc (Shuicheng)
- Fix pci_dev reference leak on configfs (Michal)
- SRIOV: Disable CSC support on VF (Lukasz)

Signed-off-by: default avatarDave Airlie <airlied@redhat.com>

From: Rodrigo Vivi <rodrigo.vivi@intel.com>
Link: https://lore.kernel.org/r/aIvIAANnXv-j_bNA@intel.com
parents bb9ddd99 f62408ef
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -267,7 +267,8 @@ static struct config_group *xe_config_make_device_group(struct config_group *gro

	pdev = pci_get_domain_bus_and_slot(domain, bus, PCI_DEVFN(slot, function));
	if (!pdev)
		return ERR_PTR(-EINVAL);
		return ERR_PTR(-ENODEV);
	pci_dev_put(pdev);

	dev = kzalloc(sizeof(*dev), GFP_KERNEL);
	if (!dev)
+1 −0
Original line number Diff line number Diff line
@@ -681,6 +681,7 @@ static void sriov_update_device_info(struct xe_device *xe)
	/* disable features that are not available/applicable to VFs */
	if (IS_SRIOV_VF(xe)) {
		xe->info.probe_display = 0;
		xe->info.has_heci_cscfi = 0;
		xe->info.has_heci_gscfi = 0;
		xe->info.skip_guc_pc = 1;
		xe->info.skip_pcode = 1;
+6 −1
Original line number Diff line number Diff line
@@ -160,8 +160,13 @@ static int late_bind_create_files(struct device *dev)

	ret = xe_pcode_read(root, PCODE_MBOX(PCODE_LATE_BINDING, GET_CAPABILITY_STATUS, 0),
			    &cap, NULL);
	if (ret)
	if (ret) {
		if (ret == -ENXIO) {
			drm_dbg(&xe->drm, "Late binding not supported by firmware\n");
			ret = 0;
		}
		goto out;
	}

	if (REG_FIELD_GET(V1_FAN_SUPPORTED, cap)) {
		ret = sysfs_create_file(&dev->kobj, &dev_attr_lb_fan_control_version.attr);
+1 −5
Original line number Diff line number Diff line
@@ -95,12 +95,8 @@ struct g2h_fence {

static void g2h_fence_init(struct g2h_fence *g2h_fence, u32 *response_buffer)
{
	memset(g2h_fence, 0, sizeof(*g2h_fence));
	g2h_fence->response_buffer = response_buffer;
	g2h_fence->response_data = 0;
	g2h_fence->response_len = 0;
	g2h_fence->fail = false;
	g2h_fence->retry = false;
	g2h_fence->done = false;
	g2h_fence->seqno = ~0x0;
}

+6 −22
Original line number Diff line number Diff line
@@ -75,25 +75,18 @@ int xe_hw_engine_setup_groups(struct xe_gt *gt)
	enum xe_hw_engine_id id;
	struct xe_hw_engine_group *group_rcs_ccs, *group_bcs, *group_vcs_vecs;
	struct xe_device *xe = gt_to_xe(gt);
	int err;

	group_rcs_ccs = hw_engine_group_alloc(xe);
	if (IS_ERR(group_rcs_ccs)) {
		err = PTR_ERR(group_rcs_ccs);
		goto err_group_rcs_ccs;
	}
	if (IS_ERR(group_rcs_ccs))
		return PTR_ERR(group_rcs_ccs);

	group_bcs = hw_engine_group_alloc(xe);
	if (IS_ERR(group_bcs)) {
		err = PTR_ERR(group_bcs);
		goto err_group_bcs;
	}
	if (IS_ERR(group_bcs))
		return PTR_ERR(group_bcs);

	group_vcs_vecs = hw_engine_group_alloc(xe);
	if (IS_ERR(group_vcs_vecs)) {
		err = PTR_ERR(group_vcs_vecs);
		goto err_group_vcs_vecs;
	}
	if (IS_ERR(group_vcs_vecs))
		return PTR_ERR(group_vcs_vecs);

	for_each_hw_engine(hwe, gt, id) {
		switch (hwe->class) {
@@ -116,15 +109,6 @@ int xe_hw_engine_setup_groups(struct xe_gt *gt)
	}

	return 0;

err_group_vcs_vecs:
	kfree(group_vcs_vecs);
err_group_bcs:
	kfree(group_bcs);
err_group_rcs_ccs:
	kfree(group_rcs_ccs);

	return err;
}

/**
Loading