mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
- Fix double display mutex initializations
- Fix u32 -> u64 implicit conversions - Fix RING_CONTEXT_CONTROL not marked as masked -----BEGIN PGP SIGNATURE----- iQJNBAABCAA3FiEE6rM8lpABPHM5FqyDm6KlpjDL6lMFAmYYHaoZHGx1Y2FzLmRl bWFyY2hpQGludGVsLmNvbQAKCRCboqWmMMvqU3hzEACbLb74pHI9eGtSUaQ2nhxQ v2H0xmwPuJCki5hQ3ohxQtfO0CLclJQzA1zIjtTo0Z0m4ZeMO2RrcvCDpDLnrvGE KhrXYvxcleTXEOdYcLnXnZQyEcDUuHFi62SJjPz6b0I9bNr4INJ2bfRtzjb5pav2 7RaJbhPJB9cYUoPG08CP3N5pWR9WtIKFpI1b4eJfe5Kwl6+kbjcycjQB13Fn7DUl QaIv8vfdCEJQUKvRO1aydwPdvi0hneGyeQw0uFbu3JcK8IUbb6uia2OUnAxqi8VB G+RWcd94XSUsK4aDppiRk1LEoeMfQxZP0q3gLKTk0q7IEGzt6SfC8qVq56xpTZWZ Tn8zgtxtmWmNidLKFpcPeHWSghTIlVTI27rdJvLWzDYrvNtEW56sLHpdPDOnuMf3 pS802xMrBAIcw30vEFadW3/+2niOkmdmHbChwp0dEHGY8hvmYbrecYa34jA/HTD/ XuQ/YOHRwPjVoC4zW7rOXaJPtKeIDMsMPXFajnynbBxl4wdZYIm7lgnxAKF53D/t GDKp52A1TgSKcywx5r6Fq6L/E3O4OlJ9P8OeQ6lT0Q3sAkFurqBhnUF53EDqsRLB AtkK/92Yu+yZjKFmdOmEAIbhkV945FMJI+4hH+t6DoqzdqA3Sxep0axHOpBiVyAn hLllZlHl6pd5N0IVPboeag== =X8OJ -----END PGP SIGNATURE----- Merge tag 'drm-xe-fixes-2024-04-11' of https://gitlab.freedesktop.org/drm/xe/kernel into drm-fixes - Fix double display mutex initializations - Fix u32 -> u64 implicit conversions - Fix RING_CONTEXT_CONTROL not marked as masked Signed-off-by: Dave Airlie <airlied@redhat.com> From: Lucas De Marchi <lucas.demarchi@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/ewvvtgcb2gonxvccws6nt6fqswoyfp4g43t5ex24vpqwtrxdzm@hgjoz5uirmxx
This commit is contained in:
commit
1bafeaf262
@ -108,11 +108,6 @@ int xe_display_create(struct xe_device *xe)
|
||||
xe->display.hotplug.dp_wq = alloc_ordered_workqueue("xe-dp", 0);
|
||||
|
||||
drmm_mutex_init(&xe->drm, &xe->sb_lock);
|
||||
drmm_mutex_init(&xe->drm, &xe->display.backlight.lock);
|
||||
drmm_mutex_init(&xe->drm, &xe->display.audio.mutex);
|
||||
drmm_mutex_init(&xe->drm, &xe->display.wm.wm_mutex);
|
||||
drmm_mutex_init(&xe->drm, &xe->display.pps.mutex);
|
||||
drmm_mutex_init(&xe->drm, &xe->display.hdcp.hdcp_mutex);
|
||||
xe->enabled_irq_mask = ~0;
|
||||
|
||||
err = drmm_add_action_or_reset(&xe->drm, display_destroy, NULL);
|
||||
|
@ -125,7 +125,7 @@
|
||||
#define RING_EXECLIST_STATUS_LO(base) XE_REG((base) + 0x234)
|
||||
#define RING_EXECLIST_STATUS_HI(base) XE_REG((base) + 0x234 + 4)
|
||||
|
||||
#define RING_CONTEXT_CONTROL(base) XE_REG((base) + 0x244)
|
||||
#define RING_CONTEXT_CONTROL(base) XE_REG((base) + 0x244, XE_REG_OPTION_MASKED)
|
||||
#define CTX_CTRL_INHIBIT_SYN_CTX_SWITCH REG_BIT(3)
|
||||
#define CTX_CTRL_ENGINE_CTX_RESTORE_INHIBIT REG_BIT(0)
|
||||
|
||||
|
@ -290,7 +290,7 @@ xe_hwmon_power1_max_interval_show(struct device *dev, struct device_attribute *a
|
||||
* As y can be < 2, we compute tau4 = (4 | x) << y
|
||||
* and then add 2 when doing the final right shift to account for units
|
||||
*/
|
||||
tau4 = ((1 << x_w) | x) << y;
|
||||
tau4 = (u64)((1 << x_w) | x) << y;
|
||||
|
||||
/* val in hwmon interface units (millisec) */
|
||||
out = mul_u64_u32_shr(tau4, SF_TIME, hwmon->scl_shift_time + x_w);
|
||||
@ -330,7 +330,7 @@ xe_hwmon_power1_max_interval_store(struct device *dev, struct device_attribute *
|
||||
r = FIELD_PREP(PKG_MAX_WIN, PKG_MAX_WIN_DEFAULT);
|
||||
x = REG_FIELD_GET(PKG_MAX_WIN_X, r);
|
||||
y = REG_FIELD_GET(PKG_MAX_WIN_Y, r);
|
||||
tau4 = ((1 << x_w) | x) << y;
|
||||
tau4 = (u64)((1 << x_w) | x) << y;
|
||||
max_win = mul_u64_u32_shr(tau4, SF_TIME, hwmon->scl_shift_time + x_w);
|
||||
|
||||
if (val > max_win)
|
||||
|
@ -525,9 +525,8 @@ static const u8 *reg_offsets(struct xe_device *xe, enum xe_engine_class class)
|
||||
|
||||
static void set_context_control(u32 *regs, struct xe_hw_engine *hwe)
|
||||
{
|
||||
regs[CTX_CONTEXT_CONTROL] = _MASKED_BIT_ENABLE(CTX_CTRL_INHIBIT_SYN_CTX_SWITCH) |
|
||||
_MASKED_BIT_DISABLE(CTX_CTRL_ENGINE_CTX_RESTORE_INHIBIT) |
|
||||
CTX_CTRL_ENGINE_CTX_RESTORE_INHIBIT;
|
||||
regs[CTX_CONTEXT_CONTROL] = _MASKED_BIT_ENABLE(CTX_CTRL_INHIBIT_SYN_CTX_SWITCH |
|
||||
CTX_CTRL_ENGINE_CTX_RESTORE_INHIBIT);
|
||||
|
||||
/* TODO: Timestamp */
|
||||
}
|
||||
|
@ -227,7 +227,7 @@ static int xe_migrate_prepare_vm(struct xe_tile *tile, struct xe_migrate *m,
|
||||
if (vm->flags & XE_VM_FLAG_64K && level == 1)
|
||||
flags = XE_PDE_64K;
|
||||
|
||||
entry = vm->pt_ops->pde_encode_bo(bo, map_ofs + (level - 1) *
|
||||
entry = vm->pt_ops->pde_encode_bo(bo, map_ofs + (u64)(level - 1) *
|
||||
XE_PAGE_SIZE, pat_index);
|
||||
xe_map_wr(xe, &bo->vmap, map_ofs + XE_PAGE_SIZE * level, u64,
|
||||
entry | flags);
|
||||
@ -235,7 +235,7 @@ static int xe_migrate_prepare_vm(struct xe_tile *tile, struct xe_migrate *m,
|
||||
|
||||
/* Write PDE's that point to our BO. */
|
||||
for (i = 0; i < num_entries - num_level; i++) {
|
||||
entry = vm->pt_ops->pde_encode_bo(bo, i * XE_PAGE_SIZE,
|
||||
entry = vm->pt_ops->pde_encode_bo(bo, (u64)i * XE_PAGE_SIZE,
|
||||
pat_index);
|
||||
|
||||
xe_map_wr(xe, &bo->vmap, map_ofs + XE_PAGE_SIZE +
|
||||
@ -291,7 +291,7 @@ static int xe_migrate_prepare_vm(struct xe_tile *tile, struct xe_migrate *m,
|
||||
#define VM_SA_UPDATE_UNIT_SIZE (XE_PAGE_SIZE / NUM_VMUSA_UNIT_PER_PAGE)
|
||||
#define NUM_VMUSA_WRITES_PER_UNIT (VM_SA_UPDATE_UNIT_SIZE / sizeof(u64))
|
||||
drm_suballoc_manager_init(&m->vm_update_sa,
|
||||
(map_ofs / XE_PAGE_SIZE - NUM_KERNEL_PDE) *
|
||||
(size_t)(map_ofs / XE_PAGE_SIZE - NUM_KERNEL_PDE) *
|
||||
NUM_VMUSA_UNIT_PER_PAGE, 0);
|
||||
|
||||
m->pt_bo = bo;
|
||||
@ -490,7 +490,7 @@ static void emit_pte(struct xe_migrate *m,
|
||||
struct xe_vm *vm = m->q->vm;
|
||||
u16 pat_index;
|
||||
u32 ptes;
|
||||
u64 ofs = at_pt * XE_PAGE_SIZE;
|
||||
u64 ofs = (u64)at_pt * XE_PAGE_SIZE;
|
||||
u64 cur_ofs;
|
||||
|
||||
/* Indirect access needs compression enabled uncached PAT index */
|
||||
|
Loading…
Reference in New Issue
Block a user