Hi Christian, How does this work with 48-bit addresses that the 3D engine uses? It can't set 0xffff8000 for the high bits. It's trimmed to 0x8000. Thanks, Marek On Sun, Jan 7, 2018 at 10:11 AM, Christian König <ckoenig.leichtzumerken at gmail.com> wrote: > Retire the low range on Vega10 this frees up everything below 0xffff800000000000 for HMM. > > v2: keep the 32bit range working. > > Signed-off-by: Christian König <christian.koenig at amd.com> > --- > amdgpu/amdgpu_device.c | 18 ++++++++++++++---- > 1 file changed, 14 insertions(+), 4 deletions(-) > > diff --git a/amdgpu/amdgpu_device.c b/amdgpu/amdgpu_device.c > index d7077184..a0d01727 100644 > --- a/amdgpu/amdgpu_device.c > +++ b/amdgpu/amdgpu_device.c > @@ -264,13 +264,23 @@ int amdgpu_device_initialize(int fd, > goto cleanup; > } > > - start = dev->dev_info.virtual_address_offset; > - max = MIN2(dev->dev_info.virtual_address_max, 0x100000000ULL); > + if (dev->dev_info.high_va_offset && dev->dev_info.high_va_max) { > + start = dev->dev_info.high_va_offset; > + max = dev->dev_info.high_va_max; > + } else { > + start = dev->dev_info.virtual_address_offset; > + max = dev->dev_info.virtual_address_max; > + } > + > + max = MIN2(max, (start & ~0xffffffff) + 0x100000000ULL); > amdgpu_vamgr_init(&dev->vamgr_32, start, max, > dev->dev_info.virtual_address_alignment); > > - start = MAX2(dev->dev_info.virtual_address_offset, 0x100000000ULL); > - max = MAX2(dev->dev_info.virtual_address_max, 0x100000000ULL); > + start = max; > + if (dev->dev_info.high_va_offset && dev->dev_info.high_va_max) > + max = dev->dev_info.high_va_max; > + else > + max = dev->dev_info.virtual_address_max; > amdgpu_vamgr_init(&dev->vamgr, start, max, > dev->dev_info.virtual_address_alignment); > > -- > 2.11.0 > > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx