Commit bce159d7 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'for-5.8/drivers-2020-06-01' of git://git.kernel.dk/linux-block

Pull block driver updates from Jens Axboe:
 "On top of the core changes, here are the block driver changes for this
  merge window:

   - NVMe changes:
        - NVMe over Fibre Channel protocol updates, which also reach
          over to drivers/scsi/lpfc (James Smart)
        - namespace revalidation support on the target (Anthony
          Iliopoulos)
        - gcc zero length array fix (Arnd Bergmann)
        - nvmet cleanups (Chaitanya Kulkarni)
        - misc cleanups and fixes (me, Keith Busch, Sagi Grimberg)
        - use a SRQ per completion vector (Max Gurtovoy)
        - fix handling of runtime changes to the queue count (Weiping
          Zhang)
        - t10 protection information support for nvme-rdma and
          nvmet-rdma (Israel Rukshin and Max Gurtovoy)
        - target side AEN improvements (Chaitanya Kulkarni)
        - various fixes and minor improvements all over, icluding the
          nvme part of the lpfc driver"

   - Floppy code cleanup series (Willy, Denis)

   - Floppy contention fix (Jiri)

   - Loop CONFIGURE support (Martijn)

   - bcache fixes/improvements (Coly, Joe, Colin)

   - q->queuedata cleanups (Christoph)

   - Get rid of ioctl_by_bdev (Christoph, Stefan)

   - md/raid5 allocation fixes (Coly)

   - zero length array fixes (Gustavo)

   - swim3 task state fix (Xu)"

* tag 'for-5.8/drivers-2020-06-01' of git://git.kernel.dk/linux-block: (166 commits)
  bcache: configure the asynchronous registertion to be experimental
  bcache: asynchronous devices registration
  bcache: fix refcount underflow in bcache_device_free()
  bcache: Convert pr_<level> uses to a more typical style
  bcache: remove redundant variables i and n
  lpfc: Fix return value in __lpfc_nvme_ls_abort
  lpfc: fix axchg pointer reference after free and double frees
  lpfc: Fix pointer checks and comments in LS receive refactoring
  nvme: set dma alignment to qword
  nvmet: cleanups the loop in nvmet_async_events_process
  nvmet: fix memory leak when removing namespaces and controllers concurrently
  nvmet-rdma: add metadata/T10-PI support
  nvmet: add metadata support for block devices
  nvmet: add metadata/T10-PI support
  nvme: add Metadata Capabilities enumerations
  nvmet: rename nvmet_check_data_len to nvmet_check_transfer_len
  nvmet: rename nvmet_rw_len to nvmet_rw_data_len
  nvmet: add metadata characteristics for a namespace
  nvme-rdma: add metadata/T10-PI support
  nvme-rdma: introduce nvme_rdma_sgl structure
  ...
parents 750a02ab 0c8d3fce
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -14711,6 +14711,7 @@ S: Supported
W:	http://www.ibm.com/developerworks/linux/linux390/
F:	block/partitions/ibm.c
F:	drivers/s390/block/dasd*
F:	include/linux/dasd_mod.h
S390 IOMMU (PCI)
M:	Gerald Schaefer <gerald.schaefer@de.ibm.com>
+2 −2
Original line number Diff line number Diff line
@@ -11,8 +11,8 @@
#define __ASM_ALPHA_FLOPPY_H


#define fd_inb(port)			inb_p(port)
#define fd_outb(value,port)		outb_p(value,port)
#define fd_inb(base, reg)		inb_p((base) + (reg))
#define fd_outb(value, base, reg)	outb_p(value, (base) + (reg))

#define fd_enable_dma()         enable_dma(FLOPPY_DMA)
#define fd_disable_dma()        disable_dma(FLOPPY_DMA)
+4 −4
Original line number Diff line number Diff line
@@ -9,20 +9,20 @@
#ifndef __ASM_ARM_FLOPPY_H
#define __ASM_ARM_FLOPPY_H

#define fd_outb(val,port)						\
#define fd_outb(val, base, reg)						\
	do {								\
		int new_val = (val);					\
		if (((port) & 7) == FD_DOR) {				\
		if ((reg) == FD_DOR) {					\
			if (new_val & 0xf0)				\
				new_val = (new_val & 0x0c) |		\
					  floppy_selects[new_val & 3];	\
			else						\
				new_val &= 0x0c;			\
		}							\
		outb(new_val, (port));					\
		outb(new_val, (base) + (reg));				\
	} while(0)

#define fd_inb(port)		inb((port))
#define fd_inb(base, reg)	inb((base) + (reg))
#define fd_request_irq()	request_irq(IRQ_FLOPPYDISK,floppy_interrupt,\
					    0,"floppy",NULL)
#define fd_free_irq()		free_irq(IRQ_FLOPPYDISK,NULL)
+14 −13
Original line number Diff line number Diff line
@@ -63,21 +63,21 @@ static __inline__ void release_dma_lock(unsigned long flags)
}


static __inline__ unsigned char fd_inb(int port)
static __inline__ unsigned char fd_inb(int base, int reg)
{
	if(MACH_IS_Q40)
		return inb_p(port);
		return inb_p(base + reg);
	else if(MACH_IS_SUN3X)
		return sun3x_82072_fd_inb(port);
		return sun3x_82072_fd_inb(base + reg);
	return 0;
}

static __inline__ void fd_outb(unsigned char value, int port)
static __inline__ void fd_outb(unsigned char value, int base, int reg)
{
	if(MACH_IS_Q40)
		outb_p(value, port);
		outb_p(value, base + reg);
	else if(MACH_IS_SUN3X)
		sun3x_82072_fd_outb(value, port);
		sun3x_82072_fd_outb(value, base + reg);
}


@@ -211,26 +211,27 @@ asmlinkage irqreturn_t floppy_hardint(int irq, void *dev_id)
		st=1;
		for(lcount=virtual_dma_count, lptr=virtual_dma_addr;
		    lcount; lcount--, lptr++) {
			st=inb(virtual_dma_port+4) & 0xa0 ;
			if(st != 0xa0)
			st = inb(virtual_dma_port + FD_STATUS);
			st &= STATUS_DMA | STATUS_READY;
			if (st != (STATUS_DMA | STATUS_READY))
				break;
			if(virtual_dma_mode)
				outb_p(*lptr, virtual_dma_port+5);
				outb_p(*lptr, virtual_dma_port + FD_DATA);
			else
				*lptr = inb_p(virtual_dma_port+5);
				*lptr = inb_p(virtual_dma_port + FD_DATA);
		}

		virtual_dma_count = lcount;
		virtual_dma_addr = lptr;
		st = inb(virtual_dma_port+4);
		st = inb(virtual_dma_port + FD_STATUS);
	}

#ifdef TRACE_FLPY_INT
	calls++;
#endif
	if(st == 0x20)
	if (st == STATUS_DMA)
		return IRQ_HANDLED;
	if(!(st & 0x20)) {
	if (!(st & STATUS_DMA)) {
		virtual_dma_residue += virtual_dma_count;
		virtual_dma_count=0;
#ifdef TRACE_FLPY_INT
+4 −4
Original line number Diff line number Diff line
@@ -26,14 +26,14 @@
/*
 * How to access the FDC's registers.
 */
static inline unsigned char fd_inb(unsigned int port)
static inline unsigned char fd_inb(unsigned int base, unsigned int reg)
{
	return inb_p(port);
	return inb_p(base + reg);
}

static inline void fd_outb(unsigned char value, unsigned int port)
static inline void fd_outb(unsigned char value, unsigned int base, unsigned int reg)
{
	outb_p(value, port);
	outb_p(value, base + reg);
}

/*
Loading