All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH][1/9] Xen full virtualization does not handle unaligned IO with page crossing.
@ 2005-07-25 21:00 Arun Sharma
  0 siblings, 0 replies; only message in thread
From: Arun Sharma @ 2005-07-25 21:00 UTC (permalink / raw)
  To: Ian Pratt, Keir Fraser; +Cc: xen-devel

Xen full virtualization does not handle unaligned IO with page crossing.
Disable 32-bit PIO as a workaround.

Signed-off-by: Asit Mallick <asit.k.mallick@intel.com>
Signed-off-by: Arun Sharma <arun.sharma@intel.com>

diff -r c9f0c3619b96 -r ae5dbce3f530 tools/firmware/rombios/rombios.c
--- a/tools/firmware/rombios/rombios.c	Tue Jul 12 23:37:57 2005
+++ b/tools/firmware/rombios/rombios.c	Wed Jul 13 19:12:38 2005
@@ -28,6 +28,11 @@
 
 #define VMXASSIST
 #undef VMXTEST
+
+// Xen full virtualization does not handle unaligned IO with page crossing.
+// Disable 32-bit PIO as a workaround.
+#define NO_PIO32
+
 
 // ROM BIOS compatability entry points:
 // ===================================
@@ -2248,6 +2253,9 @@
       Bit16u cylinders, heads, spt, blksize;
       Bit8u  translation, removable, mode;
 
+      // default mode to PIO16
+      mode = ATA_MODE_PIO16;
+
       //Temporary values to do the transfer
       write_byte(ebda_seg,&EbdaData->ata.devices[device].device,ATA_DEVICE_HD);
       write_byte(ebda_seg,&EbdaData->ata.devices[device].mode, ATA_MODE_PIO16);
@@ -2256,7 +2264,10 @@
         BX_PANIC("ata-detect: Failed to detect ATA device\n");
 
       removable = (read_byte(get_SS(),buffer+0) & 0x80) ? 1 : 0;
+#ifndef	NO_PIO32
       mode      = read_byte(get_SS(),buffer+96) ? ATA_MODE_PIO32 : ATA_MODE_PIO16;
+#endif
+
       blksize   = read_word(get_SS(),buffer+10);
       
       cylinders = read_word(get_SS(),buffer+(1*2)); // word 1
@@ -2346,6 +2357,9 @@
       Bit8u  type, removable, mode;
       Bit16u blksize;
 
+      // default mode to PIO16
+      mode = ATA_MODE_PIO16;
+
       //Temporary values to do the transfer
       write_byte(ebda_seg,&EbdaData->ata.devices[device].device,ATA_DEVICE_CDROM);
       write_byte(ebda_seg,&EbdaData->ata.devices[device].mode, ATA_MODE_PIO16);
@@ -2355,7 +2369,9 @@
 
       type      = read_byte(get_SS(),buffer+1) & 0x1f;
       removable = (read_byte(get_SS(),buffer+0) & 0x80) ? 1 : 0;
+#ifndef	NO_PIO32
       mode      = read_byte(get_SS(),buffer+96) ? ATA_MODE_PIO32 : ATA_MODE_PIO16;
+#endif
       blksize   = 2048;
 
       write_byte(ebda_seg,&EbdaData->ata.devices[device].device, type);

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2005-07-25 21:00 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-07-25 21:00 [PATCH][1/9] Xen full virtualization does not handle unaligned IO with page crossing Arun Sharma

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.