VirtualBox

Changeset 37817 in vbox


Ignore:
Timestamp:
Jul 7, 2011 1:02:40 PM (14 years ago)
Author:
vboxsync
Message:

VBoxManage: attachpci/detachpci => pciattach/pcidetach; doc/manual: wording

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/doc/manual/en_US/user_AdvancedTopics.xml

    r37264 r37817  
    541541    <title>PCI passthrough</title>
    542542
    543     <para>When running on Linux hosts, with recent enough kernel (at least version
     543    <para>When running on Linux hosts, with a recent enough kernel (at least version
    544544      <computeroutput>2.6.31</computeroutput>) experimental host PCI devices
    545545      passthrough is available.<footnote>
    546546        <para>Experimental support for PCI passthrough was introduced with VirtualBox
    547547        4.1.</para>
    548       </footnote> Essentially this feature allows to use physical PCI devices
    549       on host directly by the guest, even if host doesn't have drivers for this
    550       particular device. Both regular PCI and some PCI Express cards are
     548    </footnote> Essentially this feature allows to directly use physical PCI
     549      devices on the host by the guest even if host doesn't have drivers for this
     550      particular device. Both, regular PCI and some PCI Express cards, are
    551551      supported. AGP and certain PCI Express cards are not supported at the
    552       moment, if they rely on GART (Graphics Address Remapping Table) unit
    553       programming for texture management, as it does rather nontrivial
     552      moment if they rely on GART (Graphics Address Remapping Table) unit
     553      programming for texture management as it does rather nontrivial
    554554      operations with pages remapping interfering with IOMMU.
    555555      This limitation may be lifted in future releases.</para>
    556556
    557557    <para>To be fully functional, PCI passthrough support in VirtualBox depends upon
    558     IOMMU hardware unit, which is not yet too widely available. To be exact,
    559     if device uses bus mastering (i.e. performs DMA to the OS memory on its own), then
    560     IOMMU hardware is needed (otherwise such DMA transactions may override wrong physical memory address,
    561     as device DMA engine is programmed using device-specific protocol to perform memory transactions).
    562     IOMMU functions as translation unit, mapping physical memory access requests from the device,
    563     using knowledge of guest physical address to host physical addresses translation rules.</para>
     558      an IOMMU hardware unit which is not yet too widely available. If the device uses
     559      bus mastering (i.e. it performs DMA to the OS memory on its
     560      own), then an IOMMU is required, otherwise such DMA transactions may write to
     561      the wrong physical memory address as the device DMA engine is programmed using
     562      a device-specific protocol to perform memory transactions. The IOMMU functions
     563      as translation unit mapping physical memory access requests from the device
     564      using knowledge of the guest physical address to host physical addresses translation
     565      rules.</para>
    564566
    565567    <para>Intel's solution for IOMMU is marketed as "Intel Virtualization Technology for
    566568      Directed I/O" (VT-d), and AMD's one is called AMD-Vi. So please check if your
    567569      motherboard datasheet has appropriate technology.
    568       Even if your hardware doesn't have IOMMU, certain PCI cards may work
    569       (such as serial PCI adapters), but guest will show warning on boot, and
    570       VM execution will terminate, if guest driver will attempt to enable card
     570      Even if your hardware doesn't have a IOMMU, certain PCI cards may work
     571      (such as serial PCI adapters), but the guest will show a warning on boot and
     572      the VM execution will terminate if the guest driver will attempt to enable card
    571573      bus mastering.</para>
    572574
    573575    <para>
    574       It's not uncommon, that BIOS/OS disables IOMMU by default, so before any attempt to use it,
    575       please make sure that
     576      It is very common that the BIOS or the host OS disables the IOMMU by default.
     577      So before any attempt to use it please make sure that
    576578      <orderedlist>
    577579        <listitem>
    578             Your motherboard has IOMMU unit.
     580            Your motherboard has an IOMMU unit.
    579581        </listitem>
    580582        <listitem>
    581             Your CPU supports IOMMU.
     583            Your CPU supports the IOMMU.
    582584        </listitem>
    583585        <listitem>
    584             IOMMU is enabled in the BIOS.
     586            The IOMMU is enabled in the BIOS.
    585587        </listitem>
    586588        <listitem>
     
    591593        </listitem>
    592594        <listitem>
    593             Your Linux kernel recognizes and uses IOMMU unit (<computeroutput>intel_iommu=on</computeroutput>
    594             boot option could be needed). Search for DMAR and PCI-DMA in kernel boot log.
     595          Your Linux kernel recognizes and uses the IOMMU unit
     596          (<computeroutput>intel_iommu=on</computeroutput>
     597           boot option could be needed). Search for DMAR and PCI-DMA in kernel boot log.
    595598        </listitem>
    596599      </orderedlist>
    597600    </para>
    598601
    599     <para>Once you made sure that host kernel supports IOMMU, next step is to select
    600       PCI card, and attach it to the guest. To figure out list of available PCI devices,
    601       use  <computeroutput>lspci</computeroutput> command. Output will look like this
     602    <para>Once you made sure that the host kernel supports the IOMMU, the next step is
     603      to select the PCI card and attach it to the guest. To figure out the list of
     604      available PCI devices, use the <computeroutput>lspci</computeroutput> command.
     605      The output will look like this
    602606      <screen>
    603607        01:00.0 VGA compatible controller: ATI Technologies Inc Cedar PRO [Radeon HD 5450]
     
    608612        06:00.0 VGA compatible controller: nVidia Corporation G86 [GeForce 8500 GT] (rev a1)
    609613      </screen>
    610       First column here is a PCI address (in format <computeroutput>bus:device.function</computeroutput>).
    611       This address could be used to identify device for further operations.
    612       For example, to attach PCI network controller on system listed above,
    613       to second PCI bus in the guest, as device 5, function 0, use the following command:
    614       <screen>VBoxManage modifyvm "VM name" --attachpci 02:00.0@01:05.0</screen>
     614      The first column is a PCI address (in format <computeroutput>bus:device.function</computeroutput>).
     615      This address could be used to identify the device for further operations.
     616      For example, to attach a PCI network controller on the system listed above
     617      to the second PCI bus in the guest, as device 5, function 0, use the following command:
     618      <screen>VBoxManage modifyvm "VM name" --pciattach 02:00.0@01:05.0</screen>
    615619      To detach same device, use
    616       <screen>VBoxManage modifyvm "VM name" --detachpci 02:00.0</screen>
    617       Please note, that both host and guest could freely assign different PCI address to
    618       card attached during runtime, so those addresses only apply to address of card at
    619       the moment of attachment (host), and during BIOS PCI init (guest).
     620      <screen>VBoxManage modifyvm "VM name" --pcidetach 02:00.0</screen>
     621      Please note that both host and guest could freely assign a different PCI address to
     622      the card attached during runtime, so those addresses only apply to the address of
     623      the card at the moment of attachment (host), and during BIOS PCI init (guest).
    620624    </para>
    621625
    622     <para>If virtual machine has PCI device attached, certain limitations apply.
     626    <para>If the virtual machine has a PCI device attached, certain limitations apply:
    623627      <orderedlist>
    624628         <listitem>
    625           Only PCI cards with non-shared interrupts (such as using MSI on host) can be
     629          Only PCI cards with non-shared interrupts (such as using MSI on host) are
    626630          supported at the moment.
    627631        </listitem>
    628632        <listitem>
    629           No guest state can be reliably saved/restored (as PCI card internal state could
    630           not be retrieved).
     633          No guest state can be reliably saved/restored (as the internal state of the PCI
     634          card could not be retrieved).
    631635        </listitem>
    632636        <listitem>
     
    634638        </listitem>
    635639        <listitem>
    636           No lazy physical memory allocation, host preallocates whole RAM on startup
    637           (as we cannot catch physical hardware access to physical memory).
     640          No lazy physical memory allocation. The host will preallocate the whole RAM
     641          required for the VM on startup (as we cannot catch physical hardware accesses
     642          to the physical memory).
    638643        </listitem>
    639644      </orderedlist>
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp

    r37763 r37817  
    152152                     "                            [--acpi on|off]\n"
    153153#ifdef VBOX_WITH_PCI_PASSTHROUGH
    154                      "                            [--attachpci 03:04.0]\n"
    155                      "                            [--attachpci 03:04.0@02:01.0]\n"
    156                      "                            [--detachpci 03:04.0]\n"
     154                     "                            [--pciattach 03:04.0]\n"
     155                     "                            [--pciattach 03:04.0@02:01.0]\n"
     156                     "                            [--pcidetach 03:04.0]\n"
    157157#endif
    158158                     "                            [--ioapic on|off]\n"
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp

    r37525 r37817  
    302302    { "--chipset",                  MODIFYVM_CHIPSET,                   RTGETOPT_REQ_STRING },
    303303#ifdef VBOX_WITH_PCI_PASSTHROUGH
    304     { "--attachpci",                MODIFYVM_ATTACH_PCI,                RTGETOPT_REQ_STRING },
    305     { "--detachpci",                MODIFYVM_DETACH_PCI,                RTGETOPT_REQ_STRING },
     304    { "--pciattach",                MODIFYVM_ATTACH_PCI,                RTGETOPT_REQ_STRING },
     305    { "--pcidetach",                MODIFYVM_DETACH_PCI,                RTGETOPT_REQ_STRING },
    306306#endif
    307307};
     
    22592259                if (iHostAddr == -1 || iGuestAddr == -1)
    22602260                {
    2261                     errorArgument("Invalid --attachpci argument '%s' (valid: 'HB:HD.HF@GB:GD.GF' or just 'HB:HD.HF')", ValueUnion.psz);
     2261                    errorArgument("Invalid --pciattach argument '%s' (valid: 'HB:HD.HF@GB:GD.GF' or just 'HB:HD.HF')", ValueUnion.psz);
    22622262                    rc = E_FAIL;
    22632263                }
     
    22762276                if (iHostAddr == -1)
    22772277                {
    2278                     errorArgument("Invalid --detachpci argument '%s' (valid: 'HB:HD.HF')", ValueUnion.psz);
     2278                    errorArgument("Invalid --pcidetach argument '%s' (valid: 'HB:HD.HF')", ValueUnion.psz);
    22792279                    rc = E_FAIL;
    22802280                }
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette