| .. | .. |
|---|
| 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, |
|---|