iPXE
Functions
pcibackup.c File Reference

PCI configuration space backup and restoration. More...

#include <stdint.h>
#include <ipxe/pci.h>
#include <ipxe/pcibackup.h>

Go to the source code of this file.

Functions

 FILE_LICENCE (GPL2_OR_LATER_OR_UBDL)
 
static int pci_backup_excluded (struct pci_device *pci, unsigned int offset, const uint8_t *exclude)
 Check PCI configuration space offset against exclusion list. More...
 
void pci_backup (struct pci_device *pci, struct pci_config_backup *backup, unsigned int limit, const uint8_t *exclude)
 Back up PCI configuration space. More...
 
void pci_restore (struct pci_device *pci, struct pci_config_backup *backup, unsigned int limit, const uint8_t *exclude)
 Restore PCI configuration space. More...
 

Detailed Description

PCI configuration space backup and restoration.

Definition in file pcibackup.c.

Function Documentation

◆ FILE_LICENCE()

FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL  )

◆ pci_backup_excluded()

static int pci_backup_excluded ( struct pci_device pci,
unsigned int  offset,
const uint8_t exclude 
)
static

Check PCI configuration space offset against exclusion list.

Parameters
pciPCI device
offsetOffset within PCI configuration space
excludePCI configuration space backup exclusion list, or NULL

Definition at line 44 of file pcibackup.c.

45  {
46 
47  if ( ! exclude )
48  return 0;
49  for ( ; *exclude != PCI_CONFIG_BACKUP_EXCLUDE_END ; exclude++ ) {
50  if ( offset == *exclude ) {
51  DBGC ( pci, "PCI %p skipping configuration offset "
52  "%02x\n", pci, offset );
53  return 1;
54  }
55  }
56  return 0;
57 }
#define DBGC(...)
Definition: compiler.h:505
static userptr_t size_t offset
Offset of the first segment within the content.
Definition: deflate.h:259
#define PCI_CONFIG_BACKUP_EXCLUDE_END
PCI configuration space backup exclusion list end marker.
Definition: pcibackup.h:26

References DBGC, offset, and PCI_CONFIG_BACKUP_EXCLUDE_END.

Referenced by pci_backup(), and pci_restore().

◆ pci_backup()

void pci_backup ( struct pci_device pci,
struct pci_config_backup backup,
unsigned int  limit,
const uint8_t exclude 
)

Back up PCI configuration space.

Parameters
pciPCI device
backupPCI configuration space backup
limitMaximum offset in PCI configuration space
excludePCI configuration space backup exclusion list, or NULL

Definition at line 67 of file pcibackup.c.

68  {
69  unsigned int offset;
70  uint32_t *dword;
71 
72  for ( offset = 0, dword = backup->dwords ; offset < limit ;
73  offset += sizeof ( *dword ) , dword++ ) {
74  if ( ! pci_backup_excluded ( pci, offset, exclude ) )
76  }
77 }
uint32_t dwords[PCI_CONFIG_BACKUP_ALL/sizeof(uint32_t)]
Definition: pcibackup.h:22
int pci_read_config_dword(struct pci_device *pci, unsigned int where, uint32_t *value)
Read 32-bit dword from PCI configuration space.
static userptr_t size_t offset
Offset of the first segment within the content.
Definition: deflate.h:259
uint16_t limit
Limit.
Definition: librm.h:250
unsigned int uint32_t
Definition: stdint.h:12
unsigned long int dword
Definition: smc9000.h:40
static int pci_backup_excluded(struct pci_device *pci, unsigned int offset, const uint8_t *exclude)
Check PCI configuration space offset against exclusion list.
Definition: pcibackup.c:44

References pci_config_backup::dwords, limit, offset, pci_backup_excluded(), and pci_read_config_dword().

Referenced by arbel_reset(), hermon_reset(), pci_reset(), and qib7322_reset().

◆ pci_restore()

void pci_restore ( struct pci_device pci,
struct pci_config_backup backup,
unsigned int  limit,
const uint8_t exclude 
)

Restore PCI configuration space.

Parameters
pciPCI device
backupPCI configuration space backup
limitMaximum offset in PCI configuration space
excludePCI configuration space backup exclusion list, or NULL

Definition at line 87 of file pcibackup.c.

88  {
89  unsigned int offset;
90  uint32_t *dword;
91 
92  for ( offset = 0, dword = backup->dwords ; offset < limit ;
93  offset += sizeof ( *dword ) , dword++ ) {
94  if ( ! pci_backup_excluded ( pci, offset, exclude ) )
96  }
97 }
uint32_t dwords[PCI_CONFIG_BACKUP_ALL/sizeof(uint32_t)]
Definition: pcibackup.h:22
static userptr_t size_t offset
Offset of the first segment within the content.
Definition: deflate.h:259
uint16_t limit
Limit.
Definition: librm.h:250
unsigned int uint32_t
Definition: stdint.h:12
int pci_write_config_dword(struct pci_device *pci, unsigned int where, uint32_t value)
Write 32-bit dword to PCI configuration space.
unsigned long int dword
Definition: smc9000.h:40
static int pci_backup_excluded(struct pci_device *pci, unsigned int offset, const uint8_t *exclude)
Check PCI configuration space offset against exclusion list.
Definition: pcibackup.c:44

References pci_config_backup::dwords, limit, offset, pci_backup_excluded(), and pci_write_config_dword().

Referenced by arbel_reset(), hermon_reset(), pci_reset(), and qib7322_reset().