[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] Merge
# HG changeset patch # User Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> # Date 1314701218 -3600 # Node ID ac9aa65050e9abc8f1c12c8603acf3b99e22cddc # Parent 469aa1fbd843d0797345ebf1e3d6c6df27ce744b # Parent 2c687e70a34390b05ed8df833bd121e6f650193d Merge --- diff -r 469aa1fbd843 -r ac9aa65050e9 Config.mk --- a/Config.mk Fri Aug 26 14:58:41 2011 +0100 +++ b/Config.mk Tue Aug 30 11:46:58 2011 +0100 @@ -1,5 +1,7 @@ # -*- mode: Makefile; -*- +-include $(XEN_ROOT)/.config + # A debug build of Xen and tools? debug ?= y @@ -223,5 +225,3 @@ ifeq ($(OCAML_TOOLS),y) OCAML_TOOLS := $(shell ocamlopt -v > /dev/null 2>&1 && echo "y" || echo "n") endif - --include $(XEN_ROOT)/.config diff -r 469aa1fbd843 -r ac9aa65050e9 xen/arch/x86/dmi_scan.c --- a/xen/arch/x86/dmi_scan.c Fri Aug 26 14:58:41 2011 +0100 +++ b/xen/arch/x86/dmi_scan.c Tue Aug 30 11:46:58 2011 +0100 @@ -10,6 +10,8 @@ #include <asm/system.h> #include <xen/dmi.h> #include <xen/efi.h> +#include <xen/pci.h> +#include <xen/pci_regs.h> #define bt_ioremap(b,l) ((void *)__acpi_map_table(b,l)) #define bt_iounmap(b,l) ((void)0) @@ -278,6 +280,28 @@ return 0; } +static int __init ich10_bios_quirk(struct dmi_system_id *d) +{ + u32 port, smictl; + + if ( pci_conf_read16(0, 0x1f, 0, PCI_VENDOR_ID) != 0x8086 ) + return 0; + + switch ( pci_conf_read16(0, 0x1f, 0, PCI_DEVICE_ID) ) { + case 0x3a14: + case 0x3a16: + case 0x3a18: + case 0x3a1a: + port = (pci_conf_read16(0, 0x1f, 0, 0x40) & 0xff80) + 0x30; + smictl = inl(port); + /* turn off LEGACY_USB{,2}_EN if enabled */ + if ( smictl & 0x20008 ) + outl(smictl & ~0x20008, port); + break; + } + + return 0; +} #ifdef CONFIG_ACPI_SLEEP static __init int reset_videomode_after_s3(struct dmi_blacklist *d) @@ -342,6 +366,18 @@ } }, #endif + { ich10_bios_quirk, "Intel board & BIOS", + /* + * BIOS leaves legacy USB emulation enabled while + * SMM can't properly handle it. + */ + { + MATCH(DMI_BOARD_VENDOR, "Intel Corp"), + MATCH(DMI_BIOS_VENDOR, "Intel Corp"), + NO_MATCH, NO_MATCH + } + }, + #ifdef CONFIG_ACPI_BOOT /* * If your system is blacklisted here, but you find that acpi=force diff -r 469aa1fbd843 -r ac9aa65050e9 xen/arch/x86/hpet.c --- a/xen/arch/x86/hpet.c Fri Aug 26 14:58:41 2011 +0100 +++ b/xen/arch/x86/hpet.c Tue Aug 30 11:46:58 2011 +0100 @@ -342,7 +342,7 @@ { struct msi_msg msg; - msi_compose_msg(NULL, irq, &msg); + msi_compose_msg(irq, &msg); hpet_msi_write(irq, &msg); } diff -r 469aa1fbd843 -r ac9aa65050e9 xen/arch/x86/irq.c --- a/xen/arch/x86/irq.c Fri Aug 26 14:58:41 2011 +0100 +++ b/xen/arch/x86/irq.c Tue Aug 30 11:46:58 2011 +0100 @@ -1670,7 +1670,7 @@ && !desc->chip_data->used_vectors ) desc->chip_data->used_vectors = &pdev->info.used_vectors; set_domain_irq_pirq(d, irq, info); - setup_msi_irq(pdev, msi_desc, irq); + setup_msi_irq(msi_desc, irq); spin_unlock_irqrestore(&desc->lock, flags); } else diff -r 469aa1fbd843 -r ac9aa65050e9 xen/arch/x86/msi.c --- a/xen/arch/x86/msi.c Fri Aug 26 14:58:41 2011 +0100 +++ b/xen/arch/x86/msi.c Tue Aug 30 11:46:58 2011 +0100 @@ -120,8 +120,7 @@ /* * MSI message composition */ -void msi_compose_msg(struct pci_dev *pdev, int irq, - struct msi_msg *msg) +void msi_compose_msg(int irq, struct msi_msg *msg) { unsigned dest; cpumask_t domain; @@ -414,11 +413,11 @@ return entry; } -int setup_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int irq) +int setup_msi_irq(struct msi_desc *msidesc, int irq) { struct msi_msg msg; - msi_compose_msg(dev, irq, &msg); + msi_compose_msg(irq, &msg); set_irq_msi(msidesc); write_msi_msg(irq_desc[irq].msi_desc, &msg); diff -r 469aa1fbd843 -r ac9aa65050e9 xen/arch/x86/x86_64/mmconfig_64.c --- a/xen/arch/x86/x86_64/mmconfig_64.c Fri Aug 26 14:58:41 2011 +0100 +++ b/xen/arch/x86/x86_64/mmconfig_64.c Tue Aug 30 11:46:58 2011 +0100 @@ -113,12 +113,11 @@ } static void __iomem *mcfg_ioremap(const struct acpi_mcfg_allocation *cfg, - unsigned int prot) + unsigned long idx, unsigned int prot) { unsigned long virt, size; - virt = PCI_MCFG_VIRT_START + - ((unsigned long)cfg->pci_segment << mmcfg_pci_segment_shift) + + virt = PCI_MCFG_VIRT_START + (idx << mmcfg_pci_segment_shift) + (cfg->start_bus_number << 20); size = (cfg->end_bus_number - cfg->start_bus_number + 1) << 20; if (virt + size < virt || virt + size > PCI_MCFG_VIRT_END) @@ -139,7 +138,7 @@ if (pci_mmcfg_virt[idx].virt) return 0; - pci_mmcfg_virt[idx].virt = mcfg_ioremap(cfg, PAGE_HYPERVISOR_NOCACHE); + pci_mmcfg_virt[idx].virt = mcfg_ioremap(cfg, idx, PAGE_HYPERVISOR_NOCACHE); if (!pci_mmcfg_virt[idx].virt) { printk(KERN_ERR "PCI: Cannot map MCFG aperture for segment %04x\n", cfg->pci_segment); @@ -160,7 +159,7 @@ * the necessary L4 entries get populated (so that they get properly * propagated to guest domains' page tables). */ - mcfg_ioremap(cfg, 0); + mcfg_ioremap(cfg, idx, 0); printk(KERN_WARNING "PCI: Not using MCFG for segment %04x bus %02x-%02x\n", cfg->pci_segment, cfg->start_bus_number, cfg->end_bus_number); } diff -r 469aa1fbd843 -r ac9aa65050e9 xen/include/asm-x86/msi.h --- a/xen/include/asm-x86/msi.h Fri Aug 26 14:58:41 2011 +0100 +++ b/xen/include/asm-x86/msi.h Tue Aug 30 11:46:58 2011 +0100 @@ -81,7 +81,7 @@ extern int pci_enable_msi(struct msi_info *msi, struct msi_desc **desc); extern void pci_disable_msi(struct msi_desc *desc); extern void pci_cleanup_msi(struct pci_dev *pdev); -extern int setup_msi_irq(struct pci_dev *dev, struct msi_desc *desc, int irq); +extern int setup_msi_irq(struct msi_desc *desc, int irq); extern void teardown_msi_irq(int irq); extern int msi_free_vector(struct msi_desc *entry); extern int pci_restore_msi_state(struct pci_dev *pdev); @@ -221,6 +221,5 @@ __u32 hi_address; } __attribute__ ((packed)); -void msi_compose_msg(struct pci_dev *pdev, int irq, - struct msi_msg *msg); +void msi_compose_msg(int irq, struct msi_msg *); #endif /* __ASM_MSI_H */ _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |