sync code with last improvements from OpenBSD
This commit is contained in:
parent
4de47ea988
commit
f463301edc
142 changed files with 4045 additions and 1295 deletions
|
@ -1295,7 +1295,6 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev,
|
|||
void amdgpu_device_pci_config_reset(struct amdgpu_device *adev);
|
||||
int amdgpu_device_pci_reset(struct amdgpu_device *adev);
|
||||
bool amdgpu_device_need_post(struct amdgpu_device *adev);
|
||||
bool amdgpu_sg_display_supported(struct amdgpu_device *adev);
|
||||
bool amdgpu_device_pcie_dynamic_switching_supported(void);
|
||||
bool amdgpu_device_should_use_aspm(struct amdgpu_device *adev);
|
||||
bool amdgpu_device_aspm_support_quirk(void);
|
||||
|
|
|
@ -120,7 +120,6 @@ static int amdgpu_cs_p1_user_fence(struct amdgpu_cs_parser *p,
|
|||
struct drm_gem_object *gobj;
|
||||
struct amdgpu_bo *bo;
|
||||
unsigned long size;
|
||||
int r;
|
||||
|
||||
gobj = drm_gem_object_lookup(p->filp, data->handle);
|
||||
if (gobj == NULL)
|
||||
|
@ -132,23 +131,14 @@ static int amdgpu_cs_p1_user_fence(struct amdgpu_cs_parser *p,
|
|||
drm_gem_object_put(gobj);
|
||||
|
||||
size = amdgpu_bo_size(bo);
|
||||
if (size != PAGE_SIZE || (data->offset + 8) > size) {
|
||||
r = -EINVAL;
|
||||
goto error_unref;
|
||||
}
|
||||
if (size != PAGE_SIZE || data->offset > (size - 8))
|
||||
return -EINVAL;
|
||||
|
||||
if (amdgpu_ttm_tt_get_usermm(bo->tbo.ttm)) {
|
||||
r = -EINVAL;
|
||||
goto error_unref;
|
||||
}
|
||||
if (amdgpu_ttm_tt_get_usermm(bo->tbo.ttm))
|
||||
return -EINVAL;
|
||||
|
||||
*offset = data->offset;
|
||||
|
||||
return 0;
|
||||
|
||||
error_unref:
|
||||
amdgpu_bo_unref(&bo);
|
||||
return r;
|
||||
}
|
||||
|
||||
static int amdgpu_cs_p1_bo_handles(struct amdgpu_cs_parser *p,
|
||||
|
|
|
@ -1354,32 +1354,6 @@ bool amdgpu_device_need_post(struct amdgpu_device *adev)
|
|||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* On APUs with >= 64GB white flickering has been observed w/ SG enabled.
|
||||
* Disable S/G on such systems until we have a proper fix.
|
||||
* https://gitlab.freedesktop.org/drm/amd/-/issues/2354
|
||||
* https://gitlab.freedesktop.org/drm/amd/-/issues/2735
|
||||
*/
|
||||
bool amdgpu_sg_display_supported(struct amdgpu_device *adev)
|
||||
{
|
||||
switch (amdgpu_sg_display) {
|
||||
case -1:
|
||||
break;
|
||||
case 0:
|
||||
return false;
|
||||
case 1:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
if ((totalram_pages() << (PAGE_SHIFT - 10)) +
|
||||
(adev->gmc.real_vram_size / 1024) >= 64000000) {
|
||||
DRM_WARN("Disabling S/G due to >=64GB RAM\n");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* Intel hosts such as Raptor Lake and Sapphire Rapids don't support dynamic
|
||||
* speed switching. Until we have confirmation from Intel that a specific host
|
||||
|
|
|
@ -1267,11 +1267,15 @@ static void mmhub_read_system_context(struct amdgpu_device *adev, struct dc_phy_
|
|||
|
||||
pt_base = amdgpu_gmc_pd_addr(adev->gart.bo);
|
||||
|
||||
page_table_start.high_part = (u32)(adev->gmc.gart_start >> 44) & 0xF;
|
||||
page_table_start.low_part = (u32)(adev->gmc.gart_start >> 12);
|
||||
page_table_end.high_part = (u32)(adev->gmc.gart_end >> 44) & 0xF;
|
||||
page_table_end.low_part = (u32)(adev->gmc.gart_end >> 12);
|
||||
page_table_base.high_part = upper_32_bits(pt_base) & 0xF;
|
||||
page_table_start.high_part = upper_32_bits(adev->gmc.gart_start >>
|
||||
AMDGPU_GPU_PAGE_SHIFT);
|
||||
page_table_start.low_part = lower_32_bits(adev->gmc.gart_start >>
|
||||
AMDGPU_GPU_PAGE_SHIFT);
|
||||
page_table_end.high_part = upper_32_bits(adev->gmc.gart_end >>
|
||||
AMDGPU_GPU_PAGE_SHIFT);
|
||||
page_table_end.low_part = lower_32_bits(adev->gmc.gart_end >>
|
||||
AMDGPU_GPU_PAGE_SHIFT);
|
||||
page_table_base.high_part = upper_32_bits(pt_base);
|
||||
page_table_base.low_part = lower_32_bits(pt_base);
|
||||
|
||||
pa_config->system_aperture.start_addr = (uint64_t)logical_addr_low << 18;
|
||||
|
@ -1636,8 +1640,9 @@ static int amdgpu_dm_init(struct amdgpu_device *adev)
|
|||
}
|
||||
break;
|
||||
}
|
||||
if (init_data.flags.gpu_vm_support)
|
||||
init_data.flags.gpu_vm_support = amdgpu_sg_display_supported(adev);
|
||||
if (init_data.flags.gpu_vm_support &&
|
||||
(amdgpu_sg_display == 0))
|
||||
init_data.flags.gpu_vm_support = false;
|
||||
|
||||
if (init_data.flags.gpu_vm_support)
|
||||
adev->mode_info.gpu_vm_support = true;
|
||||
|
|
|
@ -290,7 +290,8 @@ static void dccg32_set_dpstreamclk(
|
|||
struct dcn_dccg *dccg_dcn = TO_DCN_DCCG(dccg);
|
||||
|
||||
/* set the dtbclk_p source */
|
||||
dccg32_set_dtbclk_p_src(dccg, src, otg_inst);
|
||||
/* always program refclk as DTBCLK. No use-case expected to require DPREFCLK as refclk */
|
||||
dccg32_set_dtbclk_p_src(dccg, DTBCLK0, otg_inst);
|
||||
|
||||
/* enabled to select one of the DTBCLKs for pipe */
|
||||
switch (dp_hpo_inst) {
|
||||
|
|
|
@ -4133,7 +4133,9 @@ void dml31_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
|
|||
}
|
||||
if (v->OutputFormat[k] == dm_420 && v->HActive[k] > DCN31_MAX_FMT_420_BUFFER_WIDTH
|
||||
&& v->ODMCombineEnablePerState[i][k] != dm_odm_combine_mode_4to1) {
|
||||
if (v->HActive[k] / 2 > DCN31_MAX_FMT_420_BUFFER_WIDTH) {
|
||||
if (v->Output[k] == dm_hdmi) {
|
||||
FMTBufferExceeded = true;
|
||||
} else if (v->HActive[k] / 2 > DCN31_MAX_FMT_420_BUFFER_WIDTH) {
|
||||
v->ODMCombineEnablePerState[i][k] = dm_odm_combine_mode_4to1;
|
||||
v->PlaneRequiredDISPCLK = v->PlaneRequiredDISPCLKWithODMCombine4To1;
|
||||
|
||||
|
|
|
@ -4225,7 +4225,9 @@ void dml314_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_
|
|||
}
|
||||
if (v->OutputFormat[k] == dm_420 && v->HActive[k] > DCN314_MAX_FMT_420_BUFFER_WIDTH
|
||||
&& v->ODMCombineEnablePerState[i][k] != dm_odm_combine_mode_4to1) {
|
||||
if (v->HActive[k] / 2 > DCN314_MAX_FMT_420_BUFFER_WIDTH) {
|
||||
if (v->Output[k] == dm_hdmi) {
|
||||
FMTBufferExceeded = true;
|
||||
} else if (v->HActive[k] / 2 > DCN314_MAX_FMT_420_BUFFER_WIDTH) {
|
||||
v->ODMCombineEnablePerState[i][k] = dm_odm_combine_mode_4to1;
|
||||
v->PlaneRequiredDISPCLK = v->PlaneRequiredDISPCLKWithODMCombine4To1;
|
||||
|
||||
|
|
|
@ -3454,6 +3454,7 @@ bool dml32_CalculatePrefetchSchedule(
|
|||
double TimeForFetchingMetaPTE = 0;
|
||||
double TimeForFetchingRowInVBlank = 0;
|
||||
double LinesToRequestPrefetchPixelData = 0;
|
||||
double LinesForPrefetchBandwidth = 0;
|
||||
unsigned int HostVMDynamicLevelsTrips;
|
||||
double trip_to_mem;
|
||||
double Tvm_trips;
|
||||
|
@ -3883,11 +3884,15 @@ bool dml32_CalculatePrefetchSchedule(
|
|||
TimeForFetchingMetaPTE = Tvm_oto;
|
||||
TimeForFetchingRowInVBlank = Tr0_oto;
|
||||
*PrefetchBandwidth = prefetch_bw_oto;
|
||||
/* Clamp to oto for bandwidth calculation */
|
||||
LinesForPrefetchBandwidth = dst_y_prefetch_oto;
|
||||
} else {
|
||||
*DestinationLinesForPrefetch = dst_y_prefetch_equ;
|
||||
TimeForFetchingMetaPTE = Tvm_equ;
|
||||
TimeForFetchingRowInVBlank = Tr0_equ;
|
||||
*PrefetchBandwidth = prefetch_bw_equ;
|
||||
/* Clamp to equ for bandwidth calculation */
|
||||
LinesForPrefetchBandwidth = dst_y_prefetch_equ;
|
||||
}
|
||||
|
||||
*DestinationLinesToRequestVMInVBlank = dml_ceil(4.0 * TimeForFetchingMetaPTE / LineTime, 1.0) / 4.0;
|
||||
|
@ -3895,7 +3900,7 @@ bool dml32_CalculatePrefetchSchedule(
|
|||
*DestinationLinesToRequestRowInVBlank =
|
||||
dml_ceil(4.0 * TimeForFetchingRowInVBlank / LineTime, 1.0) / 4.0;
|
||||
|
||||
LinesToRequestPrefetchPixelData = *DestinationLinesForPrefetch -
|
||||
LinesToRequestPrefetchPixelData = LinesForPrefetchBandwidth -
|
||||
*DestinationLinesToRequestVMInVBlank - 2 * *DestinationLinesToRequestRowInVBlank;
|
||||
|
||||
#ifdef __DML_VBA_DEBUG__
|
||||
|
|
|
@ -231,6 +231,7 @@ static const struct edid_quirk {
|
|||
|
||||
/* OSVR HDK and HDK2 VR Headsets */
|
||||
EDID_QUIRK('S', 'V', 'R', 0x1019, EDID_QUIRK_NON_DESKTOP),
|
||||
EDID_QUIRK('A', 'U', 'O', 0x1111, EDID_QUIRK_NON_DESKTOP),
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: mbg.c,v 1.34 2023/04/10 04:21:20 jsg Exp $ */
|
||||
/* $OpenBSD: mbg.c,v 1.35 2023/09/25 15:38:46 deraadt Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2006, 2007 Marc Balmer <mbalmer@openbsd.org>
|
||||
|
@ -160,7 +160,8 @@ const struct pci_matchid mbg_devices[] = {
|
|||
{ PCI_VENDOR_MEINBERG, PCI_PRODUCT_MEINBERG_PCI32 },
|
||||
{ PCI_VENDOR_MEINBERG, PCI_PRODUCT_MEINBERG_PCI509 },
|
||||
{ PCI_VENDOR_MEINBERG, PCI_PRODUCT_MEINBERG_PCI511 },
|
||||
{ PCI_VENDOR_MEINBERG, PCI_PRODUCT_MEINBERG_PEX511 }
|
||||
{ PCI_VENDOR_MEINBERG, PCI_PRODUCT_MEINBERG_PEX511 },
|
||||
{ PCI_VENDOR_MEINBERG, PCI_PRODUCT_MEINBERG_PZF180PEX }
|
||||
};
|
||||
|
||||
int
|
||||
|
@ -246,6 +247,7 @@ mbg_attach(struct device *parent, struct device *self, void *aux)
|
|||
sensor_task_register(sc, mbg_task, 10);
|
||||
break;
|
||||
case PCI_PRODUCT_MEINBERG_GPS170PCI:
|
||||
case PCI_PRODUCT_MEINBERG_PZF180PEX:
|
||||
t_trust = 4 * 24 * 60 * 60; /* four days */
|
||||
sc->sc_read = mbg_read_asic;
|
||||
sensor_task_register(sc, mbg_task_hr, 1);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
$OpenBSD: pcidevs,v 1.2050 2023/09/07 02:11:26 daniel Exp $
|
||||
$OpenBSD: pcidevs,v 1.2051 2023/09/25 15:37:36 deraadt Exp $
|
||||
/* $NetBSD: pcidevs,v 1.30 1997/06/24 06:20:24 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
|
@ -7305,6 +7305,7 @@ product MEINBERG PCI32 0x0101 PCI32
|
|||
product MEINBERG PCI509 0x0102 PCI509
|
||||
product MEINBERG PCI511 0x0104 PCI511
|
||||
product MEINBERG PEX511 0x0105 PEX511
|
||||
product MEINBERG PZF180PEX 0x0106 PZF180PEX
|
||||
product MEINBERG GPS170PCI 0x0204 GPS170PCI
|
||||
|
||||
/* Mellanox */
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT.
|
||||
*
|
||||
* generated from:
|
||||
* OpenBSD: pcidevs,v 1.2049 2023/09/07 01:41:09 jsg Exp
|
||||
* OpenBSD: pcidevs,v 1.2051 2023/09/25 15:37:36 deraadt Exp
|
||||
*/
|
||||
/* $NetBSD: pcidevs,v 1.30 1997/06/24 06:20:24 thorpej Exp $ */
|
||||
|
||||
|
@ -7310,6 +7310,7 @@
|
|||
#define PCI_PRODUCT_MEINBERG_PCI509 0x0102 /* PCI509 */
|
||||
#define PCI_PRODUCT_MEINBERG_PCI511 0x0104 /* PCI511 */
|
||||
#define PCI_PRODUCT_MEINBERG_PEX511 0x0105 /* PEX511 */
|
||||
#define PCI_PRODUCT_MEINBERG_PZF180PEX 0x0106 /* PZF180PEX */
|
||||
#define PCI_PRODUCT_MEINBERG_GPS170PCI 0x0204 /* GPS170PCI */
|
||||
|
||||
/* Mellanox */
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT.
|
||||
*
|
||||
* generated from:
|
||||
* OpenBSD: pcidevs,v 1.2049 2023/09/07 01:41:09 jsg Exp
|
||||
* OpenBSD: pcidevs,v 1.2051 2023/09/25 15:37:36 deraadt Exp
|
||||
*/
|
||||
|
||||
/* $NetBSD: pcidevs,v 1.30 1997/06/24 06:20:24 thorpej Exp $ */
|
||||
|
@ -26355,6 +26355,10 @@ static const struct pci_known_product pci_known_products[] = {
|
|||
PCI_VENDOR_MEINBERG, PCI_PRODUCT_MEINBERG_PEX511,
|
||||
"PEX511",
|
||||
},
|
||||
{
|
||||
PCI_VENDOR_MEINBERG, PCI_PRODUCT_MEINBERG_PZF180PEX,
|
||||
"PZF180PEX",
|
||||
},
|
||||
{
|
||||
PCI_VENDOR_MEINBERG, PCI_PRODUCT_MEINBERG_GPS170PCI,
|
||||
"GPS170PCI",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue