.. | .. |
---|
288 | 288 | return nvkm_memory_addr(nv50_instobj(memory)->ram); |
---|
289 | 289 | } |
---|
290 | 290 | |
---|
| 291 | +static u64 |
---|
| 292 | +nv50_instobj_bar2(struct nvkm_memory *memory) |
---|
| 293 | +{ |
---|
| 294 | + struct nv50_instobj *iobj = nv50_instobj(memory); |
---|
| 295 | + u64 addr = ~0ULL; |
---|
| 296 | + if (nv50_instobj_acquire(&iobj->base.memory)) { |
---|
| 297 | + iobj->lru.next = NULL; /* Exclude from eviction. */ |
---|
| 298 | + addr = iobj->bar->addr; |
---|
| 299 | + } |
---|
| 300 | + nv50_instobj_release(&iobj->base.memory); |
---|
| 301 | + return addr; |
---|
| 302 | +} |
---|
| 303 | + |
---|
291 | 304 | static enum nvkm_memory_target |
---|
292 | 305 | nv50_instobj_target(struct nvkm_memory *memory) |
---|
293 | 306 | { |
---|
.. | .. |
---|
325 | 338 | nv50_instobj_func = { |
---|
326 | 339 | .dtor = nv50_instobj_dtor, |
---|
327 | 340 | .target = nv50_instobj_target, |
---|
328 | | - .size = nv50_instobj_size, |
---|
| 341 | + .bar2 = nv50_instobj_bar2, |
---|
329 | 342 | .addr = nv50_instobj_addr, |
---|
| 343 | + .size = nv50_instobj_size, |
---|
330 | 344 | .boot = nv50_instobj_boot, |
---|
331 | 345 | .acquire = nv50_instobj_acquire, |
---|
332 | 346 | .release = nv50_instobj_release, |
---|