From: Yijing Wang <wangyijing@huawei.com>
To: Yinghai Lu <yinghai@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@elte.hu>,
"H. Peter Anvin" <hpa@zytor.com>, Tony Luck <tony.luck@intel.com>,
Bjorn Helgaas <bhelgaas@google.com>,
"Rafael J. Wysocki" <rjw@sisk.pl>,
linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-acpi@vger.kernel.org, Joerg Roedel <joro@8bytes.org>,
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
Subject: Re: [PATCH v4 20/28] x86, irq: More strict checking about registering ioapic
Date: Mon, 21 Oct 2013 18:54:44 +0800 [thread overview]
Message-ID: <526507F4.4090706@huawei.com> (raw)
In-Reply-To: <1376189294-32022-21-git-send-email-yinghai@kernel.org>
> int mp_find_ioapic_pin(int ioapic, u32 gsi)
> {
> struct mp_ioapic_gsi *gsi_cfg;
> @@ -3888,6 +3894,11 @@ void __init mp_register_ioapic(int id, u32 address, u32 gsi_base)
> if (bad_ioapic(address))
> return;
>
> + /* already registered ? */
> + idx = __mp_find_ioapic(gsi_base);
> + if (idx >= 0)
> + return;
Hi Yinghai,
If you add whether ioapic was already registered check here, so we will fail to add ioapic into global ioapic_list.
Then we also can not hot remove this ioapic.
1. We will call mp_register_ioapic during analyze MADT first.
2. We will try to add hotplug ioapic(which contain _GSB) to ioapic_list in acpi_pci_ioapic_add(), but will found this
ioapic has been registered.
Thanks!
Yijing.
> +
> idx = find_first_zero_bit(ioapics_mask, MAX_IO_APICS);
> if (idx >= MAX_IO_APICS) {
> pr_warn("WARNING: Max # of I/O APICs (%d) exceeded, skipping\n",
> @@ -3914,6 +3925,13 @@ void __init mp_register_ioapic(int id, u32 address, u32 gsi_base)
> * and to prevent reprogramming of IOAPIC pins (PCI GSIs).
> */
> entries = io_apic_get_redir_entries(idx);
> +
> + if (!entries || entries > MP_MAX_IOAPIC_PIN) {
> + clear_fixmap(FIX_IO_APIC_BASE_0 + idx);
> + memset(&ioapics[idx], 0, sizeof(struct ioapic));
> + return;
> + }
> +
> gsi_cfg = mp_ioapic_gsi_routing(idx);
> gsi_cfg->gsi_base = gsi_base;
> gsi_cfg->gsi_end = gsi_base + entries - 1;
>
--
Thanks!
Yijing
WARNING: multiple messages have this Message-ID (diff)
From: Yijing Wang <wangyijing@huawei.com>
To: Yinghai Lu <yinghai@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@elte.hu>,
"H. Peter Anvin" <hpa@zytor.com>, Tony Luck <tony.luck@intel.com>,
Bjorn Helgaas <bhelgaas@google.com>,
"Rafael J. Wysocki" <rjw@sisk.pl>, <linux-pci@vger.kernel.org>,
<linux-kernel@vger.kernel.org>, <linux-acpi@vger.kernel.org>,
Joerg Roedel <joro@8bytes.org>,
"Konrad Rzeszutek Wilk" <konrad.wilk@oracle.com>,
Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
Subject: Re: [PATCH v4 20/28] x86, irq: More strict checking about registering ioapic
Date: Mon, 21 Oct 2013 18:54:44 +0800 [thread overview]
Message-ID: <526507F4.4090706@huawei.com> (raw)
In-Reply-To: <1376189294-32022-21-git-send-email-yinghai@kernel.org>
> int mp_find_ioapic_pin(int ioapic, u32 gsi)
> {
> struct mp_ioapic_gsi *gsi_cfg;
> @@ -3888,6 +3894,11 @@ void __init mp_register_ioapic(int id, u32 address, u32 gsi_base)
> if (bad_ioapic(address))
> return;
>
> + /* already registered ? */
> + idx = __mp_find_ioapic(gsi_base);
> + if (idx >= 0)
> + return;
Hi Yinghai,
If you add whether ioapic was already registered check here, so we will fail to add ioapic into global ioapic_list.
Then we also can not hot remove this ioapic.
1. We will call mp_register_ioapic during analyze MADT first.
2. We will try to add hotplug ioapic(which contain _GSB) to ioapic_list in acpi_pci_ioapic_add(), but will found this
ioapic has been registered.
Thanks!
Yijing.
> +
> idx = find_first_zero_bit(ioapics_mask, MAX_IO_APICS);
> if (idx >= MAX_IO_APICS) {
> pr_warn("WARNING: Max # of I/O APICs (%d) exceeded, skipping\n",
> @@ -3914,6 +3925,13 @@ void __init mp_register_ioapic(int id, u32 address, u32 gsi_base)
> * and to prevent reprogramming of IOAPIC pins (PCI GSIs).
> */
> entries = io_apic_get_redir_entries(idx);
> +
> + if (!entries || entries > MP_MAX_IOAPIC_PIN) {
> + clear_fixmap(FIX_IO_APIC_BASE_0 + idx);
> + memset(&ioapics[idx], 0, sizeof(struct ioapic));
> + return;
> + }
> +
> gsi_cfg = mp_ioapic_gsi_routing(idx);
> gsi_cfg->gsi_base = gsi_base;
> gsi_cfg->gsi_end = gsi_base + entries - 1;
>
--
Thanks!
Yijing
next prev parent reply other threads:[~2013-10-21 10:54 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-11 2:47 [PATCH v4 00/28] x86, irq: Support ioapic controller hotplug Yinghai Lu
2013-08-11 2:47 ` [PATCH v4 01/28] genirq: Split __irq_reserve_irqs from irq_alloc_descs Yinghai Lu
2013-08-11 2:47 ` [PATCH v4 02/28] genirq: Add irq_alloc_reserved_desc() Yinghai Lu
2013-08-11 2:47 ` [PATCH v4 03/28] genirq: Do not free unallocated irq descriptors Yinghai Lu
2013-08-11 2:47 ` [PATCH v4 04/28] x86, irq: Change irq_remap_modify_chip_defaults() to static Yinghai Lu
2013-08-11 2:47 ` [PATCH v4 05/28] x86, irq: Modify irq chip once for irq remapping Yinghai Lu
2013-08-11 2:47 ` [PATCH v4 06/28] x86, irq: Show MSI-X clearly in debug message Yinghai Lu
2013-08-11 2:47 ` [PATCH v4 07/28] x86, irq: Show MSI-X in /proc/interrupt Yinghai Lu
2013-08-11 2:47 ` [PATCH v4 08/28] x86, irq: Make dmar_msi/hpet_msi irq_chip name consistent Yinghai Lu
2013-08-11 2:47 ` [PATCH v4 09/28] ia64, irq: Add dummy create_irq_nr() Yinghai Lu
2013-08-11 2:47 ` Yinghai Lu
2013-08-11 2:47 ` [PATCH v4 10/28] iommu, irq: Allocate irq_desc for dmar_msi with local node Yinghai Lu
2013-08-11 2:47 ` [PATCH v4 11/28] x86, irq: Kill create_irq() Yinghai Lu
2013-08-11 2:47 ` [PATCH v4 12/28] x86, irq: Convert irq_2_pin list to generic list Yinghai Lu
2013-08-11 2:47 ` [PATCH v4 13/28] x86, irq: Add alloc_reserved_irq_and_cfg_at() Yinghai Lu
2013-08-11 2:48 ` [PATCH v4 14/28] x86, irq: Move down arch_early_irq_init() Yinghai Lu
2013-08-11 2:48 ` [PATCH v4 15/28] x86, irq: Split out alloc_ioapic_save_registers() Yinghai Lu
2013-08-11 2:48 ` [PATCH v4 16/28] xen, irq: Call irq_alloc_reserved_desc_at() at first Yinghai Lu
2013-08-11 2:48 ` Yinghai Lu
2013-08-11 2:48 ` [PATCH v4 17/28] x86, irq: Reserve irq range and alloc_reserved for booting path Yinghai Lu
2013-08-11 2:48 ` [PATCH v4 18/28] x86, irq: Add ioapic_gsi_to_irq Yinghai Lu
2013-08-11 2:48 ` [PATCH v4 19/28] x86, irq: Add for_each_ioapic helper Yinghai Lu
2013-08-11 2:48 ` [PATCH v4 20/28] x86, irq: More strict checking about registering ioapic Yinghai Lu
2013-08-19 7:47 ` Lan Tianyu
2013-10-21 10:54 ` Yijing Wang [this message]
2013-10-21 10:54 ` Yijing Wang
2013-08-11 2:48 ` [PATCH v4 21/28] x86, irq: Make mp_register_ioapic handle hot-added ioapic Yinghai Lu
2013-08-11 2:48 ` [PATCH v4 22/28] x86, irq: Add mp_unregister_ioapic to handle hot-remove ioapic Yinghai Lu
2013-08-11 2:48 ` [PATCH v4 23/28] x86, ioapic: Find usable ioapic id for 64bit Yinghai Lu
2013-08-11 2:48 ` [PATCH v4 24/28] x86: Move declaration for mp_register_ioapic() Yinghai Lu
2013-08-11 2:48 ` [PATCH v4 25/28] PCI, x86: Make ioapic hotplug support built-in Yinghai Lu
2013-10-01 16:00 ` Bjorn Helgaas
2013-10-01 17:42 ` Yinghai Lu
2013-08-11 2:48 ` [PATCH v4 26/28] PCI, x86, ACPI: Link acpi ioapic register to ioapic Yinghai Lu
2013-08-24 0:51 ` rui wang
2013-08-27 0:40 ` Yinghai Lu
2013-08-27 6:44 ` rui wang
2013-08-27 6:53 ` Yinghai Lu
2013-08-27 10:08 ` rui wang
2013-08-28 6:17 ` Yinghai Lu
2013-08-11 2:48 ` [PATCH v4 27/28] PCI, x86, ACPI: Enable ioapic hotplug support with acpi host bridge Yinghai Lu
2013-08-27 10:25 ` rui wang
2013-08-28 1:10 ` rui wang
2013-08-28 6:22 ` Yinghai Lu
2013-08-28 8:25 ` rui wang
2013-10-21 12:30 ` Yijing Wang
2013-10-21 12:30 ` Yijing Wang
2013-08-11 2:48 ` [PATCH v4 28/28] PCI, x86, ACPI: get ioapic address from acpi device Yinghai Lu
2013-08-22 13:29 ` rui wang
2013-08-23 10:41 ` rui wang
2013-08-23 15:34 ` Lan Tianyu
2013-08-23 18:38 ` Yinghai Lu
2013-08-23 19:04 ` Yinghai Lu
2013-08-23 19:38 ` Yinghai Lu
2013-08-26 15:46 ` Lan Tianyu
2013-08-27 1:03 ` Yinghai Lu
2013-08-27 14:56 ` Lan Tianyu
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=526507F4.4090706@huawei.com \
--to=wangyijing@huawei.com \
--cc=bhelgaas@google.com \
--cc=hpa@zytor.com \
--cc=joro@8bytes.org \
--cc=konrad.wilk@oracle.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=rjw@sisk.pl \
--cc=sebastian@breakpoint.cc \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
--cc=yinghai@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.