45
45
* @pre vdev->vpci != NULL
46
46
* @pre vdev->vpci->vm != NULL
47
47
*/
48
- void init_vhostbridge (struct pci_vdev * vdev )
48
+ static void init_vhostbridge (struct pci_vdev * vdev )
49
49
{
50
- if (is_hostbridge (vdev ) && is_prelaunched_vm (vdev -> vpci -> vm )) {
51
- /* PCI config space */
52
- pci_vdev_write_cfg_u16 (vdev , PCIR_VENDOR , (uint16_t )0x8086U );
53
- pci_vdev_write_cfg_u16 (vdev , PCIR_DEVICE , (uint16_t )0x5af0U );
50
+ /* PCI config space */
51
+ pci_vdev_write_cfg_u16 (vdev , PCIR_VENDOR , (uint16_t )0x8086U );
52
+ pci_vdev_write_cfg_u16 (vdev , PCIR_DEVICE , (uint16_t )0x5af0U );
54
53
55
- pci_vdev_write_cfg_u8 (vdev , PCIR_REVID , (uint8_t )0xbU );
54
+ pci_vdev_write_cfg_u8 (vdev , PCIR_REVID , (uint8_t )0xbU );
56
55
57
- pci_vdev_write_cfg_u8 (vdev , PCIR_HDRTYPE , (uint8_t )PCIM_HDRTYPE_NORMAL
56
+ pci_vdev_write_cfg_u8 (vdev , PCIR_HDRTYPE , (uint8_t )PCIM_HDRTYPE_NORMAL
58
57
| PCIM_MFDEV );
59
- pci_vdev_write_cfg_u8 (vdev , PCIR_CLASS , (uint8_t )PCIC_BRIDGE );
60
- pci_vdev_write_cfg_u8 (vdev , PCIR_SUBCLASS , (uint8_t )PCIS_BRIDGE_HOST );
61
-
62
- pci_vdev_write_cfg_u8 (vdev , 0x34U , (uint8_t )0xe0U );
63
- pci_vdev_write_cfg_u8 (vdev , 0x3cU , (uint8_t )0xe0U );
64
- pci_vdev_write_cfg_u8 (vdev , 0x48U , (uint8_t )0x1U );
65
- pci_vdev_write_cfg_u8 (vdev , 0x4aU , (uint8_t )0xd1U );
66
- pci_vdev_write_cfg_u8 (vdev , 0x4bU , (uint8_t )0xfeU );
67
- pci_vdev_write_cfg_u8 (vdev , 0x50U , (uint8_t )0xc1U );
68
- pci_vdev_write_cfg_u8 (vdev , 0x51U , (uint8_t )0x2U );
69
- pci_vdev_write_cfg_u8 (vdev , 0x54U , (uint8_t )0x33U );
70
- pci_vdev_write_cfg_u8 (vdev , 0x58U , (uint8_t )0x7U );
71
- pci_vdev_write_cfg_u8 (vdev , 0x5aU , (uint8_t )0xf0U );
72
- pci_vdev_write_cfg_u8 (vdev , 0x5bU , (uint8_t )0x7fU );
73
- pci_vdev_write_cfg_u8 (vdev , 0x60U , (uint8_t )0x1U );
74
- pci_vdev_write_cfg_u8 (vdev , 0x63U , (uint8_t )0xe0U );
75
- pci_vdev_write_cfg_u8 (vdev , 0xabU , (uint8_t )0x80U );
76
- pci_vdev_write_cfg_u8 (vdev , 0xacU , (uint8_t )0x2U );
77
- pci_vdev_write_cfg_u8 (vdev , 0xb0U , (uint8_t )0x1U );
78
- pci_vdev_write_cfg_u8 (vdev , 0xb3U , (uint8_t )0x7cU );
79
- pci_vdev_write_cfg_u8 (vdev , 0xb4U , (uint8_t )0x1U );
80
- pci_vdev_write_cfg_u8 (vdev , 0xb6U , (uint8_t )0x80U );
81
- pci_vdev_write_cfg_u8 (vdev , 0xb7U , (uint8_t )0x7bU );
82
- pci_vdev_write_cfg_u8 (vdev , 0xb8U , (uint8_t )0x1U );
83
- pci_vdev_write_cfg_u8 (vdev , 0xbbU , (uint8_t )0x7bU );
84
- pci_vdev_write_cfg_u8 (vdev , 0xbcU , (uint8_t )0x1U );
85
- pci_vdev_write_cfg_u8 (vdev , 0xbfU , (uint8_t )0x80U );
86
- pci_vdev_write_cfg_u8 (vdev , 0xe0U , (uint8_t )0x9U );
87
- pci_vdev_write_cfg_u8 (vdev , 0xe2U , (uint8_t )0xcU );
88
- pci_vdev_write_cfg_u8 (vdev , 0xe3U , (uint8_t )0x1U );
89
- pci_vdev_write_cfg_u8 (vdev , 0xf5U , (uint8_t )0xfU );
90
- pci_vdev_write_cfg_u8 (vdev , 0xf6U , (uint8_t )0x1cU );
91
- pci_vdev_write_cfg_u8 (vdev , 0xf7U , (uint8_t )0x1U );
92
- }
58
+ pci_vdev_write_cfg_u8 (vdev , PCIR_CLASS , (uint8_t )PCIC_BRIDGE );
59
+ pci_vdev_write_cfg_u8 (vdev , PCIR_SUBCLASS , (uint8_t )PCIS_BRIDGE_HOST );
60
+
61
+ pci_vdev_write_cfg_u8 (vdev , 0x34U , (uint8_t )0xe0U );
62
+ pci_vdev_write_cfg_u8 (vdev , 0x3cU , (uint8_t )0xe0U );
63
+ pci_vdev_write_cfg_u8 (vdev , 0x48U , (uint8_t )0x1U );
64
+ pci_vdev_write_cfg_u8 (vdev , 0x4aU , (uint8_t )0xd1U );
65
+ pci_vdev_write_cfg_u8 (vdev , 0x4bU , (uint8_t )0xfeU );
66
+ pci_vdev_write_cfg_u8 (vdev , 0x50U , (uint8_t )0xc1U );
67
+ pci_vdev_write_cfg_u8 (vdev , 0x51U , (uint8_t )0x2U );
68
+ pci_vdev_write_cfg_u8 (vdev , 0x54U , (uint8_t )0x33U );
69
+ pci_vdev_write_cfg_u8 (vdev , 0x58U , (uint8_t )0x7U );
70
+ pci_vdev_write_cfg_u8 (vdev , 0x5aU , (uint8_t )0xf0U );
71
+ pci_vdev_write_cfg_u8 (vdev , 0x5bU , (uint8_t )0x7fU );
72
+ pci_vdev_write_cfg_u8 (vdev , 0x60U , (uint8_t )0x1U );
73
+ pci_vdev_write_cfg_u8 (vdev , 0x63U , (uint8_t )0xe0U );
74
+ pci_vdev_write_cfg_u8 (vdev , 0xabU , (uint8_t )0x80U );
75
+ pci_vdev_write_cfg_u8 (vdev , 0xacU , (uint8_t )0x2U );
76
+ pci_vdev_write_cfg_u8 (vdev , 0xb0U , (uint8_t )0x1U );
77
+ pci_vdev_write_cfg_u8 (vdev , 0xb3U , (uint8_t )0x7cU );
78
+ pci_vdev_write_cfg_u8 (vdev , 0xb4U , (uint8_t )0x1U );
79
+ pci_vdev_write_cfg_u8 (vdev , 0xb6U , (uint8_t )0x80U );
80
+ pci_vdev_write_cfg_u8 (vdev , 0xb7U , (uint8_t )0x7bU );
81
+ pci_vdev_write_cfg_u8 (vdev , 0xb8U , (uint8_t )0x1U );
82
+ pci_vdev_write_cfg_u8 (vdev , 0xbbU , (uint8_t )0x7bU );
83
+ pci_vdev_write_cfg_u8 (vdev , 0xbcU , (uint8_t )0x1U );
84
+ pci_vdev_write_cfg_u8 (vdev , 0xbfU , (uint8_t )0x80U );
85
+ pci_vdev_write_cfg_u8 (vdev , 0xe0U , (uint8_t )0x9U );
86
+ pci_vdev_write_cfg_u8 (vdev , 0xe2U , (uint8_t )0xcU );
87
+ pci_vdev_write_cfg_u8 (vdev , 0xe3U , (uint8_t )0x1U );
88
+ pci_vdev_write_cfg_u8 (vdev , 0xf5U , (uint8_t )0xfU );
89
+ pci_vdev_write_cfg_u8 (vdev , 0xf6U , (uint8_t )0x1cU );
90
+ pci_vdev_write_cfg_u8 (vdev , 0xf7U , (uint8_t )0x1U );
93
91
}
94
92
95
- void deinit_vhostbridge (__unused const struct pci_vdev * vdev )
93
+ static void deinit_vhostbridge (__unused struct pci_vdev * vdev )
96
94
{
97
95
}
98
96
@@ -102,17 +100,11 @@ void deinit_vhostbridge(__unused const struct pci_vdev *vdev)
102
100
* @pre vdev->vpci != NULL
103
101
* @pre vdev->vpci->vm != NULL
104
102
*/
105
- int32_t vhostbridge_read_cfg (const struct pci_vdev * vdev , uint32_t offset ,
103
+ static int32_t vhostbridge_read_cfg (struct pci_vdev * vdev , uint32_t offset ,
106
104
uint32_t bytes , uint32_t * val )
107
105
{
108
- int32_t ret = - ENODEV ;
109
-
110
- if (is_hostbridge (vdev ) && is_prelaunched_vm (vdev -> vpci -> vm )) {
111
- * val = pci_vdev_read_cfg (vdev , offset , bytes );
112
- ret = 0 ;
113
- }
114
-
115
- return ret ;
106
+ * val = pci_vdev_read_cfg (vdev , offset , bytes );
107
+ return 0 ;
116
108
}
117
109
118
110
@@ -121,18 +113,23 @@ int32_t vhostbridge_read_cfg(const struct pci_vdev *vdev, uint32_t offset,
121
113
* @pre vdev->vpci != NULL
122
114
* @pre vdev->vpci->vm != NULL
123
115
*/
124
- int32_t vhostbridge_write_cfg (struct pci_vdev * vdev , uint32_t offset ,
116
+ static int32_t vhostbridge_write_cfg (struct pci_vdev * vdev , uint32_t offset ,
125
117
uint32_t bytes , uint32_t val )
126
118
{
127
- int32_t ret = - ENODEV ;
128
-
129
- if (is_hostbridge (vdev ) && is_prelaunched_vm (vdev -> vpci -> vm )) {
130
- if (!is_bar_offset (PCI_BAR_COUNT , offset )) {
131
- pci_vdev_write_cfg (vdev , offset , bytes , val );
132
- }
133
-
134
- ret = 0 ;
119
+ if (!is_bar_offset (PCI_BAR_COUNT , offset )) {
120
+ pci_vdev_write_cfg (vdev , offset , bytes , val );
135
121
}
122
+ return 0 ;
123
+ }
136
124
137
- return ret ;
125
+ static struct pci_vdev_ops vhostbridge_ops = {
126
+ .init_vdev = init_vhostbridge ,
127
+ .deinit_vdev = deinit_vhostbridge ,
128
+ .write_vdev_cfg = vhostbridge_write_cfg ,
129
+ .read_vdev_cfg = vhostbridge_read_cfg ,
130
+ };
131
+
132
+ struct pci_vdev_ops * get_vhostbridge_ops (void )
133
+ {
134
+ return & vhostbridge_ops ;
138
135
}
0 commit comments