All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <gregkh@linuxfoundation.org>
To: "Grumbach, Emmanuel" <emmanuel.grumbach@intel.com>
Cc: "kvalo@codeaurora.org" <kvalo@codeaurora.org>,
	"linux-wireless@vger.kernel.org" <linux-wireless@vger.kernel.org>,
	"luca@coelho.fi" <luca@coelho.fi>,
	"Beker, Ayala" <ayala.beker@intel.com>,
	"Coelho, Luciano" <luciano.coelho@intel.com>
Subject: Re: [PATCH RESEND 2/3] iwlwifi: mei: add the driver to allow cooperation with CSME
Date: Mon, 12 Apr 2021 16:18:28 +0200	[thread overview]
Message-ID: <YHRWtJqbuFGmR2Sw@kroah.com> (raw)
In-Reply-To: <SA0PR11MB475215678ADCCE657C6574D6F2709@SA0PR11MB4752.namprd11.prod.outlook.com>

On Mon, Apr 12, 2021 at 01:44:58PM +0000, Grumbach, Emmanuel wrote:
> > > +#define IWL_MEI_DEBUG(c, f, a...)		\
> > > +	do {					\
> > > +		CHECK_FOR_NEWLINE(f);		\
> > 
> > Huh?
> > 
> > > +		dev_dbg(&(c)->dev, f, ## a);	\
> > 
> > Just use dev_dbg(), don't be special for a single driver, it hurts when trying to
> > read different drivers.
> 
> I took this from iwlwifi. I can change if needed, not a big deal.

Please do.

> > > +module_param_named(defer_start_message, defer_start_message,
> > bool,
> > > +0644); MODULE_PARM_DESC(defer_start_message,
> > > +		 "Defer the start message Tx to CSME (default false)");
> > 
> > Why do you need this?  Who is going to set it to anything else, and why
> > would they?  This isn't the 1990's anymore, please do not add new module
> > parameters.
> 
> For testing. I need this to be able to force a certain order of initialization which is possible (and hence must be tested) but not likely to happen.
> Another point is tracing. This allows me to load the module but prevent any real operation. Then, start tracing. This way, I can see the whole flow in tracing, even the very beginning.

Then call this something obvious,
"kernel_hacker_debuging_testing_only_use_if_you_know_what_you_are_doing".

Or better yet, just put it in debugfs to turn it on/off and no module
parameter is needed at all.

> > > +	if (WARN_ON(rd > q_sz || wr > q_sz))
> > > +		return -EINVAL;
> > 
> > If any of the WARN_ON() things in this driver can ever trigger, just handle
> > them normally and do NOT call WARN_ON() as you just rebooted the box for
> > a simple thing that you could have recovered from.
> 
> My understanding is that WARN_ON does not reboot the box which is why it was invented when we already had BUG_ON. This can't be triggered by the user space, but can be triggered by the CSME firmware that runs on the chipset.

when panic_on_warn is enabled, the box will reboot.

If firmware can cause this, then properly handle the issue and continue
on, don't reboot machines.

> > Some of these WARN_ON() in the code feel very lazy as you control the
> > caller so you "know" that this will never happen.  So don't leave them in, it's
> > debugging code that you can now remove.
> 
> I can transform them in error prints, but again, my understanding is / was that WARN_ON is ok to use and won't reboot the box since it differs from BUG_ON.

Again, panic_on_warn.

> > > +
> > > +	IWL_MEI_DEBUG(cldev, "Got CSME filters\n");
> > 
> > ftrace is your friend, remove these pointless "the code got here!"
> > lines.  You have loads of them...
> 
> This is debug. Won't appear unless you want it.
> I have extensive tracing support.

Again, use ftrace for tracing, don't use debug print messages.

> > > +static void iwl_mei_handle_rx_host_own_req(struct mei_cl_device
> > *cldev,
> > > +					   const struct iwl_sap_msg_dw *dw)
> > {
> > > +	struct iwl_mei *mei = mei_cldev_get_drvdata(cldev);
> > > +
> > > +	IWL_MEI_DEBUG(cldev, "Got ownership req response: %d\n", dw-
> > >val);
> > 
> > Code got here!  :(
> 
> Same, this is protected by a dynamic debug knob.
> I can see tons of those in mei bus driver .
> $ git grep _dbg\( -- drivers/misc/mei | wc -l
> 228

mei should be fixed as well.

> > > +
> > > +	if (!dw->val) {
> > > +		IWL_MEI_INFO(cldev, "Ownership req denied\n");
> > 
> > why?????
> > 
> > > +		return;
> > 
> > No error returned?
> 
> This is not an error. This means that the CSME firmware is not allowing the host to use the WLAN device.

Ok, and what can a user do about this?

> > > +	if (!netdev) {
> > > +		IWL_MEI_INFO(cldev, "No netdevice, dropping the Tx
> > packet\n");
> > 
> > quiet!!!
> 
> This is actually not a usual path. A race is happening here...

"race" implies "error" which is not "dev_info()" material.

> > Or at the least, make this an error so that a user can handle it properly.  They
> > can do something about this, right?  If not, why did you just tell them this
> > happened?
> 
> There isn't much I can do here. The CSME firmware is sending a packet
> to iwlmei to send on the WLAN link, but the link isn't valid anymore.

Then report an error.

> > > +		if (le16_to_cpu(hdr.type) != SAP_MSG_DATA_PACKET) {
> > > +			IWL_MEI_INFO(cldev, "Unsupported message: type
> > %d, len %d\n",
> > > +				     le16_to_cpu(hdr.type), len);
> > 
> > So userspace can spam the kernel log?
> 
> This is not userspace, this is the CSME firmware.

Then make it an error, not an informational message.  Someone needs to
see it to fix the firmware, right?

> > Please revisit _ALL_ of your messages you are printing out here, it feels way
> > way way too noisy, like you got the code up and working with the debug lines
> > in it and forgot to remove it.
> 
> [   12.665966] iwlmei 0000:00:16.0-13280904-7792-4fcb-a1aa-5e70cbb1e865: Got a valid SAP_ME_MSG_START_OK from CSME firmware
> 
> That's the only line I am printing by default. I can remove it. I can't do better than 0 printing.

0 printing would be good.

> > > +}
> > > +
> > > +#else
> > > +
> > > +static void iwl_mei_dbgfs_register(struct iwl_mei *mei) {} static
> > > +void iwl_mei_dbgfs_unregister(struct iwl_mei *mei) {}
> > 
> > This type of thing goes in a .h file, you know better.
> 
> A header file only for less a handful of functions?

You already have .h files for this code, why not put it in there?

thanks,

greg k-h

  reply	other threads:[~2021-04-12 14:18 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-12 12:43 [PATCH RESEND 1/3] mei: bus: add client dma interface Emmanuel Grumbach
2021-04-12 12:43 ` [PATCH RESEND 2/3] iwlwifi: mei: add the driver to allow cooperation with CSME Emmanuel Grumbach
2021-04-12 13:06   ` Greg KH
2021-04-12 13:44     ` Grumbach, Emmanuel
2021-04-12 14:18       ` Greg KH [this message]
2021-04-12 14:29         ` Grumbach, Emmanuel
2021-04-12 14:35           ` Greg KH
2021-04-12 14:46             ` Grumbach, Emmanuel
2021-04-12 15:09               ` Greg KH
2021-04-12 12:43 ` [PATCH RESEND 3/3] iwlwifi: integrate with iwlmei Emmanuel Grumbach
2021-04-12 13:09   ` Greg KH
2021-04-12 18:16   ` kernel test robot
2021-04-12 13:09 ` [PATCH RESEND 1/3] mei: bus: add client dma interface Greg KH
2021-04-20 17:27 ` [PATCH v2 " Emmanuel Grumbach
2021-04-20 17:27   ` [PATCH v2 2/3] iwlwifi: mei: add the driver to allow cooperation with CSME Emmanuel Grumbach
2021-05-13 18:56     ` Greg KH
2021-04-20 17:27   ` [PATCH v2 3/3] iwlwifi: integrate with iwlmei Emmanuel Grumbach
2021-05-12  5:49   ` [PATCH v2 1/3] mei: bus: add client dma interface Emmanuel Grumbach
2021-05-12  6:02     ` Greg KH
2021-05-13 18:57   ` Greg KH
2021-05-21  8:51   ` Luca Coelho
2021-05-21  8:55     ` Coelho, Luciano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YHRWtJqbuFGmR2Sw@kroah.com \
    --to=gregkh@linuxfoundation.org \
    --cc=ayala.beker@intel.com \
    --cc=emmanuel.grumbach@intel.com \
    --cc=kvalo@codeaurora.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=luca@coelho.fi \
    --cc=luciano.coelho@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.