diff options
author | Adam Borowski <kilobyte@angband.pl> | 2017-04-02 07:03:28 +0200 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2017-04-06 14:53:50 +1000 |
commit | 99a97a8ba9881fc47901ff36b057e5cd0bf06af0 (patch) | |
tree | 2228a0ea6c09c602ee67777385afe3b517f75850 | |
parent | b2c4ef70790cee37f243af2b303727394edae1d5 (diff) | |
download | linux-99a97a8ba9881fc47901ff36b057e5cd0bf06af0.tar.bz2 |
drm/nouveau/gpio: enable interrupts on cards with 32 gpio lines
The code attempts to enable them, but hits an undefined behaviour by
shifting by the entire register's width:
int lines = 32;
u32 mask = (1 << lines) - 1; // 00000000 on x86
u32 mask = (1 << lines) - 1; // ffffffff on arm (32)
u32 mask = (1 << lines) - 1; // 00000000 on arm64
u32 mask = (1ULL << lines) - 1; // ffffffff everywhere
Signed-off-by: Adam Borowski <kilobyte@angband.pl>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/subdev/gpio/base.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gpio/base.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gpio/base.c index 77c649723ad7..4a57defc99b3 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gpio/base.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gpio/base.c @@ -164,7 +164,7 @@ static int nvkm_gpio_fini(struct nvkm_subdev *subdev, bool suspend) { struct nvkm_gpio *gpio = nvkm_gpio(subdev); - u32 mask = (1 << gpio->func->lines) - 1; + u32 mask = (1ULL << gpio->func->lines) - 1; gpio->func->intr_mask(gpio, NVKM_GPIO_TOGGLED, mask, 0); gpio->func->intr_stat(gpio, &mask, &mask); |