All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hanjun Guo <hanjun.guo@linaro.org>
To: ahs3@redhat.com, Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
	Gabriele Paoloni <gabriele.paoloni@huawei.com>
Cc: Marc Zyngier <marc.zyngier@arm.com>,
	John Garry <john.garry@huawei.com>,
	"Guohanjun (Hanjun Guo)" <guohanjun@huawei.com>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	"Yimin (Leo)" <yimin@huawei.com>,
	Greg KH <gregkh@linuxfoundation.org>,
	Linuxarm <linuxarm@huawei.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Sinan Kaya <okaya@codeaurora.org>,
	"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
	Tomasz Nowicki <tn@semihalf.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"majun (F)" <majun258@huawei.com>,
	dvhart@infradead.org
Subject: Re: [PATCH v9 15/15] irqchip: mbigen: Add ACPI support
Date: Tue, 28 Mar 2017 04:23:46 +0800	[thread overview]
Message-ID: <58D974D2.7060809@linaro.org> (raw)
In-Reply-To: <6ea7e293-bde4-3c22-a987-cec1843da39b@redhat.com>

Hi Al,

Thanks for your feedback, reply inline.

On 03/28/2017 02:56 AM, Al Stone wrote:
> On 03/27/2017 09:27 AM, Lorenzo Pieralisi wrote:
>> [+Al,Darren to comment on _DSD review process]
>>
>> On Mon, Mar 27, 2017 at 12:24:45PM +0000, Gabriele Paoloni wrote:
>>> Hi Marc Many thanks for your comments
>>>> Hanjun, John,
>>>>
>>>> On 22/03/17 14:12, John Garry wrote:
>>>>> On 21/03/2017 14:45, Lorenzo Pieralisi wrote:
>>>>>> On Tue, Mar 07, 2017 at 08:40:10PM +0800, Hanjun Guo wrote:
>>>>>>> From: Hanjun Guo <hanjun.guo@linaro.org>
>>>>>>>
>>>>>>> With the preparation of platform msi support and interrupt producer
>>>>>>> in DSDT, we can add mbigen ACPI support now.
>>>>>>>
>>>>>>> We are using Interrupt resource type in _CRS methd to indicate
>>>> number
>>>>>>> of irq pins instead of num_pins in DT to avoid _DSD usage in this
>>>> case.
>>>>>>>
>>>>>>> For mbigen,
>>>>>>>      Device(MBI0) {
>>>>>>>            Name(_HID, "HISI0152")
>>>>>>>            Name(_UID, Zero)
>>>>>>>            Name(_CRS, ResourceTemplate() {
>>>>>>>                    Memory32Fixed(ReadWrite, 0xa0080000, 0x10000)
>>>>>>> 		  Interrupt(ResourceProducer,...) {12,14,....}
>>>>>>
>>>>>> What do these interrupt numbers represent ? This looks wrong to me.
>>>>>> An interrupt descriptor is there to describe the interrupts a device
>>>>>> can generate; you are using it just to add a "standard" (that is
>>>>>> not standard at all) way of counting the number of vectors allocated
>>>>>> to this specific chip and that's just wrong.
>>>>>>
>>>>>
>>>>> As I understand, the count of interrupts we are declaring for the
>>>> mbigen
>>>>> is the same as the sum of interrupts for that mbigen's children.
>>>>>
>>>>> So at the point we probe the mbigen, can we just deference the
>>>> children
>>>>> to count their interrupts, and use this as the #msis?
>>>>>
>>>>>> Can't you use something like Agustin did in the QCOM combiner:
>>>>>>
>>>>>> drivers/irqchip/qcom-irq-combiner.c
>>>>>>
>>>>>> to detect the MSI vector length (ie by describing the MBIgen through
>>>>>> generic registers and use the bit width to compute the vector
>>>>>> lenght) ? I am not sure how feasible it is given that my knowledge
>>>>>> of MBIgen is pretty poor.
>>>>>>
>>>>>> I understand we want to avoid _DSD properties but we should not
>>>>>> work around standard bindings to achieve that goal.
>>>>>>
>>>>>
>>>>> We use "num-pins" for dt solution, but it is not so welcome here.
>>>>
>>>> Well, this device is already completely out of any standard description
>>>> on the ACPI side. And given that it bloats both the ACPI tables and the
>>>> kernel data structures, I can only suggest that you take advantage of
>>>> _DSD here, as misusing the standard properties is not something that we
>>>> should condone. It will also make the driver more manageable, as it
>>>> will
>>>> use similar properties on both firmware implementations.
>>>>
>>>> I feel like I need to stress the urgency here. We're at -rc4, and still
>>>> with unsolved issues. None of us want to miss the next merge window.
>>>>
>>>
>>> As follow up our guys would work on a solution whose ACPI table looks
>>> like the following one:
>>>
>>> For mbigen,
>>>      Device(MBI0) {
>>>            Name(_HID, "HISI0152")
>>>            Name(_UID, Zero)
>>>            Name(_CRS, ResourceTemplate() {
>>>                    Memory32Fixed(ReadWrite, 0xa0080000, 0x10000)
>>>            })
>>>
>>>      Name(_DSD, Package () {
>>>        ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
>>>        Package ()
>>>        {
>>>          Package () {"num-pins", xxx}
>>>        }
>>>      })
>>>      }
>
> Please fix the indentation here; the ASL parser doesn't care, but I don't
> see '}'s as clearly as it does :).  In particular, _DSD usage *must* be for
> a device and it does not look like that if one doesn't carefully count all
> the parentheses and braces.

I will fix it :)

>
>>>
>>> For devices,
>>>     Device(COM0) {
>>>            Name(_HID, "ACPIIDxx")
>>>            Name(_UID, Zero)
>>>            Name(_CRS, ResourceTemplate() {
>>>                   Memory32Fixed(ReadWrite, 0xb0030000, 0x10000)
>>> 		 Interrupt(ResourceConsumer,..., "\_SB.MBI0") {12}
>>>            })
>>>      }
>>>
>>>
>>> Marc, Lorenzo if you are ok with the above we will submit v10 based on this...
>>
>> I am ok with it. I am not 100% up-to-date on what's the status on _DSD
>> bindings/review/guidelines but it would be certainly a good idea to
>> kickstart the process for MBIgen which basically means following this
>> as far as I know (and post to the relevant mailing list):
>>
>> https://github.com/ahs3/dsd/blob/master/documentation/process_rules.txt
>
> So, let's correct this bit: consider that URL deprecated, please, and refer
> instead to the text that was agreed upon and in the kernel tree:
>
> 	Documentation/acpi/DSD-properties-rules.txt
>
>> Al and Darren may add to that as they have more insights.
>
> Since this use of _DSD is very specific to this device, and this device
> only, I don't have any real objections.

Thanks for the confirmation.

> I will say that "num-pins" is
> not terribly descriptive so it would be really good to either use a much
> more descriptive name or add plenty of commentary in the code -- and
> preferably both.  I would recommend including the ASL in the code comments,
> with a description of how the property is to be used and what it means.

"num-pins" is used for mbigen DT support:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/interrupt-controller/hisilicon,mbigen-v2.txt

I think we can use the name unchanged and adding more comments
as you suggested, will cc you for this updated patch.

Thanks
Hanjun

WARNING: multiple messages have this Message-ID (diff)
From: hanjun.guo@linaro.org (Hanjun Guo)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v9 15/15] irqchip: mbigen: Add ACPI support
Date: Tue, 28 Mar 2017 04:23:46 +0800	[thread overview]
Message-ID: <58D974D2.7060809@linaro.org> (raw)
In-Reply-To: <6ea7e293-bde4-3c22-a987-cec1843da39b@redhat.com>

Hi Al,

Thanks for your feedback, reply inline.

On 03/28/2017 02:56 AM, Al Stone wrote:
> On 03/27/2017 09:27 AM, Lorenzo Pieralisi wrote:
>> [+Al,Darren to comment on _DSD review process]
>>
>> On Mon, Mar 27, 2017 at 12:24:45PM +0000, Gabriele Paoloni wrote:
>>> Hi Marc Many thanks for your comments
>>>> Hanjun, John,
>>>>
>>>> On 22/03/17 14:12, John Garry wrote:
>>>>> On 21/03/2017 14:45, Lorenzo Pieralisi wrote:
>>>>>> On Tue, Mar 07, 2017 at 08:40:10PM +0800, Hanjun Guo wrote:
>>>>>>> From: Hanjun Guo <hanjun.guo@linaro.org>
>>>>>>>
>>>>>>> With the preparation of platform msi support and interrupt producer
>>>>>>> in DSDT, we can add mbigen ACPI support now.
>>>>>>>
>>>>>>> We are using Interrupt resource type in _CRS methd to indicate
>>>> number
>>>>>>> of irq pins instead of num_pins in DT to avoid _DSD usage in this
>>>> case.
>>>>>>>
>>>>>>> For mbigen,
>>>>>>>      Device(MBI0) {
>>>>>>>            Name(_HID, "HISI0152")
>>>>>>>            Name(_UID, Zero)
>>>>>>>            Name(_CRS, ResourceTemplate() {
>>>>>>>                    Memory32Fixed(ReadWrite, 0xa0080000, 0x10000)
>>>>>>> 		  Interrupt(ResourceProducer,...) {12,14,....}
>>>>>>
>>>>>> What do these interrupt numbers represent ? This looks wrong to me.
>>>>>> An interrupt descriptor is there to describe the interrupts a device
>>>>>> can generate; you are using it just to add a "standard" (that is
>>>>>> not standard at all) way of counting the number of vectors allocated
>>>>>> to this specific chip and that's just wrong.
>>>>>>
>>>>>
>>>>> As I understand, the count of interrupts we are declaring for the
>>>> mbigen
>>>>> is the same as the sum of interrupts for that mbigen's children.
>>>>>
>>>>> So at the point we probe the mbigen, can we just deference the
>>>> children
>>>>> to count their interrupts, and use this as the #msis?
>>>>>
>>>>>> Can't you use something like Agustin did in the QCOM combiner:
>>>>>>
>>>>>> drivers/irqchip/qcom-irq-combiner.c
>>>>>>
>>>>>> to detect the MSI vector length (ie by describing the MBIgen through
>>>>>> generic registers and use the bit width to compute the vector
>>>>>> lenght) ? I am not sure how feasible it is given that my knowledge
>>>>>> of MBIgen is pretty poor.
>>>>>>
>>>>>> I understand we want to avoid _DSD properties but we should not
>>>>>> work around standard bindings to achieve that goal.
>>>>>>
>>>>>
>>>>> We use "num-pins" for dt solution, but it is not so welcome here.
>>>>
>>>> Well, this device is already completely out of any standard description
>>>> on the ACPI side. And given that it bloats both the ACPI tables and the
>>>> kernel data structures, I can only suggest that you take advantage of
>>>> _DSD here, as misusing the standard properties is not something that we
>>>> should condone. It will also make the driver more manageable, as it
>>>> will
>>>> use similar properties on both firmware implementations.
>>>>
>>>> I feel like I need to stress the urgency here. We're at -rc4, and still
>>>> with unsolved issues. None of us want to miss the next merge window.
>>>>
>>>
>>> As follow up our guys would work on a solution whose ACPI table looks
>>> like the following one:
>>>
>>> For mbigen,
>>>      Device(MBI0) {
>>>            Name(_HID, "HISI0152")
>>>            Name(_UID, Zero)
>>>            Name(_CRS, ResourceTemplate() {
>>>                    Memory32Fixed(ReadWrite, 0xa0080000, 0x10000)
>>>            })
>>>
>>>      Name(_DSD, Package () {
>>>        ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
>>>        Package ()
>>>        {
>>>          Package () {"num-pins", xxx}
>>>        }
>>>      })
>>>      }
>
> Please fix the indentation here; the ASL parser doesn't care, but I don't
> see '}'s as clearly as it does :).  In particular, _DSD usage *must* be for
> a device and it does not look like that if one doesn't carefully count all
> the parentheses and braces.

I will fix it :)

>
>>>
>>> For devices,
>>>     Device(COM0) {
>>>            Name(_HID, "ACPIIDxx")
>>>            Name(_UID, Zero)
>>>            Name(_CRS, ResourceTemplate() {
>>>                   Memory32Fixed(ReadWrite, 0xb0030000, 0x10000)
>>> 		 Interrupt(ResourceConsumer,..., "\_SB.MBI0") {12}
>>>            })
>>>      }
>>>
>>>
>>> Marc, Lorenzo if you are ok with the above we will submit v10 based on this...
>>
>> I am ok with it. I am not 100% up-to-date on what's the status on _DSD
>> bindings/review/guidelines but it would be certainly a good idea to
>> kickstart the process for MBIgen which basically means following this
>> as far as I know (and post to the relevant mailing list):
>>
>> https://github.com/ahs3/dsd/blob/master/documentation/process_rules.txt
>
> So, let's correct this bit: consider that URL deprecated, please, and refer
> instead to the text that was agreed upon and in the kernel tree:
>
> 	Documentation/acpi/DSD-properties-rules.txt
>
>> Al and Darren may add to that as they have more insights.
>
> Since this use of _DSD is very specific to this device, and this device
> only, I don't have any real objections.

Thanks for the confirmation.

> I will say that "num-pins" is
> not terribly descriptive so it would be really good to either use a much
> more descriptive name or add plenty of commentary in the code -- and
> preferably both.  I would recommend including the ASL in the code comments,
> with a description of how the property is to be used and what it means.

"num-pins" is used for mbigen DT support:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/interrupt-controller/hisilicon,mbigen-v2.txt

I think we can use the name unchanged and adding more comments
as you suggested, will cc you for this updated patch.

Thanks
Hanjun

  reply	other threads:[~2017-03-27 20:23 UTC|newest]

Thread overview: 112+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-07 12:39 [PATCH v9 00/15] ACPI platform MSI support and its example mbigen Hanjun Guo
2017-03-07 12:39 ` Hanjun Guo
2017-03-07 12:39 ` Hanjun Guo
2017-03-07 12:39 ` [PATCH v9 01/15] ACPI/IORT: Fix the indentation in iort_scan_node() Hanjun Guo
2017-03-07 12:39   ` Hanjun Guo
2017-03-07 12:39   ` Hanjun Guo
2017-03-07 12:39 ` [PATCH v9 02/15] ACPI/IORT: Add missing comment for iort_dev_find_its_id() Hanjun Guo
2017-03-07 12:39   ` Hanjun Guo
2017-03-07 12:39   ` Hanjun Guo
2017-03-07 12:39 ` [PATCH v9 03/15] ACPI/IORT: Rework iort_match_node_callback() return value handling Hanjun Guo
2017-03-07 12:39   ` Hanjun Guo
2017-03-07 12:39   ` Hanjun Guo
2017-03-07 12:39 ` [PATCH v9 04/15] irqchip: gic-v3-its: keep the include header files in alphabetic order Hanjun Guo
2017-03-07 12:39   ` Hanjun Guo
2017-03-07 12:39   ` Hanjun Guo
2017-03-07 12:40 ` [PATCH v9 05/15] irqchip: gicv3-its: platform-msi: refactor its_pmsi_prepare() Hanjun Guo
2017-03-07 12:40   ` Hanjun Guo
2017-03-07 12:40   ` Hanjun Guo
2017-03-07 12:40 ` [PATCH v9 06/15] irqchip: gicv3-its: platform-msi: refactor its_pmsi_init() to prepare for ACPI Hanjun Guo
2017-03-07 12:40   ` Hanjun Guo
2017-03-07 12:40   ` Hanjun Guo
2017-03-07 12:40 ` [PATCH v9 07/15] irqchip: gicv3-its: platform-msi: scan MADT to create platform msi domain Hanjun Guo
2017-03-07 12:40   ` Hanjun Guo
2017-03-07 12:40   ` Hanjun Guo
2017-03-07 12:40 ` [PATCH v9 08/15] ACPI/IORT: Rename iort_node_map_rid() to make it generic Hanjun Guo
2017-03-07 12:40   ` Hanjun Guo
2017-03-07 12:40   ` Hanjun Guo
2017-03-07 12:40 ` [PATCH v9 09/15] ACPI/IORT: Introduce iort_node_map_platform_id() to retrieve dev id Hanjun Guo
2017-03-07 12:40   ` Hanjun Guo
2017-03-07 12:40   ` Hanjun Guo
2017-03-07 12:40 ` [PATCH v9 10/15] ACPI: platform-msi: retrieve dev id from IORT Hanjun Guo
2017-03-07 12:40   ` Hanjun Guo
2017-03-07 12:40   ` Hanjun Guo
2017-03-07 14:35   ` Lorenzo Pieralisi
2017-03-07 14:35     ` Lorenzo Pieralisi
2017-03-07 14:35     ` Lorenzo Pieralisi
2017-03-11  8:56     ` Hanjun Guo
2017-03-11  8:56       ` Hanjun Guo
2017-03-11  8:56       ` Hanjun Guo
2017-03-29 10:14   ` Lorenzo Pieralisi
2017-03-29 10:14     ` Lorenzo Pieralisi
2017-03-29 11:52     ` Hanjun Guo
2017-03-29 11:52       ` Hanjun Guo
2017-03-29 11:52       ` Hanjun Guo
2017-03-29 12:38       ` Lorenzo Pieralisi
2017-03-29 12:38         ` Lorenzo Pieralisi
2017-03-29 13:00         ` Hanjun Guo
2017-03-29 13:00           ` Hanjun Guo
2017-03-29 14:52           ` Marc Zyngier
2017-03-29 14:52             ` Marc Zyngier
2017-03-29 16:13             ` Lorenzo Pieralisi
2017-03-29 16:13               ` Lorenzo Pieralisi
2017-03-29 17:32               ` Lorenzo Pieralisi
2017-03-29 17:32                 ` Lorenzo Pieralisi
2017-03-30  3:07                 ` Hanjun Guo
2017-03-30  3:07                   ` Hanjun Guo
2017-03-30  4:08                   ` majun (Euler7)
2017-03-30  4:08                     ` majun (Euler7)
2017-03-30  4:08                     ` majun (Euler7)
2017-03-30  8:32                   ` Wei Xu
2017-03-30  8:32                     ` Wei Xu
2017-03-30  8:32                     ` Wei Xu
2017-03-30 14:28                     ` Lorenzo Pieralisi
2017-03-30 14:28                       ` Lorenzo Pieralisi
2017-03-30 16:14                       ` John Garry
2017-03-30 16:14                         ` John Garry
2017-03-30 16:14                         ` John Garry
2017-03-30 16:54                         ` Lorenzo Pieralisi
2017-03-30 16:54                           ` Lorenzo Pieralisi
2017-03-31  2:41                           ` majun (Euler7)
2017-03-31  2:41                             ` majun (Euler7)
2017-03-31  2:41                             ` majun (Euler7)
2017-03-07 12:40 ` [PATCH v9 11/15] ACPI: platform: setup MSI domain for ACPI based platform device Hanjun Guo
2017-03-07 12:40   ` Hanjun Guo
2017-03-07 12:40   ` Hanjun Guo
2017-03-07 12:40 ` [PATCH v9 12/15] msi: platform: make platform_msi_create_device_domain() ACPI aware Hanjun Guo
2017-03-07 12:40   ` Hanjun Guo
2017-03-07 12:40   ` Hanjun Guo
2017-03-07 12:40 ` [PATCH v9 13/15] irqchip: mbigen: drop module owner Hanjun Guo
2017-03-07 12:40   ` Hanjun Guo
2017-03-07 12:40   ` Hanjun Guo
2017-03-07 12:40 ` [PATCH v9 14/15] irqchip: mbigen: introduce mbigen_of_create_domain() Hanjun Guo
2017-03-07 12:40   ` Hanjun Guo
2017-03-07 12:40   ` Hanjun Guo
2017-03-07 12:40 ` [PATCH v9 15/15] irqchip: mbigen: Add ACPI support Hanjun Guo
2017-03-07 12:40   ` Hanjun Guo
2017-03-07 12:40   ` Hanjun Guo
2017-03-21 14:45   ` Lorenzo Pieralisi
2017-03-21 14:45     ` Lorenzo Pieralisi
2017-03-22 14:12     ` John Garry
2017-03-22 14:12       ` John Garry
2017-03-22 14:12       ` John Garry
2017-03-27  8:46       ` Marc Zyngier
2017-03-27  8:46         ` Marc Zyngier
2017-03-27  8:46         ` Marc Zyngier
2017-03-27 12:24         ` Gabriele Paoloni
2017-03-27 12:24           ` Gabriele Paoloni
2017-03-27 12:24           ` Gabriele Paoloni
2017-03-27 15:27           ` Lorenzo Pieralisi
2017-03-27 15:27             ` Lorenzo Pieralisi
2017-03-27 15:27             ` Lorenzo Pieralisi
2017-03-27 18:56             ` Al Stone
2017-03-27 18:56               ` Al Stone
2017-03-27 18:56               ` Al Stone
2017-03-27 20:23               ` Hanjun Guo [this message]
2017-03-27 20:23                 ` Hanjun Guo
2017-03-27 20:23                 ` Hanjun Guo
2017-03-07 14:43 ` [PATCH v9 00/15] ACPI platform MSI support and its example mbigen Lorenzo Pieralisi
2017-03-07 14:43   ` Lorenzo Pieralisi
2017-03-07 14:43   ` Lorenzo Pieralisi
2017-03-09 13:22   ` Hanjun Guo
2017-03-09 13:22     ` Hanjun Guo

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=58D974D2.7060809@linaro.org \
    --to=hanjun.guo@linaro.org \
    --cc=ahs3@redhat.com \
    --cc=dvhart@infradead.org \
    --cc=gabriele.paoloni@huawei.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=guohanjun@huawei.com \
    --cc=john.garry@huawei.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxarm@huawei.com \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=majun258@huawei.com \
    --cc=marc.zyngier@arm.com \
    --cc=okaya@codeaurora.org \
    --cc=rafael@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=tn@semihalf.com \
    --cc=yimin@huawei.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.