|
|
|
|
|
|
|
|
|
|
xen-devel
[Xen-devel] [PATCH][1/5] Improve the IDE HD geometry auto detection algo
Improve the IDE HD geometry auto detection algorithm.
Signed-off-by: Nitin A Kamble <nitin.a.kamble@xxxxxxxxx>
Signed-off-by: Asit K Mallick <asit.k.mallick@xxxxxxxxx>
Signed-off-by: Arun Sharma <arun.sharma@xxxxxxxxx>
diff -r 5bde59907bba -r a7b2638827fa tools/ioemu/hw/ide.c
--- a/tools/ioemu/hw/ide.c Thu Jun 30 18:59:08 2005
+++ b/tools/ioemu/hw/ide.c Thu Jun 30 19:25:19 2005
@@ -1850,7 +1850,11 @@
a cylinder boundary */
s->heads = p->end_head + 1;
s->sectors = p->end_sector & 63;
+ if (s->sectors == 0)
+ continue;
s->cylinders = s->nb_sectors / (s->heads * s->sectors);
+ if (s->cylinders < 1 || s->cylinders > 16383)
+ continue;
#if 0
printf("guessed partition: CHS=%d %d %d\n",
s->cylinders, s->heads, s->sectors);
@@ -1884,8 +1888,12 @@
s->sectors = secs;
} else {
ide_guess_geometry(s);
- if (s->cylinders == 0) {
- /* if no geometry, use a LBA compatible one */
+
+ /* if heads > 16, it means that a BIOS LBA
+ translation was active, so the default
+ hardware geometry is OK */
+ if ((s->heads > 16) || (s->cylinders == 0)) {
+ /* if no geometry, use a standard physical disk geometry */
cylinders = nb_sectors / (16 * 63);
if (cylinders > 16383)
cylinders = 16383;
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-devel] [PATCH][1/5] Improve the IDE HD geometry auto detection algorithm.,
Arun Sharma <=
|
|
|
|
|