Commit 9479f0f8 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'stable/for-linus-3.4-rc1-tag' of...

Merge tag 'stable/for-linus-3.4-rc1-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen

Pull xen fixes from Konrad Rzeszutek Wilk:
 "Two fixes for regressions:
   * one is a workaround that will be removed in v3.5 with proper fix in
     the tip/x86 tree,
   * the other is to fix drivers to load on PV (a previous patch made
     them only load in PVonHVM mode).

  The rest are just minor fixes in the various drivers and some cleanup
  in the core code."

* tag 'stable/for-linus-3.4-rc1-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
  xen/pcifront: avoid pci_frontend_enable_msix() falsely returning success
  xen/pciback: fix XEN_PCI_OP_enable_msix result
  xen/smp: Remove unnecessary call to smp_processor_id()
  xen/x86: Workaround 'x86/ioapic: Add register level checks to detect bogus io-apic entries'
  xen: only check xen_platform_pci_unplug if hvm
parents 1ddca057 f09d8432
...@@ -1859,6 +1859,7 @@ pgd_t * __init xen_setup_kernel_pagetable(pgd_t *pgd, ...@@ -1859,6 +1859,7 @@ pgd_t * __init xen_setup_kernel_pagetable(pgd_t *pgd,
#endif /* CONFIG_X86_64 */ #endif /* CONFIG_X86_64 */
static unsigned char dummy_mapping[PAGE_SIZE] __page_aligned_bss; static unsigned char dummy_mapping[PAGE_SIZE] __page_aligned_bss;
static unsigned char fake_ioapic_mapping[PAGE_SIZE] __page_aligned_bss;
static void xen_set_fixmap(unsigned idx, phys_addr_t phys, pgprot_t prot) static void xen_set_fixmap(unsigned idx, phys_addr_t phys, pgprot_t prot)
{ {
...@@ -1899,7 +1900,7 @@ static void xen_set_fixmap(unsigned idx, phys_addr_t phys, pgprot_t prot) ...@@ -1899,7 +1900,7 @@ static void xen_set_fixmap(unsigned idx, phys_addr_t phys, pgprot_t prot)
* We just don't map the IO APIC - all access is via * We just don't map the IO APIC - all access is via
* hypercalls. Keep the address in the pte for reference. * hypercalls. Keep the address in the pte for reference.
*/ */
pte = pfn_pte(PFN_DOWN(__pa(dummy_mapping)), PAGE_KERNEL); pte = pfn_pte(PFN_DOWN(__pa(fake_ioapic_mapping)), PAGE_KERNEL);
break; break;
#endif #endif
...@@ -2064,6 +2065,7 @@ void __init xen_init_mmu_ops(void) ...@@ -2064,6 +2065,7 @@ void __init xen_init_mmu_ops(void)
pv_mmu_ops = xen_mmu_ops; pv_mmu_ops = xen_mmu_ops;
memset(dummy_mapping, 0xff, PAGE_SIZE); memset(dummy_mapping, 0xff, PAGE_SIZE);
memset(fake_ioapic_mapping, 0xfd, PAGE_SIZE);
} }
/* Protected by xen_reservation_lock. */ /* Protected by xen_reservation_lock. */
......
...@@ -59,7 +59,7 @@ static irqreturn_t xen_reschedule_interrupt(int irq, void *dev_id) ...@@ -59,7 +59,7 @@ static irqreturn_t xen_reschedule_interrupt(int irq, void *dev_id)
static void __cpuinit cpu_bringup(void) static void __cpuinit cpu_bringup(void)
{ {
int cpu = smp_processor_id(); int cpu;
cpu_init(); cpu_init();
touch_softlockup_watchdog(); touch_softlockup_watchdog();
......
...@@ -1475,7 +1475,7 @@ static int __init xlblk_init(void) ...@@ -1475,7 +1475,7 @@ static int __init xlblk_init(void)
if (!xen_domain()) if (!xen_domain())
return -ENODEV; return -ENODEV;
if (!xen_platform_pci_unplug) if (xen_hvm_domain() && !xen_platform_pci_unplug)
return -ENODEV; return -ENODEV;
if (register_blkdev(XENVBD_MAJOR, DEV_NAME)) { if (register_blkdev(XENVBD_MAJOR, DEV_NAME)) {
......
...@@ -1965,7 +1965,7 @@ static int __init netif_init(void) ...@@ -1965,7 +1965,7 @@ static int __init netif_init(void)
if (xen_initial_domain()) if (xen_initial_domain())
return 0; return 0;
if (!xen_platform_pci_unplug) if (xen_hvm_domain() && !xen_platform_pci_unplug)
return -ENODEV; return -ENODEV;
printk(KERN_INFO "Initialising Xen virtual ethernet driver.\n"); printk(KERN_INFO "Initialising Xen virtual ethernet driver.\n");
......
...@@ -290,6 +290,7 @@ static int pci_frontend_enable_msix(struct pci_dev *dev, ...@@ -290,6 +290,7 @@ static int pci_frontend_enable_msix(struct pci_dev *dev,
} else { } else {
printk(KERN_DEBUG "enable msix get value %x\n", printk(KERN_DEBUG "enable msix get value %x\n",
op.value); op.value);
err = op.value;
} }
} else { } else {
dev_err(&dev->dev, "enable msix get err %x\n", err); dev_err(&dev->dev, "enable msix get err %x\n", err);
......
...@@ -234,7 +234,7 @@ int xen_pcibk_enable_msix(struct xen_pcibk_device *pdev, ...@@ -234,7 +234,7 @@ int xen_pcibk_enable_msix(struct xen_pcibk_device *pdev,
if (dev_data) if (dev_data)
dev_data->ack_intr = 0; dev_data->ack_intr = 0;
return result; return result > 0 ? 0 : result;
} }
static static
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment