ChangeSet 1.1423, 2005/05/03 15:27:54+01:00, kaf24@xxxxxxxxxxxxxxxxxxxx
Move PCI device scanning to dom0. Enable ACPI in dom0. This should
greatly
reduce the complexity of xen and move the complexity of dealing with
hardware bugs and workarounds etc to dom0.
The ioapic local apic (and hence all the vectors) are owned by the
hypervisor.
Dom0 enables the ACPI interpreter, handles PCI and ACPI based interrupt
routing.
New hypercalls to assign vectors and for accessing the ioapic.
Functionality not yet provided:
o acpi=off to support machines with broken or no acpi support.
o support for driver domains
Signed-off-by: Arun Sharma <arun.sharma@xxxxxxxxx>
Signed-off-by: Asit Mallick <asit.k.mallick@xxxxxxxxx>
b/linux-2.6.11-xen-sparse/arch/xen/Kconfig |
6
b/linux-2.6.11-xen-sparse/arch/xen/configs/xen0_defconfig_x86_32 |
45
b/linux-2.6.11-xen-sparse/arch/xen/i386/Kconfig |
136 -
b/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/Makefile |
2
b/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/acpi/Makefile |
9
b/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/acpi/boot.c |
926 ++++++++
b/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/apic.c |
53
b/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/io_apic.c |
394 +++
b/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/mpparse.c |
1105 ++++++++++
b/linux-2.6.11-xen-sparse/arch/xen/i386/pci/Makefile |
4
b/linux-2.6.11-xen-sparse/arch/xen/i386/pci/irq.c |
1048 +++++++++
b/linux-2.6.11-xen-sparse/arch/xen/kernel/smp.c |
3
b/linux-2.6.11-xen-sparse/arch/xen/x86_64/Kconfig |
2
b/linux-2.6.11-xen-sparse/drivers/acpi/tables.c |
610 +++++
b/linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/fixmap.h |
1
b/linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/io_apic.h |
230 ++
b/linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h |
3
b/xen/Rules.mk |
1
b/xen/arch/x86/Makefile |
2
b/xen/arch/x86/io_apic.c |
2
b/xen/common/physdev.c |
49
b/xen/drivers/Makefile |
4
b/xen/include/asm-x86/config.h |
8
b/xen/include/asm-x86/io_apic.h |
2
b/xen/include/public/physdev.h |
22
linux-2.6.11-xen-sparse/arch/xen/i386/pci/direct.c |
81
26 files changed, 4557 insertions(+), 191 deletions(-)
diff -Nru a/linux-2.6.11-xen-sparse/arch/xen/Kconfig
b/linux-2.6.11-xen-sparse/arch/xen/Kconfig
--- a/linux-2.6.11-xen-sparse/arch/xen/Kconfig 2005-05-03 11:05:07 -04:00
+++ b/linux-2.6.11-xen-sparse/arch/xen/Kconfig 2005-05-03 11:05:07 -04:00
@@ -181,6 +181,12 @@
source "arch/xen/Kconfig.drivers"
+if XEN_PRIVILEGED_GUEST
+menu "Power management options"
+source "drivers/acpi/Kconfig"
+endmenu
+endif
+
source "fs/Kconfig"
source "security/Kconfig"
diff -Nru a/linux-2.6.11-xen-sparse/arch/xen/configs/xen0_defconfig_x86_32
b/linux-2.6.11-xen-sparse/arch/xen/configs/xen0_defconfig_x86_32
--- a/linux-2.6.11-xen-sparse/arch/xen/configs/xen0_defconfig_x86_32
2005-05-03 11:05:07 -04:00
+++ b/linux-2.6.11-xen-sparse/arch/xen/configs/xen0_defconfig_x86_32
2005-05-03 11:05:07 -04:00
@@ -133,12 +133,23 @@
CONFIG_MTRR=y
CONFIG_HAVE_DEC_LOCK=y
# CONFIG_REGPARM is not set
+CONFIG_X86_LOCAL_APIC=y
+CONFIG_X86_IO_APIC=y
#
# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
#
+CONFIG_X86_UP_APIC=y
+CONFIG_X86_UP_IOAPIC=y
CONFIG_PCI=y
+# CONFIG_PCI_GOBIOS is not set
+# CONFIG_PCI_GOMMCONFIG is not set
+# CONFIG_PCI_GODIRECT is not set
+CONFIG_PCI_GOANY=y
+CONFIG_PCI_BIOS=y
CONFIG_PCI_DIRECT=y
+# CONFIG_PCIEPORTBUS is not set
+# CONFIG_PCI_MSI is not set
CONFIG_PCI_LEGACY_PROC=y
# CONFIG_PCI_NAMES is not set
CONFIG_ISA=y
@@ -176,6 +187,8 @@
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_FRAME_POINTER is not set
# CONFIG_4KSTACKS is not set
+CONFIG_X86_FIND_SMP_CONFIG=y
+CONFIG_X86_MPPARSE=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_X86_BIOS_REBOOT=y
@@ -842,6 +855,7 @@
CONFIG_DRM_SIS=m
# CONFIG_MWAVE is not set
# CONFIG_RAW_DRIVER is not set
+# CONFIG_HPET is not set
# CONFIG_HANGCHECK_TIMER is not set
#
@@ -1006,6 +1020,37 @@
# InfiniBand support
#
# CONFIG_INFINIBAND is not set
+
+#
+# Power management options
+#
+
+#
+# ACPI (Advanced Configuration and Power Interface) Support
+#
+CONFIG_ACPI=y
+CONFIG_ACPI_BOOT=y
+CONFIG_ACPI_INTERPRETER=y
+CONFIG_ACPI_AC=m
+CONFIG_ACPI_BATTERY=m
+CONFIG_ACPI_BUTTON=m
+CONFIG_ACPI_VIDEO=m
+CONFIG_ACPI_FAN=m
+CONFIG_ACPI_PROCESSOR=m
+CONFIG_ACPI_THERMAL=m
+CONFIG_ACPI_ASUS=m
+CONFIG_ACPI_IBM=m
+CONFIG_ACPI_TOSHIBA=m
+# CONFIG_ACPI_CUSTOM_DSDT is not set
+CONFIG_ACPI_BLACKLIST_YEAR=0
+# CONFIG_ACPI_DEBUG is not set
+CONFIG_ACPI_BUS=y
+CONFIG_ACPI_EC=y
+CONFIG_ACPI_POWER=y
+CONFIG_ACPI_PCI=y
+CONFIG_ACPI_SYSTEM=y
+# CONFIG_X86_PM_TIMER is not set
+# CONFIG_ACPI_CONTAINER is not set
#
# File systems
diff -Nru a/linux-2.6.11-xen-sparse/arch/xen/i386/Kconfig
b/linux-2.6.11-xen-sparse/arch/xen/i386/Kconfig
--- a/linux-2.6.11-xen-sparse/arch/xen/i386/Kconfig 2005-05-03 11:05:07
-04:00
+++ b/linux-2.6.11-xen-sparse/arch/xen/i386/Kconfig 2005-05-03 11:05:07
-04:00
@@ -662,11 +662,15 @@
generate incorrect output with certain kernel constructs when
-mregparm=3 is used.
-
config X86_LOCAL_APIC
bool
- depends on (X86_VISWS || SMP) && !X86_VOYAGER
- default n
+ depends on !SMP && X86_UP_APIC
+ default y
+
+config X86_IO_APIC
+ bool
+ depends on !SMP && X86_UP_IOAPIC
+ default y
if XEN_PHYSDEV_ACCESS
@@ -677,10 +681,45 @@
depends on X86_VISWS
default y
-#config X86_IO_APIC
-# bool
-# depends on SMP && !(X86_VISWS || X86_VOYAGER)
-# default y
+config X86_LOCAL_APIC
+ bool
+ depends on (X86_VISWS || SMP) && !X86_VOYAGER
+ default y
+
+config X86_UP_APIC
+ bool "Local APIC support on uniprocessors" if !SMP
+ depends on !(X86_VISWS || X86_VOYAGER)
+ ---help---
+ A local APIC (Advanced Programmable Interrupt Controller) is an
+ integrated interrupt controller in the CPU. If you have a single-CPU
+ system which has a processor with a local APIC, you can say Y here to
+ enable and use it. If you say Y here even though your machine doesn't
+ have a local APIC, then the kernel will still run with no slowdown at
+ all. The local APIC supports CPU-generated self-interrupts (timer,
+ performance counters), and the NMI watchdog which detects hard
+ lockups.
+
+ If you have a system with several CPUs, you do not need to say Y
+ here: the local APIC will be used automatically.
+
+config X86_UP_IOAPIC
+ bool "IO-APIC support on uniprocessors"
+ depends on !SMP && X86_UP_APIC
+ help
+ An IO-APIC (I/O Advanced Programmable Interrupt Controller) is an
+ SMP-capable replacement for PC-style interrupt controllers. Most
+ SMP systems and a small number of uniprocessor systems have one.
+ If you have a single-CPU system with an IO-APIC, you can say Y here
+ to use it. If you say Y here even though your machine doesn't have
+ an IO-APIC, then the kernel will still run with no slowdown at all.
+
+ If you have a system with several CPUs, you do not need to say Y
+ here: the IO-APIC will be used automatically.
+
+config X86_IO_APIC
+ bool
+ depends on SMP && !(X86_VISWS || X86_VOYAGER)
+ default y
config PCI
bool "PCI support" if !X86_VISWS
@@ -697,52 +736,47 @@
information about which PCI hardware does work under Linux and which
doesn't.
-#choice
-# prompt "PCI access mode"
-# depends on PCI && !X86_VISWS
-# default PCI_GOANY
-# ---help---
-# On PCI systems, the BIOS can be used to detect the PCI devices and
-# determine their configuration. However, some old PCI motherboards
-# have BIOS bugs and may crash if this is done. Also, some embedded
-# PCI-based systems don't have any BIOS at all. Linux can also try to
-# detect the PCI hardware directly without using the BIOS.
-#
-# With this option, you can specify how Linux should detect the
-# PCI devices. If you choose "BIOS", the BIOS will be used,
-# if you choose "Direct", the BIOS won't be used, and if you
-# choose "MMConfig", then PCI Express MMCONFIG will be used.
-# If you choose "Any", the kernel will try MMCONFIG, then the
-# direct access method and falls back to the BIOS if that doesn't
-# work. If unsure, go with the default, which is "Any".
-#
-#config PCI_GOBIOS
-# bool "BIOS"
-#
-#config PCI_GOMMCONFIG
-# bool "MMConfig"
-#
-#config PCI_GODIRECT
-# bool "Direct"
-#
-#config PCI_GOANY
-# bool "Any"
-#
-#endchoice
-#
-#config PCI_BIOS
-# bool
-# depends on !X86_VISWS && PCI && (PCI_GOBIOS || PCI_GOANY)
-# default y
-#
-#config PCI_DIRECT
-# bool
-# depends on PCI && ((PCI_GODIRECT || PCI_GOANY) || X86_VISWS)
-# default y
+choice
+ prompt "PCI access mode"
+ depends on PCI && !X86_VISWS
+ default PCI_GOANY
+ ---help---
+ On PCI systems, the BIOS can be used to detect the PCI devices and
+ determine their configuration. However, some old PCI motherboards
+ have BIOS bugs and may crash if this is done. Also, some embedded
+ PCI-based systems don't have any BIOS at all. Linux can also try to
+ detect the PCI hardware directly without using the BIOS.
+
+ With this option, you can specify how Linux should detect the
+ PCI devices. If you choose "BIOS", the BIOS will be used,
+ if you choose "Direct", the BIOS won't be used, and if you
+ choose "MMConfig", then PCI Express MMCONFIG will be used.
+ If you choose "Any", the kernel will try MMCONFIG, then the
+ direct access method and falls back to the BIOS if that doesn't
+ work. If unsure, go with the default, which is "Any".
+
+config PCI_GOBIOS
+ bool "BIOS"
+
+config PCI_GOMMCONFIG
+ bool "MMConfig"
+
+config PCI_GODIRECT
+ bool "Direct"
+
+config PCI_GOANY
+ bool "Any"
+
+endchoice
+
+config PCI_BIOS
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|