From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752114AbcBKOwn (ORCPT ); Thu, 11 Feb 2016 09:52:43 -0500 Received: from bhuna.collabora.co.uk ([46.235.227.227]:44653 "EHLO bhuna.collabora.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751665AbcBKOwi (ORCPT ); Thu, 11 Feb 2016 09:52:38 -0500 Subject: Re: [PATCH v1 2/6] mfd: cros_ec: Add MKBP event support To: gwendal@chromium.org References: <1454679181-8949-1-git-send-email-tomeu.vizoso@collabora.com> <1454679181-8949-3-git-send-email-tomeu.vizoso@collabora.com> Cc: Linux Kernel , Sameer Nanda , Benson Leung , =?UTF-8?Q?Enric_Balletb=c3=b2?= , Vic Yang , Vincent Palatin , Randall Spangler , Gwendal Grignou , Vic Yang , Olof Johansson , linux-input@vger.kernel.org, Dmitry Torokhov , Lee Jones From: Tomeu Vizoso Message-ID: <56BCA031.3010702@collabora.com> Date: Thu, 11 Feb 2016 15:52:33 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 02/05/2016 06:24 PM, Gwendal Grignou wrote: > We should not used kmalloc when get events, these functions are called > quite often. > Gwendal. > > On Fri, Feb 5, 2016 at 5:32 AM, Tomeu Vizoso > wrote: > > +static int cros_ec_get_host_command_version_mask(struct > cros_ec_device *ec_dev, > + u16 cmd, u32 *mask) > +{ > + struct ec_params_get_cmd_versions *pver; > + struct ec_response_get_cmd_versions *rver; > + struct cros_ec_command *msg; > + int ret; > + > + msg = kmalloc(sizeof(*msg) + max(sizeof(rver), sizeof(pver)), > + GFP_KERNEL); > + if (!msg) > + return -ENOMEM; > > Victor's version in https://chromium-review.googlesource.com/272954 > looks cleaner: no malloc, no need to cast rver. I agree that it looks cleaner, but how would you allocate the payload at build time if it has to be max(sizeof(*pver), sizeof(*rver))? > +static int get_next_event(struct cros_ec_device *ec_dev) > +{ > + struct cros_ec_command *msg; > + int ret; > + > + msg = kmalloc(sizeof(*msg) + sizeof(ec_dev->event_data), > GFP_KERNEL); > + if (!msg) > + return -ENOMEM; > > Same grip about malloc(). This function will be called very often when > sensors are used. Ok. > +static int get_keyboard_state_event(struct cros_ec_device *ec_dev) > +{ > + struct cros_ec_command *msg; > + > + msg = kmalloc(sizeof(*msg) + sizeof(ec_dev->event_data.data), > + GFP_KERNEL); > + if (!msg) > + return -ENOMEM; > > Given this command will be used on every key press, it is better to > pre-allocate data (like > in https://chromium-review.googlesource.com/276768) and use msg on the > stack like Victor's changes. Ok. Thanks, Tomeu