* [PATCH v2 1/5] ACPI / boot: Don't define unused variables
2017-07-17 13:29 [Resend, PATCH v2 0/5] ACPI / boot: Few amendments Andy Shevchenko
@ 2017-07-17 13:29 ` Andy Shevchenko
2017-07-17 13:29 ` [PATCH v2 2/5] ACPI / boot: Correct address space of __acpi_map_table() Andy Shevchenko
` (3 subsequent siblings)
4 siblings, 0 replies; 9+ messages in thread
From: Andy Shevchenko @ 2017-07-17 13:29 UTC (permalink / raw)
To: Rafael J . Wysocki, linux-pm, Thomas Gleixner, Ingo Molnar,
H . Peter Anvin, x86, linux-kernel, Hanjun Guo, linux-acpi
Cc: Andy Shevchenko
Some code in acpi_parse_x2apic() conditionally compiled, though parts of
it are being used in any case. This annoys gcc.
arch/x86/kernel/acpi/boot.c: In function ‘acpi_parse_x2apic’:
arch/x86/kernel/acpi/boot.c:203:5: warning: variable ‘enabled’ set but not used [-Wunused-but-set-variable]
u8 enabled;
^~~~~~~
arch/x86/kernel/acpi/boot.c:202:6: warning: variable ‘apic_id’ set but not used [-Wunused-but-set-variable]
int apic_id;
^~~~~~~
Re-arrange the code to avoid compiling unused variables.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
arch/x86/kernel/acpi/boot.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index 6bb680671088..09ddb3cd627a 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -199,8 +199,10 @@ static int __init
acpi_parse_x2apic(struct acpi_subtable_header *header, const unsigned long end)
{
struct acpi_madt_local_x2apic *processor = NULL;
+#ifdef CONFIG_X86_X2APIC
int apic_id;
u8 enabled;
+#endif
processor = (struct acpi_madt_local_x2apic *)header;
@@ -209,9 +211,10 @@ acpi_parse_x2apic(struct acpi_subtable_header *header, const unsigned long end)
acpi_table_print_madt_entry(header);
+#ifdef CONFIG_X86_X2APIC
apic_id = processor->local_apic_id;
enabled = processor->lapic_flags & ACPI_MADT_ENABLED;
-#ifdef CONFIG_X86_X2APIC
+
/*
* We need to register disabled CPU as well to permit
* counting disabled CPUs. This allows us to size
--
2.11.0
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH v2 2/5] ACPI / boot: Correct address space of __acpi_map_table()
2017-07-17 13:29 [Resend, PATCH v2 0/5] ACPI / boot: Few amendments Andy Shevchenko
2017-07-17 13:29 ` [PATCH v2 1/5] ACPI / boot: Don't define unused variables Andy Shevchenko
@ 2017-07-17 13:29 ` Andy Shevchenko
2017-07-18 9:48 ` Hanjun Guo
2017-07-17 13:29 ` [PATCH v2 3/5] ACPI / boot: Add number of legacy IRQs to debug output Andy Shevchenko
` (2 subsequent siblings)
4 siblings, 1 reply; 9+ messages in thread
From: Andy Shevchenko @ 2017-07-17 13:29 UTC (permalink / raw)
To: Rafael J . Wysocki, linux-pm, Thomas Gleixner, Ingo Molnar,
H . Peter Anvin, x86, linux-kernel, Hanjun Guo, linux-acpi
Cc: Andy Shevchenko
Sparse complains about wrong address space used in __acpi_map_table()
and in __acpi_unmap_table().
arch/x86/kernel/acpi/boot.c:127:29: warning: incorrect type in return expression (different address spaces)
arch/x86/kernel/acpi/boot.c:127:29: expected char *
arch/x86/kernel/acpi/boot.c:127:29: got void [noderef] <asn:2>*
arch/x86/kernel/acpi/boot.c:135:23: warning: incorrect type in argument 1 (different address spaces)
arch/x86/kernel/acpi/boot.c:135:23: expected void [noderef] <asn:2>*addr
arch/x86/kernel/acpi/boot.c:135:23: got char *map
Correct address space to be in align of type of returned and passed
parameter.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
arch/arm64/kernel/acpi.c | 4 ++--
arch/ia64/kernel/acpi.c | 4 ++--
arch/x86/kernel/acpi/boot.c | 4 ++--
include/linux/acpi.h | 4 ++--
4 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/arch/arm64/kernel/acpi.c b/arch/arm64/kernel/acpi.c
index e25c11e727fe..b3162715ed78 100644
--- a/arch/arm64/kernel/acpi.c
+++ b/arch/arm64/kernel/acpi.c
@@ -95,7 +95,7 @@ static int __init dt_scan_depth1_nodes(unsigned long node,
* __acpi_map_table() will be called before page_init(), so early_ioremap()
* or early_memremap() should be called here to for ACPI table mapping.
*/
-char *__init __acpi_map_table(unsigned long phys, unsigned long size)
+void __init __iomem *__acpi_map_table(unsigned long phys, unsigned long size)
{
if (!size)
return NULL;
@@ -103,7 +103,7 @@ char *__init __acpi_map_table(unsigned long phys, unsigned long size)
return early_memremap(phys, size);
}
-void __init __acpi_unmap_table(char *map, unsigned long size)
+void __init __acpi_unmap_table(void __iomem *map, unsigned long size)
{
if (!map || !size)
return;
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
index 7508c306aa9e..b9388cc283bc 100644
--- a/arch/ia64/kernel/acpi.c
+++ b/arch/ia64/kernel/acpi.c
@@ -159,12 +159,12 @@ int acpi_request_vector(u32 int_type)
return vector;
}
-char *__init __acpi_map_table(unsigned long phys_addr, unsigned long size)
+void __init __iomem *__acpi_map_table(unsigned long phys, unsigned long size)
{
return __va(phys_addr);
}
-void __init __acpi_unmap_table(char *map, unsigned long size)
+void __init __acpi_unmap_table(void __iomem *map, unsigned long size)
{
}
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index 09ddb3cd627a..6d5b1346268a 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -118,7 +118,7 @@ static u32 isa_irq_to_gsi[NR_IRQS_LEGACY] __read_mostly = {
* This is just a simple wrapper around early_ioremap(),
* with sanity checks for phys == 0 and size == 0.
*/
-char *__init __acpi_map_table(unsigned long phys, unsigned long size)
+void __init __iomem *__acpi_map_table(unsigned long phys, unsigned long size)
{
if (!phys || !size)
@@ -127,7 +127,7 @@ char *__init __acpi_map_table(unsigned long phys, unsigned long size)
return early_ioremap(phys, size);
}
-void __init __acpi_unmap_table(char *map, unsigned long size)
+void __init __acpi_unmap_table(void __iomem *map, unsigned long size)
{
if (!map || !size)
return;
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index c749eef1daa1..3848b56fcd83 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -228,8 +228,8 @@ struct acpi_subtable_proc {
int count;
};
-char * __acpi_map_table (unsigned long phys_addr, unsigned long size);
-void __acpi_unmap_table(char *map, unsigned long size);
+void __iomem *__acpi_map_table(unsigned long phys_addr, unsigned long size);
+void __acpi_unmap_table(void __iomem *map, unsigned long size);
int early_acpi_boot_init(void);
int acpi_boot_init (void);
void acpi_boot_table_init (void);
--
2.11.0
^ permalink raw reply related [flat|nested] 9+ messages in thread* Re: [PATCH v2 2/5] ACPI / boot: Correct address space of __acpi_map_table()
2017-07-17 13:29 ` [PATCH v2 2/5] ACPI / boot: Correct address space of __acpi_map_table() Andy Shevchenko
@ 2017-07-18 9:48 ` Hanjun Guo
0 siblings, 0 replies; 9+ messages in thread
From: Hanjun Guo @ 2017-07-18 9:48 UTC (permalink / raw)
To: Andy Shevchenko, Rafael J . Wysocki, linux-pm, Thomas Gleixner,
Ingo Molnar, H . Peter Anvin, x86, linux-kernel, linux-acpi
On 2017/7/17 21:29, Andy Shevchenko wrote:
> Sparse complains about wrong address space used in __acpi_map_table()
> and in __acpi_unmap_table().
>
> arch/x86/kernel/acpi/boot.c:127:29: warning: incorrect type in return expression (different address spaces)
> arch/x86/kernel/acpi/boot.c:127:29: expected char *
> arch/x86/kernel/acpi/boot.c:127:29: got void [noderef] <asn:2>*
> arch/x86/kernel/acpi/boot.c:135:23: warning: incorrect type in argument 1 (different address spaces)
> arch/x86/kernel/acpi/boot.c:135:23: expected void [noderef] <asn:2>*addr
> arch/x86/kernel/acpi/boot.c:135:23: got char *map
>
> Correct address space to be in align of type of returned and passed
> parameter.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
> arch/arm64/kernel/acpi.c | 4 ++--
> arch/ia64/kernel/acpi.c | 4 ++--
> arch/x86/kernel/acpi/boot.c | 4 ++--
> include/linux/acpi.h | 4 ++--
> 4 files changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/arch/arm64/kernel/acpi.c b/arch/arm64/kernel/acpi.c
> index e25c11e727fe..b3162715ed78 100644
> --- a/arch/arm64/kernel/acpi.c
> +++ b/arch/arm64/kernel/acpi.c
> @@ -95,7 +95,7 @@ static int __init dt_scan_depth1_nodes(unsigned long node,
> * __acpi_map_table() will be called before page_init(), so early_ioremap()
> * or early_memremap() should be called here to for ACPI table mapping.
> */
> -char *__init __acpi_map_table(unsigned long phys, unsigned long size)
> +void __init __iomem *__acpi_map_table(unsigned long phys, unsigned long size)
> {
> if (!size)
> return NULL;
> @@ -103,7 +103,7 @@ char *__init __acpi_map_table(unsigned long phys, unsigned long size)
> return early_memremap(phys, size);
> }
>
> -void __init __acpi_unmap_table(char *map, unsigned long size)
> +void __init __acpi_unmap_table(void __iomem *map, unsigned long size)
> {
> if (!map || !size)
> return;
> diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
> index 7508c306aa9e..b9388cc283bc 100644
> --- a/arch/ia64/kernel/acpi.c
> +++ b/arch/ia64/kernel/acpi.c
> @@ -159,12 +159,12 @@ int acpi_request_vector(u32 int_type)
> return vector;
> }
>
> -char *__init __acpi_map_table(unsigned long phys_addr, unsigned long size)
> +void __init __iomem *__acpi_map_table(unsigned long phys, unsigned long size)
> {
> return __va(phys_addr);
> }
>
> -void __init __acpi_unmap_table(char *map, unsigned long size)
> +void __init __acpi_unmap_table(void __iomem *map, unsigned long size)
> {
> }
>
> diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
> index 09ddb3cd627a..6d5b1346268a 100644
> --- a/arch/x86/kernel/acpi/boot.c
> +++ b/arch/x86/kernel/acpi/boot.c
> @@ -118,7 +118,7 @@ static u32 isa_irq_to_gsi[NR_IRQS_LEGACY] __read_mostly = {
> * This is just a simple wrapper around early_ioremap(),
> * with sanity checks for phys == 0 and size == 0.
> */
> -char *__init __acpi_map_table(unsigned long phys, unsigned long size)
> +void __init __iomem *__acpi_map_table(unsigned long phys, unsigned long size)
> {
>
> if (!phys || !size)
> @@ -127,7 +127,7 @@ char *__init __acpi_map_table(unsigned long phys, unsigned long size)
> return early_ioremap(phys, size);
> }
>
> -void __init __acpi_unmap_table(char *map, unsigned long size)
> +void __init __acpi_unmap_table(void __iomem *map, unsigned long size)
> {
> if (!map || !size)
> return;
> diff --git a/include/linux/acpi.h b/include/linux/acpi.h
> index c749eef1daa1..3848b56fcd83 100644
> --- a/include/linux/acpi.h
> +++ b/include/linux/acpi.h
> @@ -228,8 +228,8 @@ struct acpi_subtable_proc {
> int count;
> };
>
> -char * __acpi_map_table (unsigned long phys_addr, unsigned long size);
> -void __acpi_unmap_table(char *map, unsigned long size);
> +void __iomem *__acpi_map_table(unsigned long phys_addr, unsigned long size);
> +void __acpi_unmap_table(void __iomem *map, unsigned long size);
> int early_acpi_boot_init(void);
> int acpi_boot_init (void);
> void acpi_boot_table_init (void);
Thanks for the update,
Reviewed-by: Hanjun Guo <guohanjun@huawei.com>
Thanks
Hanjun
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2 3/5] ACPI / boot: Add number of legacy IRQs to debug output
2017-07-17 13:29 [Resend, PATCH v2 0/5] ACPI / boot: Few amendments Andy Shevchenko
2017-07-17 13:29 ` [PATCH v2 1/5] ACPI / boot: Don't define unused variables Andy Shevchenko
2017-07-17 13:29 ` [PATCH v2 2/5] ACPI / boot: Correct address space of __acpi_map_table() Andy Shevchenko
@ 2017-07-17 13:29 ` Andy Shevchenko
2017-07-17 13:29 ` [PATCH v2 4/5] ACPI / boot: Not all platform require acpi_reduced_hw_init() Andy Shevchenko
2017-07-17 13:29 ` [PATCH v2 5/5] ACPI / boot: Don't handle SCI on HW reduced platforms Andy Shevchenko
4 siblings, 0 replies; 9+ messages in thread
From: Andy Shevchenko @ 2017-07-17 13:29 UTC (permalink / raw)
To: Rafael J . Wysocki, linux-pm, Thomas Gleixner, Ingo Molnar,
H . Peter Anvin, x86, linux-kernel, Hanjun Guo, linux-acpi
Cc: Andy Shevchenko
Sometimes it's useful to have when mp_config_acpi_legacy_irqs() is called.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
arch/x86/kernel/acpi/boot.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index 6d5b1346268a..0186d3bae610 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -1078,7 +1078,7 @@ static void __init mp_config_acpi_legacy_irqs(void)
mp_bus_id_to_type[MP_ISA_BUS] = MP_BUS_ISA;
#endif
set_bit(MP_ISA_BUS, mp_bus_not_pci);
- pr_debug("Bus #%d is ISA\n", MP_ISA_BUS);
+ pr_debug("Bus #%d is ISA (nIRQs: %d)\n", MP_ISA_BUS, nr_legacy_irqs());
/*
* Use the default configuration for the IRQs 0-15. Unless
--
2.11.0
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH v2 4/5] ACPI / boot: Not all platform require acpi_reduced_hw_init()
2017-07-17 13:29 [Resend, PATCH v2 0/5] ACPI / boot: Few amendments Andy Shevchenko
` (2 preceding siblings ...)
2017-07-17 13:29 ` [PATCH v2 3/5] ACPI / boot: Add number of legacy IRQs to debug output Andy Shevchenko
@ 2017-07-17 13:29 ` Andy Shevchenko
2017-07-17 13:29 ` [PATCH v2 5/5] ACPI / boot: Don't handle SCI on HW reduced platforms Andy Shevchenko
4 siblings, 0 replies; 9+ messages in thread
From: Andy Shevchenko @ 2017-07-17 13:29 UTC (permalink / raw)
To: Rafael J . Wysocki, linux-pm, Thomas Gleixner, Ingo Molnar,
H . Peter Anvin, x86, linux-kernel, Hanjun Guo, linux-acpi
Cc: Andy Shevchenko
Some platform might take care of legacy devices on theirs own.
Let's allow them to do that by exporting a weak function.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
arch/x86/kernel/acpi/boot.c | 2 +-
include/linux/acpi.h | 3 +++
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index 0186d3bae610..71c0feae60a4 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -1348,7 +1348,7 @@ static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d)
*
* We initialize the Hardware-reduced ACPI model here:
*/
-static void __init acpi_reduced_hw_init(void)
+void __init __weak acpi_reduced_hw_init(void)
{
if (acpi_gbl_reduced_hardware) {
/*
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 3848b56fcd83..3ef30a7b5444 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -230,6 +230,8 @@ struct acpi_subtable_proc {
void __iomem *__acpi_map_table(unsigned long phys_addr, unsigned long size);
void __acpi_unmap_table(void __iomem *map, unsigned long size);
+
+void acpi_reduced_hw_init(void);
int early_acpi_boot_init(void);
int acpi_boot_init (void);
void acpi_boot_table_init (void);
@@ -682,6 +684,7 @@ static inline struct device *acpi_get_first_physical_node(struct acpi_device *ad
static inline void acpi_early_init(void) { }
static inline void acpi_subsystem_init(void) { }
+static inline void acpi_reduced_hw_init(void) { }
static inline int early_acpi_boot_init(void)
{
return 0;
--
2.11.0
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH v2 5/5] ACPI / boot: Don't handle SCI on HW reduced platforms
2017-07-17 13:29 [Resend, PATCH v2 0/5] ACPI / boot: Few amendments Andy Shevchenko
` (3 preceding siblings ...)
2017-07-17 13:29 ` [PATCH v2 4/5] ACPI / boot: Not all platform require acpi_reduced_hw_init() Andy Shevchenko
@ 2017-07-17 13:29 ` Andy Shevchenko
2017-07-18 9:49 ` Hanjun Guo
4 siblings, 1 reply; 9+ messages in thread
From: Andy Shevchenko @ 2017-07-17 13:29 UTC (permalink / raw)
To: Rafael J . Wysocki, linux-pm, Thomas Gleixner, Ingo Molnar,
H . Peter Anvin, x86, linux-kernel, Hanjun Guo, linux-acpi
Cc: Andy Shevchenko
WIP
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
arch/x86/kernel/acpi/boot.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index 71c0feae60a4..4413cc2f7c3c 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -1184,7 +1184,7 @@ static int __init acpi_parse_madt_ioapic_entries(void)
* If BIOS did not supply an INT_SRC_OVR for the SCI
* pretend we got one so we can set the SCI flags.
*/
- if (!acpi_sci_override_gsi)
+ if (!acpi_sci_override_gsi && !acpi_gbl_reduced_hardware)
acpi_sci_ioapic_setup(acpi_gbl_FADT.sci_interrupt, 0, 0,
acpi_gbl_FADT.sci_interrupt);
--
2.11.0
^ permalink raw reply related [flat|nested] 9+ messages in thread* Re: [PATCH v2 5/5] ACPI / boot: Don't handle SCI on HW reduced platforms
2017-07-17 13:29 ` [PATCH v2 5/5] ACPI / boot: Don't handle SCI on HW reduced platforms Andy Shevchenko
@ 2017-07-18 9:49 ` Hanjun Guo
2017-07-18 10:11 ` Andy Shevchenko
0 siblings, 1 reply; 9+ messages in thread
From: Hanjun Guo @ 2017-07-18 9:49 UTC (permalink / raw)
To: Andy Shevchenko, Rafael J . Wysocki, linux-pm, Thomas Gleixner,
Ingo Molnar, H . Peter Anvin, x86, linux-kernel, linux-acpi
On 2017/7/17 21:29, Andy Shevchenko wrote:
> WIP
Does it mean not ready for upstream yet?
Thanks
Hanjun
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 5/5] ACPI / boot: Don't handle SCI on HW reduced platforms
2017-07-18 9:49 ` Hanjun Guo
@ 2017-07-18 10:11 ` Andy Shevchenko
0 siblings, 0 replies; 9+ messages in thread
From: Andy Shevchenko @ 2017-07-18 10:11 UTC (permalink / raw)
To: Hanjun Guo, Rafael J . Wysocki, linux-pm, Thomas Gleixner,
Ingo Molnar, H . Peter Anvin, x86, linux-kernel, linux-acpi
On Tue, 2017-07-18 at 17:49 +0800, Hanjun Guo wrote:
> On 2017/7/17 21:29, Andy Shevchenko wrote:
> > WIP
>
> Does it mean not ready for upstream yet?
Yep, this patch is subject to discussion. I will update it in v3, though
it would be nice to discuss anyway (and test on some hardware reduced
platforms).
--
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy
^ permalink raw reply [flat|nested] 9+ messages in thread