319 lines
14 KiB
Diff
319 lines
14 KiB
Diff
From e5e77ad2223f662e1615266d8ef39a8db7e65a70 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Felix=20H=C3=A4dicke?= <felixhaedicke@web.de>
|
|
Date: Thu, 19 Nov 2020 09:22:32 +0100
|
|
Subject: HID: quirks: Add Apple Magic Trackpad 2 to hid_have_special_driver
|
|
list
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
The Apple Magic Trackpad 2 is handled by the magicmouse driver. And
|
|
there were severe stability issues when both drivers (hid-generic and
|
|
hid-magicmouse) were loaded for this device.
|
|
|
|
Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=210241
|
|
|
|
Signed-off-by: Felix Hädicke <felixhaedicke@web.de>
|
|
---
|
|
drivers/hid/hid-quirks.c | 2 ++
|
|
1 file changed, 2 insertions(+)
|
|
|
|
diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
|
|
index bf7ecab5d9e5..142e9dae2837 100644
|
|
--- a/drivers/hid/hid-quirks.c
|
|
+++ b/drivers/hid/hid-quirks.c
|
|
@@ -478,6 +478,8 @@ static const struct hid_device_id hid_have_special_driver[] = {
|
|
#if IS_ENABLED(CONFIG_HID_MAGICMOUSE)
|
|
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICMOUSE) },
|
|
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICTRACKPAD) },
|
|
+ { HID_BLUETOOTH_DEVICE(BT_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICTRACKPAD2) },
|
|
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICTRACKPAD2) },
|
|
#endif
|
|
#if IS_ENABLED(CONFIG_HID_MAYFLASH)
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_PS3) },
|
|
--
|
|
cgit v1.2.3-1-gf6bb5
|
|
|
|
From e437ac931e89629f952ce9f3f9dfe45ac505cd0d Mon Sep 17 00:00:00 2001
|
|
From: Joshua Ashton <joshua@froggi.es>
|
|
Date: Tue, 5 Jan 2021 19:46:01 +0000
|
|
Subject: [PATCH] drm/amdgpu: don't limit gtt size on apus
|
|
|
|
Since commit 24562523688b ("Revert "drm/amd/amdgpu: set gtt size
|
|
according to system memory size only""), the GTT size was limited by
|
|
3GiB or VRAM size.
|
|
|
|
This is problematic on APU systems with a small carveout
|
|
(notably, those that ship with dGPUs where this is unconfigurable),
|
|
where the carveout size can be as low as 128MiB.
|
|
|
|
This makes it so the GTT size heuristic always uses 3/4ths of
|
|
the system memory size on APUs (limiting the size by 3GiB/VRAM size
|
|
only on devices with dedicated video memory).
|
|
|
|
Fixes: 24562523688b ("Revert drm/amd/amdgpu: set gtt size according to
|
|
system memory size only")
|
|
|
|
Signed-off-by: Joshua Ashton <joshua@froggi.es>
|
|
---
|
|
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 5 +++--
|
|
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 12 +++++++++---
|
|
2 files changed, 12 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
|
|
index 72efd579ec5e..a5a41e9272d6 100644
|
|
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
|
|
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
|
|
@@ -192,8 +192,9 @@ module_param_named(gartsize, amdgpu_gart_size, uint, 0600);
|
|
|
|
/**
|
|
* DOC: gttsize (int)
|
|
- * Restrict the size of GTT domain in MiB for testing. The default is -1 (It's VRAM size if 3GB < VRAM < 3/4 RAM,
|
|
- * otherwise 3/4 RAM size).
|
|
+ * Restrict the size of GTT domain in MiB for testing. The default is -1 (On APUs this is 3/4th
|
|
+ * of the system memory; on dGPUs this is 3GiB or VRAM sized, whichever is bigger,
|
|
+ * with an upper bound of 3/4th of system memory.
|
|
*/
|
|
MODULE_PARM_DESC(gttsize, "Size of the GTT domain in megabytes (-1 = auto)");
|
|
module_param_named(gttsize, amdgpu_gtt_size, int, 0600);
|
|
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
|
|
index 4d8f19ab1014..294f26f4f310 100644
|
|
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
|
|
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
|
|
@@ -1865,9 +1865,15 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
|
|
struct sysinfo si;
|
|
|
|
si_meminfo(&si);
|
|
- gtt_size = min(max((AMDGPU_DEFAULT_GTT_SIZE_MB << 20),
|
|
- adev->gmc.mc_vram_size),
|
|
- ((uint64_t)si.totalram * si.mem_unit * 3/4));
|
|
+ gtt_size = (uint64_t)si.totalram * si.mem_unit * 3/4;
|
|
+ /* If we have dedicated memory, limit our GTT size to
|
|
+ * 3GiB or VRAM size, whichever is bigger
|
|
+ */
|
|
+ if (!(adev->flags & AMD_IS_APU)) {
|
|
+ gtt_size = min(max(AMDGPU_DEFAULT_GTT_SIZE_MB << 20,
|
|
+ adev->gmc.mc_vram_size),
|
|
+ gtt_size);
|
|
+ }
|
|
}
|
|
else
|
|
gtt_size = (uint64_t)amdgpu_gtt_size << 20;
|
|
--
|
|
2.30.0
|
|
|
|
From f7f49141a5dbe9c99d78196b58c44307fb2e6be3 Mon Sep 17 00:00:00 2001
|
|
From: Tk-Glitch <ti3nou@gmail.com>
|
|
Date: Wed, 3 Feb 2021 11:20:12 +0200
|
|
Subject: Revert "cpufreq: Avoid configuring old governors as default with intel_pstate"
|
|
|
|
This is an undesirable behavior for us since our aggressive ondemand performs
|
|
better than schedutil for gaming when using intel_pstate in passive mode.
|
|
Also it interferes with the option to select the desired default governor we have.
|
|
|
|
diff --git a/drivers/cpufreq/Kconfig b/drivers/cpufreq/Kconfig
|
|
index 2c7171e0b0010..85de313ddec29 100644
|
|
--- a/drivers/cpufreq/Kconfig
|
|
+++ b/drivers/cpufreq/Kconfig
|
|
@@ -71,7 +71,6 @@ config CPU_FREQ_DEFAULT_GOV_USERSPACE
|
|
|
|
config CPU_FREQ_DEFAULT_GOV_ONDEMAND
|
|
bool "ondemand"
|
|
- depends on !(X86_INTEL_PSTATE && SMP)
|
|
select CPU_FREQ_GOV_ONDEMAND
|
|
select CPU_FREQ_GOV_PERFORMANCE
|
|
help
|
|
@@ -83,7 +84,6 @@ config CPU_FREQ_DEFAULT_GOV_ONDEMAND
|
|
|
|
config CPU_FREQ_DEFAULT_GOV_CONSERVATIVE
|
|
bool "conservative"
|
|
- depends on !(X86_INTEL_PSTATE && SMP)
|
|
select CPU_FREQ_GOV_CONSERVATIVE
|
|
select CPU_FREQ_GOV_PERFORMANCE
|
|
help
|
|
|
|
https://lore.kernel.org/lkml/20210819004305.20203-1-deepak.sharma@amd.com/
|
|
|
|
From: Deepak Sharma <deepak.sharma@amd.com>
|
|
To: <deepak.sharma@amd.com>
|
|
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>,
|
|
Len Brown <len.brown@intel.com>, Pavel Machek <pavel@ucw.cz>,
|
|
Thomas Gleixner <tglx@linutronix.de>,
|
|
"Ingo Molnar" <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
|
|
"maintainer:X86 ARCHITECTURE (32-BIT AND 64-BIT)"
|
|
<x86@kernel.org>, "H. Peter Anvin" <hpa@zytor.com>,
|
|
"open list:SUSPEND TO RAM" <linux-pm@vger.kernel.org>,
|
|
"open list:X86 ARCHITECTURE (32-BIT AND 64-BIT)"
|
|
<linux-kernel@vger.kernel.org>
|
|
Subject: [PATCH] x86/ACPI/State: Optimize C3 entry on AMD CPUs
|
|
Date: Wed, 18 Aug 2021 17:43:05 -0700
|
|
Message-ID: <20210819004305.20203-1-deepak.sharma@amd.com> (raw)
|
|
|
|
AMD CPU which support C3 shares cache. Its not necessary to flush the
|
|
caches in software before entering C3. This will cause performance drop
|
|
for the cores which share some caches. ARB_DIS is not used with current
|
|
AMD C state implementation. So set related flags correctly.
|
|
|
|
Signed-off-by: Deepak Sharma <deepak.sharma@amd.com>
|
|
---
|
|
arch/x86/kernel/acpi/cstate.c | 15 +++++++++++++++
|
|
1 file changed, 15 insertions(+)
|
|
|
|
diff --git a/arch/x86/kernel/acpi/cstate.c b/arch/x86/kernel/acpi/cstate.c
|
|
index 7de599eba7f0..62a5986d625a 100644
|
|
--- a/arch/x86/kernel/acpi/cstate.c
|
|
+++ b/arch/x86/kernel/acpi/cstate.c
|
|
@@ -79,6 +79,21 @@ void acpi_processor_power_init_bm_check(struct acpi_processor_flags *flags,
|
|
*/
|
|
flags->bm_control = 0;
|
|
}
|
|
+ if (c->x86_vendor == X86_VENDOR_AMD) {
|
|
+ /*
|
|
+ * For all AMD CPUs that support C3, caches should not be
|
|
+ * flushed by software while entering C3 type state. Set
|
|
+ * bm->check to 1 so that kernel doesn't need to execute
|
|
+ * cache flush operation.
|
|
+ */
|
|
+ flags->bm_check = 1;
|
|
+ /*
|
|
+ * In current AMD C state implementation ARB_DIS is no longer
|
|
+ * used. So set bm_control to zero to indicate ARB_DIS is not
|
|
+ * required while entering C3 type state.
|
|
+ */
|
|
+ flags->bm_control = 0;
|
|
+ }
|
|
}
|
|
EXPORT_SYMBOL(acpi_processor_power_init_bm_check);
|
|
|
|
--
|
|
amd-drm-staging-next dcc image stores perf regression fixes
|
|
|
|
https://gitlab.freedesktop.org/mesa/mesa/-/issues/5396#note_1071669
|
|
|
|
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
|
|
index ab5aad21a04157fa3164e2b6d5e1b48329b1ac58..e577bc93465bebb5a520ba69860d1cddf36066b8 100644
|
|
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
|
|
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
|
|
@@ -5052,10 +5052,15 @@ fill_gfx9_plane_attributes_from_modifiers(struct amdgpu_device *adev,
|
|
|
|
if (modifier_has_dcc(modifier) && !force_disable_dcc) {
|
|
uint64_t dcc_address = afb->address + afb->base.offsets[1];
|
|
+ bool independent_64b_blks = AMD_FMT_MOD_GET(DCC_INDEPENDENT_64B, modifier);
|
|
|
|
dcc->enable = 1;
|
|
dcc->meta_pitch = afb->base.pitches[1];
|
|
- dcc->independent_64b_blks = AMD_FMT_MOD_GET(DCC_INDEPENDENT_64B, modifier);
|
|
+ dcc->independent_64b_blks = independent_64b_blks;
|
|
+ if (independent_64b_blks)
|
|
+ dcc->dcc_ind_blk = hubp_ind_block_64b;
|
|
+ else
|
|
+ dcc->dcc_ind_blk = hubp_ind_block_unconstrained;
|
|
|
|
address->grph.meta_addr.low_part = lower_32_bits(dcc_address);
|
|
address->grph.meta_addr.high_part = upper_32_bits(dcc_address);
|
|
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c
|
|
index e362ec65349de2b6275a190128b6b3ab9ce1b5f4..331a7517176b5ae06b5d308096561e06f9363584 100644
|
|
--- a/drivers/gpu/drm/amd/display/dc/core/dc.c
|
|
+++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
|
|
@@ -2015,7 +2015,7 @@ static enum surface_update_type get_plane_info_update_type(const struct dc_surfa
|
|
}
|
|
|
|
if (u->plane_info->dcc.enable != u->surface->dcc.enable
|
|
- || u->plane_info->dcc.independent_64b_blks != u->surface->dcc.independent_64b_blks
|
|
+ || u->plane_info->dcc.dcc_ind_blk != u->surface->dcc.dcc_ind_blk
|
|
|| u->plane_info->dcc.meta_pitch != u->surface->dcc.meta_pitch) {
|
|
/* During DCC on/off, stutter period is calculated before
|
|
* DCC has fully transitioned. This results in incorrect
|
|
diff --git a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hubp.c b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hubp.c
|
|
index f246125232482c894f5440c9c6682924577c7f49..eac08926b57419815d1f68a1236e8f37ae86c25b 100644
|
|
--- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hubp.c
|
|
+++ b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hubp.c
|
|
@@ -356,12 +356,6 @@ void hubp3_dcc_control_sienna_cichlid(struct hubp *hubp,
|
|
{
|
|
struct dcn20_hubp *hubp2 = TO_DCN20_HUBP(hubp);
|
|
|
|
- /*Workaround until UMD fix the new dcc_ind_blk interface */
|
|
- if (dcc->independent_64b_blks && dcc->dcc_ind_blk == 0)
|
|
- dcc->dcc_ind_blk = 1;
|
|
- if (dcc->independent_64b_blks_c && dcc->dcc_ind_blk_c == 0)
|
|
- dcc->dcc_ind_blk_c = 1;
|
|
-
|
|
REG_UPDATE_6(DCSURF_SURFACE_CONTROL,
|
|
PRIMARY_SURFACE_DCC_EN, dcc->enable,
|
|
PRIMARY_SURFACE_DCC_IND_BLK, dcc->dcc_ind_blk,
|
|
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
|
|
index e577bc93465bebb5a520ba69860d1cddf36066b8..db2ca49a36e1a316af7790b26301370200cc0d48 100644
|
|
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
|
|
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
|
|
@@ -5053,14 +5053,26 @@ fill_gfx9_plane_attributes_from_modifiers(struct amdgpu_device *adev,
|
|
if (modifier_has_dcc(modifier) && !force_disable_dcc) {
|
|
uint64_t dcc_address = afb->address + afb->base.offsets[1];
|
|
bool independent_64b_blks = AMD_FMT_MOD_GET(DCC_INDEPENDENT_64B, modifier);
|
|
+ bool independent_128b_blks = AMD_FMT_MOD_GET(DCC_INDEPENDENT_128B, modifier);
|
|
|
|
dcc->enable = 1;
|
|
dcc->meta_pitch = afb->base.pitches[1];
|
|
dcc->independent_64b_blks = independent_64b_blks;
|
|
- if (independent_64b_blks)
|
|
- dcc->dcc_ind_blk = hubp_ind_block_64b;
|
|
- else
|
|
- dcc->dcc_ind_blk = hubp_ind_block_unconstrained;
|
|
+ if (AMD_FMT_MOD_GET(TILE_VERSION, modifier) == AMD_FMT_MOD_TILE_VER_GFX10_RBPLUS) {
|
|
+ if (independent_64b_blks && independent_128b_blks)
|
|
+ dcc->dcc_ind_blk = hubp_ind_block_64b;
|
|
+ else if (independent_128b_blks)
|
|
+ dcc->dcc_ind_blk = hubp_ind_block_128b;
|
|
+ else if (independent_64b_blks && !independent_128b_blks)
|
|
+ dcc->dcc_ind_blk = hubp_ind_block_64b_no_128bcl;
|
|
+ else
|
|
+ dcc->dcc_ind_blk = hubp_ind_block_unconstrained;
|
|
+ } else {
|
|
+ if (independent_64b_blks)
|
|
+ dcc->dcc_ind_blk = hubp_ind_block_64b;
|
|
+ else
|
|
+ dcc->dcc_ind_blk = hubp_ind_block_unconstrained;
|
|
+ }
|
|
|
|
address->grph.meta_addr.low_part = lower_32_bits(dcc_address);
|
|
address->grph.meta_addr.high_part = upper_32_bits(dcc_address);
|
|
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
|
|
index db2ca49a36e1a316af7790b26301370200cc0d48..5d3679bd6b29b837c4ffb17c92416dca58e70e09 100644
|
|
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
|
|
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
|
|
@@ -4955,6 +4955,16 @@ add_gfx10_3_modifiers(const struct amdgpu_device *adev,
|
|
AMD_FMT_MOD_SET(DCC_INDEPENDENT_128B, 1) |
|
|
AMD_FMT_MOD_SET(DCC_MAX_COMPRESSED_BLOCK, AMD_FMT_MOD_DCC_BLOCK_64B));
|
|
|
|
+ add_modifier(mods, size, capacity, AMD_FMT_MOD |
|
|
+ AMD_FMT_MOD_SET(TILE, AMD_FMT_MOD_TILE_GFX9_64K_R_X) |
|
|
+ AMD_FMT_MOD_SET(TILE_VERSION, AMD_FMT_MOD_TILE_VER_GFX10_RBPLUS) |
|
|
+ AMD_FMT_MOD_SET(PIPE_XOR_BITS, pipe_xor_bits) |
|
|
+ AMD_FMT_MOD_SET(PACKERS, pkrs) |
|
|
+ AMD_FMT_MOD_SET(DCC, 1) |
|
|
+ AMD_FMT_MOD_SET(DCC_CONSTANT_ENCODE, 1) |
|
|
+ AMD_FMT_MOD_SET(DCC_INDEPENDENT_128B, 1) |
|
|
+ AMD_FMT_MOD_SET(DCC_MAX_COMPRESSED_BLOCK, AMD_FMT_MOD_DCC_BLOCK_128B));
|
|
+
|
|
add_modifier(mods, size, capacity, AMD_FMT_MOD |
|
|
AMD_FMT_MOD_SET(TILE, AMD_FMT_MOD_TILE_GFX9_64K_R_X) |
|
|
AMD_FMT_MOD_SET(TILE_VERSION, AMD_FMT_MOD_TILE_VER_GFX10_RBPLUS) |
|
|
@@ -4967,6 +4977,17 @@ add_gfx10_3_modifiers(const struct amdgpu_device *adev,
|
|
AMD_FMT_MOD_SET(DCC_INDEPENDENT_128B, 1) |
|
|
AMD_FMT_MOD_SET(DCC_MAX_COMPRESSED_BLOCK, AMD_FMT_MOD_DCC_BLOCK_64B));
|
|
|
|
+ add_modifier(mods, size, capacity, AMD_FMT_MOD |
|
|
+ AMD_FMT_MOD_SET(TILE, AMD_FMT_MOD_TILE_GFX9_64K_R_X) |
|
|
+ AMD_FMT_MOD_SET(TILE_VERSION, AMD_FMT_MOD_TILE_VER_GFX10_RBPLUS) |
|
|
+ AMD_FMT_MOD_SET(PIPE_XOR_BITS, pipe_xor_bits) |
|
|
+ AMD_FMT_MOD_SET(PACKERS, pkrs) |
|
|
+ AMD_FMT_MOD_SET(DCC, 1) |
|
|
+ AMD_FMT_MOD_SET(DCC_RETILE, 1) |
|
|
+ AMD_FMT_MOD_SET(DCC_CONSTANT_ENCODE, 1) |
|
|
+ AMD_FMT_MOD_SET(DCC_INDEPENDENT_128B, 1) |
|
|
+ AMD_FMT_MOD_SET(DCC_MAX_COMPRESSED_BLOCK, AMD_FMT_MOD_DCC_BLOCK_128B));
|
|
+
|
|
add_modifier(mods, size, capacity, AMD_FMT_MOD |
|
|
AMD_FMT_MOD_SET(TILE, AMD_FMT_MOD_TILE_GFX9_64K_R_X) |
|
|
AMD_FMT_MOD_SET(TILE_VERSION, AMD_FMT_MOD_TILE_VER_GFX10_RBPLUS) |
|
|
|