From owner-svn-src-head@freebsd.org Mon Jun 22 06:37:21 2020 Return-Path: Delivered-To: svn-src-head@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 0F2C7341A0B; Mon, 22 Jun 2020 06:37:21 +0000 (UTC) (envelope-from agapon@gmail.com) Received: from mail-lj1-f195.google.com (mail-lj1-f195.google.com [209.85.208.195]) (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 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49r0801StVz4F48; Mon, 22 Jun 2020 06:37:19 +0000 (UTC) (envelope-from agapon@gmail.com) Received: by mail-lj1-f195.google.com with SMTP id n24so17884614lji.10; Sun, 21 Jun 2020 23:37:19 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:openpgp:autocrypt :message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=VTjt9KwwIJJ8YuRSJAm2uFPBq00DsOpXv+04onUvWrE=; b=eQczvtPnLAMdRpKMrCVvsT7cj2BGohjV2/59GqtzjQKhL+Zee0a/KqgL612qOR7RjN HcTiajSEsES8K8ym/xjY08qA/GRT4++WfokMQ1Fg4lu4NEMd8CHHTn0uA5g290NwyVYu 0CyQEJ6X96uh3dEQPYGMutuxkOBF73z1Ib0ICDRYdn4lM9UyJE6r6gMuh8zoQlgaq9lG 5ek9W7Br/DIhSYOzHc2EebSFYkvM4gEM8dvFPOtHFkC38PPLwiyD/6Tbi0Lw7FdGT63h 4r2rkhBJgoJWdakaCGwJ/XYqJmMLZjQuKC9AvvmuVsgyGMKVygPscVcXx0I4LxqjVhZP CBGA== X-Gm-Message-State: AOAM531tEZrKXO9/L5scoZh/YhTw5RTkR6/I1PJrm8q6+ujEaYoaf70Y VkokTCp6/Wq6B/xcBI7a+7hwC58iIXw= X-Google-Smtp-Source: ABdhPJzMLBOhuw9b6R+W6CufhycbDlYQSsGR82jzW2Tk3rdw4BoFEu6R0nIwMVwF8KAf1x7aKS7o8g== X-Received: by 2002:a2e:9115:: with SMTP id m21mr7551523ljg.350.1592807837866; Sun, 21 Jun 2020 23:37:17 -0700 (PDT) Received: from [192.168.0.88] (east.meadow.volia.net. [93.72.151.96]) by smtp.googlemail.com with ESMTPSA id s62sm2205202lja.100.2020.06.21.23.37.16 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 21 Jun 2020 23:37:16 -0700 (PDT) Subject: Re: svn commit: r362294 - head/sys/dev/sound/pci/hda To: Konstantin Belousov Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org References: <202006180612.05I6C6EE013037@repo.freebsd.org> <20200621215945.GA2057@kib.kiev.ua> From: Andriy Gapon Openpgp: preference=signencrypt Autocrypt: addr=avg@FreeBSD.org; prefer-encrypt=mutual; keydata= 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 Message-ID: Date: Mon, 22 Jun 2020 09:37:15 +0300 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:60.0) Gecko/20100101 Firefox/60.0 Thunderbird/60.9.0 MIME-Version: 1.0 In-Reply-To: <20200621215945.GA2057@kib.kiev.ua> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 49r0801StVz4F48 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=none; spf=pass (mx1.freebsd.org: domain of agapon@gmail.com designates 209.85.208.195 as permitted sender) smtp.mailfrom=agapon@gmail.com X-Spamd-Result: default: False [-2.25 / 15.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; RCVD_TLS_ALL(0.00)[]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; R_SPF_ALLOW(-0.20)[+ip4:209.85.128.0/17:c]; MID_RHS_MATCH_FROM(0.00)[]; MIME_GOOD(-0.10)[text/plain]; DMARC_NA(0.00)[FreeBSD.org]; NEURAL_HAM_LONG(-0.96)[-0.959]; TO_DN_SOME(0.00)[]; RCVD_COUNT_THREE(0.00)[3]; TO_MATCH_ENVRCPT_SOME(0.00)[]; NEURAL_HAM_SHORT(-0.33)[-0.329]; RCVD_IN_DNSWL_NONE(0.00)[209.85.208.195:from]; NEURAL_HAM_MEDIUM(-0.96)[-0.964]; FREEMAIL_TO(0.00)[gmail.com]; FORGED_SENDER(0.30)[avg@FreeBSD.org,agapon@gmail.com]; RWL_MAILSPIKE_POSSIBLE(0.00)[209.85.208.195:from]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:15169, ipnet:209.85.128.0/17, country:US]; FROM_NEQ_ENVFROM(0.00)[avg@FreeBSD.org,agapon@gmail.com]; FREEMAIL_ENVFROM(0.00)[gmail.com]; RECEIVED_SPAMHAUS_PBL(0.00)[93.72.151.96:received] X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Jun 2020 06:37:21 -0000 On 22/06/2020 00:59, Konstantin Belousov wrote: > This commit (or rather, a merge of this commit to stable/12) causes an issue > on my Apollo Lake machine. Look: > hdac0@pci0:0:14:0: class=0x040300 card=0xa1821458 chip=0x5a988086 rev=0x0b hdr=0x00 > vendor = 'Intel Corporation' > device = 'Celeron N3350/Pentium N4200/Atom E3900 Series Audio Cluster' > class = multimedia > subclass = HDA > bar [10] = type Memory, range 64, base 0x91410000, size 16384, enabled > bar [20] = type Memory, range 64, base 0x91000000, size 1048576, enabled > cap 01[50] = powerspec 3 supports D0 D3 current D0 > cap 09[80] = vendor (length 20) Intel cap 15 version 0 > cap 05[60] = MSI supports 1 message, 64 bit > > DMAP base is 0xfffff80000000000. > tom% sudo /usr/local/bin/kgdb ~/work/DEV/svn/RELENG_12/sys/amd64/compile/TOM/kernel.full /dev/mem > GNU gdb (GDB) 9.2 [GDB v9.2 for FreeBSD] > Reading symbols from /usr/home/kostik/work/DEV/svn/RELENG_12/sys/amd64/compile/TOM/kernel.full... > ... > sched_switch (td=0xfffff8029d516000, newtd=0xfffff800025f4000, > flags=) at ../../../kern/sched_ule.c:2143 > 2143 cpuid = PCPU_GET(cpuid); > (kgdb) p/x *(unsigned int *)(0xfffff80000000000+0x91410000+0x24) INTSTS > $1 = 0xc0000000 > This causes the first interrupt handler to loop forever. > > And this is why: > (kgdb) p/x *(unsigned char *)(0xfffff80000000000+0x91410000+0x5d) RIRBSTS > $3 = 0x0 > (kgdb) p/x *(unsigned char *)(0xfffff80000000000+0x91410000+0x4d) CORBSTS > $4 = 0x0 > (kgdb) p/x *(unsigned short *)(0xfffff80000000000+0x91410000+0xe) WAKESTS > $5 = 0x5 > So the SDIN State Change status bit is set, and nothing in the driver > clears it, it seems. > > More, the EDS specifies that another reason for INTSTS CIS bit set may > be the CORB Memory Error Indication (CMEI), and again it seems that driver > never clears the reason. > > So as is the change perhaps helps for some situations, but also > practically makes some systems to loose core in tight loop with interrupt > priority, which causes weird machine misbehavior like unkillable processes > and never finishing epochs. Kostik, thank you for the report and the debugging! It seems that the driver currently does do not much with the register 0xe (referred to by you as WAKESTS, by the code and the HDA specification as STATESTS). I think that we can just clear that register (documented as RW1C) More, I am surprised that the driver does not clear the register in hdac_attach2() when probing codecs. So, maybe something like a quick patch below. Also, I see that the driver never explicitly manages WAKEEN register. I think that it should. If we do not need or do not expect any wake events then we should clear the corresponding bits. So, maybe it would be better to just zero WAKEEN in attach and resume methods. Although, WAKEEN is documented as zero after reset, the specification has this note: These bits are only cleared by a power-on reset. Software must make no assumptions about how these bits are set and set them appropriately. Regarding CMEI, we never enable it by setting CMEIE and it should be zero after reset. So, we should never get that interrupt. The same applies to another potential interrupt source, RIRBOIS / RIRBOIC. Index: sys/dev/sound/pci/hda/hdac.c =================================================================== --- sys/dev/sound/pci/hda/hdac.c (revision 362383) +++ sys/dev/sound/pci/hda/hdac.c (working copy) @@ -312,6 +312,10 @@ hdac_one_intr(struct hdac_softc *sc, uint32_t ints /* Was this a controller interrupt? */ if (intsts & HDAC_INTSTS_CIS) { + /* XXX just clear SDIWAKE bits. */ + HDAC_WRITE_2(&sc->mem, HDAC_STATESTS, + HDAC_STATESTS_SDIWAKE_MASK); + rirbsts = HDAC_READ_1(&sc->mem, HDAC_RIRBSTS); /* Get as many responses that we can */ while (rirbsts & HDAC_RIRBSTS_RINTFL) { @@ -1530,6 +1534,7 @@ hdac_attach2(void *arg) device_printf(sc->dev, "Scanning HDA codecs ...\n"); ); statests = HDAC_READ_2(&sc->mem, HDAC_STATESTS); + HDAC_WRITE_2(&sc->mem, HDAC_STATESTS, statests); hdac_unlock(sc); for (i = 0; i < HDAC_CODEC_MAX; i++) { if (HDAC_STATESTS_SDIWAKE(statests, i)) { -- Andriy Gapon