From: Marc Zyngier <marc.zyngier@arm.com>
To: "Zheng, Lv" <lv.zheng@intel.com>,
Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
Tomasz Nowicki <tn@semihalf.com>
Cc: "tglx@linutronix.de" <tglx@linutronix.de>,
"jason@lakedaemon.net" <jason@lakedaemon.net>,
"rjw@rjwysocki.net" <rjw@rjwysocki.net>,
"helgaas@kernel.org" <helgaas@kernel.org>,
"rafael@kernel.org" <rafael@kernel.org>,
"will.deacon@arm.com" <will.deacon@arm.com>,
"catalin.marinas@arm.com" <catalin.marinas@arm.com>,
"hanjun.guo@linaro.org" <hanjun.guo@linaro.org>,
"shijie.huang@arm.com" <shijie.huang@arm.com>,
"robert.richter@caviumnetworks.com"
<robert.richter@caviumnetworks.com>,
"mw@semihalf.com" <mw@semihalf.com>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linaro-acpi@lists.linaro.org" <linaro-acpi@lists.linaro.org>,
"andrea.gallo@linaro.org" <andrea.gallo@linaro.org>,
"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@v>
Subject: Re: [PATCH V8 2/8] ACPI: Add new IORT functions to support MSI domain handling
Date: Tue, 16 Aug 2016 11:41:47 +0100 [thread overview]
Message-ID: <57B2EDEB.40903@arm.com> (raw)
In-Reply-To: <1AE640813FDE7649BE1B193DEA596E883BC0E3F2@SHSMSX101.ccr.corp.intel.com>
On 16/08/16 03:15, Zheng, Lv wrote:
> Hi,
>
>> From: linux-acpi-owner@vger.kernel.org [mailto:linux-acpi-owner@vger.kernel.org] On Behalf Of Lorenzo
>> Pieralisi
>> Subject: Re: [PATCH V8 2/8] ACPI: Add new IORT functions to support MSI domain handling
>>
>> On Thu, Aug 11, 2016 at 12:06:32PM +0200, Tomasz Nowicki wrote:
>>
>> [...]
>>
>>> +/**
>>> + * iort_register_domain_token() - register domain token and related ITS ID
>>> + * to the list from where we can get it back later on.
>>> + * @trans_id: ITS ID.
>>> + * @fw_node: Domain token.
>>> + *
>>> + * Returns: 0 on success, -ENOMEM if no memory when allocating list element
>>> + */
>>> +int iort_register_domain_token(int trans_id, struct fwnode_handle *fw_node)
>>> +{
>>> + struct iort_its_msi_chip *its_msi_chip;
>>> +
>>> + its_msi_chip = kzalloc(sizeof(*its_msi_chip), GFP_KERNEL);
>>
>> I spotted this while reworking my ARM SMMU series, this may sleep
>> and that's no good given that we call it within the acpi_probe_lock.
>>
>> Same goes for irq_domain_alloc_fwnode() (that we call in
>> gic_v2_acpi_init()), we have got to fix this usage, I will see with
>> Marc what's the best way to do it.
>
> If we can ensure that all table device probe entries are created
> during link stage or early stage. I think you can safely unlock probe
> lock before invoking acpi_table_parse() in
> __acpi_probe_device_table().
That'd be quite risky, as this lock is the only thing that protects the
acpi_probe_entry pointer (I really wish the ACPI API was less global
variable happy), and I don't see how we can guarantee to only ever
execute this in a single-threaded environment.
An alternative would be to turn the spinlock into a mutex, which will
allow sleeping, and yet provide the required mutual exclusion.
Thanks,
M.
--
Jazz is not dead. It just smells funny...
WARNING: multiple messages have this Message-ID (diff)
From: Marc Zyngier <marc.zyngier@arm.com>
To: "Zheng, Lv" <lv.zheng@intel.com>,
Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
Tomasz Nowicki <tn@semihalf.com>
Cc: "tglx@linutronix.de" <tglx@linutronix.de>,
"jason@lakedaemon.net" <jason@lakedaemon.net>,
"rjw@rjwysocki.net" <rjw@rjwysocki.net>,
"helgaas@kernel.org" <helgaas@kernel.org>,
"rafael@kernel.org" <rafael@kernel.org>,
"will.deacon@arm.com" <will.deacon@arm.com>,
"catalin.marinas@arm.com" <catalin.marinas@arm.com>,
"hanjun.guo@linaro.org" <hanjun.guo@linaro.org>,
"shijie.huang@arm.com" <shijie.huang@arm.com>,
"robert.richter@caviumnetworks.com"
<robert.richter@caviumnetworks.com>,
"mw@semihalf.com" <mw@semihalf.com>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linaro-acpi@lists.linaro.org" <linaro-acpi@lists.linaro.org>,
"andrea.gallo@linaro.org" <andrea.gallo@linaro.org>,
"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"al.stone@linaro.org" <al.stone@linaro.org>,
"graeme.gregory@linaro.org" <graeme.gregory@linaro.org>,
"ddaney.cavm@gmail.com" <ddaney.cavm@gmail.com>,
"okaya@codeaurora.org" <okaya@codeaurora.org>
Subject: Re: [PATCH V8 2/8] ACPI: Add new IORT functions to support MSI domain handling
Date: Tue, 16 Aug 2016 11:41:47 +0100 [thread overview]
Message-ID: <57B2EDEB.40903@arm.com> (raw)
In-Reply-To: <1AE640813FDE7649BE1B193DEA596E883BC0E3F2@SHSMSX101.ccr.corp.intel.com>
On 16/08/16 03:15, Zheng, Lv wrote:
> Hi,
>
>> From: linux-acpi-owner@vger.kernel.org [mailto:linux-acpi-owner@vger.kernel.org] On Behalf Of Lorenzo
>> Pieralisi
>> Subject: Re: [PATCH V8 2/8] ACPI: Add new IORT functions to support MSI domain handling
>>
>> On Thu, Aug 11, 2016 at 12:06:32PM +0200, Tomasz Nowicki wrote:
>>
>> [...]
>>
>>> +/**
>>> + * iort_register_domain_token() - register domain token and related ITS ID
>>> + * to the list from where we can get it back later on.
>>> + * @trans_id: ITS ID.
>>> + * @fw_node: Domain token.
>>> + *
>>> + * Returns: 0 on success, -ENOMEM if no memory when allocating list element
>>> + */
>>> +int iort_register_domain_token(int trans_id, struct fwnode_handle *fw_node)
>>> +{
>>> + struct iort_its_msi_chip *its_msi_chip;
>>> +
>>> + its_msi_chip = kzalloc(sizeof(*its_msi_chip), GFP_KERNEL);
>>
>> I spotted this while reworking my ARM SMMU series, this may sleep
>> and that's no good given that we call it within the acpi_probe_lock.
>>
>> Same goes for irq_domain_alloc_fwnode() (that we call in
>> gic_v2_acpi_init()), we have got to fix this usage, I will see with
>> Marc what's the best way to do it.
>
> If we can ensure that all table device probe entries are created
> during link stage or early stage. I think you can safely unlock probe
> lock before invoking acpi_table_parse() in
> __acpi_probe_device_table().
That'd be quite risky, as this lock is the only thing that protects the
acpi_probe_entry pointer (I really wish the ACPI API was less global
variable happy), and I don't see how we can guarantee to only ever
execute this in a single-threaded environment.
An alternative would be to turn the spinlock into a mutex, which will
allow sleeping, and yet provide the required mutual exclusion.
Thanks,
M.
--
Jazz is not dead. It just smells funny...
WARNING: multiple messages have this Message-ID (diff)
From: marc.zyngier@arm.com (Marc Zyngier)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH V8 2/8] ACPI: Add new IORT functions to support MSI domain handling
Date: Tue, 16 Aug 2016 11:41:47 +0100 [thread overview]
Message-ID: <57B2EDEB.40903@arm.com> (raw)
In-Reply-To: <1AE640813FDE7649BE1B193DEA596E883BC0E3F2@SHSMSX101.ccr.corp.intel.com>
On 16/08/16 03:15, Zheng, Lv wrote:
> Hi,
>
>> From: linux-acpi-owner at vger.kernel.org [mailto:linux-acpi-owner at vger.kernel.org] On Behalf Of Lorenzo
>> Pieralisi
>> Subject: Re: [PATCH V8 2/8] ACPI: Add new IORT functions to support MSI domain handling
>>
>> On Thu, Aug 11, 2016 at 12:06:32PM +0200, Tomasz Nowicki wrote:
>>
>> [...]
>>
>>> +/**
>>> + * iort_register_domain_token() - register domain token and related ITS ID
>>> + * to the list from where we can get it back later on.
>>> + * @trans_id: ITS ID.
>>> + * @fw_node: Domain token.
>>> + *
>>> + * Returns: 0 on success, -ENOMEM if no memory when allocating list element
>>> + */
>>> +int iort_register_domain_token(int trans_id, struct fwnode_handle *fw_node)
>>> +{
>>> + struct iort_its_msi_chip *its_msi_chip;
>>> +
>>> + its_msi_chip = kzalloc(sizeof(*its_msi_chip), GFP_KERNEL);
>>
>> I spotted this while reworking my ARM SMMU series, this may sleep
>> and that's no good given that we call it within the acpi_probe_lock.
>>
>> Same goes for irq_domain_alloc_fwnode() (that we call in
>> gic_v2_acpi_init()), we have got to fix this usage, I will see with
>> Marc what's the best way to do it.
>
> If we can ensure that all table device probe entries are created
> during link stage or early stage. I think you can safely unlock probe
> lock before invoking acpi_table_parse() in
> __acpi_probe_device_table().
That'd be quite risky, as this lock is the only thing that protects the
acpi_probe_entry pointer (I really wish the ACPI API was less global
variable happy), and I don't see how we can guarantee to only ever
execute this in a single-threaded environment.
An alternative would be to turn the spinlock into a mutex, which will
allow sleeping, and yet provide the required mutual exclusion.
Thanks,
M.
--
Jazz is not dead. It just smells funny...
next prev parent reply other threads:[~2016-08-16 10:41 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-11 10:06 [PATCH V8 0/8] Introduce ACPI world to ITS irqchip Tomasz Nowicki
2016-08-11 10:06 ` Tomasz Nowicki
2016-08-11 10:06 ` [PATCH V8 1/8] ACPI: I/O Remapping Table (IORT) initial support Tomasz Nowicki
2016-08-11 10:06 ` Tomasz Nowicki
2016-08-12 16:33 ` Lorenzo Pieralisi
2016-08-12 16:33 ` Lorenzo Pieralisi
2016-08-18 6:25 ` Tomasz Nowicki
2016-08-18 6:25 ` Tomasz Nowicki
2016-08-18 6:25 ` Tomasz Nowicki
2016-08-31 9:30 ` Lorenzo Pieralisi
2016-08-31 9:30 ` Lorenzo Pieralisi
2016-08-31 9:30 ` Lorenzo Pieralisi
2016-08-18 10:55 ` Dennis Chen
2016-08-18 10:55 ` Dennis Chen
2016-08-18 10:55 ` Dennis Chen
2016-08-18 10:55 ` Dennis Chen
2016-08-18 11:14 ` Lorenzo Pieralisi
2016-08-18 11:14 ` Lorenzo Pieralisi
2016-08-19 3:39 ` Dennis Chen
2016-08-19 3:39 ` Dennis Chen
2016-08-19 3:39 ` Dennis Chen
2016-08-19 3:39 ` Dennis Chen
2016-09-02 11:52 ` [Linaro-acpi] " Fu Wei
2016-09-02 11:52 ` Fu Wei
2016-09-05 6:12 ` Tomasz Nowicki
2016-09-05 6:12 ` Tomasz Nowicki
2016-09-05 15:31 ` Fu Wei
2016-09-05 15:31 ` Fu Wei
2016-08-11 10:06 ` [PATCH V8 2/8] ACPI: Add new IORT functions to support MSI domain handling Tomasz Nowicki
2016-08-11 10:06 ` Tomasz Nowicki
2016-08-12 16:42 ` Lorenzo Pieralisi
2016-08-12 16:42 ` Lorenzo Pieralisi
2016-08-16 2:15 ` Zheng, Lv
2016-08-16 2:15 ` Zheng, Lv
2016-08-16 2:15 ` Zheng, Lv
2016-08-16 2:15 ` Zheng, Lv
2016-08-16 10:41 ` Marc Zyngier [this message]
2016-08-16 10:41 ` Marc Zyngier
2016-08-16 10:41 ` Marc Zyngier
2016-08-11 10:06 ` [PATCH V8 3/8] PCI/MSI: Setup MSI domain on a per-device basis using IORT ACPI table Tomasz Nowicki
2016-08-11 10:06 ` Tomasz Nowicki
2016-08-11 10:06 ` Tomasz Nowicki
2016-08-11 10:06 ` [PATCH V8 4/8] irqchip/gicv3-its: Cleanup for ITS domain initialization Tomasz Nowicki
2016-08-11 10:06 ` Tomasz Nowicki
2016-08-11 10:06 ` [PATCH V8 5/8] irqchip/gicv3-its: Refactor ITS DT init code to prepare for ACPI Tomasz Nowicki
2016-08-11 10:06 ` Tomasz Nowicki
2016-08-17 8:33 ` Hanjun Guo
2016-08-17 8:33 ` Hanjun Guo
2016-08-17 8:33 ` Hanjun Guo
2016-08-17 15:58 ` Bjorn Helgaas
2016-08-17 15:58 ` Bjorn Helgaas
2016-08-18 6:42 ` Tomasz Nowicki
2016-08-18 6:42 ` Tomasz Nowicki
2016-08-18 6:42 ` Tomasz Nowicki
2016-08-18 6:55 ` Hanjun Guo
2016-08-18 6:55 ` Hanjun Guo
2016-08-18 6:55 ` Hanjun Guo
2016-08-11 10:06 ` [PATCH V8 6/8] irqchip/gicv3-its: Probe ITS in the ACPI way Tomasz Nowicki
2016-08-11 10:06 ` Tomasz Nowicki
2016-08-11 10:06 ` [PATCH V8 7/8] irqchip/gicv3-its: Factor out PCI-MSI part that might be reused for ACPI Tomasz Nowicki
2016-08-11 10:06 ` Tomasz Nowicki
2016-08-11 10:06 ` [PATCH V8 8/8] irqchip/gicv3-its: Use MADT ITS subtable to do PCI/MSI domain initialization Tomasz Nowicki
2016-08-11 10:06 ` Tomasz Nowicki
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=57B2EDEB.40903@arm.com \
--to=marc.zyngier@arm.com \
--cc=andrea.gallo@linaro.org \
--cc=catalin.marinas@arm.com \
--cc=hanjun.guo@linaro.org \
--cc=helgaas@kernel.org \
--cc=jason@lakedaemon.net \
--cc=linaro-acpi@lists.linaro.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@v \
--cc=linux-pci@vger.kernel.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=lv.zheng@intel.com \
--cc=mw@semihalf.com \
--cc=rafael@kernel.org \
--cc=rjw@rjwysocki.net \
--cc=robert.richter@caviumnetworks.com \
--cc=shijie.huang@arm.com \
--cc=tglx@linutronix.de \
--cc=tn@semihalf.com \
--cc=will.deacon@arm.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.