WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH 2/2] hvmloader->rombios use C/H/S, LBA when have been

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH 2/2] hvmloader->rombios use C/H/S, LBA when have been set by qemu
From: DuanZhenzhong <zhenzhong.duan@xxxxxxxxxx>
Date: Mon, 25 Oct 2010 13:53:18 +0800
Cc: joe.jin@xxxxxxxxxx
Delivery-date: Sun, 24 Oct 2010 22:56:05 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <20100805233516.GB21473@xxxxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Organization: Oracle Corporation
References: <20100805233516.GB21473@xxxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Thunderbird 2.0.0.24 (X11/20100908)
Hi,
Multiple guests rebooting, across multiple OVS nodes. Not all guest at the same time.
Error in /var/log/xend.log taking the form:
...
[2010-09-06 12:19:55 8816] WARNING (image:490) domain 234_sscgrantsd: device model failure: pid 16657: died due to signal 11; see
...

This is due to some ide state pointer in ide.c is NULL.
Patch from carnold@xxxxxxxxxx fixed this problem.
After applying, our system get steady.

--- xen-3.4.0.old/qemu-xen.git/hw/ide.c 2010-10-19 10:45:23.000000000 +0800
+++ xen-3.4.0/qemu-xen.git/hw/ide.c     2010-10-19 10:52:57.000000000 +0800
@@ -934,8 +934,9 @@ static inline void ide_dma_submit_check(

static inline void ide_set_irq(IDEState *s)
{
-    BMDMAState *bm = s->bmdma;
-    if (!s->bs) return; /* ouch! (see ide_flush_cb) */
+    BMDMAState *bm;
+    if (!s || !s->bs) return; /* ouch! (see ide_flush_cb) */
+    bm = s->bmdma;
    if (!(s->cmd & IDE_CMD_DISABLE_IRQ)) {
        if (bm) {
            bm->status |= BM_STATUS_INT;
@@ -1223,14 +1224,14 @@ static void ide_read_dma_cb(void *opaque
    int n;
    int64_t sector_num;

+    if (!s || !s->bs) return; /* ouch! (see ide_flush_cb) */
+
    if (ret < 0) {
        dma_buf_commit(s, 1);
       ide_dma_error(s);
       return;
    }

-    if (!s->bs) return; /* ouch! (see ide_flush_cb) */
-
    n = s->io_buffer_size >> 9;
    sector_num = ide_get_sector(s);
    if (n > 0) {
@@ -1334,6 +1335,8 @@ static void ide_write_flush_cb(void *opa
    BMDMAState *bm = opaque;
    IDEState *s = bm->ide_if;

+    if (!s) return;
+
    if (ret != 0) {
       ide_dma_error(s);
       return;
@@ -1365,6 +1368,8 @@ static void ide_write_dma_cb(void *opaqu
    int n;
    int64_t sector_num;

+    if (!s || !s->bs) return; /* ouch! (see ide_flush_cb) */
+
    if (ret < 0) {
        if (ide_handle_write_error(s, -ret,  BM_STATUS_DMA_RETRY))
            return;
@@ -1375,8 +1380,6 @@ static void ide_write_dma_cb(void *opaqu
      return; /* ouch2 */
    }

-    if (!s->bs) return; /* ouch! (see ide_flush_cb) */
-
    n = s->io_buffer_size >> 9;
    sector_num = ide_get_sector(s);
    if (n > 0) {
@@ -1433,7 +1436,7 @@ static void ide_flush_cb(void *opaque, i
{
    IDEState *s = opaque;

-    if (!s->bs) return; /* ouch! (see below) */
+    if (!s || !s->bs) return; /* ouch! (see below) */

    if (ret) {
        /* We are completely doomed.  The IDE spec does not permit us
@@ -1690,7 +1693,7 @@ static void ide_atapi_cmd_read_dma_cb(vo
    IDEState *s = bm->ide_if;
    int data_offset, n;

-    if (!s->bs) return; /* ouch! (see ide_flush_cb) */
+    if (!s || !s->bs) return; /* ouch! (see ide_flush_cb) */

    if (ret < 0) {
        ide_atapi_io_error(s, ret);
@@ -2368,7 +2371,7 @@ static void cdrom_change_cb(void *opaque
    IDEState *s = opaque;
    uint64_t nb_sectors;

-    if (!s->bs) return; /* ouch! (see ide_flush_cb) */
+    if (!s || !s->bs) return; /* ouch! (see ide_flush_cb) */

    bdrv_get_geometry(s->bs, &nb_sectors);
    s->nb_sectors = nb_sectors;

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>