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

Commit 1326af24 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull firewire fix from Stefan Richter:
 "A regression fix for the IEEE 1394 subsystem: re-enable IRQ-based
  asynchronous request reception at addresses below 128 TB"

* tag 'firewire-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394:
  firewire: revert to 4 GB RDMA, fix protocols using Memory Space
parents 24e19d27 2fe2023a
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -25,9 +25,11 @@ using data transfer rates in the order of 10MB/s or more.
With most FireWire controllers, memory access is limited to the low 4 GB
of physical address space.  This can be a problem on IA64 machines where
memory is located mostly above that limit, but it is rarely a problem on
more common hardware such as x86, x86-64 and PowerPC.  However, at least
Agere/LSI FW643e and FW643e2 controllers are known to support access to
physical addresses above 4 GB.
more common hardware such as x86, x86-64 and PowerPC.

At least LSI FW643e and FW643e2 controllers are known to support access to
physical addresses above 4 GB, but this feature is currently not enabled by
Linux.

Together with a early initialization of the OHCI-1394 controller for debugging,
this facility proved most useful for examining long debugs logs in the printk
@@ -101,8 +103,9 @@ Step-by-step instructions for using firescope with early OHCI initialization:
   compliant, they are based on TI PCILynx chips and require drivers for Win-
   dows operating systems.

   The mentioned kernel log message contains ">4 GB phys DMA" in case of
   OHCI-1394 controllers which support accesses above this limit.
   The mentioned kernel log message contains the string "physUB" if the
   controller implements a writable Physical Upper Bound register.  This is
   required for physical DMA above 4 GB (but not utilized by Linux yet).

2) Establish a working FireWire cable connection:

+2 −2
Original line number Diff line number Diff line
@@ -237,8 +237,8 @@ static inline bool is_next_generation(int new_generation, int old_generation)

#define LOCAL_BUS 0xffc0

/* arbitrarily chosen maximum range for physical DMA: 128 TB */
#define FW_MAX_PHYSICAL_RANGE		(128ULL << 40)
/* OHCI-1394's default upper bound for physical DMA: 4 GB */
#define FW_MAX_PHYSICAL_RANGE		(1ULL << 32)

void fw_core_handle_request(struct fw_card *card, struct fw_packet *request);
void fw_core_handle_response(struct fw_card *card, struct fw_packet *packet);
+1 −1
Original line number Diff line number Diff line
@@ -3716,7 +3716,7 @@ static int pci_probe(struct pci_dev *dev,
		    version >> 16, version & 0xff, ohci->card.index,
		    ohci->n_ir, ohci->n_it, ohci->quirks,
		    reg_read(ohci, OHCI1394_PhyUpperBound) ?
			", >4 GB phys DMA" : "");
			", physUB" : "");

	return 0;