[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [linux-2.6.18-xen] merge with linux-2.6.18-xen.hg



# HG changeset patch
# User Alex Williamson <alex.williamson@xxxxxx>
# Date 1190917379 21600
# Node ID 87e425da49741a7284ee819ffed38a8f51b72dfa
# Parent  351a9d2f7dd43be82188c263de153c9165a5e04e
# Parent  c1c57fea77e93a992e668f1c634fb8e8922ea52d
merge with linux-2.6.18-xen.hg
---
 arch/i386/boot-xen/Makefile                |   19 ----
 arch/i386/Makefile                         |   15 +--
 arch/i386/boot/Makefile                    |   10 ++
 arch/i386/kernel/cpu/cpufreq/powernow-k8.c |  122 +++++++++++++++++++----------
 arch/i386/kernel/cpu/cpufreq/powernow-k8.h |    3 
 arch/i386/kernel/time-xen.c                |   40 +++++++++
 arch/i386/mm/pgtable-xen.c                 |   92 +--------------------
 arch/i386/pci/irq.c                        |    6 +
 arch/x86_64/Makefile                       |   14 +--
 arch/x86_64/boot/Makefile                  |   10 ++
 drivers/i2c/busses/Kconfig                 |    1 
 drivers/i2c/busses/i2c-i801.c              |    2 
 drivers/scsi/ahci.c                        |   22 +++++
 drivers/scsi/ata_piix.c                    |   43 +++++++++-
 drivers/xen/blkfront/blkfront.c            |    2 
 drivers/xen/xenbus/xenbus_probe.c          |   11 ++
 fs/lockd/svc.c                             |    3 
 fs/nfs/sysctl.c                            |    5 -
 include/linux/pci_ids.h                    |    7 +
 include/linux/sysctl.h                     |   14 ++-
 include/xen/interface/platform.h           |   11 ++
 sound/pci/hda/hda_intel.c                  |    3 
 22 files changed, 276 insertions(+), 179 deletions(-)

diff -r 351a9d2f7dd4 -r 87e425da4974 arch/i386/Makefile
--- a/arch/i386/Makefile        Fri Sep 21 12:54:11 2007 -0600
+++ b/arch/i386/Makefile        Thu Sep 27 12:22:59 2007 -0600
@@ -111,20 +111,18 @@ AFLAGS += $(mflags-y)
 
 boot := arch/i386/boot
 
-PHONY += zImage bzImage compressed zlilo bzlilo \
+PHONY += zImage bzImage vmlinuz compressed zlilo bzlilo \
          zdisk bzdisk fdimage fdimage144 fdimage288 isoimage install
 
 ifdef CONFIG_XEN
 CPPFLAGS := -Iinclude$(if $(KBUILD_SRC),2)/asm/mach-xen $(CPPFLAGS)
-boot := arch/i386/boot-xen
-.PHONY: vmlinuz
 all: vmlinuz
 
+# KBUILD_IMAGE specifies the target image being built
+KBUILD_IMAGE := $(boot)/vmlinuz
+
 vmlinuz: vmlinux
-       $(Q)$(MAKE) $(build)=$(boot) $@
-
-install:
-       $(Q)$(MAKE) $(build)=$(boot) $@
+       $(Q)$(MAKE) $(build)=$(boot) $(KBUILD_IMAGE)
 else
 all: bzImage
 
@@ -145,10 +143,10 @@ zdisk bzdisk: vmlinux
 
 fdimage fdimage144 fdimage288 isoimage: vmlinux
        $(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) $@
+endif
 
 install:
        $(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) install
-endif
 
 archclean:
        $(Q)$(MAKE) $(clean)=arch/i386/boot
@@ -167,4 +165,3 @@ CLEAN_FILES += arch/$(ARCH)/boot/fdimage
 CLEAN_FILES += arch/$(ARCH)/boot/fdimage \
               arch/$(ARCH)/boot/image.iso \
               arch/$(ARCH)/boot/mtools.conf
-CLEAN_FILES += vmlinuz vmlinux-stripped
diff -r 351a9d2f7dd4 -r 87e425da4974 arch/i386/boot-xen/Makefile
--- a/arch/i386/boot-xen/Makefile       Fri Sep 21 12:54:11 2007 -0600
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-
-OBJCOPYFLAGS := -g --strip-unneeded
-
-vmlinuz: vmlinux-stripped FORCE
-       $(call if_changed,gzip)
-
-vmlinux-stripped: vmlinux FORCE
-       $(call if_changed,objcopy)
-
-INSTALL_ROOT := $(patsubst %/boot,%,$(INSTALL_PATH))
-
-XINSTALL_NAME ?= $(KERNELRELEASE)
-install:
-       mkdir -p $(INSTALL_ROOT)/boot
-       install -m0644 vmlinuz 
$(INSTALL_ROOT)/boot/vmlinuz-$(XINSTALL_NAME)$(INSTALL_SUFFIX)
-       install -m0644 vmlinux 
$(INSTALL_ROOT)/boot/vmlinux-syms-$(XINSTALL_NAME)$(INSTALL_SUFFIX)
-       install -m0664 .config 
$(INSTALL_ROOT)/boot/config-$(XINSTALL_NAME)$(INSTALL_SUFFIX)
-       install -m0664 System.map 
$(INSTALL_ROOT)/boot/System.map-$(XINSTALL_NAME)$(INSTALL_SUFFIX)
-       ln -f -s vmlinuz-$(XINSTALL_NAME)$(INSTALL_SUFFIX) 
$(INSTALL_ROOT)/boot/vmlinuz-$(VERSION).$(PATCHLEVEL)$(shell [ -e 
$(objtree)/localversion-xen ] && cat 
$(objtree)/localversion-xen)$(INSTALL_SUFFIX)
diff -r 351a9d2f7dd4 -r 87e425da4974 arch/i386/boot/Makefile
--- a/arch/i386/boot/Makefile   Fri Sep 21 12:54:11 2007 -0600
+++ b/arch/i386/boot/Makefile   Thu Sep 27 12:22:59 2007 -0600
@@ -26,7 +26,7 @@ SVGA_MODE := -DSVGA_MODE=NORMAL_VGA
 #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 @@ zlilo: $(BOOTIMAGE)
        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 -r 351a9d2f7dd4 -r 87e425da4974 arch/i386/kernel/cpu/cpufreq/powernow-k8.c
--- a/arch/i386/kernel/cpu/cpufreq/powernow-k8.c        Fri Sep 21 12:54:11 
2007 -0600
+++ b/arch/i386/kernel/cpu/cpufreq/powernow-k8.c        Thu Sep 27 12:22:59 
2007 -0600
@@ -738,6 +738,7 @@ static int find_psb_table(struct powerno
 
                data->numps = psb->numps;
                dprintk("numpstates: 0x%x\n", data->numps);
+               data->starting_core_affinity = cpumask_of_cpu(0);
                return fill_powernow_table(data, (struct pst_s *)(psb+1), 
maxvid);
        }
        /*
@@ -758,15 +759,43 @@ static int find_psb_table(struct powerno
 #ifdef CONFIG_X86_POWERNOW_K8_ACPI
 static void powernow_k8_acpi_pst_values(struct powernow_k8_data *data, 
unsigned int index)
 {
-       if (!data->acpi_data.state_count || (cpu_family == CPU_HW_PSTATE))
+       if (!data->acpi_data->state_count || (cpu_family == CPU_HW_PSTATE))
                return;
 
-       data->irt = (data->acpi_data.states[index].control >> IRT_SHIFT) & 
IRT_MASK;
-       data->rvo = (data->acpi_data.states[index].control >> RVO_SHIFT) & 
RVO_MASK;
-       data->exttype = (data->acpi_data.states[index].control >> 
EXT_TYPE_SHIFT) & EXT_TYPE_MASK;
-       data->plllock = (data->acpi_data.states[index].control >> PLL_L_SHIFT) 
& PLL_L_MASK;
-       data->vidmvs = 1 << ((data->acpi_data.states[index].control >> 
MVS_SHIFT) & MVS_MASK);
-       data->vstable = (data->acpi_data.states[index].control >> VST_SHIFT) & 
VST_MASK;
+       data->irt = (data->acpi_data->states[index].control >> IRT_SHIFT) & 
IRT_MASK;
+       data->rvo = (data->acpi_data->states[index].control >> RVO_SHIFT) & 
RVO_MASK;
+       data->exttype = (data->acpi_data->states[index].control >> 
EXT_TYPE_SHIFT) & EXT_TYPE_MASK;
+       data->plllock = (data->acpi_data->states[index].control >> PLL_L_SHIFT) 
& PLL_L_MASK;
+       data->vidmvs = 1 << ((data->acpi_data->states[index].control >> 
MVS_SHIFT) & MVS_MASK);
+       data->vstable = (data->acpi_data->states[index].control >> VST_SHIFT) & 
VST_MASK;
+}
+
+static struct acpi_processor_performance *acpi_perf_data[NR_CPUS];
+static int preregister_valid = 0;
+
+static int powernow_k8_cpu_preinit_acpi()
+{
+       int i; 
+       struct acpi_processor_performance *data;
+       for_each_possible_cpu(i) {
+               data = kzalloc(sizeof(struct acpi_processor_performance),
+                               GFP_KERNEL);
+               if (!data) {
+                       int j;
+                       for_each_possible_cpu(j) {
+                               kfree(acpi_perf_data[j]);
+                               acpi_perf_data[j] = NULL;
+                       }
+                       return -ENODEV;
+               }
+               acpi_perf_data[i] = data;
+       }
+
+       if (acpi_processor_preregister_performance(acpi_perf_data))
+               return -ENODEV;
+       else 
+               preregister_valid = 1;
+       return 0;
 }
 
 static int powernow_k8_cpu_init_acpi(struct powernow_k8_data *data)
@@ -774,28 +803,29 @@ static int powernow_k8_cpu_init_acpi(str
        struct cpufreq_frequency_table *powernow_table;
        int ret_val;
 
-       if (acpi_processor_register_performance(&data->acpi_data, data->cpu)) {
+       data->acpi_data = acpi_perf_data[data->cpu];
+       if (acpi_processor_register_performance(data->acpi_data, data->cpu)) {
                dprintk("register performance failed: bad ACPI data\n");
                return -EIO;
        }
 
        /* verify the data contained in the ACPI structures */
-       if (data->acpi_data.state_count <= 1) {
+       if (data->acpi_data->state_count <= 1) {
                dprintk("No ACPI P-States\n");
                goto err_out;
        }
 
-       if ((data->acpi_data.control_register.space_id != 
ACPI_ADR_SPACE_FIXED_HARDWARE) ||
-               (data->acpi_data.status_register.space_id != 
ACPI_ADR_SPACE_FIXED_HARDWARE)) {
+       if ((data->acpi_data->control_register.space_id != 
ACPI_ADR_SPACE_FIXED_HARDWARE) ||
+               (data->acpi_data->status_register.space_id != 
ACPI_ADR_SPACE_FIXED_HARDWARE)) {
                dprintk("Invalid control/status registers (%x - %x)\n",
-                       data->acpi_data.control_register.space_id,
-                       data->acpi_data.status_register.space_id);
+                       data->acpi_data->control_register.space_id,
+                       data->acpi_data->status_register.space_id);
                goto err_out;
        }
 
        /* fill in data->powernow_table */
        powernow_table = kmalloc((sizeof(struct cpufreq_frequency_table)
-               * (data->acpi_data.state_count + 1)), GFP_KERNEL);
+               * (data->acpi_data->state_count + 1)), GFP_KERNEL);
        if (!powernow_table) {
                dprintk("powernow_table memory alloc failure\n");
                goto err_out;
@@ -808,28 +838,43 @@ static int powernow_k8_cpu_init_acpi(str
        if (ret_val)
                goto err_out_mem;
 
-       powernow_table[data->acpi_data.state_count].frequency = 
CPUFREQ_TABLE_END;
-       powernow_table[data->acpi_data.state_count].index = 0;
+       powernow_table[data->acpi_data->state_count].frequency = 
CPUFREQ_TABLE_END;
+       powernow_table[data->acpi_data->state_count].index = 0;
        data->powernow_table = powernow_table;
 
        /* fill in data */
-       data->numps = data->acpi_data.state_count;
+       data->numps = data->acpi_data->state_count;
        print_basics(data);
        powernow_k8_acpi_pst_values(data, 0);
 
        /* notify BIOS that we exist */
        acpi_processor_notify_smm(THIS_MODULE);
 
+       /* determine affinity, from ACPI if available */
+       if (preregister_valid) {
+               if ((data->acpi_data->shared_type == CPUFREQ_SHARED_TYPE_ALL) ||
+                   (data->acpi_data->shared_type == CPUFREQ_SHARED_TYPE_ANY))
+                       data->starting_core_affinity = 
data->acpi_data->shared_cpu_map;
+               else
+                       data->starting_core_affinity = 
cpumask_of_cpu(data->cpu);
+       } else {
+               /* best guess from family if not */
+               if (cpu_family == CPU_HW_PSTATE)
+                       data->starting_core_affinity = 
cpumask_of_cpu(data->cpu);
+               else
+                       data->starting_core_affinity = cpu_core_map[data->cpu];
+       }
+
        return 0;
 
 err_out_mem:
        kfree(powernow_table);
 
 err_out:
-       acpi_processor_unregister_performance(&data->acpi_data, data->cpu);
-
-       /* data->acpi_data.state_count informs us at ->exit() whether ACPI was 
used */
-       data->acpi_data.state_count = 0;
+       acpi_processor_unregister_performance(data->acpi_data, data->cpu);
+
+       /* data->acpi_data->state_count informs us at ->exit() whether ACPI was 
used */
+       data->acpi_data->state_count = 0;
 
        return -ENODEV;
 }
@@ -838,13 +883,13 @@ static int fill_powernow_table_pstate(st
 {
        int i;
 
-       for (i = 0; i < data->acpi_data.state_count; i++) {
+       for (i = 0; i < data->acpi_data->state_count; i++) {
                u32 index;
                u32 hi = 0, lo = 0;
                u32 fid;
                u32 did;
 
-               index = data->acpi_data.states[i].control & HW_PSTATE_MASK;
+               index = data->acpi_data->states[i].control & HW_PSTATE_MASK;
                if (index > MAX_HW_PSTATE) {
                        printk(KERN_ERR PFX "invalid pstate %d - bad value 
%d.\n", i, index);
                        printk(KERN_ERR PFX "Please report to BIOS 
manufacturer\n");
@@ -865,10 +910,10 @@ static int fill_powernow_table_pstate(st
 
                powernow_table[i].frequency = find_khz_freq_from_fiddid(fid, 
did);
 
-               if (powernow_table[i].frequency != 
(data->acpi_data.states[i].core_frequency * 1000)) {
+               if (powernow_table[i].frequency != 
(data->acpi_data->states[i].core_frequency * 1000)) {
                        printk(KERN_INFO PFX "invalid freq entries %u kHz vs. 
%u kHz\n",
                                powernow_table[i].frequency,
-                               (unsigned int) 
(data->acpi_data.states[i].core_frequency * 1000));
+                               (unsigned int) 
(data->acpi_data->states[i].core_frequency * 1000));
                        powernow_table[i].frequency = CPUFREQ_ENTRY_INVALID;
                        continue;
                }
@@ -880,16 +925,16 @@ static int fill_powernow_table_fidvid(st
 {
        int i;
        int cntlofreq = 0;
-       for (i = 0; i < data->acpi_data.state_count; i++) {
+       for (i = 0; i < data->acpi_data->state_count; i++) {
                u32 fid;
                u32 vid;
 
                if (data->exttype) {
-                       fid = data->acpi_data.states[i].status & EXT_FID_MASK;
-                       vid = (data->acpi_data.states[i].status >> VID_SHIFT) & 
EXT_VID_MASK;
+                       fid = data->acpi_data->states[i].status & EXT_FID_MASK;
+                       vid = (data->acpi_data->states[i].status >> VID_SHIFT) 
& EXT_VID_MASK;
                } else {
-                       fid = data->acpi_data.states[i].control & FID_MASK;
-                       vid = (data->acpi_data.states[i].control >> VID_SHIFT) 
& VID_MASK;
+                       fid = data->acpi_data->states[i].control & FID_MASK;
+                       vid = (data->acpi_data->states[i].control >> VID_SHIFT) 
& VID_MASK;
                }
 
                dprintk("   %d : fid 0x%x, vid 0x%x\n", i, fid, vid);
@@ -930,10 +975,10 @@ static int fill_powernow_table_fidvid(st
                                cntlofreq = i;
                }
 
-               if (powernow_table[i].frequency != 
(data->acpi_data.states[i].core_frequency * 1000)) {
+               if (powernow_table[i].frequency != 
(data->acpi_data->states[i].core_frequency * 1000)) {
                        printk(KERN_INFO PFX "invalid freq entries %u kHz vs. 
%u kHz\n",
                                powernow_table[i].frequency,
-                               (unsigned int) 
(data->acpi_data.states[i].core_frequency * 1000));
+                               (unsigned int) 
(data->acpi_data->states[i].core_frequency * 1000));
                        powernow_table[i].frequency = CPUFREQ_ENTRY_INVALID;
                        continue;
                }
@@ -943,14 +988,15 @@ static int fill_powernow_table_fidvid(st
 
 static void powernow_k8_cpu_exit_acpi(struct powernow_k8_data *data)
 {
-       if (data->acpi_data.state_count)
-               acpi_processor_unregister_performance(&data->acpi_data, 
data->cpu);
+       if (data->acpi_data->state_count)
+               acpi_processor_unregister_performance(data->acpi_data, 
data->cpu);
 }
 
 #else
 static int powernow_k8_cpu_init_acpi(struct powernow_k8_data *data) { return 
-ENODEV; }
 static void powernow_k8_cpu_exit_acpi(struct powernow_k8_data *data) { return; 
}
 static void powernow_k8_acpi_pst_values(struct powernow_k8_data *data, 
unsigned int index) { return; }
+static int powernow_k8_cpu_preinit_acpi() { return -ENODEV; }
 #endif /* CONFIG_X86_POWERNOW_K8_ACPI */
 
 /* Take a frequency, and issue the fid/vid transition command */
@@ -1164,7 +1210,7 @@ static int __cpuinit powernowk8_cpu_init
                 * an UP version, and is deprecated by AMD.
                 */
                if (num_online_cpus() != 1) {
-                       printk(KERN_ERR PFX "MP systems not supported by PSB 
BIOS structure\n");
+                       printk(KERN_ERR PFX "Your BIOS does not provide _PSS 
objects.  PowerNow! does not work on SMP systems without _PSS objects.  
Complain to your BIOS vendor.\n");
                        kfree(data);
                        return -ENODEV;
                }
@@ -1204,10 +1250,7 @@ static int __cpuinit powernowk8_cpu_init
        set_cpus_allowed(current, oldmask);
 
        pol->governor = CPUFREQ_DEFAULT_GOVERNOR;
-       if (cpu_family == CPU_HW_PSTATE)
-               pol->cpus = cpumask_of_cpu(pol->cpu);
-       else
-               pol->cpus = cpu_core_map[pol->cpu];
+       pol->cpus = data->starting_core_affinity;
        data->available_cores = &(pol->cpus);
 
        /* Take a crude guess here.
@@ -1323,6 +1366,7 @@ static int __cpuinit powernowk8_init(voi
        }
 
        if (supported_cpus == num_online_cpus()) {
+               powernow_k8_cpu_preinit_acpi();
                printk(KERN_INFO PFX "Found %d %s "
                        "processors (" VERSION ")\n", supported_cpus,
                        boot_cpu_data.x86_model_id);
diff -r 351a9d2f7dd4 -r 87e425da4974 arch/i386/kernel/cpu/cpufreq/powernow-k8.h
--- a/arch/i386/kernel/cpu/cpufreq/powernow-k8.h        Fri Sep 21 12:54:11 
2007 -0600
+++ b/arch/i386/kernel/cpu/cpufreq/powernow-k8.h        Thu Sep 27 12:22:59 
2007 -0600
@@ -32,12 +32,13 @@ struct powernow_k8_data {
 #ifdef CONFIG_X86_POWERNOW_K8_ACPI
        /* the acpi table needs to be kept. it's only available if ACPI was
         * used to determine valid frequency/vid/fid states */
-       struct acpi_processor_performance acpi_data;
+       struct acpi_processor_performance *acpi_data;
 #endif
        /* we need to keep track of associated cores, but let cpufreq
         * handle hotplug events - so just point at cpufreq pol->cpus
         * structure */
        cpumask_t *available_cores;
+       cpumask_t starting_core_affinity;
 };
 
 
diff -r 351a9d2f7dd4 -r 87e425da4974 arch/i386/kernel/time-xen.c
--- a/arch/i386/kernel/time-xen.c       Fri Sep 21 12:54:11 2007 -0600
+++ b/arch/i386/kernel/time-xen.c       Thu Sep 27 12:22:59 2007 -0600
@@ -50,6 +50,7 @@
 #include <linux/percpu.h>
 #include <linux/kernel_stat.h>
 #include <linux/posix-timers.h>
+#include <linux/cpufreq.h>
 
 #include <asm/io.h>
 #include <asm/smp.h>
@@ -1118,6 +1119,45 @@ void local_teardown_timer(unsigned int c
        BUG_ON(cpu == 0);
        unbind_from_irqhandler(per_cpu(timer_irq, cpu), NULL);
 }
+#endif
+
+#if CONFIG_CPU_FREQ
+static int time_cpufreq_notifier(struct notifier_block *nb, unsigned long val, 
+                               void *data)
+{
+       struct cpufreq_freqs *freq = data;
+       struct xen_platform_op op;
+
+       if (cpu_has(&cpu_data[freq->cpu], X86_FEATURE_CONSTANT_TSC))
+               return 0;
+
+       if (val == CPUFREQ_PRECHANGE)
+               return 0;
+
+       op.cmd = XENPF_change_freq;
+       op.u.change_freq.flags = 0;
+       op.u.change_freq.cpu = freq->cpu;
+       op.u.change_freq.freq = (u64)freq->new * 1000;
+       HYPERVISOR_platform_op(&op);
+
+       return 0;
+}
+
+static struct notifier_block time_cpufreq_notifier_block = {
+       .notifier_call = time_cpufreq_notifier
+};
+
+static int __init cpufreq_time_setup(void)
+{
+       if (!cpufreq_register_notifier(&time_cpufreq_notifier_block,
+                       CPUFREQ_TRANSITION_NOTIFIER)) {
+               printk(KERN_ERR "failed to set up cpufreq notifier\n");
+               return -ENODEV;
+       }
+       return 0;
+}
+
+core_initcall(cpufreq_time_setup);
 #endif
 
 /*
diff -r 351a9d2f7dd4 -r 87e425da4974 arch/i386/mm/pgtable-xen.c
--- a/arch/i386/mm/pgtable-xen.c        Fri Sep 21 12:54:11 2007 -0600
+++ b/arch/i386/mm/pgtable-xen.c        Thu Sep 27 12:22:59 2007 -0600
@@ -74,87 +74,6 @@ void show_mem(void)
 }
 
 /*
- * Associate a virtual page frame with a given physical page frame 
- * and protection flags for that frame.
- */ 
-static void set_pte_pfn(unsigned long vaddr, unsigned long pfn, pgprot_t flags)
-{
-       pgd_t *pgd;
-       pud_t *pud;
-       pmd_t *pmd;
-       pte_t *pte;
-
-       pgd = swapper_pg_dir + pgd_index(vaddr);
-       if (pgd_none(*pgd)) {
-               BUG();
-               return;
-       }
-       pud = pud_offset(pgd, vaddr);
-       if (pud_none(*pud)) {
-               BUG();
-               return;
-       }
-       pmd = pmd_offset(pud, vaddr);
-       if (pmd_none(*pmd)) {
-               BUG();
-               return;
-       }
-       pte = pte_offset_kernel(pmd, vaddr);
-       if (pgprot_val(flags))
-               /* <pfn,flags> stored as-is, to permit clearing entries */
-               set_pte(pte, pfn_pte(pfn, flags));
-       else
-               pte_clear(&init_mm, vaddr, pte);
-
-       /*
-        * It's enough to flush this one mapping.
-        * (PGE mappings get flushed as well)
-        */
-       __flush_tlb_one(vaddr);
-}
-
-/*
- * Associate a virtual page frame with a given physical page frame 
- * and protection flags for that frame.
- */ 
-static void set_pte_pfn_ma(unsigned long vaddr, unsigned long pfn,
-                          pgprot_t flags)
-{
-       pgd_t *pgd;
-       pud_t *pud;
-       pmd_t *pmd;
-       pte_t *pte;
-
-       pgd = swapper_pg_dir + pgd_index(vaddr);
-       if (pgd_none(*pgd)) {
-               BUG();
-               return;
-       }
-       pud = pud_offset(pgd, vaddr);
-       if (pud_none(*pud)) {
-               BUG();
-               return;
-       }
-       pmd = pmd_offset(pud, vaddr);
-       if (pmd_none(*pmd)) {
-               BUG();
-               return;
-       }
-       pte = pte_offset_kernel(pmd, vaddr);
-       if (pgprot_val(flags))
-               /* <pfn,flags> stored as-is, to permit clearing entries */
-               set_pte(pte, pfn_pte_ma(pfn, flags));
-       else
-               pte_clear(&init_mm, vaddr, pte);
-
-       /*
-        * It's enough to flush this one mapping.
-        * (PGE mappings get flushed as well)
-        */
-       __flush_tlb_one(vaddr);
-}
-
-/*
  * Associate a large virtual page frame with a given physical page frame 
  * and protection flags for that frame. pfn is for the base of the page,
  * vaddr is what the page gets mapped to - both must be properly aligned. 
@@ -204,6 +123,7 @@ void __set_fixmap (enum fixed_addresses 
 void __set_fixmap (enum fixed_addresses idx, maddr_t phys, pgprot_t flags)
 {
        unsigned long address = __fix_to_virt(idx);
+       pte_t pte;
 
        if (idx >= __end_of_fixed_addresses) {
                BUG();
@@ -211,16 +131,16 @@ void __set_fixmap (enum fixed_addresses 
        }
        switch (idx) {
        case FIX_WP_TEST:
-#ifdef CONFIG_X86_F00F_BUG
-       case FIX_F00F_IDT:
-#endif
        case FIX_VDSO:
-               set_pte_pfn(address, phys >> PAGE_SHIFT, flags);
+               pte = pfn_pte(phys >> PAGE_SHIFT, flags);
                break;
        default:
-               set_pte_pfn_ma(address, phys >> PAGE_SHIFT, flags);
+               pte = pfn_pte_ma(phys >> PAGE_SHIFT, flags);
                break;
        }
+       if (HYPERVISOR_update_va_mapping(address, pte,
+                                        UVMF_INVLPG|UVMF_ALL))
+               BUG();
        nr_fixmaps++;
 }
 
diff -r 351a9d2f7dd4 -r 87e425da4974 arch/i386/pci/irq.c
--- a/arch/i386/pci/irq.c       Fri Sep 21 12:54:11 2007 -0600
+++ b/arch/i386/pci/irq.c       Thu Sep 27 12:22:59 2007 -0600
@@ -543,6 +543,12 @@ static __init int intel_router_probe(str
                case PCI_DEVICE_ID_INTEL_ICH8_2:
                case PCI_DEVICE_ID_INTEL_ICH8_3:
                case PCI_DEVICE_ID_INTEL_ICH8_4:
+               case PCI_DEVICE_ID_INTEL_ICH9_0:
+               case PCI_DEVICE_ID_INTEL_ICH9_1:
+               case PCI_DEVICE_ID_INTEL_ICH9_2:
+               case PCI_DEVICE_ID_INTEL_ICH9_3:
+               case PCI_DEVICE_ID_INTEL_ICH9_4:
+               case PCI_DEVICE_ID_INTEL_ICH9_5:
                        r->name = "PIIX/ICH";
                        r->get = pirq_piix_get;
                        r->set = pirq_piix_set;
diff -r 351a9d2f7dd4 -r 87e425da4974 arch/x86_64/Makefile
--- a/arch/x86_64/Makefile      Fri Sep 21 12:54:11 2007 -0600
+++ b/arch/x86_64/Makefile      Thu Sep 27 12:22:59 2007 -0600
@@ -75,22 +75,20 @@ drivers-$(CONFIG_OPROFILE)          += arch/x86_
 
 boot := arch/x86_64/boot
 
-PHONY += bzImage bzlilo install archmrproper \
+PHONY += bzImage bzlilo vmlinuz install archmrproper \
         fdimage fdimage144 fdimage288 isoimage archclean
 
 ifdef CONFIG_XEN
 CPPFLAGS := -Iinclude$(if $(KBUILD_SRC),2)/asm/mach-xen $(CPPFLAGS)
 LDFLAGS_vmlinux := -e startup_64
-boot := arch/i386/boot-xen
-.PHONY: vmlinuz
 #Default target when executing "make"
 all: vmlinuz
 
+BOOTIMAGE                     := $(boot)/vmlinuz
+KBUILD_IMAGE                  := $(BOOTIMAGE)
+
 vmlinuz: vmlinux
-       $(Q)$(MAKE) $(build)=$(boot) $@
-
-install:
-       $(Q)$(MAKE) $(build)=$(boot) $@
+       $(Q)$(MAKE) $(build)=$(boot) $(BOOTIMAGE)
 else
 #Default target when executing "make"
 all: bzImage
@@ -109,10 +107,10 @@ bzdisk: vmlinux
 
 fdimage fdimage144 fdimage288 isoimage: vmlinux
        $(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(BOOTIMAGE) $@
+endif
 
 install:
        $(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(BOOTIMAGE) $@ 
-endif
 
 archclean:
        $(Q)$(MAKE) $(clean)=$(boot)
diff -r 351a9d2f7dd4 -r 87e425da4974 arch/x86_64/boot/Makefile
--- a/arch/x86_64/boot/Makefile Fri Sep 21 12:54:11 2007 -0600
+++ b/arch/x86_64/boot/Makefile Thu Sep 27 12:22:59 2007 -0600
@@ -26,7 +26,7 @@ SVGA_MODE := -DSVGA_MODE=NORMAL_VGA
 #RAMDISK := -DRAMDISK=512
 
 targets                := vmlinux.bin bootsect bootsect.o \
-                  setup setup.o bzImage mtools.conf
+                  setup setup.o bzImage mtools.conf vmlinuz vmlinux-stripped
 
 EXTRA_CFLAGS := -m32
 
@@ -131,5 +131,13 @@ zlilo: $(BOOTIMAGE)
        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 -r 351a9d2f7dd4 -r 87e425da4974 drivers/i2c/busses/Kconfig
--- a/drivers/i2c/busses/Kconfig        Fri Sep 21 12:54:11 2007 -0600
+++ b/drivers/i2c/busses/Kconfig        Thu Sep 27 12:22:59 2007 -0600
@@ -125,6 +125,7 @@ config I2C_I801
            ICH7
            ESB2
            ICH8
+           ICH9
 
          This driver can also be built as a module.  If so, the module
          will be called i2c-i801.
diff -r 351a9d2f7dd4 -r 87e425da4974 drivers/i2c/busses/i2c-i801.c
--- a/drivers/i2c/busses/i2c-i801.c     Fri Sep 21 12:54:11 2007 -0600
+++ b/drivers/i2c/busses/i2c-i801.c     Thu Sep 27 12:22:59 2007 -0600
@@ -33,6 +33,7 @@
     ICH7               27DA
     ESB2               269B
     ICH8               283E
+    ICH9               2930
     This driver supports several versions of Intel's I/O Controller Hubs (ICH).
     For SMBus support, they are similar to the PIIX4 and are part
     of Intel's '810' and other chipsets.
@@ -457,6 +458,7 @@ static struct pci_device_id i801_ids[] =
        { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH7_17) },
        { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ESB2_17) },
        { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH8_5) },
+       { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH9_6) },
        { 0, }
 };
 
diff -r 351a9d2f7dd4 -r 87e425da4974 drivers/scsi/ahci.c
--- a/drivers/scsi/ahci.c       Fri Sep 21 12:54:11 2007 -0600
+++ b/drivers/scsi/ahci.c       Thu Sep 27 12:22:59 2007 -0600
@@ -317,6 +317,28 @@ static const struct pci_device_id ahci_p
          board_ahci }, /* ICH8M */
        { PCI_VENDOR_ID_INTEL, 0x282a, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
          board_ahci }, /* ICH8M */
+       { PCI_VENDOR_ID_INTEL, 0x2922, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+         board_ahci }, /* ICH9 */
+       { PCI_VENDOR_ID_INTEL, 0x2923, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+         board_ahci }, /* ICH9 */
+       { PCI_VENDOR_ID_INTEL, 0x2924, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+         board_ahci }, /* ICH9 */
+       { PCI_VENDOR_ID_INTEL, 0x2925, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+         board_ahci }, /* ICH9 */
+       { PCI_VENDOR_ID_INTEL, 0x2927, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+         board_ahci }, /* ICH9 */
+       { PCI_VENDOR_ID_INTEL, 0x2929, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+         board_ahci }, /* ICH9M */
+       { PCI_VENDOR_ID_INTEL, 0x292a, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+         board_ahci }, /* ICH9M */
+       { PCI_VENDOR_ID_INTEL, 0x292b, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+         board_ahci }, /* ICH9M */
+       { PCI_VENDOR_ID_INTEL, 0x292f, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+         board_ahci }, /* ICH9M */
+       { PCI_VENDOR_ID_INTEL, 0x294d, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+         board_ahci }, /* ICH9 */
+       { PCI_VENDOR_ID_INTEL, 0x294e, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+         board_ahci }, /* ICH9M */
 
        /* JMicron */
        { 0x197b, 0x2360, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
diff -r 351a9d2f7dd4 -r 87e425da4974 drivers/scsi/ata_piix.c
--- a/drivers/scsi/ata_piix.c   Fri Sep 21 12:54:11 2007 -0600
+++ b/drivers/scsi/ata_piix.c   Thu Sep 27 12:22:59 2007 -0600
@@ -125,6 +125,7 @@ enum {
        ich6m_sata_ahci         = 6,
        ich7m_sata_ahci         = 7,
        ich8_sata_ahci          = 8,
+       ich9_sata_ahci          = 9,
 
        /* constants for mapping table */
        P0                      = 0,  /* port 0 */
@@ -198,6 +199,18 @@ static const struct pci_device_id piix_p
        { 0x8086, 0x2825, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_ahci },
        /* Mobile SATA Controller IDE (ICH8M, ditto) */
        { 0x8086, 0x2828, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_ahci },
+       /* SATA Controller 1 IDE (ICH9) */
+       { 0x8086, 0x2920, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich9_sata_ahci },
+       /* SATA Controller 1 IDE (ICH9) */
+       { 0x8086, 0x2921, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich9_sata_ahci },
+       /* SATA Controller 2 IDE (ICH9) */
+       { 0x8086, 0x2926, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich9_sata_ahci },
+       /* Mobile SATA Controller 1 IDE (ICH9M) */
+       { 0x8086, 0x2928, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich9_sata_ahci },
+       /* Mobile SATA Controller 2 IDE (ICH9M) */
+       { 0x8086, 0x292d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich9_sata_ahci },
+       /* Mobile SATA Controller 2 IDE (ICH9M) */
+       { 0x8086, 0x292e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich9_sata_ahci },
 
        { }     /* terminate list */
 };
@@ -361,9 +374,22 @@ static const struct piix_map_db ich8_map
        .present_shift = 8,
        .map = {
                /* PM   PS   SM   SS       MAP */
-               {  P0,  NA,  P1,  NA }, /* 00b (hardwired) */
+               {  P0,  P2,  P1,  P3 }, /* 00b (hardwired when in AHCI) */
                {  RV,  RV,  RV,  RV },
-               {  RV,  RV,  RV,  RV }, /* 10b (never) */
+               {  IDE,  IDE,  NA,  NA }, /* 10b (IDE mode) */
+               {  RV,  RV,  RV,  RV },
+       },
+};
+
+static const struct piix_map_db ich9_map_db = {
+       .mask = 0x3,
+       .port_enable = 0x3,
+       .present_shift = 8,
+       .map = {
+               /* PM   PS   SM   SS       MAP */
+               {  P0,  P2,  P1,  P3 }, /* 00b (hardwired when in AHCI) */
+               {  RV,  RV,  RV,  RV },
+               {  IDE,  IDE,  NA,  NA }, /* 10b (IDE mode) */
                {  RV,  RV,  RV,  RV },
        },
 };
@@ -376,6 +402,7 @@ static const struct piix_map_db *piix_ma
        [ich6m_sata_ahci]       = &ich6m_map_db,
        [ich7m_sata_ahci]       = &ich7m_map_db,
        [ich8_sata_ahci]        = &ich8_map_db,
+       [ich9_sata_ahci]        = &ich9_map_db,
 };
 
 static struct ata_port_info piix_port_info[] = {
@@ -485,6 +512,18 @@ static struct ata_port_info piix_port_in
                .pio_mask       = 0x1f, /* pio0-4 */
                .mwdma_mask     = 0x07, /* mwdma0-2 */
                .udma_mask      = 0x7f, /* udma0-6 */
+               .port_ops       = &piix_sata_ops,
+       },
+
+       /* ich9_sata_ahci */
+       {
+               .sht            = &piix_sht,
+               .host_flags     = ATA_FLAG_SATA |
+                                 PIIX_FLAG_CHECKINTR | PIIX_FLAG_SCR |
+                                 PIIX_FLAG_AHCI,
+               .pio_mask       = 0x1f, /* pio0-4 */
+               .mwdma_mask     = 0x07, /* mwdma0-2 */
+               .udma_mask      = 0x7f, /* udma0-6 */
                .port_ops       = &piix_sata_ops,
        },
 };
diff -r 351a9d2f7dd4 -r 87e425da4974 drivers/xen/blkfront/blkfront.c
--- a/drivers/xen/blkfront/blkfront.c   Fri Sep 21 12:54:11 2007 -0600
+++ b/drivers/xen/blkfront/blkfront.c   Thu Sep 27 12:22:59 2007 -0600
@@ -477,7 +477,7 @@ int blkif_release(struct inode *inode, s
                struct xenbus_device * dev = info->xbdev;
                enum xenbus_state state = 
xenbus_read_driver_state(dev->otherend);
 
-               if (state == XenbusStateClosing)
+               if (state == XenbusStateClosing && info->is_ready)
                        blkfront_closing(dev);
        }
        return 0;
diff -r 351a9d2f7dd4 -r 87e425da4974 drivers/xen/xenbus/xenbus_probe.c
--- a/drivers/xen/xenbus/xenbus_probe.c Fri Sep 21 12:54:11 2007 -0600
+++ b/drivers/xen/xenbus/xenbus_probe.c Thu Sep 27 12:22:59 2007 -0600
@@ -1051,6 +1051,7 @@ static int print_device_status(struct de
 {
        struct xenbus_device *xendev = to_xenbus_device(dev);
        struct device_driver *drv = data;
+       struct xenbus_driver *xendrv;
 
        /* Is this operation limited to a particular driver? */
        if (drv && (dev->driver != drv))
@@ -1060,7 +1061,10 @@ static int print_device_status(struct de
                /* Information only: is this too noisy? */
                printk(KERN_INFO "XENBUS: Device with no driver: %s\n",
                       xendev->nodename);
-       } else if (xendev->state < XenbusStateConnected) {
+               return 0;
+       }
+
+       if (xendev->state < XenbusStateConnected) {
                enum xenbus_state rstate = XenbusStateUnknown;
                if (xendev->otherend)
                        rstate = xenbus_read_driver_state(xendev->otherend);
@@ -1068,6 +1072,11 @@ static int print_device_status(struct de
                       "to device: %s (local state %d, remote state %d)\n",
                       xendev->nodename, xendev->state, rstate);
        }
+
+       xendrv = to_xenbus_driver(dev->driver);
+       if (xendrv->is_ready && !xendrv->is_ready(xendev))
+               printk(KERN_WARNING "XENBUS: Device not ready: %s\n",
+                      xendev->nodename);
 
        return 0;
 }
diff -r 351a9d2f7dd4 -r 87e425da4974 fs/lockd/svc.c
--- a/fs/lockd/svc.c    Fri Sep 21 12:54:11 2007 -0600
+++ b/fs/lockd/svc.c    Thu Sep 27 12:22:59 2007 -0600
@@ -323,9 +323,6 @@ EXPORT_SYMBOL(lockd_down);
  * Sysctl parameters (same as module parameters, different interface).
  */
 
-/* Something that isn't CTL_ANY, CTL_NONE or a value that may clash. */
-#define CTL_UNNUMBERED         -2
-
 static ctl_table nlm_sysctls[] = {
        {
                .ctl_name       = CTL_UNNUMBERED,
diff -r 351a9d2f7dd4 -r 87e425da4974 fs/nfs/sysctl.c
--- a/fs/nfs/sysctl.c   Fri Sep 21 12:54:11 2007 -0600
+++ b/fs/nfs/sysctl.c   Thu Sep 27 12:22:59 2007 -0600
@@ -18,11 +18,6 @@ static const int nfs_set_port_min = 0;
 static const int nfs_set_port_min = 0;
 static const int nfs_set_port_max = 65535;
 static struct ctl_table_header *nfs_callback_sysctl_table;
-/*
- * Something that isn't CTL_ANY, CTL_NONE or a value that may clash.
- * Use the same values as fs/lockd/svc.c
- */
-#define CTL_UNNUMBERED -2
 
 static ctl_table nfs_cb_sysctls[] = {
 #ifdef CONFIG_NFS_V4
diff -r 351a9d2f7dd4 -r 87e425da4974 include/linux/pci_ids.h
--- a/include/linux/pci_ids.h   Fri Sep 21 12:54:11 2007 -0600
+++ b/include/linux/pci_ids.h   Thu Sep 27 12:22:59 2007 -0600
@@ -2188,6 +2188,13 @@
 #define PCI_DEVICE_ID_INTEL_ICH8_4     0x2815
 #define PCI_DEVICE_ID_INTEL_ICH8_5     0x283e
 #define PCI_DEVICE_ID_INTEL_ICH8_6     0x2850
+#define PCI_DEVICE_ID_INTEL_ICH9_0     0x2910
+#define PCI_DEVICE_ID_INTEL_ICH9_1     0x2911
+#define PCI_DEVICE_ID_INTEL_ICH9_2     0x2912
+#define PCI_DEVICE_ID_INTEL_ICH9_3     0x2913
+#define PCI_DEVICE_ID_INTEL_ICH9_4     0x2914
+#define PCI_DEVICE_ID_INTEL_ICH9_5     0x2915
+#define PCI_DEVICE_ID_INTEL_ICH9_6     0x2930
 #define PCI_DEVICE_ID_INTEL_82855PM_HB 0x3340
 #define PCI_DEVICE_ID_INTEL_82830_HB   0x3575
 #define PCI_DEVICE_ID_INTEL_82830_CGC  0x3577
diff -r 351a9d2f7dd4 -r 87e425da4974 include/linux/sysctl.h
--- a/include/linux/sysctl.h    Fri Sep 21 12:54:11 2007 -0600
+++ b/include/linux/sysctl.h    Thu Sep 27 12:22:59 2007 -0600
@@ -6,10 +6,17 @@
  ****************************************************************
  ****************************************************************
  **
+ **  WARNING:
  **  The values in this file are exported to user space via 
- **  the sysctl() binary interface.  However this interface
- **  is unstable and deprecated and will be removed in the future. 
- **  For a stable interface use /proc/sys.
+ **  the sysctl() binary interface.  Do *NOT* change the
+ **  numbering of any existing values here, and do not change
+ **  any numbers within any one set of values.  If you have to
+ **  have to redefine an existing interface, use a new number for it.
+ **  The kernel will then return -ENOTDIR to any application using
+ **  the old binary interface.
+ **
+ **  For new interfaces unless you really need a binary number
+ **  please use CTL_UNNUMBERED.
  **
  ****************************************************************
  ****************************************************************
@@ -48,6 +55,7 @@ struct __sysctl_args {
 #ifdef __KERNEL__
 #define CTL_ANY                -1      /* Matches any name */
 #define CTL_NONE       0
+#define CTL_UNNUMBERED CTL_NONE        /* sysctl without a binary number */
 #endif
 
 enum
diff -r 351a9d2f7dd4 -r 87e425da4974 include/xen/interface/platform.h
--- a/include/xen/interface/platform.h  Fri Sep 21 12:54:11 2007 -0600
+++ b/include/xen/interface/platform.h  Thu Sep 27 12:22:59 2007 -0600
@@ -164,6 +164,16 @@ typedef struct xenpf_enter_acpi_sleep xe
 typedef struct xenpf_enter_acpi_sleep xenpf_enter_acpi_sleep_t;
 DEFINE_XEN_GUEST_HANDLE(xenpf_enter_acpi_sleep_t);
 
+#define XENPF_change_freq       52
+struct xenpf_change_freq {
+    /* IN variables */
+    uint32_t flags; /* Must be zero. */
+    uint32_t cpu;   /* Physical cpu. */
+    uint64_t freq;  /* New frequency (Hz). */
+};
+typedef struct xenpf_change_freq xenpf_change_freq_t;
+DEFINE_XEN_GUEST_HANDLE(xenpf_change_freq_t);
+
 struct xen_platform_op {
     uint32_t cmd;
     uint32_t interface_version; /* XENPF_INTERFACE_VERSION */
@@ -176,6 +186,7 @@ struct xen_platform_op {
         struct xenpf_platform_quirk    platform_quirk;
         struct xenpf_firmware_info     firmware_info;
         struct xenpf_enter_acpi_sleep  enter_acpi_sleep;
+        struct xenpf_change_freq       change_freq;
         uint8_t                        pad[128];
     } u;
 };
diff -r 351a9d2f7dd4 -r 87e425da4974 sound/pci/hda/hda_intel.c
--- a/sound/pci/hda/hda_intel.c Fri Sep 21 12:54:11 2007 -0600
+++ b/sound/pci/hda/hda_intel.c Thu Sep 27 12:22:59 2007 -0600
@@ -80,6 +80,7 @@ MODULE_SUPPORTED_DEVICE("{{Intel, ICH6},
                         "{Intel, ICH7},"
                         "{Intel, ESB2},"
                         "{Intel, ICH8},"
+                        "{Intel, ICH9},"
                         "{ATI, SB450},"
                         "{ATI, SB600},"
                         "{ATI, RS600},"
@@ -1634,6 +1635,8 @@ static struct pci_device_id azx_ids[] = 
        { 0x8086, 0x27d8, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* 
ICH7 */
        { 0x8086, 0x269a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* 
ESB2 */
        { 0x8086, 0x284b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* 
ICH8 */
+       { 0x8086, 0x293e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* 
ICH9 */
+       { 0x8086, 0x293f, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* 
ICH9 */
        { 0x1002, 0x437b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ATI }, /* 
ATI SB450 */
        { 0x1002, 0x4383, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ATI }, /* 
ATI SB600 */
        { 0x1002, 0x793b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ATIHDMI }, 
/* ATI RS600 HDMI */

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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.