[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 1/4] s390/kvm: Handle hosts not supporting s390-
From: |
Alexander Graf |
Subject: |
Re: [Qemu-devel] [PATCH 1/4] s390/kvm: Handle hosts not supporting s390-virtio. |
Date: |
Fri, 10 Aug 2012 01:09:15 +0200 |
On 07.08.2012, at 16:52, Cornelia Huck wrote:
> Running under a kvm host does not necessarily imply the presence of
> a page mapped above the main memory with the virtio information;
> however, the code includes a hard coded access to that page.
>
> Instead, check for the presence of the page and exit gracefully
> before we hit an addressing exception if it does not exist.
>
> Signed-off-by: Cornelia Huck <address@hidden>
> ---
> drivers/s390/kvm/kvm_virtio.c | 21 +++++++++++++++++++++
> 1 file changed, 21 insertions(+)
>
> diff --git a/drivers/s390/kvm/kvm_virtio.c b/drivers/s390/kvm/kvm_virtio.c
> index 47cccd5..408447c 100644
> --- a/drivers/s390/kvm/kvm_virtio.c
> +++ b/drivers/s390/kvm/kvm_virtio.c
> @@ -418,6 +418,21 @@ static void kvm_extint_handler(struct ext_code ext_code,
> }
> }
>
> +static int __init test_devices_support(void)
Today we know what this function does, but the next person running into it has
no clue. Maybe add a nice description here that you're trying to access memory
above ram? (is this even what you're doing here? my s390 asm is slightly rusty)
:)
Alex
> +{
> + int ccode = -EIO;
> +
> + asm volatile(
> + "0: cli 0(%1),0\n"
> + " ipm %0\n"
> + " srl %0,28\n"
> + "1:\n"
> + EX_TABLE(0b,1b)
> + : "+d" (ccode)
> + : "a" (kvm_devices)
> + : "cc");
> + return ccode;
> +}
> /*
> * Init function for virtio
> * devices are in a single page above top of "normal" mem
> @@ -443,6 +458,12 @@ static int __init kvm_devices_init(void)
> }
>
> kvm_devices = (void *) real_memory_size;
> + if (test_devices_support() < 0) {
> + vmem_remove_mapping(real_memory_size, PAGE_SIZE);
> + root_device_unregister(kvm_root);
> + /* No error. */
> + return 0;
> + }
>
> INIT_WORK(&hotplug_work, hotplug_devices);
>
> --
> 1.7.11.4
>
[Qemu-devel] [PATCH 4/4] s390/kvm: Split out early console code., Cornelia Huck, 2012/08/07
[Qemu-devel] [PATCH 3/4] s390/kvm: Add a channel I/O based virtio transport driver., Cornelia Huck, 2012/08/07
Re: [Qemu-devel] [PATCH 3/4] s390/kvm: Add a channel I/O based virtio transport driver., Anthony Liguori, 2012/08/14