VirtualBox

Changeset 81089 in vbox for trunk/src/VBox/Devices/PC/BIOS


Ignore:
Timestamp:
Sep 30, 2019 10:21:06 PM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
133695
Message:

Devices/BIOS: Skeleton of a VirtIO driver, just detects any device for now, bugref:9440

Location:
trunk/src/VBox/Devices/PC/BIOS
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/PC/BIOS/Makefile.kmk

    r76553 r81089  
    7979        $(VBoxPcBios32_0_OUTDIR)/VBoxPcBios32.lib \
    8080        orgs.asm
     81
     82 ifdef VBOX_WITH_VIRTIO_SCSI_BIOS
     83  VBoxPcBios386_DEFS += \
     84        VBOX_WITH_VIRTIO_SCSI
     85  VBoxPcBios386_SOURCES += \
     86        virtio.c
     87 endif
     88
    8189 #$(VBoxPcBios32_1_TARGET) - reference is lost when extending the target. weird.
    8290
  • trunk/src/VBox/Devices/PC/BIOS/ebda.h

    r78406 r81089  
    8989#endif
    9090
    91 #define BX_MAX_STORAGE_DEVICES (BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES + BX_MAX_AHCI_DEVICES)
     91#ifdef VBOX_WITH_VIRTIO_SCSI
     92    /* Four should be enough for now */
     93    #define BX_MAX_VIRTIO_SCSI_DEVICES 4
     94
     95    /* An AHCI device starts always at BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES. */
     96    #define VBOX_IS_VIRTIO_SCSI_DEVICE(device_id) (device_id >= (BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES + BX_MAX_AHCI_DEVICES))
     97    #define VBOX_GET_VIRTIO_SCSI_DEVICE(device_id) (device_id - (BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES + BX_MAX_AHCI_DEVICES))
     98#else
     99    #define BX_MAX_VIRTIO_SCSI_DEVICES 0
     100#endif
     101
     102#define BX_MAX_STORAGE_DEVICES (BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES + BX_MAX_AHCI_DEVICES + BX_MAX_VIRTIO_SCSI_DEVICES)
    92103
    93104/* Generic storage device types. These depend on the controller type and
     
    200211#endif
    201212
     213#ifdef VBOX_WITH_VIRTIO_SCSI
     214
     215/* VirtIO SCSI specific device information. */
     216typedef struct {
     217    uint8_t     target;           /* Target ID. */
     218} virtio_scsi_dev_t;
     219
     220#endif
     221
    202222/* Generic disk information. */
    203223typedef struct {
     
    276296#endif
    277297
     298#ifdef VBOX_WITH_VIRTIO_SCSI
     299    /* VirtIO SCSI bus-specific device information. */
     300    virtio_scsi_dev_t  virtiodev[BX_MAX_VIRTIO_SCSI_DEVICES];
     301    uint8_t            virtio_devcnt;        /* Number of VirtIO devices. */
     302    uint16_t           virtio_seg;           /* Segment of VirtIO data block. */
     303#endif
     304
    278305    dpte_t      dpte;               /* Buffer for building a DPTE. */
    279306} bio_dsk_t;
     
    308335    fdpt_t      fdpt1;
    309336
     337#ifndef VBOX_WITH_VIRTIO_SCSI /** @todo For development only, need to find a real solution to voercome the 1KB limit. */
    310338    uint8_t     filler2[0xC4];
     339#endif
    311340
    312341    bio_dsk_t   bdisk;      /* Disk driver data (ATA/SCSI/AHCI). */
  • trunk/src/VBox/Devices/PC/BIOS/orgs.asm

    r76553 r81089  
    144144extrn           _ahci_init:near
    145145endif
     146ifdef VBOX_WITH_VIRTIO_SCSI
     147extrn           _virtio_scsi_init:near
     148endif
    146149if VBOX_BIOS_CPU ge 80286
    147150extrn           _int15_blkmove:near
     
    645648endif
    646649
     650ifdef VBOX_WITH_VIRTIO_SCSI
     651                ; VirtIO-SCSI driver setup
     652                call    _virtio_scsi_init
     653endif
     654
    647655                ;; floppy setup
    648656                call    floppy_post
Note: See TracChangeset for help on using the changeset viewer.

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