From owner-freebsd-current@freebsd.org  Wed Jan 13 07:15:03 2021
Return-Path: <owner-freebsd-current@freebsd.org>
Delivered-To: freebsd-current@mailman.nyi.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.nyi.freebsd.org (Postfix) with ESMTP id 624A64D2725
 for <freebsd-current@mailman.nyi.freebsd.org>;
 Wed, 13 Jan 2021 07:15:03 +0000 (UTC)
 (envelope-from jakob@alvermark.net)
Received: from out.alvermark.net (out.alvermark.net [185.34.136.138])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id 4DFzGv1y04z3mlR;
 Wed, 13 Jan 2021 07:15:02 +0000 (UTC)
 (envelope-from jakob@alvermark.net)
Received: from c-f649235c.06-431-73746f70.bbcust.telenor.se ([92.35.73.246]
 helo=mail.alvermark.net)
 by out.alvermark.net with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256)
 (Exim 4.91 (FreeBSD)) (envelope-from <jakob@alvermark.net>)
 id 1kzaMs-0004e8-ST; Wed, 13 Jan 2021 08:14:58 +0100
Received: from office.as33885.net ([84.55.65.101] helo=[192.168.3.70])
 by mail.alvermark.net with esmtpsa (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128)
 (Exim 4.91 (FreeBSD)) (envelope-from <jakob@alvermark.net>)
 id 1kzaMs-0009uA-15; Wed, 13 Jan 2021 08:14:58 +0100
Subject: Re: Panic after updating
To: Hans Petter Selasky <hps@selasky.org>,
 FreeBSD Current <freebsd-current@freebsd.org>, Ian Lepore <ian@FreeBSD.org>
References: <87512669-f0b9-eb2f-1103-170a29384ea8@alvermark.net>
 <ad969a6e-4029-b85c-f304-1198b05ad725@selasky.org>
 <34a9dafd-9690-1b33-abf8-017ad31cf2ab@alvermark.net>
 <e407413b-730a-d60d-f50d-0b6f490da74a@selasky.org>
 <60e4db60-c816-463e-0e08-a33c674ad4da@alvermark.net>
 <af76d2fc-cc6f-4ca4-c293-ae1ff8f2a51d@alvermark.net>
 <75784796-b513-5573-abc4-8c445d03c007@selasky.org>
 <cdc94c54-6f21-d452-87fd-9b0e5d7cbe95@alvermark.net>
 <5724744d-7710-4c3c-416b-01314cb196d4@selasky.org>
 <1bab5b76-eb56-671f-d52d-db1812c9be22@alvermark.net>
 <f3e0ceb9-07ea-0118-645b-47a93085883f@selasky.org>
 <e72200ec-3c33-0b8a-90fe-66a969eb8f4a@selasky.org>
From: Jakob Alvermark <jakob@alvermark.net>
Message-ID: <94c9421b-a9d9-ceae-510d-336d2bd691bd@alvermark.net>
Date: Wed, 13 Jan 2021 08:14:57 +0100
User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:78.0) Gecko/20100101
 Thunderbird/78.6.1
MIME-Version: 1.0
In-Reply-To: <e72200ec-3c33-0b8a-90fe-66a969eb8f4a@selasky.org>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
Content-Language: en-US
X-Rspamd-Queue-Id: 4DFzGv1y04z3mlR
X-Spamd-Bar: ----
X-Spamd-Result: default: False [-4.00 / 15.00];
	 REPLY(-4.00)[]
X-BeenThere: freebsd-current@freebsd.org
X-Mailman-Version: 2.1.34
Precedence: list
List-Id: Discussions about the use of FreeBSD-current
 <freebsd-current.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/freebsd-current>, 
 <mailto:freebsd-current-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/freebsd-current/>
List-Post: <mailto:freebsd-current@freebsd.org>
List-Help: <mailto:freebsd-current-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/freebsd-current>, 
 <mailto:freebsd-current-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Wed, 13 Jan 2021 07:15:03 -0000


On 1/12/21 6:10 PM, Hans Petter Selasky wrote:
> On 1/12/21 2:46 PM, Hans Petter Selasky wrote:
>> On 1/12/21 2:40 PM, Jakob Alvermark wrote:
>>>
>>> On 1/12/21 2:16 PM, Hans Petter Selasky wrote:
>>>> On 1/12/21 1:43 PM, Jakob Alvermark wrote:
>>>>>
>>>>> On 1/12/21 12:54 PM, Hans Petter Selasky wrote:
>>>>>> On 1/12/21 12:32 PM, Jakob Alvermark wrote:
>>>>>>> Alright, after a new bisect run I got a different result, so I 
>>>>>>> most likely did something wrong the first time.
>>>>>>>
>>>>>>> ff3468ac94597efdcbc56f372528dfc98b114dac is the first bad commit
>>>>>>> commit ff3468ac94597efdcbc56f372528dfc98b114dac
>>>>>>> Author: Ian Lepore <ian@FreeBSD.org>
>>>>>>> Date:   Sat Dec 12 18:34:15 2020 +0000
>>>>>>>
>>>>>>>      Provide userland notification of gpio pin changes 
>>>>>>> ("userland gpio interrupts").
>>>>>>>
>>>>>>>
>>>>>>> Maybe more likely this is causing the panic?
>>>>>>
>>>>>> Doesn't make sense :-(
>>>>>>
>>>>>> Can you try to fetch the latest 13-current as of now and re-build 
>>>>>> the kernel? I noticed some issues myself which got fixed.
>>>>>
>>>>>
>>>>> I did that, still panics the same way.
>>>>>
>>>>> But, the commit above is about gpio, and I do have 
>>>>> 'bytgpio_load="YES"' in my /boot/loader.conf
>>>>>
>>>>> If I boot the kernel without that it works.
>>>>>
>>>>> 'kldload bytgpio' panics the machine.
>>>>>
>>>>
>>>> Could you screenshot the panic backtrace after kldload of bytegpio ?
>>>
>>> Sure:
>>>
>>> panic: vm_fault_lookup: fault on nofault entry, addr: 
>>> 0xfffffe00c96c2000
>>> cpuid = 1
>>> time = 1610458544
>>> KDB: stack backtrace:
>>> db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 
>>> 0xfffffe00c7306140
>>> vpanic() at vpanic+0x181/frame 0xfffffe00c7306190
>>> panic() at panic+0x43/frame 0xfffffe00c73061f0
>>> vm_fault() at vm_fault+0x142d/frame 0xfffffe00c73062f0
>>> vm_fault_trap() at vm_fault_trap+0xb1/frame 0xfffffe00c7306340
>>> trap_pfault() at trap_pfault+0x1f6/frame 0xfffffe00c73063a0
>>> trap() at trap+0x280/frame 0xfffffe00c73064b0
>>> calltrap() at calltrap+0x8/frame 0xfffffe00c73064b0
>>> --- trap 0xc, rip = 0xffffffff80c27d08, rsp = 0xfffffe00c7306580, 
>>> rbp = 0xfffffe00c7306580 ---
>>> lock_init() at lock_init+0xf8/frame 0xfffffe00c7306580
>>> _mtx_init() at _mtx_init+0x70/frame 0xfffffe00c73065a0
>>> gpioc_attach() at gpioc_attach+0x139/frame 0xfffffe00c7306620
>>> device_attach() at device_attach+0x3dd/frame 0xfffffe00c7306670
>>> bus_generic_attach() at bus_generic_attach+0x4b/frame 
>>> 0xfffffe00c73066a0
>>> gpiobus_attach_bus() at gpiobus_attach_bus+0x44/frame 
>>> 0xfffffe00c73066c0
>>> bytgpio_attach() at bytgpio_attach+0x1f7/frame 0xfffffe00c7306710
>>> device_attach() at device_attach+0x3dd/frame 0xfffffe00c7306760
>>> device_probe_and_attach() at device_probe_and_attach+0x41/frame 
>>> 0xfffffe00c7306790
>>> acpi_driver_added() at acpi_driver_added+0xaa/frame 0xfffffe00c73067c0
>>> devclass_driver_added() at devclass_driver_added+0x3c/frame 
>>> 0xfffffe00c7306800
>>> devclass_add_driver() at devclass_add_driver+0x13d/frame 
>>> 0xfffffe00c7306840
>>> module_register_init() at module_register_init+0xa7/frame 
>>> 0xfffffe00c7306870
>>> linker_load_module() at linker_load_module+0xbca/frame 
>>> 0xfffffe00c7306b80
>>> kern_kldload() at kern_kldload+0xbb/frame 0xfffffe00c7306bd0
>>> sys_kldload() at sys_kldload+0x5b/frame 0xfffffe00c7306c00
>>> amd64_syscall() at amd64_syscall+0x111/frame 0xfffffe00c7306d30
>>> fast_syscall_common() at fast_syscall_common+0xf8/frame 
>>> 0xfffffe00c7306d30
>>> --- syscall (304, FreeBSD ELF64, sys_kldload), rip = 0x80037715a, 
>>> rsp = 0x7fffffffe698, rbp = 0x7fffffffec10 ---
>>> KDB: enter: panic
>>>
>>
>> Adding Ian.
>>
>
> Looks like an off-by-one there.
>
> Can you try to apply this patch manually:
>
>> diff --git a/sys/dev/gpio/gpioc.c b/sys/dev/gpio/gpioc.c
>> index 727b07a7058..29d795bb54b 100644
>> --- a/sys/dev/gpio/gpioc.c
>> +++ b/sys/dev/gpio/gpioc.c
>> @@ -582,7 +582,7 @@ gpioc_attach(device_t dev)
>>                 return (err);
>>         sc->sc_pin_intr = malloc(sizeof(struct gpioc_pin_intr) * 
>> sc->sc_npins,
>>             M_GPIOC, M_WAITOK | M_ZERO);
>> -       for (int i = 0; i <= sc->sc_npins; i++) {
>> +       for (int i = 0; i != sc->sc_npins; i++) {
>>                 sc->sc_pin_intr[i].pin = malloc(sizeof(struct 
>> gpiobus_pin),
>>                     M_GPIOC, M_WAITOK | M_ZERO);
>>                 sc->sc_pin_intr[i].sc = sc;
>> @@ -616,7 +616,7 @@ gpioc_detach(device_t dev)
>>         if (sc->sc_ctl_dev)
>>                 destroy_dev(sc->sc_ctl_dev);
>>
>> -       for (int i = 0; i <= sc->sc_npins; i++) {
>> +       for (int i = 0; i != sc->sc_npins; i++) {
>>                 mtx_destroy(&sc->sc_pin_intr[i].mtx);
>>                 free(&sc->sc_pin_intr[i].pin, M_GPIOC);
>>         }

Yes! That works! Thank you!


Jakob