[haiku-bugs] Re: [Haiku] #17238: [virtio] Support "direct attach" PCI virtio block

  • From: "Haiku" <trac@xxxxxxxxxxxx>
  • To: undisclosed-recipients: ;
  • Date: Fri, 03 Sep 2021 20:03:48 -0000

#17238: [virtio] Support "direct attach" PCI virtio block
----------------------------------+---------------------------------
  Reporter:  kallisti5            |      Owner:  nobody
      Type:  bug                  |     Status:  new
  Priority:  normal               |  Milestone:  R1/beta4
 Component:  Drivers/Disk/Virtio  |    Version:  R1/beta3
Resolution:                       |   Keywords:  virtio virtio_block
Blocked By:                       |   Blocking:
  Platform:  All                  |
----------------------------------+---------------------------------
Comment (by kallisti5):

 ah ha.

 FreeBSD:
 sys/dev/virtio/pci/virtio_pci_legacy.c
 {{{
         if (pci_get_vendor(dev) != VIRTIO_PCI_VENDORID)
                 return (ENXIO);

         if (pci_get_device(dev) < VIRTIO_PCI_DEVICEID_MIN ||
             pci_get_device(dev) > VIRTIO_PCI_DEVICEID_LEGACY_MAX)
                 return (ENXIO);
 }}}

 Freebsd
 sys/dev/virtio/pci/virtio_pci_modern.c
 {{{
        if (pci_get_vendor(dev) != VIRTIO_PCI_VENDORID)
                 return (ENXIO);

         if (pci_get_device(dev) < VIRTIO_PCI_DEVICEID_MIN ||
             pci_get_device(dev) > VIRTIO_PCI_DEVICEID_MODERN_MAX)
                 return (ENXIO);

         if (pci_get_device(dev) < VIRTIO_PCI_DEVICEID_MODERN_MIN) {
                 if (!vtpci_modern_transitional)
                         return (ENXIO);
                 devid = pci_get_subdevice(dev);
         } else
                 devid = pci_get_device(dev) -
 VIRTIO_PCI_DEVICEID_MODERN_MIN;
 }}}

 {{{
 sys/dev/virtio/pci/virtio_pci_var.h:#define VIRTIO_PCI_DEVICEID_MIN
 0x1000
 sys/dev/virtio/pci/virtio_pci_var.h:#define VIRTIO_PCI_DEVICEID_LEGACY_MAX
 0x103F
 sys/dev/virtio/pci/virtio_pci_var.h:#define VIRTIO_PCI_DEVICEID_MODERN_MIN
 0x1040
 sys/dev/virtio/pci/virtio_pci_var.h:#define VIRTIO_PCI_DEVICEID_MODERN_MAX
 0x107F
 }}}

 So..
   * deviceid 0x1000 - 0x103F is "Virtio Legacy"
   * deviceid 0x1040 - 0x107F is "Virtio Modern"

 ugh.
-- 
Ticket URL: <https://dev.haiku-os.org/ticket/17238#comment:5>
Haiku <https://dev.haiku-os.org>
The Haiku operating system.

Other related posts: