-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Alex Deucher (2):
amdgpu: add new marketing names from 19.30
amdgpu: add new marketing names from 19.50
Chunming Zhou (2):
sync up drm.h
libdrm: wrap new flexible syncobj query interface v2
Daniel Stone (2):
Add drmModeGetFB2
Add DRM_MODE_CONNECTOR_WRITEBACK to xf86drmMode.h
Devarsh Thakkar (2):
modetest: Add support for setting mode having floating vertical refresh rate
modetest: Use floating …
[View More]vrefresh while dumping mode
Eric Engestrom (25):
Revert "Revert "libdrm: remove autotools support""
gitlab-ci: pre-build containers to improve CI run time and reliability
freedreno: drop leftover symbol from the export list
meson: import Mesa's symbols check script
amdgpu: convert to new symbols check
etnaviv: convert to new symbols check
exynos: convert to new symbols check
freedreno: convert to new symbols check
intel: convert to new symbols check
libkms: convert to new symbols check
nouveau: convert to new symbols check
omap: convert to new symbols check
radeon: convert to new symbols check
tegra: convert to new symbols check
meson: drop old symbols check environment
gitlab-ci: drop arch build down to daily builds
gitlab-ci: set up cross build infra
gitlab-ci: add x86 (32 bits) build
gitlab-ci: add aarch64 & armhf builds
gitlab-ci: add PowerPC build
gitlab-ci: rename build folder to simply `build`
add a minimal .gitignore back
meson: add symbols check for core libdrm
meson: always define whether headers exist
tests: drop redundant and slow `random` test
Ezequiel Garcia (1):
modetest: Fix segmentation fault
Flora Cui (5):
tests/amdgpu: update draw test for gfx9
tests/amdgpu: add dispatch hang test
tests/amdgpu: add bad slow dispatch test
tests/amdgpu: add gfx ring draw hang test
tests/amdgpu: add gfx ring bad slow draw test
Huang Rui (4):
amdgpu: use alloca for dependencies and sem_dependencies
amdgpu: use amdgpu_cs_submit_raw2 in amdgpu_cs_submit
amdgpu: remove the un-used chunk_array
amdgpu: clean up the cs structure variable
Imre Deak (1):
intel: drm_intel_bo_gem_create_from_* on platforms w/o HW tiling
John Stultz (1):
libdrm: modetest: Allow selecting modes by index
José Roberto de Souza (1):
intel: sync i915_pciids.h with kernel
Juston Li (1):
include/drm: sync up drm.h
Lauren Post (1):
Add ARM support into xf86drm.h
Luben Tuikov (7):
tests/amdgpu: Fix various warnings
tests/amdgpu: Fix unused function warning (v2)
tests/amdgpu: Fix buffer overflow (v3)
tests/amdgpu: Proper format for "-l"
tests/amdgpu: Fix various warnings (v2)
tests/amdgpu: Fix unused function warning (v2)
tests/amdgpu: Fix buffer overflow (v3)
Marek Olšák (3):
Revert "tests/amdgpu: Fix buffer overflow (v3)"
Revert "tests/amdgpu: Fix unused function warning (v2)"
Revert "tests/amdgpu: Fix various warnings"
Michel Dänzer (1):
tests: Only copy con->modes[0] if it exists
Peter Seiderer (1):
meson.build: fix intel atomics detection
Pierre-Eric Pelloux-Prayer (2):
gitlab-ci: update to current ci-templates master
amdgpu: increase cpu_map_count storage size
Ross Burton (1):
tests/nouveau/threaded: adapt ioctl signature
Scott Anderson (1):
meson: Replace 'config.h' with config_file
Simon Ser (1):
Fix missing stdlib includes in xf86drmMode.h
Swathi Dhanavanthri (1):
intel: sync i915_pciids.h with kernel
Thomas Petazzoni (1):
xf86atomic: require CAS support in libatomic_ops
Timo Aaltonen (1):
Bump version to 2.4.101
Vasyl Vavrychuk (2):
xf86drm: generalize the device subsystem type parsing code
xf86drm: fix subsystem type lookup for virtio mmio-based devices
Yifan Zhang (1):
tests/amdgpu: fix a amdgpu_test hang issue on some platforms.
changzhu (1):
tests/amdgpu: enable dispatch/draw tests for Renoir
xinxu(a)loongson.cn (1):
tests/amdgpu/basic_tests.c: change BUFFER_SIZE used in Userptr Test adjust to PAGE_SIZE
git tag: libdrm-2.4.101
https://dri.freedesktop.org/libdrm/libdrm-2.4.101.tar.xz
SHA256: ddf31baa8e49473624860bd166ce654dc349873f7a6c7b3305964249315c78a7 libdrm-2.4.101.tar.xz
SHA512: 658cfc6f478b674b77b4613e1af9ce8f4fd2ace8a18e75729de254d14b7c1f5d67d4bfdb58744aea74abca0f6521326225f4156bd5cbeeed79ca3e025f657e8c libdrm-2.4.101.tar.xz
PGP: https://dri.freedesktop.org/libdrm/libdrm-2.4.101.tar.xz.sig
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCgAdFiEEdS3ifE3rFwGbS2Yjy3AxZaiJhNwFAl6HM9MACgkQy3AxZaiJ
hNxYZw//YlJmyhT5L/pjESVOiFU7EB8eSE8diYsjmAqay3xqR8Xeizs5YAAwWLMy
35EKNwnamupSW7VRcGffI4RnQ8h2atANMHaeEqu18smV7FywGiQH9vnxTK7BCG4/
77kWgotprJ0kJW6/Y6I+zx/1FSMieE3RRoVeSgHhz4XtcCPnAkGCDrIltZcF8kcm
9gbnhHd+JICOS8PYOEc2CRDFxKOt4AtSmSCrzWDiqVxCtrqeqWzpCP9OGRCc1a6d
xxHmTwdeVctCXChxbKCbYD+PAUZrLZe+VeWE4UqM9uJEeufi/5tkIhkh8R2ZAE6+
fuHG2CBwHvZyrJ91VfiFmwM2UylKYhZQWpYYfriGDB8xBn5vuhueIByf9q3KxStF
1glhhO1/zGP5SQQGvc55xtyIpnrz8e6w5GdD2mXrgVTSL4Qhfi/53V4e/j5gOkjm
ekQvFH8SdsVzy0gLUrtx1f6umqnWOWjOaMK7QiUbVJYZmr2BB6YdMjcQl9KJUFN/
OcUqrHjSK3LDUozongr60US6JKFHQYBURa82Wp0KHyfXmeFYS3XhnAMw2D8iWxmr
5WHmBS2xgCD7O8U4Ct0tP1sZLE3Z7Hxv5vsYx6CzgfpKFFrCmj2Bx7MRRUxkFFiM
WMh0l8wXDwD8gJ/PqnITqK9HPZRjyD+4hROnqLvt18jqD4ydJb0=
=g/sg
-----END PGP SIGNATURE-----
[View Less]
commit 4900dda90af2cb13bc1d4c12ce94b98acc8fe64e upstream
Due to async need_flush updating via other buffer mapping, checking
gpu->need_flush in 3 places within etnaviv_buffer_queue can cause GPU
hangs.
This occurs due to need_flush being false for the first 2 checks in that
function, so that the extra dword does not get accounted for, but by the
time we come to check for the third time, gpu->mmu->need_flish is true,
which outputs the flush instruction. This causes the prefetch during …
[View More]the
final link to be off by 1. This causes GPU hangs.
It causes the ring to contain patterns like this:
0x40000005, /* LINK (8) PREFETCH=0x5,OP=LINK */
0x70040010, /* ADDRESS *0x70040010 */
0x40000002, /* LINK (8) PREFETCH=0x2,OP=LINK */
0x70040000, /* ADDRESS *0x70040000 */
0x08010e04, /* LOAD_STATE (1) Base: 0x03810 Size: 1 Fixp: 0 */
0x0000001f, /* GL.FLUSH_MMU := FLUSH_FEMMU=1,FLUSH_UNK1=1,FLUSH_UNK2=1,FLUSH_PEMMU=1,FLUSH_UNK4=1 */
0x08010e03, /* LOAD_STATE (1) Base: 0x0380C Size: 1 Fixp: 0 */
0x00000000, /* GL.FLUSH_CACHE := DEPTH=0,COLOR=0,TEXTURE=0,PE2D=0,TEXTUREVS=0,SHADER_L1=0,SHADER_L2=0,UNK10=0,UNK11=0,DESCRIPTOR_UNK12=0,DESCRIPTOR_UNK13=0 */
0x08010e02, /* LOAD_STATE (1) Base: 0x03808 Size: 1 Fixp: 0 */
0x00000701, /* GL.SEMAPHORE_TOKEN := FROM=FE,TO=PE,UNK28=0x0 */
0x48000000, /* STALL (9) OP=STALL */
0x00000701, /* TOKEN FROM=FE,TO=PE,UNK28=0x0 */
0x08010e00, /* LOAD_STATE (1) Base: 0x03800 Size: 1 Fixp: 0 */
0x00000000, /* GL.PIPE_SELECT := PIPE=PIPE_3D */
0x40000035, /* LINK (8) PREFETCH=0x35,OP=LINK */
0x70041000, /* ADDRESS *0x70041000 */
Here we see a link with prefetch of 5 dwords starting with the 3rd
instruction. It only loads the 5 dwords up and including the final
LOAD_STATE. It needs to include the final LINK instruction.
This was seen on imx6q, and the fix is confirmed to stop the GPU hangs.
The commit referenced inadvertently fixed this issue by checking
gpu->mmu->need_flush once at the start of the function.
Given that this commit is independant, and useful for all version, it
seems sensible to backport it to the stable branches.
[View Less]
On Tue, Mar 31, 2020 at 11:57 AM Peter Zijlstra <peterz(a)infradead.org> wrote:
>
> On Mon, Mar 30, 2020 at 10:01:12PM -0700, syzbot wrote:
> > Hello,
> >
> > syzbot found the following crash on:
> >
> > HEAD commit: 9420e8ad Merge tag 'for-linus' of git://git.kernel.org/pub..
> > git tree: upstream
> > console output: https://syzkaller.appspot.com/x/log.txt?x=1206ed4be00000
> > kernel config: https://syzkaller.appspot.com/x/…
[View More].config?x=27392dd2975fd692
> > dashboard link: https://syzkaller.appspot.com/bug?extid=e84d7ebd1361da13c356
> > compiler: gcc (GCC) 9.0.0 20181231 (experimental)
> >
> > Unfortunately, I don't have any reproducer for this crash yet.
> >
> > IMPORTANT: if you fix the bug, please add the following tag to the commit:
> > Reported-by: syzbot+e84d7ebd1361da13c356(a)syzkaller.appspotmail.com
> >
> > INFO: trying to register non-static key.
> > the code is fine but needs lockdep annotation.
> > turning off the locking correctness validator.
> > CPU: 1 PID: 1014 Comm: syz-executor.0 Not tainted 5.6.0-rc7-syzkaller #0
> > Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
> > Call Trace:
> > <IRQ>
> > __dump_stack lib/dump_stack.c:77 [inline]
> > dump_stack+0x188/0x20d lib/dump_stack.c:118
> > assign_lock_key kernel/locking/lockdep.c:880 [inline]
> > register_lock_class+0x14c4/0x1540 kernel/locking/lockdep.c:1189
> > __lock_acquire+0xfc/0x3ca0 kernel/locking/lockdep.c:3836
> > lock_acquire+0x197/0x420 kernel/locking/lockdep.c:4484
> > __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
> > _raw_spin_lock_irqsave+0x8c/0xbf kernel/locking/spinlock.c:159
> > try_to_wake_up+0x9f/0x17c0 kernel/sched/core.c:2547
>
> That's p->pi_lock, which gets initialized in rt_mutex_init_task() in
> copy_process(). This should be impossible. Very odd.
The stack mentions fbdev, which is a red flag at the moment. There are
a dozen of bad bugs in fbdev and around. Just few days ago Andy
pointed to another "impossible" crash "general protection fault in
do_syscall_64" which is related to dri:
https://syzkaller.appspot.com/bug?id=0ec7b2602b1ff40f0d34f38baa4ba1640727c3…https://groups.google.com/forum/#!msg/syzkaller-bugs/ePqhfYx0-8M/Q_Urt97iAA…
There are probably more random manifestations of these bugs already,
and I guess we will be getting more.
+fbdev maintainers
> > wake_up_worker kernel/workqueue.c:836 [inline]
> > insert_work+0x2ad/0x3a0 kernel/workqueue.c:1337
> > __queue_work+0x50d/0x1280 kernel/workqueue.c:1488
> > call_timer_fn+0x195/0x760 kernel/time/timer.c:1404
> > expire_timers kernel/time/timer.c:1444 [inline]
> > __run_timers kernel/time/timer.c:1773 [inline]
> > __run_timers kernel/time/timer.c:1740 [inline]
> > run_timer_softirq+0x412/0x1600 kernel/time/timer.c:1786
> > __do_softirq+0x26c/0x99d kernel/softirq.c:292
> > invoke_softirq kernel/softirq.c:373 [inline]
> > irq_exit+0x192/0x1d0 kernel/softirq.c:413
> > exiting_irq arch/x86/include/asm/apic.h:546 [inline]
> > smp_apic_timer_interrupt+0x19e/0x600 arch/x86/kernel/apic/apic.c:1146
> > apic_timer_interrupt+0xf/0x20 arch/x86/entry/entry_64.S:829
> > </IRQ>
>
> --
> You received this message because you are subscribed to the Google Groups "syzkaller-bugs" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to syzkaller-bugs+unsubscribe(a)googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/syzkaller-bugs/20200331095737.GO20730%40h….
[View Less]
Hi all,
Today's linux-next merge of the akpm-current tree got a conflict in:
mm/memory.c
between commit:
327e9fd48972 ("mm: Split huge pages on write-notify or COW")
from the drm tree and commit:
de0b1f32cbeb ("userfaultfd: wp: hook userfault handler to write protection fault")
from the akpm-current tree.
I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your …
[View More]upstream maintainer when your tree
is submitted for merging. You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.
--
Cheers,
Stephen Rothwell
diff --cc mm/memory.c
index efa59b1b109c,9e75440c79ce..000000000000
--- a/mm/memory.c
+++ b/mm/memory.c
@@@ -3949,42 -3969,29 +3969,40 @@@ static inline vm_fault_t create_huge_pm
/* `inline' is required to avoid gcc 4.1.2 build error */
static inline vm_fault_t wp_huge_pmd(struct vm_fault *vmf, pmd_t orig_pmd)
{
- if (vma_is_anonymous(vmf->vma))
+ if (vma_is_anonymous(vmf->vma)) {
+ if (userfaultfd_huge_pmd_wp(vmf->vma, orig_pmd))
+ return handle_userfault(vmf, VM_UFFD_WP);
return do_huge_pmd_wp_page(vmf, orig_pmd);
+ }
- if (vmf->vma->vm_ops->huge_fault)
- return vmf->vma->vm_ops->huge_fault(vmf, PE_SIZE_PMD);
+ if (vmf->vma->vm_ops->huge_fault) {
+ vm_fault_t ret = vmf->vma->vm_ops->huge_fault(vmf, PE_SIZE_PMD);
+
+ if (!(ret & VM_FAULT_FALLBACK))
+ return ret;
+ }
- /* COW handled on pte level: split pmd */
- VM_BUG_ON_VMA(vmf->vma->vm_flags & VM_SHARED, vmf->vma);
+ /* COW or write-notify handled on pte level: split pmd. */
__split_huge_pmd(vmf->vma, vmf->pmd, vmf->address, false, NULL);
return VM_FAULT_FALLBACK;
}
- static inline bool vma_is_accessible(struct vm_area_struct *vma)
- {
- return vma->vm_flags & (VM_READ | VM_EXEC | VM_WRITE);
- }
-
static vm_fault_t create_huge_pud(struct vm_fault *vmf)
{
-#ifdef CONFIG_TRANSPARENT_HUGEPAGE
+#if defined(CONFIG_TRANSPARENT_HUGEPAGE) && \
+ defined(CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD)
/* No support for anonymous transparent PUD pages yet */
if (vma_is_anonymous(vmf->vma))
- return VM_FAULT_FALLBACK;
- if (vmf->vma->vm_ops->huge_fault)
- return vmf->vma->vm_ops->huge_fault(vmf, PE_SIZE_PUD);
+ goto split;
+ if (vmf->vma->vm_ops->huge_fault) {
+ vm_fault_t ret = vmf->vma->vm_ops->huge_fault(vmf, PE_SIZE_PUD);
+
+ if (!(ret & VM_FAULT_FALLBACK))
+ return ret;
+ }
+split:
+ /* COW or write-notify not handled on PUD level: split pud.*/
+ __split_huge_pud(vmf->vma, vmf->pud, vmf->address);
#endif /* CONFIG_TRANSPARENT_HUGEPAGE */
return VM_FAULT_FALLBACK;
}
[View Less]
Hi all,
Today's linux-next merge of the akpm-current tree got a conflict in:
include/linux/huge_mm.h
between commit:
9a9731b18c9b ("mm: Add vmf_insert_pfn_xxx_prot() for huge page-table entries")
from the drm tree and commit:
7b6b88969e9d ("mm: merge parameters for change_protection()")
from the akpm-current tree.
I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to …
[View More]your upstream maintainer when your tree
is submitted for merging. You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.
--
Cheers,
Stephen Rothwell
diff --cc include/linux/huge_mm.h
index f63b0882c1b3,e60c923e68c4..000000000000
--- a/include/linux/huge_mm.h
+++ b/include/linux/huge_mm.h
@@@ -46,46 -46,9 +46,46 @@@ extern bool move_huge_pmd(struct vm_are
pmd_t *old_pmd, pmd_t *new_pmd);
extern int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
unsigned long addr, pgprot_t newprot,
- int prot_numa);
+ unsigned long cp_flags);
-vm_fault_t vmf_insert_pfn_pmd(struct vm_fault *vmf, pfn_t pfn, bool write);
-vm_fault_t vmf_insert_pfn_pud(struct vm_fault *vmf, pfn_t pfn, bool write);
+vm_fault_t vmf_insert_pfn_pmd_prot(struct vm_fault *vmf, pfn_t pfn,
+ pgprot_t pgprot, bool write);
+
+/**
+ * vmf_insert_pfn_pmd - insert a pmd size pfn
+ * @vmf: Structure describing the fault
+ * @pfn: pfn to insert
+ * @pgprot: page protection to use
+ * @write: whether it's a write fault
+ *
+ * Insert a pmd size pfn. See vmf_insert_pfn() for additional info.
+ *
+ * Return: vm_fault_t value.
+ */
+static inline vm_fault_t vmf_insert_pfn_pmd(struct vm_fault *vmf, pfn_t pfn,
+ bool write)
+{
+ return vmf_insert_pfn_pmd_prot(vmf, pfn, vmf->vma->vm_page_prot, write);
+}
+vm_fault_t vmf_insert_pfn_pud_prot(struct vm_fault *vmf, pfn_t pfn,
+ pgprot_t pgprot, bool write);
+
+/**
+ * vmf_insert_pfn_pud - insert a pud size pfn
+ * @vmf: Structure describing the fault
+ * @pfn: pfn to insert
+ * @pgprot: page protection to use
+ * @write: whether it's a write fault
+ *
+ * Insert a pud size pfn. See vmf_insert_pfn() for additional info.
+ *
+ * Return: vm_fault_t value.
+ */
+static inline vm_fault_t vmf_insert_pfn_pud(struct vm_fault *vmf, pfn_t pfn,
+ bool write)
+{
+ return vmf_insert_pfn_pud_prot(vmf, pfn, vmf->vma->vm_page_prot, write);
+}
+
enum transparent_hugepage_flag {
TRANSPARENT_HUGEPAGE_FLAG,
TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG,
[View Less]