Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/virtio/virtio.c

    r8d2289c r13eecc4  
    6363        uintptr_t phys;
    6464        errno_t rc = dmamem_map_anonymous(buffers * size, 0,
    65             write ? AS_AREA_WRITE : AS_AREA_READ, 0, &phys, &virt);
     65            write ? AS_AREA_WRITE | AS_AREA_READ : AS_AREA_READ, 0, &phys,
     66            &virt);
    6667        if (rc != EOK)
    6768                return rc;
     
    319320        uint32_t device_features = pio_read_le32(&cfg->device_feature);
    320321
    321         ddf_msg(LVL_NOTE, "offered features %x", device_features);
     322        uint32_t reserved_features = VIRTIO_F_VERSION_1;
     323        pio_write_le32(&cfg->device_feature_select, VIRTIO_FEATURES_32_63);
     324        uint32_t device_reserved_features = pio_read_le32(&cfg->device_feature);
     325
     326        ddf_msg(LVL_NOTE, "offered features %x, reserved features %x",
     327            device_features, device_reserved_features);
    322328
    323329        if (features != (features & device_features))
     
    325331        features &= device_features;
    326332
     333        if (reserved_features != (reserved_features & device_reserved_features))
     334                return ENOTSUP;
     335        reserved_features &= device_reserved_features;
     336
    327337        /* 4. Write the accepted feature flags */
    328338        pio_write_le32(&cfg->driver_feature_select, VIRTIO_FEATURES_0_31);
    329339        pio_write_le32(&cfg->driver_feature, features);
    330 
    331         ddf_msg(LVL_NOTE, "accepted features %x", features);
     340        pio_write_le32(&cfg->driver_feature_select, VIRTIO_FEATURES_32_63);
     341        pio_write_le32(&cfg->driver_feature, reserved_features);
     342
     343        ddf_msg(LVL_NOTE, "accepted features %x, reserved features %x",
     344            features, reserved_features);
    332345
    333346        /* 5. Set FEATURES_OK */
Note: See TracChangeset for help on using the changeset viewer.