VirtualBox

Changeset 67175 in vbox for trunk/src/VBox/Additions


Ignore:
Timestamp:
May 31, 2017 2:38:02 PM (8 years ago)
Author:
vboxsync
Message:

bugref:8524: Additions/linux: play nicely with distribution-installed Additions
[PATCH 2/3] additions/linux/drm: Remove unnecessary wrapping of guest_pool in a struct
Signed-off-by: Hans de Goede <hdegoede@…>

Location:
trunk/src/VBox/Additions/linux/drm
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/linux/drm/HGSMIBase.h

    r67169 r67175  
    3434#include <linux/genalloc.h>
    3535
    36 typedef struct HGSMIGUESTCOMMANDCONTEXT {
    37         struct gen_pool *guest_pool;
    38 } HGSMIGUESTCOMMANDCONTEXT, *PHGSMIGUESTCOMMANDCONTEXT;
     36typedef struct gen_pool *PHGSMIGUESTCOMMANDCONTEXT;
    3937
    4038void *hgsmi_buffer_alloc(struct gen_pool *guest_pool, size_t size,
     
    4846 */
    4947#define VBoxHGSMIBufferAlloc(ctx, size, ch, ch_info) \
    50         hgsmi_buffer_alloc((ctx)->guest_pool, size, ch, ch_info)
    51 #define VBoxHGSMIBufferFree(ctx, buf)   hgsmi_buffer_free((ctx)->guest_pool, buf)
    52 #define VBoxHGSMIBufferSubmit(ctx, buf) hgsmi_buffer_submit((ctx)->guest_pool, buf)
     48        hgsmi_buffer_alloc(ctx, size, ch, ch_info)
     49#define VBoxHGSMIBufferFree(ctx, buf)   hgsmi_buffer_free(ctx, buf)
     50#define VBoxHGSMIBufferSubmit(ctx, buf) hgsmi_buffer_submit(ctx, buf)
    5351
    5452#endif
  • trunk/src/VBox/Additions/linux/drm/vbox_drv.h

    r66544 r67175  
    9090    u8 __iomem *guest_heap;
    9191    u8 __iomem *vbva_buffers;
    92     HGSMIGUESTCOMMANDCONTEXT submit_info;
     92    struct gen_pool *guest_pool;
    9393    struct VBVABUFFERCONTEXT *vbva_info;
    9494    bool any_pitch;
  • trunk/src/VBox/Additions/linux/drm/vbox_irq.c

    r66544 r67175  
    124124    int rc;
    125125
    126     rc = VBoxHGSMIGetModeHints(&vbox->submit_info, vbox->num_crtcs,
     126    rc = VBoxHGSMIGetModeHints(vbox->guest_pool, vbox->num_crtcs,
    127127                               vbox->last_mode_hints);
    128128    if (RT_FAILURE(rc)) {
     
    150150            vbox_connector->mode_hint.disconnected = disconnected;
    151151            if (vbox_connector->vbox_crtc->disconnected != disconnected) {
    152                 VBoxHGSMIProcessDisplayInfo(&vbox->submit_info, crtc_id,
     152                VBoxHGSMIProcessDisplayInfo(vbox->guest_pool, crtc_id,
    153153                                            0, 0, 0, hints->cx * 4, hints->cx,
    154154                                            hints->cy, 0, flags);
  • trunk/src/VBox/Additions/linux/drm/vbox_main.c

    r67169 r67175  
    6464            vbva = (struct VBVABUFFER *) ((u8 *)vbox->vbva_buffers
    6565                                           + i * VBVA_MIN_BUFFER_SIZE);
    66             if (!VBoxVBVAEnable(&vbox->vbva_info[i], &vbox->submit_info, vbva, i)) {
     66            if (!VBoxVBVAEnable(&vbox->vbva_info[i], vbox->guest_pool, vbva, i)) {
    6767                /* very old host or driver error. */
    6868                printk(KERN_ERR "vboxvideo: VBoxVBVAEnable failed - heap allocation error.\n");
     
    7878
    7979    for (i = 0; i < vbox->num_crtcs; ++i)
    80         VBoxVBVADisable(&vbox->vbva_info[i], &vbox->submit_info, i);
     80        VBoxVBVADisable(&vbox->vbva_info[i], vbox->guest_pool, i);
    8181}
    8282
     
    8888    if (vbox->initial_mode_queried)
    8989        caps |= VBVACAPS_VIDEO_MODE_HINTS;
    90     VBoxHGSMISendCapsInfo(&vbox->submit_info, caps);
     90    VBoxHGSMISendCapsInfo(vbox->guest_pool, caps);
    9191}
    9292
     
    124124                cmd_hdr.h = (uint16_t)rects[i].y2 - rects[i].y1;
    125125                if (VBoxVBVABufferBeginUpdate(&vbox->vbva_info[crtc_id],
    126                                               &vbox->submit_info))
     126                                              vbox->guest_pool))
    127127                {
    128                     VBoxVBVAWrite(&vbox->vbva_info[crtc_id], &vbox->submit_info, &cmd_hdr,
     128                    VBoxVBVAWrite(&vbox->vbva_info[crtc_id], vbox->guest_pool, &cmd_hdr,
    129129                                  sizeof(cmd_hdr));
    130130                    VBoxVBVABufferEndUpdate(&vbox->vbva_info[crtc_id]);
     
    264264    uint32_t have_hints, have_cursor;
    265265
    266     return    RT_SUCCESS(VBoxQueryConfHGSMI(&vbox->submit_info, VBOX_VBVA_CONF32_MODE_HINT_REPORTING, &have_hints))
    267            && RT_SUCCESS(VBoxQueryConfHGSMI(&vbox->submit_info, VBOX_VBVA_CONF32_GUEST_CURSOR_REPORTING, &have_cursor))
     266    return    RT_SUCCESS(VBoxQueryConfHGSMI(vbox->guest_pool, VBOX_VBVA_CONF32_MODE_HINT_REPORTING, &have_hints))
     267           && RT_SUCCESS(VBoxQueryConfHGSMI(vbox->guest_pool, VBOX_VBVA_CONF32_GUEST_CURSOR_REPORTING, &have_cursor))
    268268           && have_hints == VINF_SUCCESS
    269269           && have_cursor == VINF_SUCCESS;
     
    287287
    288288    /* Create guest-heap mem-pool use 2^4 = 16 byte chunks */
    289     vbox->submit_info.guest_pool = gen_pool_create(4, -1);
    290     if (!vbox->submit_info.guest_pool)
     289    vbox->guest_pool = gen_pool_create(4, -1);
     290    if (!vbox->guest_pool)
    291291        return -ENOMEM;
    292292
    293     ret = gen_pool_add_virt(vbox->submit_info.guest_pool,
     293    ret = gen_pool_add_virt(vbox->guest_pool,
    294294                            (unsigned long)vbox->guest_heap,
    295295                            GUEST_HEAP_OFFSET(vbox),
     
    301301    vbox->available_vram_size = GUEST_HEAP_OFFSET(vbox);
    302302    /* Linux drm represents monitors as a 32-bit array. */
    303     vbox->num_crtcs = min(VBoxHGSMIGetMonitorCount(&vbox->submit_info),
     303    vbox->num_crtcs = min(VBoxHGSMIGetMonitorCount(vbox->guest_pool),
    304304                          (uint32_t)VBOX_MAX_SCREENS);
    305305    if (!have_hgsmi_mode_hints(vbox))
     
    385385    vbox_hw_fini(vbox);
    386386    vbox_mm_fini(vbox);
    387     if (vbox->submit_info.guest_pool)
    388         gen_pool_destroy(vbox->submit_info.guest_pool);
     387    if (vbox->guest_pool)
     388        gen_pool_destroy(vbox->guest_pool);
    389389    if (vbox->guest_heap)
    390390        pci_iounmap(dev->pdev, vbox->guest_heap);
  • trunk/src/VBox/Additions/linux/drm/vbox_mode.c

    r66544 r67175  
    101101    flags |= (crtc->enabled && !vbox_crtc->blanked ? 0 : VBVA_SCREEN_F_BLANK);
    102102    flags |= (vbox_crtc->disconnected ? VBVA_SCREEN_F_DISABLED : 0);
    103     VBoxHGSMIProcessDisplayInfo(&vbox->submit_info, vbox_crtc->crtc_id,
     103    VBoxHGSMIProcessDisplayInfo(vbox->guest_pool, vbox_crtc->crtc_id,
    104104                                x_offset, y_offset,
    105105                                crtc->x * bpp / 8 + crtc->y * pitch,
     
    122122     * the first view be the managed memory plus the first command buffer, the
    123123     * second the same plus the second buffer and so on. */
    124     p = VBoxHGSMIBufferAlloc(&vbox->submit_info, sizeof(VBVAINFOVIEW), HGSMI_CH_VBVA,
     124    p = VBoxHGSMIBufferAlloc(vbox->guest_pool, sizeof(VBVAINFOVIEW), HGSMI_CH_VBVA,
    125125                             VBVA_INFO_VIEW);
    126126    if (p)
     
    132132                             + vbox_crtc->crtc_id * VBVA_MIN_BUFFER_SIZE;
    133133        pInfo->u32MaxScreenSize = vbox->available_vram_size - vbox_crtc->fb_offset;
    134         VBoxHGSMIBufferSubmit(&vbox->submit_info, p);
    135         VBoxHGSMIBufferFree(&vbox->submit_info, p);
     134        VBoxHGSMIBufferSubmit(vbox->guest_pool, p);
     135        VBoxHGSMIBufferFree(vbox->guest_pool, p);
    136136    }
    137137    else
     
    297297    if (!rc)
    298298        vbox_do_modeset(crtc, mode);
    299     VBoxHGSMIUpdateInputMapping(&vbox->submit_info, 0, 0,
     299    VBoxHGSMIUpdateInputMapping(vbox->guest_pool, 0, 0,
    300300                                vbox->input_mapping_width,
    301301                                vbox->input_mapping_height);
     
    536536     * We need to report the flags location before reporting the IRQ
    537537     * capability. */
    538     VBoxHGSMIReportFlagsLocation(&vbox->submit_info, GUEST_HEAP_OFFSET(vbox) +
     538    VBoxHGSMIReportFlagsLocation(vbox->guest_pool, GUEST_HEAP_OFFSET(vbox) +
    539539                                                     HOST_FLAGS_OFFSET);
    540540    if (vbox_connector->vbox_crtc->crtc_id == 0)
     
    729729    /* Re-set this regularly as in 5.0.20 and earlier the information was lost
    730730     * on save and restore. */
    731     VBoxHGSMIUpdateInputMapping(&vbox->submit_info, 0, 0,
     731    VBoxHGSMIUpdateInputMapping(vbox->guest_pool, 0, 0,
    732732                                vbox->input_mapping_width,
    733733                                vbox->input_mapping_height);
     
    742742                cursor_enabled = true;
    743743        if (!cursor_enabled)
    744             VBoxHGSMIUpdatePointerShape(&vbox->submit_info, 0, 0, 0, 0, 0, NULL, 0);
     744            VBoxHGSMIUpdatePointerShape(vbox->guest_pool, 0, 0, 0, 0, 0, NULL, 0);
    745745        return 0;
    746746    }
     
    749749        || width == 0 || height == 0)
    750750        return -EINVAL;
    751     rc = VBoxQueryConfHGSMI(&vbox->submit_info,
     751    rc = VBoxQueryConfHGSMI(vbox->guest_pool,
    752752                            VBOX_VBVA_CONF32_CURSOR_CAPABILITIES, &caps);
    753753    ret = rc == VINF_SUCCESS ? 0 : rc == VERR_NO_MEMORY ? -ENOMEM : -EINVAL;
     
    790790                                      | VBOX_MOUSE_POINTER_ALPHA;
    791791                    copy_cursor_image(src, dst, width, height, mask_size);
    792                     rc = VBoxHGSMIUpdatePointerShape(&vbox->submit_info, flags,
     792                    rc = VBoxHGSMIUpdatePointerShape(vbox->guest_pool, flags,
    793793                                                     vbox->cursor_hot_x,
    794794                                                     vbox->cursor_hot_y,
     
    835835    if (x + crtc_x < 0 || y + crtc_y < 0 || vbox->cursor_data_size == 0)
    836836        return 0;
    837     rc = VBoxHGSMICursorPosition(&vbox->submit_info, true, x + crtc_x,
     837    rc = VBoxHGSMICursorPosition(vbox->guest_pool, true, x + crtc_x,
    838838                                 y + crtc_y, &host_x, &host_y);
    839839    /* Work around a bug after save and restore in 5.0.20 and earlier. */
     
    850850    vbox->cursor_hot_x = hot_x;
    851851    vbox->cursor_hot_y = hot_y;
    852     rc = VBoxHGSMIUpdatePointerShape(&vbox->submit_info, flags, hot_x, hot_y,
     852    rc = VBoxHGSMIUpdatePointerShape(vbox->guest_pool, flags, hot_x, hot_y,
    853853                                     vbox->cursor_width, vbox->cursor_height,
    854854                                     vbox->cursor_data,
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