[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] expandable grant table bug?
Hi All, Grant table had been expanded before. As a result, it is thought that it came to be able to use four VNIF or more. The PV domain operated without trouble. However, VNIF can be only used up to three in DomVTx(x86). # xm network-attach 27 # xm network-attach 27 # xm network-attach 27 # xm network-attach 27 # xm network-list 27 Idx BE MAC Addr. handle state evt-ch tx-/rx-ring-ref BE-path0 0 02:17:42:2f:01:11 0 4 5 1280 /1281 /local/domain/0/backend/vif/27/0 1 0 02:17:42:2f:03:11 1 4 6 1282 /1283 /local/domain/0/backend/vif/27/1 2 0 00:16:3e:4d:2f:0e 2 4 7 1792 /1793 /local/domain/0/backend/vif/27/2 3 0 00:16:3e:11:35:e0 3 6 -1 -1 /-1 /local/domain/0/backend/vif/27/3 The test environment is as follows. - xen-unstable.hg : cs15072 - DomVTx(X86) with PV-ON-HVM This problem was investigated a little.The cause is not to be able to execute HYPERVISOR_grant_table_op from the hvm domain. Therefore, the number of boot_max_nr_grant_frames is four. ・unmodified_drivers/linux-2.6/platform-pci/platform-pci.c platform_pci_init() -> ・linux-2.6-xen-sparse/drivers/xen/core/gnttab.c gnttab_init() __max_nr_grant_frames() The size of the grant table is acquired here. 404 static unsigned int __max_nr_grant_frames(void) 405 { 406 struct gnttab_query_size query; 407 int rc; 408 409 query.dom = DOMID_SELF; 410411 rc = HYPERVISOR_grant_table_op(GNTTABOP_query_size, &query, 1); <<== This 412 if ((rc < 0) || (query.status != GNTST_okay)) 413 return 4; /* Legacy max supported number of frames */ 414 415 return query.max_nr_frames; 416 } => ・xen/arch/x86/hvm/hvm.c 736 int hvm_do_hypercall(struct cpu_user_regs *regs) 737 { ... 759 if ( (eax >= NR_hypercalls) || !hvm_hypercall32_table[eax] ) 760 { 761 if ( eax != __HYPERVISOR_grant_table_op ) 762 gdprintk(XENLOG_WARNING, "HVM vcpu %d:%d bad hypercall %u.\n", 763 current->domain->domain_id, current->vcpu_id, eax); 764 regs->eax = -ENOSYS; 765 return HVM_HCALL_completed; 766 } hvm_hypercall32_table is as follows. Therefore, grant_table_op cannot be called. 726 static hvm_hypercall_t *hvm_hypercall32_table[NR_hypercalls] = { 727 HYPERCALL_COMPAT32(memory_op), 728 HYPERCALL(xen_version), 729 HYPERCALL(event_channel_op), 730 HYPERCALL(sched_op), 731 HYPERCALL(hvm_op) 732 }; Cannot grant_table_op make it call from the hvm domain? How should we correct it if so? Best Regard, --Takanori Kasai _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |