diff --git a/qemu/.md5sum b/qemu/.md5sum index 1db3d6de5..132400b10 100644 --- a/qemu/.md5sum +++ b/qemu/.md5sum @@ -1 +1,2 @@ +4d032f7e42c4f75dc71701f92077a85a fix-trim-ide.patch 6726977292b448cbc7f89998fac6983b qemu-2.1.0.tar.bz2 diff --git a/qemu/Pkgfile b/qemu/Pkgfile index bd5672fbe..cfdeac1f7 100644 --- a/qemu/Pkgfile +++ b/qemu/Pkgfile @@ -7,12 +7,14 @@ name=qemu version=2.1.0 -release=1 -source=(http://wiki.qemu.org/download/qemu-$version.tar.bz2) +release=2 +source=(http://wiki.qemu.org/download/qemu-$version.tar.bz2 fix-trim-ide.patch) build() { cd $name-$version + # fix TRIM passthrough for IDE devices + patch -p1 -i $SRC/fix-trim-ide.patch ./configure --prefix=/usr \ --cc="${CC:=gcc}" \ diff --git a/qemu/fix-trim-ide.patch b/qemu/fix-trim-ide.patch new file mode 100644 index 000000000..65714e0ca --- /dev/null +++ b/qemu/fix-trim-ide.patch @@ -0,0 +1,14 @@ +diff --git a/hw/ide/core.c b/hw/ide/core.c +index db191a6..7256592 100644 +--- a/hw/ide/core.c ++++ b/hw/ide/core.c +@@ -688,7 +688,8 @@ void ide_dma_cb(void *opaque, int ret) + sector_num, n, s->dma_cmd); + #endif + +- if (!ide_sect_range_ok(s, sector_num, n)) { ++ if ((s->dma_cmd == IDE_DMA_READ || s->dma_cmd == IDE_DMA_WRITE) && ++ !ide_sect_range_ok(s, sector_num, n)) { + dma_buf_commit(s); + ide_dma_error(s); + return;