From nobody Mon Jan 3 16:01:10 2022 X-Original-To: freebsd-drivers@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 6F8FC1925D44 for ; Mon, 3 Jan 2022 16:01:16 +0000 (UTC) (envelope-from lee.matthews.external@stormshield.eu) Received: from work.stormshield.eu (gwlille.netasq.com [91.212.116.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4JSL8C5Cx0z4XPn for ; Mon, 3 Jan 2022 16:01:12 +0000 (UTC) (envelope-from lee.matthews.external@stormshield.eu) Received: from work.stormshield.eu (localhost.localdomain [127.0.0.1]) by work.stormshield.eu (Postfix) with ESMTPS id 9D9833761810 for ; Mon, 3 Jan 2022 17:01:10 +0100 (CET) Received: from localhost (localhost.localdomain [127.0.0.1]) by work.stormshield.eu (Postfix) with ESMTP id 7D6623761E0D for ; Mon, 3 Jan 2022 17:01:10 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.10.3 work.stormshield.eu 7D6623761E0D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=stormshield.eu; s=5EC8D4C2-228B-11EC-A8BC-C05B4988C3CE; t=1641225670; bh=FaiTOrLo79MUjAC8lSBvb/losQooFp4SGkzuU2geBY8=; h=Date:From:To:Message-ID:MIME-Version; b=V7cswFymKM8IGwYnlrfbzafwklQj/6+P/A73Zdg7w03syeCDxy5NIiBc2PYCjFAkE Fxg8V9/RrmxErQnKBDZUEPLdTuvKoIOgq1J2IhVyPc1M8RE7pmIy4N0dGYGkOCwNao zCeOHYVZkTid0KyGAa6++WyahgTbGWJpGVHNumkg= Received: from work.stormshield.eu ([127.0.0.1]) by localhost (work.stormshield.eu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id FCk-9Pn_euqA for ; Mon, 3 Jan 2022 17:01:10 +0100 (CET) Received: from work.stormshield.eu (localhost.localdomain [127.0.0.1]) by work.stormshield.eu (Postfix) with ESMTP id 5866A3761810 for ; Mon, 3 Jan 2022 17:01:10 +0100 (CET) Date: Mon, 3 Jan 2022 17:01:10 +0100 (CET) To: freebsd-drivers@FreeBSD.org Message-ID: <823709224.21545967.1641225670315.JavaMail.zimbra@stormshield.eu> Subject: SSD trim crash List-Id: Writing device drivers for FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-drivers List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-drivers@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Thread-Index: QHNPJEU4Dwl/WVSUegySx6eItLxaEg== Thread-Topic: SSD trim crash X-Rspamd-Queue-Id: 4JSL8C5Cx0z4XPn X-Spamd-Bar: --- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=stormshield.eu header.s=5EC8D4C2-228B-11EC-A8BC-C05B4988C3CE header.b=V7cswFym; dmarc=pass (policy=quarantine) header.from=stormshield.eu; spf=pass (mx1.freebsd.org: domain of lee.matthews.external@stormshield.eu designates 91.212.116.1 as permitted sender) smtp.mailfrom=lee.matthews.external@stormshield.eu X-Spamd-Result: default: False [-4.00 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; RCVD_COUNT_FIVE(0.00)[5]; R_DKIM_ALLOW(-0.20)[stormshield.eu:s=5EC8D4C2-228B-11EC-A8BC-C05B4988C3CE]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; R_SPF_ALLOW(-0.20)[+ip4:91.212.116.1]; MIME_GOOD(-0.10)[text/plain]; TO_DN_NONE(0.00)[]; PREVIOUSLY_DELIVERED(0.00)[freebsd-drivers@freebsd.org]; RCPT_COUNT_ONE(0.00)[1]; NEURAL_HAM_LONG(-1.00)[-1.000]; DKIM_TRACE(0.00)[stormshield.eu:+]; DMARC_POLICY_ALLOW(-0.50)[stormshield.eu,quarantine]; NEURAL_HAM_SHORT(-1.00)[-0.999]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_LAST(0.00)[]; ASN(0.00)[asn:49068, ipnet:91.212.116.0/24, country:FR]; MID_RHS_MATCH_FROM(0.00)[] Reply-To: lee.matthews.external@stormshield.eu From: Lee MATTHEWS via freebsd-drivers X-Original-From: Lee MATTHEWS X-ThisMailContainsUnwantedMimeParts: N Hello, I have been tasked with working on an intermittent problem that has been af= fecting some of our products. During in-house testing, we observe that occa= sionally our system crashes and reboots. After reboot, the system gets bloc= ked in the BIOS and it does not advance any further because the BIOS does n= ot detect the SSD disk. The crash appears to happen randomly during testing= , as it can take anything from several hours of continuous testing to a wee= k of running without stop for the crash to occur. The only way to get the s= ystem back up and running again is to power down and then up the machine, a= t which point the disk once again becomes visible to the BIOS. Our products are based on FreeBSD version 11.3. The crash appears to be linked to the type of disk that is being used. We h= ave one brand of disk that has never had a problem (even after a month of c= ontinuous testing) and others that, after testing, fail and after reboot ge= t blocked in the BIOS. Logging via the serial console, I have observed the following crash : -- [2021-12-10 20:56:10] ahcich1: Timeout on slot 5 port 0 [2021-12-10 20:56:10] ahcich1: is 00000000 cs 00000020 ss 00000000 rs 00000= 020 tfd c0 serr 00000000 cmd 0000c517 [2021-12-10 20:56:11] ahcich1: (ada0:ahcich1:0:0:0): DSM TRIM. ACB: 06 01 0= 0 00 00 40 00 00 00 00 01 00 [2021-12-10 20:56:11] AHCI reset... [2021-12-10 20:56:11] (ada0:ahcich1:0:0:0): CAM status: Command timeout [2021-12-10 20:56:11] ahcich1: (ada0:ahcich1:0:SATA connect time=3D100us st= atus=3D00000133 [2021-12-10 20:56:11] 0:0): Retrying command [2021-12-10 20:56:11] ahcich1: AHCI reset: device found [2021-12-10 20:56:42] ahcich1: AHCI reset: device not ready after 31000ms (= tfd =3D 00000080) [2021-12-10 20:57:15] ahcich1: Timeout on slot 6 port 0 [2021-12-10 20:57:15] ahcich1: is 00000000 cs 00000040 ss 00000000 rs 00000= 040 tfd 80 serr 00000000 cmd 0000c617 [2021-12-10 20:57:15] ahcich1: (aprobe0:ahcich1:0:0:0): ATA_IDENTIFY. ACB: = ec 00 00 00 00 40 00 00 00 00 00 00 [2021-12-10 20:57:16] AHCI reset... [2021-12-10 20:57:16] (aprobe0:ahcich1:0:0:0): CAM status: Command timeout [2021-12-10 20:57:16] ahcich1: (aprobe0:SATA connect time=3D100us status=3D= 00000133 [2021-12-10 20:57:16] ahcich1:0:ahcich1: AHCI reset: device found [2021-12-10 20:57:16] 0:0): Retrying command [2021-12-10 20:57:47] ahcich1: AHCI reset: device not ready after 31000ms (= tfd =3D 00000080) [2021-12-10 20:58:20] ahcich1: Timeout on slot 7 port 0 [2021-12-10 20:58:20] ahcich1: is 00000000 cs 00000080 ss 00000000 rs 00000= 080 tfd 80 serr 00000000 cmd 0000c717 [2021-12-10 20:58:20] ahcich1: (aprobe0:ahcich1:0:0:0): ATA_IDENTIFY. ACB: = ec 00 00 00 00 40 00 00 00 00 00 00 [2021-12-10 20:58:21] AHCI reset... [2021-12-10 20:58:21] (aprobe0:ahcich1:0:0:0): CAM status: Command timeout [2021-12-10 20:58:21] ahcich1: (aprobe0:ahcich1:0:SATA connect time=3D100us= status=3D00000133 [2021-12-10 20:58:21] 0:0): ahcich1: AHCI reset: device found [2021-12-10 20:58:21] Error 5, Retries exhausted [2021-12-10 20:58:52] ahcich1: AHCI reset: device not ready after 31000ms (= tfd =3D 00000080) [2021-12-10 20:59:25] ahcich1: Timeout on slot 8 port 0 [2021-12-10 20:59:25] ahcich1: is 00000000 cs 00000100 ss 00000000 rs 00000= 100 tfd 80 serr 00000000 cmd 0000c817 [2021-12-10 20:59:25] ahcich1: (aprobe0:ahcich1:0:0:0): ATA_IDENTIFY. ACB: = ec 00 00 00 00 40 00 00 00 00 00 00 [2021-12-10 20:59:26] AHCI reset... [2021-12-10 20:59:26] (aprobe0:ahcich1:0:0:0): CAM status: Command timeout [2021-12-10 20:59:26] ahcich1: (aprobe0:SATA connect time=3D100us status=3D= 00000133 [2021-12-10 20:59:26] ahcich1:0:ahcich1: 0:AHCI reset: device found [2021-12-10 20:59:26] 0): Error 5, Retry was blocked [2021-12-10 20:59:26] ada0 at ahcich1 bus 0 scbus0 target 0 lun 0 [2021-12-10 20:59:26] ada0: s/n 2009148= 02684 detached [2021-12-10 20:59:26] g_vfs_done():ufs/log[WRITE(offset=3D5309202432, lengt= h=3D32768)]error =3D 6 [2021-12-10 20:59:26] pass0 at ahcich1 bus 0 scbus0 target 0 lun 0 [2021-12-10 20:59:26] g_vfs_done():pass0: ufs/log[WRITE(offset=3D65027883008, length=3D16384)] s/n 200914802684erro= r =3D 6 [2021-12-10 20:59:26] detached [2021-12-10 20:59:26] g_vfs_done():(pass0:ahcich1:0:ufs/log[WRITE(offset=3D= 65124368384, length=3D32768)]0:error =3D 6 [2021-12-10 20:59:26] 0): g_vfs_done():Periph destroyed [2021-12-10 20:59:26] ufs/log[WRITE(offset=3D65124368384, length=3D32768)]e= rror =3D 6 [2021-12-10 20:59:26] g_vfs_done():ufs/log[WRITE(offset=3D65126465536, leng= th=3D32768)]error =3D 6 [2021-12-10 20:59:26] g_vfs_done():ufs/log[WRITE(offset=3D65126465536, leng= th=3D32768)]error =3D 6 [2021-12-10 20:59:26] g_vfs_done():g_vfs_done():ufs/log[WRITE(offset=3D2470= 2976, length=3D512)]ufs/log[WRITE(offset=3D65126662144, length=3D16384)]err= or =3D 6 [2021-12-10 20:59:27] panic: cannot reassign paging buffer [2021-12-10 20:59:27] cpuid =3D 0 [2021-12-10 20:59:27] __HardenedBSD_version =3D 1100056 __FreeBSD_version = =3D 1103500 [2021-12-10 20:59:27] version =3D NS-BSD 4.2.0.beta--HBSD #0 : Wed Dec 1 1= 4:00:48 CET 2021 [2021-12-10 20:59:27] build@BuildFreeBSD-11.3-hardened:/home/build/buil= d/kernel/work-OPTIM/sys/amd64/compile/NETASQ.XL.SMP.HW.RELEASE [2021-12-10 20:59:27] Uptime: 2d0h46m1s [2021-12-10 20:59:27] Dumping 2004 out of 8064 MB:..1%..11%..21%..31%..41%.= .51%..61%..71%..81%..91% [2021-12-10 21:00:29] Dump complete [2021-12-10 21:00:31] =C3=BEVersion 2.15.1236. Copyright (C) 2012 American = Megatrends, Inc. =20 -- It appears that after sending a SATA TRIM command, that the disk stops resp= onding. I've also observed another crash that happens just after a TRIM com= mand. According to camcontrol, the disk supports the TRIM command : -- camcontrol identify /dev/ada0 pass0: ACS-4 ATA SATA 3.x device pass0: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 512bytes) =20 protocol ATA/ATAPI-11 SATA 3.x device model WDC PC SA530 SDASB8Y256G firmware revision 40103000 serial number 200914802684 WWN 5001b448b13c08ca cylinders 16383 heads 16 sectors/track 63 sector size logical 512, physical 512, offset 0 LBA supported 268435455 sectors LBA48 supported 500118192 sectors PIO supported PIO4 DMA supported WDMA2 UDMA6 media RPM non-rotating Zoned-Device Commands no =20 Feature Support Enabled Value Vendor read ahead yes yes write cache yes yes flush cache yes yes overlap no Tagged Command Queuing (TCQ) no no Native Command Queuing (NCQ) yes 32 tags NCQ Queue Management no NCQ Streaming no Receive & Send FPDMA Queued no SMART yes yes microcode download yes yes security yes no power management yes yes advanced power management yes yes 128/0x80 automatic acoustic management no no media status notification no no power-up in Standby no no write-read-verify no no unload no no general purpose logging yes yes free-fall no no Data Set Management (DSM/TRIM) yes DSM - max 512byte blocks yes 8 DSM - deterministic read yes zeroed Host Protected Area (HPA) no -- I found this patch concerning a similar problem : https://bugs.freebsd.org/= bugzilla/show_bug.cgi?id=3D222802 I've modified sys/cam/ata/ata_da.c to deactivate the trim functionality. -- +diff --git sys/cam/ata/ata_da.c sys/cam/ata/ata_da.c +index cba52c5458be..ad256da0a495 100644 +--- sys/cam/ata/ata_da.c ++++ sys/cam/ata/ata_da.c +@@ -1798,7 +1798,7 @@ adaregister(struct cam_periph *periph, void *arg) + softc->disk->d_flags =3D DISKFLAG_DIRECT_COMPLETION | DISKFLAG_CANZ= ONE; + if (softc->flags & ADA_FLAG_CAN_FLUSHCACHE) + softc->disk->d_flags |=3D DISKFLAG_CANFLUSHCACHE; +- if (softc->flags & ADA_FLAG_CAN_TRIM) { ++ if (0 /*softc->flags & ADA_FLAG_CAN_TRIM */) { + softc->disk->d_flags |=3D DISKFLAG_CANDELETE; + softc->disk->d_delmaxsize =3D softc->params.secsize * + ATA_DSM_RANGE_MAX * -- I've been running a set of tests on one of our products for over two weeks = with the trim deactivated (using the above patch) and there have been no cr= ashes. Could this issue be an internal disk firmware problem? Is it possible that camcontrol reports that the disk supports TRIM yet in r= eality it isn't supported, or isn't supported fully? I've observed that this crash doesn't happen on the first TRIM command, is = it possible that a set of SATA commands destabilize the disk firmware and c= ause it to crash? Is it possible that the timeout isn't long enough for the TRIM command? Thanks in advance for any help. Best wishes, Lee Matthews From nobody Mon Jan 3 16:15:59 2022 X-Original-To: freebsd-drivers@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 27825192913A for ; Mon, 3 Jan 2022 16:16:11 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: from mail-ua1-x933.google.com (mail-ua1-x933.google.com [IPv6:2607:f8b0:4864:20::933]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1D4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4JSLTR0Qt5z4bCh for ; Mon, 3 Jan 2022 16:16:11 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: by mail-ua1-x933.google.com with SMTP id p1so36501681uap.9 for ; Mon, 03 Jan 2022 08:16:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bsdimp-com.20210112.gappssmtp.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=GzC7Vfg4hSekeaSHQU8++uaHK8ruRajI7jZE1EnwJ9A=; b=HMjeIekzBmFjSussX671GMwuyMlZSjr4yqprJsdZdRT2HC0hURM5HqsowYeFZzz6Zu lwZGZYb0CK7LklYWRn6ffuZjMQGmlwHCHhkXOD9JVIpRvfxHuA+jWx8wD8PlToV2z/A9 cHmFAO9SNBbplr9iuW2ZY+Iib78+BudLi246a7tGHaJ+Clo2ojL4ZJren3gfkU+CwoVC L36wj9qWFXG1tQmljLOmdCGQ9W4+2xtUqfxTtU4ronLKwjrtItnVLk+9REx3tISlvFG2 A/jjww8y4ZLmFQQnvjp7Tt2LhdMBcNTjFO8iNveyX4YOvG7CRLqdQF7b7tSVGw7epR22 J9Uw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=GzC7Vfg4hSekeaSHQU8++uaHK8ruRajI7jZE1EnwJ9A=; b=ZxUF1wjBOOl4PadixBJ8easjVSZ4zem/S6eWSZS5SQXgBxIRHaXgki/Ypuhefim9Km b1Ub+4Uc4PhnU71EPErNDPW5NFcDuZffKpKmeTo8poRyXofoBu+jq27jh491enckgMWn Sz3KQ9eBNUALZU6tcF5YLs54+dV6czT/wo+Qhg1o60rG4vzkt0FIJP+Qt6uDyq5rw0B/ LztlOCusAMfAf9baxY8VHkTfPjsCQqRHBoYCm8VFrfM4dW0JvGPgmDEiUBIikbmSDmO5 T4Vy4rWSGD+IAorhpHzvkeoVuwwyQ2VAbAtQAUD4KzSEUCWpYgxVdmzrlhqrB2otUZn4 bBLQ== X-Gm-Message-State: AOAM532+EGlg3kFWAiGjY2fZUc9BrjcQa6yP53GsjfI40gl3lfo4lDUk Ma3YFIzPuW7n9+YBp+bJxq2bJa+srS01sItOHCgqmj8tl1o= X-Google-Smtp-Source: ABdhPJwxVE7GlgpeY0WTPO012h1mmIrcGenemNQuZuOTVN4fnhQppWiiKXwzOgaZxrwCYemm3Nn6oEXWgmeY6TiOcvQ= X-Received: by 2002:a05:6102:3e86:: with SMTP id m6mr5381253vsv.77.1641226570252; Mon, 03 Jan 2022 08:16:10 -0800 (PST) List-Id: Writing device drivers for FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-drivers List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-drivers@freebsd.org MIME-Version: 1.0 References: <823709224.21545967.1641225670315.JavaMail.zimbra@stormshield.eu> In-Reply-To: <823709224.21545967.1641225670315.JavaMail.zimbra@stormshield.eu> From: Warner Losh Date: Mon, 3 Jan 2022 09:15:59 -0700 Message-ID: Subject: Re: SSD trim crash To: lee.matthews.external@stormshield.eu Cc: freebsd-drivers@freebsd.org Content-Type: multipart/alternative; boundary="000000000000b75e5a05d4afd639" X-Rspamd-Queue-Id: 4JSLTR0Qt5z4bCh X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-ThisMailContainsUnwantedMimeParts: N --000000000000b75e5a05d4afd639 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable You can set the trim method to nothing w/o that patch. kern.cam.ada.X.delete_method=3DDISABLE There's also a mechanism through quirks that can disable known troublemakers, though to date we've only disable those drives that cause data corruption with TRIMs. FreeBSD makes heavy use of TRIMs at times to improve the info the drive's firmware has on what's actually in use. Some drives love this and their write amplification is reduced (so performance and longevity increased). Other drives, as you've discovered, implement TRIMs in a sub-optimal manner. I've seen too many TRIMs cause drives to hang, but it's never been as severe as you are seeing (I have seen it on reboot once or twice, but my usual heartache with TRIMs has been just really bad performance). Older versions of FreeBSD didn't have TRIM collapsing in any real sense, so would send lots and lots of TRIMs to drives which often times would lead to poor performance. UFS and ada have both been enhanced to reduce that in newer versions of FreeBSD= . FreeBSD 11.3 is out of support. You may have slightly better luck with a newer FreeBSD in general (there's more TRIM management in newer FreeBSDs, especially 13.0 and newer). There's a chance that the improvements will help, but if the drives firmware is bad enough, disabling trim on the models of drives where there are problems may be your only option. Warner On Mon, Jan 3, 2022 at 9:01 AM Lee MATTHEWS via freebsd-drivers < freebsd-drivers@freebsd.org> wrote: > Hello, > > I have been tasked with working on an intermittent problem that has been > affecting some of our products. During in-house testing, we observe that > occasionally our system crashes and reboots. After reboot, the system get= s > blocked in the BIOS and it does not advance any further because the BIOS > does not detect the SSD disk. The crash appears to happen randomly during > testing, as it can take anything from several hours of continuous testing > to a week of running without stop for the crash to occur. The only way to > get the system back up and running again is to power down and then up the > machine, at which point the disk once again becomes visible to the BIOS. > > Our products are based on FreeBSD version 11.3. > > The crash appears to be linked to the type of disk that is being used. We > have one brand of disk that has never had a problem (even after a month o= f > continuous testing) and others that, after testing, fail and after reboot > get blocked in the BIOS. > > > Logging via the serial console, I have observed the following crash : > > -- > [2021-12-10 20:56:10] ahcich1: Timeout on slot 5 port 0 > [2021-12-10 20:56:10] ahcich1: is 00000000 cs 00000020 ss 00000000 rs > 00000020 tfd c0 serr 00000000 cmd 0000c517 > [2021-12-10 20:56:11] ahcich1: (ada0:ahcich1:0:0:0): DSM TRIM. ACB: 06 01 > 00 00 00 40 00 00 00 00 01 00 > [2021-12-10 20:56:11] AHCI reset... > [2021-12-10 20:56:11] (ada0:ahcich1:0:0:0): CAM status: Command timeout > [2021-12-10 20:56:11] ahcich1: (ada0:ahcich1:0:SATA connect time=3D100us > status=3D00000133 > [2021-12-10 20:56:11] 0:0): Retrying command > [2021-12-10 20:56:11] ahcich1: AHCI reset: device found > [2021-12-10 20:56:42] ahcich1: AHCI reset: device not ready after 31000ms > (tfd =3D 00000080) > [2021-12-10 20:57:15] ahcich1: Timeout on slot 6 port 0 > [2021-12-10 20:57:15] ahcich1: is 00000000 cs 00000040 ss 00000000 rs > 00000040 tfd 80 serr 00000000 cmd 0000c617 > [2021-12-10 20:57:15] ahcich1: (aprobe0:ahcich1:0:0:0): ATA_IDENTIFY. ACB= : > ec 00 00 00 00 40 00 00 00 00 00 00 > [2021-12-10 20:57:16] AHCI reset... > [2021-12-10 20:57:16] (aprobe0:ahcich1:0:0:0): CAM status: Command timeou= t > [2021-12-10 20:57:16] ahcich1: (aprobe0:SATA connect time=3D100us > status=3D00000133 > [2021-12-10 20:57:16] ahcich1:0:ahcich1: AHCI reset: device found > [2021-12-10 20:57:16] 0:0): Retrying command > [2021-12-10 20:57:47] ahcich1: AHCI reset: device not ready after 31000ms > (tfd =3D 00000080) > [2021-12-10 20:58:20] ahcich1: Timeout on slot 7 port 0 > [2021-12-10 20:58:20] ahcich1: is 00000000 cs 00000080 ss 00000000 rs > 00000080 tfd 80 serr 00000000 cmd 0000c717 > [2021-12-10 20:58:20] ahcich1: (aprobe0:ahcich1:0:0:0): ATA_IDENTIFY. ACB= : > ec 00 00 00 00 40 00 00 00 00 00 00 > [2021-12-10 20:58:21] AHCI reset... > [2021-12-10 20:58:21] (aprobe0:ahcich1:0:0:0): CAM status: Command timeou= t > [2021-12-10 20:58:21] ahcich1: (aprobe0:ahcich1:0:SATA connect time=3D100= us > status=3D00000133 > [2021-12-10 20:58:21] 0:0): ahcich1: AHCI reset: device found > [2021-12-10 20:58:21] Error 5, Retries exhausted > [2021-12-10 20:58:52] ahcich1: AHCI reset: device not ready after 31000ms > (tfd =3D 00000080) > [2021-12-10 20:59:25] ahcich1: Timeout on slot 8 port 0 > [2021-12-10 20:59:25] ahcich1: is 00000000 cs 00000100 ss 00000000 rs > 00000100 tfd 80 serr 00000000 cmd 0000c817 > [2021-12-10 20:59:25] ahcich1: (aprobe0:ahcich1:0:0:0): ATA_IDENTIFY. ACB= : > ec 00 00 00 00 40 00 00 00 00 00 00 > [2021-12-10 20:59:26] AHCI reset... > [2021-12-10 20:59:26] (aprobe0:ahcich1:0:0:0): CAM status: Command timeou= t > [2021-12-10 20:59:26] ahcich1: (aprobe0:SATA connect time=3D100us > status=3D00000133 > [2021-12-10 20:59:26] ahcich1:0:ahcich1: 0:AHCI reset: device found > [2021-12-10 20:59:26] 0): Error 5, Retry was blocked > [2021-12-10 20:59:26] ada0 at ahcich1 bus 0 scbus0 target 0 lun 0 > [2021-12-10 20:59:26] ada0: s/n > 200914802684 detached > [2021-12-10 20:59:26] g_vfs_done():ufs/log[WRITE(offset=3D5309202432, > length=3D32768)]error =3D 6 > [2021-12-10 20:59:26] pass0 at ahcich1 bus 0 scbus0 target 0 lun 0 > [2021-12-10 20:59:26] g_vfs_done():pass0: 40103000>ufs/log[WRITE(offset=3D65027883008, length=3D16384)] s/n > 200914802684error =3D 6 > [2021-12-10 20:59:26] detached > [2021-12-10 20:59:26] > g_vfs_done():(pass0:ahcich1:0:ufs/log[WRITE(offset=3D65124368384, > length=3D32768)]0:error =3D 6 > [2021-12-10 20:59:26] 0): g_vfs_done():Periph destroyed > [2021-12-10 20:59:26] ufs/log[WRITE(offset=3D65124368384, > length=3D32768)]error =3D 6 > [2021-12-10 20:59:26] g_vfs_done():ufs/log[WRITE(offset=3D65126465536, > length=3D32768)]error =3D 6 > [2021-12-10 20:59:26] g_vfs_done():ufs/log[WRITE(offset=3D65126465536, > length=3D32768)]error =3D 6 > [2021-12-10 20:59:26] > g_vfs_done():g_vfs_done():ufs/log[WRITE(offset=3D24702976, > length=3D512)]ufs/log[WRITE(offset=3D65126662144, length=3D16384)]error = =3D 6 > [2021-12-10 20:59:27] panic: cannot reassign paging buffer > [2021-12-10 20:59:27] cpuid =3D 0 > [2021-12-10 20:59:27] __HardenedBSD_version =3D 1100056 __FreeBSD_version= =3D > 1103500 > [2021-12-10 20:59:27] version =3D NS-BSD 4.2.0.beta--HBSD #0 : Wed Dec 1 > 14:00:48 CET 2021 > [2021-12-10 20:59:27] build@BuildFreeBSD-11.3-hardened > :/home/build/build/kernel/work-OPTIM/sys/amd64/compile/NETASQ.XL.SMP.HW.R= ELEASE > [2021-12-10 20:59:27] Uptime: 2d0h46m1s > [2021-12-10 20:59:27] Dumping 2004 out of 8064 > MB:..1%..11%..21%..31%..41%..51%..61%..71%..81%..91% > [2021-12-10 21:00:29] Dump complete > [2021-12-10 21:00:31] =C3=BEVersion 2.15.1236. Copyright (C) 2012 America= n > Megatrends, Inc. > -- > > It appears that after sending a SATA TRIM command, that the disk stops > responding. I've also observed another crash that happens just after a TR= IM > command. > > According to camcontrol, the disk supports the TRIM command : > > -- > camcontrol identify /dev/ada0 > pass0: ACS-4 ATA SATA 3.x device > pass0: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 512bytes) > > protocol ATA/ATAPI-11 SATA 3.x > device model WDC PC SA530 SDASB8Y256G > firmware revision 40103000 > serial number 200914802684 > WWN 5001b448b13c08ca > cylinders 16383 > heads 16 > sectors/track 63 > sector size logical 512, physical 512, offset 0 > LBA supported 268435455 sectors > LBA48 supported 500118192 sectors > PIO supported PIO4 > DMA supported WDMA2 UDMA6 > media RPM non-rotating > Zoned-Device Commands no > > Feature Support Enabled Value Vendor > read ahead yes yes > write cache yes yes > flush cache yes yes > overlap no > Tagged Command Queuing (TCQ) no no > Native Command Queuing (NCQ) yes 32 tags > NCQ Queue Management no > NCQ Streaming no > Receive & Send FPDMA Queued no > SMART yes yes > microcode download yes yes > security yes no > power management yes yes > advanced power management yes yes 128/0x80 > automatic acoustic management no no > media status notification no no > power-up in Standby no no > write-read-verify no no > unload no no > general purpose logging yes yes > free-fall no no > Data Set Management (DSM/TRIM) yes > DSM - max 512byte blocks yes 8 > DSM - deterministic read yes zeroed > Host Protected Area (HPA) no > -- > > > I found this patch concerning a similar problem : > https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D222802 > > I've modified sys/cam/ata/ata_da.c to deactivate the trim functionality. > > -- > +diff --git sys/cam/ata/ata_da.c sys/cam/ata/ata_da.c > +index cba52c5458be..ad256da0a495 100644 > +--- sys/cam/ata/ata_da.c > ++++ sys/cam/ata/ata_da.c > +@@ -1798,7 +1798,7 @@ adaregister(struct cam_periph *periph, void *arg) > + softc->disk->d_flags =3D DISKFLAG_DIRECT_COMPLETION | > DISKFLAG_CANZONE; > + if (softc->flags & ADA_FLAG_CAN_FLUSHCACHE) > + softc->disk->d_flags |=3D DISKFLAG_CANFLUSHCACHE; > +- if (softc->flags & ADA_FLAG_CAN_TRIM) { > ++ if (0 /*softc->flags & ADA_FLAG_CAN_TRIM */) { > + softc->disk->d_flags |=3D DISKFLAG_CANDELETE; > + softc->disk->d_delmaxsize =3D softc->params.secsize * > + ATA_DSM_RANGE_MAX * > -- > > I've been running a set of tests on one of our products for over two week= s > with the trim deactivated (using the above patch) and there have been no > crashes. > > Could this issue be an internal disk firmware problem? > > Is it possible that camcontrol reports that the disk supports TRIM yet in > reality it isn't supported, or isn't supported fully? > > I've observed that this crash doesn't happen on the first TRIM command, i= s > it possible that a set of SATA commands destabilize the disk firmware and > cause it to crash? > > Is it possible that the timeout isn't long enough for the TRIM command? > > Thanks in advance for any help. > > Best wishes, > Lee Matthews > > > > > > > > > > > --000000000000b75e5a05d4afd639 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
You can set the trim method to nothing w/o that patch. ker= n.cam.ada.X.delete_method=3DDISABLE
There's also a mechanism throug= h quirks that can disable known troublemakers, though to date we've onl= y disable those drives that cause data corruption with TRIMs.

<= /div>
FreeBSD makes heavy use of TRIMs at times to improve the info the= drive's firmware has on what's actually in use.
Some dri= ves love this and their write amplification is reduced (so performance and = longevity increased). Other drives,
as you've discovere= d, implement TRIMs in a sub-optimal manner. I've seen too many TRIMs ca= use drives to hang,
but it's never been as severe as you are = seeing (I have seen it on reboot once or twice, but my usual heartache
with TRIMs has been just really bad performance). Older versions of F= reeBSD didn't have TRIM collapsing in any
real sense, so woul= d send lots and lots of TRIMs to drives which often times would lead to poo= r performance. UFS
and ada have both been enhanced to reduce that= in newer versions of FreeBSD.

FreeBSD 11.3 is out= of support. You may have slightly better luck with a newer FreeBSD in gene= ral (there's
more TRIM management in newer FreeBSDs, especial= ly 13.0 and newer). There's a chance that the improvements
wi= ll help, but if the drives firmware is bad enough, disabling trim on the mo= dels of drives where there are problems
may be your only option.<= /div>

Warner

<= div dir=3D"ltr" class=3D"gmail_attr">On Mon, Jan 3, 2022 at 9:01 AM Lee MAT= THEWS via freebsd-drivers <freebsd-drivers@freebsd.org> wrote:
Hello,

I have been tasked with working on an intermittent problem that has been af= fecting some of our products. During in-house testing, we observe that occa= sionally our system crashes and reboots. After reboot, the system gets bloc= ked in the BIOS and it does not advance any further because the BIOS does n= ot detect the SSD disk. The crash appears to happen randomly during testing= , as it can take anything from several hours of continuous testing to a wee= k of running without stop for the crash to occur. The only way to get the s= ystem back up and running again is to power down and then up the machine, a= t which point the disk once again becomes visible to the BIOS.

Our products are based on FreeBSD version 11.3.

The crash appears to be linked to the type of disk that is being used. We h= ave one brand of disk that has never had a problem (even after a month of c= ontinuous testing) and others that, after testing, fail and after reboot ge= t blocked in the BIOS.


Logging via the serial console, I have observed the following crash :

--
[2021-12-10 20:56:10] ahcich1: Timeout on slot 5 port 0
[2021-12-10 20:56:10] ahcich1: is 00000000 cs 00000020 ss 00000000 rs 00000= 020 tfd c0 serr 00000000 cmd 0000c517
[2021-12-10 20:56:11] ahcich1: (ada0:ahcich1:0:0:0): DSM TRIM. ACB: 06 01 0= 0 00 00 40 00 00 00 00 01 00
[2021-12-10 20:56:11] AHCI reset...
[2021-12-10 20:56:11] (ada0:ahcich1:0:0:0): CAM status: Command timeout
[2021-12-10 20:56:11] ahcich1: (ada0:ahcich1:0:SATA connect time=3D100us st= atus=3D00000133
[2021-12-10 20:56:11] 0:0): Retrying command
[2021-12-10 20:56:11] ahcich1: AHCI reset: device found
[2021-12-10 20:56:42] ahcich1: AHCI reset: device not ready after 31000ms (= tfd =3D 00000080)
[2021-12-10 20:57:15] ahcich1: Timeout on slot 6 port 0
[2021-12-10 20:57:15] ahcich1: is 00000000 cs 00000040 ss 00000000 rs 00000= 040 tfd 80 serr 00000000 cmd 0000c617
[2021-12-10 20:57:15] ahcich1: (aprobe0:ahcich1:0:0:0): ATA_IDENTIFY. ACB: = ec 00 00 00 00 40 00 00 00 00 00 00
[2021-12-10 20:57:16] AHCI reset...
[2021-12-10 20:57:16] (aprobe0:ahcich1:0:0:0): CAM status: Command timeout<= br> [2021-12-10 20:57:16] ahcich1: (aprobe0:SATA connect time=3D100us status=3D= 00000133
[2021-12-10 20:57:16] ahcich1:0:ahcich1: AHCI reset: device found
[2021-12-10 20:57:16] 0:0): Retrying command
[2021-12-10 20:57:47] ahcich1: AHCI reset: device not ready after 31000ms (= tfd =3D 00000080)
[2021-12-10 20:58:20] ahcich1: Timeout on slot 7 port 0
[2021-12-10 20:58:20] ahcich1: is 00000000 cs 00000080 ss 00000000 rs 00000= 080 tfd 80 serr 00000000 cmd 0000c717
[2021-12-10 20:58:20] ahcich1: (aprobe0:ahcich1:0:0:0): ATA_IDENTIFY. ACB: = ec 00 00 00 00 40 00 00 00 00 00 00
[2021-12-10 20:58:21] AHCI reset...
[2021-12-10 20:58:21] (aprobe0:ahcich1:0:0:0): CAM status: Command timeout<= br> [2021-12-10 20:58:21] ahcich1: (aprobe0:ahcich1:0:SATA connect time=3D100us= status=3D00000133
[2021-12-10 20:58:21] 0:0): ahcich1: AHCI reset: device found
[2021-12-10 20:58:21] Error 5, Retries exhausted
[2021-12-10 20:58:52] ahcich1: AHCI reset: device not ready after 31000ms (= tfd =3D 00000080)
[2021-12-10 20:59:25] ahcich1: Timeout on slot 8 port 0
[2021-12-10 20:59:25] ahcich1: is 00000000 cs 00000100 ss 00000000 rs 00000= 100 tfd 80 serr 00000000 cmd 0000c817
[2021-12-10 20:59:25] ahcich1: (aprobe0:ahcich1:0:0:0): ATA_IDENTIFY. ACB: = ec 00 00 00 00 40 00 00 00 00 00 00
[2021-12-10 20:59:26] AHCI reset...
[2021-12-10 20:59:26] (aprobe0:ahcich1:0:0:0): CAM status: Command timeout<= br> [2021-12-10 20:59:26] ahcich1: (aprobe0:SATA connect time=3D100us status=3D= 00000133
[2021-12-10 20:59:26] ahcich1:0:ahcich1: 0:AHCI reset: device found
[2021-12-10 20:59:26] 0): Error 5, Retry was blocked
[2021-12-10 20:59:26] ada0 at ahcich1 bus 0 scbus0 target 0 lun 0
[2021-12-10 20:59:26] ada0: <WDC PC SA530 SDASB8Y256G 40103000> s/n 2= 00914802684 detached
[2021-12-10 20:59:26] g_vfs_done():ufs/log[WRITE(offset=3D5309202432, lengt= h=3D32768)]error =3D 6
[2021-12-10 20:59:26] pass0 at ahcich1 bus 0 scbus0 target 0 lun 0
[2021-12-10 20:59:26] g_vfs_done():pass0: <WDC PC SA530 SDASB8Y256G 4010= 3000>ufs/log[WRITE(offset=3D65027883008, length=3D16384)] s/n 2009148026= 84error =3D 6
[2021-12-10 20:59:26]=C2=A0 detached
[2021-12-10 20:59:26] g_vfs_done():(pass0:ahcich1:0:ufs/log[WRITE(offset=3D= 65124368384, length=3D32768)]0:error =3D 6
[2021-12-10 20:59:26] 0): g_vfs_done():Periph destroyed
[2021-12-10 20:59:26] ufs/log[WRITE(offset=3D65124368384, length=3D32768)]e= rror =3D 6
[2021-12-10 20:59:26] g_vfs_done():ufs/log[WRITE(offset=3D65126465536, leng= th=3D32768)]error =3D 6
[2021-12-10 20:59:26] g_vfs_done():ufs/log[WRITE(offset=3D65126465536, leng= th=3D32768)]error =3D 6
[2021-12-10 20:59:26] g_vfs_done():g_vfs_done():ufs/log[WRITE(offset=3D2470= 2976, length=3D512)]ufs/log[WRITE(offset=3D65126662144, length=3D16384)]err= or =3D 6
[2021-12-10 20:59:27] panic: cannot reassign paging buffer
[2021-12-10 20:59:27] cpuid =3D 0
[2021-12-10 20:59:27] __HardenedBSD_version =3D 1100056 __FreeBSD_version = =3D 1103500
[2021-12-10 20:59:27] version =3D NS-BSD 4.2.0.beta--HBSD #0 : Wed Dec=C2= =A0 1 14:00:48 CET 2021
[2021-12-10 20:59:27]=C2=A0 =C2=A0 =C2=A0build@BuildFreeBSD-11.3-hardened:/= home/build/build/kernel/work-OPTIM/sys/amd64/compile/NETASQ.XL.SMP.HW.RELEA= SE
[2021-12-10 20:59:27] Uptime: 2d0h46m1s
[2021-12-10 20:59:27] Dumping 2004 out of 8064 MB:..1%..11%..21%..31%..41%.= .51%..61%..71%..81%..91%
[2021-12-10 21:00:29] Dump complete
[2021-12-10 21:00:31] =C3=BEVersion 2.15.1236. Copyright (C) 2012 American = Megatrends, Inc.=C2=A0 =C2=A0 =C2=A0
--

It appears that after sending a SATA TRIM command, that the disk stops resp= onding. I've also observed another crash that happens just after a TRIM= command.

According to camcontrol, the disk supports the TRIM command :

--
camcontrol identify /dev/ada0
pass0: <WDC PC SA530 SDASB8Y256G 40103000> ACS-4 ATA SATA 3.x device<= br> pass0: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 512bytes)

protocol=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ATA/ATAPI-11 SATA = 3.x
device model=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 WDC PC SA530 SDASB8Y256G
firmware revision=C2=A0 =C2=A0 =C2=A040103000
serial number=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0200914802684
WWN=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0500= 1b448b13c08ca
cylinders=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A016383
heads=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A016
sectors/track=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A063
sector size=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0logical 512, physical 5= 12, offset 0
LBA supported=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0268435455 sectors
LBA48 supported=C2=A0 =C2=A0 =C2=A0 =C2=A0500118192 sectors
PIO supported=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0PIO4
DMA supported=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0WDMA2 UDMA6
media RPM=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0non-rotating
Zoned-Device Commands no

Feature=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 Support=C2=A0 Enabled=C2=A0 =C2=A0Value=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0Vendor
read ahead=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0yes=C2=A0 =C2=A0 =C2=A0 yes
write cache=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 yes=C2=A0 =C2=A0 =C2=A0 yes
flush cache=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 yes=C2=A0 =C2=A0 =C2=A0 yes
overlap=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 no
Tagged Command Queuing (TCQ)=C2=A0 =C2=A0no=C2=A0 =C2=A0 =C2=A0 =C2=A0no Native Command Queuing (NCQ)=C2=A0 =C2=A0yes=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 32 tags
NCQ Queue Management=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0no
NCQ Streaming=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= no
Receive & Send FPDMA Queued=C2=A0 =C2=A0 no
SMART=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 yes=C2=A0 =C2=A0 =C2=A0 yes
microcode download=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0yes=C2=A0= =C2=A0 =C2=A0 yes
security=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0yes=C2=A0 =C2=A0 =C2=A0 no
power management=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0yes= =C2=A0 =C2=A0 =C2=A0 yes
advanced power management=C2=A0 =C2=A0 =C2=A0 yes=C2=A0 =C2=A0 =C2=A0 yes= =C2=A0 =C2=A0 =C2=A0128/0x80
automatic acoustic management=C2=A0 no=C2=A0 =C2=A0 =C2=A0 =C2=A0no
media status notification=C2=A0 =C2=A0 =C2=A0 no=C2=A0 =C2=A0 =C2=A0 =C2=A0= no
power-up in Standby=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 no=C2=A0 =C2= =A0 =C2=A0 =C2=A0no
write-read-verify=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 no=C2=A0 = =C2=A0 =C2=A0 =C2=A0no
unload=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0no=C2=A0 =C2=A0 =C2=A0 =C2=A0no
general purpose logging=C2=A0 =C2=A0 =C2=A0 =C2=A0 yes=C2=A0 =C2=A0 =C2=A0 = yes
free-fall=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 no=C2=A0 =C2=A0 =C2=A0 =C2=A0no
Data Set Management (DSM/TRIM) yes
DSM - max 512byte blocks=C2=A0 =C2=A0 =C2=A0 =C2=A0yes=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 8
DSM - deterministic read=C2=A0 =C2=A0 =C2=A0 =C2=A0yes=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 zeroed
Host Protected Area (HPA)=C2=A0 =C2=A0 =C2=A0 no
--


I found this patch concerning a similar problem : https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D222802

I've modified sys/cam/ata/ata_da.c to deactivate the trim functionality= .

--
+diff --git sys/cam/ata/ata_da.c sys/cam/ata/ata_da.c
+index cba52c5458be..ad256da0a495 100644
+--- sys/cam/ata/ata_da.c
++++ sys/cam/ata/ata_da.c
+@@ -1798,7 +1798,7 @@ adaregister(struct cam_periph *periph, void *arg) +=C2=A0 =C2=A0 =C2=A0 =C2=A0softc->disk->d_flags =3D DISKFLAG_DIRECT_= COMPLETION | DISKFLAG_CANZONE;
+=C2=A0 =C2=A0 =C2=A0 =C2=A0if (softc->flags & ADA_FLAG_CAN_FLUSHCAC= HE)
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0softc->disk->= d_flags |=3D DISKFLAG_CANFLUSHCACHE;
+-=C2=A0 =C2=A0 =C2=A0 if (softc->flags & ADA_FLAG_CAN_TRIM) {
++=C2=A0 =C2=A0 =C2=A0 if (0 /*softc->flags & ADA_FLAG_CAN_TRIM */) = {
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0softc->disk->= d_flags |=3D DISKFLAG_CANDELETE;
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0softc->disk->= d_delmaxsize =3D softc->params.secsize *
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0ATA_DSM_RANGE_MAX *
--

I've been running a set of tests on one of our products for over two we= eks with the trim deactivated (using the above patch) and there have been n= o crashes.

Could this issue be an internal disk firmware problem?

Is it possible that camcontrol reports that the disk supports TRIM yet in r= eality it isn't supported, or isn't supported fully?

I've observed that this crash doesn't happen on the first TRIM comm= and, is it possible that a set of SATA commands destabilize the disk firmwa= re and cause it to crash?

Is it possible that the timeout isn't long enough for the TRIM command?=

Thanks in advance for any help.

Best wishes,
Lee Matthews










--000000000000b75e5a05d4afd639-- From nobody Sun Feb 6 23:18:06 2022 X-Original-To: freebsd-drivers@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 6DBCB19B5F6F for ; Sun, 6 Feb 2022 23:18:17 +0000 (UTC) (envelope-from retro.vintage.empire@gmail.com) Received: from mail-ua1-x92a.google.com (mail-ua1-x92a.google.com [IPv6:2607:f8b0:4864:20::92a]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1D4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4JsQDm2Zbwz3td9 for ; Sun, 6 Feb 2022 23:18:16 +0000 (UTC) (envelope-from retro.vintage.empire@gmail.com) Received: by mail-ua1-x92a.google.com with SMTP id c36so20051498uae.13 for ; Sun, 06 Feb 2022 15:18:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:from:date:message-id:subject:to; bh=i26nObWia68dYgOyH7DxjjeaIqgJlzD7RExUw/BnGn0=; b=EokKQ+cLGkGzhQQ2M5DSyuzSnJUP2N8yxvfJE60mw/YHeFb33vrOmebjmBrKt5OkX1 18cQHiQfw6d6dVPAj0vJtLTNgBv+dreI0iEPME7XN/XVMaWrZg01BKVxkw/xzHpumqYz HYeDK70IeKvuUTwdS0V+uM/KrXmwfGMYYyONj91y+CXeuHY6jjB99r5RzP7YSh+l8blX eIbV6kuoD5RkJFmtuQ2y9LKHEKL/DcxFzIn+UMbBajbG/IqNaRRhkV8PDLw1KzhioOlp EdQpBHfk5gaDmjdnULFFd65sJLZ7VOForSrTKHoL5pKHCE7+41qMOL0iqjPP9Y7kTABV h2xw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=i26nObWia68dYgOyH7DxjjeaIqgJlzD7RExUw/BnGn0=; b=b+DcXJRaHN8xmHL3ITx7LMnnN0zXE18B7g0QHzWqxGGR0tQPaFpzd6EBceFNctOHWM Kllj6AFehuSRWfZUxqxPapMb+taAfxTboh2cFmLC9KGXEh/Skf71VAZGgMoaFGBbrYjM fn0Odw0GTcglOzZb7YrlxrZVP4RX3izgiDEeAirPuk4Ho4TqPnq67lcDBSKOkHf1XRLN xPFLhZgzE01/02NUMklKpe8+FyxOkOHX9pbMsH426zJv1Ks255cxDOwqxf3TDHWYUY64 vR03rjBxHHz/o4DwnczQq2g0fXdF/zRjcXQL5PdAmeAGoboAoI7PYwr0WndzjkLEQb0C uGeg== X-Gm-Message-State: AOAM530qsFPHQEo6b9s7Zt/sunfVjigICckMlWBQxwgOIU710iaBn3Ed ieCB74gmGrjpuLpm+tjwhn0IDpMjEOSsxs85vWEI7VUO X-Google-Smtp-Source: ABdhPJxxXTix40u+Zg4Y5C3Pcy/AscPB1LmLivxk9yEPU3CJaR2w9PC7DUC29GBr6L0pTrq1WQov31vN4d172drAHoI= X-Received: by 2002:ab0:2e98:: with SMTP id f24mr2535796uaa.1.1644189495833; Sun, 06 Feb 2022 15:18:15 -0800 (PST) List-Id: Writing device drivers for FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-drivers List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-drivers@freebsd.org MIME-Version: 1.0 From: Retro Vintage Empire Date: Mon, 7 Feb 2022 00:18:06 +0100 Message-ID: Subject: Unsubscribe To: freebsd-drivers@freebsd.org Content-Type: multipart/alternative; boundary="000000000000d7b80f05d761b2ce" X-Rspamd-Queue-Id: 4JsQDm2Zbwz3td9 X-Spamd-Bar: --- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20210112 header.b=EokKQ+cL; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (mx1.freebsd.org: domain of retrovintageempire@gmail.com designates 2607:f8b0:4864:20::92a as permitted sender) smtp.mailfrom=retrovintageempire@gmail.com X-Spamd-Result: default: False [-4.00 / 15.00]; R_SPF_ALLOW(-0.20)[+ip6:2607:f8b0:4000::/36:c]; FREEMAIL_FROM(0.00)[gmail.com]; TO_DN_NONE(0.00)[]; MID_RHS_MATCH_FROMTLD(0.00)[]; DKIM_TRACE(0.00)[gmail.com:+]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; NEURAL_HAM_SHORT(-1.00)[-1.000]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US]; TAGGED_FROM(0.00)[]; DWL_DNSWL_NONE(0.00)[gmail.com:dkim]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20210112]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; PREVIOUSLY_DELIVERED(0.00)[freebsd-drivers@freebsd.org]; RCPT_COUNT_ONE(0.00)[1]; RCVD_IN_DNSWL_NONE(0.00)[2607:f8b0:4864:20::92a:from]; MLMMJ_DEST(0.00)[freebsd-drivers]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[] X-ThisMailContainsUnwantedMimeParts: N --000000000000d7b80f05d761b2ce Content-Type: text/plain; charset="UTF-8" Please unsubscribe. I am already subscribed with another account. Many Thanks --000000000000d7b80f05d761b2ce Content-Type: text/html; charset="UTF-8"

Please unsubscribe. I am already subscribed with another account.

Many Thanks

--000000000000d7b80f05d761b2ce-- From nobody Sun Mar 13 20:02:05 2022 X-Original-To: freebsd-drivers@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 202091A19A18 for ; Sun, 13 Mar 2022 20:02:08 +0000 (UTC) (envelope-from farhan@farhan.codes) Received: from wforward3-smtp.messagingengine.com (wforward3-smtp.messagingengine.com [64.147.123.22]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4KGrDH2JWwz4pLc for ; Sun, 13 Mar 2022 20:02:07 +0000 (UTC) (envelope-from farhan@farhan.codes) Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailforward.west.internal (Postfix) with ESMTP id 874FF1AC2080 for ; Sun, 13 Mar 2022 16:02:06 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Sun, 13 Mar 2022 16:02:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:date:from:from:in-reply-to:message-id:mime-version :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=SF1kes3YKSK/1iTK3 NAMaxTAMS09E2RowZGE6WS/gyE=; b=P8a71IEzA0dUR50/zbskydJYnNL1JeDp9 axUGhhrYwTlz8uJ6r/SomHeAvrdZEMiHCet3NFmsAWWQ7IjVHRk58cv1hbXUKvf5 +X3IkFm388xeD4ZUmpAxOaLix2FnSg6Iv1OcwmR/KoaVZMgx7eugDLT1muq2aTJh HeQkRSOxbrlJeabK34QUSzd4dGELkhBa/yEFvpC/CEZatF1tcIFmhry/fJzNwTje F9GisVG4vFEjbFTB26qaeXD2v0saCkW+CbQ0cABvcu+ZfynohaHFjAqafVszMR6g vWVS7y4WuYni1fFLgeUgnSs6jP3EssDpuAYQMYig2xe42kjoV3tAQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvvddruddviedgudefgecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecunecujfgurhepkfffgggfvffhufgtgfesthejre dttdefjeenucfhrhhomhephfgrrhhhrghnucfmhhgrnhcuoehfrghrhhgrnhesfhgrrhhh rghnrdgtohguvghsqeenucggtffrrghtthgvrhhnpeefgfduvdefjeduveevudelteffve fhffdtteeugfehueekkefffeffieevieeugeenucevlhhushhtvghrufhiiigvpedtnecu rfgrrhgrmhepmhgrihhlfhhrohhmpehfrghrhhgrnhesfhgrrhhhrghnrdgtohguvghs X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Sun, 13 Mar 2022 16:02:05 -0400 (EDT) Message-ID: <706b2fc4-ce74-8716-d5c6-092d69c9c0fc@farhan.codes> Date: Sun, 13 Mar 2022 16:02:05 -0400 List-Id: Writing device drivers for FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-drivers List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-drivers@freebsd.org MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Content-Language: en-US To: freebsd-drivers@freebsd.org From: Farhan Khan Subject: Why mtx_sleep returning EWOUNDBLOCK? Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 4KGrDH2JWwz4pLc X-Spamd-Bar: --- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=messagingengine.com header.s=fm2 header.b=P8a71IEz; dmarc=none; spf=none (mx1.freebsd.org: domain of farhan@farhan.codes has no SPF policy when checking 64.147.123.22) smtp.mailfrom=farhan@farhan.codes X-Spamd-Result: default: False [-3.40 / 15.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; ARC_NA(0.00)[]; R_DKIM_ALLOW(-0.20)[messagingengine.com:s=fm2]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[freebsd-drivers@freebsd.org]; TO_DN_NONE(0.00)[]; RCPT_COUNT_ONE(0.00)[1]; DWL_DNSWL_LOW(-1.00)[messagingengine.com:dkim]; RCVD_COUNT_THREE(0.00)[4]; DMARC_NA(0.00)[farhan.codes]; DKIM_TRACE(0.00)[messagingengine.com:+]; NEURAL_HAM_SHORT(-1.00)[-1.000]; MLMMJ_DEST(0.00)[freebsd-drivers]; R_SPF_NA(0.00)[no SPF record]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; SUBJECT_ENDS_QUESTION(1.00)[]; ASN(0.00)[asn:29838, ipnet:64.147.123.0/24, country:US]; RCVD_TLS_LAST(0.00)[]; MID_RHS_MATCH_FROM(0.00)[]; RCVD_IN_DNSWL_LOW(-0.10)[64.147.123.22:from] X-ThisMailContainsUnwantedMimeParts: N Hi all, Summary: I am running mtx_sleep() but getting an EWOUNDBLOCK response code and do not understand why. I am looking at port code from the OpenBSD side to FreeBSD. I am assuming that tsleep_nsec()'s equivalent on FreeBSD is mtx_sleep(). To that end, I am running mtx_sleep as this: mtx_lock(&(sc)->sc_mtx); error = mtx_sleep(sc, &sc->sc_mtx, 0 , "athnfw", hz); mtx_unlock(&(sc)->sc_mtx); However, the error code returns a EWOUNDBLOCK. I would expect this to be 0. From reading the man page for sleep(9), this means "A non-zero timeout was specified and the timeout". But if I slept for 1 hz, isn't that exactly what I want and thus it should return 0 (no error)? The OpenBSD line in question is: error = tsleep_nsec(&usc->wait_msg_id, 0, "athnfw", SEC_TO_NSEC(1)); Perhaps there is something I am not understanding here? Please advise. Thanks! Farhan From nobody Thu Apr 21 23:17:55 2022 X-Original-To: freebsd-drivers@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id E460519887FC for ; Thu, 21 Apr 2022 23:18:07 +0000 (UTC) (envelope-from yusisamerican@gmail.com) Received: from mail-ua1-x931.google.com (mail-ua1-x931.google.com [IPv6:2607:f8b0:4864:20::931]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1D4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4KktkR2bHrz4gwx for ; Thu, 21 Apr 2022 23:18:07 +0000 (UTC) (envelope-from yusisamerican@gmail.com) Received: by mail-ua1-x931.google.com with SMTP id g22so2364224uam.12 for ; Thu, 21 Apr 2022 16:18:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:from:date:message-id:subject:to; bh=wfhevG+HzuREvlOQfRvaqEctSvlBNGD3xTIFLEpFvwM=; b=FFzAZANNEL5C5BACRfKrGTSjv1aOLYYytlmHaxuyV6vrnSXh0xN7/HsrDU2D/mZZVb 2+HlCTrWWzIJXKExyvEQVPy55Jk0aSplAV8x/PKwpeEzVMuW5W/ZS+Nn8fJM+7f3+ANh AjXCJGi6R5iorobxOTS32PR75+wzObCMRB0Oj3RRm6cabsaWMXwmHtqHEpUOZbaWP2oq 3jYbp8oytHv3Mk6sB1jI7gPt1wxGyvEcJWM3pi4bBaeyNTjw1gbmXG8jylbolo6NQoIH izKA1B1w1VLt2SwEgYrastzOb8sgg1IUSUs3knmQYCUB3jf+uCYYUkSsU+yKYBx84MtW STmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=wfhevG+HzuREvlOQfRvaqEctSvlBNGD3xTIFLEpFvwM=; b=q/JbD569CLJ6O8KtVNNQ/DPnbM6AhvrQVXjoc4xKiVzPwrdBBR0kaPzb1JL4cpTrtI O97Cuiv7h4gVfRygRec1EK7Ju7CpNm3/n3PsdEZXESVA0czGbQHWQcl9sIckwY7F5vUm phKlwGaDI/WL4H3RI8NpcgLU8FdRfPCWGVb0T/g4CO5r/U/jE/7veVkGNG91KEIud6lc Oj6MDAdnFpREb26kPNka+DNiS2iCuwuq2ILJ6DYM/Z55nSXVi5bKl6hZzju8dD5iBy+s 7SAOqB/cDg/7Feyt9xYGRf02yLZTCyyXsEdMGfOVcEZ8Z5RZqiXXi5g2A703qsathqZn wM2A== X-Gm-Message-State: AOAM532K6lU/TVam9SMQen4ZAjK1YKtNKw+baSJpwM4I6VENZ5PMuQS9 XMY6e+Z31saEJpGyl+O0aV2z3oDMXbWusTH/6UPH8CUzp/o= X-Google-Smtp-Source: ABdhPJw0HGZKFJVhv5JUAPbG+G+qn61ufi1Dkw87EM6kenwkkrfi7fTwMdZGDT8jjhuYLlMtUl271mEMOm+VR3lhsfY= X-Received: by 2002:ab0:144b:0:b0:33c:76e0:9006 with SMTP id c11-20020ab0144b000000b0033c76e09006mr717067uae.52.1650583086605; Thu, 21 Apr 2022 16:18:06 -0700 (PDT) List-Id: Writing device drivers for FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-drivers List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-drivers@freebsd.org MIME-Version: 1.0 From: Yusuf Khan Date: Thu, 21 Apr 2022 18:17:55 -0500 Message-ID: Subject: How do I write a driver and how do I find out what kernel API calls do? To: freebsd-drivers@freebsd.org Content-Type: multipart/alternative; boundary="0000000000008ca95f05dd3252e9" X-Rspamd-Queue-Id: 4KktkR2bHrz4gwx X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20210112 header.b=FFzAZANN; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (mx1.freebsd.org: domain of yusisamerican@gmail.com designates 2607:f8b0:4864:20::931 as permitted sender) smtp.mailfrom=yusisamerican@gmail.com X-Spamd-Result: default: False [-2.67 / 15.00]; R_SPF_ALLOW(-0.20)[+ip6:2607:f8b0:4000::/36:c]; FREEMAIL_FROM(0.00)[gmail.com]; TO_DN_NONE(0.00)[]; MID_RHS_MATCH_FROMTLD(0.00)[]; DKIM_TRACE(0.00)[gmail.com:+]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; NEURAL_HAM_SHORT(-0.86)[-0.863]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US]; SUBJECT_ENDS_QUESTION(1.00)[]; DWL_DNSWL_NONE(0.00)[gmail.com:dkim]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-0.81)[-0.809]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20210112]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; PREVIOUSLY_DELIVERED(0.00)[freebsd-drivers@freebsd.org]; RCPT_COUNT_ONE(0.00)[1]; RCVD_IN_DNSWL_NONE(0.00)[2607:f8b0:4864:20::931:from]; MLMMJ_DEST(0.00)[freebsd-drivers]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[] X-ThisMailContainsUnwantedMimeParts: N --0000000000008ca95f05dd3252e9 Content-Type: text/plain; charset="UTF-8" Literally just copy paste the title here. Also where do I get documentation? --0000000000008ca95f05dd3252e9 Content-Type: text/html; charset="UTF-8"
Literally just copy paste the title here.

Also where do I get documentation?
--0000000000008ca95f05dd3252e9-- From nobody Fri Apr 22 04:35:37 2022 X-Original-To: freebsd-drivers@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4032B1A29DEE for ; Fri, 22 Apr 2022 04:35:40 +0000 (UTC) (envelope-from farhan@farhan.codes) Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com [66.111.4.26]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4Kl1mq1Rg1z3qjk for ; Fri, 22 Apr 2022 04:35:39 +0000 (UTC) (envelope-from farhan@farhan.codes) Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id 1C9A35C017D; Fri, 22 Apr 2022 00:35:39 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute5.internal (MEProxy); Fri, 22 Apr 2022 00:35:39 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=farhan.codes; h= cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm2; t=1650602139; x= 1650688539; bh=DN5pCBvVDz5vgZt3Vu7LdoHw1X3ZY05eQGeFpEXgIds=; b=s fGioLZpnIlH+QWcWpOrsBVZ7MSaF4KUo8pw+VCMZcCgCVyd405OZfKthGmtHTNgV f++hkH4cWNNnDubNr3YFRKjEsOrwLXpguv7LWqFBBWT/U/Bi7AJG0RQRggi2gDEL HNHUlDIXW2UyLyLrqOsB75HYfVltenNtQNoMb+a3COjJYqowUh1OIy4OLCQ/97ug 84lpHckbPBSUChqSHTkrBtqLkK81XnY7lnPAxI3KZr1hbhJsYLnFsfV4YFTr3hCd xkT3mbCepjZD5Nsq9U/VN4Yv2ezCtK+ktGzEIo6GFJ40+1YKm3doLRcVEWOuDfVZ d62k0W6ElnJY0QA61Co6w== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:date:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:sender:subject:subject:to:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm1; t=1650602139; x=1650688539; bh=DN5pCBvVDz5vgZt3Vu7LdoHw1X3Z Y05eQGeFpEXgIds=; b=fxioJwbbpyP6Ciyhu8oqDTKEe/Dprx8683pXbBx+9Z0k LJFx0ePrBe3q6td0s42WS2LT667Gy6O5ZK/TnDjSl4/A7UNxVC5blZMGmF3AA5U9 wCvyHLKd9K2Gcly/g5RZevJ8upP+zHeLcfMdzgYz1485/e6bpi9/zn1WcXI7VGgw 7G44QboQCEfKLOZWkgabFfZncGfZqZZ1knt3dgiHi+J8Lpm7BcTaaG/PGCRGGFca Fgb8hkn4TSNOtpGU7UeH4iL1+B9QeO0di68R07sbw6p0flLREP/iFkxPfFltz4IL ojwi2UXfL1T3KrAxhpYq+RsabyNJyuEpkuPD1y9kbQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrtdefgdekgecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecunecujfgurhepkffuhffvffgjfhgtfggggfesthejre dttderjeenucfhrhhomhephfgrrhhhrghnucfmhhgrnhcuoehfrghrhhgrnhesfhgrrhhh rghnrdgtohguvghsqeenucggtffrrghtthgvrhhnpeeuieetjefhteegheefudefvdethf dtteehudfgueejledtueefhfdttdeifffgudenucffohhmrghinhepfhhrvggvsghsugdr ohhrghenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpe hfrghrhhgrnhesfhgrrhhhrghnrdgtohguvghs X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri, 22 Apr 2022 00:35:38 -0400 (EDT) Message-ID: Subject: Re: How do I write a driver and how do I find out what kernel API calls do? From: Farhan Khan To: Yusuf Khan , freebsd-drivers@freebsd.org Date: Fri, 22 Apr 2022 00:35:37 -0400 In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.42.4 List-Id: Writing device drivers for FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-drivers List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-drivers@freebsd.org MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 4Kl1mq1Rg1z3qjk X-Spamd-Bar: --- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=farhan.codes header.s=fm2 header.b="s fGioLZ"; dkim=pass header.d=messagingengine.com header.s=fm1 header.b=fxioJwbb; dmarc=none; spf=pass (mx1.freebsd.org: domain of farhan@farhan.codes designates 66.111.4.26 as permitted sender) smtp.mailfrom=farhan@farhan.codes X-Spamd-Result: default: False [-3.60 / 15.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; TO_DN_SOME(0.00)[]; R_SPF_ALLOW(-0.20)[+ip4:66.111.4.26]; RWL_MAILSPIKE_GOOD(0.00)[66.111.4.26:from]; RCVD_COUNT_THREE(0.00)[4]; DKIM_TRACE(0.00)[farhan.codes:+,messagingengine.com:+]; RCPT_COUNT_TWO(0.00)[2]; NEURAL_HAM_SHORT(-1.00)[-1.000]; FREEMAIL_TO(0.00)[gmail.com,freebsd.org]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; SUBJECT_ENDS_QUESTION(1.00)[]; ASN(0.00)[asn:19151, ipnet:66.111.4.0/24, country:US]; RCVD_TLS_LAST(0.00)[]; MID_RHS_MATCH_FROM(0.00)[]; RCVD_IN_DNSWL_LOW(-0.10)[66.111.4.26:from]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; R_DKIM_ALLOW(-0.20)[farhan.codes:s=fm2,messagingengine.com:s=fm1]; FROM_HAS_DN(0.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; MIME_GOOD(-0.10)[text/plain]; DMARC_NA(0.00)[farhan.codes]; DWL_DNSWL_LOW(-1.00)[messagingengine.com:dkim]; TO_MATCH_ENVRCPT_SOME(0.00)[]; MLMMJ_DEST(0.00)[freebsd-drivers] X-ThisMailContainsUnwantedMimeParts: N On Thu, 2022-04-21 at 18:17 -0500, Yusuf Khan wrote: > Literally just copy paste the title here. > > Also where do I get documentation? Hi Yusuf! I'm no expert, but I got my (limited) knowledge from a few sources: 1. There is a section in the documentation on this topic: https://docs.freebsd.org/en/books/arch-handbook/driverbasics/ 2. There's a book called "FreeBSD Device Drivers: A Guide for the Intrepid". Its a bit dated but the concepts largely still apply. 3. I read a ton of sample drivers. I'm currently struggling through the USB stack, /usr/src/sys/dev/usb/wlan has a lot of good and simple WiFi drivers. If you want an example of a wifi driver that is both USB and PCI, look at rtwn(4). 4. Each stack has some documentation, so in the case of USB, I read the usbdi man page and looked at examples. 5. Look at other implementations in other BSDs - or even illumos. Ultimately its not FreeBSD but it helps provide some context, especially for someone like me who has to learn multiple layers/stack prior to understanding what is happening, specifically what is device- specific and what is OS-specific. There's a ton of overlap and in some cases, such as WiFi, they maintain a slightly older version and therefore simpler version of the same stack. In terms of the details of a specific device, I'm honestly just copying previous implementations, namely Linux and OpenBSD. There's a great presentation by an OpenBSD developer on how he wrote wifi device drivers with limited context. You can find it on YouTube as: "Getting started with OpenBSD device driver development, by Stefan Sperling (EuroBSDcon 2017)" I was hoping to write some documentation of my experiences, but I have no immediate plans. If you struggle with the same thing, maybe write your experiences for the benefit of the community. I hope this helps! btw, nice last name! - Farhan Khan From nobody Sat Apr 23 23:46:16 2022 X-Original-To: freebsd-drivers@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4A1BB19946DD for ; Sat, 23 Apr 2022 23:46:25 +0000 (UTC) (envelope-from jmg@gold.funkthat.com) Received: from gold.funkthat.com (gate2.funkthat.com [208.87.223.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "gate2.funkthat.com", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Km7G82Yqsz3QBX for ; Sat, 23 Apr 2022 23:46:23 +0000 (UTC) (envelope-from jmg@gold.funkthat.com) Received: from gold.funkthat.com (localhost [127.0.0.1]) by gold.funkthat.com (8.15.2/8.15.2) with ESMTPS id 23NNkGP0035960 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Sat, 23 Apr 2022 16:46:16 -0700 (PDT) (envelope-from jmg@gold.funkthat.com) Received: (from jmg@localhost) by gold.funkthat.com (8.15.2/8.15.2/Submit) id 23NNkGcS035959; Sat, 23 Apr 2022 16:46:16 -0700 (PDT) (envelope-from jmg) Date: Sat, 23 Apr 2022 16:46:16 -0700 From: John-Mark Gurney To: Yusuf Khan Cc: freebsd-drivers@freebsd.org Subject: Re: How do I write a driver and how do I find out what kernel API calls do? Message-ID: <20220423234616.GK88842@funkthat.com> Mail-Followup-To: Yusuf Khan , freebsd-drivers@freebsd.org References: List-Id: Writing device drivers for FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-drivers List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-drivers@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Operating-System: FreeBSD 11.3-STABLE amd64 X-PGP-Fingerprint: D87A 235F FB71 1F3F 55B7 ED9B D5FF 5A51 C0AC 3D65 X-Files: The truth is out there X-URL: https://www.funkthat.com/ X-Resume: https://www.funkthat.com/~jmg/resume.html X-TipJar: bitcoin:13Qmb6AeTgQecazTWph4XasEsP7nGRbAPE X-to-the-FBI-CIA-and-NSA: HI! HOW YA DOIN? can i haz chizburger? User-Agent: Mutt/1.6.1 (2016-04-27) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.4.3 (gold.funkthat.com [127.0.0.1]); Sat, 23 Apr 2022 16:46:16 -0700 (PDT) X-Rspamd-Queue-Id: 4Km7G82Yqsz3QBX X-Spamd-Bar: / Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=none; spf=none (mx1.freebsd.org: domain of jmg@gold.funkthat.com has no SPF policy when checking 208.87.223.18) smtp.mailfrom=jmg@gold.funkthat.com X-Spamd-Result: default: False [-0.75 / 15.00]; SUBJECT_ENDS_QUESTION(1.00)[]; ARC_NA(0.00)[]; FREEFALL_USER(0.00)[jmg]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; NEURAL_HAM_MEDIUM(-0.95)[-0.955]; MID_RHS_MATCH_FROM(0.00)[]; MIME_GOOD(-0.10)[text/plain]; DMARC_NA(0.00)[funkthat.com]; AUTH_NA(1.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; TO_MATCH_ENVRCPT_SOME(0.00)[]; NEURAL_HAM_SHORT(-1.00)[-1.000]; RCPT_COUNT_TWO(0.00)[2]; MLMMJ_DEST(0.00)[freebsd-drivers]; FREEMAIL_TO(0.00)[gmail.com]; FORGED_SENDER(0.30)[jmg@funkthat.com,jmg@gold.funkthat.com]; R_SPF_NA(0.00)[no SPF record]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:32354, ipnet:208.87.216.0/21, country:US]; FROM_NEQ_ENVFROM(0.00)[jmg@funkthat.com,jmg@gold.funkthat.com]; RCVD_TLS_ALL(0.00)[]; RCVD_COUNT_TWO(0.00)[2] X-ThisMailContainsUnwantedMimeParts: N Yusuf Khan wrote this message on Thu, Apr 21, 2022 at 18:17 -0500: > Literally just copy paste the title here. > > Also where do I get documentation? Someone else replied w/ a number of helpful resources, but the other thing to look at is section 9 man pages. Not all the interfaces are documented, but a large number of the ones most often used are there. Also, some of the pages from 3 also apply to the kernel as well, such as the usual string manipulation functions. -- John-Mark Gurney Voice: +1 415 225 5579 "All that I will do, has been done, All that I have, has not." From nobody Mon Apr 25 03:45:44 2022 X-Original-To: freebsd-drivers@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 9CF1F1A8D519 for ; Mon, 25 Apr 2022 03:45:58 +0000 (UTC) (envelope-from yusisamerican@gmail.com) Received: from mail-vs1-xe32.google.com (mail-vs1-xe32.google.com [IPv6:2607:f8b0:4864:20::e32]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1D4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4KmrX520PKz4c6m for ; Mon, 25 Apr 2022 03:45:56 +0000 (UTC) (envelope-from yusisamerican@gmail.com) Received: by mail-vs1-xe32.google.com with SMTP id z144so3588972vsz.13 for ; Sun, 24 Apr 2022 20:45:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=fZY6LYJuMbn40AjLSjde/AtYEpcypSjWUqHu4eAJ75k=; b=QH8+ZGN+b0SLImVOu/OHP90QQY3Ii3RjvBBQlqahanfP31WmKjf8Z3845ji5DRSvBG kLDeHka2kxOJwdwiZsw1E+6kkmqOu5ANQWihTGHP+HvwzypI/EhJpOSNsOQvXdGlZE/5 TIrHkzMCoKQwAbbLtMikfUp8hCdq7x21pIw5rLuh7DNzwKSTe03hvbjYqAlBZwiXHzsL vKZ2IftGCwphR+xG1k9wkWi7rDAC/cfwTQtb4DrxGmqCKCEP4+ghOg+S8mvCGqA9s/gF 7XLKTutlgGQPgDKEfLDDJi+Acp3xmMeuodXR3dqCKKBzOWYcJXH48+/E0Y0ZcpvnXoVi dZSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=fZY6LYJuMbn40AjLSjde/AtYEpcypSjWUqHu4eAJ75k=; b=PXl2Iant5CpAqJ4CIMKaKkhWWyOCyEE/TLYOVXHAOgEkVewmAxpmBIWQV+Da78+MMS i0nrM/wDtLi4WnyaJAOTxuN+4gAGGhHvA6yvdH4qFHxicJWq2vw9O2lDngat3kGZDcuc z0m/glfBF/LoLVEBLeftb/rhVCXmO6jK4OxhEAC6ncc+2nkOwORDXaa3y1kBp+BmLvsp 5rwHCtlNyna5A9rN7gCeoqPqYrk/uhLA2GmuoO7zISaEKR2r+7pkilne3xsb4Mjht959 e/xIeeX+IZu2yVzoe2W6fOl8e99o7CUXoWR1gwvVd1sXX9omh/VCdr9XllrU591EouDX YsdQ== X-Gm-Message-State: AOAM533Tr9gRKC30CXkcGNebm8MpnztvkJOpgmbju8kWmbMJfPz6Itt5 7cNg9B0+J2xvTKmORMPYiUrsJ3qGrlDS+muuMgkYo5zD X-Google-Smtp-Source: ABdhPJxrgaAOPIcHD8u8nu5zuH+jp8GvBL4Dq32N1IEXM2mjjIAiBVcxpYsIfhwolH8N6tbv9VnOxMpjBlqUj1ZVzLQ= X-Received: by 2002:a05:6102:2747:b0:32c:cc66:4979 with SMTP id p7-20020a056102274700b0032ccc664979mr804631vsu.60.1650858356355; Sun, 24 Apr 2022 20:45:56 -0700 (PDT) List-Id: Writing device drivers for FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-drivers List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-drivers@freebsd.org MIME-Version: 1.0 References: <20220423234616.GK88842@funkthat.com> In-Reply-To: <20220423234616.GK88842@funkthat.com> From: Yusuf Khan Date: Sun, 24 Apr 2022 22:45:44 -0500 Message-ID: Subject: Re: How do I write a driver and how do I find out what kernel API calls do? To: Yusuf Khan , freebsd-drivers@freebsd.org Content-Type: multipart/alternative; boundary="000000000000e7b4e205dd7269b4" X-Rspamd-Queue-Id: 4KmrX520PKz4c6m X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20210112 header.b=QH8+ZGN+; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (mx1.freebsd.org: domain of yusisamerican@gmail.com designates 2607:f8b0:4864:20::e32 as permitted sender) smtp.mailfrom=yusisamerican@gmail.com X-Spamd-Result: default: False [-3.00 / 15.00]; TO_DN_SOME(0.00)[]; FREEMAIL_FROM(0.00)[gmail.com]; R_SPF_ALLOW(-0.20)[+ip6:2607:f8b0:4000::/36]; MID_RHS_MATCH_FROMTLD(0.00)[]; DKIM_TRACE(0.00)[gmail.com:+]; RCPT_COUNT_TWO(0.00)[2]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; NEURAL_HAM_SHORT(-1.00)[-1.000]; FREEMAIL_TO(0.00)[gmail.com,freebsd.org]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US]; SUBJECT_ENDS_QUESTION(1.00)[]; DWL_DNSWL_NONE(0.00)[gmail.com:dkim]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20210112]; FROM_HAS_DN(0.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; PREVIOUSLY_DELIVERED(0.00)[freebsd-drivers@freebsd.org]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_IN_DNSWL_NONE(0.00)[2607:f8b0:4864:20::e32:from]; MLMMJ_DEST(0.00)[freebsd-drivers]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[] X-ThisMailContainsUnwantedMimeParts: N --000000000000e7b4e205dd7269b4 Content-Type: text/plain; charset="UTF-8" Awesome, thanks! On Sat, Apr 23, 2022 at 6:46 PM John-Mark Gurney wrote: > Yusuf Khan wrote this message on Thu, Apr 21, 2022 at 18:17 -0500: > > Literally just copy paste the title here. > > > > Also where do I get documentation? > > Someone else replied w/ a number of helpful resources, > but the other thing to look at is section 9 man pages. > > Not all the interfaces are documented, but a large number of the > ones most often used are there. > > Also, some of the pages from 3 also apply to the kernel as well, > such as the usual string manipulation functions. > > -- > John-Mark Gurney Voice: +1 415 225 5579 > > "All that I will do, has been done, All that I have, has not." > --000000000000e7b4e205dd7269b4 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Awesome, thanks!

=
On Sat, Apr 23, 2022 at 6:46 PM John-= Mark Gurney <jmg@funkthat.com>= ; wrote:
Yusuf K= han wrote this message on Thu, Apr 21, 2022 at 18:17 -0500:
> Literally just copy paste the title here.
>
> Also where do I get documentation?

Someone else replied w/ a number of helpful resources,
but the other thing to look at is section 9 man pages.

Not all the interfaces are documented, but a large number of the
ones most often used are there.

Also, some of the pages from 3 also apply to the kernel as well,
such as the usual string manipulation functions.

--
=C2=A0 John-Mark Gurney=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Voice: +1 415 225 5579=

=C2=A0 =C2=A0 =C2=A0"All that I will do, has been done, All that I hav= e, has not."
--000000000000e7b4e205dd7269b4-- From nobody Mon May 2 21:05:57 2022 X-Original-To: freebsd-drivers@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 614211AC2147 for ; Mon, 2 May 2022 21:05:59 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [IPv6:2610:1c1:1:606c::24b:4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4KsbGv1PZ4z4tRn; Mon, 2 May 2022 21:05:59 +0000 (UTC) (envelope-from jhb@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1651525559; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=PtLGh9XYWxqPFmNMI8mr8p/AeXgXoR4KFA4PiLnMiRU=; b=OSHWPmJD6bPqf4M9MX0D248x6eU/zZwlCNI+dGFMsNHBZjHkVIh7GSOdohX2UKiorR6Lty XfK+fFC15nXZBqUU4vYwXprgSbnaEzAaKcUTx8I/B5yy3/2HUmXiF9MB5mu8Bj8HZun2cM dSCtJg9niG88HDFHFPM9sU/z1VibXRl8lj7SnWb1XhV4Eudk/6+cq6Pze+FG20MKX9mcBw TKom7tiYrZ22rCB/mVcSTV6dswSU3sm81rPGtMqdE5OTR8Wus15Ogjku8kmFD8Cz4PRBtP bbivVqVi5lyws5HQUB22VkCrUDaP2Fsjj44a2nHFGE9qQlAeZv4OBxALJemoPw== Received: from [10.0.1.4] (ralph.baldwin.cx [66.234.199.215]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: jhb) by smtp.freebsd.org (Postfix) with ESMTPSA id C0113DD4C; Mon, 2 May 2022 21:05:58 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Message-ID: <200b4f6d-b533-042c-a411-1c100ed0b48b@FreeBSD.org> Date: Mon, 2 May 2022 14:05:57 -0700 List-Id: Writing device drivers for FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-drivers List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-drivers@freebsd.org MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.8.0 Subject: Re: Why mtx_sleep returning EWOUNDBLOCK? Content-Language: en-US To: Farhan Khan , freebsd-drivers@freebsd.org References: <706b2fc4-ce74-8716-d5c6-092d69c9c0fc@farhan.codes> From: John Baldwin In-Reply-To: <706b2fc4-ce74-8716-d5c6-092d69c9c0fc@farhan.codes> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1651525559; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=PtLGh9XYWxqPFmNMI8mr8p/AeXgXoR4KFA4PiLnMiRU=; b=V+RDk0UCxt/FEzt8JNXn4t8BIu/rjLWbW1nysnrqkjcj0up1jtnMLcWnsUPJ4hYZ0TGBEm r7DUqU8L8EOSXLXXnVAHl+k1EDwhLWePgsE0d8aILlFohSJtYWc+BLBhXzEYajFAKlO70j /jbTGuYr54zIIT3tCRm9rsrv9Q/VIRJ77x88NA9VYyxCsA6Wu656lARdkDyl26oFza7nDl sdmLq5G5Oia6W1Llj36ED8qNkxOmJvP7oLL8ZQsogrSSGdwhPjIToXnRSAW3AXqvJfEHP6 84yspqh5jt9O6D9D8iSa0YW6HTxZkNanFOjpy9gAhk7G+RYQ1Hlndj14tXnDMw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1651525559; a=rsa-sha256; cv=none; b=fcvmWuOyVoc4W58jtLxI9+gsZl6FeT06193z50I0wvkqtnv8wXHeto50dq6GuPGo9Ac7nA xh0tqX97spefpcETqEzYo6ZX6IQidrsrTdCpNJUvFU8BAzYVWaYzwZAmksrn1mNsUjwJNL atrL0qCyGyLUX5WQSK88eyAXqKIcJvWD5E/frULLxr6ewCKkNV9H1g+cYFaVGqtTJMMvo+ ITMpdJpdQa+ux3uc6dKTUZ4Iq18ROIbgpA5MEh83+Q8f/mDiz+BYTWBjTBrmBK0PwtY+qx 8Pd0didqy54DGnttvw8vprvPADGpSArqr9dwcAdldCtgnI1eFwwBGbNnEPvbHA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N On 3/13/22 1:02 PM, Farhan Khan wrote: > Hi all, > > Summary: I am running mtx_sleep() but getting an EWOUNDBLOCK response > code and do not understand why. > > I am looking at port code from the OpenBSD side to FreeBSD. I am > assuming that tsleep_nsec()'s equivalent on FreeBSD is mtx_sleep(). To > that end, I am running mtx_sleep as this: > > mtx_lock(&(sc)->sc_mtx); > error = mtx_sleep(sc, &sc->sc_mtx, 0 , "athnfw", hz); > mtx_unlock(&(sc)->sc_mtx); > > However, the error code returns a EWOUNDBLOCK. I would expect this to be > 0. From reading the man page for sleep(9), this means "A non-zero > timeout was specified and the timeout". But if I slept for 1 hz, isn't > that exactly what I want and thus it should return 0 (no error)? > > The OpenBSD line in question is: > > error = tsleep_nsec(&usc->wait_msg_id, 0, "athnfw", SEC_TO_NSEC(1)); > > Perhaps there is something I am not understanding here? Please advise. > Thanks! error == 0 means you were awakened by an explicit wakeup() rather than a timeout (EWOULDBLOCK). If we returned 0 for timeouts the caller would have no way to determine if a timeout had occurred or not. If you as the caller don't view timeouts as fatal, you can explicitly map EWOULDBLOCK to 0. -- John Baldwin From nobody Thu May 5 13:49:16 2022 X-Original-To: freebsd-drivers@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 064091AC0862 for ; Thu, 5 May 2022 13:49:45 +0000 (UTC) (envelope-from farhan@farhan.codes) Received: from out1-smtp.messagingengine.com (out1-smtp.messagingengine.com [66.111.4.25]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4KvFS75wtdz3Cg6 for ; Thu, 5 May 2022 13:49:43 +0000 (UTC) (envelope-from farhan@farhan.codes) Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 1271D5C0156 for ; Thu, 5 May 2022 09:49:37 -0400 (EDT) Received: from imap45 ([10.202.2.95]) by compute1.internal (MEProxy); Thu, 05 May 2022 09:49:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=farhan.codes; h= cc:content-type:date:date:from:from:in-reply-to:message-id :mime-version:reply-to:sender:subject:subject:to:to; s=fm2; t= 1651758577; x=1651844977; bh=I5BDR0mEQzxoAN6qQ2VdPxfgUpxJeKyseQo 42Edi/c4=; b=VlTZfYDV3RWJeF4FWfybn2y7MFbMkIHDKBOPB2WU3xD9PkAkulz o8EX32sFU/nBWyyz7s7NyEcFZiJX/LGozjQ9ZpuxxiGqw3Lm+7UqUGsxNw+L2KWN +Lb7r6cBzsC2ECYR2WAd78h9S7jcyVzF3MunnIgE6TsBNZn8lky6h9O/xhdzO11R HwxFDn2KlnAjUXm4z7feu8RzNx0ab6XGNR8R/tIeapiw1NiQFO8tVFM8ElzGSh0R DahU78y/G+z2MRi6CIOlFUCGtx+kjUe2icCl+HKZY+ES91btHNoB8adiR87eYRLI zsy9bL2IaKNHaNsngyRUaFJ1r0DTSSqlf0A== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:date:from:from :in-reply-to:message-id:mime-version:reply-to:sender:subject :subject:to:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm1; t=1651758577; x=1651844977; bh=I5BDR0mEQzxoA N6qQ2VdPxfgUpxJeKyseQo42Edi/c4=; b=lb9WvKY3HVd1qc9KiKVjoNtH66mfS xkYvxI/jrVlURbXZF1hSjdOjQWJUQgObXrbDQ/wLolKSOnsSj4wl5DSs3owpf2ja 9Z/iKbaOgpk9P5RU7WGE1ovk+F3QtRdylocfxoe7eed6ya15E6l47t62xddXhfun /wYeNEGNL8GcGJ6b1BFar592mO2/0NnXymonHv05s3lMfkkAJVRU2Ni+jRy3JvvZ ufi15qSY4XWiAB239ZlTvSvNg1kc3Pyv4ZeVCFv31Hb1eU4ZQaCkHQR271VyW7jG dfreotyJXSKpkW5DpYrGSOJZQ8Nfodi8RkaRdBWoWVhtdNmTeKtyPxZIw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrfedugdeikecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecunecujfgurhepofgfggfkfffhvffutgesrgdtreerre ertdenucfhrhhomhepfdfhrghrhhgrnhcumfhhrghnfdcuoehfrghrhhgrnhesfhgrrhhh rghnrdgtohguvghsqeenucggtffrrghtthgvrhhnpeettdekkeefgfefiedtvdelvdelie ffiefgieetveejgfetvdeukefgvdffhfdtueenucevlhhushhtvghrufhiiigvpedtnecu rfgrrhgrmhepmhgrihhlfhhrohhmpehfrghrhhgrnhesfhgrrhhhrghnrdgtohguvghs X-ME-Proxy: Received: by mailuser.nyi.internal (Postfix, from userid 501) id C76102720064; Thu, 5 May 2022 09:49:36 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface User-Agent: Cyrus-JMAP/3.7.0-alpha0-591-gfe6c3a2700-fm-20220427.001-gfe6c3a27 List-Id: Writing device drivers for FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-drivers List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-drivers@freebsd.org Mime-Version: 1.0 Message-Id: <86ee7ca4-01c3-41dc-bbe0-5e8576fa7d62@www.fastmail.com> Date: Thu, 05 May 2022 09:49:16 -0400 From: "Farhan Khan" To: freebsd-drivers@freebsd.org Subject: What is timo from sleep(9) functions Content-Type: multipart/alternative; boundary=32c607a3a28b4d87af9861527bff80df X-Rspamd-Queue-Id: 4KvFS75wtdz3Cg6 X-Spamd-Bar: --- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=farhan.codes header.s=fm2 header.b=VlTZfYDV; dkim=pass header.d=messagingengine.com header.s=fm1 header.b=lb9WvKY3; dmarc=none; spf=pass (mx1.freebsd.org: domain of farhan@farhan.codes designates 66.111.4.25 as permitted sender) smtp.mailfrom=farhan@farhan.codes X-Spamd-Result: default: False [-3.59 / 15.00]; XM_UA_NO_VERSION(0.01)[]; RWL_MAILSPIKE_GOOD(0.00)[66.111.4.25:from]; MV_CASE(0.50)[]; R_SPF_ALLOW(-0.20)[+ip4:66.111.4.25]; TO_DN_NONE(0.00)[]; RCVD_COUNT_THREE(0.00)[4]; DKIM_TRACE(0.00)[farhan.codes:+,messagingengine.com:+]; NEURAL_HAM_SHORT(-1.00)[-0.997]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; RCVD_TLS_LAST(0.00)[]; ASN(0.00)[asn:19151, ipnet:66.111.4.0/24, country:US]; RCVD_IN_DNSWL_LOW(-0.10)[66.111.4.25:from]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; R_DKIM_ALLOW(-0.20)[farhan.codes:s=fm2,messagingengine.com:s=fm1]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; PREVIOUSLY_DELIVERED(0.00)[freebsd-drivers@freebsd.org]; DMARC_NA(0.00)[farhan.codes]; RCPT_COUNT_ONE(0.00)[1]; DWL_DNSWL_LOW(-1.00)[messagingengine.com:dkim]; MLMMJ_DEST(0.00)[freebsd-drivers]; MID_RHS_WWW(0.50)[] X-ThisMailContainsUnwantedMimeParts: N --32c607a3a28b4d87af9861527bff80df Content-Type: text/plain Hi all, Hopefully simple question: What is the unit of the `int timeo` parameter in sleep(9)? Is it the timeout in milliseconds? Or would 1 mean a second? Related, what does the `hz` variable mean and why is it used? I see instances of timo's in multiples of hz (ie, hz * 10). OpenGrok shows it defined in a few different places and its not clear to me which it is. Thank you! -- Farhan Khan PGP Fingerprint: 1312 89CE 663E 1EB2 179C 1C83 C41D 2281 F8DA C0DE --32c607a3a28b4d87af9861527bff80df Content-Type: text/html
Hi all,

Hopefully simple question:

What is the unit of the `int timeo` parameter in sleep(9)? Is it the timeout in milliseconds? Or would 1 mean a second?
Related, what does the `hz` variable mean and why is it used? I see instances of timo's in multiples of hz (ie, hz * 10). OpenGrok shows it defined in a few different places and its not clear to me which it is.

Thank you!
--
Farhan Khan
PGP Fingerprint: 1312 89CE 663E 1EB2 179C 1C83 C41D 2281 F8DA C0DE


--32c607a3a28b4d87af9861527bff80df--

From nobody Thu May  5 14:38:21 2022
X-Original-To: freebsd-drivers@mlmmj.nyi.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
	by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id CCF9C1ACA910
	for ; Thu,  5 May 2022 14:38:33 +0000 (UTC)
	(envelope-from wlosh@bsdimp.com)
Received: from mail-ua1-x930.google.com (mail-ua1-x930.google.com [IPv6:2607:f8b0:4864:20::930])
	(using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
	 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256
	 client-signature RSA-PSS (2048 bits) client-digest SHA256)
	(Client CN "smtp.gmail.com", Issuer "GTS CA 1D4" (verified OK))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4KvGXS66rVz3Jly
	for ; Thu,  5 May 2022 14:38:32 +0000 (UTC)
	(envelope-from wlosh@bsdimp.com)
Received: by mail-ua1-x930.google.com with SMTP id q4so1741571uas.0
        for ; Thu, 05 May 2022 07:38:32 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=bsdimp-com.20210112.gappssmtp.com; s=20210112;
        h=mime-version:references:in-reply-to:from:date:message-id:subject:to
         :cc;
        bh=i6MqivIKEgq4EXwFg/psVgs3tKB7A8ioyAJzuVdVDNA=;
        b=JcpLaOyEJqupqe83/DsMqQmI2rzeT5CJtOqwwTyEGcAogQd+MMeQi2awlcFdHCbYk9
         iFLyVifiUdd6P+mhJmqg3D1yb8TjZmhYLtujcnjOzF/mo53vr+rRJ+daZmMON+k84K4V
         AtZHJjYShQ5tWhpn8znHELtXD1fYj24qNVqQD6+qGocW5op0O6UvOqfehEDoHCsD8Nm2
         K/RHq0KDgVGd2b+/c/5/wv6DexstApbYYm6ielg7pZiPAzduL5v1sr+O4sAQwe1OC3gd
         a0GnBodxIoD47aSvNj7ZatIxOKp7OcTeBofHKxh+Gp+3DnAlTeGbo9IyxI+K1UclDk6w
         HOvg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20210112;
        h=x-gm-message-state:mime-version:references:in-reply-to:from:date
         :message-id:subject:to:cc;
        bh=i6MqivIKEgq4EXwFg/psVgs3tKB7A8ioyAJzuVdVDNA=;
        b=NCaa6vZ6N7Ia0PrgY7oMqPN4YT1sgekTVoQ4YHE5xh0RDG/BYqRk2raGxvN5zJalRY
         Tf7vc3/BgQ0GEvCu1BRKAonzkrzpPKDv/c2xZpLo17a3Z6gcG8ptmtiY7uYcK3UQd4DM
         tTaeHWdJ0PQ0zE2RFmFy90zsEqKQkfCAJB3PsPkoyXTo+hTL9/3yZwIERPiFNCxPPJak
         H6OUbt/I3muBF5o7P80fPDNTCTUtoIJ40KWRbTGSJn0S2mz9aXORdEnVr210hWt9b+OQ
         HKfaYU4dLVSD7Ii+7PkhxwN1cMHN4/5cNQEaDhE9J7pFWltKmxtFv2BzM9AR7OAEzQ+y
         Cntg==
X-Gm-Message-State: AOAM533nPIeq+jICSyTihvUOy9J/j2mgGwxPjP+eM7eE9k37S+D3vk6D
	aLvaUxYaj3sw7/2eMk8GhZVVwu0upP6BILRZyiTH4Q==
X-Google-Smtp-Source: ABdhPJzzSK+Nli0sta9BNHthTJQS1X2dJhZcYh6aHSs+C+3UEsiKGfK5cXx2f91ETcDimP4vdI1M6uOeFjsGWUn+JVI=
X-Received: by 2002:ab0:63d0:0:b0:365:1286:5266 with SMTP id
 i16-20020ab063d0000000b0036512865266mr8078965uap.2.1651761512054; Thu, 05 May
 2022 07:38:32 -0700 (PDT)
List-Id: Writing device drivers for FreeBSD 
List-Archive: https://lists.freebsd.org/archives/freebsd-drivers
List-Help: 
List-Post: 
List-Subscribe: 
List-Unsubscribe: 
Sender: owner-freebsd-drivers@freebsd.org
MIME-Version: 1.0
References: <86ee7ca4-01c3-41dc-bbe0-5e8576fa7d62@www.fastmail.com>
In-Reply-To: <86ee7ca4-01c3-41dc-bbe0-5e8576fa7d62@www.fastmail.com>
From: Warner Losh 
Date: Thu, 5 May 2022 08:38:21 -0600
Message-ID: 
Subject: Re: What is timo from sleep(9) functions
To: Farhan Khan 
Cc: freebsd-drivers@freebsd.org
Content-Type: multipart/alternative; boundary="0000000000002e155f05de44b201"
X-Rspamd-Queue-Id: 4KvGXS66rVz3Jly
X-Spamd-Bar: --
Authentication-Results: mx1.freebsd.org;
	dkim=pass header.d=bsdimp-com.20210112.gappssmtp.com header.s=20210112 header.b=JcpLaOyE;
	dmarc=none;
	spf=none (mx1.freebsd.org: domain of wlosh@bsdimp.com has no SPF policy when checking 2607:f8b0:4864:20::930) smtp.mailfrom=wlosh@bsdimp.com
X-Spamd-Result: default: False [-3.00 / 15.00];
	 RCVD_TLS_ALL(0.00)[];
	 ARC_NA(0.00)[];
	 R_DKIM_ALLOW(-0.20)[bsdimp-com.20210112.gappssmtp.com:s=20210112];
	 NEURAL_HAM_MEDIUM(-1.00)[-1.000];
	 FROM_HAS_DN(0.00)[];
	 TO_DN_SOME(0.00)[];
	 NEURAL_HAM_LONG(-1.00)[-0.999];
	 MIME_GOOD(-0.10)[multipart/alternative,text/plain];
	 PREVIOUSLY_DELIVERED(0.00)[freebsd-drivers@freebsd.org];
	 DMARC_NA(0.00)[bsdimp.com];
	 TO_MATCH_ENVRCPT_SOME(0.00)[];
	 DKIM_TRACE(0.00)[bsdimp-com.20210112.gappssmtp.com:+];
	 RCPT_COUNT_TWO(0.00)[2];
	 RCVD_IN_DNSWL_NONE(0.00)[2607:f8b0:4864:20::930:from];
	 NEURAL_HAM_SHORT(-1.00)[-0.997];
	 MLMMJ_DEST(0.00)[freebsd-drivers];
	 FORGED_SENDER(0.30)[imp@bsdimp.com,wlosh@bsdimp.com];
	 R_SPF_NA(0.00)[no SPF record];
	 MIME_TRACE(0.00)[0:+,1:+,2:~];
	 RCVD_COUNT_TWO(0.00)[2];
	 ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US];
	 FROM_NEQ_ENVFROM(0.00)[imp@bsdimp.com,wlosh@bsdimp.com]
X-ThisMailContainsUnwantedMimeParts: N

--0000000000002e155f05de44b201
Content-Type: text/plain; charset="UTF-8"

On Thu, May 5, 2022 at 7:50 AM Farhan Khan  wrote:

> Hi all,
>
> Hopefully simple question:
>
> What is the unit of the `int timeo` parameter in sleep(9)? Is it the
> timeout in milliseconds? Or would 1 mean a second?
> Related, what does the `hz` variable mean and why is it used? I see
> instances of timo's in multiples of hz (ie, hz * 10). OpenGrok shows it
> defined in a few different places and its not clear to me which it is.
>

The units are ticks. 1/hz seconds. There's other functions that let you
sleep with other units (all the _sbt ones).

     The parameter timo specifies a timeout for the sleep.  If timo is not
0,
     then the thread will sleep for at most timo / hz seconds.  If the
timeout
     expires, then the sleep function will return EWOULDBLOCK.

Warner

--0000000000002e155f05de44b201
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable



=
On Thu, May 5, 2022 at 7:50 AM Farhan= Khan <farhan@farhan.codes> wrote:
Hi all,

<= div>Hopefully simple question:

What is the uni= t of the `int timeo` parameter in sleep(9)? Is it the timeout in millisecon= ds? Or would 1 mean a second?
Related, what does the `hz` var= iable mean and why is it used? I see instances of timo's in multiples o= f hz (ie, hz * 10). OpenGrok shows it defined in a few different places and= its not clear to me which it is.

The units are ticks. 1/hz seconds. There's other=C2=A0functions that= let you sleep with other units (all the _sbt ones).

=C2=A0 =C2=A0 =C2=A0The parameter timo specifies a timeout for the sleep= .=C2=A0 If timo is not 0,
=C2=A0 =C2=A0 =C2=A0then the thread will sleep= for at most timo / hz seconds.=C2=A0 If the timeout
=C2=A0 =C2=A0 =C2= =A0expires, then the sleep function will return EWOULDBLOCK.
=
Warner=C2=A0
--0000000000002e155f05de44b201-- From nobody Sun Aug 14 12:12:26 2022 X-Original-To: freebsd-drivers@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4M5GWJ4GyNz4Z37s for ; Sun, 14 Aug 2022 12:12:28 +0000 (UTC) (envelope-from gmimi@dnmx.org) Received: from mail.dnmx.org (212-8-242-149.hosted-by-worldstream.net [212.8.242.149]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X448 server-signature RSA-PSS (4096 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4M5GWJ0Mxgz4B7v for ; Sun, 14 Aug 2022 12:12:27 +0000 (UTC) (envelope-from gmimi@dnmx.org) Received: from hxuzjtocnzvv5g2rtg2bhwkcbupmk7rclb6lly3fo4tvqkk5oyrv3nid.onion (localhost [127.0.0.1]) by mail.dnmx.org (Postfix) with ESMTPA id 5000EB8506F for ; Sun, 14 Aug 2022 08:12:26 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dnmx.org; s=mail; t=1660479146; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:in-reply-to: references; bh=u7lSt2OyT83NZrn5s7rFdTBaRDSv6pf8aXYWeI6A2m8=; b=Wn/7SYcF/TfqIp3C0/xL2aD7mPuOKCatfYloNvQVgU+M2BFMn0rpSJZutODdDPiP+RvCX0 7WiX2IpRGsxSqg49APGcq7J5q3sPhNWP8WBKRHghbMmOjJxUe3zSFi5nRB+ojvWgQ/3W39 2acien5+0oWAAFP2RR+sq7lSFwiFxIsyv79qMPlSUiFQI7WIC6yRrieAZ4APEjPNFOrB8k /NlVpYeAo1rMM/7q6jCLjpVG1jUKoT+W6oZHH2A4mvpQjNQ7FJH0ig4FZcUSeL6E8UiMgw 7aHKmSlCVUcYNzMvBf2SZG9jTQFlL9EgEDaDxAKZYjegSgQXN4wDGmfuBozvtQ== Received: from 127.0.0.1 (SquirrelMail authenticated user gmimi@dnmx.org) by hxuzjtocnzvv5g2rtg2bhwkcbupmk7rclb6lly3fo4tvqkk5oyrv3nid.onion with HTTP; Sun, 14 Aug 2022 08:12:26 -0400 Message-ID: <02b9720051fb0a9c80ba1f0f1971ced9.squirrel@hxuzjtocnzvv5g2rtg2bhwkcbupmk7rclb6lly3fo4tvqkk5oyrv3nid.onion> Date: Sun, 14 Aug 2022 08:12:26 -0400 Subject: graphics/sound stutters From: gmimi@dnmx.org To: freebsd-drivers@freebsd.org User-Agent: SquirrelMail/1.4.22 List-Id: Writing device drivers for FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-drivers List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-drivers@freebsd.org MIME-Version: 1.0 Content-Type: text/plain;charset=utf-8 Content-Transfer-Encoding: 8bit X-Priority: 3 (Normal) Importance: Normal X-Rspamd-Queue-Id: 4M5GWJ0Mxgz4B7v X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=dnmx.org header.s=mail header.b="Wn/7SYcF"; dmarc=pass (policy=reject) header.from=dnmx.org; spf=pass (mx1.freebsd.org: domain of gmimi@dnmx.org designates 212.8.242.149 as permitted sender) smtp.mailfrom=gmimi@dnmx.org X-Spamd-Result: default: False [-3.00 / 15.00]; HFILTER_HOSTNAME_2(1.00)[212-8-242-149.hosted-by-worldstream.net]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_SHORT(-1.00)[-1.000]; DMARC_POLICY_ALLOW(-0.50)[dnmx.org,reject]; R_SPF_ALLOW(-0.20)[+mx]; R_DKIM_ALLOW(-0.20)[dnmx.org:s=mail]; MIME_GOOD(-0.10)[text/plain]; FROM_NO_DN(0.00)[]; HAS_X_PRIO_THREE(0.00)[3]; MLMMJ_DEST(0.00)[freebsd-drivers@freebsd.org]; MIME_TRACE(0.00)[0:+]; FROM_EQ_ENVFROM(0.00)[]; DKIM_TRACE(0.00)[dnmx.org:+]; RCVD_VIA_SMTP_AUTH(0.00)[]; RCVD_TLS_LAST(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; ARC_NA(0.00)[]; RCVD_COUNT_THREE(0.00)[3]; PREVIOUSLY_DELIVERED(0.00)[freebsd-drivers@freebsd.org]; RCPT_COUNT_ONE(0.00)[1]; TO_DN_NONE(0.00)[]; ASN(0.00)[asn:49981, ipnet:212.8.242.0/23, country:NL] X-ThisMailContainsUnwantedMimeParts: N Hello there. Okay, so - sometimes (often, but short-lasting) I get stutters. The graphics and sound seem to pause for like 0.5-1 seconds. This is very noticable in MPV, while playing something. And I think that it also happens outside of MPV, but isn't as noticable? I might be wrong there. GPU: AMD RX 5600XT 6GB OC Drivers: drm-54-kmod-5.4.191_1 DRM drivers modules gpu-firmware-amd-kmod-navi10-20220511 Firmware modules for navi10 AMD GPUs Anything else I can help with? Perhaps a dmesg output or otherwise? From nobody Sat Aug 20 14:37:32 2022 X-Original-To: freebsd-drivers@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4M91S61NMnz4ZSQ2 for ; Sat, 20 Aug 2022 14:37:42 +0000 (UTC) (envelope-from gmimi@dnmx.org) Received: from mail.dnmx.org (212-8-242-149.hosted-by-worldstream.net [212.8.242.149]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X448 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4M91S40r0bz3Kpq for ; Sat, 20 Aug 2022 14:37:39 +0000 (UTC) (envelope-from gmimi@dnmx.org) Received: from hxuzjtocnzvv5g2rtg2bhwkcbupmk7rclb6lly3fo4tvqkk5oyrv3nid.onion (localhost [127.0.0.1]) by mail.dnmx.org (Postfix) with ESMTPA id 4CE67B8583B; Sat, 20 Aug 2022 10:37:32 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dnmx.org; s=mail; t=1661006252; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=FSSRI6DqccYz5ofVr3//pRYrEM/ex8mdkOu6kNYJVrw=; b=kLMk7FIC8EKtANdUhZE8b0Evpmwl+aMT2q5j2x+VfI70RrVK10xfyB/5tJF8Cdl4+ex0/3 Rxrz0dBKT6DTYeV3qZAeqJbTvl+xPa4LJR3la6KPCfJrowey0lSCiW0jDSYqGTRn+tmibE o3zweavqOOI08w7R2dIimBtDztmDDqek38FAhj4R27xJ5vimHAebd8n+6prQNbogRDWhc7 NEUDieptjRHrI0+t8DNqyKkqU5u60y4LKJqE0OpE9WCbRgcqTdmcXBW/ea+ng+iPQEedxY +1XlxcbP/cGj4bskww+TWE2ioRLU2Nn1Ko4gyrJ9d+sTxMQqKszvAeIts0ir5A== Received: from 127.0.0.1 (SquirrelMail authenticated user gmimi@dnmx.org) by hxuzjtocnzvv5g2rtg2bhwkcbupmk7rclb6lly3fo4tvqkk5oyrv3nid.onion with HTTP; Sat, 20 Aug 2022 10:37:32 -0400 Message-ID: In-Reply-To: References: <02b9720051fb0a9c80ba1f0f1971ced9.squirrel@hxuzjtocnzvv5g2rtg2bhwkcbupmk7rclb6lly3fo4tvqkk5oyrv3nid.onion> Date: Sat, 20 Aug 2022 10:37:32 -0400 Subject: RE: graphics/sound stutters From: gmimi@dnmx.org To: "Chen, Alvin W" Cc: freebsd-drivers@freebsd.org User-Agent: SquirrelMail/1.4.22 List-Id: Writing device drivers for FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-drivers List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-drivers@freebsd.org MIME-Version: 1.0 Content-Type: text/plain;charset=utf-8 Content-Transfer-Encoding: 8bit X-Priority: 3 (Normal) Importance: Normal X-Rspamd-Queue-Id: 4M91S40r0bz3Kpq X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=dnmx.org header.s=mail header.b=kLMk7FIC; dmarc=pass (policy=reject) header.from=dnmx.org; spf=pass (mx1.freebsd.org: domain of gmimi@dnmx.org designates 212.8.242.149 as permitted sender) smtp.mailfrom=gmimi@dnmx.org X-Spamd-Result: default: False [-3.00 / 15.00]; HFILTER_HOSTNAME_2(1.00)[212-8-242-149.hosted-by-worldstream.net]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_SHORT(-1.00)[-0.999]; DMARC_POLICY_ALLOW(-0.50)[dnmx.org,reject]; R_SPF_ALLOW(-0.20)[+mx]; R_DKIM_ALLOW(-0.20)[dnmx.org:s=mail]; MIME_GOOD(-0.10)[text/plain]; MLMMJ_DEST(0.00)[freebsd-drivers@freebsd.org]; RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; HAS_X_PRIO_THREE(0.00)[3]; MIME_TRACE(0.00)[0:+]; FROM_NO_DN(0.00)[]; TO_MATCH_ENVRCPT_SOME(0.00)[]; DKIM_TRACE(0.00)[dnmx.org:+]; ARC_NA(0.00)[]; RCPT_COUNT_TWO(0.00)[2]; TO_DN_SOME(0.00)[]; RCVD_TLS_LAST(0.00)[]; RCVD_COUNT_THREE(0.00)[3]; ASN(0.00)[asn:49981, ipnet:212.8.242.0/23, country:NL] X-ThisMailContainsUnwantedMimeParts: N >> [QUOTING MY ORIGINAL E-MAIL] > > Internal Use - Confidential Yo, what? From nobody Fri Sep 2 10:55:32 2022 X-Original-To: freebsd-drivers@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4MJvw40Npwz4bjwR for ; Fri, 2 Sep 2022 10:55:48 +0000 (UTC) (envelope-from gmimi@dnmx.org) Received: from mail.dnmx.org (212-8-242-149.hosted-by-worldstream.net [212.8.242.149]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X448 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4MJvw32HxVz3xpD for ; Fri, 2 Sep 2022 10:55:46 +0000 (UTC) (envelope-from gmimi@dnmx.org) Received: from hxuzjtocnzvv5g2rtg2bhwkcbupmk7rclb6lly3fo4tvqkk5oyrv3nid.onion (localhost [127.0.0.1]) by mail.dnmx.org (Postfix) with ESMTPA id A08D9B86342 for ; Fri, 2 Sep 2022 06:55:31 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dnmx.org; s=mail; t=1662116136; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fbwva/CbiKKkNsWiX2LEeANoBnwrKqdzU9EK+wYxchI=; b=aq0/Xq3f62oEwOF4n52camIO57WbmvCmfOMYsjP/oHUIu87BCzGa2HHvjonP+PjRlAw5mc KTeeJuZJR79SZ3GcajHn+dbFsKgi3kdMlIOJyHN8+9caP7e1wuXxce4H6WaxrA0HvAuBUW FQRmoHTx9J7Ql1ZuGxtJV5Yb77lKk/wRrbxitPVqrP5Juoq1QfcyAoxZvWQPztcPaG6h++ RYlOQBGiKi/We2opJ6NC1en9cmLuEu3FXS4Rl7llE7/hFRwtv5YYrn8k6UDO5O+5K0C0nl fVghuVdHddZouqCAmxlmhKHllSJmlai9iGHMYhbaMPSN/ZeG8uzty13+EryDqA== Received: from 127.0.0.1 (SquirrelMail authenticated user gmimi@dnmx.org) by hxuzjtocnzvv5g2rtg2bhwkcbupmk7rclb6lly3fo4tvqkk5oyrv3nid.onion with HTTP; Fri, 2 Sep 2022 06:55:32 -0400 Message-ID: <7051847ff7bd560580c709b77cefd4ee.squirrel@hxuzjtocnzvv5g2rtg2bhwkcbupmk7rclb6lly3fo4tvqkk5oyrv3nid.onion> In-Reply-To: <02b9720051fb0a9c80ba1f0f1971ced9.squirrel@hxuzjtocnzvv5g2rtg2bhwkcbupmk7rclb6lly3fo4tvqkk5oyrv3nid.onion> References: <02b9720051fb0a9c80ba1f0f1971ced9.squirrel@hxuzjtocnzvv5g2rtg2bhwkcbupmk7rclb6lly3fo4tvqkk5oyrv3nid.onion> Date: Fri, 2 Sep 2022 06:55:32 -0400 Subject: Re: graphics/sound stutters From: gmimi@dnmx.org To: freebsd-drivers@freebsd.org User-Agent: SquirrelMail/1.4.22 List-Id: Writing device drivers for FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-drivers List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-drivers@freebsd.org MIME-Version: 1.0 Content-Type: text/plain;charset=utf-8 Content-Transfer-Encoding: 8bit X-Priority: 3 (Normal) Importance: Normal X-Rspamd-Queue-Id: 4MJvw32HxVz3xpD X-Spamd-Bar: / Authentication-Results: mx1.freebsd.org; dkim=pass header.d=dnmx.org header.s=mail header.b="aq0/Xq3f"; dmarc=pass (policy=reject) header.from=dnmx.org; spf=pass (mx1.freebsd.org: domain of gmimi@dnmx.org designates 212.8.242.149 as permitted sender) smtp.mailfrom=gmimi@dnmx.org X-Spamd-Result: default: False [-0.98 / 15.00]; HFILTER_HOSTNAME_2(1.00)[212-8-242-149.hosted-by-worldstream.net]; NEURAL_HAM_SHORT(-0.98)[-0.982]; DMARC_POLICY_ALLOW(-0.50)[dnmx.org,reject]; R_SPF_ALLOW(-0.20)[+mx]; R_DKIM_ALLOW(-0.20)[dnmx.org:s=mail]; MIME_GOOD(-0.10)[text/plain]; FROM_EQ_ENVFROM(0.00)[]; HAS_X_PRIO_THREE(0.00)[3]; MLMMJ_DEST(0.00)[freebsd-drivers@freebsd.org]; MIME_TRACE(0.00)[0:+]; FROM_NO_DN(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; RCVD_COUNT_THREE(0.00)[3]; RCVD_TLS_LAST(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; ARC_NA(0.00)[]; DKIM_TRACE(0.00)[dnmx.org:+]; PREVIOUSLY_DELIVERED(0.00)[freebsd-drivers@freebsd.org]; RCPT_COUNT_ONE(0.00)[1]; TO_DN_NONE(0.00)[]; ASN(0.00)[asn:49981, ipnet:212.8.242.0/23, country:NL] X-ThisMailContainsUnwantedMimeParts: N > Hello there. > Okay, so - sometimes (often, but short-lasting) I get stutters. > The graphics and sound seem to pause for like 0.5-1 seconds. > This is very noticable in MPV, while playing something. > And I think that it also happens outside of MPV, but isn't as noticable? > I might be wrong there. > > GPU: > AMD RX 5600XT 6GB OC > > Drivers: > drm-54-kmod-5.4.191_1 DRM drivers modules > gpu-firmware-amd-kmod-navi10-20220511 Firmware modules for navi10 AMD GPUs > > Anything else I can help with? Perhaps a dmesg output or otherwise? It actually seems to be a problem with https://dwm.suckless.org .. an window manager that I use.. But the problem doesn't seem to be present on OpenBSD, any idea why is that? Perhaps some library or setting? From nobody Thu Sep 15 08:37:55 2022 X-Original-To: freebsd-drivers@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4MSrF91Jwvz4cW5C for ; Thu, 15 Sep 2022 08:38:05 +0000 (UTC) (envelope-from Lee.MATTHEWS.external@stormshield.eu) Received: from work.stormshield.eu (gwlille.netasq.com [91.212.116.1]) by mx1.freebsd.org (Postfix) with ESMTP id 4MSrF75XBnz3SGQ for ; Thu, 15 Sep 2022 08:38:03 +0000 (UTC) (envelope-from Lee.MATTHEWS.external@stormshield.eu) Received: from work.stormshield.eu (localhost.localdomain [127.0.0.1]) by work.stormshield.eu (Postfix) with ESMTPS id 7B1423760B30 for ; Thu, 15 Sep 2022 10:37:56 +0200 (CEST) Received: from localhost (localhost.localdomain [127.0.0.1]) by work.stormshield.eu (Postfix) with ESMTP id 616443761576 for ; Thu, 15 Sep 2022 10:37:56 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.10.3 work.stormshield.eu 616443761576 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=stormshield.eu; s=5EC8D4C2-228B-11EC-A8BC-C05B4988C3CE; t=1663231076; bh=0DIwZr1bcaZcqBCs0VjkP6WubiP9cIlxzO4swQIEgXE=; h=From:To:Date:Message-ID:MIME-Version; b=JDDOZuIMzI5rQW5VBs42dbmUqfsvcabau9BVkgoST46x0uyU6IzwgNtl9jiwaMuUT vWNVcPHEOq3oIwigOxYcY63Sw2GfZWCLSe3VDUbC9ZCD8tPWCfVsZJuTSyttbV+9wJ 9YVFeUcDsmvRqky8Dlz8spmVItdONSC/Zkm4IxtY= Received: from work.stormshield.eu ([127.0.0.1]) by localhost (work.stormshield.eu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id K0q1jnRpyR9l for ; Thu, 15 Sep 2022 10:37:56 +0200 (CEST) Received: from mail.stormshield.eu (ICTDCCEXCH001.one.local [10.180.4.1]) by work.stormshield.eu (Postfix) with ESMTPS id 4C9DA37613B8 for ; Thu, 15 Sep 2022 10:37:56 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; d=stormshield.eu; s=signer; c=simple/simple; t=1663231076; h=from:subject:to:date:message-id; bh=uYvbh+Rn1Fs4orGFJXX3iUlPDAN2AidWpDzsjb8UQII=; b=IeM+f5W01ah+14ywZwiUCw7MMsTSlFz+Ik8b4LBjH3NXpSE7sI1L0SyO5zkkf69o/Z949ycYK3d HPrqg7S8UE2WBhP+C3Hx2JDNOW+6w61j0QKLuTJm4uagPGmY5dO/w3zhFzBY56FpN9siFRp68bUSu XR133tiZ4SlflcCMhRO7a4N/eI8gsCIzGI/TtWNPpb4N4BmEcfp8JUU8vlo5JJ/C3tO3fWFmqjhzk S8IJEBNqUWVOx8GGaAFUrvLq6cfBp1XZkZ4NmL2v+by4u/CQnC6CcRDJExNajJ96GDoUCn3ICEiUv UIC2k830442yqvcUZZaZK9jW3rW3rjwUw4LA== Received: from ICTDCCEXCH001.one.local (10.180.4.1) by ICTDCCEXCH001.one.local (10.180.4.1) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.12; Thu, 15 Sep 2022 10:37:56 +0200 Received: from ICTDCCEXCH001.one.local ([::1]) by ICTDCCEXCH001.one.local ([::1]) with mapi id 15.02.1118.012; Thu, 15 Sep 2022 10:37:56 +0200 From: Lee MATTHEWS To: "freebsd-drivers@freebsd.org" Subject: Tracing userland calls through to a driver Thread-Topic: Tracing userland calls through to a driver Thread-Index: AQHYyN3tSYPqzN5DHEWSpLyYwz8PWQ== Date: Thu, 15 Sep 2022 08:37:55 +0000 Message-ID: <484f6c4f5a2840daafaeda4943f22793@stormshield.eu> Accept-Language: en-GB, fr-FR, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.2.0.1] Content-Type: multipart/alternative; boundary="_000_484f6c4f5a2840daafaeda4943f22793stormshieldeu_" List-Id: Writing device drivers for FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-drivers List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-drivers@freebsd.org MIME-Version: 1.0 X-Rspamd-Queue-Id: 4MSrF75XBnz3SGQ X-Spamd-Bar: --- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=stormshield.eu header.s=5EC8D4C2-228B-11EC-A8BC-C05B4988C3CE header.b=JDDOZuIM; dkim=pass header.d=stormshield.eu header.s=signer header.b=IeM+f5W0; dmarc=pass (policy=quarantine) header.from=stormshield.eu; spf=pass (mx1.freebsd.org: domain of Lee.MATTHEWS.external@stormshield.eu designates 91.212.116.1 as permitted sender) smtp.mailfrom=Lee.MATTHEWS.external@stormshield.eu X-Spamd-Result: default: False [-3.90 / 15.00]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_SHORT(-1.00)[-1.000]; DMARC_POLICY_ALLOW(-0.50)[stormshield.eu,quarantine]; R_SPF_ALLOW(-0.20)[+ip4:91.212.116.1]; R_DKIM_ALLOW(-0.20)[stormshield.eu:s=5EC8D4C2-228B-11EC-A8BC-C05B4988C3CE,stormshield.eu:s=signer]; RCVD_NO_TLS_LAST(0.10)[]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; TO_DN_EQ_ADDR_ALL(0.00)[]; MLMMJ_DEST(0.00)[freebsd-drivers@freebsd.org]; FROM_EQ_ENVFROM(0.00)[]; ASN(0.00)[asn:49068, ipnet:91.212.116.0/24, country:FR]; MIME_TRACE(0.00)[0:+,1:+,2:~]; ARC_NA(0.00)[]; RCPT_COUNT_ONE(0.00)[1]; RCVD_COUNT_SEVEN(0.00)[7]; HAS_XOIP(0.00)[]; DKIM_TRACE(0.00)[stormshield.eu:+]; FROM_HAS_DN(0.00)[]; PREVIOUSLY_DELIVERED(0.00)[freebsd-drivers@freebsd.org]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MID_RHS_MATCH_FROM(0.00)[] X-ThisMailContainsUnwantedMimeParts: N --_000_484f6c4f5a2840daafaeda4943f22793stormshieldeu_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hello, I am trying to debug some GPIO issues on FreeBSD 10.3. I'd like to know if= it is possible to know what process in userland (via a process id) has cal= led a method in the driver. So for example, in the driver, the functions are bound via DEVMETHOD like : static device_method_t winbond_gpio_methods[] =3D { /* Device interface */ ... DEVMETHOD(gpio_pin_set, winbond_gpio_pin_set), DEVMETHOD(gpio_pin_get, winbond_gpio_pin_get), ... DEVMETHOD_END }; When the function winbond_gpio_pin_get() is called, how can I know what cal= led this? Thanks in advance. Best wishes, Lee Matthews --_000_484f6c4f5a2840daafaeda4943f22793stormshieldeu_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

Hello,


I am trying to debug some GPIO issues on FreeBSD 10.3.  I'd like to= know if it is possible to know what process in userland (via a process id)= has called a method in the driver.

So for example, in the driver, the functions are bound via DEVMETHOD like :=


static device_method_t winbond_gpio_methods[] =3D {
    /* Device interface */
...
    DEVMETHOD(gpio_pin_set,       &= nbsp;    winbond_gpio_pin_set),
    DEVMETHOD(gpio_pin_get,       &= nbsp;    winbond_gpio_pin_get),
...
    DEVMETHOD_END
};


When the function winbond_gpio_pin_get() is called, how can= I know what called this?


Thanks in advance.


Best wishes,

Lee Matthews



--_000_484f6c4f5a2840daafaeda4943f22793stormshieldeu_-- From nobody Thu Sep 15 08:43:47 2022 X-Original-To: freebsd-drivers@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4MSrMr0GkHz4cWQD for ; Thu, 15 Sep 2022 08:43:52 +0000 (UTC) (envelope-from kp@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [IPv6:2610:1c1:1:606c::24b:4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4MSrMq6pRyz3Srd; Thu, 15 Sep 2022 08:43:51 +0000 (UTC) (envelope-from kp@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1663231432; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=NRUZRrnjMezypX+BN9Hr7FqvtHeJsKe3qej4IGpPy+M=; b=o/y2NB1mg3HBk+p+VWG6GTHwtLmhKH2I+beyncJO5DW+12rTzUi6fYb6jQdU6Aj2SK4jst 1CsdR2pO7t23QZpM4RBvWuLwkSWkYj+IYlRhQ7Zp7e1Fdn2XfLAlMaLXogTb4es/Y5nMGI a1bGjf0AKXUOMTucMMpnbO4OLasxbkGkJw4Ww7DXv0Naw+Tw609SzfQXuyFkdCK+jtOdSs +hv69H87TfmUhlfZePNwV70La2dgMsBgNiyGiyr8W3lXQ2mA4gEyZowmLZNNdiZ9plF6em fXV3hwP4lShdlFz6EUmVUjPlKNbinZszGveeP1hhY+6eg6QZDeqATZ9XbWjiWg== Received: from venus.codepro.be (venus.codepro.be [5.9.86.228]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "mx1.codepro.be", Issuer "R3" (verified OK)) (Authenticated sender: kp) by smtp.freebsd.org (Postfix) with ESMTPSA id 4MSrMq51TczkMS; Thu, 15 Sep 2022 08:43:51 +0000 (UTC) (envelope-from kp@FreeBSD.org) Received: by venus.codepro.be (Postfix, authenticated sender kp) id 8420D1B985; Thu, 15 Sep 2022 10:43:48 +0200 (CEST) From: Kristof Provost To: Lee MATTHEWS Cc: freebsd-drivers@freebsd.org Subject: Re: Tracing userland calls through to a driver Date: Thu, 15 Sep 2022 10:43:47 +0200 X-Mailer: MailMate (1.14r5852) Message-ID: <7C93934E-7DF5-44FC-93B5-331AE3490189@FreeBSD.org> In-Reply-To: <484f6c4f5a2840daafaeda4943f22793@stormshield.eu> References: <484f6c4f5a2840daafaeda4943f22793@stormshield.eu> List-Id: Writing device drivers for FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-drivers List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-drivers@freebsd.org MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=_MailMate_347D4661-E9A5-4E2F-997D-72ABF7C2E717_=" Content-Transfer-Encoding: 8bit ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1663231432; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=NRUZRrnjMezypX+BN9Hr7FqvtHeJsKe3qej4IGpPy+M=; b=RBcE9mg0YbLEAMC0B6ec54ISDMJgvS3qclELAJpksONXhu2F2UcjnVy8Q/MOzOkhSqCE1s bmPjguheKecKjkGcsZz/Hl4O78FfJ2l/Q6zao+QcsOdfK8+Bg9CEhooG+wUJAlUukGO3Tz nIpuZw4M1NkCcXQhgOjwNVXX6UE0HXLTfyBJRy2Krb8Pkvmbu1/JM1h5YvJ6RD7qf9j6UO OYDryuFFLERMWPChaH8vAXVJbV2U+cmy2Rh9ZLIQhirf6I7rUFh1SvD8/yjtjvsf27Vmpv MVamOCSsf8CyeMOuKncWuGpKoH+WNOj1E5VGQxU9y7aweYKz1dBeO6p+8fRlSA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1663231432; a=rsa-sha256; cv=none; b=xMXPsHyD3xqSXtatcB4GKXGElZxpSjHhnSv+56At/O/MHVcB58kU3+R0UwT/Dfx37VFIbH a0SMjwmuLK8sJ4e3ed6UCPTuuSjT145VdC+USgmE6pm0NwSnvaodSWMoLxRby8AUy01PjN BZcESsJ3a+Tiycy0NsR5OnjjJf7YXSJ3PZF6EnPnlGd8FRORRMEEvAwtYhu5iamwGgHqOZ WYcj/bYElXXPC8GvnxCrt/52F5C1dM5HvSwSwNCCKkXSvLj7Oxr+cXtK7NNTw1AvbdL/e0 0ZmR6zrOWEHT+N6G++FJuzL4aA924uMBjogcUWlT2g7Vn8jTBTpgSQdi01WawQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N --=_MailMate_347D4661-E9A5-4E2F-997D-72ABF7C2E717_= Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 15 Sep 2022, at 10:37, Lee MATTHEWS wrote: > I am trying to debug some GPIO issues on FreeBSD 10.3. > That’s an unsupported version (unless you meant 12.3), so the first thing to do is to see if your issue is still present in main. > I'd like to know if it is possible to know what process in userland > (via a process id) has called a method in the driver. > > So for example, in the driver, the functions are bound via DEVMETHOD > like : > > > static device_method_t winbond_gpio_methods[] = { > /* Device interface */ > ... > DEVMETHOD(gpio_pin_set, winbond_gpio_pin_set), > DEVMETHOD(gpio_pin_get, winbond_gpio_pin_get), > ... > DEVMETHOD_END > }; > > > When the function winbond_gpio_pin_get() is called, how can I know > what called this? > > For things like this I’d either look at truss(1), which will tell you what system calls the user space process called, or Dtrace. Something like `dtrace -n fbt::winbond_gpio_pin_set:entry { stack(); }` should give you a pointer already. Dtrace can take a bit of effort to learn, but it’s generally well worth it. The wiki has some initial hints: https://wiki.freebsd.org/DTrace Best regards, Kristof --=_MailMate_347D4661-E9A5-4E2F-997D-72ABF7C2E717_= Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

On 15 Sep 2022, at 10:37, Lee MATTHEWS wrote:

I am trying to debug some GPIO issu= es on FreeBSD 10.3.


That=E2=80=99s an unsupported version (unless you meant 1= 2.3), so the first thing to do is to see if your issue is still present i= n main.

I'd like to know if it is possible = to know what process in userland (via a process id) has called a method i= n the driver.

So for example, in the driver, the functions are bound vi= a DEVMETHOD like :

static device_method_t winbond_gpio_methods[] =3D {
/* Device interface */
=2E..
DEVMETHOD(gpio_pin_set, winbond_gpio_pin_set),
DEVMETHOD(gpio_pin_get, winbond_gpio_pin_get),
=2E..
DEVMETHOD_END
};

When the function winbond_gpio_pin_get() is called, how c= an I know what called this?


For things like this I=E2=80=99d either look at truss(1),= which will tell you what system calls the user space process called, or = Dtrace.

Something like dtrace -n fbt::winbond_gpio_pin_set:= entry { stack(); } should give you a pointer already.
Dtrace can take a bit of effort to learn, but it=E2=80=99s generally well= worth it. The wiki has some initial hints: https://wiki.freebsd.org/DTrace

Best regards,
Kristof

--=_MailMate_347D4661-E9A5-4E2F-997D-72ABF7C2E717_=-- From nobody Sat Nov 19 09:45:26 2022 X-Original-To: freebsd-drivers@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4NDpfw62xpz4hDvh; Sat, 19 Nov 2022 09:45:28 +0000 (UTC) (envelope-from t_uemura@macome.co.jp) Received: from mail.macome.co.jp (mail.v4000-114.mailsecure.jp [203.138.86.114]) by mx1.freebsd.org (Postfix) with ESMTP id 4NDpfv6frLz4YHy; Sat, 19 Nov 2022 09:45:27 +0000 (UTC) (envelope-from t_uemura@macome.co.jp) Authentication-Results: mx1.freebsd.org; dkim=none; spf=pass (mx1.freebsd.org: domain of t_uemura@macome.co.jp designates 203.138.86.114 as permitted sender) smtp.mailfrom=t_uemura@macome.co.jp; dmarc=none Received: from towerrecords.dyndns.org (unknown [111.90.40.59]) (Authenticated sender: t_uemura@macome.co.jp) by macome.co.jp (Postfix) with ESMTPA id 88F3A2457B; Sat, 19 Nov 2022 18:45:26 +0900 (JST) Received: by towerrecords.dyndns.org (Postfix, from userid 58) id 4598F9B8774; Sat, 19 Nov 2022 18:45:26 +0900 (JST) X-Spam-Checker-Version: SpamAssassin 3.4.5 (2021-03-20) on towerrecords.dyndns.org Received: from [10.141.30.100] (20f9cto.shiba.local [10.141.30.100]) by towerrecords.dyndns.org (Postfix) with ESMTPSA id 308FD9B876E; Sat, 19 Nov 2022 18:45:23 +0900 (JST) From: UEMURA Tetsuya To: freebsd-acpi@FreeBSD.org, freebsd-drivers@FreeBSD.org Subject: Request for adding ACPI WDAT watchdog driver List-Id: Writing device drivers for FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-drivers List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-drivers@freebsd.org MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------_63789D9600000000DB11_MULTIPART_MIXED_" Content-Transfer-Encoding: 7bit X-Mailer: Becky! ver. 2.81.04 [ja] Message-Id: <20221119094526.4598F9B8774@towerrecords.dyndns.org> X-Spam-WB: 128 Date: Sat, 19 Nov 2022 18:45:26 +0900 (JST) X-Spamd-Result: default: False [-3.15 / 15.00]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_SHORT(-0.95)[-0.954]; R_SPF_ALLOW(-0.20)[+ip4:203.138.86.114/32:c]; RCVD_NO_TLS_LAST(0.10)[]; MIME_GOOD(-0.10)[multipart/mixed,text/plain]; RCPT_COUNT_TWO(0.00)[2]; ARC_NA(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; MLMMJ_DEST(0.00)[freebsd-acpi@FreeBSD.org,freebsd-drivers@FreeBSD.org]; R_DKIM_NA(0.00)[]; RCVD_COUNT_THREE(0.00)[4]; DMARC_NA(0.00)[macome.co.jp]; TO_DN_NONE(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~,3:~,4:~,5:~,6:~,7:~]; FROM_HAS_DN(0.00)[]; HAS_ATTACHMENT(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; ASN(0.00)[asn:2514, ipnet:203.138.0.0/16, country:JP] X-Rspamd-Queue-Id: 4NDpfv6frLz4YHy X-Spamd-Bar: --- X-ThisMailContainsUnwantedMimeParts: N --------_63789D9600000000DB11_MULTIPART_MIXED_ Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Sorry for multiposting, as I can't guess where is the right list to post. I've written a driver for ACPI WDAT (Watchdog Action Table) based watchdog timer and I want this driver to be included in the future FreeBSD versions. Please someone tell me how should I do. Simply said, WDAT is an abstraction for the real WDT hardware. For instance, to add a newer generation WDT to ichwd(4), one must know the detailed hardware registers, etc.. Actually I tried to add Apollo Lake Celeron and Coffee Lake Xeon support to ichwd(4) and I couldn't. With WDAT, the necessary IO port accesses to operate the WDT are comprehensively described in it and no hardware knowledge is required. With this driver, I have successfully managed to use the WDT on Advantech ARK-1124C, Dell R210 and Dell R240. * R210 is also supported by ichwd(4). Others are not supported yet. The unfortunate thing is that not all systems have WDAT defined. Thanks in advance for your attention. -- Tetsuya Uemura --------_63789D9600000000DB11_MULTIPART_MIXED_ Content-Type: application/octet-stream; name="patch-share__man__man4__wdatwd.4" Content-Disposition: attachment; filename="patch-share__man__man4__wdatwd.4" Content-Transfer-Encoding: base64 LS0tIC9kZXYvbnVsbAkyMDIyLTExLTE5IDE3OjI2OjA1LjQzNTg5MzAwMCArMDkwMAorKysgc2hh cmUvbWFuL21hbjQvd2RhdHdkLjQJMjAyMi0xMS0xOSAxNjo0MjoxMi45OTIzNDQwMDAgKzA5MDAK QEAgLTAsMCArMSw5OCBAQAorLlwiLQorLlwiIENvcHlyaWdodCAoYykgMjAyMiBUZXRzdXlhIFVl bXVyYSA8dF91ZW11cmFAbWFjb21lLmNvLmpwPgorLlwiIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisu XCIKKy5cIiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z LCB3aXRoIG9yIHdpdGhvdXQKKy5cIiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy5cIiBhcmUgbWV0OgorLlwiIDEuIFJl ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp Z2h0CisuXCIgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv d2luZyBkaXNjbGFpbWVyLgorLlwiIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisuXCIgICAgbm90aWNlLCB0aGlzIGxp c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLlwi ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo ZSBkaXN0cmlidXRpb24uCisuXCIKKy5cIiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI RSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisuXCIgQU5ZIEVYUFJFU1Mg T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF CisuXCIgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKy5cIiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U IFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorLlwiIEZPUiBBTlkg RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T RVFVRU5USUFMCisuXCIgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKy5cIiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKy5cIiBIT1dF VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O VFJBQ1QsIFNUUklDVAorLlwiIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKy5cIiBPVVQgT0YgVEhFIFVTRSBP RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisu XCIgU1VDSCBEQU1BR0UuCisuXCIKKy5EZCBOb3ZlbWJlciAxOCwgMjAyMgorLkR0IFdEQVRXRCA0 CisuT3MKKy5TaCBOQU1FCisuTm0gd2RhdHdkCisuTmQgZGV2aWNlIGRyaXZlciBmb3IgdGhlIEFD UEkgV0RBVCBiYXNlZCB3YXRjaGRvZyBpbnRlcnJ1cHQgdGltZXIKKy5TaCBTWU5PUFNJUworVG8g Y29tcGlsZSB0aGlzIGRyaXZlciBpbnRvIHRoZSBrZXJuZWwsCitwbGFjZSB0aGUgZm9sbG93aW5n IGxpbmUgaW4geW91cgora2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZToKKy5CZCAtcmFnZ2VkIC1v ZmZzZXQgaW5kZW50CisuQ2QgImRldmljZSB3ZGF0d2QiCisuRWQKKy5QcAorQWx0ZXJuYXRpdmVs eSwgdG8gbG9hZCB0aGUgZHJpdmVyIGFzIGEKK21vZHVsZSBhdCBib290IHRpbWUsIHBsYWNlIHRo ZSBmb2xsb3dpbmcgbGluZSBpbgorLlhyIGxvYWRlci5jb25mIDUgOgorLkJkIC1saXRlcmFsIC1v ZmZzZXQgaW5kZW50Cit3ZGF0d2RfbG9hZD0iWUVTIgorLkVkCisuU2ggREVTQ1JJUFRJT04KK1Ro ZQorLk5tCitkcml2ZXIgcHJvdmlkZXMKKy5YciB3YXRjaGRvZyA0CitzdXBwb3J0IGZvciB0aGUg d2F0Y2hkb2cgaW50ZXJydXB0IHRpbWVyIGRlc2NyaWJlZCBieSBBQ1BJIFdEQVQgKFdhdGNoZG9n CitBY3Rpb24gVGFibGUpIGZvdW5kIG9uIHNvbWUgQUNQSSBpbXBsZW1lbnRhdGlvbnMuCisuUHAK K1NpbmNlIFdEQVQgaXRzZWxmIGlzIGFuIGFic3RyYWN0aW9uIGZvciB0aGUgcmVhbCBoYXJkd2Fy ZSBzdWNoIGFzIElDSCBXRFQsCitXREFUIGRvZXNuJ3QgcmVxdWlyZSB0aGUga25vd2xlZGdlIGFi b3V0IHRoZSBoYXJkd2FyZSBhdCBhbGwuIFRodXMsCisuTm0KK2ZvciBleGFtcGxlIG1heSBzdXBw b3J0IHRoZSBuZXdlciBnZW5lcmF0aW9uIGhhcmR3YXJlcyB0aGF0CisuWHIgaWNod2QgNAorZHJp dmVyIGlzIHlldCB0byBzdXBwb3J0LgorLlNoIFNZU0NUTCBWQVJJQUJMRVMKK1RoZSBmb2xsb3dp bmcgcmVhZC1vbmx5CisuWHIgc3lzY3RsIDgKK3ZhcmlhYmxlcyBhcmUgYXZhaWxhYmxlOgorLkJs IC10YWcgLXdpZHRoIGluZGVudAorLkl0IFZhIGRldi53ZGF0LiVkLmNhbl9zZXRfdGltZW91dAor MCBpZiBXREFUIGRvZXNuJ3QgYWxsb3cgdXNlcnMgdG8gc2V0IHRoZSBjdXN0b20gdGltZW91dCwg b3IgYW55IHBvc2l0aXZlCitpbnRlZ2VyIGlmIGFsbG93ZWQuIElmIDAsIHRoZSB3YXRjaGRvZyB3 aWxsIGZpcmUgYWZ0ZXIgaXRzIEJJT1MgZGVmYXVsdCB0aW1lb3V0CitwZXJpb2QuCisuSXQgVmEg ZGV2LndkYXQuJWQuZGVmYXVsdF90aW1lb3V0X21zCitJZiBXREFUIGRlc2NyaWJlcyB0aGUgYWN0 aW9uIHRvIGd1ZXNzIHRoZSBkZWZhdWx0IHRpbWVvdXQsIGl0IHdpbGwgYmUKK2NvbnZlcnRlZCB0 byBtaWxsaS1zZWMgb3JkZXIgYW5kIGlzIHNldCB0byB0aGlzIHZhcmlhYmxlLgorLkl0IFZhIGRl di53ZGF0LiVkLnJ1bm5pbmcKKzAgaWYgdGhlIHdhdGNoZG9nIGlzIGluIHN0b3BwZWQgc3RhdGUg b3IgMSBpbiBydW5uaW5nIHN0YXRlLgorLkl0IFZhIGRldi53ZGF0LiVkLnRpbWVvdXRfbXMKK0N1 cnJlbnRseSBjb25maWd1cmVkIHRpbWVvdXQgcGVyaW9kIGluIG1pbGxpLXNlYyBvcmRlci4KKy5F bAorLlNoIFNFRSBBTFNPCisuWHIgd2F0Y2hkb2cgNCAsCisuWHIgaWNod2QgNCAsCisuWHIgd2F0 Y2hkb2cgOCAsCisuWHIgd2F0Y2hkb2dkIDggLAorLlhyIHdhdGNoZG9nIDkKKy5ScworLiVUIEhh cmR3YXJlIFdhdGNoZG9nIFRpbWVycyBEZXNpZ24gU3BlY2lmaWNhdGlvbgorLiVSIFJlcXVpcmVt ZW50cyBmb3IgSGFyZHdhcmUgV2F0Y2hkb2cgVGltZXJzIFN1cHBvcnRlZCBieSBNaWNyb3NvZnQo UikgV2luZG93cyBWaXN0YShSKSBhbmQgTWljcm9zb2Z0IFdpbmRvd3MgU2VydmVyKFIpIDIwMDgg T3BlcmF0aW5nIFN5c3RlbXMKKy4lQSBNaWNyb3NvZnQgQ29ycG9yYXRpb24KKy5SZQorLlNoIEhJ U1RPUlkKK1RoZQorLk5tCitkcml2ZXIgc3RpbGwgaW4tZGV2ZWxvcG1lbnQuCisuU2ggQVVUSE9S UworLkFuIC1ub3NwbGl0CitUaGUKKy5ObQorZHJpdmVyIHdhcyB3cml0dGVuIGJ5CisuQW4gVGV0 c3V5YSBVZW11cmEgQXEgTXQgdF91ZW11cmFAbWFjb21lLmNvLmpwCitvZiBNQUNPTUUsIENvcnBv cmF0aW9uLgo= --------_63789D9600000000DB11_MULTIPART_MIXED_ Content-Type: application/octet-stream; name="patch-share__man__man4__Makefile" Content-Disposition: attachment; filename="patch-share__man__man4__Makefile" Content-Transfer-Encoding: base64 LS0tIHNoYXJlL21hbi9tYW40L01ha2VmaWxlLm9yaWcJMjAyMi0wNi0wNCAwNzo0MjoxOS4wMDAw MDAwMDAgKzA5MDAKKysrIHNoYXJlL21hbi9tYW40L01ha2VmaWxlCTIwMjItMTEtMTkgMTY6NDY6 MjUuMzA2MDU3MDAwICswOTAwCkBAIC01OTcsNiArNTk3LDcgQEAgTUFOPQlhYWMuNCBcCiAJdnRu ZXQuNCBcCiAJd2F0Y2hkb2cuNCBcCiAJJHtfd2J3ZC40fSBcCisJd2RhdHdkLjQgXAogCXdpdG5l c3MuNCBcCiAJd2xhbi40IFwKIAl3bGFuX2FjbC40IFwK --------_63789D9600000000DB11_MULTIPART_MIXED_ Content-Type: application/octet-stream; name="patch-sys__modules__Makefile" Content-Disposition: attachment; filename="patch-sys__modules__Makefile" Content-Transfer-Encoding: base64 LS0tIHN5cy9tb2R1bGVzL01ha2VmaWxlLm9yaWcJMjAyMi0wNi0yNCAwNzo0Mjo0NC4wMDAwMDAw MDAgKzA5MDAKKysrIHN5cy9tb2R1bGVzL01ha2VmaWxlCTIwMjItMTEtMTEgMTQ6MjM6MzkuMTE4 MjYxMDAwICswOTAwCkBAIC0zOTcsNiArMzk3LDcgQEAgU1VCRElSPQlcCiAJdnIgXAogCXZ0ZSBc CiAJJHtfd2J3ZH0gXAorCXdkYXR3ZCBcCiAJd2xhbiBcCiAJd2xhbl9hY2wgXAogCXdsYW5fYW1y ciBcCg== --------_63789D9600000000DB11_MULTIPART_MIXED_ Content-Type: application/octet-stream; name="patch-sys__modules__wdatwd__Makefile" Content-Disposition: attachment; filename="patch-sys__modules__wdatwd__Makefile" Content-Transfer-Encoding: base64 LS0tIC9kZXYvbnVsbAkyMDIyLTExLTE5IDE3OjI5OjUxLjY2NjIwODAwMCArMDkwMAorKysgc3lz L21vZHVsZXMvd2RhdHdkL01ha2VmaWxlCTIwMjItMTEtMTEgMTQ6MjM6MzkuMTEzNjU4MDAwICsw OTAwCkBAIC0wLDAgKzEsOSBAQAorIyAkRnJlZUJTRCQKKworLlBBVEg6ICR7U1JDVE9QfS9zeXMv ZGV2L3dkYXR3ZAorCitLTU9EPQl3ZGF0d2QKK1NSQ1M9CXdkYXR3ZC5jCitTUkNTKz0Jb3B0X2Fj cGkuaCBhY3BpX2lmLmggZGV2aWNlX2lmLmggYnVzX2lmLmgKKworLmluY2x1ZGUgPGJzZC5rbW9k Lm1rPgo= --------_63789D9600000000DB11_MULTIPART_MIXED_ Content-Type: application/octet-stream; name="patch-sys__conf__files" Content-Disposition: attachment; filename="patch-sys__conf__files" Content-Transfer-Encoding: base64 LS0tIHN5cy9jb25mL2ZpbGVzLm9yaWcJMjAyMi0wNy0zMCAwNzo0MjoxNS4wMDAwMDAwMDAgKzA5 MDAKKysrIHN5cy9jb25mL2ZpbGVzCTIwMjItMTEtMTEgMTQ6MjM6MzkuMTE3NTc5MDAwICswOTAw CkBAIC0zNTI4LDYgKzM1MjgsNyBAQCBkZXYvdnQvdnRfZm9udC5jCQlvcHRpb25hbCB2dAogZGV2 L3Z0L3Z0X3N5c21vdXNlLmMJCW9wdGlvbmFsIHZ0CiBkZXYvdnRlL2lmX3Z0ZS5jCQlvcHRpb25h bCB2dGUgcGNpCiBkZXYvd2F0Y2hkb2cvd2F0Y2hkb2cuYwkJc3RhbmRhcmQKK2Rldi93ZGF0d2Qv d2RhdHdkLmMJCW9wdGlvbmFsIHdkYXR3ZAogZGV2L3dwaS9pZl93cGkuYwkJb3B0aW9uYWwgd3Bp IHBjaQogd3BpZncuYwkJCW9wdGlvbmFsIHdwaWZ3CQkJCQlcCiAJY29tcGlsZS13aXRoCSIke0FX S30gLWYgJFMvdG9vbHMvZndfc3R1Yi5hd2sgd3BpLmZ3OndwaWZ3OjE1MzIyOSAtbXdwaSAtYyR7 LlRBUkdFVH0iIFwK --------_63789D9600000000DB11_MULTIPART_MIXED_ Content-Type: application/octet-stream; name="patch-sys__dev__wdatwd__wdatwd.c" Content-Disposition: attachment; filename="patch-sys__dev__wdatwd__wdatwd.c" Content-Transfer-Encoding: base64 LS0tIC9kZXYvbnVsbAkyMDIyLTExLTE5IDE3OjMxOjA4Ljg2Mzk2NTAwMCArMDkwMAorKysgc3lz L2Rldi93ZGF0d2Qvd2RhdHdkLmMJMjAyMi0xMS0xNyAxMzowNzowMi41ODY0MTcxNzggKzA5MDAK QEAgLTAsMCArMSw4MTAgQEAKKy8qLQorICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0y LUNsYXVzZS1GcmVlQlNECisgKgorICogQ29weXJpZ2h0IChjKSAyMDIyIFRldHN1eWEgVWVtdXJh IDx0X3VlbXVyYUBtYWNvbWUuY28uanA+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ UyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor ICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQu ICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUK KyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM QVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7 IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p CisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRI RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU WSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworLyoKKyAqIEFDUEkgV0RBVCBiYXNlZCB3YXRj aGRvZyB0aW1lciBkcml2ZXIuIFRoZSBXREFUIHNwZWNpZmljYXRpb24gYGBIYXJkd2FyZQorICog V2F0Y2hkb2cgVGltZXJzIERlc2lnbiBTcGVjaWZpY2F0aW9uJycgd2FzIG1hZGUgcHVibGljIGJ5 IE1pY3Jvc29mdCBhbmQgY2FuCisgKiBiZSBmb3VuZCBhdCB0aGUgZm9sbG93aW5nIGxvY2F0aW9u LgorICogV1dXOiBodHRwczovL2Rvd25sb2FkLm1pY3Jvc29mdC5jb20vZG93bmxvYWQvYS9mLzcv YWY3Nzc3ZTUtN2RjZC00ODAwLThhMGEtYjE4MzM2NTY1ZjViL0hhcmR3YXJlV0RUU3BlYy5kb2MK KyAqLworCisjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CitfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CisK KyNpbmNsdWRlICJvcHRfYWNwaS5oIgorCisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjaW5jbHVk ZSA8c3lzL3N5c3RtLmg+CisjaW5jbHVkZSA8c3lzL2J1cy5oPgorI2luY2x1ZGUgPHN5cy9jYWxs b3V0Lmg+CisjaW5jbHVkZSA8c3lzL2ludGVycnVwdC5oPgorI2luY2x1ZGUgPHN5cy9rZXJuZWwu aD4KKyNpbmNsdWRlIDxzeXMvbWFsbG9jLmg+CisjaW5jbHVkZSA8c3lzL21vZHVsZS5oPgorI2lu Y2x1ZGUgPHN5cy9xdWV1ZS5oPgorI2luY2x1ZGUgPHN5cy9ybWFuLmg+CisjaW5jbHVkZSA8c3lz L2V2ZW50aGFuZGxlci5oPgorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyNpbmNsdWRlIDxzeXMv d2F0Y2hkb2cuaD4KKyNpbmNsdWRlIDx2bS92bS5oPgorI2luY2x1ZGUgPHZtL3BtYXAuaD4KKwor I2luY2x1ZGUgPGNvbnRyaWIvZGV2L2FjcGljYS9pbmNsdWRlL2FjcGkuaD4KKyNpbmNsdWRlIDxj b250cmliL2Rldi9hY3BpY2EvaW5jbHVkZS9hY2NvbW1vbi5oPgorI2luY2x1ZGUgPGNvbnRyaWIv ZGV2L2FjcGljYS9pbmNsdWRlL2FjbG9jYWwuaD4KKyNpbmNsdWRlIDxjb250cmliL2Rldi9hY3Bp Y2EvaW5jbHVkZS9hY3RhYmxlcy5oPgorCisjaW5jbHVkZSA8ZGV2L2FjcGljYS9hY3BpdmFyLmg+ CisKK3N0YXRpYyBkZXZjbGFzc190IHdkYXR3ZF9kZXZjbGFzczsKKworLyogCisgKiBSZXNvdXJj ZSBlbnRyeS4gRXZlcnkgaW5zdHJ1Y3Rpb24gc3BlY2lmaWVzIHRoZSBjb3JyZXNwb25kaW5nIEFD UEkgR0FTIGJ1dAorICogbW9yZSB0aGFuIG9uZSBpbnN0cnVjdGlvbnMgYWNjZXNzIHRoZSBzYW1l IG9yIGFkamFjZW50IHJlZ2lzdGVyIHJlZ2lvbihzKQorICogc28gd2UgbmVlZCB0byBjYW5vbmlj YWxpemUvbWVyZ2UgYWxsIHRoZSBzcGVjaWZpZWQgR0FTcy4KKyAqIAorICogdHlwZSAgQUNQSSBy ZXNvdXJjZSB0eXBlIGFuZCBsYXRlciBTWVNfUkVTXyhJT1BPUlR8TUVNT1JZKS4KKyAqIHN0YXJ0 IFJlZ2lvbiBzdGFydCBhZGRyZXNzLgorICogZW5kICAgUmVnaW9uIGVuZCBhZGRyZXNzICsgMS4K KyAqIHJpZCAgIFJlc291cmNlIHJpZCBhc3NpZ25lZCB3aGVuIGFsbG9jYXRlZC4KKyAqIHJlcyAg IFJlc291cmNlIHdoZW4gYWxsb2NhdGVkLgorICogbGluayAgTmV4dC9wcmV2aW91cyByZXNvdXJj ZSBlbnRyeS4KKyAqLworc3RydWN0IHdkYXRfcmVzIHsKKwlpbnQJCQkgdHlwZTsKKwl1aW50NjRf dAkJIHN0YXJ0LCBlbmQ7CisJaW50CQkJIHJpZDsKKwlzdHJ1Y3QgcmVzb3VyY2UJCSpyZXM7CisJ VEFJTFFfRU5UUlkod2RhdF9yZXMpCSBsaW5rOworfTsKKworLyogCisgKiBJbnN0cnVjdGlvbiBl bnRyeS4gRXZlcnkgaW5zdHJ1Y3Rpb24gaXRzZWxmIGlzIGFjdHVhbGx5IGEgc2luZ2xlIHJlZ2lz dGVyCisgKiByZWFkIG9yIHdyaXRlIChhbmQgc3Vic2VxdWVudCBiaXQgb3BlcmF0aW9uKHMpKS4K KyAqIDAgb3IgbW9yZSBpbnN0cnVjdGlvbnMgYXJlIHRpZWQgdG8gZXZlcnkgd2F0Y2hkb2cgYWN0 aW9uIGFuZCBvbmNlIGFuIGFjdGlvbgorICogaXMga2lja2VkLCB0aGUgY29ycmVzcG9uZGluZyBl bnRyaWVzIGFyZSBvcGVyYXRlZCBzZXF1ZW5jaWFsbHkuCisgKiAKKyAqIGVudHJ5IFBlcm1hbmVu dCBjb3B5IG9mIEFDUElfV0RBVF9FTlRSWSBlbnRyeSAoc3ViLXRhYmxlKS4KKyAqIG5leHQgIE5l eHQgaW5zdHJ1Y3Rpb24gZW50cnkuCisgKi8KK3N0cnVjdCB3ZGF0X2luc3RyIHsKKwlBQ1BJX1dE QVRfRU5UUlkJCSBlbnRyeTsKKwlTVEFJTFFfRU5UUlkod2RhdF9pbnN0cikgbmV4dDsKK307CisK Ky8qIAorICogZGV2ICAgICAgICAgICAgIFdhdGNoZG9nIGRldmljZS4KKyAqIHdkYXQgICAgICAg ICAgICBBQ1BJIFdEQVQgdGFibGUsIGNhbiBiZSBhY2Nlc3NlZCB1bnRpbCBBY3BpUHV0VGFibGUo KS4KKyAqIHBlcmlvZCAgICAgICAgICBOdW1iZXIgb2Ygd2F0Y2hkb2cgdGlja3MgcGVyIG1pbGxp LXNlYy4KKyAqIG1heCAgICAgICAgICAgICBNYXguIHN1cHBvcnRlZCB3YXRjaGRvZyB0aWNrcyB0 byBiZSBzZXQuCisgKiBtaW4gICAgICAgICAgICAgTWluLiBzdXBwb3J0ZWQgd2F0Y2hkb2cgdGlj a3MgdG8gYmUgc2V0LgorICogZGVmYXVsdF90aW1lb3V0IEJJT1MgY29uZmlndXJlZCB3YXRjaGRv ZyB0aWNrcyB0byBmaXJlLgorICogdGltZW91dCAgICAgICAgIFVzZXIgc2V0IHdhdGNoZG9nIHRp bWVvdXQgaW4gbXMgb3IgMCBpZiBpc24ndCBjaGFuZ2VkLgorICogc3RvcF9pbl9zbGVlcCAgIDAg aWYgdGhpcyB3YXRjaGRvZyBrZWVwcyBjb3VudGluZyBkb3duIGR1cmluZyBzbGVlcC4KKyAqIHJ1 bm5pbmcgICAgICAgICAxIGlmIHRoaXMgd2F0Y2hkb2cgaXMgcnVubmluZyBvciAwIGlmIHN0b3Bw ZWQuCisgKiBldl90YWcgICAgICAgICAgVGFnIGZvciBFVkVOVEhBTkRMRVJfKigpLgorICogYWN0 aW9uICAgICAgICAgIEFycmF5IG9mIHdhdGNoZG9nIGluc3RydWN0aW9uIHNldHMsIGVhY2ggaW5k ZXhlZCBieSBhY3Rpb24uCisgKi8KK3N0cnVjdCB3ZGF0d2Rfc29mdGMgeworCWRldmljZV90CQkg ZGV2OworCUFDUElfVEFCTEVfV0RBVAkJKndkYXQ7CisJdW5zaWduZWQgaW50CQkgcGVyaW9kOwor CXVuc2lnbmVkIGludAkJIG1heDsKKwl1bnNpZ25lZCBpbnQJCSBtaW47CisJdWludDY0X3QJCSBk ZWZhdWx0X3RpbWVvdXQ7CisJdWludDY0X3QJCSB0aW1lb3V0OworCXVuc2lnbmVkIGludAkJIHN0 b3BfaW5fc2xlZXA7CisJdW5zaWduZWQgaW50CQkgcnVubmluZzsKKwlldmVudGhhbmRsZXJfdGFn CSBldl90YWc7CisJU1RBSUxRX0hFQUQoLCB3ZGF0X2luc3RyKSBhY3Rpb25bQUNQSV9XREFUX0FD VElPTl9SRVNFUlZFRF07CisJVEFJTFFfSEVBRChyZXNfaGVhZCwgd2RhdF9yZXMpIHJlczsKK307 CisKKyNkZWZpbmUgd2RhdHdkX3ZlcmJvc2VfcHJpbnRmKGRldiwgLi4uKSBcCisJZG8geyBcCisJ CWlmIChib290dmVyYm9zZSkgXAorCQkJZGV2aWNlX3ByaW50ZihkZXYsIF9fVkFfQVJHU19fKTsg XAorCX0gd2hpbGUgKDApOworCisjZGVmaW5lIHdkYXR3ZF9hY3BpX3N0YXR1cyhydykgeyBcCisJ CWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkge1wKKwkJCWRldmljZV9wcmludGYoc2MtPmRldiwg XAorCQkJICAgICJhY3Rpb246IDB4JTAyeCwgJXMoKSByZXR1cm5lZDogJWRcbiIsIFwKKwkJCSAg ICBhY3Rpb24sIChydyksIHN0YXR1cyk7IFwKKwkJCXJldHVybiAoRU5YSU8pOyBcCisJCX07IFwK Kwl9CisKKy8qIAorICogRG8gcmVxdWVzdGVkIGFjdGlvbi4KKyAqLworc3RhdGljIGludAord2Rh dHdkX2FjdGlvbihzdHJ1Y3Qgd2RhdHdkX3NvZnRjICpzYywgdW5zaWduZWQgaW50IGFjdGlvbiwg dWludDY0X3QgdmFsLCB1aW50NjRfdCAqcmV0KQoreworCXN0cnVjdCB3ZGF0X2luc3RyCSp3ZGF0 OworCisJaWYgKFNUQUlMUV9FTVBUWSgmc2MtPmFjdGlvblthY3Rpb25dKSkgeworCQl3ZGF0d2Rf dmVyYm9zZV9wcmludGYoc2MtPmRldiwgCisJCSAgICAiYWN0aW9uIG5vdCBzdXBwb3J0ZWQ6IDB4 JTAyeFxuIiwgYWN0aW9uKTsKKwkJcmV0dXJuIChFT1BOT1RTVVBQKTsKKwl9CisKKwlTVEFJTFFf Rk9SRUFDSCh3ZGF0LCAmc2MtPmFjdGlvblthY3Rpb25dLCBuZXh0KSB7CisJCUFDUElfU1RBVFVT CQkgc3RhdHVzOworCQlBQ1BJX0dFTkVSSUNfQUREUkVTUwkqZ2FzID0gJndkYXQtPmVudHJ5LlJl Z2lzdGVyUmVnaW9uOworCQl1aW50NjRfdAkJIHgsIHk7CisKKwkJc3dpdGNoICh3ZGF0LT5lbnRy eS5JbnN0cnVjdGlvbiAKKwkJICAgICYgfkFDUElfV0RBVF9QUkVTRVJWRV9SRUdJU1RFUikgewor CQkgICAgY2FzZSBBQ1BJX1dEQVRfUkVBRF9WQUxVRToKKwkJCXN0YXR1cyA9IEFjcGlSZWFkKCZ4 LCBnYXMpOworCQkJd2RhdHdkX2FjcGlfc3RhdHVzKCJBY3BpUmVhZCIpOworCQkJeCA+Pj0gZ2Fz LT5CaXRPZmZzZXQ7CisJCQl4ICY9IHdkYXQtPmVudHJ5Lk1hc2s7CisJCQkqcmV0ID0gKHggPT0g d2RhdC0+ZW50cnkuVmFsdWUpID8gMSA6IDA7CisJCQlicmVhazsKKwkJICAgIGNhc2UgQUNQSV9X REFUX1JFQURfQ09VTlRET1dOOgorCQkJc3RhdHVzID0gQWNwaVJlYWQoJngsIGdhcyk7CisJCQl3 ZGF0d2RfYWNwaV9zdGF0dXMoIkFjcGlSZWFkIik7CisJCQl4ID4+PSBnYXMtPkJpdE9mZnNldDsK KwkJCXggJj0gd2RhdC0+ZW50cnkuTWFzazsKKwkJCSpyZXQgPSB4OworCQkJYnJlYWs7CisJCSAg ICBjYXNlIEFDUElfV0RBVF9XUklURV9WQUxVRToKKwkJCXggPSB3ZGF0LT5lbnRyeS5WYWx1ZSAm IHdkYXQtPmVudHJ5Lk1hc2s7CisJCQl4IDw8PSBnYXMtPkJpdE9mZnNldDsKKwkJCWlmICh3ZGF0 LT5lbnRyeS5JbnN0cnVjdGlvbiAKKwkJCSAgICAmIEFDUElfV0RBVF9QUkVTRVJWRV9SRUdJU1RF UikgeworCQkJCXN0YXR1cyA9IEFjcGlSZWFkKCZ5LCBnYXMpOworCQkJCXdkYXR3ZF9hY3BpX3N0 YXR1cygiQWNwaVJlYWQiKTsKKwkJCQl5ICY9IH4od2RhdC0+ZW50cnkuTWFzayA8PCBnYXMtPkJp dE9mZnNldCk7CisJCQkJeCB8PSB5OworCQkJfQorCQkJc3RhdHVzID0gQWNwaVdyaXRlKHgsIGdh cyk7CisJCQl3ZGF0d2RfYWNwaV9zdGF0dXMoIkFjcGlXcml0ZSIpOworCQkJYnJlYWs7CisJCSAg ICBjYXNlIEFDUElfV0RBVF9XUklURV9DT1VOVERPV046CisJCQl4ID0gdmFsICYgd2RhdC0+ZW50 cnkuTWFzazsKKwkJCXggPDw9IGdhcy0+Qml0T2Zmc2V0OworCQkJaWYgKHdkYXQtPmVudHJ5Lklu c3RydWN0aW9uIAorCQkJICAgICYgQUNQSV9XREFUX1BSRVNFUlZFX1JFR0lTVEVSKSB7CisJCQkJ c3RhdHVzID0gQWNwaVJlYWQoJnksIGdhcyk7CisJCQkJd2RhdHdkX2FjcGlfc3RhdHVzKCJBY3Bp UmVhZCIpOworCQkJCXkgJj0gfih3ZGF0LT5lbnRyeS5NYXNrIDw8IGdhcy0+Qml0T2Zmc2V0KTsK KwkJCQl4IHw9IHk7CisJCQl9CisJCQlzdGF0dXMgPSBBY3BpV3JpdGUoeCwgZ2FzKTsKKwkJCXdk YXR3ZF9hY3BpX3N0YXR1cygiQWNwaVdyaXRlIik7CisJCQlicmVhazsKKwkJICAgIGRlZmF1bHQ6 CisJCQlyZXR1cm4gKEVJTlZBTCk7CisJCX0KKwl9CisKKwlyZXR1cm4gKDApOworfQorCisvKiAK KyAqIFJlc2V0IHRoZSB3YXRjaGRvZyBjb3VudGRvd24uCisgKi8KK3N0YXRpYyBpbnQKK3dkYXR3 ZF9yZXNldF9jb3VudGRvd24oc3RydWN0IHdkYXR3ZF9zb2Z0YyAqc2MpCit7CisJcmV0dXJuIHdk YXR3ZF9hY3Rpb24oc2MsIEFDUElfV0RBVF9SRVNFVCwgMCwgTlVMTCk7Cit9CisKKy8qIAorICog U2V0IHRoZSB3YXRjaGRvZyBjb3VudGRvd24gdmFsdWUuIEluIFdEQVQgc3BlY2lmaWNhdGlvbiwg dGhpcyBpcyBvcHRpb25hbC4KKyAqLworc3RhdGljIGludAord2RhdHdkX3NldF9jb3VudGRvd24o c3RydWN0IHdkYXR3ZF9zb2Z0YyAqc2MsIHVuc2lnbmVkIGludCBjbWQpCit7CisJdWludDY0X3QJ CSB0aW1lb3V0OworCWludAkJCSBlOworCisJY21kICY9IFdEX0lOVEVSVkFMOworCXRpbWVvdXQg PSAoKHVpbnQ2NF90KSAxIDw8IGNtZCkgLyAxMDAwMDAwIC8gc2MtPnBlcmlvZDsKKwlpZiAodGlt ZW91dCA+IHNjLT5tYXgpIAorCQl0aW1lb3V0ID0gc2MtPm1heDsKKwllbHNlIGlmICh0aW1lb3V0 IDwgc2MtPm1pbikgCisJCXRpbWVvdXQgPSBzYy0+bWluOworCWlmICghIChlID0gd2RhdHdkX2Fj dGlvbigKKwkgICAgc2MsIEFDUElfV0RBVF9TRVRfQ09VTlRET1dOLCB0aW1lb3V0LCBOVUxMKSkp IHsKKwkJc2MtPnRpbWVvdXQgPSB0aW1lb3V0ICogc2MtPnBlcmlvZDsKKwl9CisKKwlyZXR1cm4g KGUpOworfQorCisvKiAKKyAqIEdldCB0aGUgd2F0Y2hkb2cgY3VycmVudCBjb3VudGRvd24gdmFs dWUuCisgKi8KK3N0YXRpYyBpbnQKK3dkYXR3ZF9nZXRfY3VycmVudF9jb3VudGRvd24oc3RydWN0 IHdkYXR3ZF9zb2Z0YyAqc2MsIHVpbnQ2NF90ICp0aW1lb3V0KQoreworCXJldHVybiB3ZGF0d2Rf YWN0aW9uKHNjLCBBQ1BJX1dEQVRfR0VUX0NVUlJFTlRfQ09VTlRET1dOLCAwLCB0aW1lb3V0KTsK K30KKworLyogCisgKiBHZXQgdGhlIHdhdGNoZG9nIGNvdW50ZG93biB2YWx1ZSB0aGUgd2F0Y2hk b2cgaXMgY29uZmlndXJlZCB0byBmaXJlLgorICovCitzdGF0aWMgaW50Cit3ZGF0d2RfZ2V0X2Nv dW50ZG93bihzdHJ1Y3Qgd2RhdHdkX3NvZnRjICpzYywgdWludDY0X3QgKnRpbWVvdXQpCit7CisJ cmV0dXJuIHdkYXR3ZF9hY3Rpb24oc2MsIEFDUElfV0RBVF9HRVRfQ09VTlRET1dOLCAwLCB0aW1l b3V0KTsKK30KKworLyogCisgKiBTZXQgdGhlIHdhdGNoZG9nIHRvIHJ1bm5pbmcgc3RhdGUuCisg Ki8KK3N0YXRpYyBpbnQKK3dkYXR3ZF9zZXRfcnVubmluZyhzdHJ1Y3Qgd2RhdHdkX3NvZnRjICpz YykKK3sKKwlpbnQJCQkgZSA9IDA7CisKKwllID0gd2RhdHdkX2FjdGlvbihzYywgQUNQSV9XREFU X1NFVF9SVU5OSU5HX1NUQVRFLCAwLCBOVUxMKTsKKwlzYy0+cnVubmluZyA9ICEgZTsKKwlyZXR1 cm4gKGUpOworfQorCisvKiAKKyAqIFNldCB0aGUgd2F0Y2hkb2cgdG8gc3RvcHBlZCBzdGF0ZS4K KyAqLworc3RhdGljIGludAord2RhdHdkX3NldF9zdG9wKHN0cnVjdCB3ZGF0d2Rfc29mdGMgKnNj KQoreworCWludAkJCSBlID0gMDsKKworCWUgPSB3ZGF0d2RfYWN0aW9uKHNjLCBBQ1BJX1dEQVRf U0VUX1NUT1BQRURfU1RBVEUsIDAsIE5VTEwpOworCXNjLT5ydW5uaW5nID0gISEgZTsKKwlyZXR1 cm4gKGUpOworfQorCisvKiAKKyAqIENsZWFyIHRoZSB3YXRjaGRvZydzIGJvb3Qgc3RhdHVzIGlm IHRoZSBjdXJyZW50IGJvb3Qgd2FzIGNhdXNlZCBieSB0aGUKKyAqIHdhdGNoZG9nIGZpcmluZy4K KyAqLworc3RhdGljIGludAord2RhdHdkX2NsZWFyX3N0YXR1cyhzdHJ1Y3Qgd2RhdHdkX3NvZnRj ICpzYykKK3sKKwlyZXR1cm4gd2RhdHdkX2FjdGlvbihzYywgQUNQSV9XREFUX1NFVF9TVEFUVVMs IDAsIE5VTEwpOworfQorCisvKiAKKyAqIFNldCB0aGUgd2F0Y2hkb2cgdG8gcmVib290IHdoZW4g aXQgaXMgZmlyZWQuCisgKi8KK3N0YXRpYyBpbnQKK3dkYXR3ZF9zZXRfcmVib290KHN0cnVjdCB3 ZGF0d2Rfc29mdGMgKnNjKQoreworCXJldHVybiB3ZGF0d2RfYWN0aW9uKHNjLCBBQ1BJX1dEQVRf U0VUX1JFQk9PVCwgMCwgTlVMTCk7Cit9CisKKy8qIAorICogV2F0Y2hkb2cgZXZlbnQgaGFuZGxl ci4KKyAqLworc3RhdGljIHZvaWQKK3dkYXR3ZF9ldmVudCh2b2lkICpwcml2YXRlLCB1bnNpZ25l ZCBpbnQgY21kLCBpbnQgKmVycm9yKQoreworCXN0cnVjdCB3ZGF0d2Rfc29mdGMJKnNjID0gcHJp dmF0ZTsKKwlpbnQJCQkgcnVuWzJdOworCXVpbnQ2NF90CQkgY3VyWzJdLCBjbnRbMl07CisKKwlp ZiAoYm9vdHZlcmJvc2UpIHsKKwkJcnVuWzBdID0gc2MtPnJ1bm5pbmc7CisJCXdkYXR3ZF9nZXRf Y291bnRkb3duKHNjLCBjbnQpOworCQl3ZGF0d2RfZ2V0X2N1cnJlbnRfY291bnRkb3duKHNjLCBj dXIpOworCX0KKworCWlmICgoY21kICYgV0RfSU5URVJWQUwpKSB7CisJCWlmIChzYy0+cnVubmlu ZykgCisJCQl3ZGF0d2RfcmVzZXRfY291bnRkb3duKHNjKTsKKwkJZWxzZSB7CisJCQkvLyBBQ1BJ X1dEQVRfU0VUX0NPVU5URE9XTiBtYXkgbm90IGJlIGltcGxlbWVudGVkLgorCQkJd2RhdHdkX3Nl dF9jb3VudGRvd24oc2MsIGNtZCk7CisJCQl3ZGF0d2Rfc2V0X3J1bm5pbmcoc2MpOworCQkJLyog SW4gdGhlIGZpcnN0IHdkYXR3ZF9ldmVudCgpIGNhbGwsIGl0IHNldHMgdGhlCisJCQkgKiB3YXRj aGRvZyB0aW1lb3V0IHRvIGEgY29uc2lkZXJhYmx5IGxhcmdlciB2YWx1ZSBzdWNoCisJCQkgKiBh cyAxMzcgc2VjLCB0aGVuIGtpY2tzIHRoZSB3YXRjaGRvZyB0byBzdGFydAorCQkJICogY291bnRp bmcgZG93bi4gV2VpcmRseSB0aG91Z2gsIG9uIGEgRGVsbCBSMjEwIEJJT1MKKwkJCSAqIDEuMTIu MCwgYSBzdXBwbGVtZW50YWwgcmVzZXQgYWN0aW9uIG11c3QgYmUKKwkJCSAqIHRyaWdnZXJlZCBm b3IgdGhlIG5ld2x5IHNldCB0aW1lb3V0IHZhbHVlIHRvIHRha2UKKwkJCSAqIGVmZmVjdC4gV2l0 aG91dCBpdCwgdGhlIHdhdGNoZG9nIGZpcmVzIDIuNCBzZWMgYWZ0ZXIKKwkJCSAqIHN0YXJ0aW5n LCB3aGVyZSAyLjQgc2VjIGlzIGl0cyBpbml0aWFsbHkgc2V0CisJCQkgKiB0aW1lb3V0LiBUaGlz IGZhaWx1cmUgc2NlbmFyaW8gaXMgc2VlbiBieSBmaXJzdAorCQkJICogc3RhcnRpbmcgd2F0Y2hk b2dkKDgpIHdpdGhvdXQgd2RhdHdkIHJlZ2lzdGVyZWQgdGhlbgorCQkJICoga2xkbG9hZCBpdC4g SW4gc3RlYWR5IHN0YXRlLCB3YXRjaGRvZ2QgcGF0cyB0aGUKKwkJCSAqIHdhdGNoZG9nIGV2ZXJ5 IDEwIG9yIHNvIHNlYyB3aGljaCBpcyBtdWNoIGxvbmdlcgorCQkJICogdGhhbiAyLjQgc2VjIHRp bWVvdXQuICovCisJCQl3ZGF0d2RfcmVzZXRfY291bnRkb3duKHNjKTsKKwkJfQorCX0gZWxzZSAK KwkJd2RhdHdkX3NldF9zdG9wKHNjKTsKKworCWlmIChib290dmVyYm9zZSkgeworCQlydW5bMV0g PSBzYy0+cnVubmluZzsKKwkJd2RhdHdkX2dldF9jb3VudGRvd24oc2MsIGNudCArIDEpOworCQl3 ZGF0d2RfZ2V0X2N1cnJlbnRfY291bnRkb3duKHNjLCBjdXIgKyAxKTsKKwkJd2RhdHdkX3ZlcmJv c2VfcHJpbnRmKHNjLT5kZXYsICJjbWQ6ICV1LCBzYy0+cnVubmluZzogIiAKKwkJICAgICIlZCAt PiAlZCwgY250OiAlbHUgLT4gJWx1LCBjdXI6ICVsdSAtPiAlbHVcbiIsIGNtZCwgCisJCSAgICBy dW5bMF0sIHJ1blsxXSwgY250WzBdLCBjbnRbMV0sIGN1clswXSwgY3VyWzFdKTsKKwl9CisKKwly ZXR1cm47Cit9CisKK3N0YXRpYyBpbnQKK3dkYXRfc2V0X2FjdGlvbihzdHJ1Y3Qgd2RhdHdkX3Nv ZnRjICpzYywgdm9pZCAqYWRkciwgaW50IHJlbWFpbmluZykKK3sKKwlBQ1BJX1dEQVRfRU5UUlkJ CSplbnRyeSA9IGFkZHI7CisJc3RydWN0IHdkYXRfaW5zdHIJKndkYXQ7CisKKwlpZiAocmVtYWlu aW5nIDwgKGludCkgc2l6ZW9mKEFDUElfV0RBVF9FTlRSWSkpCisJCXJldHVybiAoLTEpOworCisJ Ly8gU2tpcCBhY3Rpb25zIGJleW9uZCBzcGVjaWZpY2F0aW9uLgorCWlmIChlbnRyeS0+QWN0aW9u IDwgQUNQSV9XREFUX0FDVElPTl9SRVNFUlZFRCkgeworCQl3ZGF0ID0gbWFsbG9jKHNpemVvZigq d2RhdCksIE1fREVWQlVGLCBNX1dBSVRPSyB8IE1fWkVSTyk7CisJCXdkYXQtPmVudHJ5ID0gKmVu dHJ5OworCQlTVEFJTFFfSU5TRVJUX1RBSUwoJnNjLT5hY3Rpb25bZW50cnktPkFjdGlvbl0sIHdk YXQsIG5leHQpOworCX0KKwlyZXR1cm4gc2l6ZW9mKEFDUElfV0RBVF9FTlRSWSk7Cit9CisKKy8q IAorICogVHJhbnNmb3JtIGV2ZXJ5IEFDUElfV0RBVF9FTlRSWSB0byB3ZGF0X2luc3RyIGJ5IGNh bGxpbmcgd2RhdF9zZXRfYWN0aW9uKCkuCisgKi8KK3N0YXRpYyB2b2lkCit3ZGF0X3BhcnNlX2Fj dGlvbl90YWJsZShzdHJ1Y3Qgd2RhdHdkX3NvZnRjICpzYykKK3sKKwlBQ1BJX1RBQkxFX1dEQVQJ CSp3ZGF0ID0gc2MtPndkYXQ7CisJY2hhcgkJCSpjcDsKKwlpbnQJCQkgcmVtYWluaW5nLCBjb25z dW1lZDsKKworCXJlbWFpbmluZyA9IHdkYXQtPkhlYWRlci5MZW5ndGggLSBzaXplb2YoQUNQSV9U QUJMRV9XREFUKTsKKwl3aGlsZSAocmVtYWluaW5nID4gMCkgeworCQljcCA9IChjaGFyICopd2Rh dCArIHdkYXQtPkhlYWRlci5MZW5ndGggLSByZW1haW5pbmc7CisJCWNvbnN1bWVkID0gd2RhdF9z ZXRfYWN0aW9uKHNjLCBjcCwgcmVtYWluaW5nKTsKKwkJaWYgKGNvbnN1bWVkIDwgMCkgCisJCQlk ZXZpY2VfcHJpbnRmKHNjLT5kZXYsICJpbmNvbnNpc3RlbnQgV0RBVCB0YWJsZS5cbiIpOworCQlp ZiAoY29uc3VtZWQgPD0gMCkKKwkJCWJyZWFrOworCQllbHNlCisJCQlyZW1haW5pbmcgLT0gY29u c3VtZWQ7CisJfQorCisJcmV0dXJuOworfQorCisvKiAKKyAqIENvbXBhcmUgdGhlIGdpdmVuIEdB UyByciBhZ2FpbnN0IHRoZSByZWdpb24gc3RhcnQgYW5kIGVuZAorICogKGFjdHVhbGx5IGVuZCAr IDEpLiBPbiByZXR1cm4sIHR5cGUsIHN0YXJ0IGFuZCBlbmQgYXJlIHVwZGF0ZWQgYXMgcGVyIHJy LgorICogSWYgbm90IE5VTEwsIGFsc28gb3ZlcmxhcCBpcyB1cGRhdGVkIGRlcGVuZGluZyBvbiBo b3cgcnIgYW5kIHN0YXJ0LWVuZAorICogb3ZlcmxhcCBlYWNoIG90aGVyLgorICovCitzdGF0aWMg aW50Cit3ZGF0X2NvbXBhcmVfcmVnaW9uKEFDUElfR0VORVJJQ19BRERSRVNTICpyciwgaW50ICp0 eXBlLCB1aW50NjRfdCAqc3RhcnQsIHVpbnQ2NF90ICplbmQsIGludCAqb3ZlcmxhcCkKK3sKKwl1 aW50NjRfdAkJIHMsIGU7CisKKwlzID0gZSA9IHJyLT5BZGRyZXNzOworCXN3aXRjaCAocnItPkFj Y2Vzc1dpZHRoKSB7CisJICAgIGNhc2UgMToKKwkJZSArPSAxOworCQlicmVhazsKKwkgICAgY2Fz ZSAyOgorCQllICs9IDI7CisJCWJyZWFrOworCSAgICBjYXNlIDM6CisJCWUgKz0gNDsKKwkJYnJl YWs7CisJICAgIGNhc2UgNDoKKwkJZSArPSA4OworCQlicmVhazsKKwkgICAgZGVmYXVsdDoKKwkJ cmV0dXJuIChFSU5WQUwpOworCX0KKworCS8qIGEpIHJyIGlzIGZ1bGx5IGNvdmVyZWQgYnkgc3Rh cnQtZW5kLgorCSAqIGIpIHJyIGZ1bGx5IGNvdmVycyBzdGFydC1lbmQuCisJICogYykgcnIgYW5k IHN0YXJ0LWVuZCBvdmVybGFwIHBhcnRpYWxseS4KKwkgKiBkKSByciBhbmQgc3RhcnQtZW5kIGhh dmUgbm8gb3ZlcmxhcC4KKwkgKiBlKSBib3RoIGhhdmUgZGlmZmVyZW50IHJlc291cmNlIHR5cGUu CisJICogZikgb3ZlcmxhcCBpcyBzZXQgdG8gTlVMTC4KKwkgKiBvdmVybGFwIGlzIGEgYml0LWZp ZWxkLiBiaXQgMSBpcyBmb3IgKGEpLCBiaXQgMiBhbmQgMyBpcyBmb3IgKGIpIGFuZAorCSAqIChj KSwgd2hlcmUgcnIgZXh0ZW5kcyBzdGFydCB0byBsb3dlciB0aGVuIGJpdCAyIGlzIHNldCwgYW5k IHRvIHVwcGVyCisJICogYml0IDMgaXMgc2V0LiAqLworCWlmIChvdmVybGFwKSAKKwkJKm92ZXJs YXAgPSAwOworCisJaWYgKCgqdHlwZSAhPSByci0+U3BhY2VJZCkgfHwgKG92ZXJsYXAgPT0gTlVM TCkJLy8gKGVmKQorCSAgICB8fCAocyA+ICplbmQpIHx8IChlIDwgKnN0YXJ0KSkge30JCS8vIChk KQorCWVsc2UgeworCQlpZiAoKHMgPj0gKnN0YXJ0KSAmJiAoZSA8PSAqZW5kKSkgCS8vIChhKQor CQkJKm92ZXJsYXAgPSAweDE7CisJCWlmIChzIDwgKnN0YXJ0KSAJCQkvLyAoYmMpCisJCQkqb3Zl cmxhcCA9IDB4MjsKKwkJaWYgKGUgPiAqZW5kKSAJCQkJLy8gKGJjKQorCQkJKm92ZXJsYXAgKz0g MHg0OworCX0KKworCSpzdGFydCA9IHM7CisJKmVuZCAgID0gZTsKKwkqdHlwZSAgPSByci0+U3Bh Y2VJZDsKKworCXJldHVybiAoMCk7Cit9CisKKy8qIAorICogVHJ5IHRvIG1lcmdlIHRoZSBnaXZl biBHQVMgKGluIHdkYXQpIHdpdGggdGhlIGV4aXN0aW5nIHJlcyBpbiBxdWV1ZS4KKyAqLworc3Rh dGljIHZvaWQKK3dkYXRfbWVyZ2VfcmVzb3VyY2Uoc3RydWN0IHdkYXR3ZF9zb2Z0YyAqc2MsIHN0 cnVjdCB3ZGF0X2luc3RyICp3ZGF0KQoreworCXN0cnVjdCB3ZGF0X3JlcwkJKnJlcywgKnIyOwor CXVpbnQ2NF90CQkgcywgZTsKKwlpbnQJCQkgb3ZlcmxhcCwgdHlwZSwgZm91bmQgPSAwOworCisJ LyogVHJ5IHRvIG1lcmdlIHRoZSBnaXZlbiBHQVMgd2l0aCB0aGUgZXhpc3RpbmcgcmVzIGxpc3Qg YnkgZXh0ZW5kaW5nCisJICogb25lIGNlcnRhaW4gcmVzIHRvIGNvdmVyIHRoZSBHQVMgaWYgc3Vj aCByZXMgYW5kIEdBUyBvdmVybGFwIGVhY2gKKwkgKiBvdGhlci4gSWYgbm8gb3ZlcmxhcHBlZCBy ZXMgZm91bmQsIGluc2VydCBhIG5ldyByZXMgYXQgYXBwcm9wcmlhdGUKKwkgKiBwb3NpdGlvbi4g Ki8KKwlUQUlMUV9GT1JFQUNIKHJlcywgJnNjLT5yZXMsIGxpbmspIHsKKwkJdHlwZSA9IHJlcy0+ dHlwZTsKKwkJcyAgICA9IHJlcy0+c3RhcnQ7CisJCWUgICAgPSByZXMtPmVuZDsKKwkJd2RhdF9j b21wYXJlX3JlZ2lvbigmd2RhdC0+ZW50cnkuUmVnaXN0ZXJSZWdpb24sIAorCQkgICAgJnR5cGUs ICZzLCAmZSwgJm92ZXJsYXApOworCQkvLyBUcnkgbmV4dCByZXMgaWYgR0FTIGlzbid0IG1lcmdl YWJsZS4KKwkJaWYgKCh0eXBlICE9IHJlcy0+dHlwZSkgfHwgKCEgb3ZlcmxhcCkpIAorCQkJY29u dGludWU7CisKKwkJZm91bmQgPSAxOworCisJCS8vIFRoaXMgcmVzIGZ1bGx5IGNvdmVycyB0aGUg R0FTLgorCQlpZiAob3ZlcmxhcCA9PSAweDEpIAorCQkJYnJlYWs7CisKKwkJLy8gVGhpcyBHQVMg ZXh0ZW5kcyB0aGUgcmVzIHRvIGxvd2VyIGFkZHJlc3MgKHMgPCByZXMtPnN0YXJ0KS4KKwkJaWYg KChvdmVybGFwICYgMHgyKSkgeworCQkJd2hpbGUgKChyMiA9IFRBSUxRX1BSRVYocmVzLCByZXNf aGVhZCwgbGluaykpKSB7CisJCQkJaWYgKHR5cGUgIT0gcjItPnR5cGUpCisJCQkJCWNvbnRpbnVl OworCQkJCWVsc2UgaWYgKHMgPD0gcjItPmVuZCkgeworCQkJCQlzID0gcjItPnN0YXJ0OworCQkJ CQlUQUlMUV9SRU1PVkUoJnNjLT5yZXMsIHIyLCBsaW5rKTsKKwkJCQkJZnJlZShyMiwgTV9ERVZC VUYpOworCQkJCX0gZWxzZSAKKwkJCQkJYnJlYWs7CisJCQl9CisJCQlyZXMtPnN0YXJ0ID0gczsK KwkJfQorCQkvLyBUaGlzIEdBUyBleHRlbmRzIHRoZSByZXMgdG8gdXBwZXIgYWRkcmVzcyAoZSA+ IHJlcy0+ZW5kKS4KKwkJaWYgKChvdmVybGFwICYgMHg0KSkgeworCQkJd2hpbGUgKChyMiA9IFRB SUxRX05FWFQocmVzLCBsaW5rKSkpIHsKKwkJCQlpZiAodHlwZSAhPSByMi0+dHlwZSkKKwkJCQkJ Y29udGludWU7CisJCQkJZWxzZSBpZiAoZSA+PSByMi0+c3RhcnQpIHsKKwkJCQkJZSA9IHIyLT5l bmQ7CisJCQkJCVRBSUxRX1JFTU9WRSgmc2MtPnJlcywgcjIsIGxpbmspOworCQkJCQlmcmVlKHIy LCBNX0RFVkJVRik7CisJCQkJfSBlbHNlIAorCQkJCQlicmVhazsKKwkJCX0KKwkJCXJlcy0+ZW5k ID0gZTsKKwkJfQorCQlicmVhazsKKwl9CisKKwkvLyBObyBleHRlbmRhYmxlIHJlcyBhdCBhbGwu IE5vdyBhZGQgbmV3IHJlcyB0byB0aGUgcXVldWUuCisJaWYgKCEgZm91bmQpIHsKKwkJcmVzID0g bWFsbG9jKHNpemVvZigqcmVzKSwgTV9ERVZCVUYsIE1fV0FJVE9LIHwgTV9aRVJPKTsKKwkJcmVz LT50eXBlICA9IHR5cGU7CisJCXJlcy0+c3RhcnQgPSBzOworCQlyZXMtPmVuZCAgID0gZTsKKwor CQlUQUlMUV9GT1JFQUNIKHIyLCAmc2MtPnJlcywgbGluaykgeworCQkJaWYgKHJlcy0+dHlwZSAh PSByMi0+dHlwZSkgCisJCQkJY29udGludWU7CisJCQlpZiAocmVzLT5zdGFydCA8IHIyLT5zdGFy dCkgeworCQkJCVRBSUxRX0lOU0VSVF9CRUZPUkUocjIsIHJlcywgbGluayk7CisJCQkJZm91bmQg PSAxOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJCWlmICghIGZvdW5kKSAKKwkJCVRBSUxRX0lO U0VSVF9UQUlMKCZzYy0+cmVzLCByZXMsIGxpbmspOworCX0KK30KKworLyogCisgKiBSZWxlYXNl IHRoZSBhbHJlYWR5IGFsbG9jYXRlZCByZXNvdXJjZS4KKyAqLworc3RhdGljIHZvaWQKK3dkYXRf cmVsZWFzZV9yZXNvdXJjZShkZXZpY2VfdCBkZXYpCit7CisJc3RydWN0IHdkYXR3ZF9zb2Z0Ywkq c2M7CisJc3RydWN0IHdkYXRfcmVzCQkqcmVzOworCisJc2MgPSBkZXZpY2VfZ2V0X3NvZnRjKGRl dik7CisKKwlUQUlMUV9GT1JFQUNIKHJlcywgJnNjLT5yZXMsIGxpbmspIAorCQlpZiAocmVzLT5y ZXMpIHsKKwkJCWJ1c19yZWxlYXNlX3Jlc291cmNlKGRldiwgcmVzLT50eXBlLCAKKwkJCSAgICBy ZXMtPnJpZCwgcmVzLT5yZXMpOworCQkJYnVzX2RlbGV0ZV9yZXNvdXJjZShkZXYsIHJlcy0+dHlw ZSwgcmVzLT5yaWQpOworCQkJcmVzLT5yZXMgPSBOVUxMOworCQl9Cit9CisKK3N0YXRpYyBpbnQK K3dkYXR3ZF9wcm9iZShkZXZpY2VfdCBkZXYpCit7CisJQUNQSV9UQUJMRV9XREFUCQkqd2RhdDsK KwlBQ1BJX1NUQVRVUwkJIHN0YXR1czsKKworCS8qIFdpdGhvdXQgV0RBVCB0YWJsZSB3ZSBoYXZl IG5vdGhpbmcgdG8gZG8uICovCisJc3RhdHVzID0gQWNwaUdldFRhYmxlKEFDUElfU0lHX1dEQVQs IDAsIChBQ1BJX1RBQkxFX0hFQURFUiAqKikgJndkYXQpOworCWlmIChBQ1BJX0ZBSUxVUkUoc3Rh dHVzKSkKKwkJcmV0dXJuIChFTlhJTyk7CisKKwkvKiBUcnkgdG8gYWxsb2NhdGUgb25lIHJlc291 cmNlIGFuZCBhc3N1bWUgd2RhdHdkIGlzIGFscmVhZHkgYXR0YWNoZWQKKwkgKiBpZiBpdCBmYWls cy4gKi8KKwl7CisJCWludAkJIHR5cGUsIHJpZCA9IDA7CisJCXN0cnVjdCByZXNvdXJjZSAqcmVz OworCisJCWlmIChhY3BpX2J1c19hbGxvY19nYXMoZGV2LCAmdHlwZSwgJnJpZCwgCisJCSAgICAm KChBQ1BJX1dEQVRfRU5UUlkgKikod2RhdCArIDEpKS0+UmVnaXN0ZXJSZWdpb24sIAorCQkgICAg JnJlcywgMCkpIAorCQkJcmV0dXJuIChFTlhJTyk7CisJCWJ1c19yZWxlYXNlX3Jlc291cmNlKGRl diwgdHlwZSwgcmlkLCByZXMpOworCQlidXNfZGVsZXRlX3Jlc291cmNlKGRldiwgdHlwZSwgcmlk KTsKKwl9CisKKwl3ZGF0d2RfdmVyYm9zZV9wcmludGYoZGV2LCAiRmxhZ3M6IDB4JXgsIFRpbWVy UGVyaW9kOiAlZCBtcy9jbnQsICIKKwkgICAgIk1heENvdW50OiAlZCBjbnQgKCVkIG1zKSwgTWlu Q291bnQ6ICVkIGNudCAoJWQgbXMpXG4iLCAKKwkgICAgKGludCkgd2RhdC0+RmxhZ3MsIChpbnQp IHdkYXQtPlRpbWVyUGVyaW9kLCAKKwkgICAgKGludCkgd2RhdC0+TWF4Q291bnQsIChpbnQpICh3 ZGF0LT5NYXhDb3VudCAqIHdkYXQtPlRpbWVyUGVyaW9kKSwgCisJICAgIChpbnQpIHdkYXQtPk1p bkNvdW50LCAoaW50KSAod2RhdC0+TWluQ291bnQgKiB3ZGF0LT5UaW1lclBlcmlvZCkpOworCS8v IFdEQVQgdGltZXIgY29uc2lzdGVuY3kuCisJaWYgKCh3ZGF0LT5UaW1lclBlcmlvZCA8IDEpIHx8 ICh3ZGF0LT5NaW5Db3VudCA+IHdkYXQtPk1heENvdW50KSkgeworCQlkZXZpY2VfcHJpbnRmKGRl diwgImluY29uc2lzdGVudCB0aW1lciB2YXJpYWJsZXMuXG4iKTsKKwkJcmV0dXJuIChFSU5WQUwp OworCX0KKworCUFjcGlQdXRUYWJsZSgoQUNQSV9UQUJMRV9IRUFERVIgKikgd2RhdCk7CisKKwlk ZXZpY2Vfc2V0X2Rlc2MoZGV2LCAiQUNQSSBXREFUIFdhdGNoZG9nIEludGVyZmFjZSIpOworCXJl dHVybiAwOworfQorCitzdGF0aWMgaW50Cit3ZGF0d2RfYXR0YWNoKGRldmljZV90IGRldikKK3sK KwlzdHJ1Y3Qgd2RhdHdkX3NvZnRjCSpzYzsKKwlBQ1BJX1NUQVRVUwkJIHN0YXR1czsKKwlpbnQJ CQkgaSwgcmlkLCBlID0gMDsKKwlzdHJ1Y3Qgd2RhdF9pbnN0cgkqd2RhdDsKKwlzdHJ1Y3Qgc3lz Y3RsX2N0eF9saXN0CSpzY3R4OworCXN0cnVjdCBzeXNjdGxfb2lkCSpzb2lkOworCXN0cnVjdCB3 ZGF0X3JlcwkJKnJlczsKKworCXNjID0gZGV2aWNlX2dldF9zb2Z0YyhkZXYpOworCXNjLT5kZXYg PSBkZXY7CisKKwlmb3IgKGkgPSAwOyBpIDwgQUNQSV9XREFUX0FDVElPTl9SRVNFUlZFRDsgKytp KSAKKwkJU1RBSUxRX0lOSVQoJnNjLT5hY3Rpb25baV0pOworCisJLyogU2VhcmNoIGFuZCBwYXJz ZSBXREFUIHRhYmxlLiAqLworCXN0YXR1cyA9IEFjcGlHZXRUYWJsZShBQ1BJX1NJR19XREFULCAw LCAKKwkgICAgKEFDUElfVEFCTEVfSEVBREVSICoqKSZzYy0+d2RhdCk7CisJaWYgKEFDUElfRkFJ TFVSRShzdGF0dXMpKQorCQlyZXR1cm4gKEVOWElPKTsKKworCS8vIFBhcnNlIHdhdGNoZG9nIHZh cmlhYmxlcy4KKwlzYy0+cGVyaW9kID0gc2MtPndkYXQtPlRpbWVyUGVyaW9kOworCXNjLT5tYXgg PSBzYy0+d2RhdC0+TWF4Q291bnQ7CisJc2MtPm1pbiA9IHNjLT53ZGF0LT5NaW5Db3VudDsKKwlz Yy0+c3RvcF9pbl9zbGVlcCA9ICEhIChzYy0+d2RhdC0+RmxhZ3MgJiBBQ1BJX1dEQVRfU1RPUFBF RCk7CisJLy8gUGFyc2UgZGVmaW5lZCB3YXRjaGRvZyBhY3Rpb25zLgorCXdkYXRfcGFyc2VfYWN0 aW9uX3RhYmxlKHNjKTsKKworCUFjcGlQdXRUYWJsZSgoQUNQSV9UQUJMRV9IRUFERVIgKikgc2Mt PndkYXQpOworCisJLy8gVmVyYm9zZSBsb2dnaW5nLgorCWZvciAoaSA9IDA7IGkgPCBBQ1BJX1dE QVRfQUNUSU9OX1JFU0VSVkVEOyArK2kpIAorCQlTVEFJTFFfRk9SRUFDSCh3ZGF0LCAmc2MtPmFj dGlvbltpXSwgbmV4dCkgeworCQkJd2RhdHdkX3ZlcmJvc2VfcHJpbnRmKGRldiwgImFjdGlvbjog MHglMDJ4LCAiIAorCQkJICAgICIlcyAlcyBhdCAweCVseCAoJWQgYml0KHMpLCBvZmZzZXQgJWQg Yml0KHMpKVxuIiwgCisJCQkgICAgaSwgCisJCQkgICAgd2RhdC0+ZW50cnkuUmVnaXN0ZXJSZWdp b24uU3BhY2VJZCAKKwkJCSAgICAgICAgPT0gQUNQSV9BRFJfU1BBQ0VfU1lTVEVNX01FTU9SWSAK KwkJCSAgICAgICAgPyAibWVtIiAKKwkJCSAgICAgICAgOiB3ZGF0LT5lbnRyeS5SZWdpc3RlclJl Z2lvbi5TcGFjZUlkIAorCQkJICAgICAgICAgICAgPT0gQUNQSV9BRFJfU1BBQ0VfU1lTVEVNX0lP IAorCQkJICAgICAgICAgICAgPyAiaW8gIiAKKwkJCSAgICAgICAgICAgIDogIj8/PyIsCisJCQkg ICAgd2RhdC0+ZW50cnkuUmVnaXN0ZXJSZWdpb24uQWNjZXNzV2lkdGggPT0gMSAKKwkJCSAgICAg ICAgPyAiYnl0ZSAiIAorCQkJICAgICAgICA6IHdkYXQtPmVudHJ5LlJlZ2lzdGVyUmVnaW9uLkFj Y2Vzc1dpZHRoID09IDIgCisJCQkgICAgICAgICAgICA/ICJ3b3JkICIgCisJCQkgICAgICAgICAg ICA6IHdkYXQtPmVudHJ5LlJlZ2lzdGVyUmVnaW9uLkFjY2Vzc1dpZHRoID09IDMgCisJCQkgICAg ICAgICAgICAgICAgPyAiZHdvcmQiIAorCQkJICAgICAgICAgICAgICAgIDogd2RhdC0+ZW50cnku UmVnaXN0ZXJSZWdpb24uQWNjZXNzV2lkdGggPT0gNCAKKwkJCSAgICAgICAgICAgICAgICAgICAg PyAicXdvcmQiIAorCQkJICAgICAgICAgICAgICAgICAgICA6ICJ1bmRlZiIsCisJCQkgICAgd2Rh dC0+ZW50cnkuUmVnaXN0ZXJSZWdpb24uQWRkcmVzcywgCisJCQkgICAgd2RhdC0+ZW50cnkuUmVn aXN0ZXJSZWdpb24uQml0V2lkdGgsIAorCQkJICAgIHdkYXQtPmVudHJ5LlJlZ2lzdGVyUmVnaW9u LkJpdE9mZnNldCk7CisJfQorCisJLy8gQ2Fub25pY2FsaXplIHRoZSByZXF1ZXN0ZWQgcmVzb3Vy Y2VzLgorCVRBSUxRX0lOSVQoJnNjLT5yZXMpOworCWZvciAoaSA9IDA7IGkgPCBBQ1BJX1dEQVRf QUNUSU9OX1JFU0VSVkVEOyArK2kpIAorCQlTVEFJTFFfRk9SRUFDSCh3ZGF0LCAmc2MtPmFjdGlv bltpXSwgbmV4dCkgeworCQkJaWYgKFRBSUxRX0VNUFRZKCZzYy0+cmVzKSkgeworCQkJCXJlcyA9 IG1hbGxvYyhzaXplb2YoKnJlcyksIAorCQkJCSAgICBNX0RFVkJVRiwgTV9XQUlUT0sgfCBNX1pF Uk8pOworCQkJCXdkYXRfY29tcGFyZV9yZWdpb24oCisJCQkJICAgICZ3ZGF0LT5lbnRyeS5SZWdp c3RlclJlZ2lvbiwgCisJCQkJICAgICZyZXMtPnR5cGUsICZyZXMtPnN0YXJ0LCAmcmVzLT5lbmQs IE5VTEwpOworCQkJCVRBSUxRX0lOU0VSVF9IRUFEKCZzYy0+cmVzLCByZXMsIGxpbmspOworCQkJ fSBlbHNlIAorCQkJCXdkYXRfbWVyZ2VfcmVzb3VyY2Uoc2MsIHdkYXQpOworCQl9CisKKwkvLyBS ZXNvdXJjZSBhbGxvY2F0aW9uLgorCXJpZCA9IDA7CisJVEFJTFFfRk9SRUFDSChyZXMsICZzYy0+ cmVzLCBsaW5rKSB7CisJCXN3aXRjaCAocmVzLT50eXBlKSB7CisJCSAgICBjYXNlIEFDUElfQURS X1NQQUNFX1NZU1RFTV9NRU1PUlk6CisJCQlyZXMtPnR5cGUgPSBTWVNfUkVTX01FTU9SWTsKKwkJ CWJyZWFrOworCQkgICAgY2FzZSBBQ1BJX0FEUl9TUEFDRV9TWVNURU1fSU86CisJCQlyZXMtPnR5 cGUgPSBTWVNfUkVTX0lPUE9SVDsKKwkJCWJyZWFrOworCQkgICAgZGVmYXVsdDoKKwkJCXJldHVy biAoRU9QTk9UU1VQUCk7CisJCX0KKworCQlyZXMtPnJpZCA9IHJpZCsrOworCQlidXNfc2V0X3Jl c291cmNlKGRldiwgcmVzLT50eXBlLCByZXMtPnJpZCwgCisJCSAgICByZXMtPnN0YXJ0LCByZXMt PmVuZCAtIHJlcy0+c3RhcnQpOworCQlyZXMtPnJlcyA9IGJ1c19hbGxvY19yZXNvdXJjZV9hbnko CisJCSAgICBkZXYsIHJlcy0+dHlwZSwgJnJlcy0+cmlkLCBSRl9BQ1RJVkUpOworCQlpZiAocmVz LT5yZXMgPT0gTlVMTCkgeworCQkJYnVzX2RlbGV0ZV9yZXNvdXJjZShkZXYsIHJlcy0+dHlwZSwg cmVzLT5yaWQpOworCQkJZSA9IEVOT01FTTsKKwkJCWRldmljZV9wcmludGYoZGV2LCAiJXMgYXQg MHglbHggKCVsZCBieXRlKHMpKTogIiAKKwkJCSAgICAiYWxsb2MnIGZhaWxlZFxuIiwgCisJCQkg ICAgcmVzLT50eXBlID09IFNZU19SRVNfTUVNT1JZID8gIm1lbSIgOiAiaW8gIiwgCisJCQkgICAg cmVzLT5zdGFydCwgcmVzLT5lbmQgLSByZXMtPnN0YXJ0KTsKKwkJCWdvdG8gZmFpbDsKKwkJfQor CQl3ZGF0d2RfdmVyYm9zZV9wcmludGYoZGV2LCAiJXMgYXQgMHglbHggKCVsZCBieXRlKHMpKTog IiAKKwkJICAgICJhbGxvYydlZFxuIiwKKwkJICAgIHJlcy0+dHlwZSA9PSBTWVNfUkVTX01FTU9S WSA/ICJtZW0iIDogImlvICIsIAorCQkgICAgcmVzLT5zdGFydCwgcmVzLT5lbmQgLSByZXMtPnN0 YXJ0KTsKKwl9CisKKwkvLyBJbml0aWFsaXplIHRoZSB3YXRjaGRvZyBoYXJkd2FyZS4KKwlpZiAo KChlID0gd2RhdHdkX3NldF9zdG9wKHNjKSkpIAorCSAgICB8fCAoKGUgPSB3ZGF0d2RfY2xlYXJf c3RhdHVzKHNjKSkgJiYgKGUgIT0gRU9QTk9UU1VQUCkpIAorCSAgICB8fCAoKGUgPSB3ZGF0d2Rf c2V0X3JlYm9vdChzYykpICYmIChlICE9IEVPUE5PVFNVUFApKSAKKwkgICAgfHwgKChlID0gd2Rh dHdkX2dldF9jb3VudGRvd24oc2MsICZzYy0+ZGVmYXVsdF90aW1lb3V0KSkgCisJICAgICAgICAm JiAoZSAhPSBFT1BOT1RTVVBQKSkpIAorCQlnb3RvIGZhaWw7CisJd2RhdHdkX3ZlcmJvc2VfcHJp bnRmKGRldiwgImluaXRpYWxpemVkLlxuIik7CisKKwkvLyBTb21lIHN5c2N0bHMuIE1vc3Qgb2Yg dGhlbSBzaG91bGQgZ28gdG8gd2RhdHdkX3ZlcmJvc2VfcHJpbnRmKCkuCisJc2N0eCA9IGRldmlj ZV9nZXRfc3lzY3RsX2N0eChkZXYpOworCXNvaWQgPSBkZXZpY2VfZ2V0X3N5c2N0bF90cmVlKGRl dik7CisJU1lTQ1RMX0FERF9VNjQoc2N0eCwgU1lTQ1RMX0NISUxEUkVOKHNvaWQpLCBPSURfQVVU TywgCisJICAgICJ0aW1lb3V0X21zIiwgQ1RMRkxBR19SRCwgJnNjLT50aW1lb3V0LCAwLCAKKwkg ICAgIkN1cnJlbnQgd2F0Y2hkb2cgdGltZW91dCBpbiBtcyBpZiBjaGFuZ2VkLiIpOworCVNZU0NU TF9BRERfVUlOVChzY3R4LCBTWVNDVExfQ0hJTERSRU4oc29pZCksIE9JRF9BVVRPLCAKKwkgICAg InJ1bm5pbmciLCBDVExGTEFHX1JELCAmc2MtPnJ1bm5pbmcsIDAsIAorCSAgICAiV2F0Y2hkb2cg aXMgcnVubmluZyBub3cuIik7CisJU1lTQ1RMX0FERF9VNjQoc2N0eCwgU1lTQ1RMX0NISUxEUkVO KHNvaWQpLCBPSURfQVVUTywgCisJICAgICJkZWZhdWx0X3RpbWVvdXRfbXMiLCBDVExGTEFHX1JE LCBTWVNDVExfTlVMTF9VNjRfUFRSLCAKKwkgICAgc2MtPmRlZmF1bHRfdGltZW91dCAqIHNjLT5w ZXJpb2QsIAorCSAgICAiQklPUyBjb25maWd1cmVkIHdhdGNoZG9nIHRpbWVvdXQgaW4gbXMuIik7 CisJU1lTQ1RMX0FERF9VSU5UKHNjdHgsIFNZU0NUTF9DSElMRFJFTihzb2lkKSwgT0lEX0FVVE8s IAorCSAgICAiY2FuX3NldF90aW1lb3V0IiwgQ1RMRkxBR19SRCwgU1lTQ1RMX05VTExfVUlOVF9Q VFIsIAorCSAgICAhIFNUQUlMUV9FTVBUWSgmc2MtPmFjdGlvbltBQ1BJX1dEQVRfU0VUX0NPVU5U RE9XTl0pLCAKKwkgICAgIldhdGNoZG9nIHRpbWVvdXQgaXMgY29uZmlndXJhYmxlLiIpOworCisJ c2MtPmV2X3RhZyA9IEVWRU5USEFORExFUl9SRUdJU1RFUih3YXRjaGRvZ19saXN0LCB3ZGF0d2Rf ZXZlbnQsIHNjLCAwKTsKKwl3ZGF0d2RfdmVyYm9zZV9wcmludGYoZGV2LCAid2F0Y2hkb2cgcmVn aXN0ZXJlZC5cbiIpOworCisJcmV0dXJuICgwKTsKKworZmFpbDoKKwl3ZGF0X3JlbGVhc2VfcmVz b3VyY2UoZGV2KTsKKworCXJldHVybiAoRU5YSU8pOworfQorCitzdGF0aWMgaW50Cit3ZGF0d2Rf ZGV0YWNoKGRldmljZV90IGRldikKK3sKKwlzdHJ1Y3Qgd2RhdHdkX3NvZnRjCSpzYzsKKwlpbnQJ CQkgZTsKKworCXNjID0gZGV2aWNlX2dldF9zb2Z0YyhkZXYpOworCisJRVZFTlRIQU5ETEVSX0RF UkVHSVNURVIod2F0Y2hkb2dfbGlzdCwgc2MtPmV2X3RhZyk7CisJZSA9IHdkYXR3ZF9zZXRfc3Rv cChzYyk7CisJd2RhdF9yZWxlYXNlX3Jlc291cmNlKGRldik7CisKKwlyZXR1cm4gKGUpOworfQor CitzdGF0aWMgaW50Cit3ZGF0d2Rfc3VzcGVuZChkZXZpY2VfdCBkZXYpCit7CisJc3RydWN0IHdk YXR3ZF9zb2Z0Ywkqc2M7CisKKwlzYyA9IGRldmljZV9nZXRfc29mdGMoZGV2KTsKKworCXJldHVy biBzYy0+c3RvcF9pbl9zbGVlcCA/IDAgOiB3ZGF0d2Rfc2V0X3N0b3Aoc2MpOworfQorCitzdGF0 aWMgaW50Cit3ZGF0d2RfcmVzdW1lKGRldmljZV90IGRldikKK3sKKwlzdHJ1Y3Qgd2RhdHdkX3Nv ZnRjCSpzYzsKKwlpbnQJCQkgZSA9IDA7CisKKwlzYyA9IGRldmljZV9nZXRfc29mdGMoZGV2KTsK KworCWlmIChzYy0+c3RvcF9pbl9zbGVlcCkgCisJCShlID0gd2RhdHdkX3Jlc2V0X2NvdW50ZG93 bihzYykpIAorCQkgICAgfHwgKGUgPSB3ZGF0d2Rfc2V0X3J1bm5pbmcoc2MpKTsKKworCXJldHVy biAoZSk7Cit9CisKK3N0YXRpYyBkZXZpY2VfbWV0aG9kX3Qgd2RhdHdkX21ldGhvZHNbXSA9IHsK KwkvKiBEZXZpY2UgaW50ZXJmYWNlICovCisJREVWTUVUSE9EKGRldmljZV9wcm9iZSwgd2RhdHdk X3Byb2JlKSwKKwlERVZNRVRIT0QoZGV2aWNlX2F0dGFjaCwgd2RhdHdkX2F0dGFjaCksCisJREVW TUVUSE9EKGRldmljZV9kZXRhY2gsIHdkYXR3ZF9kZXRhY2gpLAorCURFVk1FVEhPRChkZXZpY2Vf c2h1dGRvd24sIHdkYXR3ZF9kZXRhY2gpLAorCURFVk1FVEhPRChkZXZpY2Vfc3VzcGVuZCwgd2Rh dHdkX3N1c3BlbmQpLAorCURFVk1FVEhPRChkZXZpY2VfcmVzdW1lLCB3ZGF0d2RfcmVzdW1lKSwK KwlERVZNRVRIT0RfRU5ECit9OworCitzdGF0aWMgZHJpdmVyX3QJd2RhdHdkX2RyaXZlciA9IHsK Kwkid2RhdHdkIiwKKwl3ZGF0d2RfbWV0aG9kcywKKwlzaXplb2Yoc3RydWN0IHdkYXR3ZF9zb2Z0 YyksCit9OworCitEUklWRVJfTU9EVUxFKHdkYXR3ZCwgYWNwaSwgd2RhdHdkX2RyaXZlciwgd2Rh dHdkX2RldmNsYXNzLCAwLCAwKTsKK01PRFVMRV9ERVBFTkQod2RhdHdkLCBhY3BpLCAxLCAxLCAx KTsK --------_63789D9600000000DB11_MULTIPART_MIXED_-- From nobody Mon Jan 2 16:10:10 2023 X-Original-To: freebsd-drivers@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Nm16Y2rtJz2nsCl for ; Mon, 2 Jan 2023 16:10:13 +0000 (UTC) (envelope-from Stephane.ROCHOY@stormshield.eu) Received: from mail.stormshield.eu (mail.stormshield.eu [91.212.116.25]) by mx1.freebsd.org (Postfix) with ESMTP id 4Nm16X1ygsz3Fgr for ; Mon, 2 Jan 2023 16:10:12 +0000 (UTC) (envelope-from Stephane.ROCHOY@stormshield.eu) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=stormshield.eu header.s=signer header.b=TfFoPfae; spf=pass (mx1.freebsd.org: domain of Stephane.ROCHOY@stormshield.eu designates 91.212.116.25 as permitted sender) smtp.mailfrom=Stephane.ROCHOY@stormshield.eu; dmarc=pass (policy=quarantine) header.from=stormshield.eu DKIM-Signature: v=1; a=rsa-sha256; d=stormshield.eu; s=signer; c=simple/simple; t=1672675810; h=from:subject:to:date:message-id; bh=DCeRnTUxVxXQV0k6+d0SdyFAr0dTmMHyeCQalzTMeyg=; b=TfFoPfaelu1cwuOZU4BC2sc7xusIDt8VeZgfEeWrLe1DsaSCzBxhaA5/es/a+SqJcnyV5yR1mTT 7g2t7Zk9DgVEBsTSwH+47lBVfoKNTcqWvounHuOKAkULi95Xq8393tr5uAZgCxztxdADiAGfPumOu qkP2P73oHklHgtMB/GYMyCkVtOf7xf+7LVUkny7r06PYshjkykFhMOx07dZm6tZTk8BpxS4EjKQzS uJmu5m2d3OuCvtMhDNLQqLvf2Hdq+3Z2e9PiF/CtltZAIj6vRyEP9EE7Mv7Ds2KQlayRP/fOOGi88 tZtNQ9uVwHX7108rJxlMY4+ujtzU6aSR8DFg== Received: from cthulhu.stephaner.labo.int (10.2.16.1) by ICTDCCEXCH001.one.local (10.180.4.1) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.20; Mon, 2 Jan 2023 17:10:10 +0100 Received: by cthulhu.stephaner.labo.int (Postfix, from userid 1001) id 5FE3A1FDCE; Mon, 2 Jan 2023 17:10:10 +0100 (CET) User-agent: mu4e 1.2.0; emacs 27.1 From: Stephane Rochoy To: Subject: GPIO on Fintek and Nuvoton Super I/O Date: Mon, 2 Jan 2023 17:10:10 +0100 Message-ID: <865ydovrx9.fsf@cthulhu.stephaner.labo.int> List-Id: Writing device drivers for FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-drivers List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-drivers@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.2.16.1] X-ClientProxiedBy: ICTDCCEXCH001.one.local (10.180.4.1) To ICTDCCEXCH001.one.local (10.180.4.1) X-Spamd-Result: default: False [-3.90 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_SHORT(-1.00)[-0.995]; DMARC_POLICY_ALLOW(-0.50)[stormshield.eu,quarantine]; R_DKIM_ALLOW(-0.20)[stormshield.eu:s=signer]; R_SPF_ALLOW(-0.20)[+ip4:91.212.116.25]; RCVD_NO_TLS_LAST(0.10)[]; MIME_GOOD(-0.10)[text/plain]; MLMMJ_DEST(0.00)[freebsd-drivers@freebsd.org]; FROM_EQ_ENVFROM(0.00)[]; DKIM_TRACE(0.00)[stormshield.eu:+]; RCVD_COUNT_THREE(0.00)[3]; ARC_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; HAS_XOIP(0.00)[]; RCPT_COUNT_ONE(0.00)[1]; FROM_HAS_DN(0.00)[]; TO_DN_NONE(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; ASN(0.00)[asn:49068, ipnet:91.212.116.0/24, country:FR] X-Rspamd-Queue-Id: 4Nm16X1ygsz3Fgr X-Spamd-Bar: --- X-ThisMailContainsUnwantedMimeParts: N Hello, I would like to draw some attention on two patches I recently submitted: ftgpio[1] and nctgpio[2]. Both are adding support to Super I/O chips: - ftgpio: Add support for Fintek F81865 Super I/O's GPIO - nctgpio: Refactor and add support for NCT6779, NCT6116D and Winbond 83627DHG The 2nd patch, about Nuvoton chips, would especially require some attention as they're a bit more tricky than the others. [1] https://reviews.freebsd.org/D37893 [2] https://reviews.freebsd.org/D37897 Regards, -- St=C3=A9phane Rochoy O: Stormshield