linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 0/6] resource: introduce union(), intersection() API
@ 2020-11-02 21:00 Andy Shevchenko
  2020-11-02 21:00 ` [PATCH v4 3/6] resource: Introduce resource_union() for overlapping resources Andy Shevchenko
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Andy Shevchenko @ 2020-11-02 21:00 UTC (permalink / raw)
  To: linux-acpi, Greg Kroah-Hartman, linux-kernel
  Cc: Andy Shevchenko, Kuppuswamy Sathyanarayanan, Bjorn Helgaas, linux-pci

Some users may want to use resource library to manage their own resources,
besides existing users that open code union() and intersection()
implementations.

Provide a generic API for wider use.

Changelog v4:
- added Rb tag (Rafael)
- Cc'ed to LKML and Greg (Rafael)

Changelog v3:
- rebased on top of v5.10-rc1
- dropped upstreamed dependencies
- added Rb tag to the last patch (Mika)

Cc: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: linux-pci@vger.kernel.org

Andy Shevchenko (6):
  resource: Simplify region_intersects() by reducing conditionals
  resource: Group resource_overlaps() with other inline helpers
  resource: Introduce resource_union() for overlapping resources
  resource: Introduce resource_intersection() for overlapping resources
  PCI/ACPI: Replace open coded variant of resource_union()
  ACPI: watchdog: Replace open coded variant of resource_union()

 drivers/acpi/acpi_watchdog.c |  6 +-----
 drivers/acpi/pci_root.c      |  4 +---
 include/linux/ioport.h       | 34 +++++++++++++++++++++++++++-------
 kernel/resource.c            | 10 +++++-----
 4 files changed, 34 insertions(+), 20 deletions(-)

-- 
2.28.0


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v4 3/6] resource: Introduce resource_union() for overlapping resources
  2020-11-02 21:00 [PATCH v4 0/6] resource: introduce union(), intersection() API Andy Shevchenko
@ 2020-11-02 21:00 ` Andy Shevchenko
  2020-11-02 21:00 ` [PATCH v4 5/6] PCI/ACPI: Replace open coded variant of resource_union() Andy Shevchenko
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 9+ messages in thread
From: Andy Shevchenko @ 2020-11-02 21:00 UTC (permalink / raw)
  To: linux-acpi, Greg Kroah-Hartman, linux-kernel
  Cc: Andy Shevchenko, Rafael J . Wysocki, Mika Westerberg,
	Kuppuswamy Sathyanarayanan, Bjorn Helgaas, linux-pci

Some already present users may utilize resource_union() helper.
Provide it for them and for wider use in the future.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Cc: Mika Westerberg <mika.westerberg@linux.intel.com>
Cc: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: linux-pci@vger.kernel.org
---
 include/linux/ioport.h | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/include/linux/ioport.h b/include/linux/ioport.h
index df4581107536..40320eb5bc0e 100644
--- a/include/linux/ioport.h
+++ b/include/linux/ioport.h
@@ -10,9 +10,10 @@
 #define _LINUX_IOPORT_H
 
 #ifndef __ASSEMBLY__
+#include <linux/bits.h>
 #include <linux/compiler.h>
+#include <linux/minmax.h>
 #include <linux/types.h>
-#include <linux/bits.h>
 /*
  * Resources are tree-like, allowing
  * nesting etc..
@@ -235,6 +236,16 @@ static inline bool resource_overlaps(struct resource *r1, struct resource *r2)
        return r1->start <= r2->end && r1->end >= r2->start;
 }
 
+static inline bool
+resource_union(struct resource *r1, struct resource *r2, struct resource *r)
+{
+	if (!resource_overlaps(r1, r2))
+		return false;
+	r->start = min(r1->start, r2->start);
+	r->end = max(r1->end, r2->end);
+	return true;
+}
+
 /* Convenience shorthand with allocation */
 #define request_region(start,n,name)		__request_region(&ioport_resource, (start), (n), (name), 0)
 #define request_muxed_region(start,n,name)	__request_region(&ioport_resource, (start), (n), (name), IORESOURCE_MUXED)
-- 
2.28.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v4 5/6] PCI/ACPI: Replace open coded variant of resource_union()
  2020-11-02 21:00 [PATCH v4 0/6] resource: introduce union(), intersection() API Andy Shevchenko
  2020-11-02 21:00 ` [PATCH v4 3/6] resource: Introduce resource_union() for overlapping resources Andy Shevchenko
@ 2020-11-02 21:00 ` Andy Shevchenko
  2020-11-02 21:03   ` Kuppuswamy, Sathyanarayanan
  2020-11-03  0:43 ` [PATCH v4 0/6] resource: introduce union(), intersection() API Hanjun Guo
  2020-11-03  6:48 ` Greg Kroah-Hartman
  3 siblings, 1 reply; 9+ messages in thread
From: Andy Shevchenko @ 2020-11-02 21:00 UTC (permalink / raw)
  To: linux-acpi, Greg Kroah-Hartman, linux-kernel
  Cc: Andy Shevchenko, Kuppuswamy Sathyanarayanan, Bjorn Helgaas,
	linux-pci, Rafael J . Wysocki

Since we have resource_union() helper, let's utilize it here.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: linux-pci@vger.kernel.org
Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
---
 drivers/acpi/pci_root.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
index c12b5fb3e8fb..0bf072cef6cf 100644
--- a/drivers/acpi/pci_root.c
+++ b/drivers/acpi/pci_root.c
@@ -722,9 +722,7 @@ static void acpi_pci_root_validate_resources(struct device *dev,
 			 * our resources no longer match the ACPI _CRS, but
 			 * the kernel resource tree doesn't allow overlaps.
 			 */
-			if (resource_overlaps(res1, res2)) {
-				res2->start = min(res1->start, res2->start);
-				res2->end = max(res1->end, res2->end);
+			if (resource_union(res1, res2, res2)) {
 				dev_info(dev, "host bridge window expanded to %pR; %pR ignored\n",
 					 res2, res1);
 				free = true;
-- 
2.28.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH v4 5/6] PCI/ACPI: Replace open coded variant of resource_union()
  2020-11-02 21:00 ` [PATCH v4 5/6] PCI/ACPI: Replace open coded variant of resource_union() Andy Shevchenko
@ 2020-11-02 21:03   ` Kuppuswamy, Sathyanarayanan
  0 siblings, 0 replies; 9+ messages in thread
From: Kuppuswamy, Sathyanarayanan @ 2020-11-02 21:03 UTC (permalink / raw)
  To: Andy Shevchenko, linux-acpi, Greg Kroah-Hartman, linux-kernel
  Cc: Bjorn Helgaas, linux-pci, Rafael J . Wysocki



On 11/2/20 1:00 PM, Andy Shevchenko wrote:
> Since we have resource_union() helper, let's utilize it here.
> 
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Cc: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
> Cc: Bjorn Helgaas <bhelgaas@google.com>
> Cc: linux-pci@vger.kernel.org
> Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
> ---
>   drivers/acpi/pci_root.c | 4 +---
>   1 file changed, 1 insertion(+), 3 deletions(-)
> 
> diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
> index c12b5fb3e8fb..0bf072cef6cf 100644
> --- a/drivers/acpi/pci_root.c
> +++ b/drivers/acpi/pci_root.c
> @@ -722,9 +722,7 @@ static void acpi_pci_root_validate_resources(struct device *dev,
>   			 * our resources no longer match the ACPI _CRS, but
>   			 * the kernel resource tree doesn't allow overlaps.
>   			 */
> -			if (resource_overlaps(res1, res2)) {
> -				res2->start = min(res1->start, res2->start);
> -				res2->end = max(res1->end, res2->end);
> +			if (resource_union(res1, res2, res2)) {
>   				dev_info(dev, "host bridge window expanded to %pR; %pR ignored\n",
>   					 res2, res1);
>   				free = true;
> 

-- 
Sathyanarayanan Kuppuswamy
Linux Kernel Developer

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v4 0/6] resource: introduce union(), intersection() API
  2020-11-02 21:00 [PATCH v4 0/6] resource: introduce union(), intersection() API Andy Shevchenko
  2020-11-02 21:00 ` [PATCH v4 3/6] resource: Introduce resource_union() for overlapping resources Andy Shevchenko
  2020-11-02 21:00 ` [PATCH v4 5/6] PCI/ACPI: Replace open coded variant of resource_union() Andy Shevchenko
@ 2020-11-03  0:43 ` Hanjun Guo
  2020-11-03  8:31   ` Andy Shevchenko
  2020-11-03  6:48 ` Greg Kroah-Hartman
  3 siblings, 1 reply; 9+ messages in thread
From: Hanjun Guo @ 2020-11-03  0:43 UTC (permalink / raw)
  To: Andy Shevchenko, linux-acpi, Greg Kroah-Hartman, linux-kernel
  Cc: Kuppuswamy Sathyanarayanan, Bjorn Helgaas, linux-pci

On 2020/11/3 5:00, Andy Shevchenko wrote:
> Some users may want to use resource library to manage their own resources,
> besides existing users that open code union() and intersection()
> implementations.
> 
> Provide a generic API for wider use.
> 
> Changelog v4:
> - added Rb tag (Rafael)
> - Cc'ed to LKML and Greg (Rafael)
> 
> Changelog v3:
> - rebased on top of v5.10-rc1
> - dropped upstreamed dependencies
> - added Rb tag to the last patch (Mika)
> 
> Cc: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
> Cc: Bjorn Helgaas <bhelgaas@google.com>
> Cc: linux-pci@vger.kernel.org
> 
> Andy Shevchenko (6):
>    resource: Simplify region_intersects() by reducing conditionals
>    resource: Group resource_overlaps() with other inline helpers
>    resource: Introduce resource_union() for overlapping resources
>    resource: Introduce resource_intersection() for overlapping resources
>    PCI/ACPI: Replace open coded variant of resource_union()
>    ACPI: watchdog: Replace open coded variant of resource_union()
> 
>   drivers/acpi/acpi_watchdog.c |  6 +-----
>   drivers/acpi/pci_root.c      |  4 +---
>   include/linux/ioport.h       | 34 +++++++++++++++++++++++++++-------
>   kernel/resource.c            | 10 +++++-----
>   4 files changed, 34 insertions(+), 20 deletions(-)

Reviewed-by: Hanjun Guo <guohanjun@huawei.com>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v4 0/6] resource: introduce union(), intersection() API
  2020-11-02 21:00 [PATCH v4 0/6] resource: introduce union(), intersection() API Andy Shevchenko
                   ` (2 preceding siblings ...)
  2020-11-03  0:43 ` [PATCH v4 0/6] resource: introduce union(), intersection() API Hanjun Guo
@ 2020-11-03  6:48 ` Greg Kroah-Hartman
  2020-11-03  8:32   ` Andy Shevchenko
  3 siblings, 1 reply; 9+ messages in thread
From: Greg Kroah-Hartman @ 2020-11-03  6:48 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: linux-acpi, linux-kernel, Kuppuswamy Sathyanarayanan,
	Bjorn Helgaas, linux-pci

On Mon, Nov 02, 2020 at 11:00:19PM +0200, Andy Shevchenko wrote:
> Some users may want to use resource library to manage their own resources,
> besides existing users that open code union() and intersection()
> implementations.
> 
> Provide a generic API for wider use.
> 
> Changelog v4:
> - added Rb tag (Rafael)
> - Cc'ed to LKML and Greg (Rafael)

Didn't we have some tests for this code somewhere?  Have you added tests
for the new functions you have added?  If not, can you do that so that
we "know" these work properly?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v4 0/6] resource: introduce union(), intersection() API
  2020-11-03  0:43 ` [PATCH v4 0/6] resource: introduce union(), intersection() API Hanjun Guo
@ 2020-11-03  8:31   ` Andy Shevchenko
  2020-11-03  9:44     ` Hanjun Guo
  0 siblings, 1 reply; 9+ messages in thread
From: Andy Shevchenko @ 2020-11-03  8:31 UTC (permalink / raw)
  To: Hanjun Guo
  Cc: Andy Shevchenko, ACPI Devel Maling List, Greg Kroah-Hartman,
	Linux Kernel Mailing List, Kuppuswamy Sathyanarayanan,
	Bjorn Helgaas, linux-pci

On Tue, Nov 3, 2020 at 2:46 AM Hanjun Guo <guohanjun@huawei.com> wrote:
>
> On 2020/11/3 5:00, Andy Shevchenko wrote:
> > Some users may want to use resource library to manage their own resources,
> > besides existing users that open code union() and intersection()
> > implementations.
> >
> > Provide a generic API for wider use.
> >
> > Changelog v4:
> > - added Rb tag (Rafael)
> > - Cc'ed to LKML and Greg (Rafael)
> >
> > Changelog v3:
> > - rebased on top of v5.10-rc1
> > - dropped upstreamed dependencies
> > - added Rb tag to the last patch (Mika)
> >
> > Cc: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
> > Cc: Bjorn Helgaas <bhelgaas@google.com>
> > Cc: linux-pci@vger.kernel.org
> >
> > Andy Shevchenko (6):
> >    resource: Simplify region_intersects() by reducing conditionals
> >    resource: Group resource_overlaps() with other inline helpers
> >    resource: Introduce resource_union() for overlapping resources
> >    resource: Introduce resource_intersection() for overlapping resources
> >    PCI/ACPI: Replace open coded variant of resource_union()
> >    ACPI: watchdog: Replace open coded variant of resource_union()
> >
> >   drivers/acpi/acpi_watchdog.c |  6 +-----
> >   drivers/acpi/pci_root.c      |  4 +---
> >   include/linux/ioport.h       | 34 +++++++++++++++++++++++++++-------
> >   kernel/resource.c            | 10 +++++-----
> >   4 files changed, 34 insertions(+), 20 deletions(-)
>
> Reviewed-by: Hanjun Guo <guohanjun@huawei.com>

Thanks. Is it for the entire series?


-- 
With Best Regards,
Andy Shevchenko

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v4 0/6] resource: introduce union(), intersection() API
  2020-11-03  6:48 ` Greg Kroah-Hartman
@ 2020-11-03  8:32   ` Andy Shevchenko
  0 siblings, 0 replies; 9+ messages in thread
From: Andy Shevchenko @ 2020-11-03  8:32 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Andy Shevchenko, ACPI Devel Maling List,
	Linux Kernel Mailing List, Kuppuswamy Sathyanarayanan,
	Bjorn Helgaas, linux-pci

On Tue, Nov 3, 2020 at 8:53 AM Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
>
> On Mon, Nov 02, 2020 at 11:00:19PM +0200, Andy Shevchenko wrote:
> > Some users may want to use resource library to manage their own resources,
> > besides existing users that open code union() and intersection()
> > implementations.
> >
> > Provide a generic API for wider use.
> >
> > Changelog v4:
> > - added Rb tag (Rafael)
> > - Cc'ed to LKML and Greg (Rafael)
>
> Didn't we have some tests for this code somewhere?  Have you added tests
> for the new functions you have added?  If not, can you do that so that
> we "know" these work properly?

Sure, I'll add for v5. Thanks for the hint!

-- 
With Best Regards,
Andy Shevchenko

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v4 0/6] resource: introduce union(), intersection() API
  2020-11-03  8:31   ` Andy Shevchenko
@ 2020-11-03  9:44     ` Hanjun Guo
  0 siblings, 0 replies; 9+ messages in thread
From: Hanjun Guo @ 2020-11-03  9:44 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Andy Shevchenko, ACPI Devel Maling List, Greg Kroah-Hartman,
	Linux Kernel Mailing List, Kuppuswamy Sathyanarayanan,
	Bjorn Helgaas, linux-pci

On 2020/11/3 16:31, Andy Shevchenko wrote:
> On Tue, Nov 3, 2020 at 2:46 AM Hanjun Guo <guohanjun@huawei.com> wrote:
>>
>> On 2020/11/3 5:00, Andy Shevchenko wrote:
>>> Some users may want to use resource library to manage their own resources,
>>> besides existing users that open code union() and intersection()
>>> implementations.
>>>
>>> Provide a generic API for wider use.
>>>
>>> Changelog v4:
>>> - added Rb tag (Rafael)
>>> - Cc'ed to LKML and Greg (Rafael)
>>>
>>> Changelog v3:
>>> - rebased on top of v5.10-rc1
>>> - dropped upstreamed dependencies
>>> - added Rb tag to the last patch (Mika)
>>>
>>> Cc: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
>>> Cc: Bjorn Helgaas <bhelgaas@google.com>
>>> Cc: linux-pci@vger.kernel.org
>>>
>>> Andy Shevchenko (6):
>>>     resource: Simplify region_intersects() by reducing conditionals
>>>     resource: Group resource_overlaps() with other inline helpers
>>>     resource: Introduce resource_union() for overlapping resources
>>>     resource: Introduce resource_intersection() for overlapping resources
>>>     PCI/ACPI: Replace open coded variant of resource_union()
>>>     ACPI: watchdog: Replace open coded variant of resource_union()
>>>
>>>    drivers/acpi/acpi_watchdog.c |  6 +-----
>>>    drivers/acpi/pci_root.c      |  4 +---
>>>    include/linux/ioport.h       | 34 +++++++++++++++++++++++++++-------
>>>    kernel/resource.c            | 10 +++++-----
>>>    4 files changed, 34 insertions(+), 20 deletions(-)
>>
>> Reviewed-by: Hanjun Guo <guohanjun@huawei.com>
> 
> Thanks. Is it for the entire series?

Yes.

By the way, I tested this patch set on a ARM64 machine booting
with ACPI against 5.10-rc2, and no regressions with PCI, so feel
free to add my Tested-by tag for patch [1,2,3,5/6].

Thanks
Hanjun

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2020-11-03  9:44 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-02 21:00 [PATCH v4 0/6] resource: introduce union(), intersection() API Andy Shevchenko
2020-11-02 21:00 ` [PATCH v4 3/6] resource: Introduce resource_union() for overlapping resources Andy Shevchenko
2020-11-02 21:00 ` [PATCH v4 5/6] PCI/ACPI: Replace open coded variant of resource_union() Andy Shevchenko
2020-11-02 21:03   ` Kuppuswamy, Sathyanarayanan
2020-11-03  0:43 ` [PATCH v4 0/6] resource: introduce union(), intersection() API Hanjun Guo
2020-11-03  8:31   ` Andy Shevchenko
2020-11-03  9:44     ` Hanjun Guo
2020-11-03  6:48 ` Greg Kroah-Hartman
2020-11-03  8:32   ` Andy Shevchenko

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).