Classes | Public Member Functions

DirectPciDevice Class Reference

Directly-assigned PCI device. More...

Inheritance diagram for DirectPciDevice:
StaticReceiver< DirectPciDevice > HostVfPci Device HostPci

List of all members.

Classes

struct  MsiXTableEntry

Public Member Functions

void read_all_bars (unsigned bdf, unsigned long *base, unsigned long *size)
void read_all_vf_bars (unsigned bdf, unsigned vf_no, unsigned long *base, unsigned long *size)
 Read all vf bars.
bool receive (MessageIOIn &msg)
bool receive (MessageIOOut &msg)
bool receive (MessagePciConfig &msg)
bool receive (MessageIrq &msg)
bool receive (MessageIrqNotify &msg)
bool receive (MessageMem &msg)
bool receive (MessageMemRegion &msg)
bool receive (MessageLegacy &msg)
 DirectPciDevice (Motherboard &mb, unsigned hbdf, unsigned guestbdf, bool assign, bool use_irqs=true, unsigned parent_bdf=0, unsigned vf_no=0, bool map=true)

Detailed Description

Directly-assigned PCI device.

Copyright (C) 2007-2010, Bernhard Kauer <bk@vmmon.org> Economic rights: Technische Universitaet Dresden (Germany)

This file is part of Vancouver.

Vancouver is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation.

Vancouver is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License version 2 for more details. Directly assign a host PCI device to the guest.

State: testing Features: pcicfgspace, ioport operations, memory read/write, host irq, mem-alloc, DMA remapping Missing: MSI, MSI-X Documentation: PCI spec v.2.2


Constructor & Destructor Documentation

DirectPciDevice::DirectPciDevice ( Motherboard mb,
unsigned  hbdf,
unsigned  guestbdf,
bool  assign,
bool  use_irqs = true,
unsigned  parent_bdf = 0,
unsigned  vf_no = 0,
bool  map = true 
) [inline]

Member Function Documentation

void DirectPciDevice::read_all_bars ( unsigned  bdf,
unsigned long *  base,
unsigned long *  size 
) [inline]
void DirectPciDevice::read_all_vf_bars ( unsigned  bdf,
unsigned  vf_no,
unsigned long *  base,
unsigned long *  size 
) [inline]

Read all vf bars.

bool DirectPciDevice::receive ( MessageMemRegion msg  )  [inline]
bool DirectPciDevice::receive ( MessageMem msg  )  [inline]
bool DirectPciDevice::receive ( MessageIrqNotify msg  )  [inline]
bool DirectPciDevice::receive ( MessageIrq msg  )  [inline]
bool DirectPciDevice::receive ( MessagePciConfig msg  )  [inline]
bool DirectPciDevice::receive ( MessageIOOut msg  )  [inline]
bool DirectPciDevice::receive ( MessageIOIn msg  )  [inline]
bool DirectPciDevice::receive ( MessageLegacy msg  )  [inline]

Disable Busmaster DMA on reset. Thus the device can not do DMA anymore.

XXX OSes are buggy and enable this bit to early, thus we have to reset the PCI device here!


Member Data Documentation

unsigned short DirectPciDevice::port
unsigned long DirectPciDevice::size

The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines