From owner-freebsd-hackers@freebsd.org Thu May 3 11:50:35 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 101A3FA7E90 for ; Thu, 3 May 2018 11:50:35 +0000 (UTC) (envelope-from agapon@gmail.com) Received: from mail-lf0-f50.google.com (mail-lf0-f50.google.com [209.85.215.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 6934085AA8 for ; Thu, 3 May 2018 11:50:34 +0000 (UTC) (envelope-from agapon@gmail.com) Received: by mail-lf0-f50.google.com with SMTP id u21-v6so25513901lfu.9 for ; Thu, 03 May 2018 04:50:34 -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=06gyRjDcvod3PiATs6U+zltm4xeDely4FS3OhC31dVk=; b=pkxU+Zm4ZNqEmIrKjw4260PjsU/PdvNaaC8GUlroLX3QXoZzs1t3o5U3agftPfEvFw +3YST0ZxZSmfEIqDf1CqmPtnnMDAjo8k5BQckBfIBkW0NqUYTZZ8bgAp2p/RRf46P315 HXaCczdxr6B4xuvNW/dgdGMzSDESKEZExzqyTjuLSlMTrNWf0U5lt8joQP5YtimlNEMI pyEgrmqyxAKga90bhNdsu8dhBDY2p2o5hX13M0m4lxKMSqGEuHOvg32tZ+RBr06I50zq v/FSXUDir2N7gw5jmQlnbu7x/zuno3AroPz6ojEnPJerqOrGVOmkfrMV3WYju1qkfgI2 lPXQ== X-Gm-Message-State: ALQs6tAU+hBLYEDVNh1KkXFM2jBPlNIqfKS7cbVVx2WFauMRs1D8pecy X9hjj2DfDSjimfxSe7J6Av5AHuJZ X-Google-Smtp-Source: AB8JxZq7NJaF767Ng8X7FT5H8llkNEpv2IDA9C//WBxq+2exFBgr0IJWIwK7FgRwXzImMjWuZWuFZA== X-Received: by 2002:a2e:2a45:: with SMTP id q66-v6mr10132117ljq.40.1525348232480; Thu, 03 May 2018 04:50:32 -0700 (PDT) Received: from [192.168.0.88] (east.meadow.volia.net. [93.72.151.96]) by smtp.googlemail.com with ESMTPSA id n76-v6sm2746510lja.31.2018.05.03.04.50.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 May 2018 04:50:31 -0700 (PDT) Subject: Re: hpet vs suspend to ram To: Konstantin Belousov Cc: "freebsd-hackers@freebsd.org" References: <8d3f5a6f-f2be-f2e1-18d5-f774f4909694@icyb.net.ua> <20180503095558.GJ6887@kib.kiev.ua> From: Andriy Gapon Openpgp: preference=signencrypt Autocrypt: addr=avg@FreeBSD.org; prefer-encrypt=mutual; keydata= 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 Message-ID: <18935a5e-cd60-a434-f226-1c4ab258c044@FreeBSD.org> Date: Thu, 3 May 2018 14:50:30 +0300 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: <20180503095558.GJ6887@kib.kiev.ua> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 11:50:35 -0000 On 03/05/2018 12:55, Konstantin Belousov wrote: > On Thu, May 03, 2018 at 11:40:24AM +0300, Andriy Gapon wrote: >> >> Just want to share a strange problem that I see on one system. >> >> If I use HPET as an eventtimer, then after a seemingly successful resume >> the system starts to act weird. It becomes unresponsive for periods of >> time, then it gets more normal, then it's sluggish, then unresponsive >> again. After some time struggling the system finally locks up entirely. >> >> I see this problem both with FreeBSD and Linux (tested with Ubuntu 16 >> and 17). >> >> If I use any other timer hardware, then everything is okay. >> Also, if I switch to HPET after a resume, then it's okay too. >> I tried uncommenting the code in acpi_hpet.c that disables the HPET >> before suspend, but it didn't change anything. >> >> I suspect that the problem is with SMM code, but don't know how to check >> it or whether it would make any difference. >> I also tried disabling various devices (e.g. USB) through BIOS config, but that >> also didn't help. > Did you tried to clear comparators, besides disabling the HPET ? Thank you very much for the suggestion! It seems that doing that (and a little bit more[*]) helps indeed. However there seems to be another issue. hpet_suspend() is called too early. [Some] Other drivers require a working event timer for their suspend routines. So after HPET is stopped the suspend process gets stuck. Repeatedly pressing keyboard keys helps the process to finally reach the firmware suspend. Everything is okay after resume. [*] The change: @@ -838,15 +842,29 @@ static int hpet_suspend(device_t dev) { -// struct hpet_softc *sc; + struct hpet_softc *sc; + struct hpet_timer *t; + int i; /* * Disable the timer during suspend. The timer will not lose * its state in S1 or S2, but we are required to disable * it. */ -// sc = device_get_softc(dev); -// hpet_disable(sc); + sc = device_get_softc(dev); + hpet_disable(sc); + for (i = 0; i < sc->num_timers; i++) { + t = &sc->t[i]; + + /* + * Clear timer state to minimize chances of confusing + * the firmware after resuming from S3. + */ + bus_write_4(sc->mem_res, HPET_TIMER_CAP_CNF(t->num), + t->caps & ~(HPET_TCNF_INT_ENB | HPET_TCNF_TYPE)); + bus_write_4(sc->mem_res, HPET_TIMER_COMPARATOR(t->num), 0); + bus_write_4(sc->mem_res, HPET_ISR, 1 << t->num); + } return (0); } -- Andriy Gapon