Deleted Added
full compact
pci_emul.h (268887) pci_emul.h (268972)
1/*-
2 * Copyright (c) 2011 NetApp, Inc.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 9 unchanged lines hidden (view full) ---

18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
1/*-
2 * Copyright (c) 2011 NetApp, Inc.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 9 unchanged lines hidden (view full) ---

18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
26 * $FreeBSD: stable/10/usr.sbin/bhyve/pci_emul.h 268887 2014-07-19 20:13:01Z jhb $
26 * $FreeBSD: stable/10/usr.sbin/bhyve/pci_emul.h 268972 2014-07-22 03:14:37Z jhb $
27 */
28
29#ifndef _PCI_EMUL_H_
30#define _PCI_EMUL_H_
31
32#include <sys/types.h>
33#include <sys/queue.h>
34#include <sys/kernel.h>

--- 80 unchanged lines hidden (view full) ---

115 char pi_name[PI_NAMESZ];
116 int pi_bar_getsize;
117 int pi_prevcap;
118 int pi_capend;
119
120 struct {
121 int8_t pin;
122 enum lintr_stat state;
27 */
28
29#ifndef _PCI_EMUL_H_
30#define _PCI_EMUL_H_
31
32#include <sys/types.h>
33#include <sys/queue.h>
34#include <sys/kernel.h>

--- 80 unchanged lines hidden (view full) ---

115 char pi_name[PI_NAMESZ];
116 int pi_bar_getsize;
117 int pi_prevcap;
118 int pi_capend;
119
120 struct {
121 int8_t pin;
122 enum lintr_stat state;
123 int pirq_pin;
123 int ioapic_irq;
124 pthread_mutex_t lock;
125 } pi_lintr;
126
127 struct {
128 int enabled;
129 uint64_t addr;
130 uint64_t msg_data;

--- 64 unchanged lines hidden (view full) ---

195 uint16_t link_control2;
196 uint16_t link_status2;
197
198 uint32_t slot_capabilities2; /* ports with slots */
199 uint16_t slot_control2;
200 uint16_t slot_status2;
201} __packed;
202
124 int ioapic_irq;
125 pthread_mutex_t lock;
126 } pi_lintr;
127
128 struct {
129 int enabled;
130 uint64_t addr;
131 uint64_t msg_data;

--- 64 unchanged lines hidden (view full) ---

196 uint16_t link_control2;
197 uint16_t link_status2;
198
199 uint32_t slot_capabilities2; /* ports with slots */
200 uint16_t slot_control2;
201 uint16_t slot_status2;
202} __packed;
203
203typedef void (*pci_lintr_cb)(int b, int s, int pin, int ioapic_irq, void *arg);
204typedef void (*pci_lintr_cb)(int b, int s, int pin, int pirq_pin,
205 int ioapic_irq, void *arg);
204
205int init_pci(struct vmctx *ctx);
206void msicap_cfgwrite(struct pci_devinst *pi, int capoff, int offset,
207 int bytes, uint32_t val);
208void msixcap_cfgwrite(struct pci_devinst *pi, int capoff, int offset,
209 int bytes, uint32_t val);
210void pci_callback(void);
211int pci_emul_alloc_bar(struct pci_devinst *pdi, int idx,
212 enum pcibar_type type, uint64_t size);
213int pci_emul_alloc_pbar(struct pci_devinst *pdi, int idx,
214 uint64_t hostbase, enum pcibar_type type, uint64_t size);
215int pci_emul_add_msicap(struct pci_devinst *pi, int msgnum);
216int pci_emul_add_pciecap(struct pci_devinst *pi, int pcie_device_type);
217void pci_generate_msi(struct pci_devinst *pi, int msgnum);
218void pci_generate_msix(struct pci_devinst *pi, int msgnum);
219void pci_lintr_assert(struct pci_devinst *pi);
220void pci_lintr_deassert(struct pci_devinst *pi);
206
207int init_pci(struct vmctx *ctx);
208void msicap_cfgwrite(struct pci_devinst *pi, int capoff, int offset,
209 int bytes, uint32_t val);
210void msixcap_cfgwrite(struct pci_devinst *pi, int capoff, int offset,
211 int bytes, uint32_t val);
212void pci_callback(void);
213int pci_emul_alloc_bar(struct pci_devinst *pdi, int idx,
214 enum pcibar_type type, uint64_t size);
215int pci_emul_alloc_pbar(struct pci_devinst *pdi, int idx,
216 uint64_t hostbase, enum pcibar_type type, uint64_t size);
217int pci_emul_add_msicap(struct pci_devinst *pi, int msgnum);
218int pci_emul_add_pciecap(struct pci_devinst *pi, int pcie_device_type);
219void pci_generate_msi(struct pci_devinst *pi, int msgnum);
220void pci_generate_msix(struct pci_devinst *pi, int msgnum);
221void pci_lintr_assert(struct pci_devinst *pi);
222void pci_lintr_deassert(struct pci_devinst *pi);
221int pci_lintr_request(struct pci_devinst *pi);
223void pci_lintr_request(struct pci_devinst *pi);
222int pci_msi_enabled(struct pci_devinst *pi);
223int pci_msix_enabled(struct pci_devinst *pi);
224int pci_msix_table_bar(struct pci_devinst *pi);
225int pci_msix_pba_bar(struct pci_devinst *pi);
226int pci_msi_msgnum(struct pci_devinst *pi);
227int pci_parse_slot(char *opt);
228void pci_populate_msicap(struct msicap *cap, int msgs, int nextptr);
229int pci_emul_add_msixcap(struct pci_devinst *pi, int msgnum, int barnum);

--- 51 unchanged lines hidden ---
224int pci_msi_enabled(struct pci_devinst *pi);
225int pci_msix_enabled(struct pci_devinst *pi);
226int pci_msix_table_bar(struct pci_devinst *pi);
227int pci_msix_pba_bar(struct pci_devinst *pi);
228int pci_msi_msgnum(struct pci_devinst *pi);
229int pci_parse_slot(char *opt);
230void pci_populate_msicap(struct msicap *cap, int msgs, int nextptr);
231int pci_emul_add_msixcap(struct pci_devinst *pi, int msgnum, int barnum);

--- 51 unchanged lines hidden ---