From: kernel test robot <lkp@intel.com>
To: Matthew Brost <matthew.brost@intel.com>
Cc: oe-kbuild-all@lists.linux.dev
Subject: Re: [PATCH v2 2/4] drm/xe: Update xe_ttm_access_memory to use GPU for non-visible access
Date: Fri, 4 Apr 2025 11:46:50 +0800 [thread overview]
Message-ID: <202504041115.bbGTufbJ-lkp@intel.com> (raw)
In-Reply-To: <20250403202705.18488-3-matthew.brost@intel.com>
Hi Matthew,
kernel test robot noticed the following build errors:
[auto build test ERROR on drm-xe/drm-xe-next]
[also build test ERROR on next-20250403]
[cannot apply to drm-exynos/exynos-drm-next linus/master drm/drm-next drm-intel/for-linux-next drm-intel/for-linux-next-fixes drm-misc/drm-misc-next drm-tip/drm-tip v6.14]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Matthew-Brost/drm-xe-Add-devcoredump-chunking/20250404-042700
base: https://gitlab.freedesktop.org/drm/xe/kernel.git drm-xe-next
patch link: https://lore.kernel.org/r/20250403202705.18488-3-matthew.brost%40intel.com
patch subject: [PATCH v2 2/4] drm/xe: Update xe_ttm_access_memory to use GPU for non-visible access
config: alpha-allyesconfig (https://download.01.org/0day-ci/archive/20250404/202504041115.bbGTufbJ-lkp@intel.com/config)
compiler: alpha-linux-gcc (GCC) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250404/202504041115.bbGTufbJ-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202504041115.bbGTufbJ-lkp@intel.com/
All errors (new ones prefixed by >>):
drivers/gpu/drm/xe/xe_migrate.c: In function 'xe_migrate_access_memory':
>> drivers/gpu/drm/xe/xe_migrate.c:1819:19: error: 'XE_CACHELINE_MASK' undeclared (first use in this function)
1819 | if (len & XE_CACHELINE_MASK ||
| ^~~~~~~~~~~~~~~~~
drivers/gpu/drm/xe/xe_migrate.c:1819:19: note: each undeclared identifier is reported only once for each function it appears in
>> drivers/gpu/drm/xe/xe_migrate.c:1828:35: error: 'XE_CACHELINE_BYTES' undeclared (first use in this function); did you mean 'L1_CACHE_BYTES'?
1828 | u8 bounce[XE_CACHELINE_BYTES];
| ^~~~~~~~~~~~~~~~~~
| L1_CACHE_BYTES
drivers/gpu/drm/xe/xe_migrate.c:1828:28: warning: unused variable 'bounce' [-Wunused-variable]
1828 | u8 bounce[XE_CACHELINE_BYTES];
| ^~~~~~
>> drivers/gpu/drm/xe/xe_migrate.c:1888:27: error: implicit declaration of function 'xe_migrate_vram'; did you mean 'xe_migrate_to_vram'? [-Wimplicit-function-declaration]
1888 | __fence = xe_migrate_vram(m, current_bytes,
| ^~~~~~~~~~~~~~~
| xe_migrate_to_vram
>> drivers/gpu/drm/xe/xe_migrate.c:1892:43: error: 'XE_MIGRATE_COPY_TO_VRAM' undeclared (first use in this function)
1892 | XE_MIGRATE_COPY_TO_VRAM :
| ^~~~~~~~~~~~~~~~~~~~~~~
>> drivers/gpu/drm/xe/xe_migrate.c:1893:43: error: 'XE_MIGRATE_COPY_TO_SRAM' undeclared (first use in this function)
1893 | XE_MIGRATE_COPY_TO_SRAM);
| ^~~~~~~~~~~~~~~~~~~~~~~
vim +/XE_CACHELINE_MASK +1819 drivers/gpu/drm/xe/xe_migrate.c
1785
1786 /**
1787 * xe_migrate_access_memory - Access memory of a BO via GPU
1788 *
1789 * @m: The migration context.
1790 * @bo: buffer object
1791 * @offset: access offset into buffer object
1792 * @buf: pointer to caller memory to read into or write from
1793 * @len: length of access
1794 * @write: write access
1795 *
1796 * Access memory of a BO via GPU either reading in or writing from a passed in
1797 * pointer. Pointer is dma mapped for GPU access and GPU commands are issued to
1798 * read to or write from pointer.
1799 *
1800 * Returns:
1801 * 0 if successful, negative error code on failure.
1802 */
1803 int xe_migrate_access_memory(struct xe_migrate *m, struct xe_bo *bo,
1804 unsigned long offset, void *buf, int len,
1805 int write)
1806 {
1807 struct xe_tile *tile = m->tile;
1808 struct xe_device *xe = tile_to_xe(tile);
1809 struct xe_res_cursor cursor;
1810 struct dma_fence *fence = NULL;
1811 dma_addr_t *dma_addr;
1812 unsigned long page_offset = (unsigned long)buf & ~PAGE_MASK;
1813 int bytes_left = len, current_page = 0;
1814 void *orig_buf = buf;
1815
1816 xe_bo_assert_held(bo);
1817
1818 /* Use bounce buffer for small access and unaligned access */
> 1819 if (len & XE_CACHELINE_MASK ||
1820 ((uintptr_t)buf | offset) & XE_CACHELINE_MASK) {
1821 int buf_offset = 0;
1822
1823 /*
1824 * Less than ideal for large unaligned access but this should be
1825 * fairly rare, can fixup if this becomes common.
1826 */
1827 do {
> 1828 u8 bounce[XE_CACHELINE_BYTES];
1829 void *ptr = (void *)bounce;
1830 int err;
1831 int copy_bytes = min_t(int, bytes_left,
1832 XE_CACHELINE_BYTES -
1833 (offset & XE_CACHELINE_MASK));
1834 int ptr_offset = offset & XE_CACHELINE_MASK;
1835
1836 err = xe_migrate_access_memory(m, bo,
1837 offset &
1838 ~XE_CACHELINE_MASK,
1839 (void *)ptr,
1840 sizeof(bounce), 0);
1841 if (err)
1842 return err;
1843
1844 if (!write) {
1845 memcpy(buf + buf_offset, ptr + ptr_offset,
1846 copy_bytes);
1847 goto next;
1848 }
1849
1850 memcpy(ptr + ptr_offset, buf + buf_offset, copy_bytes);
1851 err = xe_migrate_access_memory(m, bo,
1852 offset & ~XE_CACHELINE_MASK,
1853 (void *)ptr,
1854 sizeof(bounce), 0);
1855 if (err)
1856 return err;
1857
1858 next:
1859 bytes_left -= copy_bytes;
1860 buf_offset += copy_bytes;
1861 offset += copy_bytes;
1862 } while (bytes_left);
1863
1864 return 0;
1865 }
1866
1867 dma_addr = xe_migrate_dma_map(xe, buf, len + page_offset, write);
1868 if (IS_ERR(dma_addr))
1869 return PTR_ERR(dma_addr);
1870
1871 xe_res_first(bo->ttm.resource, offset, bo->size - offset, &cursor);
1872
1873 do {
1874 struct dma_fence *__fence;
1875 u64 vram_addr = vram_region_gpu_offset(bo->ttm.resource) +
1876 cursor.start;
1877 int current_bytes;
1878
1879 if (cursor.size > MAX_PREEMPTDISABLE_TRANSFER)
1880 current_bytes = min_t(int, bytes_left,
1881 MAX_PREEMPTDISABLE_TRANSFER);
1882 else
1883 current_bytes = min_t(int, bytes_left, cursor.size);
1884
1885 if (fence)
1886 dma_fence_put(fence);
1887
> 1888 __fence = xe_migrate_vram(m, current_bytes,
1889 (unsigned long)buf & ~PAGE_MASK,
1890 dma_addr + current_page,
1891 vram_addr, write ?
> 1892 XE_MIGRATE_COPY_TO_VRAM :
> 1893 XE_MIGRATE_COPY_TO_SRAM);
1894 if (IS_ERR(__fence)) {
1895 if (fence)
1896 dma_fence_wait(fence, false);
1897 fence = __fence;
1898 goto out_err;
1899 }
1900 fence = __fence;
1901
1902 buf += current_bytes;
1903 offset += current_bytes;
1904 current_page = (int)(buf - orig_buf) / PAGE_SIZE;
1905 bytes_left -= current_bytes;
1906 if (bytes_left)
1907 xe_res_next(&cursor, current_bytes);
1908 } while (bytes_left);
1909
1910 dma_fence_wait(fence, false);
1911 dma_fence_put(fence);
1912 xe_migrate_dma_unmap(xe, dma_addr, len + page_offset, write);
1913
1914 return 0;
1915
1916 out_err:
1917 xe_migrate_dma_unmap(xe, dma_addr, len + page_offset, write);
1918 return PTR_ERR(fence);
1919 }
1920
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next prev parent reply other threads:[~2025-04-04 3:47 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-03 20:27 [PATCH v2 0/4] Large devcoredump file support Matthew Brost
2025-04-03 20:27 ` [PATCH v2 1/4] drm/xe: Add devcoredump chunking Matthew Brost
2025-04-03 21:28 ` Cavitt, Jonathan
2025-04-03 21:39 ` John Harrison
2025-04-03 22:32 ` Matthew Brost
2025-04-03 22:41 ` John Harrison
2025-04-04 2:33 ` Matthew Brost
2025-04-03 20:27 ` [PATCH v2 2/4] drm/xe: Update xe_ttm_access_memory to use GPU for non-visible access Matthew Brost
2025-04-03 21:28 ` Cavitt, Jonathan
2025-04-10 3:58 ` Matthew Brost
2025-04-04 1:03 ` kernel test robot
2025-04-04 3:36 ` kernel test robot
2025-04-04 3:46 ` kernel test robot [this message]
2025-04-03 20:27 ` [PATCH v2 3/4] drm/print: Add drm_printer_is_full Matthew Brost
2025-04-03 21:28 ` Cavitt, Jonathan
2025-04-03 20:27 ` [PATCH v2 4/4] drm/xe: Abort printing coredump in VM printer output if full Matthew Brost
2025-04-03 21:28 ` Cavitt, Jonathan
2025-04-04 3:31 ` ✓ CI.Patch_applied: success for Large devcoredump file support (rev2) Patchwork
2025-04-04 3:32 ` ✓ CI.checkpatch: " Patchwork
2025-04-04 3:32 ` ✗ CI.KUnit: failure " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202504041115.bbGTufbJ-lkp@intel.com \
--to=lkp@intel.com \
--cc=matthew.brost@intel.com \
--cc=oe-kbuild-all@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.