sync code with last improvements from OpenBSD
This commit is contained in:
parent
cb73df2d98
commit
e4e1b9f314
26 changed files with 382 additions and 253 deletions
|
@ -900,12 +900,17 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
|
|||
struct atom_context *atom_context;
|
||||
|
||||
atom_context = adev->mode_info.atom_context;
|
||||
memcpy(vbios_info.name, atom_context->name, sizeof(atom_context->name));
|
||||
memcpy(vbios_info.vbios_pn, atom_context->vbios_pn, sizeof(atom_context->vbios_pn));
|
||||
vbios_info.version = atom_context->version;
|
||||
memcpy(vbios_info.vbios_ver_str, atom_context->vbios_ver_str,
|
||||
sizeof(atom_context->vbios_ver_str));
|
||||
memcpy(vbios_info.date, atom_context->date, sizeof(atom_context->date));
|
||||
if (atom_context) {
|
||||
memcpy(vbios_info.name, atom_context->name,
|
||||
sizeof(atom_context->name));
|
||||
memcpy(vbios_info.vbios_pn, atom_context->vbios_pn,
|
||||
sizeof(atom_context->vbios_pn));
|
||||
vbios_info.version = atom_context->version;
|
||||
memcpy(vbios_info.vbios_ver_str, atom_context->vbios_ver_str,
|
||||
sizeof(atom_context->vbios_ver_str));
|
||||
memcpy(vbios_info.date, atom_context->date,
|
||||
sizeof(atom_context->date));
|
||||
}
|
||||
|
||||
return copy_to_user(out, &vbios_info,
|
||||
min((size_t)size, sizeof(vbios_info))) ? -EFAULT : 0;
|
||||
|
|
|
@ -344,6 +344,9 @@ static void nbio_v4_3_init_registers(struct amdgpu_device *adev)
|
|||
data &= ~RCC_DEV0_EPF2_STRAP2__STRAP_NO_SOFT_RESET_DEV0_F2_MASK;
|
||||
WREG32_SOC15(NBIO, 0, regRCC_DEV0_EPF2_STRAP2, data);
|
||||
}
|
||||
if (amdgpu_sriov_vf(adev))
|
||||
adev->rmmio_remap.reg_offset = SOC15_REG_OFFSET(NBIO, 0,
|
||||
regBIF_BX_DEV0_EPF0_VF0_HDP_MEM_COHERENCY_FLUSH_CNTL) << 2;
|
||||
}
|
||||
|
||||
static u32 nbio_v4_3_get_rom_offset(struct amdgpu_device *adev)
|
||||
|
|
|
@ -755,7 +755,7 @@ static int soc21_common_hw_init(void *handle)
|
|||
* for the purpose of expose those registers
|
||||
* to process space
|
||||
*/
|
||||
if (adev->nbio.funcs->remap_hdp_registers)
|
||||
if (adev->nbio.funcs->remap_hdp_registers && !amdgpu_sriov_vf(adev))
|
||||
adev->nbio.funcs->remap_hdp_registers(adev);
|
||||
/* enable the doorbell aperture */
|
||||
soc21_enable_doorbell_aperture(adev, true);
|
||||
|
|
|
@ -201,7 +201,7 @@ static int add_queue_mes(struct device_queue_manager *dqm, struct queue *q,
|
|||
|
||||
if (q->wptr_bo) {
|
||||
wptr_addr_off = (uint64_t)q->properties.write_ptr & (PAGE_SIZE - 1);
|
||||
queue_input.wptr_mc_addr = ((uint64_t)q->wptr_bo->tbo.resource->start << PAGE_SHIFT) + wptr_addr_off;
|
||||
queue_input.wptr_mc_addr = amdgpu_bo_gpu_offset(q->wptr_bo) + wptr_addr_off;
|
||||
}
|
||||
|
||||
queue_input.is_kfd_process = 1;
|
||||
|
|
|
@ -1349,9 +1349,8 @@ void kfd_flush_tlb(struct kfd_process_device *pdd, enum TLB_FLUSH_TYPE type);
|
|||
|
||||
static inline bool kfd_flush_tlb_after_unmap(struct kfd_dev *dev)
|
||||
{
|
||||
return KFD_GC_VERSION(dev) == IP_VERSION(9, 4, 2) ||
|
||||
(KFD_GC_VERSION(dev) == IP_VERSION(9, 4, 1) &&
|
||||
dev->adev->sdma.instance[0].fw_version >= 18) ||
|
||||
return KFD_GC_VERSION(dev) > IP_VERSION(9, 4, 2) ||
|
||||
(KFD_GC_VERSION(dev) == IP_VERSION(9, 4, 1) && dev->sdma_fw_version >= 18) ||
|
||||
KFD_GC_VERSION(dev) == IP_VERSION(9, 4, 0);
|
||||
}
|
||||
|
||||
|
|
|
@ -973,7 +973,9 @@ void dce110_edp_backlight_control(
|
|||
return;
|
||||
}
|
||||
|
||||
if (link->panel_cntl) {
|
||||
if (link->panel_cntl && !(link->dpcd_sink_ext_caps.bits.oled ||
|
||||
link->dpcd_sink_ext_caps.bits.hdr_aux_backlight_control == 1 ||
|
||||
link->dpcd_sink_ext_caps.bits.sdr_aux_backlight_control == 1)) {
|
||||
bool is_backlight_on = link->panel_cntl->funcs->is_panel_backlight_on(link->panel_cntl);
|
||||
|
||||
if ((enable && is_backlight_on) || (!enable && !is_backlight_on)) {
|
||||
|
|
|
@ -541,7 +541,6 @@ static int intel_engine_setup(struct intel_gt *gt, enum intel_engine_id id,
|
|||
DRIVER_CAPS(i915)->has_logical_contexts = true;
|
||||
|
||||
ewma__engine_latency_init(&engine->latency);
|
||||
seqcount_init(&engine->stats.execlists.lock);
|
||||
|
||||
ATOMIC_INIT_NOTIFIER_HEAD(&engine->context_status_notifier);
|
||||
|
||||
|
|
|
@ -3558,6 +3558,8 @@ int intel_execlists_submission_setup(struct intel_engine_cs *engine)
|
|||
logical_ring_default_vfuncs(engine);
|
||||
logical_ring_default_irqs(engine);
|
||||
|
||||
seqcount_init(&engine->stats.execlists.lock);
|
||||
|
||||
if (engine->flags & I915_ENGINE_HAS_RCS_REG_STATE)
|
||||
rcs_submission_override(engine);
|
||||
|
||||
|
|
|
@ -529,20 +529,31 @@ void intel_ggtt_unbind_vma(struct i915_address_space *vm,
|
|||
vm->clear_range(vm, vma_res->start, vma_res->vma_size);
|
||||
}
|
||||
|
||||
/*
|
||||
* Reserve the top of the GuC address space for firmware images. Addresses
|
||||
* beyond GUC_GGTT_TOP in the GuC address space are inaccessible by GuC,
|
||||
* which makes for a suitable range to hold GuC/HuC firmware images if the
|
||||
* size of the GGTT is 4G. However, on a 32-bit platform the size of the GGTT
|
||||
* is limited to 2G, which is less than GUC_GGTT_TOP, but we reserve a chunk
|
||||
* of the same size anyway, which is far more than needed, to keep the logic
|
||||
* in uc_fw_ggtt_offset() simple.
|
||||
*/
|
||||
#define GUC_TOP_RESERVE_SIZE (SZ_4G - GUC_GGTT_TOP)
|
||||
|
||||
static int ggtt_reserve_guc_top(struct i915_ggtt *ggtt)
|
||||
{
|
||||
u64 size;
|
||||
u64 offset;
|
||||
int ret;
|
||||
|
||||
if (!intel_uc_uses_guc(&ggtt->vm.gt->uc))
|
||||
return 0;
|
||||
|
||||
GEM_BUG_ON(ggtt->vm.total <= GUC_GGTT_TOP);
|
||||
size = ggtt->vm.total - GUC_GGTT_TOP;
|
||||
GEM_BUG_ON(ggtt->vm.total <= GUC_TOP_RESERVE_SIZE);
|
||||
offset = ggtt->vm.total - GUC_TOP_RESERVE_SIZE;
|
||||
|
||||
ret = i915_gem_gtt_reserve(&ggtt->vm, NULL, &ggtt->uc_fw, size,
|
||||
GUC_GGTT_TOP, I915_COLOR_UNEVICTABLE,
|
||||
PIN_NOEVICT);
|
||||
ret = i915_gem_gtt_reserve(&ggtt->vm, NULL, &ggtt->uc_fw,
|
||||
GUC_TOP_RESERVE_SIZE, offset,
|
||||
I915_COLOR_UNEVICTABLE, PIN_NOEVICT);
|
||||
if (ret)
|
||||
drm_dbg(&ggtt->vm.i915->drm,
|
||||
"Failed to reserve top of GGTT for GuC\n");
|
||||
|
|
|
@ -3,21 +3,22 @@
|
|||
#ifndef _LINUX_SIZES_H
|
||||
#define _LINUX_SIZES_H
|
||||
|
||||
#define SZ_1K (1024 * 1)
|
||||
#define SZ_2K (1024 * 2)
|
||||
#define SZ_4K (1024 * 4)
|
||||
#define SZ_8K (1024 * 8)
|
||||
#define SZ_16K (1024 * 16)
|
||||
#define SZ_32K (1024 * 32)
|
||||
#define SZ_64K (1024 * 64)
|
||||
#define SZ_128K (1024 * 128)
|
||||
#define SZ_256K (1024 * 256)
|
||||
#define SZ_512K (1024 * 512)
|
||||
#define SZ_1M (1024 * 1024 * 1)
|
||||
#define SZ_2M (1024 * 1024 * 2)
|
||||
#define SZ_4M (1024 * 1024 * 4)
|
||||
#define SZ_8M (1024 * 1024 * 8)
|
||||
#define SZ_16M (1024 * 1024 * 16)
|
||||
#define SZ_1G (1024 * 1024 * 1024 * 1)
|
||||
#define SZ_1K (1 << 10)
|
||||
#define SZ_2K (2 << 10)
|
||||
#define SZ_4K (4 << 10)
|
||||
#define SZ_8K (8 << 10)
|
||||
#define SZ_16K (16 << 10)
|
||||
#define SZ_32K (32 << 10)
|
||||
#define SZ_64K (64 << 10)
|
||||
#define SZ_128K (128 << 10)
|
||||
#define SZ_256K (256 << 10)
|
||||
#define SZ_512K (512 << 10)
|
||||
#define SZ_1M (1 << 20)
|
||||
#define SZ_2M (2 << 20)
|
||||
#define SZ_4M (4 << 20)
|
||||
#define SZ_8M (8 << 20)
|
||||
#define SZ_16M (16 << 20)
|
||||
#define SZ_1G (1 << 30)
|
||||
#define SZ_4G (4ULL << 30)
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue