lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <b1b867c1-476c-8a5d-721b-ac19854efcbc@i2se.com>
Date:   Sun, 11 Jul 2021 12:49:35 +0200
From:   Stefan Wahren <stefan.wahren@...e.com>
To:     Ojaswin Mujoo <ojaswin98@...il.com>, nsaenz@...nel.org
Cc:     gregkh@...uxfoundation.org, arnd@...db.de,
        dan.carpenter@...cle.com, phil@...pberrypi.com,
        bcm-kernel-feedback-list@...adcom.com,
        linux-arm-kernel@...ts.infradead.org,
        linux-staging@...ts.linux.dev, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v3 5/5] staging: vchiq: Combine vchiq platform code into
 single file

Am 04.07.21 um 17:59 schrieb Ojaswin Mujoo:
> Combine the vchiq platform initialization code into a single file by
> merging vchiq_2835_arm.c into vchiq_arm.c
>
> Signed-off-by: Ojaswin Mujoo <ojaswin98@...il.com>
> ---
>  drivers/staging/vc04_services/Makefile        |   1 -
>  .../interface/vchiq_arm/vchiq_2835_arm.c      | 564 ------------------
>  .../interface/vchiq_arm/vchiq_arm.c           | 549 +++++++++++++++++
>  3 files changed, 549 insertions(+), 565 deletions(-)
>  delete mode 100644 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
>
> diff --git a/drivers/staging/vc04_services/Makefile b/drivers/staging/vc04_services/Makefile
> index 0a04338fc962..1fd191e2e2a5 100644
> --- a/drivers/staging/vc04_services/Makefile
> +++ b/drivers/staging/vc04_services/Makefile
> @@ -4,7 +4,6 @@ obj-$(CONFIG_BCM2835_VCHIQ)	+= vchiq.o
>  vchiq-objs := \
>     interface/vchiq_arm/vchiq_core.o  \
>     interface/vchiq_arm/vchiq_arm.o \
> -   interface/vchiq_arm/vchiq_2835_arm.o \
>     interface/vchiq_arm/vchiq_debugfs.o \
>     interface/vchiq_arm/vchiq_connected.o \
>  
...
> diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
> index 0f2de571eba7..9057d01ffd48 100644
> --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
> +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
> @@ -25,15 +25,32 @@
>  #include <linux/rcupdate.h>
>  #include <linux/delay.h>
>  #include <linux/slab.h>
> +#include <linux/interrupt.h>
> +#include <linux/io.h>
> +#include <linux/uaccess.h>
>  #include <soc/bcm2835/raspberrypi-firmware.h>
>  
>  #include "vchiq_core.h"
>  #include "vchiq_ioctl.h"
>  #include "vchiq_arm.h"
>  #include "vchiq_debugfs.h"
> +#include "vchiq_connected.h"
> +#include "vchiq_pagelist.h"
>  
>  #define DEVICE_NAME "vchiq"
>  
> +#define TOTAL_SLOTS (VCHIQ_SLOT_ZERO_SLOTS + 2 * 32)
> +
> +#define MAX_FRAGMENTS (VCHIQ_NUM_CURRENT_BULKS * 2)
> +
> +#define VCHIQ_PLATFORM_FRAGMENTS_OFFSET_IDX 0
> +#define VCHIQ_PLATFORM_FRAGMENTS_COUNT_IDX  1
> +
> +#define BELL0	0x00
> +#define BELL2	0x08
> +
> +#define ARM_DS_ACTIVE	BIT(2)
> +
>  /* Override the default prefix, which would be vchiq_arm (from the filename) */
>  #undef MODULE_PARAM_PREFIX
>  #define MODULE_PARAM_PREFIX DEVICE_NAME "."
> @@ -59,10 +76,542 @@ static struct vchiq_drvdata bcm2836_drvdata = {
>  	.cache_line_size = 64,
>  };
>  
> +struct vchiq_2835_state {
> +	int inited;
> +	struct vchiq_arm_state arm_state;
> +};
> +
> +struct vchiq_pagelist_info {
> +	struct pagelist *pagelist;
> +	size_t pagelist_buffer_size;
> +	dma_addr_t dma_addr;
> +	enum dma_data_direction dma_dir;
> +	unsigned int num_pages;
> +	unsigned int pages_need_release;
> +	struct page **pages;
> +	struct scatterlist *scatterlist;
> +	unsigned int scatterlist_mapped;
> +};
> +
> +static void __iomem *g_regs;
> +/* This value is the size of the L2 cache lines as understood by the
> + * VPU firmware, which determines the required alignment of the
> + * offsets/sizes in pagelists.
> + *
> + * Modern VPU firmware looks for a DT "cache-line-size" property in
> + * the VCHIQ node and will overwrite it with the actual L2 cache size,
> + * which the kernel must then respect.  That property was rejected
> + * upstream, so we have to use the VPU firmware's compatibility value
> + * of 32.
> + */
> +static unsigned int g_cache_line_size = 32;
> +static unsigned int g_fragments_size;
> +static char *g_fragments_base;
> +static char *g_free_fragments;
> +static struct semaphore g_free_fragments_sema;
> +static struct device *g_dev;
> +
> +static DEFINE_SEMAPHORE(g_free_fragments_mutex);
> +
> +static irqreturn_t
> +vchiq_doorbell_irq(int irq, void *dev_id);
> +
> +static struct vchiq_pagelist_info *
> +create_pagelist(char *buf, char __user *ubuf, size_t count, unsigned short type);
> +
> +static void
> +free_pagelist(struct vchiq_pagelist_info *pagelistinfo,
> +	      int actual);

please no forward declarations of these 3 functions. Put them into the
right order instead ...

Since this patch is independent from the other ones from the series,
maybe Greg can merg the rest of the series.



Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ