diff options
-rw-r--r-- | .SRCINFO | 16 | ||||
-rw-r--r-- | 0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch | 8 | ||||
-rw-r--r-- | 0002-drm-i915-improve-the-catch-all-evict-to-handle-lock-.patch | 4 | ||||
-rw-r--r-- | 0003-ALSA-hda-hdmi-Static-PCM-mapping-again-with-AMD-HDMI.patch | 115 | ||||
-rw-r--r-- | 0003-futex-Resend-potentially-swallowed-owner-death-notif.patch | 100 | ||||
-rw-r--r-- | PKGBUILD | 12 |
6 files changed, 135 insertions, 120 deletions
@@ -1,5 +1,5 @@ pkgbase = linux-ck - pkgver = 6.1.1 + pkgver = 6.1.2 pkgrel = 1 url = https://wiki.archlinux.org/index.php/Linux-ck arch = x86_64 @@ -12,24 +12,24 @@ pkgbase = linux-ck makedepends = tar makedepends = xz options = !strip - source = https://www.kernel.org/pub/linux/kernel/v6.x/linux-6.1.1.tar.xz - source = https://www.kernel.org/pub/linux/kernel/v6.x/linux-6.1.1.tar.sign + source = https://www.kernel.org/pub/linux/kernel/v6.x/linux-6.1.2.tar.xz + source = https://www.kernel.org/pub/linux/kernel/v6.x/linux-6.1.2.tar.sign source = config source = more-uarches-20221217.tar.gz::https://github.com/graysky2/kernel_compiler_patch/archive/20221217.tar.gz source = ck-hrtimer-fdbdf7e0ec56cd59e11d024c473e766429271a5c.tar.gz::https://github.com/graysky2/linux-patches/archive/fdbdf7e0ec56cd59e11d024c473e766429271a5c.tar.gz source = 0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch source = 0002-drm-i915-improve-the-catch-all-evict-to-handle-lock-.patch - source = 0003-futex-Resend-potentially-swallowed-owner-death-notif.patch + source = 0003-ALSA-hda-hdmi-Static-PCM-mapping-again-with-AMD-HDMI.patch validpgpkeys = ABAF11C65A2970B130ABE3C479BE3E4300411886 validpgpkeys = 647F28654894E3BD457199BE38DBBDC86092693E - sha256sums = a3e61377cf4435a9e2966b409a37a1056f6aaa59e561add9125a88e3c0971dfb + sha256sums = ee41f3c4f599b2f46f08aae428c9243db403e7292eb2c9f04ee34909b038d1ae sha256sums = SKIP sha256sums = 0571ea17a2e38458096b679418197bbea8c414388f628d122517f3a1f3a31b3a sha256sums = f1d586e111932890ad5e0df15d092fb9b3f87bae4ea17812aae9b0ec98fe2db0 sha256sums = 6d3b9cb4639c1c5eb4e2697aed0dbffa5b4a37d63a0861dec8315dd052723e0e - sha256sums = 865fa8cc41186a42225e89c845d438aefae6332d1ef18b94ef3aae04deb5e784 - sha256sums = 9c6191b355fcaf41cfeb92105ea0d24bbc51c993877d3fb5325f139997ede058 - sha256sums = 748e40e3a4b889850e8f86aee7ff96a93d43476a6529316bd823e18e23fc82f8 + sha256sums = 00c7b866ba5393639d5ca2349883909ad6b1bedf6091e857c83f208e0838479c + sha256sums = 0cde718acd7e96ce5f221db696459b145162196f6fb6b729e3f9231672c40df1 + sha256sums = 6d808871fc1bc318c193f021ca2680e1f2cd28802248fb16a350cf9c5ca3af7b pkgname = linux-ck pkgdesc = The Linux kernel and modules with ck's hrtimer patches diff --git a/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch b/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch index 7649aaeb5834..94b3e44a4640 100644 --- a/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch +++ b/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch @@ -1,4 +1,4 @@ -From c1992e54412eedc904c7a0997ead8ecf6ef50ea6 Mon Sep 17 00:00:00 2001 +From d93b3bdc50f2d4a69e1abc900a588d6cf3b4b75b Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com> Date: Mon, 16 Sep 2019 04:53:20 +0200 Subject: [PATCH 1/4] ZEN: Add sysctl and CONFIG to disallow unprivileged @@ -63,7 +63,7 @@ index 94125d3b6893..9f7139b536f6 100644 bool "PID Namespaces" default y diff --git a/kernel/fork.c b/kernel/fork.c -index 08969f5aa38d..ff601cb7a1fa 100644 +index 844dfdc8c639..31d41db3f84d 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -98,6 +98,10 @@ @@ -77,7 +77,7 @@ index 08969f5aa38d..ff601cb7a1fa 100644 #include <asm/pgalloc.h> #include <linux/uaccess.h> #include <asm/mmu_context.h> -@@ -2008,6 +2012,10 @@ static __latent_entropy struct task_struct *copy_process( +@@ -2011,6 +2015,10 @@ static __latent_entropy struct task_struct *copy_process( if ((clone_flags & (CLONE_NEWUSER|CLONE_FS)) == (CLONE_NEWUSER|CLONE_FS)) return ERR_PTR(-EINVAL); @@ -88,7 +88,7 @@ index 08969f5aa38d..ff601cb7a1fa 100644 /* * Thread groups must share signals as well, and detached threads * can only be started up within the thread group. -@@ -3166,6 +3174,12 @@ int ksys_unshare(unsigned long unshare_flags) +@@ -3171,6 +3179,12 @@ int ksys_unshare(unsigned long unshare_flags) if (unshare_flags & CLONE_NEWNS) unshare_flags |= CLONE_FS; diff --git a/0002-drm-i915-improve-the-catch-all-evict-to-handle-lock-.patch b/0002-drm-i915-improve-the-catch-all-evict-to-handle-lock-.patch index 79c0d9e02e16..f66fee63d0bd 100644 --- a/0002-drm-i915-improve-the-catch-all-evict-to-handle-lock-.patch +++ b/0002-drm-i915-improve-the-catch-all-evict-to-handle-lock-.patch @@ -1,4 +1,4 @@ -From c2337439f6d74e9f8e003e55c786839886bc4911 Mon Sep 17 00:00:00 2001 +From e3bf21dfa982692c41ec68c656f024863b0313d2 Mon Sep 17 00:00:00 2001 From: Matthew Auld <matthew.auld@intel.com> Date: Tue, 6 Dec 2022 16:11:41 +0000 Subject: [PATCH 2/4] drm/i915: improve the catch-all evict to handle lock @@ -92,7 +92,7 @@ index 845023c14eb3..094e92ed28db 100644 err = eb_reserve_vma(eb, ev, pin_flags); if (err) diff --git a/drivers/gpu/drm/i915/gem/i915_gem_mman.c b/drivers/gpu/drm/i915/gem/i915_gem_mman.c -index 73d9eda1d6b7..c83d98e1dc5d 100644 +index e63329bc8065..354c1d6dab84 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_mman.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_mman.c @@ -369,7 +369,7 @@ static vm_fault_t vm_fault_gtt(struct vm_fault *vmf) diff --git a/0003-ALSA-hda-hdmi-Static-PCM-mapping-again-with-AMD-HDMI.patch b/0003-ALSA-hda-hdmi-Static-PCM-mapping-again-with-AMD-HDMI.patch new file mode 100644 index 000000000000..eb417c58dfba --- /dev/null +++ b/0003-ALSA-hda-hdmi-Static-PCM-mapping-again-with-AMD-HDMI.patch @@ -0,0 +1,115 @@ +From a0142b0ddd7b114b6aa707d0f2b97150190bfef6 Mon Sep 17 00:00:00 2001 +From: Takashi Iwai <tiwai@suse.de> +Date: Wed, 28 Dec 2022 13:57:14 +0100 +Subject: [PATCH 3/4] ALSA: hda/hdmi: Static PCM mapping again with AMD HDMI + codecs + +The recent code refactoring for HD-audio HDMI codec driver caused a +regression on AMD/ATI HDMI codecs; namely, PulseAudioand pipewire +don't recognize HDMI outputs any longer while the direct output via +ALSA raw access still works. + +The problem turned out that, after the code refactoring, the driver +assumes only the dynamic PCM assignment, and when a PCM stream that +still isn't assigned to any pin gets opened, the driver tries to +assign any free converter to the PCM stream. This behavior is OK for +Intel and other codecs, as they have arbitrary connections between +pins and converters. OTOH, on AMD chips that have a 1:1 mapping +between pins and converters, this may end up with blocking the open of +the next PCM stream for the pin that is tied with the formerly taken +converter. + +Also, with the code refactoring, more PCM streams are exposed than +necessary as we assume all converters can be used, while this isn't +true for AMD case. This may change the PCM stream assignment and +confuse users as well. + +This patch fixes those problems by: + +- Introducing a flag spec->static_pcm_mapping, and if it's set, the + driver applies the static mapping between pins and converters at the + probe time +- Limiting the number of PCM streams per pins, too; this avoids the + superfluous PCM streams + +Fixes: ef6f5494faf6 ("ALSA: hda/hdmi: Use only dynamic PCM device allocation") +Cc: <stable@vger.kernel.org> +Link: https://bugzilla.kernel.org/show_bug.cgi?id=216836 +Co-developed-by: Jaroslav Kysela <perex@perex.cz> +Signed-off-by: Jaroslav Kysela <perex@perex.cz> +Link: https://lore.kernel.org/r/20221228125714.16329-1-tiwai@suse.de +Signed-off-by: Takashi Iwai <tiwai@suse.de> +--- + sound/pci/hda/patch_hdmi.c | 27 +++++++++++++++++++-------- + 1 file changed, 19 insertions(+), 8 deletions(-) + +diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c +index 8015e4471267..386dd9d9143f 100644 +--- a/sound/pci/hda/patch_hdmi.c ++++ b/sound/pci/hda/patch_hdmi.c +@@ -167,6 +167,7 @@ struct hdmi_spec { + struct hdmi_ops ops; + + bool dyn_pin_out; ++ bool static_pcm_mapping; + /* hdmi interrupt trigger control flag for Nvidia codec */ + bool hdmi_intr_trig_ctrl; + bool nv_dp_workaround; /* workaround DP audio infoframe for Nvidia */ +@@ -1525,13 +1526,16 @@ static void update_eld(struct hda_codec *codec, + */ + pcm_jack = pin_idx_to_pcm_jack(codec, per_pin); + +- if (eld->eld_valid) { +- hdmi_attach_hda_pcm(spec, per_pin); +- hdmi_pcm_setup_pin(spec, per_pin); +- } else { +- hdmi_pcm_reset_pin(spec, per_pin); +- hdmi_detach_hda_pcm(spec, per_pin); ++ if (!spec->static_pcm_mapping) { ++ if (eld->eld_valid) { ++ hdmi_attach_hda_pcm(spec, per_pin); ++ hdmi_pcm_setup_pin(spec, per_pin); ++ } else { ++ hdmi_pcm_reset_pin(spec, per_pin); ++ hdmi_detach_hda_pcm(spec, per_pin); ++ } + } ++ + /* if pcm_idx == -1, it means this is in monitor connection event + * we can get the correct pcm_idx now. + */ +@@ -2281,8 +2285,8 @@ static int generic_hdmi_build_pcms(struct hda_codec *codec) + struct hdmi_spec *spec = codec->spec; + int idx, pcm_num; + +- /* limit the PCM devices to the codec converters */ +- pcm_num = spec->num_cvts; ++ /* limit the PCM devices to the codec converters or available PINs */ ++ pcm_num = min(spec->num_cvts, spec->num_pins); + codec_dbg(codec, "hdmi: pcm_num set to %d\n", pcm_num); + + for (idx = 0; idx < pcm_num; idx++) { +@@ -2379,6 +2383,11 @@ static int generic_hdmi_build_controls(struct hda_codec *codec) + struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx); + struct hdmi_eld *pin_eld = &per_pin->sink_eld; + ++ if (spec->static_pcm_mapping) { ++ hdmi_attach_hda_pcm(spec, per_pin); ++ hdmi_pcm_setup_pin(spec, per_pin); ++ } ++ + pin_eld->eld_valid = false; + hdmi_present_sense(per_pin, 0); + } +@@ -4419,6 +4428,8 @@ static int patch_atihdmi(struct hda_codec *codec) + + spec = codec->spec; + ++ spec->static_pcm_mapping = true; ++ + spec->ops.pin_get_eld = atihdmi_pin_get_eld; + spec->ops.pin_setup_infoframe = atihdmi_pin_setup_infoframe; + spec->ops.pin_hbr_setup = atihdmi_pin_hbr_setup; +-- +2.39.0 + diff --git a/0003-futex-Resend-potentially-swallowed-owner-death-notif.patch b/0003-futex-Resend-potentially-swallowed-owner-death-notif.patch deleted file mode 100644 index 5ac537cb9140..000000000000 --- a/0003-futex-Resend-potentially-swallowed-owner-death-notif.patch +++ /dev/null @@ -1,100 +0,0 @@ -From 189603b802a2bb276b82a0a4f66528ad29156f46 Mon Sep 17 00:00:00 2001 -From: Alexey Izbyshev <izbyshev@ispras.ru> -Date: Sat, 12 Nov 2022 00:54:39 +0300 -Subject: [PATCH 3/4] futex: Resend potentially swallowed owner death - notification - -Commit ca16d5bee598 ("futex: Prevent robust futex exit race") addressed -two cases when tasks waiting on a robust non-PI futex remained blocked -despite the futex not being owned anymore: - -* if the owner died after writing zero to the futex word, but before - waking up a waiter - -* if a task waiting on the futex was woken up, but died before updating - the futex word (effectively swallowing the notification without acting - on it) - -In the second case, the task could be woken up either by the previous -owner (after the futex word was reset to zero) or by the kernel (after -the OWNER_DIED bit was set and the TID part of the futex word was reset -to zero) if the previous owner died without the resetting the futex. - -Because the referenced commit wakes up a potential waiter only if the -whole futex word is zero, the latter subcase remains unaddressed. - -Fix this by looking only at the TID part of the futex when deciding -whether a wake up is needed. - -Fixes: ca16d5bee598 ("futex: Prevent robust futex exit race") -Signed-off-by: Alexey Izbyshev <izbyshev@ispras.ru> -Signed-off-by: Thomas Gleixner <tglx@linutronix.de> -Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> -Link: https://lore.kernel.org/r/20221111215439.248185-1-izbyshev@ispras.ru ---- - kernel/futex/core.c | 26 +++++++++++++++++--------- - 1 file changed, 17 insertions(+), 9 deletions(-) - -diff --git a/kernel/futex/core.c b/kernel/futex/core.c -index b22ef1efe751..514e4582b863 100644 ---- a/kernel/futex/core.c -+++ b/kernel/futex/core.c -@@ -638,6 +638,7 @@ static int handle_futex_death(u32 __user *uaddr, struct task_struct *curr, - bool pi, bool pending_op) - { - u32 uval, nval, mval; -+ pid_t owner; - int err; - - /* Futex address must be 32bit aligned */ -@@ -659,6 +660,10 @@ static int handle_futex_death(u32 __user *uaddr, struct task_struct *curr, - * 2. A woken up waiter is killed before it can acquire the - * futex in user space. - * -+ * In the second case, the wake up notification could be generated -+ * by the unlock path in user space after setting the futex value -+ * to zero or by the kernel after setting the OWNER_DIED bit below. -+ * - * In both cases the TID validation below prevents a wakeup of - * potential waiters which can cause these waiters to block - * forever. -@@ -667,24 +672,27 @@ static int handle_futex_death(u32 __user *uaddr, struct task_struct *curr, - * - * 1) task->robust_list->list_op_pending != NULL - * @pending_op == true -- * 2) User space futex value == 0 -+ * 2) The owner part of user space futex value == 0 - * 3) Regular futex: @pi == false - * - * If these conditions are met, it is safe to attempt waking up a - * potential waiter without touching the user space futex value and -- * trying to set the OWNER_DIED bit. The user space futex value is -- * uncontended and the rest of the user space mutex state is -- * consistent, so a woken waiter will just take over the -- * uncontended futex. Setting the OWNER_DIED bit would create -- * inconsistent state and malfunction of the user space owner died -- * handling. -+ * trying to set the OWNER_DIED bit. If the futex value is zero, -+ * the rest of the user space mutex state is consistent, so a woken -+ * waiter will just take over the uncontended futex. Setting the -+ * OWNER_DIED bit would create inconsistent state and malfunction -+ * of the user space owner died handling. Otherwise, the OWNER_DIED -+ * bit is already set, and the woken waiter is expected to deal with -+ * this. - */ -- if (pending_op && !pi && !uval) { -+ owner = uval & FUTEX_TID_MASK; -+ -+ if (pending_op && !pi && !owner) { - futex_wake(uaddr, 1, 1, FUTEX_BITSET_MATCH_ANY); - return 0; - } - -- if ((uval & FUTEX_TID_MASK) != task_pid_vnr(curr)) -+ if (owner != task_pid_vnr(curr)) - return 0; - - /* --- -2.39.0 - @@ -68,7 +68,7 @@ _subarch= ### IMPORTANT: Do no edit below this line unless you know what you're doing pkgbase=linux-ck -pkgver=6.1.1 +pkgver=6.1.2 pkgrel=1 arch=(x86_64) url="https://wiki.archlinux.org/index.php/Linux-ck" @@ -92,20 +92,20 @@ source=( "ck-hrtimer-$_commit.tar.gz::https://github.com/graysky2/linux-patches/archive/$_commit.tar.gz" 0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch 0002-drm-i915-improve-the-catch-all-evict-to-handle-lock-.patch - 0003-futex-Resend-potentially-swallowed-owner-death-notif.patch + 0003-ALSA-hda-hdmi-Static-PCM-mapping-again-with-AMD-HDMI.patch ) validpgpkeys=( 'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds '647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman ) -sha256sums=('a3e61377cf4435a9e2966b409a37a1056f6aaa59e561add9125a88e3c0971dfb' +sha256sums=('ee41f3c4f599b2f46f08aae428c9243db403e7292eb2c9f04ee34909b038d1ae' 'SKIP' '0571ea17a2e38458096b679418197bbea8c414388f628d122517f3a1f3a31b3a' 'f1d586e111932890ad5e0df15d092fb9b3f87bae4ea17812aae9b0ec98fe2db0' '6d3b9cb4639c1c5eb4e2697aed0dbffa5b4a37d63a0861dec8315dd052723e0e' - '865fa8cc41186a42225e89c845d438aefae6332d1ef18b94ef3aae04deb5e784' - '9c6191b355fcaf41cfeb92105ea0d24bbc51c993877d3fb5325f139997ede058' - '748e40e3a4b889850e8f86aee7ff96a93d43476a6529316bd823e18e23fc82f8') + '00c7b866ba5393639d5ca2349883909ad6b1bedf6091e857c83f208e0838479c' + '0cde718acd7e96ce5f221db696459b145162196f6fb6b729e3f9231672c40df1' + '6d808871fc1bc318c193f021ca2680e1f2cd28802248fb16a350cf9c5ca3af7b') prepare() { cd linux-${pkgver} |