staging: Android: vsoc: Create wc kernel mapping for region shm.

Map the region shm as write-combining instead of uncachable.

Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Arve Hjønnevåg <arve@android.com>
Cc: Todd Kjos <tkjos@android.com>
Cc: Martijn Coenen <maco@android.com>
Cc: Greg Hartman <ghartman@google.com>
Cc: devel@driverdev.osuosl.org
Cc: kernel-team@android.com
Signed-off-by: Alistair Strachan <astrachan@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Alistair Strachan 2018-05-02 21:45:21 -07:00 committed by Greg Kroah-Hartman
parent 03420865e1
commit 085f88710f
2 changed files with 1 additions and 4 deletions

View File

@ -17,7 +17,6 @@ vsoc.c, uapi/vsoc_shm.h
waiting threads. We should eventually use multiple queues and select the waiting threads. We should eventually use multiple queues and select the
queue based on the region. queue based on the region.
- Add debugfs support for examining the permissions of regions. - Add debugfs support for examining the permissions of regions.
- Use ioremap_wc instead of ioremap_nocache.
- Remove VSOC_WAIT_FOR_INCOMING_INTERRUPT ioctl. This functionality has been - Remove VSOC_WAIT_FOR_INCOMING_INTERRUPT ioctl. This functionality has been
superseded by the futex and is there for legacy reasons. superseded by the futex and is there for legacy reasons.

View File

@ -802,9 +802,7 @@ static int vsoc_probe_device(struct pci_dev *pdev,
dev_info(&pdev->dev, "shared memory @ DMA %p size=0x%zx\n", dev_info(&pdev->dev, "shared memory @ DMA %p size=0x%zx\n",
(void *)vsoc_dev.shm_phys_start, vsoc_dev.shm_size); (void *)vsoc_dev.shm_phys_start, vsoc_dev.shm_size);
/* TODO(ghartman): ioremap_wc should work here */ vsoc_dev.kernel_mapped_shm = pci_iomap_wc(pdev, SHARED_MEMORY_BAR, 0);
vsoc_dev.kernel_mapped_shm = ioremap_nocache(
vsoc_dev.shm_phys_start, vsoc_dev.shm_size);
if (!vsoc_dev.kernel_mapped_shm) { if (!vsoc_dev.kernel_mapped_shm) {
dev_err(&vsoc_dev.dev->dev, "cannot iomap region\n"); dev_err(&vsoc_dev.dev->dev, "cannot iomap region\n");
vsoc_remove_device(pdev); vsoc_remove_device(pdev);