From: Yinghai Lu <yinghai@kernel.org>
To: Cyrill Gorcunov <gorcunov@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>,
"Maciej W. Rozycki" <macro@linux-mips.org>,
x86team <x86@kernel.org>, LKML <linux-kernel@vger.kernel.org>
Subject: Re: [RFC -tip] x86,io-apic: Do not map IO-APIC direct registers twice
Date: Thu, 12 Nov 2009 15:22:55 -0800 [thread overview]
Message-ID: <4AFC98CF.5030408@kernel.org> (raw)
In-Reply-To: <20091112204852.GB5728@lenovo>
Cyrill Gorcunov wrote:
> Please review, I didn't manage to test (emulate actually since I don't
> have such a hardware) it yet (going to do so this weekend).
>
> Meanwhile I would like to heard comments, complains and etc...
> Perhaps I miss something obvious so don't hesitate to poke me.
>
> -- Cyrill
> ---
> x86,io-apic: Do not map IO-APIC direct registers twice
>
> In case if IO-APIC address is not 4K aligned (which is pretty
> established by MPS-1.4) we may not fixmap they twice and
> should eliminate resourse overlap in this case.
>
> An example of a such configureation is
>
> http://marc.info/?l=linux-kernel&m=118114792006520
>
> | Quoting the message
> |
> | IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-23
> | IOAPIC[1]: apic_id 3, version 32, address 0xfec80000, GSI 24-47
> | IOAPIC[2]: apic_id 4, version 32, address 0xfec80400, GSI 48-71
> | IOAPIC[3]: apic_id 5, version 32, address 0xfec84000, GSI 72-95
> | IOAPIC[4]: apic_id 8, version 32, address 0xfec84400, GSI 96-119
>
> Some io-apics are 4K aligned while others are -- 1K. We may have
> the situation when next IO-APIC address (1K aligned) is following
> previous 4K one. So instead of allocating new fixmap we may use already
> done one.
>
> To implement it ioapic_fixmap_shared is introduced which check if
> new IO-APIC base address lays inside already mapped page.
>
> Also insert_resourse will not fail anymore on 1K aligned io-apics.
looks that we don't need that ...
not io_apic_base already have that + &. left problems are
1. display.
2. insert resource problem.
YH
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index 90e8bc5..6a9379b 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -4140,11 +4140,13 @@ fake_ioapic_page:
set_fixmap_nocache(idx, ioapic_phys);
apic_printk(APIC_VERBOSE,
"mapped IOAPIC to %08lx (%08lx)\n",
- __fix_to_virt(idx), ioapic_phys);
+ __fix_to_virt(idx) + (ioapic_phys & ~PAGE_MASK),
+ ioapic_phys);
idx++;
+ /* spec says size is 1024 */
ioapic_res->start = ioapic_phys;
- ioapic_res->end = ioapic_phys + PAGE_SIZE-1;
+ ioapic_res->end = ioapic_phys + (1<<10) - 1;
ioapic_res++;
}
}
next prev parent reply other threads:[~2009-11-12 23:26 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-12 20:48 [RFC -tip] x86,io-apic: Do not map IO-APIC direct registers twice Cyrill Gorcunov
2009-11-12 20:54 ` Cyrill Gorcunov
2009-11-12 21:06 ` Cyrill Gorcunov
2009-11-12 23:22 ` Yinghai Lu [this message]
2009-11-13 17:50 ` Cyrill Gorcunov
2009-11-13 18:56 ` Yinghai Lu
2009-11-13 19:09 ` Cyrill Gorcunov
2009-11-13 19:17 ` Yinghai Lu
2009-11-13 19:22 ` Cyrill Gorcunov
2009-11-13 19:23 ` Yinghai Lu
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=4AFC98CF.5030408@kernel.org \
--to=yinghai@kernel.org \
--cc=gorcunov@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=macro@linux-mips.org \
--cc=mingo@elte.hu \
--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.