Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F151621918
D6192.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D6192.diff
View Options
Index: head/sys/dev/pci/pci.c
===================================================================
--- head/sys/dev/pci/pci.c
+++ head/sys/dev/pci/pci.c
@@ -5643,6 +5643,10 @@
pci_resume_msi(dev);
if (dinfo->cfg.msix.msix_location != 0)
pci_resume_msix(dev);
+
+ if (dinfo->cfg.iov != NULL)
+ pci_iov_cfg_restore(dev, dinfo);
+
}
static void
@@ -5755,6 +5759,9 @@
if (dinfo->cfg.pcix.pcix_location != 0)
pci_cfg_save_pcix(dev, dinfo);
+ if (dinfo->cfg.iov != NULL)
+ pci_iov_cfg_save(dev, dinfo);
+
/*
* don't set the state for display devices, base peripherals and
* memory devices since bad things happen when they are powered down.
Index: head/sys/dev/pci/pci_iov.c
===================================================================
--- head/sys/dev/pci/pci_iov.c
+++ head/sys/dev/pci/pci_iov.c
@@ -770,6 +770,29 @@
return (error);
}
+void
+pci_iov_cfg_restore(device_t dev, struct pci_devinfo *dinfo)
+{
+ struct pcicfg_iov *iov;
+
+ iov = dinfo->cfg.iov;
+
+ IOV_WRITE(dinfo, PCIR_SRIOV_PAGE_SIZE, iov->iov_page_size, 4);
+ IOV_WRITE(dinfo, PCIR_SRIOV_NUM_VFS, iov->iov_num_vfs, 2);
+ IOV_WRITE(dinfo, PCIR_SRIOV_CTL, iov->iov_ctl, 2);
+}
+
+void
+pci_iov_cfg_save(device_t dev, struct pci_devinfo *dinfo)
+{
+ struct pcicfg_iov *iov;
+
+ iov = dinfo->cfg.iov;
+
+ iov->iov_page_size = IOV_READ(dinfo, PCIR_SRIOV_PAGE_SIZE, 4);
+ iov->iov_ctl = IOV_READ(dinfo, PCIR_SRIOV_CTL, 2);
+}
+
/* Return true if child is a VF of the given PF. */
static int
pci_iov_is_child_vf(struct pcicfg_iov *pf, device_t child)
Index: head/sys/dev/pci/pci_iov_private.h
===================================================================
--- head/sys/dev/pci/pci_iov_private.h
+++ head/sys/dev/pci/pci_iov_private.h
@@ -47,10 +47,16 @@
int iov_pos;
int iov_num_vfs;
uint32_t iov_flags;
+
+ uint16_t iov_ctl;
+ uint32_t iov_page_size;
};
#define IOV_RMAN_INITED 0x0001
#define IOV_BUSY 0x0002
+void pci_iov_cfg_restore(device_t dev, struct pci_devinfo *dinfo);
+void pci_iov_cfg_save(device_t dev, struct pci_devinfo *dinfo);
+
#endif
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Apr 10, 1:58 PM (5 h, 9 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31229875
Default Alt Text
D6192.diff (2 KB)
Attached To
Mode
D6192: Make VF creation more robust.
Attached
Detach File
Event Timeline
Log In to Comment