1. Replace nvhost print functions with PVA driver's private
implementation with similar functionalities.
2. Change syncpoint from host managed to client managed so that
syncpoint max value is tracked inside PVA driver. This change is needed
because upstream host1x driver doesn't allow decrement of max value.
3. Various minor changes for adapting to upstream kernel APIs.
Bug 3662478
Change-Id: I16eff6c06c51afe0f274598e1273404924d18684
Signed-off-by: Nan Wang <nanwa@nvidia.com>
Signed-off-by: Abhinaya Agrawal <abhinayaa@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2710684
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Both host1x and nvhost expose APIs that deinitialize the debugfs
and remove debugfs files/directories that were created. At present,
debugfs_remove() is inovked to do this. However,
debugfs_remove_recursive() should instead be used to ensure that
all files within a debugfs are recursively removed before the
directory is removed.
Bug 3662478
Change-Id: Idb7d1458c02f57f6d656a7bfe1df3adf5e0497aa
Signed-off-by: Abhinaya Agrawal <abhinayaa@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2714042
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Omar Nemri <onemri@nvidia.com>
GVS: Gerrit_Virtual_Submit
Some host1x clients, such as PVA, do not have a falcon microprocessor
and currently the host1x-nvhost shim driver assumes that all clients do.
Fix this by moving the falcon initialisation code from the
nvhost_module_init() function and into the
nvhost_flcn_finalize_poweron() function. This aligns with the
implementation in the downstream nvhost driver.
JIRA LS-493
Change-Id: Ic94c3489cefa6fd256f111d8e6c7afb539b5bc8a
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2710548
Reviewed-by: Nan Wang <nanwa@nvidia.com>
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com>
GVS: Gerrit_Virtual_Submit
After unloading the NVDLA driver and then reloading the NVDLA, the
kernel is crashing. The host1x-nvhost driver is missing a call to
class_destroy() in nvhost_client_device_release() which gets called when
removing the DLA driver and this is preventing the DLA driver from
creating the class again when reloading. The crash then occurs because
when the driver is reloaded, creating the class for the DLA driver
fails and then the host1x-nvhost driver incorrectly calls
device_destroy() even though the device has not been created yet. Fix
this by ensuring the class_destroy() is called by
nvhost_client_device_release() and in the necessary error paths and then
remove the call to device_destroy().
Finally, replace request_irq() with devm_request_irq() to ensure that
the interrupts are also released as necessary on removal.
Bug 3641820
Change-Id: Ia328bf63d528e8c31bff1d7b3ac0d5dddc22f1f5
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2710546
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com>
GVS: Gerrit_Virtual_Submit
Sparse reports the following warnings for the host1x-nvhost driver ...
drivers/gpu/host1x-nvhost/falcon.c:65:27: warning: cast to restricted __le32
drivers/gpu/host1x-nvhost/nvhost.c:205:22: warning: symbol
'nvhost_syncpt_get_by_id' was not declared. Should it be static?
drivers/gpu/host1x-nvhost/nvhost.c:768:5: warning: symbol
'nvhost_module_runtime_resume' was not declared. Should it be static?
drivers/gpu/host1x-nvhost/nvhost.c:796:5: warning: symbol
'nvhost_module_runtime_suspend' was not declared. Should it be static?
Fix the above by correcting the cast in falcon_copy_firmware_image(), remove
the function nvhost_syncpt_get_by_id() because it is not used, and make the
nvhost_module_runtime_resume/suspend functions static.
JIRA LS-410
Change-Id: I2c923fccd0b6e53d17198617b90905c6cd06eb5c
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2670180
Reviewed-by: Sachin Nikam <snikam@nvidia.com>
Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com>
GVS: Gerrit_Virtual_Submit
When compiling the host1x-nvhost driver for Linux v5.10 it is currently
failing and the following errors are seen ...
host1x-nvhost/nvhost.c: In function ‘nvhost_intr_do_work’:
nvhost.c:554:2: error: implicit declaration of function ‘kfree’
[-Werror=implicit-function-declaration]
kfree(host1x_cb);
^~~~~
host1x-nvhost/nvhost.c: In function ‘nvhost_intr_register_notifier’:
nvhost.c:579:7: error: implicit declaration of function ‘kzalloc’
[-Werror=implicit-function-declaration]
cb = kzalloc(sizeof(*cb), GFP_KERNEL);
^~~~~~~
Fix this by including slab.h.
JIRA LS-410
Change-Id: I8a56d33933d3e57c04b011e2c6da03d5f2bbc707
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2667882
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: Sachin Nikam <snikam@nvidia.com>
Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com>
GVS: Gerrit_Virtual_Submit
The host1x-nvhost driver by default configures the clock rates for
the host1x client devices to the maximum supported rate because
there is runtime clock scaling support yet. However, currently the
host1x-nvhost driver is only setting the rate for the client's first
clock and not the others. Fix this by correcting the index used when
iterating through the list of clocks.
JIRA LS-410
Change-Id: If410ee25548c0dddecc5b0de9d8b6f4f687fd73c
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2657897
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Add a new host1x-nvhost driver that provides an nvhost interface for
the upstream Linux host1x driver so that downstream drivers that use
this interface can be supported on upstream.
Note that some of the nvhost function prototypes are moved from their
default header file to the include/linux/nvhost.h header file so
simplify building with upstream and downstream kernels.
JIRA LS-410
Change-Id: Icdbb34e879dcd91f6e3dd093b7fb400d1be4d561
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2653097
Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
The host1x-nvhost drivers are available in kernel/nvidia
and to integrate the drivers to the kernel/nvidia-oot,
remove the dummy Makefile.
Bug 4038415
Change-Id: I2179a9e4cc096bf9b8534b3415b595d185785e06
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Upstream Linux kernel commit ff62b8e6588f ("driver core: make struct
class.devnode() take a const *") updated the 'devnode' function pointer
under the class structure to take a const device struct. This breaks
building the Tegra host1x-fence driver with Linux v6.2. Make the
necessary changes to the host1x-fence driver to fix the build breakage.
Bug 3936429
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Change-Id: Ia7abb62424c9532342a16ca7b5e8470e96b91d25
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/2841034
Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>
GVS: Gerrit_Virtual_Submit <buildbot_gerritrpt@nvidia.com>
When building NVGPU and Host1x-Nvhost driver as OOT modules it is not
necessary to copy the host1x-next.h and nvmap_exports.h header files
because these headers files are already present in the source
repository. Fix this by updating the include paths used for building
these drivers and remove the copy of these headers.
Bug 3817518
Change-Id: I0084055a27d3547642c034546a4b7192e8da52e6
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/2785906
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Copy the sources of nvgpu module from kernel/nvgpu to
kernel/nvidia-oot to build nvgpu as OOT module.
Files get copied at build time.
Change-Id: I4053685edd5e3f8cec6e16aefb183a13c6210d0e
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/2718331
GVS: Gerrit_Virtual_Submit
Copy the sources of drm module from kernel/nvidia to
kernel/nvidia-oot to build drm as OOT module.
Files get copied at build time.
Bug 3583645
Change-Id: I1f63c834368f178b36e9935a5bd5d8db77d10c60
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/2718332
GVS: Gerrit_Virtual_Submit
Copy the sources of host1x-nvhost module from kernel/nvidia to
kernel/nvidia-oot to build host1x-nvhost as OOT module.
Files get copied at build time.
Change-Id: I86a8757d9beb3e760fbaef85ccf46974d1bbc303
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/2715739
Reviewed-by: Bitan Biswas <bbiswas@nvidia.com>
GVS: Gerrit_Virtual_Submit
Copy the sources of host1x module from kernel/nvidia to
kernel/nvidia-oot to build host1x as OOT module.
Files get copied at build time.
Change-Id: Iecd491630b8296f1da8f543003b26c2be8f62db5
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/2715738
Reviewed-by: Bitan Biswas <bbiswas@nvidia.com>
GVS: Gerrit_Virtual_Submit