linux-acpi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Shiju Jose <shiju.jose@huawei.com>
Cc: "linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
	"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"rjw@rjwysocki.net" <rjw@rjwysocki.net>,
	"bp@alien8.de" <bp@alien8.de>,
	"james.morse@arm.com" <james.morse@arm.com>,
	"lenb@kernel.org" <lenb@kernel.org>,
	"tony.luck@intel.com" <tony.luck@intel.com>,
	"dan.carpenter@oracle.com" <dan.carpenter@oracle.com>,
	"zhangliguang@linux.alibaba.com" <zhangliguang@linux.alibaba.com>,
	"Wangkefeng (OS Kernel Lab)" <wangkefeng.wang@huawei.com>,
	"jroedel@suse.de" <jroedel@suse.de>,
	yangyicong <yangyicong@huawei.com>,
	Jonathan Cameron <jonathan.cameron@huawei.com>,
	tanxiaofei <tanxiaofei@huawei.com>,
	Linuxarm <linuxarm@huawei.com>
Subject: Re: [PATCH v9 2/2] PCI: hip: Add handling of HiSilicon HIP PCIe controller errors
Date: Tue, 16 Jun 2020 15:41:02 +0300	[thread overview]
Message-ID: <20200616124102.GS2428291@smile.fi.intel.com> (raw)
In-Reply-To: <997bd6a17f54433dbdd2c43155682bdd@huawei.com>

On Tue, Jun 16, 2020 at 11:55:46AM +0000, Shiju Jose wrote:
> >From: linux-acpi-owner@vger.kernel.org [mailto:linux-acpi-
> >owner@vger.kernel.org] On Behalf Of Andy Shevchenko
> >On Tue, Jun 16, 2020 at 09:12:56AM +0000, Shiju Jose wrote:
> >> >From: Andy Shevchenko [mailto:andriy.shevchenko@linux.intel.com]
> >> >On Mon, Jun 15, 2020 at 11:15:52AM +0100, Shiju Jose wrote:

...

> >> >> +#define HISI_PCIE_CORE_PORT_ID(v)        (((v) % 8) << 1)
> >> >
> >> >% -> & ?
> >> (((v) % 8) << 1) is correct. We can make bit operation instead.
> >
> >y % x is usually being used when we consume y / x or in cases when y is
> >advanced and we need to keep it under some threshold.
> >
> >Here it's not obvious to me, and usual pattern is to use bitwise operations.
> >
> >In any case some clarification is needed.
> We want (v % 8) * 2 here to get the core port id, a numerical value but not a bit mask.
> Maybe you want us to use ((v) & 7) << 1? 
> please point it out if I understand wrong.

I understand the result, I do not understand the properties of v.
So, looks like
a) (v & 7) << 1 // take 3 LSBs from v and shift right to get port id pair (looks like)
b) (v % 8) * 2 // get next free port or circle over 0 if no free pair found

Add some comment explaining what's going on.

...

> >> >> +	switch (id) {
> >> >> +	case HISI_PCIE_SUB_MODULE_ID_AP: return "AP Layer";
> >> >> +	case HISI_PCIE_SUB_MODULE_ID_TL: return "TL Layer";
> >> >> +	case HISI_PCIE_SUB_MODULE_ID_MAC: return "MAC Layer";
> >> >> +	case HISI_PCIE_SUB_MODULE_ID_DL: return "DL Layer";
> >> >> +	case HISI_PCIE_SUB_MODULE_ID_SDI: return "SDI Layer";
> >> >> +	}
> >> >
> >> >match_string() ?
> >>
> >> match_string() does not work here because we need sub module id ->
> >> string conversion.
> >
> >Why? Are you using non-sequential (a.k.a. sparse) values?
> These are the sequential values.
> I mean in this case we do not have the third parameter to the match_string(),
> string to match with the strings in the array,
> we just have the value for the sub module id.
> Can you suggest some example of match_string()
> for the similar case?

Ah, I realize, this is the opposite, but still perhaps better to have like this:

static const char * const foo[] = {
	"AB",
	"CD",
};

const char *bar(int id)
{
	if (id >= ARRAY_SIZE(foo))
		return "unknown"; // whatever
	return foo[id];
}

-- 
With Best Regards,
Andy Shevchenko



  reply	other threads:[~2020-06-16 12:41 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-15 10:15 [PATCH v9 2/2] PCI: hip: Add handling of HiSilicon HIP PCIe controller errors Shiju Jose
2020-06-15 12:00 ` Andy Shevchenko
2020-06-16  9:12   ` Shiju Jose
2020-06-16  9:30     ` Andy Shevchenko
2020-06-16 11:55       ` Shiju Jose
2020-06-16 12:41         ` Andy Shevchenko [this message]
2020-06-16 12:46           ` Shiju Jose
2020-06-16 23:20 ` Bjorn Helgaas
2020-06-17  9:01   ` Andy Shevchenko

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=20200616124102.GS2428291@smile.fi.intel.com \
    --to=andriy.shevchenko@linux.intel.com \
    --cc=bp@alien8.de \
    --cc=dan.carpenter@oracle.com \
    --cc=james.morse@arm.com \
    --cc=jonathan.cameron@huawei.com \
    --cc=jroedel@suse.de \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linuxarm@huawei.com \
    --cc=rjw@rjwysocki.net \
    --cc=shiju.jose@huawei.com \
    --cc=tanxiaofei@huawei.com \
    --cc=tony.luck@intel.com \
    --cc=wangkefeng.wang@huawei.com \
    --cc=yangyicong@huawei.com \
    --cc=zhangliguang@linux.alibaba.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).