rpms/kernel/F-8 kernel.spec, 1.397, 1.398 linux-2.6-firewire-git-pending.patch, 1.8, 1.9

Jarod Wilson (jwilson) fedora-extras-commits at redhat.com
Mon Mar 24 15:15:43 UTC 2008


Author: jwilson

Update of /cvs/pkgs/rpms/kernel/F-8
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv6739

Modified Files:
	kernel.spec linux-2.6-firewire-git-pending.patch 
Log Message:
* Mon Mar 24 2008 Jarod Wilson <jwilson at redhat.com> 2.6.24.3-52
- firewire: make sure phy config packets get sent before initiating bus
  reset. Fixes bugzilla.kernel.org #10128.



Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-8/kernel.spec,v
retrieving revision 1.397
retrieving revision 1.398
diff -u -r1.397 -r1.398
--- kernel.spec	21 Mar 2008 15:28:59 -0000	1.397
+++ kernel.spec	24 Mar 2008 15:14:33 -0000	1.398
@@ -1940,7 +1940,11 @@
 
 
 %changelog
-* Fri Mar 21 2008 Dave Jones <davej at redhat.com>
+* Mon Mar 24 2008 Jarod Wilson <jwilson at redhat.com> 2.6.24.3-52
+- firewire: make sure phy config packets get sent before initiating bus
+  reset. Fixes bugzilla.kernel.org #10128.
+
+* Fri Mar 21 2008 Dave Jones <davej at redhat.com> 2.6.24.3-51
 - Enable PIIX4 I2C driver on x86-64.
 
 * Thu Mar 20 2008 Chuck Ebbert <cebbert at redhat.com> 2.6.24.3-50

linux-2.6-firewire-git-pending.patch:

Index: linux-2.6-firewire-git-pending.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-8/linux-2.6-firewire-git-pending.patch,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- linux-2.6-firewire-git-pending.patch	17 Mar 2008 21:35:25 -0000	1.8
+++ linux-2.6-firewire-git-pending.patch	24 Mar 2008 15:14:33 -0000	1.9
@@ -589,3 +589,106 @@
 
 
 
+Date: Thu, 20 Mar 2008 23:48:23 +0100 (CET)
+From: Stefan Richter <stefanr at s5r6.in-berlin.de>
+Subject: [PATCH] firewire: wait until PHY configuration packet was transmitted
+To: linux1394-devel at lists.sourceforge.net
+cc: linux-kernel at vger.kernel.org,
+ Jarod Wilson <jwilson at redhat.com>
+
+We now exit fw_send_phy_config /after/ the PHY config packet has been
+transmitted, instead of before.  A subsequent fw_core_initiate_bus_reset
+will therefore not overlap with the transmission.  This is meant to make
+the send PHY config packet + reset bus routine more deterministic.
+
+Signed-off-by: Stefan Richter <stefanr at s5r6.in-berlin.de>
+Signed-off-by: Jarod Wilson <jwilson at redhat.com>
+---
+ drivers/firewire/fw-transaction.c |   49 ++++++++++++++----------------
+ 1 file changed, 24 insertions(+), 25 deletions(-)
+
+Index: linux/drivers/firewire/fw-transaction.c
+===================================================================
+--- linux.orig/drivers/firewire/fw-transaction.c
++++ linux/drivers/firewire/fw-transaction.c
+@@ -18,6 +18,7 @@
+  * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+  */
+ 
++#include <linux/completion.h>
+ #include <linux/kernel.h>
+ #include <linux/module.h>
+ #include <linux/init.h>
+@@ -294,42 +295,40 @@ fw_send_request(struct fw_card *card, st
+ }
+ EXPORT_SYMBOL(fw_send_request);
+ 
++struct fw_phy_packet {
++	struct fw_packet packet;
++	struct completion done;
++};
++
+ static void
+ transmit_phy_packet_callback(struct fw_packet *packet,
+ 			     struct fw_card *card, int status)
+ {
+-	kfree(packet);
+-}
+-
+-static void send_phy_packet(struct fw_card *card, u32 data, int generation)
+-{
+-	struct fw_packet *packet;
++	struct fw_phy_packet *p =
++			container_of(packet, struct fw_phy_packet, packet);
+ 
+-	packet = kzalloc(sizeof(*packet), GFP_ATOMIC);
+-	if (packet == NULL)
+-		return;
+-
+-	packet->header[0] = data;
+-	packet->header[1] = ~data;
+-	packet->header_length = 8;
+-	packet->payload_length = 0;
+-	packet->speed = SCODE_100;
+-	packet->generation = generation;
+-	packet->callback = transmit_phy_packet_callback;
+-
+-	card->driver->send_request(card, packet);
++	complete(&p->done);
+ }
+ 
+ void fw_send_phy_config(struct fw_card *card,
+ 			int node_id, int generation, int gap_count)
+ {
+-	u32 q;
+-
+-	q = PHY_IDENTIFIER(PHY_PACKET_CONFIG) |
+-		PHY_CONFIG_ROOT_ID(node_id) |
+-		PHY_CONFIG_GAP_COUNT(gap_count);
++	struct fw_phy_packet p;
++	u32 data = PHY_IDENTIFIER(PHY_PACKET_CONFIG) |
++		   PHY_CONFIG_ROOT_ID(node_id) |
++		   PHY_CONFIG_GAP_COUNT(gap_count);
++
++	p.packet.header[0] = data;
++	p.packet.header[1] = ~data;
++	p.packet.header_length = 8;
++	p.packet.payload_length = 0;
++	p.packet.speed = SCODE_100;
++	p.packet.generation = generation;
++	p.packet.callback = transmit_phy_packet_callback;
++	init_completion(&p.done);
+ 
+-	send_phy_packet(card, q, generation);
++	card->driver->send_request(card, &p.packet);
++	wait_for_completion(&p.done);
+ }
+ 
+ void fw_flush_transactions(struct fw_card *card)
+
+-- 
+Stefan Richter
+-=====-==--- --== =-=--
+http://arcgraph.de/sr/
+
+




More information about the fedora-extras-commits mailing list