All of lore.kernel.org
 help / color / mirror / Atom feed
From: bugzilla-daemon@bugzilla.kernel.org
To: linux-ide@vger.kernel.org
Subject: [Bug 15639] New: 2.6.34-rc1 breaks via82cxxx Host Protected Area
Date: Sat, 27 Mar 2010 14:37:04 GMT	[thread overview]
Message-ID: <bug-15639-11633@https.bugzilla.kernel.org/> (raw)

https://bugzilla.kernel.org/show_bug.cgi?id=15639

           Summary: 2.6.34-rc1 breaks via82cxxx Host Protected Area
           Product: IO/Storage
           Version: 2.5
    Kernel Version: 2.6.34-rc2
          Platform: All
        OS/Version: Linux
              Tree: Mainline
            Status: NEW
          Severity: high
          Priority: P1
         Component: IDE
        AssignedTo: io_ide@kernel-bugs.osdl.org
        ReportedBy: David@Fries.net
        Regression: Yes


The kernel fails to see the entire disk with 2.6.34-rc2 with VIA
vt82c586b chipset.  I tracked it down to commit
f931a5d5785d7b7c44871bd7ad2762e29dfddf29 "via82cxxx: workaround h/w
bugs" and reverting just that one solves the problem, or just
commenting out just one outb write in that change.

via82cxxx 0000:00:07.1: VIA vt82c586b (rev 41) IDE UDMA33
via82cxxx 0000:00:07.1: IDE controller (0x1106:0x0571 rev 0x06)
via82cxxx 0000:00:07.1: not 100% native mode: will probe irqs later

Note the kernel panic is intentional as I'm given the test kernel an
invalid root device, so that I can suspend to disk, try a kernel,
resume and pick up where I left off.  It does have a side benefit of
dumping the size of all partitions.

2.6.34-rc2 unmodified, fails and sees 30985416 KiB for the last
partition.
ide-gd driver 1.18
hda: max request size: 128KiB
hda: 66055248 sectors (33820 MB) w/7936KiB Cache, CHS=65531/16/63
hda: cache flushes supported
 hda: hda1 hda2 hda3
hda: p3 size 236037312 exceeds device capacity, enabling native capacity
hda: p3 size 236037312 exceeds device capacity, limited to end of disk
ide-cd driver 5.00
...
Please append a correct "root=" boot option; here are the available partitions:
0300        33027624 hda driver: ide-gd
  0301           49391 hda1
  0302         1992816 hda2
  0303        30985416 hda3
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(22,2)

2.6.34-rc2 with patch revered, correct size 118018656
ide-gd driver 1.18
hda: max request size: 128KiB
hda: Host Protected Area detected.
        current capacity is 66055248 sectors (33820 MB)
        native  capacity is 240121728 sectors (122942 MB)
hda: 66055248 sectors (33820 MB) w/7936KiB Cache, CHS=65531/16/63
hda: cache flushes supported
 hda: hda1 hda2 hda3
hda: p3 size 236037312 exceeds device capacity, enabling native capacity
hda: detected capacity change from 33820286976 to 122942324736
ide-cd driver 5.00
0300       120060864 hda driver: ide-gd
  0301           49391 hda1
  0302         1992816 hda2
  0303       118018656 hda3
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(22,2)

Here are two debug patches, the first adds debug prints and the second
disables the problematic write, I  have the output of both included.

>From dac7d14ce1f227d8a084c3ec218ea1430bffdc57 Mon Sep 17 00:00:00 2001
From: David Fries <david@fries.net>
Date: Thu, 25 Mar 2010 19:51:31 -0500
Subject: [PATCH 1/2] fails: add print messages

add print messages for debugging
---
 drivers/ide/via82cxxx.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/drivers/ide/via82cxxx.c b/drivers/ide/via82cxxx.c
index e65d010..ccd5640 100644
--- a/drivers/ide/via82cxxx.c
+++ b/drivers/ide/via82cxxx.c
@@ -409,6 +409,8 @@ static void via_write_devctl(ide_hwif_t *hwif, u8 ctl)

     outb(ctl, hwif->io_ports.ctl_addr);
     outb(vdev->cached_device[hwif->channel], hwif->io_ports.device_addr);
+    printk("via_write_devctl        write %u, %lu\n",
+        vdev->cached_device[hwif->channel], hwif->io_ports.device_addr);
 }

 static void __via_dev_select(ide_drive_t *drive, u8 select)
@@ -442,6 +444,9 @@ static void via_tf_load(ide_drive_t *drive, struct
ide_taskfile *tf, u8 valid)
         outb(tf->lbah, io_ports->lbah_addr);
     if (valid & IDE_VALID_DEVICE)
         __via_dev_select(drive, tf->device);
+    printk("via_tf_load write tf->device %u in place of tf->device %u\n"
+        " value io_ports->device_addr %lu\n",
+        tf->device, tf->device, io_ports->device_addr);
 }

 const struct ide_tp_ops via_tp_ops = {
-- 
1.7.0



Uniform Multi-Platform E-IDE driver
via82cxxx 0000:00:07.1: VIA vt82c586b (rev 41) IDE UDMA33
via82cxxx 0000:00:07.1: IDE controller (0x1106:0x0571 rev 0x06)
via82cxxx 0000:00:07.1: not 100% native mode: will probe irqs later
ide: disallowing DMA for hda
ide: disallowing DMA for hdb
    ide0: BM-DMA at 0xe400-0xe407
ide: disallowing DMA for hdc
ide: disallowing DMA for hdd
    ide1: BM-DMA at 0xe408-0xe40f
via_write_devctl        write 160, 502
via_write_devctl        write 176, 502
via_write_devctl        write 160, 502
hda: Maxtor 6Y120P0, ATA DISK drive
via_write_devctl        write 176, 502
via_tf_load write tf->device 0 in place of tf->device 0
 value io_ports->device_addr 502
via_write_devctl        write 176, 502
via_tf_load write tf->device 0 in place of tf->device 0
 value io_ports->device_addr 502
via_write_devctl        write 160, 502
via_tf_load write tf->device 0 in place of tf->device 0
 value io_ports->device_addr 502
via_write_devctl        write 160, 502
via_tf_load write tf->device 0 in place of tf->device 0
 value io_ports->device_addr 502
ide1: no devices on the port
via_write_devctl        write 160, 502
via_write_devctl        write 0, 374
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
ide_generic: please use "probe_mask=0x3f" module parameter for probing all
legacy ISA IDE ports
ide-gd driver 1.18
hda: max request size: 128KiB
via_write_devctl        write 160, 502
via_tf_load write tf->device 0 in place of tf->device 0
 value io_ports->device_addr 502
via_tf_load write tf->device 175 in place of tf->device 175
 value io_ports->device_addr 502
via_write_devctl        write 160, 502
via_tf_load write tf->device 0 in place of tf->device 0
 value io_ports->device_addr 502
via_tf_load write tf->device 160 in place of tf->device 160
 value io_ports->device_addr 502
via_write_devctl        write 160, 502
via_tf_load write tf->device 0 in place of tf->device 0
 value io_ports->device_addr 502
via_tf_load write tf->device 160 in place of tf->device 160
 value io_ports->device_addr 502
via_write_devctl        write 160, 502
via_tf_load write tf->device 0 in place of tf->device 0
 value io_ports->device_addr 502
via_tf_load write tf->device 224 in place of tf->device 224
 value io_ports->device_addr 502
via_write_devctl        write 224, 502
hda: 66055248 sectors (33820 MB) w/7936KiB Cache, CHS=65531/16/63
via_write_devctl        write 160, 502
via_tf_load write tf->device 0 in place of tf->device 0
 value io_ports->device_addr 502
via_tf_load write tf->device 160 in place of tf->device 160
 value io_ports->device_addr 502
via_write_devctl        write 160, 502
hda: cache flushes supported
 hda:via_write_devctl        write 160, 502
via_tf_load write tf->device 0 in place of tf->device 0
 value io_ports->device_addr 502
via_tf_load write tf->device 224 in place of tf->device 224
 value io_ports->device_addr 502
 hda1 hda2 hda3
hda: p3 size 236037312 exceeds device capacity, enabling native capacity
via_write_devctl        write 160, 502
via_tf_load write tf->device 0 in place of tf->device 0
 value io_ports->device_addr 502
via_tf_load write tf->device 224 in place of tf->device 224
 value io_ports->device_addr 502
via_write_devctl        write 224, 502
via_write_devctl        write 160, 502
via_tf_load write tf->device 0 in place of tf->device 0
 value io_ports->device_addr 502
via_tf_load write tf->device 227 in place of tf->device 227
 value io_ports->device_addr 502
via_write_devctl        write 227, 502
hda: p3 size 236037312 exceeds device capacity, limited to end of disk
via_write_devctl        write 160, 502
via_tf_load write tf->device 0 in place of tf->device 0
 value io_ports->device_addr 502
via_tf_load write tf->device 160 in place of tf->device 160
 value io_ports->device_addr 502
via_write_devctl        write 160, 502
ide-cd driver 5.00
VFS: Cannot open root device "1602" or unknown-block(22,2)
Please append a correct "root=" boot option; here are the available partitions:
0300        33027624 hda driver: ide-gd
  0301           49391 hda1
  0302         1992816 hda2
  0303        30985416 hda3
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(22,2)


>From 72da5cd66e1f857fbe6afa0e92634e8adf684737 Mon Sep 17 00:00:00 2001
From: David Fries <david@fries.net>
Date: Thu, 25 Mar 2010 20:07:19 -0500
Subject: [PATCH 2/2] via82cxxx works: skip write

This fixes via82cxxx host protected area problems.
---
 drivers/ide/via82cxxx.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/ide/via82cxxx.c b/drivers/ide/via82cxxx.c
index ccd5640..d598b63 100644
--- a/drivers/ide/via82cxxx.c
+++ b/drivers/ide/via82cxxx.c
@@ -408,8 +408,10 @@ static void via_write_devctl(ide_hwif_t *hwif, u8 ctl)
     struct via82cxxx_dev *vdev = hwif->host->host_priv;

     outb(ctl, hwif->io_ports.ctl_addr);
+    /*
     outb(vdev->cached_device[hwif->channel], hwif->io_ports.device_addr);
-    printk("via_write_devctl        write %u, %lu\n",
+    */
+    printk("via_write_devctl   skip write %u, %lu\n",
         vdev->cached_device[hwif->channel], hwif->io_ports.device_addr);
 }

-- 
1.7.0



Uniform Multi-Platform E-IDE driver
via82cxxx 0000:00:07.1: VIA vt82c586b (rev 41) IDE UDMA33
via82cxxx 0000:00:07.1: IDE controller (0x1106:0x0571 rev 0x06)
via82cxxx 0000:00:07.1: not 100% native mode: will probe irqs later
ide: disallowing DMA for hda
ide: disallowing DMA for hdb
    ide0: BM-DMA at 0xe400-0xe407
ide: disallowing DMA for hdc
ide: disallowing DMA for hdd
    ide1: BM-DMA at 0xe408-0xe40f
via_write_devctl   skip write 160, 502
via_write_devctl   skip write 176, 502
via_write_devctl   skip write 160, 502
hda: Maxtor 6Y120P0, ATA DISK drive
via_write_devctl   skip write 176, 502
via_tf_load write tf->device 0 in place of tf->device 0
 value io_ports->device_addr 502
via_write_devctl   skip write 176, 502
via_tf_load write tf->device 0 in place of tf->device 0
 value io_ports->device_addr 502
via_write_devctl   skip write 160, 502
via_tf_load write tf->device 0 in place of tf->device 0
 value io_ports->device_addr 502
via_write_devctl   skip write 160, 502
via_tf_load write tf->device 0 in place of tf->device 0
 value io_ports->device_addr 502
ide1: no devices on the port
via_write_devctl   skip write 160, 502
via_write_devctl   skip write 0, 374
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
ide_generic: please use "probe_mask=0x3f" module parameter for probing all
legacy ISA IDE ports
ide-gd driver 1.18
hda: max request size: 128KiB
via_write_devctl   skip write 160, 502
via_tf_load write tf->device 0 in place of tf->device 0
 value io_ports->device_addr 502
via_tf_load write tf->device 175 in place of tf->device 175
 value io_ports->device_addr 502
via_write_devctl   skip write 160, 502
via_tf_load write tf->device 0 in place of tf->device 0
 value io_ports->device_addr 502
via_tf_load write tf->device 160 in place of tf->device 160
 value io_ports->device_addr 502
via_write_devctl   skip write 160, 502
via_tf_load write tf->device 0 in place of tf->device 0
 value io_ports->device_addr 502
via_tf_load write tf->device 160 in place of tf->device 160
 value io_ports->device_addr 502
via_write_devctl   skip write 160, 502
via_tf_load write tf->device 0 in place of tf->device 0
 value io_ports->device_addr 502
via_tf_load write tf->device 224 in place of tf->device 224
 value io_ports->device_addr 502
via_write_devctl   skip write 224, 502
hda: Host Protected Area detected.
        current capacity is 66055248 sectors (33820 MB)
        native  capacity is 240121728 sectors (122942 MB)
hda: 66055248 sectors (33820 MB) w/7936KiB Cache, CHS=65531/16/63
via_write_devctl   skip write 160, 502
via_tf_load write tf->device 0 in place of tf->device 0
 value io_ports->device_addr 502
via_tf_load write tf->device 160 in place of tf->device 160
 value io_ports->device_addr 502
via_write_devctl   skip write 160, 502
hda: cache flushes supported
 hda:via_write_devctl   skip write 160, 502
via_tf_load write tf->device 0 in place of tf->device 0
 value io_ports->device_addr 502
via_tf_load write tf->device 224 in place of tf->device 224
 value io_ports->device_addr 502
 hda1 hda2 hda3
hda: p3 size 236037312 exceeds device capacity, enabling native capacity
via_write_devctl   skip write 160, 502
via_tf_load write tf->device 0 in place of tf->device 0
 value io_ports->device_addr 502
via_tf_load write tf->device 224 in place of tf->device 224
 value io_ports->device_addr 502
via_write_devctl   skip write 224, 502
via_write_devctl   skip write 160, 502
via_tf_load write tf->device 0 in place of tf->device 0
 value io_ports->device_addr 502
via_tf_load write tf->device 238 in place of tf->device 238
 value io_ports->device_addr 502
via_write_devctl   skip write 238, 502
hda: detected capacity change from 33820286976 to 122942324736
via_write_devctl   skip write 160, 502
via_tf_load write tf->device 0 in place of tf->device 0
 value io_ports->device_addr 502
via_tf_load write tf->device 160 in place of tf->device 160
 value io_ports->device_addr 502
via_write_devctl   skip write 160, 502
ide-cd driver 5.00
VFS: Cannot open root device "1602" or unknown-block(22,2)
Please append a correct "root=" boot option; here are the available partitions:
0300       120060864 hda driver: ide-gd
  0301           49391 hda1
  0302         1992816 hda2
  0303       118018656 hda3
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(22,2)

First-Bad-Commit : f931a5d5785d7b7c44871bd7ad2762e29dfddf29
Notify-Also : linux-ide@vger.kernel.org

-- 
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching the assignee of the bug.

             reply	other threads:[~2010-03-27 14:37 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-27 14:37 bugzilla-daemon [this message]
2010-04-01  1:07 ` [Bug 15639] 2.6.34-rc1 breaks via82cxxx Host Protected Area bugzilla-daemon
2010-04-01  1:11 ` bugzilla-daemon

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=bug-15639-11633@https.bugzilla.kernel.org/ \
    --to=bugzilla-daemon@bugzilla.kernel.org \
    --cc=linux-ide@vger.kernel.org \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.