Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b62aeea0 authored by jianzhou's avatar jianzhou
Browse files

Merge android-4.9.149 (ed0b11d2) into msm-4.9



*  refs/heads/tmp-ed0b11d2:
  Linux 4.9.149
  spi: bcm2835: Unbreak the build of esoteric configs
  tpm: tpm_i2c_nuvoton: use correct command duration for TPM 2.x
  rtc: m41t80: Correct alarm month range with RTC reads
  arm64: KVM: Avoid setting the upper 32 bits of VTCR_EL2 to 1
  x86/kvm/vmx: do not use vm-exit instruction length for fast MMIO when running nested
  CIFS: Fix error mapping for SMB2_LOCK command which caused OFD lock problem
  MIPS: OCTEON: mark RGMII interface disabled on OCTEON III
  MIPS: Align kernel load address to 64KB
  MIPS: Ensure pmd_present() returns false after pmd_mknotpresent()
  media: v4l2-tpg: array index could become negative
  media: vivid: free bitmap_cap when updating std/timings/etc.
  serial: uartps: Fix interrupt mask issue to handle the RX interrupts properly
  f2fs: fix validation of the block count in sanity_check_raw_super
  cdc-acm: fix abnormal DATA RX issue for Mediatek Preloader.
  clk: rockchip: fix typo in rk3188 spdif_frac parent
  spi: bcm2835: Avoid finishing transfer prematurely in IRQ mode
  spi: bcm2835: Fix book-keeping of DMA termination
  spi: bcm2835: Fix race on DMA termination
  ext4: force inode writes when nfsd calls commit_metadata()
  ext4: include terminating u32 in size of xattr entries when expanding inodes
  ext4: fix EXT4_IOC_GROUP_ADD ioctl
  ext4: missing unlock/put_page() in ext4_try_to_write_inline_data()
  ext4: fix possible use after free in ext4_quota_enable
  perf pmu: Suppress potential format-truncation warning
  platform-msi: Free descriptors in platform_msi_domain_free()
  KVM: x86: Use jmp to invoke kvm_spurious_fault() from .fixup
  Input: elan_i2c - add ACPI ID for touchpad in ASUS Aspire F5-573G
  qmi_wwan: apply SET_DTR quirk to the SIMCOM shared device ID
  staging: wilc1000: fix missing read_write setting when reading data
  usb: r8a66597: Fix a possible concurrency use-after-free bug in r8a66597_endpoint_disable()
  USB: serial: option: add Fibocom NL678 series
  USB: serial: pl2303: add ids for Hewlett-Packard HP POS pole displays
  ALSA: hda/tegra: clear pending irq handlers
  ALSA: hda: add mute LED support for HP EliteBook 840 G4
  mtd: atmel-quadspi: disallow building on ebsa110
  ALSA: emux: Fix potential Spectre v1 vulnerabilities
  ALSA: pcm: Fix potential Spectre v1 vulnerability
  ALSA: emu10k1: Fix potential Spectre v1 vulnerabilities
  ALSA: rme9652: Fix potential Spectre v1 vulnerability
  ptr_ring: wrap back ->producer in __ptr_ring_swap_queue()
  sock: Make sock->sk_stamp thread-safe
  net/mlx5: Typo fix in del_sw_hw_rule
  net/mlx5e: Remove the false indication of software timestamping support
  gro_cell: add napi_disable in gro_cells_destroy
  tipc: compare remote and local protocols in tipc_udp_enable()
  tipc: use lock_sock() in tipc_sk_reinit()
  xen/netfront: tolerate frags with no data
  VSOCK: Send reset control packet when socket is partially bound
  vhost: make sure used idx is seen before log in vhost_add_used_n()
  tipc: fix a double kfree_skb()
  sctp: initialize sin6_flowinfo for ipv6 addrs in sctp_inet6addr_event
  packet: validate address length if non-zero
  packet: validate address length
  net/wan: fix a double free in x25_asy_open_tty()
  netrom: fix locking in nr_find_socket()
  net: phy: Fix the issue that netif always links up after resuming
  net: ipv4: do not handle duplicate fragments as overlapping
  isdn: fix kernel-infoleak in capi_unlocked_ioctl
  ipv6: tunnels: fix two use-after-free
  ipv6: explicitly initialize udp6_addr in udp_sock_create6()
  ieee802154: lowpan_header_create check must check daddr
  ibmveth: fix DMA unmap error in ibmveth_xmit_start error path
  ax25: fix a use-after-free in ax25_fillin_cb()
  ipv4: Fix potential Spectre v1 vulnerability
  ip6mr: Fix potential Spectre v1 vulnerability
  NFC: nxp-nci: Include unaligned.h instead of access_ok.h
  UPSTREAM: mm: /proc/pid/smaps_rollup: fix NULL pointer deref in smaps_pte_range()
  BACKPORT: fs/proc/task_mmu.c: fix Locked field in /proc/pid/smaps*
  BACKPORT: mm: add /proc/pid/smaps_rollup
  ANDROID: cuttlefish_defconfig: Enable VIRTIO_INPUT
  Linux 4.9.148
  drm/ioctl: Fix Spectre v1 vulnerabilities
  proc/sysctl: don't return ENOMEM on lookup when a table is unregistering
  panic: avoid deadlocks in re-entrant console drivers
  ubifs: Handle re-linking of inodes correctly while recovery
  x86/fpu: Disable bottom halves while loading FPU registers
  x86/mtrr: Don't copy uninitialized gentry fields back to userspace
  Drivers: hv: vmbus: Return -EINVAL for the sys files for unopened channels
  gpio: max7301: fix driver for use with CONFIG_VMAP_STACK
  mmc: omap_hsmmc: fix DMA API warning
  mmc: core: Use a minimum 1600ms timeout when enabling CACHE ctrl
  mmc: core: Allow BKOPS and CACHE ctrl even if no HPI support
  mmc: core: Reset HPI enabled state during re-init and in case of errors
  USB: serial: option: add Telit LN940 series
  USB: serial: option: add Fibocom NL668 series
  USB: serial: option: add Simcom SIM7500/SIM7600 (MBIM mode)
  USB: serial: option: add HP lt4132
  USB: serial: option: add GosunCn ZTE WeLink ME3630
  xhci: Don't prevent USB2 bus suspend in state check intended for USB3 only
  USB: hso: Fix OOB memory access in hso_probe/hso_get_config_data
  ib_srpt: Fix a use-after-free in __srpt_close_all_ch()
  block: fix infinite loop if the device loses discard capability
  block: break discard submissions into the user defined size
  Linux 4.9.147
  rtc: snvs: Add timeouts to avoid kernel lockups
  rtc: snvs: add a missing write sync
  nvmet-rdma: fix response use after free
  i2c: scmi: Fix probe error on devices with an empty SMB0001 ACPI device node
  i2c: axxia: properly handle master timeout
  vhost/vsock: fix reset orphans race with close timeout
  cifs: In Kconfig CONFIG_CIFS_POSIX needs depends on legacy (insecure cifs)
  drm/ast: Fix connector leak during driver unload
  ethernet: fman: fix wrong of_node_put() in probe function
  ARM: 8815/1: V7M: align v7m_dma_inv_range() with v7 counterpart
  ARM: 8814/1: mm: improve/fix ARM v7_dma_inv_range() unaligned address handling
  bpf: check pending signals while verifying programs
  net/mlx4_en: Fix build break when CONFIG_INET is off
  mv88e6060: disable hardware level MAC learning
  libata: whitelist all SAMSUNG MZ7KM* solid-state disks
  Input: omap-keypad - fix keyboard debounce configuration
  clk: mmp: Off by one in mmp_clk_add()
  clk: mvebu: Off by one bugs in cp110_of_clk_get()
  ide: pmac: add of_node_put()
  drivers/tty: add missing of_node_put()
  drivers/sbus/char: add of_node_put()
  sbus: char: add of_node_put()
  SUNRPC: Fix a potential race in xprt_connect()
  nfs: don't dirty kernel pages read by direct-io
  bonding: fix 802.3ad state sent to partner when unbinding slave
  ARC: io.h: Implement reads{x}()/writes{x}()
  drm/msm: Grab a vblank reference when waiting for commit_done
  x86/earlyprintk/efi: Fix infinite loop on some screen widths
  scsi: vmw_pscsi: Rearrange code to avoid multiple calls to free_irq during unload
  scsi: libiscsi: Fix NULL pointer dereference in iscsi_eh_session_reset
  mac80211_hwsim: fix module init error paths for netlink
  locking/qspinlock: Fix build for anonymous union in older GCC compilers
  locking/qspinlock, x86: Provide liveness guarantee
  locking/qspinlock/x86: Increase _Q_PENDING_LOOPS upper bound
  locking/qspinlock: Re-order code
  locking/qspinlock: Kill cmpxchg() loop when claiming lock from head of queue
  locking/qspinlock: Remove duplicate clear_pending() function from PV code
  locking/qspinlock: Remove unbounded cmpxchg() loop from locking slowpath
  locking/qspinlock: Merge 'struct __qspinlock' into 'struct qspinlock'
  locking/qspinlock: Bound spinning on pending->locked transition in slowpath
  locking/qspinlock: Ensure node is initialised before updating prev->next
  locking: Remove smp_read_barrier_depends() from queued_spin_lock_slowpath()
  IB/hfi1: Remove race conditions in user_sdma send path
  mac80211: Fix condition validating WMM IE
  mac80211: don't WARN on bad WMM parameters from buggy APs
  drm/i915/execlists: Apply a full mb before execution for Braswell
  Revert "drm/rockchip: Allow driver to be shutdown on reboot/kexec"
  powerpc/msi: Fix NULL pointer access in teardown code
  tracing: Fix memory leak of instance function hash filters
  tracing: Fix memory leak in set_trigger_filter()
  ARM: mmp/mmp2: fix cpu_is_mmp2() on mmp2-dt
  MMC: OMAP: fix broken MMC on OMAP15XX/OMAP5910/OMAP310
  aio: fix spectre gadget in lookup_ioctx
  pinctrl: sunxi: a83t: Fix IRQ offset typo for PH11
  timer/debug: Change /proc/timer_list from 0444 to 0400
  lib/interval_tree_test.c: allow users to limit scope of endpoint
  lib/rbtree-test: lower default params
  lib/rbtree_test.c: make input module parameters
  lib/interval_tree_test.c: allow full tree search
  lib/interval_tree_test.c: make test options module parameters
  signal: Introduce COMPAT_SIGMINSTKSZ for use in compat_sys_sigaltstack
  ANDROID: Revert fs/squashfs back to linux-4.9.y
  BACKPORT, FROMGIT: dm verity: log the hash algorithm implementation
  BACKPORT, FROMGIT: dm crypt: log the encryption algorithm implementation
  Linux 4.9.146
  staging: speakup: Replace strncpy with memcpy
  pstore: Convert console write to use ->write_buf
  ocfs2: fix potential use after free
  debugobjects: avoid recursive calls with kmemleak
  hfsplus: do not free node before using
  hfs: do not free node before using
  ocfs2: fix deadlock caused by ocfs2_defrag_extent()
  fscache, cachefiles: remove redundant variable 'cache'
  fscache: fix race between enablement and dropping of object
  xen: xlate_mmu: add missing header to fix 'W=1' warning
  drm/ast: fixed reading monitor EDID not stable issue
  net: hisilicon: remove unexpected free_netdev
  ixgbe: recognize 1000BaseLX SFP modules as 1Gbps
  igb: fix uninitialized variables
  cachefiles: Fix page leak in cachefiles_read_backing_file while vmscan is active
  net: thunderx: fix NULL pointer dereference in nic_remove
  x86/kvm/vmx: fix old-style function declaration
  KVM: x86: fix empty-body warnings
  USB: omap_udc: fix USB gadget functionality on Palm Tungsten E
  USB: omap_udc: fix omap_udc_start() on 15xx machines
  USB: omap_udc: fix crashes on probe error and module removal
  USB: omap_udc: use devm_request_irq()
  ipvs: call ip_vs_dst_notifier earlier than ipv6_dev_notf
  bpf: fix check of allowed specifiers in bpf_trace_printk
  exportfs: do not read dentry after free
  ASoC: omap-dmic: Add pm_qos handling to avoid overruns with CPU_IDLE
  ASoC: omap-mcpdm: Add pm_qos handling to avoid under/overruns with CPU_IDLE
  RDMA/mlx5: Fix fence type for IB_WR_LOCAL_INV WR
  Btrfs: send, fix infinite loop due to directory rename dependencies
  objtool: Fix segfault in .cold detection with -ffunction-sections
  objtool: Fix double-free in .cold detection error path
  hwmon: (w83795) temp4_type has writable permission
  ASoC: dapm: Recalculate audio map forcely when card instantiated
  ASoC: omap-abe-twl6040: Fix missing audio card caused by deferred probing
  hwmon: (ina2xx) Fix current value calculation
  s390/cpum_cf: Reject request for sampling in event initialization
  selftests: add script to stress-test nft packet path vs. control plane
  sysv: return 'err' instead of 0 in __sysv_write_inode
  ARM: OMAP1: ams-delta: Fix possible use of uninitialized field
  ARM: dts: logicpd-somlv: Fix interrupt on mmc3_dat1
  ARM: OMAP2+: prm44xx: Fix section annotation on omap44xx_prm_enable_io_wakeup
  neighbour: Avoid writing before skb->head in neigh_hh_output()
  tun: forbid iface creation with rtnl ops
  tcp: fix NULL ref in tail loss probe
  rtnetlink: ndo_dflt_fdb_dump() only work for ARPHRD_ETHER devices
  net: Prevent invalid access to skb->prev in __qdisc_drop_all
  net: phy: don't allow __set_phy_supported to add unsupported modes
  net/mlx4_core: Correctly set PFC param if global pause is turned off.
  net: 8139cp: fix a BUG triggered by changing mtu with network traffic
  ipv6: Check available headroom in ip6_xmit() even without options
  Makefile: Properly resolve conflict from 4.9.145
  ANDROID: cuttlefish_defconfig: Enable CONFIG_CRYPTO_ADIANTUM
  UPSTREAM: dm crypt: don't decrease device limits
  BACKPORT: dm crypt: allow unaligned bv_offset
  BACKPORT: dm crypt: reject sector_size feature if device length is not aligned to it
  BACKPORT: dm crypt: use shifts instead of sector_div
  BACKPORT: dm crypt: optionally support larger encryption sector size
  BACKPORT, FROMGIT: fscrypt: add Adiantum support
  BACKPORT, FROMGIT: crypto: adiantum - add Adiantum support
  FROMGIT: crypto: arm/nhpoly1305 - add NEON-accelerated NHPoly1305
  BACKPORT, FROMGIT: crypto: nhpoly1305 - add NHPoly1305 support
  FROMGIT: crypto: poly1305 - add Poly1305 core API
  FROMGIT: crypto: poly1305 - use structures for key and accumulator
  BACKPORT, FROMGIT: crypto: arm/chacha - add XChaCha12 support
  BACKPORT, FROMGIT: crypto: arm/chacha20 - refactor to allow varying number of rounds
  BACKPORT, FROMGIT: crypto: arm/chacha20 - add XChaCha20 support
  BACKPORT, FROMGIT: crypto: arm/chacha20 - limit the preemption-disabled section
  BACKPORT, FROMGIT: crypto: chacha - add XChaCha12 support
  BACKPORT, FROMGIT: crypto: chacha20-generic - refactor to allow varying number of rounds
  BACKPORT, FROMGIT: crypto: chacha20-generic - add XChaCha20 support
  FROMGIT: crypto: chacha20-generic - add HChaCha20 library function
  FROMGIT: crypto: arm/aes - add some hardening against cache-timing attacks
  UPSTREAM: crypto: arm/aes-cipher - move S-box to .rodata section
  UPSTREAM: crypto: arm/aes - avoid expanded lookup tables in the final round
  UPSTREAM: crypto: arm/aes - avoid reserved 'tt' mnemonic in asm code
  BACKPORT: crypto: arm/aes - replace scalar AES cipher
  UPSTREAM: crypto: poly1305 - use unaligned access macros to output digest
  UPSTREAM: crypto: poly1305 - Use unaligned access where required
  UPSTREAM: crypto: arm/chacha20 - faster 8-bit rotations and other optimizations
  UPSTREAM: crypto: arm/chacha20 - always use vrev for 16-bit rotates
  BACKPORT: crypto: arm/chacha20 - implement NEON version based on SSE3 code
  BACKPORT: crypto: chacha20 - Fix chacha20_block() keystream alignment (again)
  UPSTREAM: crypto: chacha20 - use rol32() macro from bitops.h
  BACKPORT: crypto: chacha20 - Fix keystream alignment for chacha20_block()
  UPSTREAM: crypto: chacha20 - Use unaligned access macros when loading key and IV
  UPSTREAM: crypto: chacha20 - Fix unaligned access when loading constants
  UPSTREAM: crypto: testmgr - fix overlap in chunked tests again
  UPSTREAM: crypto: testmgr - avoid overlap in chunked tests
  ANDROID: cuttlefish_defconfig: Enable VIRT_WIFI
  FROMGIT, BACKPORT: mac80211-next: rtnetlink wifi simulation device
  ANDROID: cuttlefish_defconfig: Enable CONFIG_ARM64_LSE_ATOMICS
  ANDROID: Move from clang r328903 to r346389b.
  ANDROID: arm64 defconfig / build config for cuttlefish

Conflicts:
	drivers/char/random.c
	drivers/md/dm-crypt.c
	drivers/mmc/core/mmc.c
	drivers/net/wireless/Kconfig
	drivers/net/wireless/Makefile
	fs/crypto/fscrypt_private.h
	fs/crypto/keyinfo.c
	include/uapi/linux/fs.h

Change-Id: I3f7617ac7ab346b0650757e25ef3e7daf4d97a1e
Signed-off-by: default avatarjianzhou <jianzhou@codeaurora.org>
parents f41ab608 ed0b11d2
Loading
Loading
Loading
Loading
+31 −0
Original line number Diff line number Diff line
What:		/proc/pid/smaps_rollup
Date:		August 2017
Contact:	Daniel Colascione <dancol@google.com>
Description:
		This file provides pre-summed memory information for a
		process.  The format is identical to /proc/pid/smaps,
		except instead of an entry for each VMA in a process,
		smaps_rollup has a single entry (tagged "[rollup]")
		for which each field is the sum of the corresponding
		fields from all the maps in /proc/pid/smaps.
		For more details, see the procfs man page.

		Typical output looks like this:

		00100000-ff709000 ---p 00000000 00:00 0		 [rollup]
		Rss:		     884 kB
		Pss:		     385 kB
		Shared_Clean:	     696 kB
		Shared_Dirty:	       0 kB
		Private_Clean:	     120 kB
		Private_Dirty:	      68 kB
		Referenced:	     884 kB
		Anonymous:	      68 kB
		LazyFree:	       0 kB
		AnonHugePages:	       0 kB
		ShmemPmdMapped:	       0 kB
		Shared_Hugetlb:	       0 kB
		Private_Hugetlb:       0 kB
		Swap:		       0 kB
		SwapPss:	       0 kB
		Locked:		     385 kB
+14 −0
Original line number Diff line number Diff line
@@ -76,6 +76,20 @@ submit_from_crypt_cpus
    thread because it benefits CFQ to have writes submitted using the
    same context.

sector_size:<bytes>
    Use <bytes> as the encryption unit instead of 512 bytes sectors.
    This option can be in range 512 - 4096 bytes and must be power of two.
    Virtual device will announce this size as a minimal IO and logical sector.

iv_large_sectors
   IV generators will use sector number counted in <sector_size> units
   instead of default 512 bytes sectors.

   For example, if <sector_size> is 4096 bytes, plain64 IV for the second
   sector will be 8 (without flag) and 1 if iv_large_sectors is present.
   The <iv_offset> must be multiple of <sector_size> (in 512 bytes units)
   if this flag is specified.

Example scripts
===============
LUKS (Linux Unified Key Setup) is now the preferred way to set up disk
+641 −0

File added.

Preview size limit exceeded, changes collapsed.

+4 −2
Original line number Diff line number Diff line
VERSION = 4
PATCHLEVEL = 9
SUBLEVEL = 145
SUBLEVEL = 149
EXTRAVERSION =
NAME = Roaring Lionus

@@ -521,7 +521,9 @@ CLANG_TARGET := --target=$(notdir $(CLANG_TRIPLE:%-=%))
ifeq ($(shell $(srctree)/scripts/clang-android.sh $(CC) $(CLANG_TARGET)), y)
$(error "Clang with Android --target detected. Did you specify CLANG_TRIPLE?")
endif
GCC_TOOLCHAIN	:= $(realpath $(dir $(shell which $(LD)))/..)
GCC_TOOLCHAIN_DIR := $(dir $(shell which $(LD)))
CLANG_PREFIX	:= --prefix=$(GCC_TOOLCHAIN_DIR)
GCC_TOOLCHAIN	:= $(realpath $(GCC_TOOLCHAIN_DIR)/..)
endif
ifneq ($(GCC_TOOLCHAIN),)
CLANG_GCC_TC	:= --gcc-toolchain=$(GCC_TOOLCHAIN)
+72 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@
#include <linux/types.h>
#include <asm/byteorder.h>
#include <asm/page.h>
#include <asm/unaligned.h>

#ifdef CONFIG_ISA_ARCV2
#include <asm/barrier.h>
@@ -94,6 +95,42 @@ static inline u32 __raw_readl(const volatile void __iomem *addr)
	return w;
}

/*
 * {read,write}s{b,w,l}() repeatedly access the same IO address in
 * native endianness in 8-, 16-, 32-bit chunks {into,from} memory,
 * @count times
 */
#define __raw_readsx(t,f) \
static inline void __raw_reads##f(const volatile void __iomem *addr,	\
				  void *ptr, unsigned int count)	\
{									\
	bool is_aligned = ((unsigned long)ptr % ((t) / 8)) == 0;	\
	u##t *buf = ptr;						\
									\
	if (!count)							\
		return;							\
									\
	/* Some ARC CPU's don't support unaligned accesses */		\
	if (is_aligned) {						\
		do {							\
			u##t x = __raw_read##f(addr);			\
			*buf++ = x;					\
		} while (--count);					\
	} else {							\
		do {							\
			u##t x = __raw_read##f(addr);			\
			put_unaligned(x, buf++);			\
		} while (--count);					\
	}								\
}

#define __raw_readsb __raw_readsb
__raw_readsx(8, b)
#define __raw_readsw __raw_readsw
__raw_readsx(16, w)
#define __raw_readsl __raw_readsl
__raw_readsx(32, l)

#define __raw_writeb __raw_writeb
static inline void __raw_writeb(u8 b, volatile void __iomem *addr)
{
@@ -126,6 +163,35 @@ static inline void __raw_writel(u32 w, volatile void __iomem *addr)

}

#define __raw_writesx(t,f)						\
static inline void __raw_writes##f(volatile void __iomem *addr, 	\
				   const void *ptr, unsigned int count)	\
{									\
	bool is_aligned = ((unsigned long)ptr % ((t) / 8)) == 0;	\
	const u##t *buf = ptr;						\
									\
	if (!count)							\
		return;							\
									\
	/* Some ARC CPU's don't support unaligned accesses */		\
	if (is_aligned) {						\
		do {							\
			__raw_write##f(*buf++, addr);			\
		} while (--count);					\
	} else {							\
		do {							\
			__raw_write##f(get_unaligned(buf++), addr);	\
		} while (--count);					\
	}								\
}

#define __raw_writesb __raw_writesb
__raw_writesx(8, b)
#define __raw_writesw __raw_writesw
__raw_writesx(16, w)
#define __raw_writesl __raw_writesl
__raw_writesx(32, l)

/*
 * MMIO can also get buffered/optimized in micro-arch, so barriers needed
 * Based on ARM model for the typical use case
@@ -141,10 +207,16 @@ static inline void __raw_writel(u32 w, volatile void __iomem *addr)
#define readb(c)		({ u8  __v = readb_relaxed(c); __iormb(); __v; })
#define readw(c)		({ u16 __v = readw_relaxed(c); __iormb(); __v; })
#define readl(c)		({ u32 __v = readl_relaxed(c); __iormb(); __v; })
#define readsb(p,d,l)		({ __raw_readsb(p,d,l); __iormb(); })
#define readsw(p,d,l)		({ __raw_readsw(p,d,l); __iormb(); })
#define readsl(p,d,l)		({ __raw_readsl(p,d,l); __iormb(); })

#define writeb(v,c)		({ __iowmb(); writeb_relaxed(v,c); })
#define writew(v,c)		({ __iowmb(); writew_relaxed(v,c); })
#define writel(v,c)		({ __iowmb(); writel_relaxed(v,c); })
#define writesb(p,d,l)		({ __iowmb(); __raw_writesb(p,d,l); })
#define writesw(p,d,l)		({ __iowmb(); __raw_writesw(p,d,l); })
#define writesl(p,d,l)		({ __iowmb(); __raw_writesl(p,d,l); })

/*
 * Relaxed API for drivers which can handle barrier ordering themselves
Loading