lkml.org 
[lkml]   [2014]   [Aug]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[Patch v4 06/16] x86, irq: Split out alloc_ioapic_save_registers()
    Date
    From: Yinghai Lu <yinghai@kernel.org>

    Split alloc_ioapic_save_registers() from early_irq_init(),
    so it will be used per ioapic.

    Will call that later for hot-added ioapic controller.

    Signed-off-by: Yinghai Lu <yinghai@kernel.org>
    Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
    Cc: Joerg Roedel <joro@8bytes.org>
    Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Cc: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
    ---
    arch/x86/kernel/apic/io_apic.c | 22 +++++++++++++++-------
    1 file changed, 15 insertions(+), 7 deletions(-)

    diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
    index 40a4aa3f4061..3faf9599ff29 100644
    --- a/arch/x86/kernel/apic/io_apic.c
    +++ b/arch/x86/kernel/apic/io_apic.c
    @@ -237,6 +237,19 @@ static struct irq_pin_list *alloc_irq_pin_list(int node)
    return kzalloc_node(sizeof(struct irq_pin_list), GFP_KERNEL, node);
    }

    +static void alloc_ioapic_saved_registers(int idx)
    +{
    + size_t size;
    +
    + if (ioapics[idx].saved_registers)
    + return;
    +
    + size = sizeof(struct IO_APIC_route_entry) * ioapics[idx].nr_registers;
    + ioapics[idx].saved_registers = kzalloc(size, GFP_KERNEL);
    + if (!ioapics[idx].saved_registers)
    + pr_err("IOAPIC %d: suspend/resume impossible!\n", idx);
    +}
    +
    int __init arch_early_irq_init(void)
    {
    struct irq_cfg *cfg;
    @@ -245,13 +258,8 @@ int __init arch_early_irq_init(void)
    if (!nr_legacy_irqs())
    io_apic_irqs = ~0UL;

    - for_each_ioapic(i) {
    - ioapics[i].saved_registers =
    - kzalloc(sizeof(struct IO_APIC_route_entry) *
    - ioapics[i].nr_registers, GFP_KERNEL);
    - if (!ioapics[i].saved_registers)
    - pr_err("IOAPIC %d: suspend/resume impossible!\n", i);
    - }
    + for_each_ioapic(i)
    + alloc_ioapic_saved_registers(i);

    /*
    * For legacy IRQ's, start with assigning irq0 to irq15 to
    --
    1.7.10.4


    \
     
     \ /
      Last update: 2014-08-28 04:41    [W:2.433 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site