LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Greg KH <gregkh@suse.de>
To: linux-kernel@vger.kernel.org, stable@kernel.org
Cc: Justin Forbes <jmforbes@linuxtx.org>,
	Zwane Mwaikambo <zwane@arm.linux.org.uk>,
	"Theodore Ts'o" <tytso@mit.edu>,
	Randy Dunlap <rdunlap@xenotime.net>,
	Dave Jones <davej@redhat.com>,
	Chuck Wolber <chuckw@quantumlinux.com>,
	Chris Wedgwood <reviews@ml.cw.f00f.org>,
	Michael Krufky <mkrufky@linuxtv.org>,
	Chuck Ebbert <cebbert@redhat.com>,
	torvalds@linux-foundation.org, akpm@linux-foundation.org,
	alan@lxorguk.ukuu.org.uk, Jan Beulich <jbeulich@novell.com>,
	Alan Cox <alan@redhat.com>,
	Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Subject: [patch 08/31] adjust legacy IDE resource setting (v2)
Date: Mon, 19 Mar 2007 14:38:14 -0700	[thread overview]
Message-ID: <20070319213814.GJ9261@kroah.com> (raw)
In-Reply-To: <20070319213647.GB9261@kroah.com>

[-- Attachment #1: adjust-legacy-ide-resource-setting.patch --]
[-- Type: text/plain, Size: 3355 bytes --]

-stable review patch.  If anyone has any objections, please let us know.

------------------

From: Jan Beulich <jbeulich@novell.com>

adjust legacy IDE resource setting (v2)

The change to force legacy mode IDE channels' resources to fixed non-zero
values confuses (at least some versions of) X, because the values reported
by the kernel and those readable from PCI config space aren't consistent
anymore.  Therefore, this patch arranges for the respective BARs to also
get updated if possible.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
Acked-by: Alan Cox <alan@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Cc: Chuck Ebbert <cebbert@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/pci/probe.c |   45 ++++++++++++++++++++++++++++++++-------------
 1 file changed, 32 insertions(+), 13 deletions(-)

--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -639,7 +639,34 @@ static void pci_read_irq(struct pci_dev 
 	dev->irq = irq;
 }
 
-#define LEGACY_IO_RESOURCE	(IORESOURCE_IO | IORESOURCE_PCI_FIXED)
+static void change_legacy_io_resource(struct pci_dev * dev, unsigned index,
+                                      unsigned start, unsigned end)
+{
+	unsigned base = start & PCI_BASE_ADDRESS_IO_MASK;
+	unsigned len = (end | ~PCI_BASE_ADDRESS_IO_MASK) - base + 1;
+
+	/*
+	 * Some X versions get confused when the BARs reported through
+	 * /sys or /proc differ from those seen in config space, thus
+	 * try to update the config space values, too.
+	 */
+	if (!(pci_resource_flags(dev, index) & IORESOURCE_IO))
+		printk(KERN_WARNING "%s: cannot adjust BAR%u (not I/O)\n",
+		       pci_name(dev), index);
+	else if (pci_resource_len(dev, index) != len)
+		printk(KERN_WARNING "%s: cannot adjust BAR%u (size %04X)\n",
+		       pci_name(dev), index, (unsigned)pci_resource_len(dev, index));
+	else {
+		printk(KERN_INFO "%s: trying to change BAR%u from %04X to %04X\n",
+		       pci_name(dev), index,
+		       (unsigned)pci_resource_start(dev, index), base);
+		pci_write_config_dword(dev, PCI_BASE_ADDRESS_0 + index * 4, base);
+	}
+	pci_resource_start(dev, index) = start;
+	pci_resource_end(dev, index)   = end;
+	pci_resource_flags(dev, index) =
+		IORESOURCE_IO | IORESOURCE_PCI_FIXED | PCI_BASE_ADDRESS_SPACE_IO;
+}
 
 /**
  * pci_setup_device - fill in class and map information of a device
@@ -692,20 +719,12 @@ static int pci_setup_device(struct pci_d
 			u8 progif;
 			pci_read_config_byte(dev, PCI_CLASS_PROG, &progif);
 			if ((progif & 1) == 0) {
-				dev->resource[0].start = 0x1F0;
-				dev->resource[0].end = 0x1F7;
-				dev->resource[0].flags = LEGACY_IO_RESOURCE;
-				dev->resource[1].start = 0x3F6;
-				dev->resource[1].end = 0x3F6;
-				dev->resource[1].flags = LEGACY_IO_RESOURCE;
+				change_legacy_io_resource(dev, 0, 0x1F0, 0x1F7);
+				change_legacy_io_resource(dev, 1, 0x3F6, 0x3F6);
 			}
 			if ((progif & 4) == 0) {
-				dev->resource[2].start = 0x170;
-				dev->resource[2].end = 0x177;
-				dev->resource[2].flags = LEGACY_IO_RESOURCE;
-				dev->resource[3].start = 0x376;
-				dev->resource[3].end = 0x376;
-				dev->resource[3].flags = LEGACY_IO_RESOURCE;
+				change_legacy_io_resource(dev, 2, 0x170, 0x177);
+				change_legacy_io_resource(dev, 3, 0x376, 0x376);
 			}
 		}
 		break;

-- 

  parent reply	other threads:[~2007-03-19 21:53 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20070319213047.710101653@mini.kroah.org>
2007-03-19 21:36 ` [patch 00/31] 2.6.20-stable review Greg KH
2007-03-19 21:37   ` [patch 01/31] Fix another NULL pointer deref in ipv6_sockglue.c Greg KH
2007-03-19 21:37   ` [patch 02/31] Fix rtm_to_ifaddr() error return Greg KH
2007-03-19 21:37   ` [patch 03/31] Fix user copy length in ipv6_sockglue.c Greg KH
2007-03-19 22:01     ` Chris Wright
2007-03-19 22:51       ` David Miller
2007-03-20  4:05       ` Greg KH
2007-03-19 21:37   ` [patch 04/31] gdth: fix oops in gdth_copy_cmd() Greg KH
2007-03-19 21:37   ` [patch 05/31] NetLabel: Verify sensitivity level has a valid CIPSO mapping Greg KH
2007-03-19 21:38   ` [patch 06/31] NETFILTER: nfnetlink_log: fix reference counting Greg KH
2007-03-19 21:38   ` [patch 07/31] IA64: fix NULL pointer in ia64/irq_chip-mask/unmask function Greg KH
2007-03-19 21:38   ` Greg KH [this message]
2007-03-19 21:38   ` [patch 09/31] mm: fix madvise infinine loop Greg KH
2007-03-19 21:38   ` [patch 10/31] EHCI: add delay to bus_resume before accessing ports Greg KH
2007-03-19 21:38   ` [patch 11/31] initialise pi_lock if CONFIG_RT_MUTEXES=N Greg KH
2007-03-19 21:38   ` [patch 12/31] futex: PI state locking fix Greg KH
2007-03-19 21:39   ` [patch 13/31] nfs: nfs_getattr() cant call nfs_sync_mapping_range() for non-regular files Greg KH
2007-03-19 21:39   ` [patch 14/31] hrtimer: prevent overrun DoS in hrtimer_forward() Greg KH
2007-03-19 21:39   ` [patch 15/31] fix MTIME_SEC_MAX on 32-bit Greg KH
2007-03-19 21:39   ` [patch 16/31] fix read past end of array in md/linear.c Greg KH
2007-03-19 21:39   ` [patch 17/31] r8169: fix a race between PCI probe and dev_open Greg KH
2007-03-19 21:39   ` [patch 18/31] Fix extraneous IPSEC larval SA creation Greg KH
2007-03-19 21:39   ` [patch 19/31] : Fix GFP_KERNEL with preemption disabled in fib_trie Greg KH
2007-03-19 21:40   ` [patch 20/31] Fix ipv6 flow label inheritance Greg KH
2007-03-19 21:40   ` [patch 21/31] Copy over mac_len when cloning an skb Greg KH
2007-03-19 21:40   ` [patch 22/31] Fix sparc64 hugepage bugs Greg KH
2007-03-19 21:40   ` [patch 23/31] Fix page allocation debugging on sparc64 Greg KH
2007-03-19 21:40   ` [patch 24/31] IrDA: irttp_dup spin_lock initialisation Greg KH
2007-03-19 21:40   ` [patch 25/31] Input: i8042 - really suppress ACK/NAK during panic blink Greg KH
2007-03-19 21:40   ` [patch 26/31] hda-intel - Fix codec probe with ATI controllers Greg KH
2007-03-19 21:40   ` [patch 27/31] oom fix: prevent oom from killing a process with children/sibling unkillable Greg KH
2007-03-19 21:41   ` [patch 28/31] dio: invalidate clean pages before dio write Greg KH
2007-03-19 21:41   ` [patch 29/31] Input: i8042 - fix AUX IRQ delivery check Greg KH
2007-03-19 21:48     ` Dmitry Torokhov
2007-03-19 21:55       ` Chuck Ebbert
2007-03-20  4:18       ` [stable] " Greg KH
2007-03-19 21:41   ` [patch 30/31] fix deadlock in audit_log_task_context() Greg KH
2007-03-19 21:41   ` [patch 31/31] UML - arch_prctl should set thread fs Greg KH
2007-03-19 21:43   ` [patch 00/31] 2.6.20-stable review Greg KH
2007-03-20  5:15   ` Gene Heskett
2007-03-20 15:52     ` Greg KH
2007-03-20 19:59       ` Gene Heskett
2007-03-20 20:12         ` Michael Krufky
2007-03-21  2:56           ` Gene Heskett
2007-03-21  3:04           ` Gene Heskett
2007-03-21  3:39             ` Greg KH
2007-03-21  3:53               ` Gene Heskett
2007-03-25 16:30                 ` Adrian Bunk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070319213814.GJ9261@kroah.com \
    --to=gregkh@suse.de \
    --cc=akpm@linux-foundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=alan@redhat.com \
    --cc=bzolnier@gmail.com \
    --cc=cebbert@redhat.com \
    --cc=chuckw@quantumlinux.com \
    --cc=davej@redhat.com \
    --cc=jbeulich@novell.com \
    --cc=jmforbes@linuxtx.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mkrufky@linuxtv.org \
    --cc=rdunlap@xenotime.net \
    --cc=reviews@ml.cw.f00f.org \
    --cc=stable@kernel.org \
    --cc=torvalds@linux-foundation.org \
    --cc=tytso@mit.edu \
    --cc=zwane@arm.linux.org.uk \
    --subject='Re: [patch 08/31] adjust legacy IDE resource setting (v2)' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).