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.
next 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.