All of lore.kernel.org
 help / color / mirror / Atom feed
From: Baoquan He <bhe@redhat.com>
To: Dou Liyang <douly.fnst@cn.fujitsu.com>
Cc: x86@kernel.org, linux-kernel@vger.kernel.org, tglx@linutronix.de,
	mingo@kernel.org, hpa@zytor.com, rjw@rjwysocki.net, bp@alien8.de,
	indou.takao@jp.fujitsu.com, izumi.taku@jp.fujitsu.com
Subject: Re: [PATCH v8 01/13] x86/apic: Construct a selector for the interrupt delivery mode
Date: Wed, 6 Sep 2017 18:17:28 +0800	[thread overview]
Message-ID: <20170906101728.GM30906@x1> (raw)
In-Reply-To: <1503890438-27840-2-git-send-email-douly.fnst@cn.fujitsu.com>

Hi Dou,

On 08/28/17 at 11:20am, Dou Liyang wrote:
> +static int __init apic_intr_mode_select(void)
> +{
> +	/* Check kernel option */
> +	if (disable_apic) {
> +		pr_info("APIC disabled via kernel command line\n");
> +		return APIC_PIC;
> +	}
> +

I am not very familiar with cpu registers, not sure if we can adjust
below code flow as:

	/* If APIC is integrated, check local APIC only */
	if (lapic_is_integrated() && !boot_cpu_has(X86_FEATURE_APIC)) {
		disable_apic = 1;
		pr_info("APIC disabled by BIOS\n");
		return APIC_PIC;
	}

	/* If APIC is on a separate chip, check if smp_found_config is found*/
	if (!lapic_is_integrated() && !smp_found_config) {
		disable_apic = 1;
		return APIC_PIC;
	}
	~~~~ Now, I haven't think of why smp_found_config has to be
             checked here.

In this way, we don't need the CONFIG_X86_64 checking since it's
contained in lapic_is_integrated() already. And the checking is obvious
for understanding. Just not very sure if the checking is adequate.

Just my personal opinion.

> +	/* Check BIOS */
> +#ifdef CONFIG_X86_64
> +	/* On 64-bit, the APIC must be integrated, Check local APIC only */
> +	if (!boot_cpu_has(X86_FEATURE_APIC)) {
> +		disable_apic = 1;
> +		pr_info("APIC disabled by BIOS\n");
> +		return APIC_PIC;
> +	}
> +#else
> +	/*
> +	 * On 32-bit, check whether there is a separate chip or integrated
> +	 * APIC
> +	 */
> +
> +	/* Has a separate chip ? */
> +	if (!boot_cpu_has(X86_FEATURE_APIC) && !smp_found_config) {
> +		disable_apic = 1;
> +
> +		return APIC_PIC;
> +	}
> +
> +	/* Has a local APIC ? */
> +	if (!boot_cpu_has(X86_FEATURE_APIC) &&
> +		APIC_INTEGRATED(boot_cpu_apic_version)) {
> +		disable_apic = 1;
> +		pr_err(FW_BUG "Local APIC %d not detected, force emulation\n",
> +				       boot_cpu_physical_apicid);
> +
> +		return APIC_PIC;
> +	}
> +#endif
> +
> +	/* Check MP table or ACPI MADT configuration */
> +	if (!smp_found_config) {
> +		disable_ioapic_support();
> +
> +		if (!acpi_lapic)
> +			pr_info("APIC: ACPI MADT or MP tables are not detected\n");
> +
> +		return APIC_VIRTUAL_WIRE;
> +	}
> +
> +	return APIC_SYMMETRIC_IO;
> +}
> +
>  /*
>   * An initial setup of the virtual wire mode.
>   */
> -- 
> 2.5.5
> 
> 
> 

  parent reply	other threads:[~2017-09-06 10:17 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-28  3:20 [PATCH v8 00/13] Unify the interrupt delivery mode and do its setup in advance Dou Liyang
2017-08-28  3:20 ` [PATCH v8 01/13] x86/apic: Construct a selector for the interrupt delivery mode Dou Liyang
2017-09-06  0:55   ` Baoquan He
2017-09-06  4:18     ` Dou Liyang
2017-09-06  9:02       ` Baoquan He
2017-09-06 10:17   ` Baoquan He [this message]
2017-09-07  4:19     ` Dou Liyang
2017-09-07  5:22       ` Baoquan He
2017-09-12  1:20         ` Dou Liyang
2017-09-12  8:04           ` Baoquan He
2017-09-13  2:30           ` Baoquan He
2017-09-13  3:48             ` Dou Liyang
2017-08-28  3:20 ` [PATCH v8 02/13] x86/apic: Prepare for unifying the interrupt delivery modes setup Dou Liyang
2017-08-28  3:20 ` [PATCH v8 03/13] x86/apic: Split local APIC timer setup from the APIC setup Dou Liyang
2017-08-28  3:20 ` [PATCH v8 04/13] x86/apic: Move logical APIC ID away from apic_bsp_setup() Dou Liyang
2017-08-28  3:20 ` [PATCH v8 05/13] x86/apic: Unify interrupt mode setup for SMP-capable system Dou Liyang
2017-08-28  3:20 ` [PATCH v8 06/13] x86/apic: Mark the apic_intr_mode extern for sanity check cleanup Dou Liyang
2017-09-06  4:25   ` Baoquan He
2017-09-06  5:26     ` Baoquan He
2017-09-06  5:41       ` Dou Liyang
2017-09-06  8:03         ` Baoquan He
2017-09-07  2:27           ` Dou Liyang
2017-09-07  2:34             ` Baoquan He
2017-08-28  3:20 ` [PATCH v8 07/13] x86/apic: Unify interrupt mode setup for UP system Dou Liyang
2017-08-28  3:20 ` [PATCH v8 08/13] x86/ioapic: Refactor the delay logic in timer_irq_works() Dou Liyang
2017-08-28  3:20 ` [PATCH v8 09/13] x86/init: add intr_mode_init to x86_init_ops Dou Liyang
2017-08-28  3:20 ` [PATCH v8 10/13] x86/xen: Bypass intr mode setup in enlighten_pv system Dou Liyang
2017-08-28  3:20 ` Dou Liyang
2017-08-28  4:25   ` Juergen Gross
2017-08-28  4:25   ` [Xen-devel] " Juergen Gross
2017-08-28  4:32     ` Juergen Gross
2017-08-28  5:15       ` Dou Liyang
2017-08-28  5:15       ` [Xen-devel] " Dou Liyang
2017-08-28  4:32     ` Juergen Gross
2017-08-28  3:20 ` [PATCH v8 11/13] ACPI / init: Invoke early ACPI initialization earlier Dou Liyang
2017-08-28  3:20   ` Dou Liyang
2017-08-28  3:20 ` [PATCH v8 12/13] x86/time: Initialize interrupt mode behind timer init Dou Liyang
2017-08-28  3:20 ` [PATCH v8 13/13] x86/apic: Remove the init_bsp_APIC() Dou Liyang
2017-08-28  5:38 ` [PATCH v8 00/13] Unify the interrupt delivery mode and do its setup in advance Dou Liyang
2017-08-28  5:38 ` Dou Liyang
2017-08-28  5:38   ` Dou Liyang

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=20170906101728.GM30906@x1 \
    --to=bhe@redhat.com \
    --cc=bp@alien8.de \
    --cc=douly.fnst@cn.fujitsu.com \
    --cc=hpa@zytor.com \
    --cc=indou.takao@jp.fujitsu.com \
    --cc=izumi.taku@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=rjw@rjwysocki.net \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /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.