Received: by 10.223.185.116 with SMTP id b49csp1874566wrg; Sun, 4 Mar 2018 12:06:48 -0800 (PST) X-Google-Smtp-Source: AG47ELsVLu1ty4nFfM+aeJGpZFW2gWVrk9hdqOYgjlk6/1Q0OrkY0HkAtYh5BJIx8DzaTuanJO98 X-Received: by 2002:a17:902:858c:: with SMTP id e12-v6mr11012767plo.39.1520194007887; Sun, 04 Mar 2018 12:06:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520194007; cv=none; d=google.com; s=arc-20160816; b=piAhqFVdO+5LDv142dY1BysjBTat2aVFrATW6+aljlo0fIJPHGwIywJceJcM/7hiv4 yKZLNfqiTItPxj6O7x8N9QeyXZzKKqV6Dvj/ShX6GwWaA+L4L0A/54gCXMM2Az7rJypx CZhTUHNN0PBFC/aARkO9hIVq84wzPBwEyCQhD2azDHCnBRP9kkD5eVnMyKpW2NimTuBo xFN4EeH8dStOPG8UeYqtfe7lRM+Jxng34uWVHMo5q56nt8rLkN2eCGR1f7FXbJfsb3rM A6OWligBVHTYRTs4Bww1OSMGS3Lj8iB8xkq9XfNCMWZUk9sVeXimsa0xGB44d86z1aYI xD5w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-transfer-encoding:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature :arc-authentication-results; bh=A5Qhaaz4TL0kIc7c+WGpNvQuD0kjYqnl5Kn0lxKAByc=; b=OXFRBCzQswzHmLCnhxtTrgahreGd0vrmyISvBqlopRcGxIOMky195gE/u/t46UAPgM kywgsVsFJGX0vqQHA3e2WCQHqiF1wvFUHCjizwlGiAdPCuTO269zzG321M64ECuisYCU aFJ9MbfpsJMB+aEougqNJQwi+2G3QQwfOwcJjaPLVnAlYmeizHNNK/0Ty6NHUQDW7Ehf ChfPH2tJviss+maNBzsAt7YI2166wbLgwzfOvxYueqsUm0/p751ZUAYsMxCzS5lrPY11 /QpPCYgP9LLhld1d39O0vKunHVDe+biArOCWBBD1spFBERQ2W6Ac+8Gfy8ZI8OSWJpuH dtHw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kempniu.pl header.s=google header.b=lcakx/NY; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=kempniu.pl Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id bb6-v6si8043997plb.512.2018.03.04.12.06.33; Sun, 04 Mar 2018 12:06:47 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kempniu.pl header.s=google header.b=lcakx/NY; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=kempniu.pl Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932120AbeCDT5f (ORCPT + 99 others); Sun, 4 Mar 2018 14:57:35 -0500 Received: from mail-lf0-f52.google.com ([209.85.215.52]:44163 "EHLO mail-lf0-f52.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751848AbeCDT5c (ORCPT ); Sun, 4 Mar 2018 14:57:32 -0500 Received: by mail-lf0-f52.google.com with SMTP id v9so20069445lfa.11 for ; Sun, 04 Mar 2018 11:57:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kempniu.pl; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=A5Qhaaz4TL0kIc7c+WGpNvQuD0kjYqnl5Kn0lxKAByc=; b=lcakx/NYGHhCyan6Q9Zd1WulCR9IU6CmwYBk7+F7p8ClcP/LdgKvlDTrXaaYmjMmKp 7fdr1KKagk+NqVwmgqlNFvODwV+EhmtGH81X56vlefDyhTaA44fZ1FMXvtwXEANJY97a LRGjU3pysXWqu+zEGZrZ8Jrro1bp3Jvj0hHmw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to:user-agent; bh=A5Qhaaz4TL0kIc7c+WGpNvQuD0kjYqnl5Kn0lxKAByc=; b=KNuVqPWQ0I+tY2EGXMmnMgzOuAS5tjqyGyTTj1/PBWrcHpPICDK+LnsiHDVRkvMvtW MmWC/E16trL8osdrsJK+5/jifH18YJ9O13Mf5/Q0tEu9u7PqqBNYMB5S6YCvFu1eDafK JrnSnY+8UEHiWXkn3oXNiDATmbKyi4kdjmSt/XR3baUhL7zp2XolhyzPISFMCN47dHJE ncpFAd7lgLiZ1CdBgvCyWlZzZTUl7UIfh+L48s+dXBe+p/wUVDGxvAo7CXGh7iLTrozg yKbcgS0byd0w8vah4a1VKcE83y2N6olC1YlqSpFo4RT8STSTdrP29+EqY8SX5d2PdN6b s9tQ== X-Gm-Message-State: APf1xPAl64QFuCyPvpNCU+TVe/2OXSIRbVChjSTpQS/OepAGMrQsZ7eD zexhZbcbvceHOa0DbweiqLKEwg== X-Received: by 10.46.33.230 with SMTP id h99mr8685619lji.47.1520193450491; Sun, 04 Mar 2018 11:57:30 -0800 (PST) Received: from kmp-mobile.hq.kempniu.pl (kmp-mobile.hq.kempniu.pl. [2001:470:64df:111::d0d7]) by smtp.gmail.com with ESMTPSA id n18sm2409730lfh.24.2018.03.04.11.57.29 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 04 Mar 2018 11:57:29 -0800 (PST) Date: Sun, 4 Mar 2018 20:57:28 +0100 From: =?utf-8?B?TWljaGHFgiBLxJlwaWXFhA==?= To: Andy Shevchenko Cc: Jonathan Woithe , Darren Hart , Andy Shevchenko , Platform Driver , Linux Kernel Mailing List Subject: Re: [PATCH 6/7] platform/x86: fujitsu-laptop: More accurately represent the hotkey ring buffer managed by firmware Message-ID: <20180304195728.GB1428@kmp-mobile.hq.kempniu.pl> References: <20180227211539.5708-1-kernel@kempniu.pl> <20180227211539.5708-7-kernel@kempniu.pl> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.9.3 (2018-01-21) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > On Tue, Feb 27, 2018 at 11:15 PM, Michał Kępień wrote: > > The MAX_HOTKEY_RINGBUFFER_SIZE constant is set to 100, which allows up > > to 100 hotkey events to be drained from the firmware ring buffer upon > > module load. However, no known firmware is capable of holding more than > > 16 hotkey events in its internal ring buffer: > > > The RINGBUFFERSIZE constant is set to 40, which allows the module to > > queue up to 40 hotkey events for delivery to user space. As this value > > seems arbitrarily chosen and 16 should be more than enough for any > > practical use case, merge the two aforementioned constants into one > > (HOTKEY_RINGBUFFER_SIZE) in order to simplify code and more accurately > > represent the underlying data structure. > > > +#define HOTKEY_RINGBUFFER_SIZE 16 > > This need the comment or a > > BUILD_BUG_ON(!is_power_of_2(...)); Okay, I will probably take the comment route in v2. > > - ret = kfifo_alloc(&priv->fifo, RINGBUFFERSIZE * sizeof(int), > > + ret = kfifo_alloc(&priv->fifo, HOTKEY_RINGBUFFER_SIZE * sizeof(int), > > GFP_KERNEL); > > > while (call_fext_func(device, FUNC_BUTTONS, OP_GET_EVENTS, > > 0x0, 0x0) != 0 && > > - i++ < MAX_HOTKEY_RINGBUFFER_SIZE) > > + i++ < HOTKEY_RINGBUFFER_SIZE) > > ; /* No action, result is discarded */ > > This looks horrible. It sure does! Hence patch 7/7, which does the following: - while (call_fext_func(device, FUNC_BUTTONS, OP_GET_EVENTS, - 0x0, 0x0) != 0 && + while (fext_buttons(device, OP_GET_EVENTS, 0x0, 0x0) != 0 && i++ < HOTKEY_RINGBUFFER_SIZE) In other words, patch 6/7 is just a stopover on the way to shorten current module code: - while (call_fext_func(device, FUNC_BUTTONS, 0x1, 0x0, 0x0) != 0 && - i++ < MAX_HOTKEY_RINGBUFFER_SIZE) + while (fext_buttons(device, OP_GET_EVENTS, 0x0, 0x0) != 0 && + i++ < HOTKEY_RINGBUFFER_SIZE) > > while ((irb = call_fext_func(device, FUNC_BUTTONS, OP_GET_EVENTS, > > 0x0, 0x0)) != 0 && > > - i++ < MAX_HOTKEY_RINGBUFFER_SIZE) { > > + i++ < HOTKEY_RINGBUFFER_SIZE) { > > Ditto. Similarly, patch 7/7 does the following: - while ((irb = call_fext_func(device, FUNC_BUTTONS, OP_GET_EVENTS, - 0x0, 0x0)) != 0 && + while ((irb = fext_buttons(device, OP_GET_EVENTS, 0x0, 0x0)) != 0 && i++ < HOTKEY_RINGBUFFER_SIZE) { The diff against current module code is thus: - while ((irb = call_fext_func(device, - FUNC_BUTTONS, 0x1, 0x0, 0x0)) != 0 && - i++ < MAX_HOTKEY_RINGBUFFER_SIZE) { + while ((irb = fext_buttons(device, OP_GET_EVENTS, 0x0, 0x0)) != 0 && + i++ < HOTKEY_RINGBUFFER_SIZE) { -- Best regards, Michał Kępień