Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1432358 > unrolled thread

[PATCH 1/2] x86/mm/numa: Open code function early_get_boot_cpu_id

Started byBaoquan He <bhe@redhat.com>
First post2016-06-28 01:50 +0200
Last post2016-07-09 04:10 +0200
Articles 8 — 3 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH 1/2] x86/mm/numa: Open code function early_get_boot_cpu_id Baoquan He <bhe@redhat.com> - 2016-06-28 01:50 +0200
    [PATCH 2/2] x86/acpi: Remove the repeated lapic address override entry parsing Baoquan He <bhe@redhat.com> - 2016-06-28 01:50 +0200
      Re: [PATCH 2/2] x86/acpi: Remove the repeated lapic address override entry parsing "Rafael J. Wysocki" <rjw@rjwysocki.net> - 2016-06-28 03:30 +0200
        Re: [PATCH 2/2] x86/acpi: Remove the repeated lapic address override  entry parsing Baoquan He <bhe@redhat.com> - 2016-06-28 05:40 +0200
      [PATCH v2 2/2] x86/acpi: Remove the repeated lapic address override  entry parsing Baoquan He <bhe@redhat.com> - 2016-06-30 10:10 +0200
        Re: [PATCH v2 2/2] x86/acpi: Remove the repeated lapic address  override entry parsing Ingo Molnar <mingo@kernel.org> - 2016-07-08 14:30 +0200
          Re: [PATCH v2 2/2] x86/acpi: Remove the repeated lapic address  override entry parsing Baoquan He <bhe@redhat.com> - 2016-07-08 15:00 +0200
          Re: [PATCH v2 2/2] x86/acpi: Remove the repeated lapic address  override entry parsing Baoquan He <bhe@redhat.com> - 2016-07-09 04:10 +0200

#1432358 — [PATCH 1/2] x86/mm/numa: Open code function early_get_boot_cpu_id

FromBaoquan He <bhe@redhat.com>
Date2016-06-28 01:50 +0200
Subject[PATCH 1/2] x86/mm/numa: Open code function early_get_boot_cpu_id
Message-ID<rOOrT-7eT-1@gated-at.bofh.it>
Previously early_acpi_boot_init is called in early_get_boot_cpu_id()
to get value for boot_cpu_physical_apicid. Now early_acpi_boot_init()
has been taken out moved to setup_arch(), the name of
early_get_boot_cpu_id doesn't match its implementation. And only the
getting boot-time SMP configuration code is left. So in this patch
open code it.

Signed-off-by: Baoquan He <bhe@redhat.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
---
 arch/x86/mm/amdtopology.c | 25 ++++++++-----------------
 1 file changed, 8 insertions(+), 17 deletions(-)

diff --git a/arch/x86/mm/amdtopology.c b/arch/x86/mm/amdtopology.c
index 2ca15b59..9928dad 100644
--- a/arch/x86/mm/amdtopology.c
+++ b/arch/x86/mm/amdtopology.c
@@ -53,21 +53,6 @@ static __init int find_northbridge(void)
 	return -ENOENT;
 }
 
-static __init void early_get_boot_cpu_id(void)
-{
-	/*
-	 * need to get the APIC ID of the BSP so can use that to
-	 * create apicid_to_node in amd_scan_nodes()
-	 */
-#ifdef CONFIG_X86_MPPARSE
-	/*
-	 * get boot-time SMP configuration:
-	 */
-	if (smp_found_config)
-		early_get_smp_config();
-#endif
-}
-
 int __init amd_numa_init(void)
 {
 	u64 start = PFN_PHYS(0);
@@ -181,8 +166,14 @@ int __init amd_numa_init(void)
 	cores = 1 << bits;
 	apicid_base = 0;
 
-	/* get the APIC ID of the BSP early for systems with apicid lifting */
-	early_get_boot_cpu_id();
+#ifdef CONFIG_X86_MPPARSE
+	/*
+	 * get boot-time SMP configuration:
+	 */
+	if (smp_found_config)
+		early_get_smp_config();
+#endif
+
 	if (boot_cpu_physical_apicid > 0) {
 		pr_info("BSP APIC ID: %02x\n", boot_cpu_physical_apicid);
 		apicid_base = boot_cpu_physical_apicid;
-- 
2.5.5

[toc] | [next] | [standalone]


#1432359 — [PATCH 2/2] x86/acpi: Remove the repeated lapic address override entry parsing

FromBaoquan He <bhe@redhat.com>
Date2016-06-28 01:50 +0200
Subject[PATCH 2/2] x86/acpi: Remove the repeated lapic address override entry parsing
Message-ID<rOOrT-7eT-5@gated-at.bofh.it>
In reply to#1432358
ACPI MADT has a 32-bit field providing lapic address at which
each processor can access its lapic information. MADT also contains
an optional entry to provide a 64-bit address to override the 32-bit
one. However the current code does the lapic address override entry
parsing twice. One is in early_acpi_boot_init() because AMD NUMA need
get boot_cpu_id earlier. The other is in acpi_boot_init() which parses
all MADT entries. The relevant log will be printed out twice too and
this may confuse people.

So in this patch remove the repeated code in the 2nd part. Meanwhile
add code comment above early_acpi_boot_init() to explain why its
calling need be earlier, and print lapic override inforamtion like
other MADT entry.

Signed-off-by: Baoquan He <bhe@redhat.com>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Cc: Len Brown <len.brown@intel.com>
Cc: Pavel Machek <pavel@ucw.cz>
Cc: Thomas Gleixner <tglx@linutronix.de> 
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Shaohua Li <shli@fb.com>
Cc: Viresh Kumar <viresh.kumar@linaro.org>
Cc: Hidehiro Kawai <hidehiro.kawai.ez@hitachi.com>
Cc: Juergen Gross <jgross@suse.com>
Cc: Joerg Roedel <jroedel@suse.de>
Cc: Dave Young <dyoung@redhat.com>
Cc: Lv Zheng <lv.zheng@intel.com>
Cc: Toshi Kani <toshi.kani@hpe.com>
Cc: Mark Salter <msalter@redhat.com>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
---
 arch/x86/kernel/acpi/boot.c | 17 ++---------------
 arch/x86/kernel/apic/apic.c |  2 +-
 arch/x86/kernel/setup.c     |  3 +++
 3 files changed, 6 insertions(+), 16 deletions(-)

diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index 9414f84..6ef3694 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -274,6 +274,8 @@ acpi_parse_lapic_addr_ovr(struct acpi_subtable_header * header,
 	if (BAD_MADT_ENTRY(lapic_addr_ovr, end))
 		return -EINVAL;
 
+	acpi_table_print_madt_entry(header);
+
 	acpi_lapic_addr = lapic_addr_ovr->address;
 
 	return 0;
@@ -990,21 +992,6 @@ static int __init acpi_parse_madt_lapic_entries(void)
 	if (!boot_cpu_has(X86_FEATURE_APIC))
 		return -ENODEV;
 
-	/*
-	 * Note that the LAPIC address is obtained from the MADT (32-bit value)
-	 * and (optionally) overridden by a LAPIC_ADDR_OVR entry (64-bit value).
-	 */
-
-	count = acpi_table_parse_madt(ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE,
-				      acpi_parse_lapic_addr_ovr, 0);
-	if (count < 0) {
-		printk(KERN_ERR PREFIX
-		       "Error parsing LAPIC address override entry\n");
-		return count;
-	}
-
-	register_lapic_address(acpi_lapic_addr);
-
 	count = acpi_table_parse_madt(ACPI_MADT_TYPE_LOCAL_SAPIC,
 				      acpi_parse_sapic, MAX_LOCAL_APIC);
 
diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
index 60078a6..504311c 100644
--- a/arch/x86/kernel/apic/apic.c
+++ b/arch/x86/kernel/apic/apic.c
@@ -1799,7 +1799,7 @@ void __init register_lapic_address(unsigned long address)
 	if (!x2apic_mode) {
 		set_fixmap_nocache(FIX_APIC_BASE, address);
 		apic_printk(APIC_VERBOSE, "mapped APIC to %16lx (%16lx)\n",
-			    APIC_BASE, mp_lapic_addr);
+			    APIC_BASE, address);
 	}
 	if (boot_cpu_physical_apicid == -1U) {
 		boot_cpu_physical_apicid  = read_apic_id();
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index c4e7b39..059680d 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -1157,6 +1157,9 @@ void __init setup_arch(char **cmdline_p)
 	 */
 	acpi_boot_table_init();
 
+	/*
+	 * AMD NUMA support need get boot_cpu_id earlier.
+	 */
 	early_acpi_boot_init();
 
 	initmem_init();
-- 
2.5.5

[toc] | [prev] | [next] | [standalone]


#1432383 — Re: [PATCH 2/2] x86/acpi: Remove the repeated lapic address override entry parsing

From"Rafael J. Wysocki" <rjw@rjwysocki.net>
Date2016-06-28 03:30 +0200
SubjectRe: [PATCH 2/2] x86/acpi: Remove the repeated lapic address override entry parsing
Message-ID<rOQ0F-8jr-1@gated-at.bofh.it>
In reply to#1432359
On Tuesday, June 28, 2016 07:41:36 AM Baoquan He wrote:
> ACPI MADT has a 32-bit field providing lapic address at which
> each processor can access its lapic information. MADT also contains
> an optional entry to provide a 64-bit address to override the 32-bit
> one. However the current code does the lapic address override entry
> parsing twice. One is in early_acpi_boot_init() because AMD NUMA need
> get boot_cpu_id earlier. The other is in acpi_boot_init() which parses
> all MADT entries. The relevant log will be printed out twice too and
> this may confuse people.
> 
> So in this patch remove the repeated code in the 2nd part. Meanwhile
> add code comment above early_acpi_boot_init() to explain why its
> calling need be earlier, and print lapic override inforamtion like
> other MADT entry.
> 
> Signed-off-by: Baoquan He <bhe@redhat.com>
> Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
> Cc: Len Brown <len.brown@intel.com>
> Cc: Pavel Machek <pavel@ucw.cz>
> Cc: Thomas Gleixner <tglx@linutronix.de> 
> Cc: Ingo Molnar <mingo@redhat.com>
> Cc: "H. Peter Anvin" <hpa@zytor.com>
> Cc: Borislav Petkov <bp@suse.de>
> Cc: Andy Lutomirski <luto@kernel.org>
> Cc: Shaohua Li <shli@fb.com>
> Cc: Viresh Kumar <viresh.kumar@linaro.org>
> Cc: Hidehiro Kawai <hidehiro.kawai.ez@hitachi.com>
> Cc: Juergen Gross <jgross@suse.com>
> Cc: Joerg Roedel <jroedel@suse.de>
> Cc: Dave Young <dyoung@redhat.com>
> Cc: Lv Zheng <lv.zheng@intel.com>
> Cc: Toshi Kani <toshi.kani@hpe.com>
> Cc: Mark Salter <msalter@redhat.com>
> Cc: Dave Hansen <dave.hansen@linux.intel.com>
> ---
>  arch/x86/kernel/acpi/boot.c | 17 ++---------------
>  arch/x86/kernel/apic/apic.c |  2 +-
>  arch/x86/kernel/setup.c     |  3 +++
>  3 files changed, 6 insertions(+), 16 deletions(-)
> 
> diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
> index 9414f84..6ef3694 100644
> --- a/arch/x86/kernel/acpi/boot.c
> +++ b/arch/x86/kernel/acpi/boot.c
> @@ -274,6 +274,8 @@ acpi_parse_lapic_addr_ovr(struct acpi_subtable_header * header,
>  	if (BAD_MADT_ENTRY(lapic_addr_ovr, end))
>  		return -EINVAL;
>  
> +	acpi_table_print_madt_entry(header);
> +
>  	acpi_lapic_addr = lapic_addr_ovr->address;
>  
>  	return 0;
> @@ -990,21 +992,6 @@ static int __init acpi_parse_madt_lapic_entries(void)
>  	if (!boot_cpu_has(X86_FEATURE_APIC))
>  		return -ENODEV;
>  
> -	/*
> -	 * Note that the LAPIC address is obtained from the MADT (32-bit value)
> -	 * and (optionally) overridden by a LAPIC_ADDR_OVR entry (64-bit value).
> -	 */
> -
> -	count = acpi_table_parse_madt(ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE,
> -				      acpi_parse_lapic_addr_ovr, 0);
> -	if (count < 0) {
> -		printk(KERN_ERR PREFIX
> -		       "Error parsing LAPIC address override entry\n");
> -		return count;
> -	}
> -
> -	register_lapic_address(acpi_lapic_addr);
> -

I'm not really sure if this change is correct.

Does it only deal with the override?

>  	count = acpi_table_parse_madt(ACPI_MADT_TYPE_LOCAL_SAPIC,
>  				      acpi_parse_sapic, MAX_LOCAL_APIC);
>  
> diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
> index 60078a6..504311c 100644
> --- a/arch/x86/kernel/apic/apic.c
> +++ b/arch/x86/kernel/apic/apic.c
> @@ -1799,7 +1799,7 @@ void __init register_lapic_address(unsigned long address)
>  	if (!x2apic_mode) {
>  		set_fixmap_nocache(FIX_APIC_BASE, address);
>  		apic_printk(APIC_VERBOSE, "mapped APIC to %16lx (%16lx)\n",
> -			    APIC_BASE, mp_lapic_addr);
> +			    APIC_BASE, address);
>  	}
>  	if (boot_cpu_physical_apicid == -1U) {
>  		boot_cpu_physical_apicid  = read_apic_id();
> diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
> index c4e7b39..059680d 100644
> --- a/arch/x86/kernel/setup.c
> +++ b/arch/x86/kernel/setup.c
> @@ -1157,6 +1157,9 @@ void __init setup_arch(char **cmdline_p)
>  	 */
>  	acpi_boot_table_init();
>  
> +	/*
> +	 * AMD NUMA support need get boot_cpu_id earlier.
> +	 */

Surely that's not the only goal of early_acpi_boot_init(), is it?

>  	early_acpi_boot_init();
>  
>  	initmem_init();
> 

Please CC ACPI-related patches to linux-acpi@vger.kernel.org.

Thanks,
Rafael

[toc] | [prev] | [next] | [standalone]


#1432437 — Re: [PATCH 2/2] x86/acpi: Remove the repeated lapic address override entry parsing

FromBaoquan He <bhe@redhat.com>
Date2016-06-28 05:40 +0200
SubjectRe: [PATCH 2/2] x86/acpi: Remove the repeated lapic address override entry parsing
Message-ID<rOS2t-1ib-3@gated-at.bofh.it>
In reply to#1432383
On 06/28/16 at 03:25am, Rafael J. Wysocki wrote:
 
> > diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
> > index 9414f84..6ef3694 100644
> > --- a/arch/x86/kernel/acpi/boot.c
> > +++ b/arch/x86/kernel/acpi/boot.c
> > @@ -990,21 +992,6 @@ static int __init acpi_parse_madt_lapic_entries(void)
> >  	if (!boot_cpu_has(X86_FEATURE_APIC))
> >  		return -ENODEV;
> >  
> > -	/*
> > -	 * Note that the LAPIC address is obtained from the MADT (32-bit value)
> > -	 * and (optionally) overridden by a LAPIC_ADDR_OVR entry (64-bit value).
> > -	 */
> > -
> > -	count = acpi_table_parse_madt(ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE,
> > -				      acpi_parse_lapic_addr_ovr, 0);
> > -	if (count < 0) {
> > -		printk(KERN_ERR PREFIX
> > -		       "Error parsing LAPIC address override entry\n");
> > -		return count;
> > -	}
> > -
> > -	register_lapic_address(acpi_lapic_addr);
> > -
> 
> I'm not really sure if this change is correct.
> 
> Does it only deal with the override?

Hi Rafael,

Thanks for your comments.

Yes, it only deals with the override and it will call
register_lapic_address to set fixed mapping for lapic and get value for
boot_cpu_physical_apicid. Since this has heen done in
early_acpi_boot_init() there's no need to do it again in
acpi_boot_init().


> 
> >  	count = acpi_table_parse_madt(ACPI_MADT_TYPE_LOCAL_SAPIC,
> >  				      acpi_parse_sapic, MAX_LOCAL_APIC);
> >  
> > diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
> > index 60078a6..504311c 100644
> > --- a/arch/x86/kernel/apic/apic.c
> > +++ b/arch/x86/kernel/apic/apic.c
> > @@ -1799,7 +1799,7 @@ void __init register_lapic_address(unsigned long address)
> >  	if (!x2apic_mode) {
> >  		set_fixmap_nocache(FIX_APIC_BASE, address);
> >  		apic_printk(APIC_VERBOSE, "mapped APIC to %16lx (%16lx)\n",
> > -			    APIC_BASE, mp_lapic_addr);
> > +			    APIC_BASE, address);
> >  	}
> >  	if (boot_cpu_physical_apicid == -1U) {
> >  		boot_cpu_physical_apicid  = read_apic_id();
> > diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
> > index c4e7b39..059680d 100644
> > --- a/arch/x86/kernel/setup.c
> > +++ b/arch/x86/kernel/setup.c
> > @@ -1157,6 +1157,9 @@ void __init setup_arch(char **cmdline_p)
> >  	 */
> >  	acpi_boot_table_init();
> >  
> > +	/*
> > +	 * AMD NUMA support need get boot_cpu_id earlier.
> > +	 */
> 
> Surely that's not the only goal of early_acpi_boot_init(), is it?

In commit cbf9bd60(acpi: get boot_cpu_id as early for k8_scan_nodes)
Yinghai added early_acpi_boot_init() and called it in amd numa code.
Then commit 2e42060c(x86, uv: add early detection of UV system types)
put it in arch/x86/kernel/setup.c to discover the apic type earlier.

So, you are right. This command adding is not correct.

> 
> >  	early_acpi_boot_init();
> >  
> >  	initmem_init();
> > 
> 
> Please CC ACPI-related patches to linux-acpi@vger.kernel.org.

Will do when repost.

> 
> Thanks,
> Rafael
> 

[toc] | [prev] | [next] | [standalone]


#1434328 — [PATCH v2 2/2] x86/acpi: Remove the repeated lapic address override entry parsing

FromBaoquan He <bhe@redhat.com>
Date2016-06-30 10:10 +0200
Subject[PATCH v2 2/2] x86/acpi: Remove the repeated lapic address override entry parsing
Message-ID<rPFcS-79h-37@gated-at.bofh.it>
In reply to#1432359
ACPI MADT has a 32-bit field providing lapic address at which
each processor can access its lapic information. MADT also contains
an optional entry to provide a 64-bit address to override the 32-bit
one. However the current code does the lapic address override entry
parsing twice. One is in early_acpi_boot_init() because AMD NUMA need
get boot_cpu_id earlier. The other is in acpi_boot_init() which parses
all MADT entries.

So in this patch remove the repeated code in the 2nd part. Meanwhile
print lapic override entry information like other MADT entry.

Signed-off-by: Baoquan He <bhe@redhat.com>
---

v1->v2:
   -Remove the not correct code comment above early_acpi_boot_init()
    as Rafael suggested.

 arch/x86/kernel/acpi/boot.c | 17 ++---------------
 arch/x86/kernel/apic/apic.c |  2 +-
 2 files changed, 3 insertions(+), 16 deletions(-)

diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index 9414f84..6ef3694 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -274,6 +274,8 @@ acpi_parse_lapic_addr_ovr(struct acpi_subtable_header * header,
 	if (BAD_MADT_ENTRY(lapic_addr_ovr, end))
 		return -EINVAL;
 
+	acpi_table_print_madt_entry(header);
+
 	acpi_lapic_addr = lapic_addr_ovr->address;
 
 	return 0;
@@ -990,21 +992,6 @@ static int __init acpi_parse_madt_lapic_entries(void)
 	if (!boot_cpu_has(X86_FEATURE_APIC))
 		return -ENODEV;
 
-	/*
-	 * Note that the LAPIC address is obtained from the MADT (32-bit value)
-	 * and (optionally) overridden by a LAPIC_ADDR_OVR entry (64-bit value).
-	 */
-
-	count = acpi_table_parse_madt(ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE,
-				      acpi_parse_lapic_addr_ovr, 0);
-	if (count < 0) {
-		printk(KERN_ERR PREFIX
-		       "Error parsing LAPIC address override entry\n");
-		return count;
-	}
-
-	register_lapic_address(acpi_lapic_addr);
-
 	count = acpi_table_parse_madt(ACPI_MADT_TYPE_LOCAL_SAPIC,
 				      acpi_parse_sapic, MAX_LOCAL_APIC);
 
diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
index 60078a6..504311c 100644
--- a/arch/x86/kernel/apic/apic.c
+++ b/arch/x86/kernel/apic/apic.c
@@ -1799,7 +1799,7 @@ void __init register_lapic_address(unsigned long address)
 	if (!x2apic_mode) {
 		set_fixmap_nocache(FIX_APIC_BASE, address);
 		apic_printk(APIC_VERBOSE, "mapped APIC to %16lx (%16lx)\n",
-			    APIC_BASE, mp_lapic_addr);
+			    APIC_BASE, address);
 	}
 	if (boot_cpu_physical_apicid == -1U) {
 		boot_cpu_physical_apicid  = read_apic_id();
-- 
2.5.5

[toc] | [prev] | [next] | [standalone]


#1439407 — Re: [PATCH v2 2/2] x86/acpi: Remove the repeated lapic address override entry parsing

FromIngo Molnar <mingo@kernel.org>
Date2016-07-08 14:30 +0200
SubjectRe: [PATCH v2 2/2] x86/acpi: Remove the repeated lapic address override entry parsing
Message-ID<rSD4T-4Jb-43@gated-at.bofh.it>
In reply to#1434328
* Baoquan He <bhe@redhat.com> wrote:

> ACPI MADT has a 32-bit field providing lapic address at which
> each processor can access its lapic information. MADT also contains
> an optional entry to provide a 64-bit address to override the 32-bit
> one. However the current code does the lapic address override entry
> parsing twice. One is in early_acpi_boot_init() because AMD NUMA need
> get boot_cpu_id earlier. The other is in acpi_boot_init() which parses
> all MADT entries.
> 
> So in this patch remove the repeated code in the 2nd part. Meanwhile
> print lapic override entry information like other MADT entry.

So this patch is not supposed to change behavior (modulo kernel messages), right? 
If so it would make sense to spell that out explicitly in the changelog.

Thanks,

	Ingo

[toc] | [prev] | [next] | [standalone]


#1439429 — Re: [PATCH v2 2/2] x86/acpi: Remove the repeated lapic address override entry parsing

FromBaoquan He <bhe@redhat.com>
Date2016-07-08 15:00 +0200
SubjectRe: [PATCH v2 2/2] x86/acpi: Remove the repeated lapic address override entry parsing
Message-ID<rSDxU-4TG-21@gated-at.bofh.it>
In reply to#1439407
On 07/08/16 at 02:27pm, Ingo Molnar wrote:
> 
> * Baoquan He <bhe@redhat.com> wrote:
> 
> > ACPI MADT has a 32-bit field providing lapic address at which
> > each processor can access its lapic information. MADT also contains
> > an optional entry to provide a 64-bit address to override the 32-bit
> > one. However the current code does the lapic address override entry
> > parsing twice. One is in early_acpi_boot_init() because AMD NUMA need
> > get boot_cpu_id earlier. The other is in acpi_boot_init() which parses
> > all MADT entries.
> > 
> > So in this patch remove the repeated code in the 2nd part. Meanwhile
> > print lapic override entry information like other MADT entry.
> 
> So this patch is not supposed to change behavior (modulo kernel messages), right? 
> If so it would make sense to spell that out explicitly in the changelog.

Yes, it won't. I will mention it in changelog and repost. Thanks for
your reviewing.

Thanks
Baoquan

[toc] | [prev] | [next] | [standalone]


#1439868 — Re: [PATCH v2 2/2] x86/acpi: Remove the repeated lapic address override entry parsing

FromBaoquan He <bhe@redhat.com>
Date2016-07-09 04:10 +0200
SubjectRe: [PATCH v2 2/2] x86/acpi: Remove the repeated lapic address override entry parsing
Message-ID<rSPSp-4T7-19@gated-at.bofh.it>
In reply to#1439407
Hi Ingo,

On 07/08/16 at 02:27pm, Ingo Molnar wrote:
> 
> * Baoquan He <bhe@redhat.com> wrote:
> 
> > ACPI MADT has a 32-bit field providing lapic address at which
> > each processor can access its lapic information. MADT also contains
> > an optional entry to provide a 64-bit address to override the 32-bit
> > one. However the current code does the lapic address override entry
> > parsing twice. One is in early_acpi_boot_init() because AMD NUMA need
> > get boot_cpu_id earlier. The other is in acpi_boot_init() which parses
> > all MADT entries.
> > 
> > So in this patch remove the repeated code in the 2nd part. Meanwhile
> > print lapic override entry information like other MADT entry.
> 
> So this patch is not supposed to change behavior (modulo kernel messages), right? 
> If so it would make sense to spell that out explicitly in the changelog.

I am not sure if I understand your question correctly. In this patch I
added the calling of acpi_table_print_madt_entry(header) in
acpi_parse_lapic_addr_ovr, it will print information related if a lapic
address override entry is provided as below:

	case ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE:                                                                  
                {                                                                                                 
                        struct acpi_madt_local_apic_override *p =                                                 
                            (struct acpi_madt_local_apic_override*)header;                                       
                        pr_info("LAPIC_ADDR_OVR (address[%p])\n",                                                 
                                (void *)(unsigned long)p->address);                                               
                }                                                                                                 
                break;

This will add one line of message to boot log if lapic addr override
entry provided:
"LAPIC_ADDR_OVR (address[0xXXXXXXXX])"

I don't know if this is the behaviour change (modulo kernel messages)
you mentioned.

Thanks
Baoquan

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web