| .. | .. |
|---|
| 124 | 124 | wrong (check the bitmaps are sent correctly |
|---|
| 125 | 125 | first) */ |
|---|
| 126 | 126 | |
|---|
| 127 | | - ptr = qxl_bo_kmap_atomic_page(qdev, chunk_bo, 0); |
|---|
| 127 | + ptr = qxl_bo_kmap_local_page(qdev, chunk_bo, 0); |
|---|
| 128 | 128 | chunk = ptr; |
|---|
| 129 | 129 | chunk->data_size = height * chunk_stride; |
|---|
| 130 | 130 | chunk->prev_chunk = 0; |
|---|
| 131 | 131 | chunk->next_chunk = 0; |
|---|
| 132 | | - qxl_bo_kunmap_atomic_page(qdev, chunk_bo, ptr); |
|---|
| 132 | + qxl_bo_kunmap_local_page(qdev, chunk_bo, ptr); |
|---|
| 133 | 133 | |
|---|
| 134 | 134 | { |
|---|
| 135 | 135 | void *k_data, *i_data; |
|---|
| 136 | 136 | int remain; |
|---|
| 137 | 137 | int page; |
|---|
| 138 | 138 | int size; |
|---|
| 139 | + |
|---|
| 139 | 140 | if (stride == linesize && chunk_stride == stride) { |
|---|
| 140 | 141 | remain = linesize * height; |
|---|
| 141 | 142 | page = 0; |
|---|
| 142 | 143 | i_data = (void *)data; |
|---|
| 143 | 144 | |
|---|
| 144 | 145 | while (remain > 0) { |
|---|
| 145 | | - ptr = qxl_bo_kmap_atomic_page(qdev, chunk_bo, page << PAGE_SHIFT); |
|---|
| 146 | + ptr = qxl_bo_kmap_local_page(qdev, chunk_bo, page << PAGE_SHIFT); |
|---|
| 146 | 147 | |
|---|
| 147 | 148 | if (page == 0) { |
|---|
| 148 | 149 | chunk = ptr; |
|---|
| .. | .. |
|---|
| 156 | 157 | |
|---|
| 157 | 158 | memcpy(k_data, i_data, size); |
|---|
| 158 | 159 | |
|---|
| 159 | | - qxl_bo_kunmap_atomic_page(qdev, chunk_bo, ptr); |
|---|
| 160 | + qxl_bo_kunmap_local_page(qdev, chunk_bo, ptr); |
|---|
| 160 | 161 | i_data += size; |
|---|
| 161 | 162 | remain -= size; |
|---|
| 162 | 163 | page++; |
|---|
| 163 | 164 | } |
|---|
| 164 | 165 | } else { |
|---|
| 165 | | - unsigned page_base, page_offset, out_offset; |
|---|
| 166 | + unsigned int page_base, page_offset, out_offset; |
|---|
| 167 | + |
|---|
| 166 | 168 | for (i = 0 ; i < height ; ++i) { |
|---|
| 167 | 169 | i_data = (void *)data + i * stride; |
|---|
| 168 | 170 | remain = linesize; |
|---|
| .. | .. |
|---|
| 173 | 175 | page_offset = offset_in_page(out_offset); |
|---|
| 174 | 176 | size = min((int)(PAGE_SIZE - page_offset), remain); |
|---|
| 175 | 177 | |
|---|
| 176 | | - ptr = qxl_bo_kmap_atomic_page(qdev, chunk_bo, page_base); |
|---|
| 178 | + ptr = qxl_bo_kmap_local_page(qdev, chunk_bo, page_base); |
|---|
| 177 | 179 | k_data = ptr + page_offset; |
|---|
| 178 | 180 | memcpy(k_data, i_data, size); |
|---|
| 179 | | - qxl_bo_kunmap_atomic_page(qdev, chunk_bo, ptr); |
|---|
| 181 | + qxl_bo_kunmap_local_page(qdev, chunk_bo, ptr); |
|---|
| 180 | 182 | remain -= size; |
|---|
| 181 | 183 | i_data += size; |
|---|
| 182 | 184 | out_offset += size; |
|---|
| .. | .. |
|---|
| 187 | 189 | qxl_bo_kunmap(chunk_bo); |
|---|
| 188 | 190 | |
|---|
| 189 | 191 | image_bo = dimage->bo; |
|---|
| 190 | | - ptr = qxl_bo_kmap_atomic_page(qdev, image_bo, 0); |
|---|
| 192 | + ptr = qxl_bo_kmap_local_page(qdev, image_bo, 0); |
|---|
| 191 | 193 | image = ptr; |
|---|
| 192 | 194 | |
|---|
| 193 | 195 | image->descriptor.id = 0; |
|---|
| .. | .. |
|---|
| 210 | 212 | break; |
|---|
| 211 | 213 | default: |
|---|
| 212 | 214 | DRM_ERROR("unsupported image bit depth\n"); |
|---|
| 213 | | - qxl_bo_kunmap_atomic_page(qdev, image_bo, ptr); |
|---|
| 215 | + qxl_bo_kunmap_local_page(qdev, image_bo, ptr); |
|---|
| 214 | 216 | return -EINVAL; |
|---|
| 215 | 217 | } |
|---|
| 216 | 218 | image->u.bitmap.flags = QXL_BITMAP_TOP_DOWN; |
|---|
| .. | .. |
|---|
| 220 | 222 | image->u.bitmap.palette = 0; |
|---|
| 221 | 223 | image->u.bitmap.data = qxl_bo_physical_address(qdev, chunk_bo, 0); |
|---|
| 222 | 224 | |
|---|
| 223 | | - qxl_bo_kunmap_atomic_page(qdev, image_bo, ptr); |
|---|
| 225 | + qxl_bo_kunmap_local_page(qdev, image_bo, ptr); |
|---|
| 224 | 226 | |
|---|
| 225 | 227 | return 0; |
|---|
| 226 | 228 | } |
|---|