2017-11-13 08:38:13

by Huacai Chen

[permalink] [raw]
Subject: Re: [PATCH V9 1/4] dma-mapping: Rework dma_get_cache_alignment()

But in b44_init(), there is no device instances.



------------------ Original ------------------
From: "Christoph Hellwig"<[email protected]>;
Date: Fri, Nov 10, 2017 08:30 PM
To: "Huacai Chen"<[email protected]>;
Cc: "Christoph Hellwig"<[email protected]>; "Marek Szyprowski"<[email protected]>; "Robin Murphy"<[email protected]>; "Andrew Morton"<[email protected]>; "Fuxin Zhang"<[email protected]>; "linux-kernel"<[email protected]>; "Ralf Baechle"<[email protected]>; "James Hogan"<[email protected]>; "linux-mips"<[email protected]>; "James E . J . Bottomley"<[email protected]>; "Martin K . Petersen"<[email protected]>; "linux-scsi"<[email protected]>; "stable"<[email protected]>; "Michael S . Tsirkin"<[email protected]>; "Pawel Osciak"<[email protected]>; "Kyungmin Park"<[email protected]>; "Michael Chan"<[email protected]>; "Benjamin Herrenschmidt"<[email protected]>; "Ivan Mikhaylov"<[email protected]>; "Tariq Toukan"<[email protected]>; "Andy Gross"<[email protected]>; "Mark A . Greer"<[email protected]>; "Robert Baldyga"<[email protected]>;
Subject: Re: [PATCH V9 1/4] dma-mapping: Rework dma_get_cache_alignment()


> diff --git a/drivers/net/ethernet/broadcom/b44.c b/drivers/net/ethernet/broadcom/b44.c
> index a1125d1..2f6ffe5 100644
> --- a/drivers/net/ethernet/broadcom/b44.c
> +++ b/drivers/net/ethernet/broadcom/b44.c
> @@ -2344,6 +2344,10 @@ static int b44_init_one(struct ssb_device *sdev,
> struct net_device *dev;
> struct b44 *bp;
> int err;
> + unsigned int dma_desc_align_size = dma_get_cache_alignment(sdev->dma_dev);
> +
> + /* Setup paramaters for syncing RX/TX DMA descriptors */
> + dma_desc_sync_size = max_t(unsigned int, dma_desc_align_size, sizeof(struct dma_desc));
>
> instance++;
>
> @@ -2587,12 +2591,8 @@ static inline void b44_pci_exit(void)
>
> static int __init b44_init(void)
> {
> - unsigned int dma_desc_align_size = dma_get_cache_alignment();
> int err;
>
> - /* Setup paramaters for syncing RX/TX DMA descriptors */
> - dma_desc_sync_size = max_t(unsigned int, dma_desc_align_size, sizeof(struct dma_desc));
> -

This looks wrong - you override a global variable for each probed
device.