From ccc0f4c2ec4b31293a2c03bf862e1500e86f7d4e Mon Sep 17 00:00:00 2001 From: Alexander Boettcher Date: Tue, 12 May 2015 15:39:04 +0200 Subject: [PATCH] usb: handle quota_exceed exception of pci_drv Issue #755 --- repos/dde_linux/src/lib/usb/pci_driver.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/repos/dde_linux/src/lib/usb/pci_driver.cc b/repos/dde_linux/src/lib/usb/pci_driver.cc index 8fdda37b3..b954d4c27 100644 --- a/repos/dde_linux/src/lib/usb/pci_driver.cc +++ b/repos/dde_linux/src/lib/usb/pci_driver.cc @@ -327,7 +327,14 @@ int pci_register_driver(struct pci_driver *drv) } Pci::Device_capability free_up = cap; - cap = pci.next_device(cap, id->class_, id->class_mask); + + try { + cap = pci.next_device(cap, id->class_, id->class_mask); + } catch (Pci::Device::Quota_exceeded) { + Genode::env()->parent()->upgrade(pci.cap(), "ram_quota=4096"); + cap = pci.next_device(cap, id->class_, id->class_mask); + } + if (!pci_drv) pci.release_device(free_up); }