Author: adamg                        Date: Thu Dec 27 10:24:44 2007 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- xen-3.2.0-rc4-pre (from xen-unstable.hg)

---- Files affected:
SOURCES:
   kernel-xen-xen.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/kernel-xen-xen.patch
diff -u /dev/null SOURCES/kernel-xen-xen.patch:1.1
--- /dev/null   Thu Dec 27 11:24:44 2007
+++ SOURCES/kernel-xen-xen.patch        Thu Dec 27 11:24:39 2007
@@ -0,0 +1,138536 @@
+diff -burN --exclude .hg --exclude .hgtags 
linux-2.6.18/arch/i386/boot/Makefile linux-2.6.18-xen.hg/arch/i386/boot/Makefile
+--- linux-2.6.18/arch/i386/boot/Makefile       2006-09-20 05:42:06.000000000 
+0200
++++ linux-2.6.18-xen.hg/arch/i386/boot/Makefile        2007-12-23 
11:14:54.372518519 +0100
+@@ -26,7 +26,7 @@
+ #RAMDISK := -DRAMDISK=512
+ 
+ targets               := vmlinux.bin bootsect bootsect.o \
+-                 setup setup.o zImage bzImage
++                 setup setup.o zImage bzImage vmlinuz vmlinux-stripped
+ subdir-       := compressed
+ 
+ hostprogs-y   := tools/build
+@@ -133,5 +133,13 @@
+       cp System.map $(INSTALL_PATH)/
+       if [ -x /sbin/lilo ]; then /sbin/lilo; else /etc/lilo/install; fi
+ 
++$(obj)/vmlinuz: $(obj)/vmlinux-stripped FORCE
++      $(call if_changed,gzip)
++      @echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
++
++$(obj)/vmlinux-stripped: OBJCOPYFLAGS := -g --strip-unneeded
++$(obj)/vmlinux-stripped: vmlinux FORCE
++      $(call if_changed,objcopy)
++
+ install:
+       sh $(srctree)/$(src)/install.sh $(KERNELRELEASE) $(BOOTIMAGE) 
System.map "$(INSTALL_PATH)"
+diff -burN --exclude .hg --exclude .hgtags linux-2.6.18/arch/i386/Kconfig 
linux-2.6.18-xen.hg/arch/i386/Kconfig
+--- linux-2.6.18/arch/i386/Kconfig     2006-09-20 05:42:06.000000000 +0200
++++ linux-2.6.18-xen.hg/arch/i386/Kconfig      2007-12-23 11:14:54.369185012 
+0100
+@@ -16,6 +16,7 @@
+ 
+ config GENERIC_TIME
+       bool
++      depends on !X86_XEN
+       default y
+ 
+ config LOCKDEP_SUPPORT
+@@ -103,6 +104,15 @@
+       help
+         Choose this option if your computer is a standard PC or compatible.
+ 
++config X86_XEN
++      bool "Xen-compatible"
++      select X86_UP_APIC if !SMP && XEN_PRIVILEGED_GUEST
++      select X86_UP_IOAPIC if !SMP && XEN_PRIVILEGED_GUEST
++      select SWIOTLB
++      help
++        Choose this option if you plan to run this kernel on top of the
++        Xen Hypervisor.
++
+ config X86_ELAN
+       bool "AMD Elan"
+       help
+@@ -213,6 +223,7 @@
+ 
+ config HPET_TIMER
+       bool "HPET Timer Support"
++      depends on !X86_XEN
+       help
+         This enables the use of the HPET for the kernel's internal timer.
+         HPET is the next generation timer replacing legacy 8254s.
+@@ -263,7 +274,7 @@
+ 
+ config X86_UP_APIC
+       bool "Local APIC support on uniprocessors"
+-      depends on !SMP && !(X86_VISWS || X86_VOYAGER)
++      depends on !SMP && !(X86_VISWS || X86_VOYAGER || XEN_UNPRIVILEGED_GUEST)
+       help
+         A local APIC (Advanced Programmable Interrupt Controller) is an
+         integrated interrupt controller in the CPU. If you have a single-CPU
+@@ -288,12 +299,12 @@
+ 
+ config X86_LOCAL_APIC
+       bool
+-      depends on X86_UP_APIC || ((X86_VISWS || SMP) && !X86_VOYAGER)
++      depends on X86_UP_APIC || ((X86_VISWS || SMP) && !(X86_VOYAGER || 
XEN_UNPRIVILEGED_GUEST))
+       default y
+ 
+ config X86_IO_APIC
+       bool
+-      depends on X86_UP_IOAPIC || (SMP && !(X86_VISWS || X86_VOYAGER))
++      depends on X86_UP_IOAPIC || (SMP && !(X86_VISWS || X86_VOYAGER || 
XEN_UNPRIVILEGED_GUEST))
+       default y
+ 
+ config X86_VISWS_APIC
+@@ -303,7 +314,7 @@
+ 
+ config X86_MCE
+       bool "Machine Check Exception"
+-      depends on !X86_VOYAGER
++      depends on !(X86_VOYAGER || X86_XEN)
+       ---help---
+         Machine Check Exception support allows the processor to notify the
+         kernel if it detects a problem (e.g. overheating, component failure).
+@@ -402,6 +413,7 @@
+ 
+ config MICROCODE
+       tristate "/dev/cpu/microcode - Intel IA32 CPU microcode support"
++      depends on !XEN_UNPRIVILEGED_GUEST
+       ---help---
+         If you say Y here and also to "/dev file system support" in the
+         'File systems' section, you will be able to update the microcode on
+@@ -434,6 +446,10 @@
+         with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to
+         /dev/cpu/31/cpuid.
+ 
++config SWIOTLB
++      bool
++      default n
++
+ source "drivers/firmware/Kconfig"
+ 
+ choice
+@@ -616,6 +632,7 @@
+ 
+ config MATH_EMULATION
+       bool "Math emulation"
++      depends on !X86_XEN
+       ---help---
+         Linux can emulate a math coprocessor (used for floating point
+         operations) if you don't have one. 486DX and Pentium processors have
+@@ -641,6 +658,8 @@
+ 
+ config MTRR
+       bool "MTRR (Memory Type Range Register) support"
++      depends on !XEN_UNPRIVILEGED_GUEST
++      default y if X86_XEN
+       ---help---
+         On Intel P6 family processors (Pentium Pro, Pentium II and later)
+         the Memory Type Range Registers (MTRRs) may be used to control
+@@ -675,7 +694,7 @@
+ 
+ config EFI
+       bool "Boot from EFI support"
+-      depends on ACPI
++      depends on ACPI && !X86_XEN
+       default n
+       ---help---
+       This enables the the kernel to boot on EFI platforms using
+@@ -693,7 +712,7 @@
+ 
+ config IRQBALANCE
+       bool "Enable kernel irq balancing"
+-      depends on SMP && X86_IO_APIC
++      depends on SMP && X86_IO_APIC && !X86_XEN
+       default y
+       help
+         The default yes will allow the kernel to do irq load balancing.
+@@ -741,7 +760,7 @@
+ 
+ config KEXEC
+       bool "kexec system call (EXPERIMENTAL)"
+-      depends on EXPERIMENTAL
++      depends on EXPERIMENTAL && !XEN_UNPRIVILEGED_GUEST
+       help
+         kexec is a system call that implements the ability to shutdown your
+         current kernel, and to start another kernel.  It is like a reboot
+@@ -793,6 +812,7 @@
+ 
+ config COMPAT_VDSO
+       bool "Compat VDSO support"
++      depends on !X86_XEN
+       default y
+       help
+         Map the VDSO to the predictable old-style address too.
+@@ -810,18 +830,18 @@
+       depends on HIGHMEM
+ 
+ menu "Power management options (ACPI, APM)"
+-      depends on !X86_VOYAGER
++      depends on !(X86_VOYAGER || XEN_UNPRIVILEGED_GUEST)
+ 
+-source kernel/power/Kconfig
++source "kernel/power/Kconfig"
+ 
+ source "drivers/acpi/Kconfig"
+ 
+ menu "APM (Advanced Power Management) BIOS Support"
+-depends on PM && !X86_VISWS
++depends on PM && !(X86_VISWS || X86_XEN)
+ 
+ config APM
+       tristate "APM (Advanced Power Management) BIOS support"
+-      depends on PM
++      depends on PM && PM_LEGACY
+       ---help---
+         APM is a BIOS specification for saving power using several different
+         techniques. This is mostly useful for battery powered laptops with
+@@ -1006,6 +1026,7 @@
+ 
+ config PCI_GOBIOS
+       bool "BIOS"
++      depends on !X86_XEN
+ 
+ config PCI_GOMMCONFIG
+       bool "MMConfig"
+@@ -1013,6 +1034,13 @@
+ config PCI_GODIRECT
+       bool "Direct"
+ 
++config PCI_GOXEN_FE
++      bool "Xen PCI Frontend"
++      depends on X86_XEN
++      help
++        The PCI device frontend driver allows the kernel to import arbitrary
++        PCI devices from a PCI backend to support PCI driver domains.
++
+ config PCI_GOANY
+       bool "Any"
+ 
+@@ -1020,7 +1048,7 @@
+ 
+ config PCI_BIOS
+       bool
+-      depends on !X86_VISWS && PCI && (PCI_GOBIOS || PCI_GOANY)
++      depends on !(X86_VISWS || X86_XEN) && PCI && (PCI_GOBIOS || PCI_GOANY)
+       default y
+ 
+ config PCI_DIRECT
+@@ -1033,6 +1061,18 @@
+       depends on PCI && ACPI && (PCI_GOMMCONFIG || PCI_GOANY)
+       default y
+ 
++config XEN_PCIDEV_FRONTEND
++      bool
++      depends on PCI && X86_XEN && (PCI_GOXEN_FE || PCI_GOANY)
++      default y
++
++config XEN_PCIDEV_FE_DEBUG
++      bool "Xen PCI Frontend Debugging"
++      depends on XEN_PCIDEV_FRONTEND
++      default n
++      help
++        Enables some debug statements within the PCI Frontend.
++
+ source "drivers/pci/pcie/Kconfig"
+ 
+ source "drivers/pci/Kconfig"
+@@ -1043,7 +1083,7 @@
+ 
+ config ISA
+       bool "ISA support"
+-      depends on !(X86_VOYAGER || X86_VISWS)
++      depends on !(X86_VOYAGER || X86_VISWS || X86_XEN)
+       help
+         Find out whether you have ISA slots on your motherboard.  ISA is the
+         name of a bus system, i.e. the way the CPU talks to the other stuff
+@@ -1070,7 +1110,7 @@
+ source "drivers/eisa/Kconfig"
+ 
+ config MCA
+-      bool "MCA support" if !(X86_VISWS || X86_VOYAGER)
++      bool "MCA support" if !(X86_VISWS || X86_VOYAGER || X86_XEN)
+       default y if X86_VOYAGER
+       help
+         MicroChannel Architecture is found in some IBM PS/2 machines and
+@@ -1146,6 +1186,8 @@
+ 
+ source "crypto/Kconfig"
+ 
++source "drivers/xen/Kconfig"
++
+ source "lib/Kconfig"
+ 
+ #
+@@ -1171,7 +1213,7 @@
+ 
+ config X86_HT
+       bool
+-      depends on SMP && !(X86_VISWS || X86_VOYAGER)
++      depends on SMP && !(X86_VISWS || X86_VOYAGER || X86_XEN)
+       default y
+ 
+ config X86_BIOS_REBOOT
+@@ -1184,6 +1226,16 @@
+       depends on X86_SMP || (X86_VOYAGER && SMP)
+       default y
+ 
++config X86_NO_TSS
++      bool
++      depends on X86_XEN
++      default y
++
++config X86_NO_IDT
++      bool
++      depends on X86_XEN
++      default y
++
+ config KTIME_SCALAR
+       bool
+       default y
+diff -burN --exclude .hg --exclude .hgtags linux-2.6.18/arch/i386/Kconfig.cpu 
linux-2.6.18-xen.hg/arch/i386/Kconfig.cpu
+--- linux-2.6.18/arch/i386/Kconfig.cpu 2007-12-23 11:26:51.000120088 +0100
++++ linux-2.6.18-xen.hg/arch/i386/Kconfig.cpu  2007-12-23 11:14:54.369185012 
+0100
+@@ -252,7 +252,7 @@
+ 
+ config X86_F00F_BUG
+       bool
+-      depends on M586MMX || M586TSC || M586 || M486 || M386
++      depends on (M586MMX || M586TSC || M586 || M486 || M386) && !X86_NO_IDT
+       default y
+ 
+ config X86_WP_WORKS_OK
+@@ -312,5 +312,5 @@
+ 
+ config X86_TSC
+       bool
+-      depends on (MWINCHIP3D || MWINCHIP2 || MCRUSOE || MEFFICEON || 
MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII 
|| M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MGEODEGX1 || MGEODE_LX) && 
!X86_NUMAQ
++      depends on (MWINCHIP3D || MWINCHIP2 || MCRUSOE || MEFFICEON || 
MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII 
|| M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MGEODEGX1 || MGEODE_LX) && 
!X86_NUMAQ && !X86_XEN
+       default y
+diff -burN --exclude .hg --exclude .hgtags 
linux-2.6.18/arch/i386/Kconfig.debug linux-2.6.18-xen.hg/arch/i386/Kconfig.debug
+--- linux-2.6.18/arch/i386/Kconfig.debug       2006-09-20 05:42:06.000000000 
+0200
++++ linux-2.6.18-xen.hg/arch/i386/Kconfig.debug        2007-12-23 
11:14:54.369185012 +0100
+@@ -79,6 +79,7 @@
+ config DOUBLEFAULT
+       default y
+       bool "Enable doublefault exception handler" if EMBEDDED
++      depends on !X86_NO_TSS
+       help
+           This option allows trapping of rare doublefault exceptions that
+           would otherwise cause a system to silently reboot. Disabling this
+diff -burN --exclude .hg --exclude .hgtags 
linux-2.6.18/arch/i386/kernel/acpi/boot-xen.c 
linux-2.6.18-xen.hg/arch/i386/kernel/acpi/boot-xen.c
+--- linux-2.6.18/arch/i386/kernel/acpi/boot-xen.c      1970-01-01 
01:00:00.000000000 +0100
++++ linux-2.6.18-xen.hg/arch/i386/kernel/acpi/boot-xen.c       2007-12-23 
11:14:54.382519030 +0100
+@@ -0,0 +1,1168 @@
++/*
++ *  boot.c - Architecture-Specific Low-Level ACPI Boot Support
++ *
++ *  Copyright (C) 2001, 2002 Paul Diefenbaugh <[EMAIL PROTECTED]>
++ *  Copyright (C) 2001 Jun Nakajima <[EMAIL PROTECTED]>
++ *
++ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++ *
++ *  This program is free software; you can redistribute it and/or modify
++ *  it under the terms of the GNU General Public License as published by
++ *  the Free Software Foundation; either version 2 of the License, or
++ *  (at your option) any later version.
++ *
++ *  This program is distributed in the hope that it will be useful,
++ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *  GNU General Public License for more details.
++ *
++ *  You should have received a copy of the GNU General Public License
++ *  along with this program; if not, write to the Free Software
++ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
++ *
++ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++ */
++
++#include <linux/init.h>
++#include <linux/acpi.h>
++#include <linux/efi.h>
++#include <linux/module.h>
++#include <linux/dmi.h>
++#include <linux/irq.h>
++
++#include <asm/pgtable.h>
++#include <asm/io_apic.h>
++#include <asm/apic.h>
++#include <asm/io.h>
++#include <asm/mpspec.h>
++
++#ifdef        CONFIG_X86_64
++
++extern void __init clustered_apic_check(void);
++
++extern int gsi_irq_sharing(int gsi);
++#include <asm/proto.h>
++
++static inline int acpi_madt_oem_check(char *oem_id, char *oem_table_id) { 
return 0; }
++
++
++#else                         /* X86 */
++
++#ifdef        CONFIG_X86_LOCAL_APIC
++#include <mach_apic.h>
++#include <mach_mpparse.h>
++#endif                                /* CONFIG_X86_LOCAL_APIC */
++
++static inline int gsi_irq_sharing(int gsi) { return gsi; }
++
++#endif                                /* X86 */
++
++#define BAD_MADT_ENTRY(entry, end) (                                      \
++              (!entry) || (unsigned long)entry + sizeof(*entry) > end ||  \
++              ((acpi_table_entry_header *)entry)->length < sizeof(*entry))
++
++#define PREFIX                        "ACPI: "
++
++int acpi_noirq __initdata;    /* skip ACPI IRQ initialization */
++int acpi_pci_disabled __initdata;     /* skip ACPI PCI scan and IRQ 
initialization */
++int acpi_ht __initdata = 1;   /* enable HT */
++
++int acpi_lapic;
++int acpi_ioapic;
++int acpi_strict;
++EXPORT_SYMBOL(acpi_strict);
++
++acpi_interrupt_flags acpi_sci_flags __initdata;
++int acpi_sci_override_gsi __initdata;
++int acpi_skip_timer_override __initdata;
++
++#ifdef CONFIG_X86_LOCAL_APIC
++static u64 acpi_lapic_addr __initdata = APIC_DEFAULT_PHYS_BASE;
++#endif
++
++#ifndef __HAVE_ARCH_CMPXCHG
++#warning ACPI uses CMPXCHG, i486 and later hardware
++#endif
++
++#define MAX_MADT_ENTRIES      256
++u8 x86_acpiid_to_apicid[MAX_MADT_ENTRIES] =
++    {[0 ... MAX_MADT_ENTRIES - 1] = 0xff };
++EXPORT_SYMBOL(x86_acpiid_to_apicid);
++
++/* --------------------------------------------------------------------------
++                              Boot-time Configuration
++   -------------------------------------------------------------------------- 
*/
++
++/*
++ * The default interrupt routing model is PIC (8259).  This gets
++ * overriden if IOAPICs are enumerated (below).
++ */
++enum acpi_irq_model_id acpi_irq_model = ACPI_IRQ_MODEL_PIC;
++
++#if defined(CONFIG_X86_64) && !defined(CONFIG_XEN)
++
++/* rely on all ACPI tables being in the direct mapping */
++char *__acpi_map_table(unsigned long phys_addr, unsigned long size)
++{
++      if (!phys_addr || !size)
++              return NULL;
++
++      if (phys_addr+size <= (end_pfn_map << PAGE_SHIFT) + PAGE_SIZE)
++              return __va(phys_addr);
++
++      return NULL;
++}
++
++#else
++
++/*
++ * Temporarily use the virtual area starting from FIX_IO_APIC_BASE_END,
++ * to map the target physical address. The problem is that set_fixmap()
++ * provides a single page, and it is possible that the page is not
++ * sufficient.
++ * By using this area, we can map up to MAX_IO_APICS pages temporarily,
++ * i.e. until the next __va_range() call.
++ *
++ * Important Safety Note:  The fixed I/O APIC page numbers are *subtracted*
++ * from the fixed base.  That's why we start at FIX_IO_APIC_BASE_END and
++ * count idx down while incrementing the phys address.
++ */
++char *__acpi_map_table(unsigned long phys, unsigned long size)
++{
++      unsigned long base, offset, mapped_size;
++      int idx;
++
++#ifndef CONFIG_XEN
++      if (phys + size < 8 * 1024 * 1024)
++              return __va(phys);
++#endif
++
++      offset = phys & (PAGE_SIZE - 1);
++      mapped_size = PAGE_SIZE - offset;
++      set_fixmap(FIX_ACPI_END, phys);
++      base = fix_to_virt(FIX_ACPI_END);
++
++      /*
++       * Most cases can be covered by the below.
++       */
++      idx = FIX_ACPI_END;
++      while (mapped_size < size) {
++              if (--idx < FIX_ACPI_BEGIN)
++                      return NULL;    /* cannot handle this */
++              phys += PAGE_SIZE;
++              set_fixmap(idx, phys);
++              mapped_size += PAGE_SIZE;
++      }
++
++      return ((unsigned char *)base + offset);
++}
++#endif
++
++#ifdef CONFIG_PCI_MMCONFIG
++/* The physical address of the MMCONFIG aperture.  Set from ACPI tables. */
++struct acpi_table_mcfg_config *pci_mmcfg_config;
++int pci_mmcfg_config_num;
++
++int __init acpi_parse_mcfg(unsigned long phys_addr, unsigned long size)
++{
++      struct acpi_table_mcfg *mcfg;
++      unsigned long i;
++      int config_size;
++
++      if (!phys_addr || !size)
++              return -EINVAL;
++
++      mcfg = (struct acpi_table_mcfg *)__acpi_map_table(phys_addr, size);
++      if (!mcfg) {
++              printk(KERN_WARNING PREFIX "Unable to map MCFG\n");
++              return -ENODEV;
++      }
++
++      /* how many config structures do we have */
++      pci_mmcfg_config_num = 0;
++      i = size - sizeof(struct acpi_table_mcfg);
++      while (i >= sizeof(struct acpi_table_mcfg_config)) {
++              ++pci_mmcfg_config_num;
++              i -= sizeof(struct acpi_table_mcfg_config);
++      };
++      if (pci_mmcfg_config_num == 0) {
++              printk(KERN_ERR PREFIX "MMCONFIG has no entries\n");
++              return -ENODEV;
++      }
++
++      config_size = pci_mmcfg_config_num * sizeof(*pci_mmcfg_config);
++      pci_mmcfg_config = kmalloc(config_size, GFP_KERNEL);
++      if (!pci_mmcfg_config) {
++              printk(KERN_WARNING PREFIX
++                     "No memory for MCFG config tables\n");
++              return -ENOMEM;
++      }
++
++      memcpy(pci_mmcfg_config, &mcfg->config, config_size);
++      for (i = 0; i < pci_mmcfg_config_num; ++i) {
++              if (mcfg->config[i].base_reserved) {
++                      printk(KERN_ERR PREFIX
++                             "MMCONFIG not in low 4GB of memory\n");
++                      kfree(pci_mmcfg_config);
++                      pci_mmcfg_config_num = 0;
++                      return -ENODEV;
++              }
++      }
++
++      return 0;
++}
++#endif                                /* CONFIG_PCI_MMCONFIG */
++
++#ifdef CONFIG_X86_LOCAL_APIC
++static int __init acpi_parse_madt(unsigned long phys_addr, unsigned long size)
++{
++      struct acpi_table_madt *madt = NULL;
++
++      if (!phys_addr || !size || !cpu_has_apic)
++              return -EINVAL;
++
++      madt = (struct acpi_table_madt *)__acpi_map_table(phys_addr, size);
++      if (!madt) {
++              printk(KERN_WARNING PREFIX "Unable to map MADT\n");
++              return -ENODEV;
++      }
++
++      if (madt->lapic_address) {
++              acpi_lapic_addr = (u64) madt->lapic_address;
++
++              printk(KERN_DEBUG PREFIX "Local APIC address 0x%08x\n",
++                     madt->lapic_address);
++      }
++
++      acpi_madt_oem_check(madt->header.oem_id, madt->header.oem_table_id);
++
++      return 0;
++}
++
++static int __init
++acpi_parse_lapic(acpi_table_entry_header * header, const unsigned long end)
++{
++      struct acpi_table_lapic *processor = NULL;
++
++      processor = (struct acpi_table_lapic *)header;
++
++      if (BAD_MADT_ENTRY(processor, end))
++              return -EINVAL;
++
++      acpi_table_print_madt_entry(header);
++
++      /* Record local apic id only when enabled */
++      if (processor->flags.enabled)
++              x86_acpiid_to_apicid[processor->acpi_id] = processor->id;
++
++      /*
++       * We need to register disabled CPU as well to permit
++       * counting disabled CPUs. This allows us to size
++       * cpus_possible_map more accurately, to permit
++       * to not preallocating memory for all NR_CPUS
++       * when we use CPU hotplug.
++       */
++      mp_register_lapic(processor->id,        /* APIC ID */
++                        processor->flags.enabled);    /* Enabled? */
<<Diff was trimmed, longer than 597 lines>>
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to