Re: [PATCH v4 REPOST 0/8] clean up wlan_bssdef.h
On Wed, Aug 05, 2015 at 05:17:13PM -0700, Joshua Clayton wrote: > I posted v4 of this patch set a week ago and there have been no > comments. I hope this is a good sign that the patches are good. > However, I have noticed that I managed to use the same message id > for the coverletter of v4 as for v3, which might have caused people > to hold off reviewing, perhaps thinking that earlier comments > had not been addressed. > No. No one reads cover letters. If there are no comments it means the peanut gallery is fine with it, and Greg hasn't gotten around to it yet. Please don't repost patches unless asked. You would think we would scramble around like panicked rabbits to fix the potential buffer overrun but actually we just treat it like a normal patch so it will take a bit to get merged. Greg will email you when he gets to the patches, if they are merged or if there is a problem. regards, dan carpenter ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH v2 00/46] staging: comedi: me4000: cleanup driver
On 05/08/15 18:44, H Hartley Sweeten wrote: Here's the big cleanup series for the Comedi me4000 driver. This fixes all the checkpatch issues and removes a bunch of cruft from the driver. v2: Address some issues pointed out by Ian Abbott, the comedi core does not validate the 'aref' so the driver needs to handle it. H Hartley Sweeten (46): staging: comedi: me4000: remove 'dio_nchan' boardinfo staging: comedi: me4000: all board types have analog inputs staging: comedi: me4000: only set SDF_DIFF when supported staging: comedi: me4000: remove 'chan' check in me4000_ai_insn_read() staging: comedi: me4000: remove 'board' from me4000_ai_insn_read() staging: comedi: me4000: remove 'board' from me4000_ai_check_chanlist() staging: comedi: me4000: make boardinfo flags bit-fields staging: comedi: me4000: refactor 'ai_diff_nchan' boardinfo staging: comedi: me4000: refactor 'ao_nchan' boardinfo staging: comedi: me4000: refactor 'ao_fifo' boardinfo staging: comedi: me4000: refactor 'ai_sh_nchan' boardinfo staging: comedi: me4000: rename local variables used for 'dev->private' staging: comedi: me4000: remove unnecessary ME4000_AI_LIST_INPUT_SINGLE_ENDED staging: comedi: me4000: simplify analog input range programming staging: comedi: me4000: fix ai_write_chanlist() staging: comedi: me4000: tidy up ME4000_AI_CHANNEL_LIST_REG bit defines staging: comedi: me4000: use comedi_timeout() to wait for ai (*insn_read) staging: comedi: me4000: fix me4000_ai_insn_read() staging: comedi: me4000: use correct types for extracted chanspec values staging: comedi: me4000: use comedi_range_is_bipolar() in ai (*insn_read) staging: comedi: me4000: tidy up ME4000_AI_STATUS_REG bit defines staging: comedi: me4000: tidy up ME4000_AI_CTRL_REG bit defines staging: comedi: me4000: tidy up ME4000_IRQ_STATUS_REG bit defines staging: comedi: me4000: tidy up ME4000_AO_STATUS_REG bit defines staging: comedi: me4000: tidy up ME4000_AO_CTRL_REG bit defines staging: comedi: me4000: tidy up ME4000_DIO_CTRL_REG bit defines staging: comedi: me4000: return void from ai_round_cmd_args() staging: comedi: me4000: move ai command timing values into private data staging: comedi: me4000: simplify ai_prepare() staging: comedi: me4000: absorb ai_prepare() staging: comedi: me4000: absorb ai_write_timer() staging: comedi: me4000: return void from me4000_ai_write_chanlist() staging: comedi: me4000: fix me4000_ai_cancel() staging: comedi: me4000: remove unnecessary ai control register reset staging: comedi: me4000: remove unnecessary me4000_ai_cancel() staging: comedi: me4000: clear the ME4000_AI_CTRL_REG in me4000_reset() staging: comedi: me4000: introduce me4000_ai_reset() staging: comedi: me4000: only enable PLX interrupt if we have and irq staging: comedi: me4000: fix me4000_detach() staging: comedi: me4000: tidy up analog output subdevice init staging: comedi: me4000: comedi_handle_events() will stop conversions staging: comedi: me4000: introduce me4000_ai_get_sample() staging: comedi: me4000: usleep_range is preferred over udelay staging: comedi: me4000: cleanup multi-line comments staging: comedi: me4000: updata driver status in comedi comment staging: comedi: me4000: update MODULE_DESCRIPTION drivers/staging/comedi/drivers/me4000.c | 1000 +-- 1 file changed, 422 insertions(+), 578 deletions(-) Reviewed-by: Ian Abbott -- -=( Ian Abbott @ MEV Ltd.E-mail: )=- -=( Web: http://www.mev.co.uk/ )=- ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH] staging: rtl8723au: Fix sparse warning: cast to restricted __le16
usPtr is used as __le16 *, but was defined as u16 *. This was reported by sparse as: drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c:1850:29: warning: cast to restricted __le16 This patch fixes the type of usPtr. Signed-off-by: Johannes Postma --- drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c b/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c index cb5076a..eb76ac4 100644 --- a/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c +++ b/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c @@ -1838,7 +1838,7 @@ Hal_EfuseParseThermalMeter_8723A(struct rtw_adapter *padapter, static void rtl8723a_cal_txdesc_chksum(struct tx_desc *ptxdesc) { - u16 *usPtr = (u16 *) ptxdesc; + __le16 *usPtr = (__le16 *)ptxdesc; u32 count = 16; /* (32 bytes / 2 bytes per XOR) => 16 times */ u32 index; u16 checksum = 0; -- 2.5.0 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH] staging: rtl8723au: Fix sparse warning: cast to restricted __le16
Johannes Postma writes: > usPtr is used as __le16 *, but was defined as u16 *. > This was reported by sparse as: > drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c:1850:29: warning: cast to > restricted __le16 > > This patch fixes the type of usPtr. > > Signed-off-by: Johannes Postma > --- > drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Looks OK to me. Probably worth changing the *(usPtr + index) to be usPtr[index] as well to make the code easier to read. Jes > diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c > b/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c > index cb5076a..eb76ac4 100644 > --- a/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c > +++ b/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c > @@ -1838,7 +1838,7 @@ Hal_EfuseParseThermalMeter_8723A(struct rtw_adapter > *padapter, > > static void rtl8723a_cal_txdesc_chksum(struct tx_desc *ptxdesc) > { > - u16 *usPtr = (u16 *) ptxdesc; > + __le16 *usPtr = (__le16 *)ptxdesc; > u32 count = 16; /* (32 bytes / 2 bytes per XOR) => 16 times */ > u32 index; > u16 checksum = 0; ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH 4/6] drivers, staging, unisys Add visorbus module autoloading code
On Mon, Aug 03, 2015 at 01:21:35PM -0400, Prarit Bhargava wrote: > > On 07/31/2015 07:07 PM, Greg KH wrote:> On Fri, Jul 24, 2015 at 12:06:54PM > -0400, Benjamin Romer wrote: > >> From: Prarit Bhargava > >> > >> This patch adds an module alias and a MODULE_DEVICE_TABLE to autoload the > >> visorhba driver when an appropriate device is created by the visorbus. > >> > >> Signed-off-by: Prarit Bhargava > >> --- > >> drivers/staging/unisys/visorhba/visorhba_main.c | 2 ++ > >> 1 file changed, 2 insertions(+) > >> > >> diff --git a/drivers/staging/unisys/visorhba/visorhba_main.c > >> b/drivers/staging/unisys/visorhba/visorhba_main.c > >> index 031c6fa..50ecdf2 100644 > >> --- a/drivers/staging/unisys/visorhba/visorhba_main.c > >> +++ b/drivers/staging/unisys/visorhba/visorhba_main.c > >> @@ -80,6 +80,8 @@ static struct visor_driver visorhba_driver = { > >>.resume = visorhba_resume, > >>.channel_interrupt = NULL, > >> }; > >> +MODULE_DEVICE_TABLE(visorbus, visorhba_channel_types); > >> +MODULE_ALIAS("visorbus:" SPAR_VHBA_CHANNEL_PROTOCOL_UUID_STR); > > > > You shouldn't have to write MODULE_ALIAS lines "by hand", they should be > > generated for you automagically from the MODULE_DEVICE_TABLE() define, > > if you do it right. > > > > You all didn't do it right :) > > > > Greg, > > I need further clarification on the right approach for the autoload code. > > In order to "do it right" I would have to do something like the following > which would correctly add module alias entries for the visorbus bus. > The issue that I have with this patch is that it touches code outside > of drivers/staging for a driver that is solely within drivers/staging. > Yeah. Don't do that. > Is modifying non drivers/staging okay to do? Or is simply doing > > MODULE_ALIAS("visorbus:" SPAR_VHBA_CHANNEL_PROTOCOL_UUID_STR); > > with a loud /* FIXME before submitting ... */ warning a better approach? > I'm not Greg, but I would go with this approach. Put the file2alias.c change in the FIXME comment so we can just copy it over after the driver is merged. regards, dan carpenter ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
邮件在线
提供各种發票 电话;13714181682 QQ;2687517760 钱经理 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
randconfig build error with next-20150806, in arch/x86/kernel/cpu/mshyperv.c
Building with the attached random configuration file, warning: (INTEL_MIC_HOST && CAIF_VIRTIO && VHOST_NET && VHOST_SCSI && VHOST_NET && VHOST_SCSI) selects VHOST_RING which has unmet direct dependencies (NETDEVICES && CAIF_VIRTIO || VIRTUALIZATION) arch/x86/built-in.o: In function `hv_machine_crash_shutdown': /home/jim/linux-next/arch/x86/kernel/cpu/mshyperv.c:112: undefined reference to `native_machine_crash_shutdown' -- Jim # # Automatically generated file; DO NOT EDIT. # Linux/x86 4.2.0-rc5 Kernel Configuration # CONFIG_64BIT=y CONFIG_X86_64=y CONFIG_X86=y CONFIG_INSTRUCTION_DECODER=y CONFIG_PERF_EVENTS_INTEL_UNCORE=y CONFIG_OUTPUT_FORMAT="elf64-x86-64" CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig" CONFIG_LOCKDEP_SUPPORT=y CONFIG_STACKTRACE_SUPPORT=y CONFIG_HAVE_LATENCYTOP_SUPPORT=y CONFIG_MMU=y CONFIG_NEED_DMA_MAP_STATE=y CONFIG_NEED_SG_DMA_LENGTH=y CONFIG_GENERIC_BUG=y CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y CONFIG_GENERIC_HWEIGHT=y CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_ARCH_HAS_CPU_RELAX=y CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y CONFIG_HAVE_SETUP_PER_CPU_AREA=y CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y CONFIG_ARCH_WANT_GENERAL_HUGETLB=y CONFIG_ZONE_DMA32=y CONFIG_AUDIT_ARCH=y CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y CONFIG_X86_64_SMP=y CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11" CONFIG_ARCH_SUPPORTS_UPROBES=y CONFIG_FIX_EARLYCON_MEM=y CONFIG_PGTABLE_LEVELS=4 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_CONSTRUCTORS=y CONFIG_IRQ_WORK=y CONFIG_BUILDTIME_EXTABLE_SORT=y # # General setup # CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_CROSS_COMPILE="" # CONFIG_COMPILE_TEST is not set CONFIG_LOCALVERSION="" # CONFIG_LOCALVERSION_AUTO is not set CONFIG_HAVE_KERNEL_GZIP=y CONFIG_HAVE_KERNEL_BZIP2=y CONFIG_HAVE_KERNEL_LZMA=y CONFIG_HAVE_KERNEL_XZ=y CONFIG_HAVE_KERNEL_LZO=y CONFIG_HAVE_KERNEL_LZ4=y CONFIG_KERNEL_GZIP=y # CONFIG_KERNEL_BZIP2 is not set # CONFIG_KERNEL_LZMA is not set # CONFIG_KERNEL_XZ is not set # CONFIG_KERNEL_LZO is not set # CONFIG_KERNEL_LZ4 is not set CONFIG_DEFAULT_HOSTNAME="(none)" # CONFIG_SYSVIPC is not set CONFIG_CROSS_MEMORY_ATTACH=y CONFIG_FHANDLE=y CONFIG_USELIB=y CONFIG_HAVE_ARCH_AUDITSYSCALL=y # # IRQ subsystem # CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_IRQ_SHOW=y CONFIG_GENERIC_PENDING_IRQ=y CONFIG_GENERIC_IRQ_CHIP=y CONFIG_IRQ_DOMAIN=y CONFIG_IRQ_DOMAIN_HIERARCHY=y # CONFIG_IRQ_DOMAIN_DEBUG is not set CONFIG_IRQ_FORCED_THREADING=y CONFIG_SPARSE_IRQ=y CONFIG_CLOCKSOURCE_WATCHDOG=y CONFIG_ARCH_CLOCKSOURCE_DATA=y CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y CONFIG_GENERIC_TIME_VSYSCALL=y CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y CONFIG_GENERIC_CMOS_UPDATE=y # # Timers subsystem # CONFIG_TICK_ONESHOT=y CONFIG_HZ_PERIODIC=y # CONFIG_NO_HZ_IDLE is not set # CONFIG_NO_HZ_FULL is not set # CONFIG_NO_HZ is not set CONFIG_HIGH_RES_TIMERS=y # # CPU/Task time and stats accounting # CONFIG_TICK_CPU_ACCOUNTING=y # CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set # CONFIG_IRQ_TIME_ACCOUNTING is not set CONFIG_BSD_PROCESS_ACCT=y # CONFIG_BSD_PROCESS_ACCT_V3 is not set # # RCU Subsystem # CONFIG_TREE_RCU=y # CONFIG_RCU_EXPERT is not set CONFIG_SRCU=y CONFIG_TASKS_RCU=y CONFIG_RCU_STALL_COMMON=y CONFIG_TREE_RCU_TRACE=y # CONFIG_RCU_EXPEDITE_BOOT is not set CONFIG_BUILD_BIN2C=y CONFIG_IKCONFIG=m CONFIG_IKCONFIG_PROC=y CONFIG_LOG_BUF_SHIFT=17 CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y CONFIG_ARCH_SUPPORTS_INT128=y # CONFIG_NUMA_BALANCING is not set CONFIG_CGROUPS=y CONFIG_CGROUP_DEBUG=y CONFIG_CGROUP_FREEZER=y # CONFIG_CGROUP_PIDS is not set # CONFIG_CGROUP_DEVICE is not set # CONFIG_CPUSETS is not set # CONFIG_CGROUP_CPUACCT is not set CONFIG_PAGE_COUNTER=y # CONFIG_MEMCG is not set CONFIG_CGROUP_HUGETLB=y # CONFIG_CGROUP_PERF is not set CONFIG_CGROUP_SCHED=y CONFIG_FAIR_GROUP_SCHED=y # CONFIG_CFS_BANDWIDTH is not set CONFIG_RT_GROUP_SCHED=y # CONFIG_CHECKPOINT_RESTORE is not set # CONFIG_NAMESPACES is not set CONFIG_SCHED_AUTOGROUP=y # CONFIG_SYSFS_DEPRECATED is not set CONFIG_RELAY=y CONFIG_BLK_DEV_INITRD=y CONFIG_INITRAMFS_SOURCE="" CONFIG_RD_GZIP=y CONFIG_RD_BZIP2=y # CONFIG_RD_LZMA is not set # CONFIG_RD_XZ is not set # CONFIG_RD_LZO is not set # CONFIG_RD_LZ4 is not set CONFIG_CC_OPTIMIZE_FOR_SIZE=y CONFIG_ANON_INODES=y CONFIG_SYSCTL_EXCEPTION_TRACE=y CONFIG_HAVE_PCSPKR_PLATFORM=y CONFIG_EXPERT=y CONFIG_MULTIUSER=y CONFIG_SGETMASK_SYSCALL=y CONFIG_SYSFS_SYSCALL=y CONFIG_KALLSYMS=y CONFIG_KALLSYMS_ALL=y CONFIG_PRINTK=y CONFIG_BUG=y # CONFIG_ELF_CORE is not set CONFIG_PCSPKR_PLAT
Re: [PATCH v3 2/3] drivers: staging: wilc1000: move { to previous line
On Wed, Aug 05, 2015 at 10:11:56PM +0530, Chandra S Gorentla wrote: > Moved the opening brace of code blocks to the previous lines. This > fixes the checkpatch.pl error - "that open brace { should be on the > previous line". > > Signed-off-by: Chandra S Gorentla > --- > drivers/staging/wilc1000/wilc_wfi_cfgoperations.c | 9 +++-- > 1 file changed, 3 insertions(+), 6 deletions(-) > > diff --git a/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c > b/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c > index c2ef46f..779ec5a 100644 > --- a/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c > +++ b/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c > @@ -1205,8 +1205,7 @@ static int WILC_WFI_add_key(struct wiphy *wiphy, struct > net_device *netdev, u8 k > > > > - if (!pairwise) > - { > + if (!pairwise) { > if (params->cipher == WLAN_CIPHER_SUITE_TKIP) > u8gmode = ENCRYPT_ENABLED | WPA | TKIP; > else > @@ -1304,8 +1303,7 @@ static int WILC_WFI_add_key(struct wiphy *wiphy, struct > net_device *netdev, u8 k > > { > u8mode = 0; > - if (!pairwise) > - { > + if (!pairwise) { > if (params->key_len > 16 && params->cipher == > WLAN_CIPHER_SUITE_TKIP) { > /* swap the tx mic by rx mic */ > pu8RxMic = params->key + 24; > @@ -1531,8 +1529,7 @@ static int WILC_WFI_get_key(struct wiphy *wiphy, struct > net_device *netdev, u8 k > priv = wiphy_priv(wiphy); > > > - if (!pairwise) > - { > + if (!pairwise) { > PRINT_D(CFG80211_DBG, "Getting group key idx: %x\n", key_index); > > key_params.key = priv->wilc_gtk[key_index]->key; > -- > 2.5.0 > Hello Greg, I sent 3 patches in this series. The subject lines of other 2 are - [PATCH v3 3/3] drivers: staging: wilc1000: remove space after '(' [PATCH v3 1/3] drivers: staging: wilc1000: use 'void' for no arguments functions These two patches (1/3 and 3/3) were accepted but not the patch (2/3) in this mail. Any reason for not accepting? Is any thing wrong with this patch - 2/3? If so, I can correct and send again. Thanks, chandra ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH v3 2/3] drivers: staging: wilc1000: move { to previous line
On Thu, Aug 06, 2015 at 09:29:44PM +0530, Chandra Gorentla wrote: > On Wed, Aug 05, 2015 at 10:11:56PM +0530, Chandra S Gorentla wrote: > > Moved the opening brace of code blocks to the previous lines. This > > fixes the checkpatch.pl error - "that open brace { should be on the > > previous line". > > > > Signed-off-by: Chandra S Gorentla > > --- > > drivers/staging/wilc1000/wilc_wfi_cfgoperations.c | 9 +++-- > > 1 file changed, 3 insertions(+), 6 deletions(-) > > > > diff --git a/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c > > b/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c > > index c2ef46f..779ec5a 100644 > > --- a/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c > > +++ b/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c > > @@ -1205,8 +1205,7 @@ static int WILC_WFI_add_key(struct wiphy *wiphy, > > struct net_device *netdev, u8 k > > > > > > > > - if (!pairwise) > > - { > > + if (!pairwise) { > > if (params->cipher == WLAN_CIPHER_SUITE_TKIP) > > u8gmode = ENCRYPT_ENABLED | WPA | TKIP; > > else > > @@ -1304,8 +1303,7 @@ static int WILC_WFI_add_key(struct wiphy *wiphy, > > struct net_device *netdev, u8 k > > > > { > > u8mode = 0; > > - if (!pairwise) > > - { > > + if (!pairwise) { > > if (params->key_len > 16 && params->cipher == > > WLAN_CIPHER_SUITE_TKIP) { > > /* swap the tx mic by rx mic */ > > pu8RxMic = params->key + 24; > > @@ -1531,8 +1529,7 @@ static int WILC_WFI_get_key(struct wiphy *wiphy, > > struct net_device *netdev, u8 k > > priv = wiphy_priv(wiphy); > > > > > > - if (!pairwise) > > - { > > + if (!pairwise) { > > PRINT_D(CFG80211_DBG, "Getting group key idx: %x\n", key_index); > > > > key_params.key = priv->wilc_gtk[key_index]->key; > > -- > > 2.5.0 > > > > Hello Greg, > > I sent 3 patches in this series. The subject lines of other 2 are - > > [PATCH v3 3/3] drivers: staging: wilc1000: remove space after '(' > [PATCH v3 1/3] drivers: staging: wilc1000: use 'void' for no arguments > functions > > These two patches (1/3 and 3/3) were accepted but not the patch (2/3) in this > mail. Any reason for not accepting? Is any thing wrong with this patch - > 2/3? > If so, I can correct and send again. Rebase your series on the tree and see what happens to your 2/3 patch :) (hint, someone else sent the same patch before you did, so it is not needed anymore...) thanks, greg k-h ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCHv6 2/5] Staging: most: mostcore/core.c. Fix "Using plain integer as NULL pointer" warnings
This patch fixes the warning generated by sparse: "Using plain integer as NULL pointer" by replacing the offending 0 with NULL. v6: styling. Change the NULL test to comply with the Kernel coding style Signed-off-by: Adrian Remonda --- drivers/staging/most/mostcore/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/staging/most/mostcore/core.c b/drivers/staging/most/mostcore/core.c index fa9c19b65a5c..7bb16db42893 100644 --- a/drivers/staging/most/mostcore/core.c +++ b/drivers/staging/most/mostcore/core.c @@ -982,7 +982,7 @@ static ssize_t store_add_link(struct most_aim_obj *aim_obj, if (ret) return ret; - if (mdev_devnod == 0 || *mdev_devnod == 0) { + if (!mdev_devnod || *mdev_devnod == 0) { snprintf(devnod_buf, sizeof(devnod_buf), "%s-%s", mdev, mdev_ch); mdev_devnod = devnod_buf; } -- 2.1.4 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCHv6 1/5] Staging: most: mostcore/core.c. Fix "missing static keyword" warnings
This is a patch to the mostcore/core.c file. It makes several local functions and structures static to prevent global visibility. v6: fixed warning "line over 80 characters" as pointed out by Sudip Mukherjee Signed-off-by: Adrian Remonda --- drivers/staging/most/mostcore/core.c | 15 --- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/drivers/staging/most/mostcore/core.c b/drivers/staging/most/mostcore/core.c index f4fea8cf5560..fa9c19b65a5c 100644 --- a/drivers/staging/most/mostcore/core.c +++ b/drivers/staging/most/mostcore/core.c @@ -178,7 +178,7 @@ static void most_free_mbo_coherent(struct mbo *mbo) * flush_channel_fifos - clear the channel fifos * @c: pointer to channel object */ -void flush_channel_fifos(struct most_c_obj *c) +static void flush_channel_fifos(struct most_c_obj *c) { unsigned long flags, hf_flags; struct mbo *mbo, *tmp; @@ -888,7 +888,7 @@ static ssize_t show_add_link(struct most_aim_obj *aim_obj, * Input: "mdev0:ch0@ep_81" * Output: *a -> "mdev0", *b -> "ch0@ep_81", *c == NULL */ -int split_string(char *buf, char **a, char **b, char **c) +static int split_string(char *buf, char **a, char **b, char **c) { *a = strsep(&buf, ":"); if (!*a) @@ -1006,7 +1006,7 @@ static ssize_t store_add_link(struct most_aim_obj *aim_obj, return len; } -struct most_aim_attribute most_aim_attr_add_link = +static struct most_aim_attribute most_aim_attr_add_link = __ATTR(add_link, S_IRUGO | S_IWUSR, show_add_link, store_add_link); static ssize_t show_remove_link(struct most_aim_obj *aim_obj, @@ -1057,7 +1057,7 @@ static ssize_t store_remove_link(struct most_aim_obj *aim_obj, return len; } -struct most_aim_attribute most_aim_attr_remove_link = +static struct most_aim_attribute most_aim_attr_remove_link = __ATTR(remove_link, S_IRUGO | S_IWUSR, show_remove_link, store_remove_link); static struct attribute *most_aim_def_attrs[] = { @@ -1121,14 +1121,14 @@ static void destroy_most_aim_obj(struct most_aim_obj *p) /** * Instantiation of the MOST bus */ -struct bus_type most_bus = { +static struct bus_type most_bus = { .name = "most", }; /** * Instantiation of the core driver */ -struct device_driver mostcore = { +static struct device_driver mostcore = { .name = "mostcore", .bus = &most_bus, }; @@ -1255,7 +1255,8 @@ static void arm_mbo(struct mbo *mbo) * * Returns the number of allocated and enqueued MBOs. */ -int arm_mbo_chain(struct most_c_obj *c, int dir, void (*compl)(struct mbo *)) +static int arm_mbo_chain(struct most_c_obj *c, int dir, +void (*compl)(struct mbo *)) { unsigned int i; int retval; -- 2.1.4 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCHv6 3/5] Staging: most: hdm-usb/hdm_usb.c. Fix "missing static keyword" warnings
This is a patch to the most/hdm-usb/hdm_usb.c file. It makes several local functions and structures static to prevent global visibility. v6: fixed alignment with parameter list of a function. Signed-off-by: Adrian Remonda --- drivers/staging/most/hdm-usb/hdm_usb.c | 16 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/staging/most/hdm-usb/hdm_usb.c b/drivers/staging/most/hdm-usb/hdm_usb.c index 514ce3529b7a..305303f2f17c 100644 --- a/drivers/staging/most/hdm-usb/hdm_usb.c +++ b/drivers/staging/most/hdm-usb/hdm_usb.c @@ -290,7 +290,7 @@ static unsigned int get_stream_frame_size(struct most_channel_config *cfg) * * Returns 0 on success or error code otherwise. */ -int hdm_poison_channel(struct most_interface *iface, int channel) +static int hdm_poison_channel(struct most_interface *iface, int channel) { struct most_dev *mdev; @@ -328,7 +328,7 @@ int hdm_poison_channel(struct most_interface *iface, int channel) * This inserts the INIC hardware specific padding bytes into a streaming * channel's buffer */ -int hdm_add_padding(struct most_dev *mdev, int channel, struct mbo *mbo) +static int hdm_add_padding(struct most_dev *mdev, int channel, struct mbo *mbo) { struct most_channel_config *conf = &mdev->conf[channel]; unsigned int j, num_frames, frame_size; @@ -365,7 +365,7 @@ int hdm_add_padding(struct most_dev *mdev, int channel, struct mbo *mbo) * This takes the INIC hardware specific padding bytes off a streaming * channel's buffer. */ -int hdm_remove_padding(struct most_dev *mdev, int channel, struct mbo *mbo) +static int hdm_remove_padding(struct most_dev *mdev, int channel, struct mbo *mbo) { unsigned int j, num_frames, frame_size; struct most_channel_config *const conf = &mdev->conf[channel]; @@ -644,7 +644,7 @@ static void hdm_read_completion(struct urb *urb) * * Context: Could in _some_ cases be interrupt! */ -int hdm_enqueue(struct most_interface *iface, int channel, struct mbo *mbo) +static int hdm_enqueue(struct most_interface *iface, int channel, struct mbo *mbo) { struct most_dev *mdev; struct buf_anchor *anchor; @@ -743,8 +743,8 @@ _error: * @channel: channel ID * @conf: structure that holds the configuration information */ -int hdm_configure_channel(struct most_interface *iface, int channel, - struct most_channel_config *conf) +static int hdm_configure_channel(struct most_interface *iface, int channel, +struct most_channel_config *conf) { unsigned int num_frames; unsigned int frame_size; @@ -824,7 +824,7 @@ exit: * This triggers the USB vendor requests to read the hardware address and * the current link status of the attached device. */ -int hdm_update_netinfo(struct most_dev *mdev) +static int hdm_update_netinfo(struct most_dev *mdev) { struct device *dev = &mdev->usb_device->dev; int i; @@ -873,7 +873,7 @@ int hdm_update_netinfo(struct most_dev *mdev) * polls for the NI state of the INIC every 2 seconds. * */ -void hdm_request_netinfo(struct most_interface *iface, int channel) +static void hdm_request_netinfo(struct most_interface *iface, int channel) { struct most_dev *mdev; -- 2.1.4 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCHv6 0/5] Staging: most: several warnings fix reported by sparse
This patch series fix several warnings reported by the Sparse tool v2: Fixed patch format and comments as noted by Greg Kroah-Hartman and clear a few more warnings v3: Fixed patch format as noted by Greg Kroah-Hartman v4: Fixed patch format as noted by Greg Kroah-Hartman v5: Because of using a non-updated tree previously two patches did not apply v6: Clear warnings and styling issues Adrian Remonda (5): Staging: most: mostcore/core.c. Fix "missing static keyword" warnings Staging: most: mostcore/core.c. Fix "Using plain integer as NULL pointer" warnings Staging: most: hdm-usb/hdm_usb.c. Fix "missing static keyword" warnings Staging: most: hdm-dim2/dim2_hal.c. Fix "Using plain integer as NULL pointer" warnings Staging: most: aim-cdev/cdev.c. Fix "missing static keyword" warnings drivers/staging/most/aim-cdev/cdev.c | 18 +- drivers/staging/most/hdm-dim2/dim2_hal.c | 2 +- drivers/staging/most/hdm-usb/hdm_usb.c | 16 drivers/staging/most/mostcore/core.c | 17 + 4 files changed, 27 insertions(+), 26 deletions(-) -- 2.1.4 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCHv6 4/5] Staging: most: hdm-dim2/dim2_hal.c. Fix "Using plain integer as NULL pointer" warnings
This patch fixes the warning generated by sparse: "Using plain integer as NULL pointer" by replacing the offending 0 with NULL. Signed-off-by: Adrian Remonda --- drivers/staging/most/hdm-dim2/dim2_hal.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/staging/most/hdm-dim2/dim2_hal.c b/drivers/staging/most/hdm-dim2/dim2_hal.c index 01b748944ee4..a54cf2cedac3 100644 --- a/drivers/staging/most/hdm-dim2/dim2_hal.c +++ b/drivers/staging/most/hdm-dim2/dim2_hal.c @@ -889,7 +889,7 @@ struct dim_ch_state_t *DIM_GetChannelState(struct dim_channel *ch, struct dim_ch_state_t *state_ptr) { if (!ch || !state_ptr) - return 0; + return NULL; state_ptr->ready = ch->state.level < 2; state_ptr->done_buffers = ch->done_sw_buffers_number; -- 2.1.4 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCHv6 5/5] Staging: most: aim-cdev/cdev.c. Fix "missing static keyword" warnings
This is a patch to the most/aim_cdev.c file. It makes several local functions and structures static to prevent global visibility. Signed-off-by: Adrian Remonda --- drivers/staging/most/aim-cdev/cdev.c | 18 +- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/staging/most/aim-cdev/cdev.c b/drivers/staging/most/aim-cdev/cdev.c index 252a17cf153c..0a13d8d0fa39 100644 --- a/drivers/staging/most/aim-cdev/cdev.c +++ b/drivers/staging/most/aim-cdev/cdev.c @@ -49,7 +49,7 @@ static struct list_head channel_list; static spinlock_t ch_list_lock; -struct aim_channel *get_channel(struct most_interface *iface, int id) +static struct aim_channel *get_channel(struct most_interface *iface, int id) { struct aim_channel *channel, *tmp; unsigned long flags; @@ -289,7 +289,7 @@ static const struct file_operations channel_fops = { * This frees allocated memory and removes the cdev that represents this * channel in user space. */ -int aim_disconnect_channel(struct most_interface *iface, int channel_id) +static int aim_disconnect_channel(struct most_interface *iface, int channel_id) { struct aim_channel *channel; unsigned long flags; @@ -329,7 +329,7 @@ int aim_disconnect_channel(struct most_interface *iface, int channel_id) * This searches for the channel linked to this MBO and stores it in the local * fifo buffer. */ -int aim_rx_completion(struct mbo *mbo) +static int aim_rx_completion(struct mbo *mbo) { struct aim_channel *channel; @@ -356,7 +356,7 @@ int aim_rx_completion(struct mbo *mbo) * * This wakes sleeping processes in the wait-queue. */ -int aim_tx_completion(struct most_interface *iface, int channel_id) +static int aim_tx_completion(struct most_interface *iface, int channel_id) { struct aim_channel *channel; @@ -376,7 +376,7 @@ int aim_tx_completion(struct most_interface *iface, int channel_id) return 0; } -struct most_aim cdev_aim; +static struct most_aim cdev_aim; /** * aim_probe - probe function of the driver module @@ -390,9 +390,9 @@ struct most_aim cdev_aim; * * Returns 0 on success or error code otherwise. */ -int aim_probe(struct most_interface *iface, int channel_id, - struct most_channel_config *cfg, - struct kobject *parent, char *name) +static int aim_probe(struct most_interface *iface, int channel_id, +struct most_channel_config *cfg, +struct kobject *parent, char *name) { struct aim_channel *channel; unsigned long cl_flags; @@ -463,7 +463,7 @@ error_alloc_channel: return retval; } -struct most_aim cdev_aim = { +static struct most_aim cdev_aim = { .name = "cdev", .probe_channel = aim_probe, .disconnect_channel = aim_disconnect_channel, -- 2.1.4 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCHv6 1/5] Staging: most: mostcore/core.c. Fix "missing static keyword" warnings
On Thu, Aug 06, 2015 at 07:34:56PM +0200, Adrian Remonda wrote: > This is a patch to the mostcore/core.c file. It makes > several local functions and structures static to prevent global > visibility. > > v6: fixed warning "line over 80 characters" as pointed out by > Sudip Mukherjee The vX line doesn't belong here, it should be below the --- line so that it is not added to the commit itself. Please fix up all of these, and resend, I can't take them as-is. thanks, greg k-h ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
RE: [PATCH V4 7/7] Drivers: hv: vmbus: disable local interrupt when hvsock's callback is running
> -Original Message- > From: Dexuan Cui > Sent: Wednesday, August 5, 2015 9:44 PM > To: David Miller ; KY Srinivasan > > Cc: o...@aepfle.de; gre...@linuxfoundation.org; jasow...@redhat.com; > driverdev-devel@linuxdriverproject.org; linux-ker...@vger.kernel.org; > step...@networkplumber.org; stefa...@redhat.com; > net...@vger.kernel.org; a...@canonical.com; pebo...@tiscali.nl; > dan.carpen...@oracle.com > Subject: RE: [PATCH V4 7/7] Drivers: hv: vmbus: disable local interrupt when > hvsock's callback is running > > > -Original Message- > > From: devel [mailto:driverdev-devel-boun...@linuxdriverproject.org] On > Behalf > > Of Dexuan Cui > > Sent: Thursday, July 30, 2015 18:18 > > To: David Miller ; KY Srinivasan > > > Cc: o...@aepfle.de; gre...@linuxfoundation.org; jasow...@redhat.com; > > driverdev-devel@linuxdriverproject.org; linux-ker...@vger.kernel.org; > > step...@networkplumber.org; stefa...@redhat.com; > net...@vger.kernel.org; > > a...@canonical.com; pebo...@tiscali.nl; dan.carpen...@oracle.com > > Subject: RE: [PATCH V4 7/7] Drivers: hv: vmbus: disable local interrupt > when > > hvsock's callback is running > > > > > From: David Miller > > > Sent: Thursday, July 30, 2015 6:28 > > > > From: Dexuan Cui > > > > Date: Tue, 28 Jul 2015 05:35:30 -0700 > > > > > > > > In the SMP guest case, when the per-channel callback hvsock_events() > is > > > > running on virtual CPU A, if the guest tries to close the connection on > > > > virtual CPU B: we invoke vmbus_close() -> vmbus_close_internal(), > > > > then we can have trouble: on B, vmbus_close_internal() will send IPI > > > > reset_channel_cb() to A, trying to set channel->onchannel_callbackto > NULL; > > > > on A, if the IPI handler happens between > > > > "if (channel->onchannel_callback != NULL)" and invoking > > > > channel->onchannel_callback, we'll invoke a function pointer of NULL. > > > > > > > > This is why the patch is necessary. > > > > > > > Sorry, I do not accept that you must use conditional locking and/or > > > IRQ disabling. > > > > > > Boil it down to what is necessary for the least common denominator, > > > and use that unconditionally. > > > > Hi David, > > Thanks for the comment! > > > > I agree with you it's not clean to use conditional IRQ disabling. > > > > Here I didn't use unconditionally IRQ disabling because the Hyper-V netvsc > > and storvsc driver's vmbus event callbacks (i.e. netvsc_channel_cb() and > > storvsc_on_channel_callback()) may take relatively long time (e.g., netvsc > can > > operate at a speed of 10Gb) and I think it's bad to disable IRQ for long > > time > > when the callbacks are running in a tasklet context, e.g., the Hyper-V timer > > can be affected: see vmbus_isr() -> hv_process_timer_expiration(). > > > > To resolve the race condition between vmbus_close_internal() and > > process_chn_event() in SMP case, now I propose a new method: > > > > we can serialize the 2 paths by adding > > tasklet_disable(hv_context.event_dpc[channel->target_cpu]) and > > tasklet_enable(...) in vmbus_close_internal(). > > > > In this way, we need the least change and we can drop this patch. > > > > Please let me know your opinion. > > > > -- Dexuan > > Hi David, KY and all, > > May I know your opinion about my idea of adding tasklet_disable/enbable() > in vmbus_close_internal() and dropping this patch? Sorry for the delayed response; I think this is a reasonable solution. Send me the patch. Regards, K. Y > > Thanks, > -- Dexuan ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
RE: [PATCH V4 4/7] Drivers: hv: vmbus: add APIs to register callbacks to process hvsock connection
> -Original Message- > From: Dexuan Cui > Sent: Wednesday, August 5, 2015 9:54 PM > To: David Miller ; KY Srinivasan > > Cc: o...@aepfle.de; gre...@linuxfoundation.org; jasow...@redhat.com; > driverdev-devel@linuxdriverproject.org; linux-ker...@vger.kernel.org; > step...@networkplumber.org; stefa...@redhat.com; > net...@vger.kernel.org; a...@canonical.com; pebo...@tiscali.nl; > dan.carpen...@oracle.com > Subject: RE: [PATCH V4 4/7] Drivers: hv: vmbus: add APIs to register callbacks > to process hvsock connection > > > From: devel [mailto:driverdev-devel-boun...@linuxdriverproject.org] On > Behalf > > Of Dexuan Cui > > Sent: Thursday, July 30, 2015 18:20 > > To: David Miller ; KY Srinivasan > > > Cc: o...@aepfle.de; gre...@linuxfoundation.org; jasow...@redhat.com; > > driverdev-devel@linuxdriverproject.org; linux-ker...@vger.kernel.org; > > step...@networkplumber.org; stefa...@redhat.com; > net...@vger.kernel.org; > > a...@canonical.com; pebo...@tiscali.nl; dan.carpen...@oracle.com > > Subject: RE: [PATCH V4 4/7] Drivers: hv: vmbus: add APIs to register > callbacks to > > process hvsock connection > > > > > From: David Miller > > > Sent: Thursday, July 30, 2015 6:27 > > > > > > From: Dexuan Cui > > > Date: Tue, 28 Jul 2015 05:35:11 -0700 > > > > > > > With the 2 APIs supplied by the VMBus driver, the coming net/hvsock > driver > > > > can register 2 callbacks and can know when a new hvsock connection is > > > > offered by the host, and when a hvsock connection is being closed by > the > > > > host. > > > > > > > This is an extremely terrible interface. > > > > > > It's an opaque hook that allows on registry, and it's solve purpose > > > is to allow a backdoor call into a foreign driver in another module. > > > > > > These are exactly the things we try to avoid. > > > > Hi David, > > Thanks a lot for your reviewing and the suggestion! > > > > > Why not create a real abstraction where clients register an object, > > > that can be contained as a sub-member inside of their own driver > > > private, that provides the callback registry mechanism. > > Hi David, > Can you please have a look at my below questions? > > I like your idea of a real abstraction. Your answer would definitely > help me to implement that correctly. > > > Please pardon me for my inexperience. > > Can you please be a bit more specific? > > I guess maybe you're referencing a common design pattern in the driver > > code, so an example in some existing driver would be the best. :-) > > > > "clients register an object " -- > > does the "clients" mean the hvsock driver? > > and the "object" means the 2 callbacks? > > > > IMHO, here the vmbus driver has to synchronously pass the 2 events > > to the hvsock driver, so a "backdoor call into the hvsock driver" is > > inevitable anyway? > > > > e.g., in the path vmbus_process_offer() -> hvsock_process_offer(), the > > return value of the latter is important to the former, because on error > > the former needs to clean up some internal states of the vmbus driver > (that > > is, the "goto err_deq_chan"). > > > > > > > That way you can register multiple clients, do things like allow > > > AF_PACKET capturing of vmbus traffic, etc. > > > > I thought AF_PACKET can only capture IP packetsor Ethernet frames. > > Can it be used to capture AF_UNIX packet? > > If yes, I suppose we can consider making it work for AF_HYPERV too, > > if people ask for that. > > Dexuan, The notion of a channel on Hyper-V has been mapped to a device on Linux and the mechanism we have had of notifying the driver of the creation of the channel was through registering this device with the kernel (vmbus_device_create). The first exception to this was when we introduced multi-channel support that broke the assumption of this one to one mapping between the channel and Linux device. In the case of the sub-channels, we handled the driver notification issue via the sub-channel callback that the driver registers at the point of opening the channel. Perhaps we could make the sub-channel handling mechanism more generic to handle the case of VMSOCK as well? Regards, K. Y > > -- Dexuan > > Thanks, > -- Dexuan ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH 1/3] mei, make modules.alias UUID information easier to read
scripts/mod/file2alias.c:add_uuid() munges a UUID into a single string which does not conform to the standard little endian UUID. This patch changes add_uuid() to use the UUID correctly so that future drivers which use UUID matches can simply use the %pUL format, and modifies the mei driver with those changes. Signed-off-by: Prarit Bhargava --- drivers/misc/mei/bus.c |6 ++ include/linux/mod_devicetable.h |4 scripts/mod/file2alias.c|9 ++--- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/drivers/misc/mei/bus.c b/drivers/misc/mei/bus.c index 458aa5a..457e132 100644 --- a/drivers/misc/mei/bus.c +++ b/drivers/misc/mei/bus.c @@ -141,8 +141,7 @@ static ssize_t modalias_show(struct device *dev, struct device_attribute *a, const uuid_le *uuid = mei_me_cl_uuid(device->me_cl); size_t len; - len = snprintf(buf, PAGE_SIZE, "mei:%s:" MEI_CL_UUID_FMT ":", - device->name, MEI_CL_UUID_ARGS(uuid->b)); + len = snprintf(buf, PAGE_SIZE, "mei:%s:%pUl:", device->name, uuid); return (len >= PAGE_SIZE) ? (PAGE_SIZE - 1) : len; } @@ -167,8 +166,7 @@ static int mei_cl_uevent(struct device *dev, struct kobj_uevent_env *env) if (add_uevent_var(env, "MEI_CL_NAME=%s", device->name)) return -ENOMEM; - if (add_uevent_var(env, "MODALIAS=mei:%s:" MEI_CL_UUID_FMT ":", - device->name, MEI_CL_UUID_ARGS(uuid->b))) + if (add_uevent_var(env, "MODALIAS=mei:%s:%pUl:", device->name, uuid)) return -ENOMEM; return 0; diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h index 34f25b7..becda6f 100644 --- a/include/linux/mod_devicetable.h +++ b/include/linux/mod_devicetable.h @@ -601,10 +601,6 @@ struct ipack_device_id { #define MEI_CL_MODULE_PREFIX "mei:" #define MEI_CL_NAME_SIZE 32 -#define MEI_CL_UUID_FMT "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x" -#define MEI_CL_UUID_ARGS(_u) \ - _u[0], _u[1], _u[2], _u[3], _u[4], _u[5], _u[6], _u[7], \ - _u[8], _u[9], _u[10], _u[11], _u[12], _u[13], _u[14], _u[15] /** * struct mei_cl_device_id - MEI client device identifier diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c index 5f20882..8a46c60 100644 --- a/scripts/mod/file2alias.c +++ b/scripts/mod/file2alias.c @@ -137,10 +137,13 @@ static inline void add_wildcard(char *str) static inline void add_uuid(char *str, uuid_le uuid) { int len = strlen(str); - int i; - for (i = 0; i < 16; i++) - sprintf(str + len + (i << 1), "%02x", uuid.b[i]); + sprintf(str + len, + "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x", + uuid.b[3], uuid.b[2], uuid.b[1], uuid.b[0], + uuid.b[5], uuid.b[4], uuid.b[7], uuid.b[6], + uuid.b[8], uuid.b[9], uuid.b[10], uuid.b[11], + uuid.b[12], uuid.b[13], uuid.b[14], uuid.b[15]); } /** -- 1.7.9.3 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH 0/3] Unisys visorbus driver autoloading patches
On 08/06/2015 02:28 PM, Prarit Bhargava wrote: > Greg, > > These are patches that correctly implement driver autoloading for the > visorbus drivers. These patches do touch code outside of drivers/staging, > however, since they are dependent on code in the drivers/staging area I > think the correct path is to push these through drivers/staging. (This is > an unfortunate chicken-and-egg problem with drivers/staging) > > If this is incorrect, please let me know what you think the best mailing > list would be. > Greg, ignore this. I just saw Dan's response to my earlier suggestion of a one line MODULE_ALIAS() with a warning approach to this fix. Self-NACK on this, and I'll post an updated simple patch tomorrow AM. My apologies for the noise, and thanks Dan. P. ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
RE: randconfig build error with next-20150806, in arch/x86/kernel/cpu/mshyperv.c
> -Original Message- > From: Jim Davis [mailto:jim.ep...@gmail.com] > Sent: Thursday, August 6, 2015 7:55 AM > To: Stephen Rothwell ; linux-next n...@vger.kernel.org>; linux-kernel ; KY > Srinivasan ; Haiyang Zhang > ; tglx ; Ingo Molnar > ; hpa ; x86 ; > de...@linuxdriverproject.org > Subject: randconfig build error with next-20150806, in > arch/x86/kernel/cpu/mshyperv.c > > Building with the attached random configuration file, > > warning: (INTEL_MIC_HOST && CAIF_VIRTIO && VHOST_NET && > VHOST_SCSI && > VHOST_NET && VHOST_SCSI) selects VHOST_RING which has unmet direct > dependencies (NETDEVICES && CAIF_VIRTIO || VIRTUALIZATION) > > arch/x86/built-in.o: In function `hv_machine_crash_shutdown': > /home/jim/linux-next/arch/x86/kernel/cpu/mshyperv.c:112: undefined > reference to `native_machine_crash_shutdown' Thanks Jim; I am sending out a patch to address the issue in mshyperv.c. Regards, K. Y > > -- > Jim ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH 1/1] X86: mshyperv.c: Fix a compilation issue.
Building with a random configuration file, this build failure was reported: arch/x86/built-in.o: In function `hv_machine_crash_shutdown': arch/x86/kernel/cpu/mshyperv.c:112: undefined reference to `native_machine_crash_shutdown' This patch fixes the problem Reported-by: Jim Davis Signed-off-by: K. Y. Srinivasan --- arch/x86/kernel/cpu/mshyperv.c |2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c index f794bfa..0faed5e0 100644 --- a/arch/x86/kernel/cpu/mshyperv.c +++ b/arch/x86/kernel/cpu/mshyperv.c @@ -109,7 +109,9 @@ static void hv_machine_crash_shutdown(struct pt_regs *regs) { if (hv_crash_handler) hv_crash_handler(regs); +#ifdef CONFIG_KEXEC_CORE native_machine_crash_shutdown(regs); +#endif } -- 1.7.4.1 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH 1/1] X86: mshyperv.c: Fix a compilation issue.
On Thu, Aug 06, 2015 at 02:41:24PM -0700, K. Y. Srinivasan wrote: > Building with a random configuration file, this build failure > was reported: > > arch/x86/built-in.o: In function `hv_machine_crash_shutdown': > arch/x86/kernel/cpu/mshyperv.c:112: undefined > reference to `native_machine_crash_shutdown' > > This patch fixes the problem > > Reported-by: Jim Davis > Signed-off-by: K. Y. Srinivasan > --- > arch/x86/kernel/cpu/mshyperv.c |2 ++ > 1 files changed, 2 insertions(+), 0 deletions(-) > > diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c > index f794bfa..0faed5e0 100644 > --- a/arch/x86/kernel/cpu/mshyperv.c > +++ b/arch/x86/kernel/cpu/mshyperv.c > @@ -109,7 +109,9 @@ static void hv_machine_crash_shutdown(struct pt_regs > *regs) > { > if (hv_crash_handler) > hv_crash_handler(regs); > +#ifdef CONFIG_KEXEC_CORE > native_machine_crash_shutdown(regs); > +#endif Why is kexec the factor here? And if it really does, can't it just be CONFIG_KEXEC, or, can kexec provide a "dummy" inline function so that you don't have to have a #ifdef in a .c file? thanks, greg k-h ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCHv6 3/5] Staging: most: hdm-usb/hdm_usb.c. Fix "missing static keyword" warnings
On Thu, 6 Aug 2015 19:34:58 +0200 Adrian Remonda wrote: > This is a patch to the most/hdm-usb/hdm_usb.c file. It > makes several local functions and structures static to prevent global > visibility. > > v6: fixed alignment with parameter list of a function. > > Signed-off-by: Adrian Remonda > --- > drivers/staging/most/hdm-usb/hdm_usb.c | 16 > 1 file changed, 8 insertions(+), 8 deletions(-) > > diff --git a/drivers/staging/most/hdm-usb/hdm_usb.c > b/drivers/staging/most/hdm-usb/hdm_usb.c > index 514ce3529b7a..305303f2f17c 100644 > --- a/drivers/staging/most/hdm-usb/hdm_usb.c > +++ b/drivers/staging/most/hdm-usb/hdm_usb.c > @@ -290,7 +290,7 @@ static unsigned int get_stream_frame_size(struct > most_channel_config *cfg) > * > * Returns 0 on success or error code otherwise. > */ > -int hdm_poison_channel(struct most_interface *iface, int channel) > +static int hdm_poison_channel(struct most_interface *iface, int channel) > { > struct most_dev *mdev; > > @@ -328,7 +328,7 @@ int hdm_poison_channel(struct most_interface *iface, int > channel) > * This inserts the INIC hardware specific padding bytes into a streaming > * channel's buffer > */ > -int hdm_add_padding(struct most_dev *mdev, int channel, struct mbo *mbo) > +static int hdm_add_padding(struct most_dev *mdev, int channel, struct mbo > *mbo) > { > struct most_channel_config *conf = &mdev->conf[channel]; > unsigned int j, num_frames, frame_size; > @@ -365,7 +365,7 @@ int hdm_add_padding(struct most_dev *mdev, int channel, > struct mbo *mbo) > * This takes the INIC hardware specific padding bytes off a streaming > * channel's buffer. > */ > -int hdm_remove_padding(struct most_dev *mdev, int channel, struct mbo *mbo) > +static int hdm_remove_padding(struct most_dev *mdev, int channel, struct mbo > *mbo) > { > unsigned int j, num_frames, frame_size; > struct most_channel_config *const conf = &mdev->conf[channel]; > @@ -644,7 +644,7 @@ static void hdm_read_completion(struct urb *urb) > * > * Context: Could in _some_ cases be interrupt! > */ > -int hdm_enqueue(struct most_interface *iface, int channel, struct mbo *mbo) > +static int hdm_enqueue(struct most_interface *iface, int channel, struct mbo > *mbo) > { > struct most_dev *mdev; > struct buf_anchor *anchor; > @@ -743,8 +743,8 @@ _error: > * @channel: channel ID > * @conf: structure that holds the configuration information > */ > -int hdm_configure_channel(struct most_interface *iface, int channel, > - struct most_channel_config *conf) > +static int hdm_configure_channel(struct most_interface *iface, int channel, > + struct most_channel_config *conf) Again, please keep the original alignment and start the second line of function arguments right beneath the first argument or else this function will be different from others. Thanks, Chris > { > unsigned int num_frames; > unsigned int frame_size; > @@ -824,7 +824,7 @@ exit: > * This triggers the USB vendor requests to read the hardware address and > * the current link status of the attached device. > */ > -int hdm_update_netinfo(struct most_dev *mdev) > +static int hdm_update_netinfo(struct most_dev *mdev) > { > struct device *dev = &mdev->usb_device->dev; > int i; > @@ -873,7 +873,7 @@ int hdm_update_netinfo(struct most_dev *mdev) > * polls for the NI state of the INIC every 2 seconds. > * > */ > -void hdm_request_netinfo(struct most_interface *iface, int channel) > +static void hdm_request_netinfo(struct most_interface *iface, int channel) > { > struct most_dev *mdev; > ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH 2/3] drivers/staging: visorbus, add module autoload functionality
This patch adds module autoload functionality to the visorbus bus drivers (currently only visornic is in tree). This patch adds visorbus alias creation entries to modpost, and moves the appropriate structure define into include/linux/mod_devicetable.h. Signed-off-by: Prarit Bhargava --- drivers/staging/unisys/include/visorbus.h |8 drivers/staging/unisys/visorbus/visorbus_main.c |1 + include/linux/mod_devicetable.h | 11 +++ scripts/mod/devicetable-offsets.c |4 scripts/mod/file2alias.c| 11 +++ 5 files changed, 27 insertions(+), 8 deletions(-) diff --git a/drivers/staging/unisys/include/visorbus.h b/drivers/staging/unisys/include/visorbus.h index e4a21e4..758ca94 100644 --- a/drivers/staging/unisys/include/visorbus.h +++ b/drivers/staging/unisys/include/visorbus.h @@ -53,14 +53,6 @@ struct visorchipset_state { /* Remaining bits in this 32-bit word are unused. */ }; -/** This struct describes a specific Supervisor channel, by providing its - * GUID, name, and sizes. - */ -struct visor_channeltype_descriptor { - const uuid_le guid; - const char *name; -}; - /** Information provided by each visor driver when it registers with the * visorbus driver. */ diff --git a/drivers/staging/unisys/visorbus/visorbus_main.c b/drivers/staging/unisys/visorbus/visorbus_main.c index 6db4719..df411ee 100644 --- a/drivers/staging/unisys/visorbus/visorbus_main.c +++ b/drivers/staging/unisys/visorbus/visorbus_main.c @@ -16,6 +16,7 @@ */ #include +#include #include "visorbus.h" #include "visorbus_private.h" diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h index becda6f..b849f19 100644 --- a/include/linux/mod_devicetable.h +++ b/include/linux/mod_devicetable.h @@ -646,4 +646,15 @@ struct ulpi_device_id { kernel_ulong_t driver_data; }; +/** + * struct visor_channeltype_descriptor - VISORBUS Channel Type Descriptor + * @guid: UUID for the channel + * @name: name of the channel + * + * describes a specific Supervisor channel, by providing its * GUID and name. + */ +struct visor_channeltype_descriptor { + uuid_le guid; + char *name; +}; #endif /* LINUX_MOD_DEVICETABLE_H */ diff --git a/scripts/mod/devicetable-offsets.c b/scripts/mod/devicetable-offsets.c index e70fcd1..4b8797b 100644 --- a/scripts/mod/devicetable-offsets.c +++ b/scripts/mod/devicetable-offsets.c @@ -196,5 +196,9 @@ int main(void) DEVID_FIELD(ulpi_device_id, vendor); DEVID_FIELD(ulpi_device_id, product); + DEVID(visor_channeltype_descriptor); + DEVID_FIELD(visor_channeltype_descriptor, guid); + DEVID_FIELD(visor_channeltype_descriptor, name); + return 0; } diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c index 8a46c60..f3d011f 100644 --- a/scripts/mod/file2alias.c +++ b/scripts/mod/file2alias.c @@ -1253,6 +1253,17 @@ static int do_ulpi_entry(const char *filename, void *symval, } ADD_TO_DEVTABLE("ulpi", ulpi_device_id, do_ulpi_entry); +static int do_visorbus_entry(const char *filename, void *symval, char *alias) +{ + DEF_FIELD_ADDR(symval, visor_channeltype_descriptor, guid); + + sprintf(alias, "visorbus:"); + add_uuid(alias, *guid); + + return 1; +} +ADD_TO_DEVTABLE("visorbus", visor_channeltype_descriptor, do_visorbus_entry); + /* Does namelen bytes of name exactly match the symbol? */ static bool sym_is(const char *name, unsigned namelen, const char *symbol) { -- 1.7.9.3 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH 3/3] drivers, staging, unisys Add visornic module autoloading code
This patch adds an module alias and a MODULE_DEVICE_TABLE to autoload the visornic driver when an appropriate device is created by the visorbus. Signed-off-by: Prarit Bhargava --- drivers/staging/unisys/visornic/visornic_main.c |1 + 1 file changed, 1 insertion(+) diff --git a/drivers/staging/unisys/visornic/visornic_main.c b/drivers/staging/unisys/visornic/visornic_main.c index 7100744..9d31383 100644 --- a/drivers/staging/unisys/visornic/visornic_main.c +++ b/drivers/staging/unisys/visornic/visornic_main.c @@ -72,6 +72,7 @@ static struct visor_channeltype_descriptor visornic_channel_types[] = { { SPAR_VNIC_CHANNEL_PROTOCOL_UUID, "ultravnic" }, { NULL_UUID_LE, NULL } }; +MODULE_DEVICE_TABLE(visorbus, visornic_channel_types); /* This is used to tell the visor bus driver which types of visor devices * we support, and what functions to call when a visor device that we support -- 1.7.9.3 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH 0/3] Unisys visorbus driver autoloading patches
Greg, These are patches that correctly implement driver autoloading for the visorbus drivers. These patches do touch code outside of drivers/staging, however, since they are dependent on code in the drivers/staging area I think the correct path is to push these through drivers/staging. (This is an unfortunate chicken-and-egg problem with drivers/staging) If this is incorrect, please let me know what you think the best mailing list would be. Signed-off-by: Prarit Bhargava Prarit Bhargava (3): mei, make modules.alias UUID information easier to read drivers/staging: visorbus, add module autoload functionality drivers, staging, unisys Add visornic module autoloading code drivers/misc/mei/bus.c |6 ++ drivers/staging/unisys/include/visorbus.h |8 drivers/staging/unisys/visorbus/visorbus_main.c |1 + drivers/staging/unisys/visornic/visornic_main.c |1 + include/linux/mod_devicetable.h | 15 +++ scripts/mod/devicetable-offsets.c |4 scripts/mod/file2alias.c| 20 +--- 7 files changed, 36 insertions(+), 19 deletions(-) -- 1.7.9.3 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH] staging: fsl-mc: add DPAA2 overview readme
Signed-off-by: Stuart Yoder --- drivers/staging/fsl-mc/README.txt | 364 ++ drivers/staging/fsl-mc/TODO | 4 - 2 files changed, 364 insertions(+), 4 deletions(-) create mode 100644 drivers/staging/fsl-mc/README.txt diff --git a/drivers/staging/fsl-mc/README.txt b/drivers/staging/fsl-mc/README.txt new file mode 100644 index 000..8214102 --- /dev/null +++ b/drivers/staging/fsl-mc/README.txt @@ -0,0 +1,364 @@ +Copyright (C) 2015 Freescale Semiconductor Inc. + +DPAA2 (Data Path Acceleration Architecture Gen2) + + +This document provides an overview of the Freescale DPAA2 architecture +and how it is integrated into the Linux kernel. + +Contents summary + -DPAA2 overview + -Overview of DPAA2 objects + -DPAA2 Linux driver architecture overview +-bus driver +-dprc driver +-allocator +-dpio driver +-Ethernet +-mac + +DPAA2 Overview +-- + +DPAA2 is a hardware architecture designed for high-speeed network +packet processing. DPAA2 consists of sophisticated mechanisms for +processing Ethernet packets, queue management, buffer management, +autonomous L2 switching, virtual Ethernet bridging, and accelerator +(e.g. crypto) sharing. + +A DPAA2 hardware component called the Management Complex (or MC) manages the +DPAA2 hardware resources. The MC provides an object-based abstraction for +software drivers to use the DPAA2 hardware. + +The MC uses DPAA2 hardware resources such as queues, buffer pools, and +network ports to create functional objects/devices such as network +interfaces, an L2 switch, or accelerator instances. + +The MC provides memory-mapped I/O command interfaces (MC portals) +which DPAA2 software drivers use to operate on DPAA2 objects: + + +--+ + | OS | + |DPAA2 drivers | + | || + +-|+ + | + | (create,discover,connect + | config,use,destroy) + | + DPAA2 | + +| mc portal |-+ + | || + | +- - - - - - - - - - - - -V- - -+ | + | | | | + | | Management Complex (MC) | | + | | | | + | +- - - - - - - - - - - - - - - -+ | + | | + | Hardware Hardware | + | Resources Objects| + | - ---| + | -queues -DPRC | + | -buffer pools -DPMCP | + | -Eth MACs/ports -DPIO | + | -network interface-DPNI | + | profiles -DPMAC | + | -queue portals-DPBP | + | -MC portals... | + | ... | + | | + +--+ + +The MC mediates operations such as create, discover, +connect, configuration, and destroy. Fast-path operations +on data, such as packet transmit/receive, are not mediated by +the MC and are done directly using memory mapped regions in +DPIO objects. + +Overview of DPAA2 Objects +- +The section provides a brief overview of some key objects +in the DPAA2 hardware. A simple scenario is described illustrating +the objects involved in creating a network interfaces. + +-DPRC (Datapath Resource Container) + +A DPRC is an container object that holds all the other +types of DPAA2 objects. In the example diagram below there +are 8 objects of 5 types (DPMCP, DPIO, DPBP, DPNI, and DPMAC) +in the container. + ++-+ +| DPRC| +| | +| +---+ +---+ +---+ +---+ +---+ | +| | DPMCP | | DPIO | | DPBP | | DPNI | | DPMAC | | +| +---+ +---+ +---+ +---+---+ +---+---+ | +| | DPMCP | | DPIO | | +| +---+ +---+ | +| | DPMCP | | +| +---+ | +| | ++-+ + +From the point of view of an OS, a DPRC is b
Re: [PATCH] staging: fsl-mc: add DPAA2 overview readme
On Thu, Aug 06, 2015 at 05:41:57PM -0500, Stuart Yoder wrote: > Signed-off-by: Stuart Yoder I need something for the changelog text, I can't accept a blank one. thanks, greg k-h ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH 2/4] staging: wilc1000: remove WILC_memset function
Remove WILC_memset function because it is changed to memset. Signed-off-by: Chaehyun Lim --- drivers/staging/wilc1000/wilc_strutils.c | 9 - drivers/staging/wilc1000/wilc_strutils.h | 12 2 files changed, 21 deletions(-) diff --git a/drivers/staging/wilc1000/wilc_strutils.c b/drivers/staging/wilc1000/wilc_strutils.c index e014595..c15375e 100644 --- a/drivers/staging/wilc1000/wilc_strutils.c +++ b/drivers/staging/wilc1000/wilc_strutils.c @@ -25,15 +25,6 @@ void WILC_memcpy_INTERNAL(void *pvTarget, const void *pvSource, u32 u32Count) memcpy(pvTarget, pvSource, u32Count); } -/*! - * @authorsyounan - * @date 18 Aug 2010 - * @version 1.0 - */ -void *WILC_memset(void *pvTarget, u8 u8SetValue, u32 u32Count) -{ - return memset(pvTarget, u8SetValue, u32Count); -} /*! * @authorsyounan diff --git a/drivers/staging/wilc1000/wilc_strutils.h b/drivers/staging/wilc1000/wilc_strutils.h index d144557..acc0ca4 100644 --- a/drivers/staging/wilc1000/wilc_strutils.h +++ b/drivers/staging/wilc1000/wilc_strutils.h @@ -71,18 +71,6 @@ static WILC_ErrNo WILC_memcpy(void *pvTarget, const void *pvSource, u32 u32Count } } -/*! - * @brief Sets the contents of a memory buffer with the given value - * @param[in] pvTarget the target buffer which contsnts will be set - * @param[in] u8SetValue the value to be used - * @param[in] u32Count the size of the memory buffer - * @returnvalue of pvTarget - * @note this function repeats the functionality of standard memset - * @authorsyounan - * @date 18 Aug 2010 - * @version 1.0 - */ -void *WILC_memset(void *pvTarget, u8 u8SetValue, u32 u32Count); /*! * @brief copies the contents of source string into the target string -- 1.9.1 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH 1/4] staging: wilc1000: use memset instead of WILC_memset
Use memset instead of WILC_memset. Signed-off-by: Chaehyun Lim --- drivers/staging/wilc1000/coreconfigurator.c | 16 +-- drivers/staging/wilc1000/host_interface.c | 134 +++--- drivers/staging/wilc1000/wilc_wfi_cfgoperations.c | 16 +-- 3 files changed, 83 insertions(+), 83 deletions(-) diff --git a/drivers/staging/wilc1000/coreconfigurator.c b/drivers/staging/wilc1000/coreconfigurator.c index 342a336..93942b2 100644 --- a/drivers/staging/wilc1000/coreconfigurator.c +++ b/drivers/staging/wilc1000/coreconfigurator.c @@ -681,9 +681,9 @@ s32 CoreConfiguratorInit(void) goto _fail_; } - WILC_memset((void *)gps8ConfigPacket, 0, MAX_PACKET_BUFF_SIZE); + memset((void *)gps8ConfigPacket, 0, MAX_PACKET_BUFF_SIZE); - WILC_memset((void *)(&gstrConfigPktInfo), 0, sizeof(tstrConfigPktInfo)); + memset((void *)(&gstrConfigPktInfo), 0, sizeof(tstrConfigPktInfo)); _fail_: return s32Error; } @@ -812,7 +812,7 @@ s32 ParseNetworkInfo(u8 *pu8MsgBuffer, tstrNetworkInfo **ppstrNetworkInfo) u32 u32Tsf_Hi; pstrNetworkInfo = (tstrNetworkInfo *)WILC_MALLOC(sizeof(tstrNetworkInfo)); - WILC_memset((void *)(pstrNetworkInfo), 0, sizeof(tstrNetworkInfo)); + memset((void *)(pstrNetworkInfo), 0, sizeof(tstrNetworkInfo)); pstrNetworkInfo->s8rssi = pu8WidVal[0]; @@ -862,7 +862,7 @@ s32 ParseNetworkInfo(u8 *pu8MsgBuffer, tstrNetworkInfo **ppstrNetworkInfo) if (u16IEsLen > 0) { pstrNetworkInfo->pu8IEs = (u8 *)WILC_MALLOC(u16IEsLen); - WILC_memset((void *)(pstrNetworkInfo->pu8IEs), 0, u16IEsLen); + memset((void *)(pstrNetworkInfo->pu8IEs), 0, u16IEsLen); WILC_memcpy(pstrNetworkInfo->pu8IEs, pu8IEs, u16IEsLen); } @@ -929,7 +929,7 @@ s32 ParseAssocRespInfo(u8 *pu8Buffer, u32 u32BufferLen, u16 u16IEsLen = 0; pstrConnectRespInfo = (tstrConnectRespInfo *)WILC_MALLOC(sizeof(tstrConnectRespInfo)); - WILC_memset((void *)(pstrConnectRespInfo), 0, sizeof(tstrConnectRespInfo)); + memset((void *)(pstrConnectRespInfo), 0, sizeof(tstrConnectRespInfo)); /* u16AssocRespLen = pu8Buffer[0]; */ u16AssocRespLen = (u16)u32BufferLen; @@ -949,7 +949,7 @@ s32 ParseAssocRespInfo(u8 *pu8Buffer, u32 u32BufferLen, u16IEsLen = u16AssocRespLen - (CAP_INFO_LEN + STATUS_CODE_LEN + AID_LEN); pstrConnectRespInfo->pu8RespIEs = (u8 *)WILC_MALLOC(u16IEsLen); - WILC_memset((void *)(pstrConnectRespInfo->pu8RespIEs), 0, u16IEsLen); + memset((void *)(pstrConnectRespInfo->pu8RespIEs), 0, u16IEsLen); WILC_memcpy(pstrConnectRespInfo->pu8RespIEs, pu8IEs, u16IEsLen); pstrConnectRespInfo->u16RespIEsLen = u16IEsLen; @@ -1023,7 +1023,7 @@ s32 ParseSurveyResults(u8 ppu8RcvdSiteSurveyResults[][MAX_SURVEY_RESULT_FRAG_SIZ WILC_ERRORREPORT(s32Error, WILC_NO_MEM); } - WILC_memset((void *)(pstrSurveyResults), 0, u32SurveyResultsCount * sizeof(wid_site_survey_reslts_s)); + memset((void *)(pstrSurveyResults), 0, u32SurveyResultsCount * sizeof(wid_site_survey_reslts_s)); u32SurveyResultsCount = 0; @@ -1871,7 +1871,7 @@ s32 ConfigWaitResponse(char *pcRespBuffer, s32 s32MaxRespBuffLen, s32 *ps32Bytes *ps32BytesRead = gstrConfigPktInfo.s32BytesRead; } - WILC_memset((void *)(&gstrConfigPktInfo), 0, sizeof(tstrConfigPktInfo)); + memset((void *)(&gstrConfigPktInfo), 0, sizeof(tstrConfigPktInfo)); return s32Error; } diff --git a/drivers/staging/wilc1000/host_interface.c b/drivers/staging/wilc1000/host_interface.c index 02aaf39..0c06ac2 100644 --- a/drivers/staging/wilc1000/host_interface.c +++ b/drivers/staging/wilc1000/host_interface.c @@ -1494,8 +1494,8 @@ static s32 Handle_Connect(void *drvHandler, tstrHostIFconnectAttr *pstrHostIFcon PRINT_D(GENERIC_DBG, "Handling connect request\n"); #ifndef CONNECT_DIRECT - WILC_memset(gapu8RcvdSurveyResults[0], 0, MAX_SURVEY_RESULT_FRAG_SIZE); - WILC_memset(gapu8RcvdSurveyResults[1], 0, MAX_SURVEY_RESULT_FRAG_SIZE); + memset(gapu8RcvdSurveyResults[0], 0, MAX_SURVEY_RESULT_FRAG_SIZE); + memset(gapu8RcvdSurveyResults[1], 0, MAX_SURVEY_RESULT_FRAG_SIZE); PRINT_D(HOSTINF_DBG, "Getting site survey results\n"); @@ -1972,7 +1972,7 @@ static s32 Handle_Connect(void *drvHandler, tstrHostIFconnectAttr *pstrHostIFcon PRINT_D(HOSTINF_DBG, "could not start connecting to the required network\n"); - WILC_memset(&strConnectInfo, 0, sizeof(tstrConnectInfo)); + memset(&strConnectInfo, 0, sizeof(tstrConnectInfo)); if (pstrHostIFconnectAttr->pfConnectResult != NULL) { if (pstrHostIFconnectA
[PATCH 3/4] staging: wilc1000: use memcmp instead of WILC_memcmp
Use memcmp instead of WILC_memcmp. Signed-off-by: Chaehyun Lim --- drivers/staging/wilc1000/host_interface.c | 20 +++--- drivers/staging/wilc1000/wilc_wfi_cfgoperations.c | 32 +++ 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/drivers/staging/wilc1000/host_interface.c b/drivers/staging/wilc1000/host_interface.c index 0c06ac2..bc06d56 100644 --- a/drivers/staging/wilc1000/host_interface.c +++ b/drivers/staging/wilc1000/host_interface.c @@ -801,7 +801,7 @@ s32 Handle_get_IPAddress(void *drvHandler, u8 *pu8IPAddr, u8 idx) /*get the value by searching the local copy*/ WILC_FREE(strWID.ps8WidVal); - if (WILC_memcmp(gs8GetIP[idx], gs8SetIP[idx], IP_ALEN) != 0) + if (memcmp(gs8GetIP[idx], gs8SetIP[idx], IP_ALEN) != 0) host_int_setup_ipaddress((WILC_WFIDrvHandle)pstrWFIDrv, gs8SetIP[idx], idx); if (s32Error != WILC_SUCCESS) { @@ -1527,7 +1527,7 @@ static s32 Handle_Connect(void *drvHandler, tstrHostIFconnectAttr *pstrHostIFcon for (i = 0; i < pstrWFIDrv->u32SurveyResultsCount; i++) { - if (WILC_memcmp(pstrWFIDrv->astrSurveyResults[i].SSID, + if (memcmp(pstrWFIDrv->astrSurveyResults[i].SSID, pstrHostIFconnectAttr->pu8ssid, pstrHostIFconnectAttr->ssidLen) == 0) { PRINT_INFO(HOSTINF_DBG, "Network with required SSID is found %s\n", pstrHostIFconnectAttr->pu8ssid); @@ -1540,7 +1540,7 @@ static s32 Handle_Connect(void *drvHandler, tstrHostIFconnectAttr *pstrHostIFcon /* BSSID is also passed from the user, so decision of matching * should consider also this passed BSSID */ - if (WILC_memcmp(pstrWFIDrv->astrSurveyResults[i].BSSID, + if (memcmp(pstrWFIDrv->astrSurveyResults[i].BSSID, pstrHostIFconnectAttr->pu8bssid, 6) == 0) { PRINT_INFO(HOSTINF_DBG, "BSSID is passed from the user and matched\n"); @@ -1648,7 +1648,7 @@ static s32 Handle_Connect(void *drvHandler, tstrHostIFconnectAttr *pstrHostIFcon /* if we try to connect to an already connected AP then discard the request */ - if (WILC_memcmp(pstrHostIFconnectAttr->pu8bssid, u8ConnectedSSID, ETH_ALEN) == 0) { + if (memcmp(pstrHostIFconnectAttr->pu8bssid, u8ConnectedSSID, ETH_ALEN) == 0) { s32Error = WILC_SUCCESS; PRINT_ER("Trying to connect to an already connected AP, Discard connect request\n"); @@ -1720,7 +1720,7 @@ static s32 Handle_Connect(void *drvHandler, tstrHostIFconnectAttr *pstrHostIFcon u32WidsCount++; /*BugID_5137*/ - if (WILC_memcmp("DIRECT-", pstrHostIFconnectAttr->pu8ssid, 7)) { + if (memcmp("DIRECT-", pstrHostIFconnectAttr->pu8ssid, 7)) { gu32FlushedInfoElemAsocSize = pstrWFIDrv->strWILC_UsrConnReq.ConnReqIEsLen; gu8FlushedInfoElemAsoc = WILC_MALLOC(gu32FlushedInfoElemAsocSize); @@ -1735,7 +1735,7 @@ static s32 Handle_Connect(void *drvHandler, tstrHostIFconnectAttr *pstrHostIFcon u32WidsCount++; /*BugID_5137*/ - if (WILC_memcmp("DIRECT-", pstrHostIFconnectAttr->pu8ssid, 7)) + if (memcmp("DIRECT-", pstrHostIFconnectAttr->pu8ssid, 7)) gu8Flushed11iMode = pstrWFIDrv->strWILC_UsrConnReq.u8security; PRINT_INFO(HOSTINF_DBG, "Encrypt Mode = %x\n", pstrWFIDrv->strWILC_UsrConnReq.u8security); @@ -1748,7 +1748,7 @@ static s32 Handle_Connect(void *drvHandler, tstrHostIFconnectAttr *pstrHostIFcon u32WidsCount++; /*BugID_5137*/ - if (WILC_memcmp("DIRECT-", pstrHostIFconnectAttr->pu8ssid, 7)) + if (memcmp("DIRECT-", pstrHostIFconnectAttr->pu8ssid, 7)) gu8FlushedAuthType = (u8)pstrWFIDrv->strWILC_UsrConnReq.tenuAuth_type; PRINT_INFO(HOSTINF_DBG, "Authentication Type = %x\n", pstrWFIDrv->strWILC_UsrConnReq.tenuAuth_type); @@ -1803,7 +1803,7 @@ static s32 Handle_Connect(void *drvHandler, tstrHostIFconnectAttr *pstrHostIFcon strWIDList[u32WidsCount].ps8WidVal = WILC_MALLOC(strWIDList[u32WidsCount].s32ValueSize); /*BugID_5137*/ - if (WILC_memcmp("DIRECT-", pstrHostIFconnectAttr->pu8ssid, 7)) { + if (memcmp("DIRECT-", pstrHostIFconnectAttr->pu8ssid, 7)) { gu32FlushedJoinReqSize = strWIDList[u32WidsCount].s32ValueSize; gu8FlushedJoinReq = WILC_MALLOC(gu32FlushedJoinReqSize); } @@ -1940,7 +1940,7 @@ static s32 Handle_Connect(void *drvHandler, tstrHostIFconnectAttr *pstrHostIFcon /* // */ /*BugID_5137*/ - if (WILC_memcmp("DIRECT-", pstrHostIFconnectAttr->pu8ssid, 7))
[PATCH 4/4] staging: wilc1000: remove WILC_memcmp function
Remove WILC_memcmp function because it is changed to memcmp. Signed-off-by: Chaehyun Lim --- drivers/staging/wilc1000/wilc_strutils.c | 9 - drivers/staging/wilc1000/wilc_strutils.h | 13 - 2 files changed, 22 deletions(-) diff --git a/drivers/staging/wilc1000/wilc_strutils.c b/drivers/staging/wilc1000/wilc_strutils.c index c15375e..3600706 100644 --- a/drivers/staging/wilc1000/wilc_strutils.c +++ b/drivers/staging/wilc1000/wilc_strutils.c @@ -4,15 +4,6 @@ #include "wilc_strutils.h" -/*! - * @authorsyounan - * @date 18 Aug 2010 - * @version 1.0 - */ -s32 WILC_memcmp(const void *pvArg1, const void *pvArg2, u32 u32Count) -{ - return memcmp(pvArg1, pvArg2, u32Count); -} /*! diff --git a/drivers/staging/wilc1000/wilc_strutils.h b/drivers/staging/wilc1000/wilc_strutils.h index acc0ca4..9e3c5d9 100644 --- a/drivers/staging/wilc1000/wilc_strutils.h +++ b/drivers/staging/wilc1000/wilc_strutils.h @@ -14,19 +14,6 @@ #include #include "wilc_errorsupport.h" -/*! - * @brief Compares two memory buffers - * @param[in] pvArg1 pointer to the first memory location - * @param[in] pvArg2 pointer to the second memory location - * @param[in] u32Count the size of the memory buffers - * @return0 if the 2 buffers are equal, 1 if pvArg1 is bigger than pvArg2, - * -1 if pvArg1 smaller than pvArg2 - * @note this function repeats the functionality of standard memcmp - * @authorsyounan - * @date 18 Aug 2010 - * @version 1.0 - */ -s32 WILC_memcmp(const void *pvArg1, const void *pvArg2, u32 u32Count); /*! * @brief Internal implementation for memory copy -- 1.9.1 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH 1/4] staging: wilc1000: use memset instead of WILC_memset
Hi Chaehyun, On Fri, Aug 7, 2015 at 10:02 AM, Chaehyun Lim wrote: > Use memset instead of WILC_memset. > > Signed-off-by: Chaehyun Lim > --- > drivers/staging/wilc1000/coreconfigurator.c | 16 +-- > drivers/staging/wilc1000/host_interface.c | 134 > +++--- > drivers/staging/wilc1000/wilc_wfi_cfgoperations.c | 16 +-- > 3 files changed, 83 insertions(+), 83 deletions(-) > > diff --git a/drivers/staging/wilc1000/coreconfigurator.c > b/drivers/staging/wilc1000/coreconfigurator.c > index 342a336..93942b2 100644 > --- a/drivers/staging/wilc1000/coreconfigurator.c > +++ b/drivers/staging/wilc1000/coreconfigurator.c > @@ -681,9 +681,9 @@ s32 CoreConfiguratorInit(void) > goto _fail_; > } > > - WILC_memset((void *)gps8ConfigPacket, 0, MAX_PACKET_BUFF_SIZE); > + memset((void *)gps8ConfigPacket, 0, MAX_PACKET_BUFF_SIZE); I believe you can get rid of these void* casts, you're modifying the line anyway. Thanks, -- Julian Calaby Email: julian.cal...@gmail.com Profile: http://www.google.com/profiles/julian.calaby/ ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH v2] staging: fsl-mc: add DPAA2 overview readme
add README file providing an overview of the DPAA2 architecture and how it is integrated in Linux Signed-off-by: Stuart Yoder --- -v2: added changelog text drivers/staging/fsl-mc/README.txt | 364 ++ drivers/staging/fsl-mc/TODO | 4 - 2 files changed, 364 insertions(+), 4 deletions(-) create mode 100644 drivers/staging/fsl-mc/README.txt diff --git a/drivers/staging/fsl-mc/README.txt b/drivers/staging/fsl-mc/README.txt new file mode 100644 index 000..8214102 --- /dev/null +++ b/drivers/staging/fsl-mc/README.txt @@ -0,0 +1,364 @@ +Copyright (C) 2015 Freescale Semiconductor Inc. + +DPAA2 (Data Path Acceleration Architecture Gen2) + + +This document provides an overview of the Freescale DPAA2 architecture +and how it is integrated into the Linux kernel. + +Contents summary + -DPAA2 overview + -Overview of DPAA2 objects + -DPAA2 Linux driver architecture overview +-bus driver +-dprc driver +-allocator +-dpio driver +-Ethernet +-mac + +DPAA2 Overview +-- + +DPAA2 is a hardware architecture designed for high-speeed network +packet processing. DPAA2 consists of sophisticated mechanisms for +processing Ethernet packets, queue management, buffer management, +autonomous L2 switching, virtual Ethernet bridging, and accelerator +(e.g. crypto) sharing. + +A DPAA2 hardware component called the Management Complex (or MC) manages the +DPAA2 hardware resources. The MC provides an object-based abstraction for +software drivers to use the DPAA2 hardware. + +The MC uses DPAA2 hardware resources such as queues, buffer pools, and +network ports to create functional objects/devices such as network +interfaces, an L2 switch, or accelerator instances. + +The MC provides memory-mapped I/O command interfaces (MC portals) +which DPAA2 software drivers use to operate on DPAA2 objects: + + +--+ + | OS | + |DPAA2 drivers | + | || + +-|+ + | + | (create,discover,connect + | config,use,destroy) + | + DPAA2 | + +| mc portal |-+ + | || + | +- - - - - - - - - - - - -V- - -+ | + | | | | + | | Management Complex (MC) | | + | | | | + | +- - - - - - - - - - - - - - - -+ | + | | + | Hardware Hardware | + | Resources Objects| + | - ---| + | -queues -DPRC | + | -buffer pools -DPMCP | + | -Eth MACs/ports -DPIO | + | -network interface-DPNI | + | profiles -DPMAC | + | -queue portals-DPBP | + | -MC portals... | + | ... | + | | + +--+ + +The MC mediates operations such as create, discover, +connect, configuration, and destroy. Fast-path operations +on data, such as packet transmit/receive, are not mediated by +the MC and are done directly using memory mapped regions in +DPIO objects. + +Overview of DPAA2 Objects +- +The section provides a brief overview of some key objects +in the DPAA2 hardware. A simple scenario is described illustrating +the objects involved in creating a network interfaces. + +-DPRC (Datapath Resource Container) + +A DPRC is an container object that holds all the other +types of DPAA2 objects. In the example diagram below there +are 8 objects of 5 types (DPMCP, DPIO, DPBP, DPNI, and DPMAC) +in the container. + ++-+ +| DPRC| +| | +| +---+ +---+ +---+ +---+ +---+ | +| | DPMCP | | DPIO | | DPBP | | DPNI | | DPMAC | | +| +---+ +---+ +---+ +---+---+ +---+---+ | +| | DPMCP | | DPIO | | +| +---+ +---+ | +| | DPMCP | | +| +---+ | +|
[PATCH 1/1] Staging: media: davinci_vpfe: fix over 80 characters coding style issue.
This is a patch to the dm365_ipipe.c that fixes over 80 characters warning detected by checkpatch.pl. Signed-off-by: Junsu Shin --- drivers/staging/media/davinci_vpfe/dm365_ipipe.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/staging/media/davinci_vpfe/dm365_ipipe.c b/drivers/staging/media/davinci_vpfe/dm365_ipipe.c index 1bbb90c..57cd274 100644 --- a/drivers/staging/media/davinci_vpfe/dm365_ipipe.c +++ b/drivers/staging/media/davinci_vpfe/dm365_ipipe.c @@ -1536,8 +1536,9 @@ ipipe_get_format(struct v4l2_subdev *sd, struct v4l2_subdev_pad_config *cfg, * @fse: pointer to v4l2_subdev_frame_size_enum structure. */ static int -ipipe_enum_frame_size(struct v4l2_subdev *sd, struct v4l2_subdev_pad_config *cfg, - struct v4l2_subdev_frame_size_enum *fse) +ipipe_enum_frame_size(struct v4l2_subdev *sd, + struct v4l2_subdev_pad_config *cfg, + struct v4l2_subdev_frame_size_enum *fse) { struct vpfe_ipipe_device *ipipe = v4l2_get_subdevdata(sd); struct v4l2_mbus_framefmt format; -- 1.9.1 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
RE: [PATCH 1/1] X86: mshyperv.c: Fix a compilation issue.
> -Original Message- > From: Greg KH [mailto:gre...@linuxfoundation.org] > Sent: Thursday, August 6, 2015 2:11 PM > To: KY Srinivasan > Cc: linux-ker...@vger.kernel.org; de...@linuxdriverproject.org; > vkuzn...@redhat.com; s...@canb.auug.org.au; t...@linutronix.de; > mi...@redhat.com; h...@zytor.com; x...@kernel.org; Haiyang Zhang > > Subject: Re: [PATCH 1/1] X86: mshyperv.c: Fix a compilation issue. > > On Thu, Aug 06, 2015 at 02:41:24PM -0700, K. Y. Srinivasan wrote: > > Building with a random configuration file, this build failure > > was reported: > > > > arch/x86/built-in.o: In function `hv_machine_crash_shutdown': > > arch/x86/kernel/cpu/mshyperv.c:112: undefined > > reference to `native_machine_crash_shutdown' > > > > This patch fixes the problem > > > > Reported-by: Jim Davis > > Signed-off-by: K. Y. Srinivasan > > --- > > arch/x86/kernel/cpu/mshyperv.c |2 ++ > > 1 files changed, 2 insertions(+), 0 deletions(-) > > > > diff --git a/arch/x86/kernel/cpu/mshyperv.c > b/arch/x86/kernel/cpu/mshyperv.c > > index f794bfa..0faed5e0 100644 > > --- a/arch/x86/kernel/cpu/mshyperv.c > > +++ b/arch/x86/kernel/cpu/mshyperv.c > > @@ -109,7 +109,9 @@ static void hv_machine_crash_shutdown(struct > pt_regs *regs) > > { > > if (hv_crash_handler) > > hv_crash_handler(regs); > > +#ifdef CONFIG_KEXEC_CORE > > native_machine_crash_shutdown(regs); > > +#endif > > Why is kexec the factor here? And if it really does, can't it just be > CONFIG_KEXEC, or, can kexec provide a "dummy" inline function so that > you don't have to have a #ifdef in a .c file? Greg, I am on vacation till next Tuesday. I will address your concern after I get back if Vitaly has not addressed it by then. Regards, K. Y ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH 1/1] Staging: media: davinci_vpfe: fix over 80 characters coding style issue.
On Thu, Aug 06, 2015 at 09:55:54PM -0500, Junsu Shin wrote: > This is a patch to the dm365_ipipe.c that fixes over 80 characters warning > detected by checkpatch.pl. > Signed-off-by: Junsu Shin please do not use whitespace before Signed-off-by: line. > > --- > drivers/staging/media/davinci_vpfe/dm365_ipipe.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/staging/media/davinci_vpfe/dm365_ipipe.c > b/drivers/staging/media/davinci_vpfe/dm365_ipipe.c > index 1bbb90c..57cd274 100644 > --- a/drivers/staging/media/davinci_vpfe/dm365_ipipe.c > +++ b/drivers/staging/media/davinci_vpfe/dm365_ipipe.c > @@ -1536,8 +1536,9 @@ ipipe_get_format(struct v4l2_subdev *sd, struct > v4l2_subdev_pad_config *cfg, > * @fse: pointer to v4l2_subdev_frame_size_enum structure. > */ > static int > -ipipe_enum_frame_size(struct v4l2_subdev *sd, struct v4l2_subdev_pad_config > *cfg, > - struct v4l2_subdev_frame_size_enum *fse) > +ipipe_enum_frame_size(struct v4l2_subdev *sd, > + struct v4l2_subdev_pad_config *cfg, > + struct v4l2_subdev_frame_size_enum *fse) since you are modifying this line, please fix up the indention also. regards sudip ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel