xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: linux-kernel@vger.kernel.org, xen-devel@lists.xensource.com
Cc: alex.williamson@redhat.com,
	Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>,
	Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Subject: [PATCH 06/20] xen: dynamically allocate irq & event structures
Date: Wed,  4 Aug 2010 14:19:01 -0400	[thread overview]
Message-ID: <1280945955-14229-7-git-send-email-konrad.wilk@oracle.com> (raw)
In-Reply-To: <1280945955-14229-1-git-send-email-konrad.wilk@oracle.com>

Dynamically allocate the irq_info and evtchn_to_irq arrays, so that
1) the irq_info array scales to the actual number of possible irqs,
and 2) we don't needlessly increase the static size of the kernel
when we aren't running under Xen.

Derived on patch from Mike Travis <travis@sgi.com>.

[Impact: reduce memory usage ]
[v2: Conflict in drivers/xen/events.c: Replaced alloc_bootmen with kcalloc ]

Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
---
 drivers/xen/events.c |   16 ++++++++++------
 1 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/drivers/xen/events.c b/drivers/xen/events.c
index b6de004..ac04ded 100644
--- a/drivers/xen/events.c
+++ b/drivers/xen/events.c
@@ -28,6 +28,7 @@
 #include <linux/string.h>
 #include <linux/bootmem.h>
 #include <linux/slab.h>
+#include <linux/irqnr.h>
 
 #include <asm/ptrace.h>
 #include <asm/irq.h>
@@ -92,11 +93,9 @@ struct irq_info
 };
 #define PIRQ_NEEDS_EOI	(1 << 0)
 
-static struct irq_info irq_info[NR_IRQS];
+static struct irq_info *irq_info;
 
-static int evtchn_to_irq[NR_EVENT_CHANNELS] = {
-	[0 ... NR_EVENT_CHANNELS-1] = -1
-};
+static int *evtchn_to_irq;
 struct cpu_evtchn_s {
 	unsigned long bits[NR_EVENT_CHANNELS/BITS_PER_LONG];
 };
@@ -514,7 +513,7 @@ static int find_irq_by_gsi(unsigned gsi)
 {
 	int irq;
 
-	for (irq = 0; irq < NR_IRQS; irq++) {
+	for (irq = 0; irq < nr_irqs; irq++) {
 		struct irq_info *info = info_for_irq(irq);
 
 		if (info == NULL || info->type != IRQT_PIRQ)
@@ -1189,7 +1188,12 @@ void __init xen_init_IRQ(void)
 
 	cpu_evtchn_mask_p = kcalloc(nr_cpu_ids, sizeof(struct cpu_evtchn_s),
 				    GFP_KERNEL);
-	BUG_ON(cpu_evtchn_mask_p == NULL);
+	irq_info = kcalloc(nr_irqs, sizeof(*irq_info), GFP_KERNEL);
+
+	evtchn_to_irq = kcalloc(NR_EVENT_CHANNELS, sizeof(*evtchn_to_irq),
+				    GFP_KERNEL);
+	for (i = 0; i < NR_EVENT_CHANNELS; i++)
+		evtchn_to_irq[i] = -1;
 
 	init_evtchn_cpu_bindings();
 
-- 
1.7.0.1

  parent reply	other threads:[~2010-08-04 18:19 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-04 18:18 [RFC PATCH] Xen PCI frontend driver (v0.5) Konrad Rzeszutek Wilk
2010-08-04 18:18 ` [PATCH 01/20] xen: Don't disable the I/O space Konrad Rzeszutek Wilk
2010-08-04 18:18 ` [PATCH 02/20] xen: define BIOVEC_PHYS_MERGEABLE() Konrad Rzeszutek Wilk
2010-08-04 18:18 ` [PATCH 03/20] xen: implement pirq type event channels Konrad Rzeszutek Wilk
2010-08-04 18:18 ` [PATCH 04/20] x86/io_apic: add get_nr_irqs_gsi() Konrad Rzeszutek Wilk
2010-08-04 18:19 ` [PATCH 05/20] xen: identity map gsi->irqs Konrad Rzeszutek Wilk
2010-08-04 18:19 ` Konrad Rzeszutek Wilk [this message]
2010-08-04 18:19 ` [PATCH 07/20] xen: set pirq name to something useful Konrad Rzeszutek Wilk
2010-08-04 18:19 ` [PATCH 08/20] xen: statically initialize cpu_evtchn_mask_p Konrad Rzeszutek Wilk
2010-08-04 18:19 ` [PATCH 09/20] xen: Find an unbound irq number in reverse order (high to low) Konrad Rzeszutek Wilk
2010-08-04 18:19 ` [PATCH 10/20] xen: Provide a variant of xen_poll_irq with timeout Konrad Rzeszutek Wilk
2010-08-04 18:19 ` [PATCH 11/20] xen: fix shared irq device passthrough Konrad Rzeszutek Wilk
2010-08-04 18:19 ` [PATCH 12/20] x86/PCI: Clean up pci_cache_line_size Konrad Rzeszutek Wilk
2010-08-04 18:19 ` [PATCH 13/20] x86/PCI: make sure _PAGE_IOMAP it set on pci mappings Konrad Rzeszutek Wilk
2010-08-04 18:19 ` [PATCH 14/20] x86/PCI: Export pci_walk_bus function Konrad Rzeszutek Wilk
2010-08-04 18:19 ` [PATCH 15/20] x86: Copy-n-paste arch_teardown_msi_irqs from msi.c to io_apic.c Konrad Rzeszutek Wilk
2010-08-04 18:19 ` [PATCH 16/20] x86: Introduce x86_msi_ops Konrad Rzeszutek Wilk
2010-08-31 18:31   ` Konrad Rzeszutek Wilk
2010-09-23 14:48     ` Konrad Rzeszutek Wilk
2010-09-23 23:18       ` [Xen-devel] " Bruce Edge
2010-10-07  2:59         ` Konrad Rzeszutek Wilk
2010-08-04 18:19 ` [PATCH 17/20] xen/x86/PCI: Add support for the Xen PCI subsystem Konrad Rzeszutek Wilk
2010-08-13 23:28   ` Jesse Barnes
2010-10-04 18:30     ` Konrad Rzeszutek Wilk
2010-08-04 18:19 ` [PATCH 18/20] xenbus: Xen paravirtualised PCI hotplug support Konrad Rzeszutek Wilk
2010-08-04 18:19 ` [PATCH 19/20] xenbus: prevent warnings on unhandled enumeration values Konrad Rzeszutek Wilk
2010-08-04 18:19 ` [PATCH 20/20] xen-pcifront: Xen PCI frontend driver Konrad Rzeszutek Wilk
2010-08-04 20:14 ` [Xen-devel] [RFC PATCH] Xen PCI frontend driver (v0.5) Konrad Rzeszutek Wilk

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=1280945955-14229-7-git-send-email-konrad.wilk@oracle.com \
    --to=konrad.wilk@oracle.com \
    --cc=alex.williamson@redhat.com \
    --cc=jeremy.fitzhardinge@citrix.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=xen-devel@lists.xensource.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).