[PATCH 1/5] drm: Remove PageReserved manipulation from drm_pci_alloc
Sam Ravnborg
sam at ravnborg.org
Sun Feb 2 18:35:45 UTC 2020
Hi Chris.
On Sun, Feb 02, 2020 at 05:16:31PM +0000, Chris Wilson wrote:
> drm_pci_alloc/drm_pci_free are very thin wrappers around the core dma
> facilities, and we have no special reason within the drm layer to behave
> differently. In particular, since
>
> commit de09d31dd38a50fdce106c15abd68432eebbd014
> Author: Kirill A. Shutemov <kirill.shutemov at linux.intel.com>
> Date: Fri Jan 15 16:51:42 2016 -0800
>
> page-flags: define PG_reserved behavior on compound pages
>
> As far as I can see there's no users of PG_reserved on compound pages.
> Let's use PF_NO_COMPOUND here.
>
> it has been illegal to combine GFP_COMP with SetPageReserved, so lets
> stop doing both and leave the dma layer to its own devices.
>
> Reported-by: Taketo Kabe
> Closes: https://gitlab.freedesktop.org/drm/intel/issues/1027
> Fixes: de09d31dd38a ("page-flags: define PG_reserved behavior on compound pages")
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: <stable at vger.kernel.org> # v4.5+
> ---
Out of curiosity I added the full series and tried to build it.
I did not really take the time to review the patches.
It failed with alpha allmodconfig like this:
(On top of drm-misc-next as of yesterday)
/home/sam/drm/linux.git/drivers/gpu/drm/r128/ati_pcigart.c: In function ‘drm_ati_alloc_pcigart_table’:
/home/sam/drm/linux.git/drivers/gpu/drm/r128/ati_pcigart.c:50:7: error: expected expression before ‘^’ token
50 | ^gart_info->bus_addr,
| ^
/home/sam/drm/linux.git/drivers/gpu/drm/r128/ati_pcigart.c:48:3: error: too few arguments to function ‘dma_alloc_coherent’
48 | dma_alloc_coherent(&dev->pdev->dev,
| ^~~~~~~~~~~~~~~~~~
In file included from /home/sam/drm/linux.git/arch/alpha/include/asm/pci.h:8,
from /home/sam/drm/linux.git/include/linux/pci.h:1777,
from /home/sam/drm/linux.git/include/drm/drm_pci.h:35,
from /home/sam/drm/linux.git/drivers/gpu/drm/r128/ati_pcigart.c:37:
/home/sam/drm/linux.git/include/linux/dma-mapping.h:641:21: note: declared here
641 | static inline void *dma_alloc_coherent(struct device *dev, size_t size,
| ^~~~~~~~~~~~~~~~~~
/home/sam/drm/linux.git/drivers/gpu/drm/r128/ati_pcigart.c: At top level:
/home/sam/drm/linux.git/drivers/gpu/drm/r128/ati_pcigart.c:101:2: error: expected identifier or ‘(’ before ‘return’
101 | return 1;
| ^~~~~~
/home/sam/drm/linux.git/drivers/gpu/drm/r128/ati_pcigart.c:102:1: error: expected identifier or ‘(’ before ‘}’ token
102 | }
| ^
/home/sam/drm/linux.git/drivers/gpu/drm/r128/ati_pcigart.c: In function ‘drm_ati_pcigart_init’:
/home/sam/drm/linux.git/drivers/gpu/drm/r128/ati_pcigart.c:168:13: warning: assignment to ‘u32 *’ {aka ‘unsigned int *’} from ‘unsigned int’ makes pointer from integer without a cast [-Wint-conversion]
168 | page_base = (u32) entry->busaddr[i];
| ^
/home/sam/drm/linux.git/drivers/gpu/drm/r128/ati_pcigart.c:176:21: error: invalid operands to binary | (have ‘u32 *’ {aka ‘unsigned int *’} and ‘int’)
176 | val = page_base | 0xc;
| ^
/home/sam/drm/linux.git/drivers/gpu/drm/r128/ati_pcigart.c:179:22: error: invalid operands to binary >> (have ‘u32 *’ {aka ‘unsigned int *’} and ‘int’)
179 | val = (page_base >> 8) | 0xc;
| ^~
/home/sam/drm/linux.git/drivers/gpu/drm/r128/ati_pcigart.c:183:9: warning: assignment to ‘u32’ {aka ‘unsigned int’} from ‘u32 *’ {aka ‘unsigned int *’} makes integer from pointer without a cast [-Wint-conversion]
183 | val = page_base;
| ^
/home/sam/drm/linux.git/drivers/gpu/drm/r128/ati_pcigart.c:188:12: warning: dereferencing ‘void *’ pointer
188 | address[gart_idx] = cpu_to_le32(val);
I did not try other architectures and did not try to fix it.
When I applied the patches checkpatch was no too happy:
Applying: drm: Remove PageReserved manipulation from drm_pci_alloc
[sam-pci fa4a1146af59] drm: Remove PageReserved manipulation from drm_pci_alloc
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Sun Feb 2 17:16:31 2020 +0000
1 file changed, 2 insertions(+), 21 deletions(-)
fa4a1146af59 (HEAD -> sam-pci) drm: Remove PageReserved manipulation from drm_pci_alloc
-:10: ERROR:GIT_COMMIT_ID: Please use git commit description style 'commit <12+ chars of sha1> ("<title line>")' - ie: 'commit de09d31dd38a ("page-flags: define PG_reserved behavior on compound pages")'
#10:
commit de09d31dd38a50fdce106c15abd68432eebbd014
-:22: ERROR:BAD_SIGN_OFF: Unrecognized email address: 'Taketo Kabe'
#22:
Reported-by: Taketo Kabe
[sam-pci b553cf48b548] drm/r128: Wean off drm_pci_alloc
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Sun Feb 2 17:16:33 2020 +0000
2 files changed, 17 insertions(+), 17 deletions(-)
b553cf48b548 (HEAD -> sam-pci) drm/r128: Wean off drm_pci_alloc
-:13: WARNING:OBSOLETE: drivers/gpu/drm/r128/ati_pcigart.c is marked as 'obsolete' in the MAINTAINERS hierarchy. No unnecessary modifications please.
-:16: WARNING:OBSOLETE: drivers/gpu/drm/r128/ati_pcigart.c is marked as 'obsolete' in the MAINTAINERS hierarchy. No unnecessary modifications please.
-:26: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#26: FILE: drivers/gpu/drm/r128/ati_pcigart.c:49:
+ dma_alloc_coherent(&dev->pdev->dev,
+ gart_info->table_size,
-:27: CHECK:SPACING: spaces preferred around that '^' (ctx:ExV)
#27: FILE: drivers/gpu/drm/r128/ati_pcigart.c:50:
+ ^gart_info->bus_addr,
^
[sam-pci 7e77c3ee282d] drm: Remove exports for drm_pci_alloc/drm_pci_free
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Sun Feb 2 17:16:35 2020 +0000
4 files changed, 32 insertions(+), 45 deletions(-)
7e77c3ee282d (HEAD -> sam-pci) drm: Remove exports for drm_pci_alloc/drm_pci_free
-:53: CHECK:LINE_SPACING: Please don't use multiple blank lines
#53: FILE: drivers/gpu/drm/drm_legacy.h:215:
+
-:58: ERROR:POINTER_LOCATION: "foo * bar" should be "foo *bar"
#58: FILE: drivers/gpu/drm/drm_legacy.h:220:
+void drm_legacy_pci_free(struct drm_device *dev, struct drm_dma_handle * dmah);
-:100: ERROR:POINTER_LOCATION: "foo * bar" should be "foo *bar"
#100: FILE: drivers/gpu/drm/drm_pci.c:42:
+drm_legacy_pci_alloc(struct drm_device * dev, size_t size, size_t align)
-:119: ERROR:POINTER_LOCATION: "foo * bar" should be "foo *bar"
#119: FILE: drivers/gpu/drm/drm_pci.c:70:
+void drm_legacy_pci_free(struct drm_device * dev, drm_dma_handle_t * dmah)
-:119: ERROR:POINTER_LOCATION: "foo * bar" should be "foo *bar"
#119: FILE: drivers/gpu/drm/drm_pci.c:70:
+void drm_legacy_pci_free(struct drm_device * dev, drm_dma_handle_t * dmah)
Sam
More information about the dri-devel
mailing list