config PCI_HYPERV
          tristate "Hyper-V PCI Frontend"
-         depends on X86 && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN && X86_64
+         depends on X86_64 && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN && SYSFS
 +      select PCI_HYPERV_INTERFACE
          help
            The PCI device frontend driver allows the kernel to import arbitrary
            PCI devices from a PCI backend to support PCI driver domains.
 
                        const struct hv_vmbus_device_id *dev_id)
  {
        struct hv_pcibus_device *hbus;
+       u16 dom_req, dom;
 +      char *name;
        int ret;
  
        /*
  
  static int __init init_hv_pci_drv(void)
  {
+       /* Set the invalid domain number's bit, so it will not be used */
+       set_bit(HVPCI_DOM_INVALID, hvpci_dom_map);
+ 
 +      /* Initialize PCI block r/w interface */
 +      hvpci_block_ops.read_block = hv_read_config_block;
 +      hvpci_block_ops.write_block = hv_write_config_block;
 +      hvpci_block_ops.reg_blk_invalidate = hv_register_block_invalidate;
 +
        return vmbus_driver_register(&hv_pci_drv);
  }
  
 
        struct percpu_ref *ref;
        struct percpu_ref internal_ref;
        struct completion done;
 -      struct device *dev;
        enum memory_type type;
        unsigned int flags;
-       u64 pci_p2pdma_bus_offset;
        const struct dev_pagemap_ops *ops;
  };
  
 
  #define pcie_ports_native     false
  #endif
  
+ #define PCIE_LINK_STATE_L0S   1
+ #define PCIE_LINK_STATE_L1    2
+ #define PCIE_LINK_STATE_CLKPM 4
+ 
  #ifdef CONFIG_PCIEASPM
+ int pci_disable_link_state(struct pci_dev *pdev, int state);
+ int pci_disable_link_state_locked(struct pci_dev *pdev, int state);
+ void pcie_no_aspm(void);
  bool pcie_aspm_support_enabled(void);
 +bool pcie_aspm_enabled(struct pci_dev *pdev);
  #else
+ static inline int pci_disable_link_state(struct pci_dev *pdev, int state)
+ { return 0; }
+ static inline int pci_disable_link_state_locked(struct pci_dev *pdev, int state)
+ { return 0; }
+ static inline void pcie_no_aspm(void) { }
  static inline bool pcie_aspm_support_enabled(void) { return false; }
 +static inline bool pcie_aspm_enabled(struct pci_dev *pdev) { return false; }
  #endif
  
  #ifdef CONFIG_PCIEAER