Commit 1e209117 authored by Dave Airlie's avatar Dave Airlie

qxl: add ring prep code for s/r

This prepare the ring code for s/r additions, the release ring will need
reinitialising.
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent c9fdda2a
...@@ -49,6 +49,11 @@ void qxl_ring_free(struct qxl_ring *ring) ...@@ -49,6 +49,11 @@ void qxl_ring_free(struct qxl_ring *ring)
kfree(ring); kfree(ring);
} }
void qxl_ring_init_hdr(struct qxl_ring *ring)
{
ring->ring->header.notify_on_prod = ring->n_elements;
}
struct qxl_ring * struct qxl_ring *
qxl_ring_create(struct qxl_ring_header *header, qxl_ring_create(struct qxl_ring_header *header,
int element_size, int element_size,
...@@ -69,7 +74,7 @@ qxl_ring_create(struct qxl_ring_header *header, ...@@ -69,7 +74,7 @@ qxl_ring_create(struct qxl_ring_header *header,
ring->prod_notify = prod_notify; ring->prod_notify = prod_notify;
ring->push_event = push_event; ring->push_event = push_event;
if (set_prod_notify) if (set_prod_notify)
header->notify_on_prod = ring->n_elements; qxl_ring_init_hdr(ring);
spin_lock_init(&ring->lock); spin_lock_init(&ring->lock);
return ring; return ring;
} }
...@@ -87,7 +92,7 @@ static int qxl_check_header(struct qxl_ring *ring) ...@@ -87,7 +92,7 @@ static int qxl_check_header(struct qxl_ring *ring)
return ret; return ret;
} }
static int qxl_check_idle(struct qxl_ring *ring) int qxl_check_idle(struct qxl_ring *ring)
{ {
int ret; int ret;
struct qxl_ring_header *header = &(ring->ring->header); struct qxl_ring_header *header = &(ring->ring->header);
......
...@@ -340,6 +340,8 @@ struct qxl_ring *qxl_ring_create(struct qxl_ring_header *header, ...@@ -340,6 +340,8 @@ struct qxl_ring *qxl_ring_create(struct qxl_ring_header *header,
bool set_prod_notify, bool set_prod_notify,
wait_queue_head_t *push_event); wait_queue_head_t *push_event);
void qxl_ring_free(struct qxl_ring *ring); void qxl_ring_free(struct qxl_ring *ring);
void qxl_ring_init_hdr(struct qxl_ring *ring);
int qxl_check_idle(struct qxl_ring *ring);
static inline void * static inline void *
qxl_fb_virtual_address(struct qxl_device *qdev, unsigned long physical) qxl_fb_virtual_address(struct qxl_device *qdev, unsigned long physical)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment