All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rafael@kernel.org>
To: Andy Shevchenko <andy.shevchenko@gmail.com>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Erik Kaneda <erik.kaneda@intel.com>,
	"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
	Len Brown <lenb@kernel.org>, Borislav Petkov <bp@alien8.de>,
	James Morse <james.morse@arm.com>,
	Myron Stowe <myron.stowe@redhat.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	ACPI Devel Maling List <linux-acpi@vger.kernel.org>,
	"linux-nvdimm@lists.01.org" <linux-nvdimm@lists.01.org>,
	Bob Moore <robert.moore@intel.com>
Subject: Re: [RFT][PATCH v2 2/4] ACPI: OSL: Add support for deferred unmapping of ACPI memory
Date: Mon, 22 Jun 2020 17:27:53 +0200	[thread overview]
Message-ID: <CAJZ5v0hu9_TA0KAe=9ZCSG4_KijSYb=qnt8MYe9QYwGbz=pmBg@mail.gmail.com> (raw)
In-Reply-To: <CAHp75VePDyPevCAOntFpTajf5zd9ocwjeWRz80WmCNtiDicpLg@mail.gmail.com>

On Mon, Jun 22, 2020 at 4:56 PM Andy Shevchenko
<andy.shevchenko@gmail.com> wrote:
>
> On Mon, Jun 22, 2020 at 5:06 PM Rafael J. Wysocki <rjw@rjwysocki.net> wrote:
> >
> > From: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
> >
> > Implement acpi_os_unmap_deferred() and
> > acpi_os_release_unused_mappings() and set ACPI_USE_DEFERRED_UNMAPPING
> > to allow ACPICA to use deferred unmapping of memory in
> > acpi_ex_system_memory_space_handler() so as to avoid RCU-related
> > performance issues with memory opregions.
>
> ...
>
> > +static bool acpi_os_drop_map_ref(struct acpi_ioremap *map, bool defer)
> >  {
> > -       unsigned long refcount = --map->refcount;
> > +       if (--map->track.refcount)
> > +               return true;
> >
> > -       if (!refcount)
> > -               list_del_rcu(&map->list);
> > -       return refcount;
> > +       list_del_rcu(&map->list);
> > +
>
> > +       if (defer) {
> > +               INIT_LIST_HEAD(&map->track.gc);
> > +               list_add_tail(&map->track.gc, &unused_mappings);
>
> > +               return true;
> > +       }
> > +
> > +       return false;
>
> A nit:
>
> Effectively it returns a value of defer.
>
>   return defer;
>
> >  }

Do you mean that one line of code could be saved?  Yes, it could.

>
> ...
>
> > @@ -416,26 +421,102 @@ void __ref acpi_os_unmap_iomem(void __iomem *virt, acpi_size size)
> >         }
> >
> >         mutex_lock(&acpi_ioremap_lock);
> > +
> >         map = acpi_map_lookup_virt(virt, size);
>
> A nit: should it be somewhere else (I mean in another patch)?

Do you mean the extra empty line?

No, I don't think so, or the code style after this patch would not
look consistent.

> >         if (!map) {
>
> ...
>
> > +       /* Release the unused mappings in the list. */
> > +       while (!list_empty(&list)) {
> > +               struct acpi_ioremap *map;
> > +
> > +               map = list_entry(list.next, struct acpi_ioremap, track.gc);
>
> A nt: if __acpi_os_map_cleanup() (actually acpi_unmap() according to
> the code) has no side effects, can we use list_for_each_entry_safe()
> here?

I actually prefer a do .. while version of this which saves the
initial check (which has been carried out already).

> > +               list_del(&map->track.gc);
> > +               __acpi_os_map_cleanup(map);
> > +       }
> > +}
>
> ...
>
> > @@ -472,16 +552,18 @@ void acpi_os_unmap_generic_address(struct acpi_generic_address *gas)
> >                 return;
> >
> >         mutex_lock(&acpi_ioremap_lock);
> > +
> >         map = acpi_map_lookup(addr, gas->bit_width / 8);
>
> A nit: should it be somewhere else (I mean in another patch)?

Nope.

Thanks!
_______________________________________________
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-leave@lists.01.org

WARNING: multiple messages have this Message-ID (diff)
From: "Rafael J. Wysocki" <rafael@kernel.org>
To: Andy Shevchenko <andy.shevchenko@gmail.com>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Dan Williams <dan.j.williams@intel.com>,
	Erik Kaneda <erik.kaneda@intel.com>,
	"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
	Len Brown <lenb@kernel.org>, Borislav Petkov <bp@alien8.de>,
	Ira Weiny <ira.weiny@intel.com>,
	James Morse <james.morse@arm.com>,
	Myron Stowe <myron.stowe@redhat.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	ACPI Devel Maling List <linux-acpi@vger.kernel.org>,
	"linux-nvdimm@lists.01.org" <linux-nvdimm@lists.01.org>,
	Bob Moore <robert.moore@intel.com>
Subject: Re: [RFT][PATCH v2 2/4] ACPI: OSL: Add support for deferred unmapping of ACPI memory
Date: Mon, 22 Jun 2020 17:27:53 +0200	[thread overview]
Message-ID: <CAJZ5v0hu9_TA0KAe=9ZCSG4_KijSYb=qnt8MYe9QYwGbz=pmBg@mail.gmail.com> (raw)
In-Reply-To: <CAHp75VePDyPevCAOntFpTajf5zd9ocwjeWRz80WmCNtiDicpLg@mail.gmail.com>

On Mon, Jun 22, 2020 at 4:56 PM Andy Shevchenko
<andy.shevchenko@gmail.com> wrote:
>
> On Mon, Jun 22, 2020 at 5:06 PM Rafael J. Wysocki <rjw@rjwysocki.net> wrote:
> >
> > From: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
> >
> > Implement acpi_os_unmap_deferred() and
> > acpi_os_release_unused_mappings() and set ACPI_USE_DEFERRED_UNMAPPING
> > to allow ACPICA to use deferred unmapping of memory in
> > acpi_ex_system_memory_space_handler() so as to avoid RCU-related
> > performance issues with memory opregions.
>
> ...
>
> > +static bool acpi_os_drop_map_ref(struct acpi_ioremap *map, bool defer)
> >  {
> > -       unsigned long refcount = --map->refcount;
> > +       if (--map->track.refcount)
> > +               return true;
> >
> > -       if (!refcount)
> > -               list_del_rcu(&map->list);
> > -       return refcount;
> > +       list_del_rcu(&map->list);
> > +
>
> > +       if (defer) {
> > +               INIT_LIST_HEAD(&map->track.gc);
> > +               list_add_tail(&map->track.gc, &unused_mappings);
>
> > +               return true;
> > +       }
> > +
> > +       return false;
>
> A nit:
>
> Effectively it returns a value of defer.
>
>   return defer;
>
> >  }

Do you mean that one line of code could be saved?  Yes, it could.

>
> ...
>
> > @@ -416,26 +421,102 @@ void __ref acpi_os_unmap_iomem(void __iomem *virt, acpi_size size)
> >         }
> >
> >         mutex_lock(&acpi_ioremap_lock);
> > +
> >         map = acpi_map_lookup_virt(virt, size);
>
> A nit: should it be somewhere else (I mean in another patch)?

Do you mean the extra empty line?

No, I don't think so, or the code style after this patch would not
look consistent.

> >         if (!map) {
>
> ...
>
> > +       /* Release the unused mappings in the list. */
> > +       while (!list_empty(&list)) {
> > +               struct acpi_ioremap *map;
> > +
> > +               map = list_entry(list.next, struct acpi_ioremap, track.gc);
>
> A nt: if __acpi_os_map_cleanup() (actually acpi_unmap() according to
> the code) has no side effects, can we use list_for_each_entry_safe()
> here?

I actually prefer a do .. while version of this which saves the
initial check (which has been carried out already).

> > +               list_del(&map->track.gc);
> > +               __acpi_os_map_cleanup(map);
> > +       }
> > +}
>
> ...
>
> > @@ -472,16 +552,18 @@ void acpi_os_unmap_generic_address(struct acpi_generic_address *gas)
> >                 return;
> >
> >         mutex_lock(&acpi_ioremap_lock);
> > +
> >         map = acpi_map_lookup(addr, gas->bit_width / 8);
>
> A nit: should it be somewhere else (I mean in another patch)?

Nope.

Thanks!

  reply	other threads:[~2020-06-22 15:28 UTC|newest]

Thread overview: 107+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-07 23:39 [PATCH v2] ACPI: Drop rcu usage for MMIO mappings Dan Williams
2020-05-07 23:39 ` Dan Williams
2020-05-09 12:30 ` Sasha Levin
2020-05-13  8:52 ` [ACPI] 5a91d41f89: BUG:sleeping_function_called_from_invalid_context_at_kernel/locking/mutex.c kernel test robot
2020-05-13  8:52   ` kernel test robot
2020-05-13  8:52   ` kernel test robot
2020-06-05 13:32 ` [PATCH v2] ACPI: Drop rcu usage for MMIO mappings Rafael J. Wysocki
2020-06-05 13:32   ` Rafael J. Wysocki
2020-06-05 16:18   ` Dan Williams
2020-06-05 16:18     ` Dan Williams
2020-06-05 16:21     ` Rafael J. Wysocki
2020-06-05 16:21       ` Rafael J. Wysocki
2020-06-05 16:39       ` Dan Williams
2020-06-05 16:39         ` Dan Williams
2020-06-05 17:02         ` Rafael J. Wysocki
2020-06-05 17:02           ` Rafael J. Wysocki
2020-06-05 14:06 ` [RFT][PATCH] ACPI: OSL: Use rwlock instead of RCU for memory management Rafael J. Wysocki
2020-06-05 14:06   ` Rafael J. Wysocki
2020-06-05 17:08   ` Dan Williams
2020-06-05 17:08     ` Dan Williams
2020-06-06  6:56     ` Rafael J. Wysocki
2020-06-06  6:56       ` Rafael J. Wysocki
2020-06-08 15:33       ` Rafael J. Wysocki
2020-06-08 15:33         ` Rafael J. Wysocki
2020-06-08 16:29         ` Rafael J. Wysocki
2020-06-08 16:29           ` Rafael J. Wysocki
2020-06-05 19:40   ` Andy Shevchenko
2020-06-05 19:40     ` Andy Shevchenko
2020-06-06  6:48     ` Rafael J. Wysocki
2020-06-06  6:48       ` Rafael J. Wysocki
2020-06-10 12:17 ` [RFT][PATCH 0/3] ACPI: ACPICA / OSL: Avoid unmapping ACPI memory inside of the AML interpreter Rafael J. Wysocki
2020-06-10 12:17   ` Rafael J. Wysocki
2020-06-10 12:20   ` [RFT][PATCH 1/3] ACPICA: Defer unmapping of memory used in memory opregions Rafael J. Wysocki
2020-06-10 12:20     ` Rafael J. Wysocki
2020-06-10 12:21   ` [RFT][PATCH 2/3] ACPICA: Remove unused memory mappings on interpreter exit Rafael J. Wysocki
2020-06-10 12:21     ` Rafael J. Wysocki
2020-06-12  0:12     ` Kaneda, Erik
2020-06-12  0:12       ` Kaneda, Erik
2020-06-12 12:05       ` Rafael J. Wysocki
2020-06-12 12:05         ` Rafael J. Wysocki
2020-06-13 19:28         ` Rafael J. Wysocki
2020-06-13 19:28           ` Rafael J. Wysocki
2020-06-15 19:06           ` Dan Williams
2020-06-15 19:06             ` Dan Williams
2020-06-10 12:22   ` [RFT][PATCH 3/3] ACPI: OSL: Define ACPI_OS_MAP_MEMORY_FAST_PATH() Rafael J. Wysocki
2020-06-10 12:22     ` Rafael J. Wysocki
2020-06-13 19:19   ` [RFT][PATCH 0/3] ACPI: ACPICA / OSL: Avoid unmapping ACPI memory inside of the AML interpreter Rafael J. Wysocki
2020-06-13 19:19     ` Rafael J. Wysocki
2020-06-22 13:50 ` [RFT][PATCH v2 0/4] " Rafael J. Wysocki
2020-06-22 13:50   ` Rafael J. Wysocki
2020-06-22 13:52   ` [RFT][PATCH v2 1/4] ACPICA: Defer unmapping of opregion memory if supported by OS Rafael J. Wysocki
2020-06-22 13:52     ` Rafael J. Wysocki
2020-06-22 13:53   ` [RFT][PATCH v2 2/4] ACPI: OSL: Add support for deferred unmapping of ACPI memory Rafael J. Wysocki
2020-06-22 13:53     ` Rafael J. Wysocki
2020-06-22 14:56     ` Andy Shevchenko
2020-06-22 14:56       ` Andy Shevchenko
2020-06-22 15:27       ` Rafael J. Wysocki [this message]
2020-06-22 15:27         ` Rafael J. Wysocki
2020-06-22 15:46         ` Andy Shevchenko
2020-06-22 15:46           ` Andy Shevchenko
2020-06-22 14:01   ` [RFT][PATCH v2 3/4] ACPICA: Preserve memory opregion mappings if supported by OS Rafael J. Wysocki
2020-06-22 14:01     ` Rafael J. Wysocki
2020-06-26 22:53     ` Kaneda, Erik
2020-06-26 22:53       ` Kaneda, Erik
2020-06-29 13:02       ` Rafael J. Wysocki
2020-06-29 13:02         ` Rafael J. Wysocki
2020-06-22 14:02   ` [RFT][PATCH v2 4/4] ACPI: OSL: Implement acpi_os_map_memory_fast_path() Rafael J. Wysocki
2020-06-22 14:02     ` Rafael J. Wysocki
2020-06-26 17:28   ` [RFT][PATCH v3 0/4] ACPI: ACPICA / OSL: Avoid unmapping ACPI memory inside of the AML interpreter Rafael J. Wysocki
2020-06-26 17:28     ` Rafael J. Wysocki
2020-06-26 17:31     ` [RFT][PATCH v3 1/4] ACPICA: Take deferred unmapping of memory into account Rafael J. Wysocki
2020-06-26 17:31       ` Rafael J. Wysocki
2020-06-26 17:31     ` [RFT][PATCH v3 2/4] ACPI: OSL: Implement deferred unmapping of ACPI memory Rafael J. Wysocki
2020-06-26 17:31       ` Rafael J. Wysocki
2020-06-27 11:32       ` kernel test robot
2020-06-26 17:32     ` [RFT][PATCH v3 3/4] ACPICA: Preserve memory opregion mappings if supported by OS Rafael J. Wysocki
2020-06-26 17:32       ` Rafael J. Wysocki
2020-06-26 17:33     ` [RFT][PATCH v3 4/4] ACPI: OSL: Implement acpi_os_map_memory_fast_path() Rafael J. Wysocki
2020-06-26 17:33       ` Rafael J. Wysocki
2020-06-26 18:41     ` [RFT][PATCH v3 0/4] ACPI: ACPICA / OSL: Avoid unmapping ACPI memory inside of the AML interpreter Dan Williams
2020-06-26 18:41       ` Dan Williams
2020-06-28 17:09       ` Rafael J. Wysocki
2020-06-28 17:09         ` Rafael J. Wysocki
2020-06-29 20:46         ` Dan Williams
2020-06-29 20:46           ` Dan Williams
2020-06-30 11:04           ` Rafael J. Wysocki
2020-06-30 11:04             ` Rafael J. Wysocki
2020-06-29 16:31     ` [PATCH v4 0/2] " Rafael J. Wysocki
2020-06-29 16:31       ` Rafael J. Wysocki
2020-06-29 16:33       ` [PATCH v4 1/2] ACPI: OSL: Implement deferred unmapping of ACPI memory Rafael J. Wysocki
2020-06-29 16:33         ` Rafael J. Wysocki
2020-06-29 16:33       ` [PATCH v4 2/2] ACPICA: Preserve memory opregion mappings Rafael J. Wysocki
2020-06-29 16:33         ` Rafael J. Wysocki
2020-06-29 20:57         ` Al Stone
2020-06-29 20:57           ` Al Stone
2020-06-30 11:44           ` Rafael J. Wysocki
2020-06-30 11:44             ` Rafael J. Wysocki
2020-06-30 15:31             ` Al Stone
2020-06-30 15:31               ` Al Stone
2020-06-30 15:52               ` Rafael J. Wysocki
2020-06-30 15:52                 ` Rafael J. Wysocki
2020-06-30 19:57                 ` Al Stone
2020-06-30 19:57                   ` Al Stone
2020-07-16 19:22         ` Verma, Vishal L
2020-07-16 19:22           ` Verma, Vishal L
2020-07-19 19:14           ` Rafael J. Wysocki
2020-07-19 19:14             ` Rafael J. Wysocki

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='CAJZ5v0hu9_TA0KAe=9ZCSG4_KijSYb=qnt8MYe9QYwGbz=pmBg@mail.gmail.com' \
    --to=rafael@kernel.org \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=andy.shevchenko@gmail.com \
    --cc=bp@alien8.de \
    --cc=erik.kaneda@intel.com \
    --cc=james.morse@arm.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nvdimm@lists.01.org \
    --cc=myron.stowe@redhat.com \
    --cc=rafael.j.wysocki@intel.com \
    --cc=rjw@rjwysocki.net \
    --cc=robert.moore@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.