From: Lee Trager <lt73@cs.drexel.edu>
To: IDE/ATA development list <linux-ide@vger.kernel.org>
Subject: [PATCH] HPA Detect From Resume
Date: Sat, 12 May 2007 02:39:28 -0400 [thread overview]
Message-ID: <46456120.6070401@cs.drexel.edu> (raw)
Currently when system which have HPA require HPA to be detected and
disabled upon resume from RAM or disk. The current IDE drivers do not do
this nor does libata(obviously it since it doesn't support HPA yet). I
have implemented this into the current IDE drivers and it has been
tested by many others since 7/15/2006 in bug number
6840(http://bugzilla.kernel.org/show_bug.cgi?id=6840) and it has been
confirmed to work fine with no problems.
--- linux-2.6.21.1-old/include/linux/ide.h 2007-05-01 02:54:12.000000000 -0400
+++ linux-2.6.21.1/include/linux/ide.h 2007-04-28 01:06:20.000000000 -0400
@@ -1005,6 +1005,7 @@
int (*probe)(ide_drive_t *);
void (*remove)(ide_drive_t *);
void (*shutdown)(ide_drive_t *);
+ void (*resume)(ide_drive_t *);
} ide_driver_t;
#define to_ide_driver(drv) container_of(drv, ide_driver_t, gen_driver)
--- linux-2.6.21.1-old/drivers/ide/ide.c 2007-05-01 02:54:12.000000000 -0400
+++ linux-2.6.21.1/drivers/ide/ide.c 2007-04-28 03:41:24.000000000 -0400
@@ -1260,9 +1260,11 @@
{
ide_drive_t *drive = dev->driver_data;
ide_hwif_t *hwif = HWIF(drive);
+ ide_driver_t *drv = to_ide_driver(dev->driver);
struct request rq;
struct request_pm_state rqpm;
ide_task_t args;
+ int err;
/* Call ACPI _STM only once */
if (!(drive->dn % 2))
@@ -1279,7 +1281,12 @@
rqpm.pm_step = ide_pm_state_start_resume;
rqpm.pm_state = PM_EVENT_ON;
- return ide_do_drive_cmd(drive, &rq, ide_head_wait);
+ err = ide_do_drive_cmd(drive, &rq, ide_head_wait);
+
+ if (err == 0 && drv->resume)
+ drv->resume(drive);
+
+ return err;
}
int generic_ide_ioctl(ide_drive_t *drive, struct file *file, struct block_device *bdev,
--- linux-2.6.21.1-old/drivers/ide/ide-disk.c 2007-05-01 02:54:12.000000000 -0400
+++ linux-2.6.21.1/drivers/ide/ide-disk.c 2007-04-28 01:06:20.000000000 -0400
@@ -1024,6 +1024,17 @@
static int ide_disk_probe(ide_drive_t *drive);
+/*
+ * On HPA drives the capacity needs to be
+ * reinitilized on resume otherwise the disk
+ * can not be used and a hard reset is required
+ */
+static void ide_disk_resume(ide_drive_t *drive)
+{
+ if (idedisk_supports_hpa(drive->id))
+ init_idedisk_capacity(drive);
+}
+
static void ide_device_shutdown(ide_drive_t *drive)
{
#ifdef CONFIG_ALPHA
@@ -1067,6 +1078,7 @@
.error = __ide_error,
.abort = __ide_abort,
.proc = idedisk_proc,
+ .resume = ide_disk_resume,
};
static int idedisk_open(struct inode *inode, struct file *filp)
next reply other threads:[~2007-05-12 7:09 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-12 6:39 Lee Trager [this message]
2007-06-02 22:24 ` [PATCH] HPA Detect From Resume Bartlomiej Zolnierkiewicz
2007-06-05 8:55 ` Lee Trager
2007-06-15 22:43 ` Bartlomiej Zolnierkiewicz
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=46456120.6070401@cs.drexel.edu \
--to=lt73@cs.drexel.edu \
--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 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).