On Sat, Aug 12, 2023 at 01:12:26PM +0000, Miod Vallat wrote: > > On Sat, Aug 12, 2023 at 08:00:48AM +0000, Miod Vallat wrote: > > > I have had a look at your diff and I think it's decent enough to go in > > > after some polishing. > > > > > > Can Wacom tablet users try this cleaned up diff? > > > > Hi, > > > > My WACOM tablet stopped working with this, here is a dmesg with the patch > > and > > usbdevs -v output. Let me know if there is any new patches I can test. > > > > As you can see it doesn't even attach like it should (from the dmesg). > > Thanks for reporting this. The changes in uhidev have been a bit too > aggressive indeed. > > Does this new version of the diff help? Only uhidev.c differs.
Hi! I got an instant panic after attach of uwacom0. Since I don't have a camera nor do I have panic console access on this macbook pro because the keyboard is USB, I wrote it down on 2 post-it notes. Let me see if this helps you any: uvm_fault(,,,)->e pagefault trap code 0 stopped at config_search 0x100 cmpq %rax, 0x18(%r14) ... config_search +0x100 config_found_sm +0x36 hidms_attach +0xe3 uwacom_attach +0x15c config_attach +0x1f4 Now I believe there is offsets that only work on my compilation so I'll try to get you some object dumps (objdump -D): uwacom_attach: 00000000000000e0 <uwacom_attach>: e0: f3 0f 1e fa endbr64 e4: 4c 8b 1d 00 00 00 00 mov 0(%rip),%r11 # eb <uwacom_attach+0xb> eb: 4c 33 1c 24 xor (%rsp),%r11 ef: 55 push %rbp f0: 48 89 e5 mov %rsp,%rbp f3: 57 push %rdi f4: 56 push %rsi f5: 52 push %rdx f6: 57 push %rdi f7: 41 53 push %r11 f9: 41 57 push %r15 fb: 41 56 push %r14 fd: 41 55 push %r13 ff: 41 54 push %r12 101: 48 83 ec 18 sub $0x18,%rsp 105: 49 89 d4 mov %rdx,%r12 108: 49 89 f7 mov %rsi,%r15 10b: 4c 8d 76 78 lea 0x78(%rsi),%r14 10f: 48 8b 02 mov (%rdx),%rax 112: 48 c7 46 60 00 00 00 movq $0x0,0x60(%rsi) 119: 00 11a: 48 8b 4a 08 mov 0x8(%rdx),%rcx 11e: 48 89 4e 50 mov %rcx,0x50(%rsi) 122: 48 8b 40 18 mov 0x18(%rax),%rax 126: 48 89 46 48 mov %rax,0x48(%rsi) 12a: 8a 42 10 mov 0x10(%rdx),%al 12d: 88 46 58 mov %al,0x58(%rsi) 130: 48 8b 42 08 mov 0x8(%rdx),%rax 134: 48 8b 78 48 mov 0x48(%rax),%rdi 138: 8b 70 58 mov 0x58(%rax),%esi 13b: 31 d2 xor %edx,%edx 13d: 31 c9 xor %ecx,%ecx 13f: e8 00 00 00 00 callq 144 <uwacom_attach+0x64> 144: 49 8b 7c 24 08 mov 0x8(%r12),%rdi 149: 48 8d 75 a8 lea 0xffffffffffffffa8(%rbp),%rsi 14d: 48 8d 55 b4 lea 0xffffffffffffffb4(%rbp),%rdx 151: e8 00 00 00 00 callq 156 <uwacom_attach+0x76> 156: 45 0f b6 6c 24 10 movzbl 0x10(%r12),%r13d 15c: 48 8b 7d a8 mov 0xffffffffffffffa8(%rbp),%rdi 160: 8b 75 b4 mov 0xffffffffffffffb4(%rbp),%esi 163: 31 d2 xor %edx,%edx ... hidms_attach: 0000000000000ca0 <hidms_attach>: ca0: f3 0f 1e fa endbr64 ca4: 4c 8b 1d 00 00 00 00 mov 0(%rip),%r11 # cab <hidms_attach+0xb> cab: 4c 33 1c 24 xor (%rsp),%r11 caf: 55 push %rbp cb0: 48 89 e5 mov %rsp,%rbp cb3: 57 push %rdi cb4: 56 push %rsi cb5: 41 53 push %r11 cb7: 41 57 push %r15 cb9: 41 56 push %r14 cbb: 48 83 ec 18 sub $0x18,%rsp cbf: 49 89 f7 mov %rsi,%r15 cc2: 49 89 fe mov %rdi,%r14 cc5: 8b 77 18 mov 0x18(%rdi),%esi cc8: 83 fe 01 cmp $0x1,%esi ccb: 48 c7 c0 00 00 00 00 mov $0x0,%rax cd2: 48 87 d0 xchg %rdx,%rax cd5: 48 c7 c0 00 00 00 00 mov $0x0,%rax cdc: 48 87 d0 xchg %rdx,%rax cdf: 48 0f 44 d0 cmove %rax,%rdx ce3: 48 c7 c7 00 00 00 00 mov $0x0,%rdi cea: 31 c0 xor %eax,%eax cec: e8 00 00 00 00 callq cf1 <hidms_attach+0x51> cf1: 41 8b 46 14 mov 0x14(%r14),%eax cf5: 83 e0 0a and $0xa,%eax cf8: 83 f8 02 cmp $0x2,%eax cfb: 74 13 je d10 <hidms_attach+0x70> cfd: 83 f8 0a cmp $0xa,%eax d00: 74 17 je d19 <hidms_attach+0x79> d02: 83 f8 08 cmp $0x8,%eax d05: 75 20 jne d27 <hidms_attach+0x87> d07: 48 c7 c7 00 00 00 00 mov $0x0,%rdi d0e: eb 10 jmp d20 <hidms_attach+0x80> d10: 48 c7 c7 00 00 00 00 mov $0x0,%rdi d17: eb 07 jmp d20 <hidms_attach+0x80> d19: 48 c7 c7 00 00 00 00 mov $0x0,%rdi d20: 31 c0 xor %eax,%eax d22: e8 00 00 00 00 callq d27 <hidms_attach+0x87> d27: 41 8b 46 14 mov 0x14(%r14),%eax d2b: a9 00 01 00 00 test $0x100,%eax d30: 75 7e jne db0 <hidms_attach+0x110> d32: a9 00 02 00 00 test $0x200,%eax d37: 0f 85 90 00 00 00 jne dcd <hidms_attach+0x12d> d3d: a9 00 04 00 00 test $0x400,%eax d42: 74 0e je d52 <hidms_attach+0xb2> d44: 48 c7 c7 00 00 00 00 mov $0x0,%rdi d4b: 31 c0 xor %eax,%eax d4d: e8 00 00 00 00 callq d52 <hidms_attach+0xb2> d52: 48 c7 c7 00 00 00 00 mov $0x0,%rdi d59: 31 c0 xor %eax,%eax d5b: e8 00 00 00 00 callq d60 <hidms_attach+0xc0> d60: 4c 89 7d c8 mov %r15,0xffffffffffffffc8(%rbp) d64: 49 8b 3e mov (%r14),%rdi d67: 48 89 7d d0 mov %rdi,0xffffffffffffffd0(%rbp) d6b: 48 8d 75 c8 lea 0xffffffffffffffc8(%rbp),%rsi d6f: 48 87 d0 xchg %rdx,%rax d72: 48 c7 c0 00 00 00 00 mov $0x0,%rax d79: 48 87 d0 xchg %rdx,%rax d7c: 31 c9 xor %ecx,%ecx d7e: e8 00 00 00 00 callq d83 <hidms_attach+0xe3> d83: 49 89 46 08 mov %rax,0x8(%r14) d87: 48 83 c4 18 add $0x18,%rsp d8b: 41 5e pop %r14 d8d: 41 5f pop %r15 d8f: 41 5b pop %r11 d91: c9 leaveq d92: 4c 33 1c 24 xor (%rsp),%r11 d96: 4c 3b 1d 00 00 00 00 cmp 0(%rip),%r11 # d9d <hidms_attach+0xfd> d9d: 74 10 je daf <hidms_attach+0x10f> d9f: cc int3 da0: cc int3 da1: cc int3 da2: cc int3 da3: cc int3 da4: cc int3 da5: cc int3 da6: cc int3 da7: cc int3 da8: cc int3 da9: cc int3 daa: cc int3 dab: cc int3 dac: cc int3 ... config_found_sm: 00000000000007d0 <config_found_sm>: 7d0: f3 0f 1e fa endbr64 7d4: 4c 8b 1d 00 00 00 00 mov 0(%rip),%r11 # 7db <config_found_sm+0xb> 7db: 4c 33 1c 24 xor (%rsp),%r11 7df: 55 push %rbp 7e0: 48 89 e5 mov %rsp,%rbp 7e3: 57 push %rdi 7e4: 56 push %rsi 7e5: 52 push %rdx 7e6: 51 push %rcx 7e7: 41 53 push %r11 7e9: 41 57 push %r15 7eb: 41 56 push %r14 7ed: 41 54 push %r12 7ef: 49 89 d6 mov %rdx,%r14 7f2: 49 89 f7 mov %rsi,%r15 7f5: 49 89 fc mov %rdi,%r12 7f8: 48 89 cf mov %rcx,%rdi 7fb: 4c 89 e6 mov %r12,%rsi 7fe: 4c 89 fa mov %r15,%rdx 801: e8 00 00 00 00 callq 806 <config_found_sm+0x36> 806: 48 85 c0 test %rax,%rax 809: 74 1a je 825 <config_found_sm+0x55> 80b: 4c 89 e7 mov %r12,%rdi 80e: 48 89 c6 mov %rax,%rsi 811: 4c 89 fa mov %r15,%rdx 814: 4c 89 f1 mov %r14,%rcx 817: 41 5c pop %r12 819: 41 5e pop %r14 81b: 41 5f pop %r15 81d: 41 5b pop %r11 81f: c9 leaveq ... config_search: 0000000000000070 <config_search>: 70: f3 0f 1e fa endbr64 74: 4c 8b 1d 00 00 00 00 mov 0(%rip),%r11 # 7b <config_ search+0xb> 7b: 4c 33 1c 24 xor (%rsp),%r11 7f: 55 push %rbp 80: 48 89 e5 mov %rsp,%rbp 83: 57 push %rdi 84: 56 push %rsi 85: 52 push %rdx 86: 57 push %rdi 87: 41 53 push %r11 89: 41 57 push %r15 8b: 41 56 push %r14 8d: 41 55 push %r13 8f: 41 54 push %r12 91: 53 push %rbx 92: 48 83 ec 30 sub $0x30,%rsp 96: 49 89 f6 mov %rsi,%r14 99: 48 89 7d 88 mov %rdi,0xffffffffffffff88(%rbp) 9d: 48 89 75 90 mov %rsi,0xffffffffffffff90(%rbp) a1: 48 c7 45 98 00 00 00 movq $0x0,0xffffffffffffff98(%rbp) a8: 00 a9: 48 89 55 a0 mov %rdx,0xffffffffffffffa0(%rbp) ad: 48 85 f6 test %rsi,%rsi b0: 74 10 je c2 <config_search+0x52> b2: 49 8b 46 18 mov 0x18(%r14),%rax b6: 48 8b 40 08 mov 0x8(%rax),%rax ba: 8b 40 14 mov 0x14(%rax),%eax bd: 83 e0 01 and $0x1,%eax c0: eb 02 jmp c4 <config_search+0x54> c2: 31 c0 xor %eax,%eax c4: 89 45 a8 mov %eax,0xffffffffffffffa8(%rbp) c7: c7 45 ac 00 00 00 00 movl $0x0,0xffffffffffffffac(%rbp) ce: 48 8b 05 00 00 00 00 mov 0(%rip),%rax # d5 <config_search+0x65> d5: 48 85 c0 test %rax,%rax d8: 0f 84 a5 00 00 00 je 183 <config_search+0x113> de: 49 c7 c7 00 00 00 00 mov $0x0,%r15 e5: 4c 8d 65 88 lea 0xffffffffffffff88(%rbp),%r12 e9: 41 bd 1a 00 00 00 mov $0x1a,%r13d ef: eb 1c jmp 10d <config_search+0x9d> f1: cc int3 f2: cc int3 f3: cc int3 f4: cc int3 f5: cc int3 f6: cc int3 f7: cc int3 f8: cc int3 f9: cc int3 fa: cc int3 fb: cc int3 fc: cc int3 fd: cc int3 fe: cc int3 ff: cc int3 100: 49 8b 47 40 mov 0x40(%r15),%rax 104: 49 83 c7 38 add $0x38,%r15 108: 48 85 c0 test %rax,%rax 10b: 74 76 je 183 <config_search+0x113> 10d: 41 0f b7 4f 12 movzwl 0x12(%r15),%ecx 112: 66 83 f9 04 cmp $0x4,%cx 116: 77 06 ja 11e <config_search+0xae> 118: 41 0f a3 cd bt %ecx,%r13d 11c: 72 e2 jb 100 <config_search+0x90> 11e: f6 05 00 00 00 00 02 testb $0x2,0(%rip) # 125 <config_search+0xb5> 125: 74 11 je 138 <config_search+0xc8> 127: f6 40 14 02 testb $0x2,0x14(%rax) 12b: 75 d3 jne 100 <config_search+0x90> 12d: 8b 40 10 mov 0x10(%rax),%eax 130: 83 c0 fd add $0xfffffffffffffffd,%eax 133: 83 f8 02 cmp $0x2,%eax 136: 72 c8 jb 100 <config_search+0x90> 138: 49 8b 5f 28 mov 0x28(%r15),%rbx 13c: 0f b7 03 movzwl (%rbx),%eax 13f: 66 85 c0 test %ax,%ax 142: 78 bc js 100 <config_search+0x90> 144: 48 87 d8 xchg %rbx,%rax 147: 48 83 c0 02 add $0x2,%rax 14b: 48 87 d8 xchg %rbx,%rax 14e: eb 12 jmp 162 <config_search+0xf2> 150: 0f b7 03 movzwl (%rbx),%eax 153: 48 87 d8 xchg %rbx,%rax 156: 48 83 c0 02 add $0x2,%rax 15a: 48 87 d8 xchg %rbx,%rax 15d: 66 85 c0 test %ax,%ax 160: 78 9e js 100 <config_search+0x90> 162: 0f b7 c0 movzwl %ax,%eax 165: 48 6b c0 38 imul $0x38,%rax,%rax 169: 48 8d 80 00 00 00 00 lea 0x0(%rax),%rax 170: 49 39 46 18 cmp %rax,0x18(%r14) 174: 75 da jne 150 <config_search+0xe0> 176: 4c 89 e7 mov %r12,%rdi 179: 4c 89 fe mov %r15,%rsi 17c: e8 6f 00 00 00 callq 1f0 <mapply> 181: eb cd jmp 150 <config_search+0xe0> 183: 83 3d 00 00 00 00 00 cmpl $0x0,0(%rip) # 18a <config_search+0x11a> 18a: 4c 8b 75 98 mov 0xffffffffffffff98(%rbp),%r14 18e: 74 3d je 1cd <config_search+0x15d> 190: 4d 85 f6 test %r14,%r14 Best Regards, -peter