All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arun Sharma <arun.sharma@intel.com>
To: Xen-devel@lists.xensource.com
Subject: Re: Latest xen-unstable on IBM x440
Date: Thu, 05 May 2005 13:19:50 -0700	[thread overview]
Message-ID: <427A7FE6.90201@intel.com> (raw)
In-Reply-To: <427976C6.7060502@inetl.com>

[-- Attachment #1: Type: text/plain, Size: 465 bytes --]

Arun Sharma wrote:

> Parsing the MPS table is working now on my machine, but interrupts are 
> still not getting routed. I'm probably a couple of bug fixes away from 
> getting acpi=off/ht to work.
> 

People having trouble with the PCI/IOAPIC patch, could you give this 
patch a try?

It works with acpi=off and acpi=ht on my machine.

	-Arun

PS: PCI initialization is sensitive to the order of object files within 
the Makefile. I think that's a bit fragile...

[-- Attachment #2: acpi-off.patch --]
[-- Type: text/plain, Size: 5352 bytes --]

===== arch/xen/i386/Kconfig 1.21 vs edited =====
--- 1.21/linux-2.6.11-xen-sparse/arch/xen/i386/Kconfig	2005-05-03 07:27:52 -07:00
+++ edited/arch/xen/i386/Kconfig	2005-05-04 14:11:59 -07:00
@@ -961,7 +961,7 @@
 config X86_FIND_SMP_CONFIG
 	bool
 	depends on X86_LOCAL_APIC || X86_VOYAGER
-	default n
+	default y
 
 config X86_MPPARSE
 	bool
===== arch/xen/i386/kernel/apic.c 1.1 vs edited =====
--- 1.1/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/apic.c	2005-05-03 07:27:53 -07:00
+++ edited/arch/xen/i386/kernel/apic.c	2005-05-04 18:14:58 -07:00
@@ -49,5 +49,11 @@
  */
 int __init APIC_init_uniprocessor (void)
 {
+#ifdef CONFIG_X86_IO_APIC
+        extern int smp_found_config;
+	if (smp_found_config)
+                /* Xen assumes IO_APIC */
+		setup_IO_APIC();
+#endif
 	return 0;
 }
===== arch/xen/i386/kernel/io_apic.c 1.1 vs edited =====
--- 1.1/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/io_apic.c	2005-05-03 07:27:53 -07:00
+++ edited/arch/xen/i386/kernel/io_apic.c	2005-05-04 15:29:07 -07:00
@@ -108,6 +108,23 @@
 }
 
 /*
+ *
+ * IRQ's that are handled by the PIC in the MPS IOAPIC case.
+ * - IRQ2 is the cascade IRQ, and cannot be a io-apic IRQ.
+ *   Linux doesn't really care, as it's not actually used
+ *   for any interrupt handling anyway.
+ */
+#define PIC_IRQS	(1 << PIC_CASCADE_IR)
+
+void __init setup_IO_APIC(void)
+{
+	if (acpi_ioapic)
+		io_apic_irqs = ~0;	/* all IRQs go through IOAPIC */
+	else
+		io_apic_irqs = ~PIC_IRQS;
+} 
+
+/*
  * The common case is 1:1 IRQ<->pin mappings. Sometimes there are
  * shared ISA-space IRQs, so we have to support them. We are super
  * fast in the common case, and fast for shared ISA-space IRQs.
===== arch/xen/i386/kernel/mpparse.c 1.2 vs edited =====
--- 1.2/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/mpparse.c	2005-05-03 10:44:11 -07:00
+++ edited/arch/xen/i386/kernel/mpparse.c	2005-05-05 13:06:16 -07:00
@@ -429,9 +429,7 @@
 			{
 				struct mpc_config_processor *m=
 					(struct mpc_config_processor *)mpt;
-				/* ACPI may have already provided this data */
-				if (!acpi_lapic)
-					MP_processor_info(m);
+				/* We ignore the processors in the MP table */
 				mpt += sizeof(*m);
 				count += sizeof(*m);
 				break;
@@ -482,9 +480,8 @@
 		++mpc_record;
 	}
 	clustered_apic_check();
-	if (!num_processors)
-		printk(KERN_ERR "SMP mptable: no processors registered!\n");
-	return num_processors;
+        num_processors = 1; /* Doesn't really matter */
+	return 1;
 }
 
 static int __init ELCR_trigger(unsigned int irq)
@@ -690,7 +687,7 @@
 		 * Read the physical hardware table.  Anything here will
 		 * override the defaults.
 		 */
-		if (!smp_read_mpc((void *)mpf->mpf_physptr)) {
+		if (!smp_read_mpc((void *)isa_bus_to_virt(mpf->mpf_physptr))) {
 			smp_found_config = 0;
 			printk(KERN_ERR "BIOS bug, MP table errors detected!...\n");
 			printk(KERN_ERR "... disabling SMP support. (tell your hw vendor)\n");
@@ -726,6 +723,7 @@
 static int __init smp_scan_config (unsigned long base, unsigned long length)
 {
 	unsigned long *bp = isa_bus_to_virt(base);
+        unsigned long isa_bus_off = ((unsigned long) bp) - base;
 	struct intel_mp_floating *mpf;
 
 	Dprintk("Scan SMP from %p for %ld bytes.\n", bp,length);
@@ -742,8 +740,7 @@
 
 			smp_found_config = 1;
 			printk(KERN_INFO "found SMP MP-table at %08lx\n",
-						virt_to_phys(mpf));
-			reserve_bootmem(virt_to_phys(mpf), PAGE_SIZE);
+						mpf - isa_bus_off);
 			if (mpf->mpf_physptr) {
 				/*
 				 * We cannot access to MPC table to compute
@@ -758,7 +755,6 @@
 				unsigned long end = max_low_pfn * PAGE_SIZE;
 				if (mpf->mpf_physptr + size > end)
 					size = end - mpf->mpf_physptr;
-				reserve_bootmem(mpf->mpf_physptr, size);
 			}
 
 			mpf_found = mpf;
===== arch/xen/i386/kernel/setup.c 1.45 vs edited =====
--- 1.45/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/setup.c	2005-05-03 10:44:11 -07:00
+++ edited/arch/xen/i386/kernel/setup.c	2005-05-04 14:12:33 -07:00
@@ -1133,13 +1133,6 @@
 	 */
 	acpi_reserve_bootmem();
 #endif
-#ifdef CONFIG_X86_FIND_SMP_CONFIG
-	/*
-	 * Find and reserve possible boot-time SMP configuration:
-	 */
-	find_smp_config();
-#endif
-
 #ifdef CONFIG_BLK_DEV_INITRD
 	if (xen_start_info.mod_start) {
 		if (INITRD_START + INITRD_SIZE <= (max_low_pfn << PAGE_SHIFT)) {
@@ -1566,6 +1559,12 @@
 	if (efi_enabled)
 		efi_map_memmap();
 
+#ifdef CONFIG_X86_FIND_SMP_CONFIG
+	/*
+	 * Find and reserve possible boot-time SMP configuration:
+	 */
+	find_smp_config();
+#endif
 	/*
 	 * Parse the ACPI tables for possible boot-time SMP configuration.
 	 */
===== arch/xen/i386/pci/Makefile 1.9 vs edited =====
--- 1.9/linux-2.6.11-xen-sparse/arch/xen/i386/pci/Makefile	2005-05-03 10:24:40 -07:00
+++ edited/arch/xen/i386/pci/Makefile	2005-05-05 13:01:01 -07:00
@@ -10,8 +10,7 @@
 
 c-pci-y				:= fixup.o
 c-pci-$(CONFIG_ACPI_PCI)	+= acpi.o
-c-pci-y				+= legacy.o
-pci-y				+= irq.o
+c-pci-y				+= legacy.o irq.o
 
 c-pci-$(CONFIG_X86_VISWS)	:= visws.o fixup.o
 pci-$(CONFIG_X86_VISWS)		:=
===== arch/xen/i386/pci/irq.c 1.15 vs edited =====
--- 1.15/linux-2.6.11-xen-sparse/arch/xen/i386/pci/irq.c	2005-05-03 07:27:52 -07:00
+++ edited/arch/xen/i386/pci/irq.c	2005-05-05 13:07:25 -07:00
@@ -21,8 +21,6 @@
 
 #include "pci.h"
 
-#define DBG printk
-
 #define PIRQ_SIGNATURE	(('$' << 0) + ('P' << 8) + ('I' << 16) + ('R' << 24))
 #define PIRQ_VERSION 0x0100
 

[-- Attachment #3: Type: text/plain, Size: 138 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

  reply	other threads:[~2005-05-05 20:19 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <mailman.1115240819.4732@unix-os.sc.intel.com>
2005-05-05  1:28 ` Latest xen-unstable on IBM x440 Arun Sharma
2005-05-05 20:19   ` Arun Sharma [this message]
2005-05-04 21:06 Nakajima, Jun
  -- strict thread matches above, loose matches on Subject: below --
2005-05-04 19:06 Nakajima, Jun
2005-05-04 20:03 ` Natasha Jarymowycz
2005-05-05  8:11 ` Keir Fraser
2005-05-04 18:00 Nakajima, Jun
2005-05-04 18:56 ` Keir Fraser
2005-05-04 17:17 Natasha Jarymowycz
2005-05-04 17:24 ` Keir Fraser
2005-05-04 17:27   ` Natasha Jarymowycz

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=427A7FE6.90201@intel.com \
    --to=arun.sharma@intel.com \
    --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 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.