diff --git a/linux-ramdump-parser-v2/boards.py b/linux-ramdump-parser-v2/boards.py index 1b431972fda12996c18aa7edf92589468a7e5e76..76dca1ba8b8d4bc37b430a6dbf147b825552d254 100755 --- a/linux-ramdump-parser-v2/boards.py +++ b/linux-ramdump-parser-v2/boards.py @@ -28,7 +28,7 @@ class Board(object): """ def __init__(self): self.socid = -1 - self.board_num = -1 + self.board_num = "-1" self.cpu = 'UNKNOWN' self.ram_start = 0 self.imem_start = 0 @@ -65,7 +65,7 @@ class Board9615(Board): def __init__(self, socid): super(Board9615, self).__init__() self.socid = socid - self.board_num = 9615 + self.board_num = "9615" self.cpu = 'CORTEXA5' self.ram_start = 0x40000000 self.imem_start = 0 @@ -73,7 +73,7 @@ class Board9615(Board): self.phys_offset = 0x40800000 class Board8974(Board): - def __init__(self, socid, board_num=8974): + def __init__(self, socid, board_num="8974"): super(Board8974, self).__init__() self.socid = socid self.board_num = board_num @@ -89,7 +89,7 @@ class Board9625(Board): def __init__(self, socid): super(Board9625, self).__init__() self.socid = socid - self.board_num = 9625 + self.board_num = "9625" self.cpu = 'CORTEXA5' self.ram_start = 0x0 self.imem_start = 0xfe800000 @@ -99,7 +99,7 @@ class Board9625(Board): self.imem_file_name = 'OCIMEM.BIN' class Board8626(Board): - def __init__(self, socid, board_num=8626): + def __init__(self, socid, board_num="8626"): super(Board8626, self).__init__() self.socid = socid self.board_num = board_num @@ -112,7 +112,7 @@ class Board8626(Board): self.imem_file_name = 'OCIMEM.BIN' class Board8026LW(Board): - def __init__(self, socid, board_num=8026): + def __init__(self, socid, board_num="8026"): super(Board8026LW, self).__init__() self.socid = socid self.board_num = board_num @@ -125,7 +125,7 @@ class Board8026LW(Board): self.imem_file_name = 'OCIMEM.BIN' class Board8610(Board): - def __init__(self, socid, board_num=8610): + def __init__(self, socid, board_num="8610"): super(Board8610, self).__init__() self.socid = socid self.board_num = board_num @@ -141,7 +141,7 @@ class Board9635(Board): def __init__(self, socid): super(Board9635, self).__init__() self.socid = socid - self.board_num = 9635 + self.board_num = "9635" self.cpu = 'CORTEXA7' self.ram_start = 0x0 self.imem_start = 0xfe800000 @@ -154,7 +154,7 @@ class Board8916(Board): def __init__(self, socid, smem_addr): super(Board8916, self).__init__() self.socid = socid - self.board_num = 8916 + self.board_num = "8916" self.cpu = 'CORTEXA7' self.ram_start = 0x80000000 #self.ram_start = 0x0 @@ -168,7 +168,7 @@ class Board8939(Board): def __init__(self, socid, smem_addr): super(Board8939, self).__init__() self.socid = socid - self.board_num = 8939 + self.board_num = "8939" self.cpu = 'CORTEXA7' self.ram_start = 0x80000000 self.smem_addr = smem_addr @@ -181,7 +181,7 @@ class Board8936(Board): def __init__(self, socid): super(Board8936, self).__init__() self.socid = socid - self.board_num = 8936 + self.board_num = "8936" self.cpu = 'CORTEXA7' self.ram_start = 0x80000000 self.smem_addr = 0x6300000 @@ -194,7 +194,7 @@ class Board8994(Board): def __init__(self, socid): super(Board8994, self).__init__() self.socid = socid - self.board_num = 8994 + self.board_num = "8994" self.cpu = 'CORTEXA57A53' self.ram_start = 0x0 self.smem_addr = 0x6a00000 @@ -207,7 +207,7 @@ class Board8909(Board): def __init__(self, socid): super(Board8909, self).__init__() self.socid = socid - self.board_num = 8909 + self.board_num = "8909" self.cpu = 'CORTEXA7' self.ram_start = 0x80000000 self.smem_addr = 0x7d00000 @@ -220,7 +220,7 @@ class Board8908(Board): def __init__(self, socid): super(Board8908, self).__init__() self.socid = socid - self.board_num = 8908 + self.board_num = "8908" self.cpu = 'CORTEXA7' self.ram_start = 0x80000000 self.smem_addr = 0x7d00000 @@ -233,7 +233,7 @@ class Board9640(Board): def __init__(self, socid): super(Board9640, self).__init__() self.socid = socid - self.board_num = 9640 + self.board_num = "9640" self.cpu = 'CORTEXA7' self.ram_start = 0x80000000 self.smem_addr = 0x7e80000 @@ -246,7 +246,7 @@ class Board8992(Board): def __init__(self, socid): super(Board8992, self).__init__() self.socid = socid - self.board_num = 8992 + self.board_num = "8992" self.cpu = 'CORTEXA57A53' self.ram_start = 0x0 self.smem_addr = 0x6a00000 @@ -259,7 +259,7 @@ class Board8929(Board): def __init__(self, socid, smem_addr): super(Board8929, self).__init__() self.socid = socid - self.board_num = 8929 + self.board_num = "8929" self.cpu = 'CORTEXA7' self.ram_start = 0x80000000 self.smem_addr = smem_addr @@ -271,7 +271,7 @@ class Board8996(Board): def __init__(self, socid): super(Board8996, self).__init__() self.socid = socid - self.board_num = 8996 + self.board_num = "8996" self.cpu = 'HYDRA' self.ram_start = 0x80000000 self.smem_addr = 0x6000000 @@ -284,7 +284,7 @@ class Board8952(Board): def __init__(self, socid): super(Board8952, self).__init__() self.socid = socid - self.board_num = 8952 + self.board_num = "8952" self.cpu = 'CORTEXA53' self.ram_start = 0x80000000 self.smem_addr = 0x6300000 @@ -297,7 +297,7 @@ class Board8976(Board): def __init__(self, socid): super(Board8976, self).__init__() self.socid = socid - self.board_num = 8976 + self.board_num = "8976" self.cpu = 'CORTEXA53' self.ram_start = 0x80000000 self.smem_addr = 0x6300000 @@ -310,7 +310,7 @@ class Board9607(Board): def __init__(self, socid): super(Board9607, self).__init__() self.socid = socid - self.board_num = 9607 + self.board_num = "9607" self.cpu = 'CORTEXA7' self.ram_start = 0x80000000 self.smem_addr = 0x7d00000 @@ -324,7 +324,7 @@ class Board8937(Board): def __init__(self, socid): super(Board8937, self).__init__() self.socid = socid - self.board_num = 8937 + self.board_num = "8937" self.cpu = 'CORTEXA53' self.ram_start = 0x80000000 self.smem_addr = 0x6300000 @@ -338,7 +338,7 @@ class Board8953(Board): def __init__(self, socid): super(Board8953, self).__init__() self.socid = socid - self.board_num = 8953 + self.board_num = "8953" self.cpu = 'CORTEXA53' self.ram_start = 0x80000000 self.smem_addr = 0x6300000 @@ -352,7 +352,7 @@ class Board8917(Board): def __init__(self, socid): super(Board8917, self).__init__() self.socid = socid - self.board_num = 8917 + self.board_num = "8917" self.cpu = 'CORTEXA53' self.ram_start = 0x80000000 self.smem_addr = 0x6300000 @@ -455,7 +455,7 @@ boards.append(Board8610(socid=164)) boards.append(Board8610(socid=165)) boards.append(Board8610(socid=166)) -boards.append(Board8974(socid=178, board_num=8084)) +boards.append(Board8974(socid=178, board_num="8084")) boards.append(Board9635(socid=187)) boards.append(Board9635(socid=227)) @@ -464,61 +464,62 @@ boards.append(Board9635(socid=229)) boards.append(Board9635(socid=230)) boards.append(Board9635(socid=231)) -boards.append(Board8960(socid=87, board_num=8960)) -boards.append(Board8960(socid=122, board_num=8960)) -boards.append(Board8960(socid=123, board_num=8260)) -boards.append(Board8960(socid=124, board_num=8060)) - -boards.append(Board8960(socid=244, board_num=8064, phys_offset=0x40200000, ram_start=0x40000000)) -boards.append(Board8960(socid=109, board_num=8064)) -boards.append(Board8960(socid=130, board_num=8064)) -boards.append(Board8960(socid=153, board_num=8064)) - -boards.append(Board8960(socid=116, board_num=8930)) -boards.append(Board8960(socid=117, board_num=8930)) -boards.append(Board8960(socid=118, board_num=8930)) -boards.append(Board8960(socid=119, board_num=8930)) -boards.append(Board8960(socid=154, board_num=8930)) -boards.append(Board8960(socid=155, board_num=8930)) -boards.append(Board8960(socid=156, board_num=8930)) -boards.append(Board8960(socid=157, board_num=8930)) -boards.append(Board8960(socid=160, board_num=8930)) - -boards.append(Board8960(socid=120, board_num=8627)) -boards.append(Board8960(socid=121, board_num=8627)) -boards.append(Board8960(socid=138, board_num=8960)) -boards.append(Board8960(socid=139, board_num=8960)) -boards.append(Board8960(socid=140, board_num=8960)) -boards.append(Board8960(socid=141, board_num=8960)) -boards.append(Board8960(socid=142, board_num=8930)) -boards.append(Board8960(socid=143, board_num=8630)) -boards.append(Board8960(socid=144, board_num=8630)) +boards.append(Board8960(socid=87, board_num="8960")) +boards.append(Board8960(socid=122, board_num="8960")) +boards.append(Board8960(socid=123, board_num="8260")) +boards.append(Board8960(socid=124, board_num="8060")) + +boards.append(Board8960(socid=244, board_num="8064", phys_offset=0x40200000, + ram_start=0x40000000)) +boards.append(Board8960(socid=109, board_num="8064")) +boards.append(Board8960(socid=130, board_num="8064")) +boards.append(Board8960(socid=153, board_num="8064")) + +boards.append(Board8960(socid=116, board_num="8930")) +boards.append(Board8960(socid=117, board_num="8930")) +boards.append(Board8960(socid=118, board_num="8930")) +boards.append(Board8960(socid=119, board_num="8930")) +boards.append(Board8960(socid=154, board_num="8930")) +boards.append(Board8960(socid=155, board_num="8930")) +boards.append(Board8960(socid=156, board_num="8930")) +boards.append(Board8960(socid=157, board_num="8930")) +boards.append(Board8960(socid=160, board_num="8930")) + +boards.append(Board8960(socid=120, board_num="8627")) +boards.append(Board8960(socid=121, board_num="8627")) +boards.append(Board8960(socid=138, board_num="8960")) +boards.append(Board8960(socid=139, board_num="8960")) +boards.append(Board8960(socid=140, board_num="8960")) +boards.append(Board8960(socid=141, board_num="8960")) +boards.append(Board8960(socid=142, board_num="8930")) +boards.append(Board8960(socid=143, board_num="8630")) +boards.append(Board8960(socid=144, board_num="8630")) boards.append(Board9615(socid=104)) boards.append(Board9615(socid=105)) boards.append(Board9615(socid=106)) boards.append(Board9615(socid=107)) -boards.append(Board8625(socid=88, board_num=8625)) -boards.append(Board8625(socid=89, board_num=8625)) -boards.append(Board8625(socid=96, board_num=8625)) -boards.append(Board8625(socid=90, board_num=8625)) -boards.append(Board8625(socid=91, board_num=8625)) -boards.append(Board8625(socid=92, board_num=8625)) -boards.append(Board8625(socid=97, board_num=8625)) -boards.append(Board8625(socid=98, board_num=8625)) -boards.append(Board8625(socid=99, board_num=8625)) -boards.append(Board8625(socid=100, board_num=8625)) -boards.append(Board8625(socid=101, board_num=8625)) -boards.append(Board8625(socid=102, board_num=8625)) -boards.append(Board8625(socid=103, board_num=8625)) -boards.append(Board8625(socid=127, board_num=8625)) -boards.append(Board8625(socid=128, board_num=8625)) -boards.append(Board8625(socid=129, board_num=8625)) -boards.append(Board8625(socid=131, board_num=8625)) -boards.append(Board8625(socid=132, board_num=8625)) -boards.append(Board8625(socid=133, board_num=8625)) -boards.append(Board8625(socid=135, board_num=8625)) +boards.append(Board8625(socid=88, board_num="8625")) +boards.append(Board8625(socid=89, board_num="8625")) +boards.append(Board8625(socid=96, board_num="8625")) +boards.append(Board8625(socid=90, board_num="8625")) +boards.append(Board8625(socid=91, board_num="8625")) +boards.append(Board8625(socid=92, board_num="8625")) +boards.append(Board8625(socid=97, board_num="8625")) +boards.append(Board8625(socid=98, board_num="8625")) +boards.append(Board8625(socid=99, board_num="8625")) +boards.append(Board8625(socid=100, board_num="8625")) +boards.append(Board8625(socid=101, board_num="8625")) +boards.append(Board8625(socid=102, board_num="8625")) +boards.append(Board8625(socid=103, board_num="8625")) +boards.append(Board8625(socid=127, board_num="8625")) +boards.append(Board8625(socid=128, board_num="8625")) +boards.append(Board8625(socid=129, board_num="8625")) +boards.append(Board8625(socid=131, board_num="8625")) +boards.append(Board8625(socid=132, board_num="8625")) +boards.append(Board8625(socid=133, board_num="8625")) +boards.append(Board8625(socid=135, board_num="8625")) boards.append(Board8994(socid=207)) diff --git a/linux-ramdump-parser-v2/cachedumplib.py b/linux-ramdump-parser-v2/cachedumplib.py index 3af2e96b4a141c6596d053eb90bd968ad14fbb35..ea056af58aec0ed585557c8e4f161874caf3255c 100755 --- a/linux-ramdump-parser-v2/cachedumplib.py +++ b/linux-ramdump-parser-v2/cachedumplib.py @@ -457,74 +457,74 @@ lookuptable[("cobalt", 0x67, 0x10)] = L1_ICache_KRYO2XX_GOLD() # 8994 -lookuptable[(8994, 0x80, 0)] = L1_DCache_A53() -lookuptable[(8994, 0x81, 0)] = L1_DCache_A53() -lookuptable[(8994, 0x82, 0)] = L1_DCache_A53() -lookuptable[(8994, 0x83, 0)] = L1_DCache_A53() -lookuptable[(8994, 0x84, 0)] = L1_DCache_A57() -lookuptable[(8994, 0x85, 0)] = L1_DCache_A57() -lookuptable[(8994, 0x86, 0)] = L1_DCache_A57() -lookuptable[(8994, 0x87, 0)] = L1_DCache_A57() - -lookuptable[(8994, 0x64, 0)] = L1_ICache_A57() -lookuptable[(8994, 0x65, 0)] = L1_ICache_A57() -lookuptable[(8994, 0x66, 0)] = L1_ICache_A57() -lookuptable[(8994, 0x67, 0)] = L1_ICache_A57() - -lookuptable[(8994, 0xC1, 0)] = L2_Cache_A57(numsets=0x800) - -lookuptable[(8994, 0x80, 0x100)] = L1_DCache_A53() -lookuptable[(8994, 0x81, 0x100)] = L1_DCache_A53() -lookuptable[(8994, 0x82, 0x100)] = L1_DCache_A53() -lookuptable[(8994, 0x83, 0x100)] = L1_DCache_A53() -lookuptable[(8994, 0x84, 0x100)] = L1_DCache_A57() -lookuptable[(8994, 0x85, 0x100)] = L1_DCache_A57() -lookuptable[(8994, 0x86, 0x100)] = L1_DCache_A57() -lookuptable[(8994, 0x87, 0x100)] = L1_DCache_A57() - -lookuptable[(8994, 0x64, 0x100)] = L1_ICache_A57() -lookuptable[(8994, 0x65, 0x100)] = L1_ICache_A57() -lookuptable[(8994, 0x66, 0x100)] = L1_ICache_A57() -lookuptable[(8994, 0x67, 0x100)] = L1_ICache_A57() - -lookuptable[(8994, 0xC1, 0x100)] = L2_Cache_A57(numsets=0x800) +lookuptable[("8994", 0x80, 0)] = L1_DCache_A53() +lookuptable[("8994", 0x81, 0)] = L1_DCache_A53() +lookuptable[("8994", 0x82, 0)] = L1_DCache_A53() +lookuptable[("8994", 0x83, 0)] = L1_DCache_A53() +lookuptable[("8994", 0x84, 0)] = L1_DCache_A57() +lookuptable[("8994", 0x85, 0)] = L1_DCache_A57() +lookuptable[("8994", 0x86, 0)] = L1_DCache_A57() +lookuptable[("8994", 0x87, 0)] = L1_DCache_A57() + +lookuptable[("8994", 0x64, 0)] = L1_ICache_A57() +lookuptable[("8994", 0x65, 0)] = L1_ICache_A57() +lookuptable[("8994", 0x66, 0)] = L1_ICache_A57() +lookuptable[("8994", 0x67, 0)] = L1_ICache_A57() + +lookuptable[("8994", 0xC1, 0)] = L2_Cache_A57(numsets=0x800) + +lookuptable[("8994", 0x80, 0x100)] = L1_DCache_A53() +lookuptable[("8994", 0x81, 0x100)] = L1_DCache_A53() +lookuptable[("8994", 0x82, 0x100)] = L1_DCache_A53() +lookuptable[("8994", 0x83, 0x100)] = L1_DCache_A53() +lookuptable[("8994", 0x84, 0x100)] = L1_DCache_A57() +lookuptable[("8994", 0x85, 0x100)] = L1_DCache_A57() +lookuptable[("8994", 0x86, 0x100)] = L1_DCache_A57() +lookuptable[("8994", 0x87, 0x100)] = L1_DCache_A57() + +lookuptable[("8994", 0x64, 0x100)] = L1_ICache_A57() +lookuptable[("8994", 0x65, 0x100)] = L1_ICache_A57() +lookuptable[("8994", 0x66, 0x100)] = L1_ICache_A57() +lookuptable[("8994", 0x67, 0x100)] = L1_ICache_A57() + +lookuptable[("8994", 0xC1, 0x100)] = L2_Cache_A57(numsets=0x800) # 8992 -lookuptable[(8992, 0x80, 0x100)] = L1_DCache_A53() -lookuptable[(8992, 0x81, 0x100)] = L1_DCache_A53() -lookuptable[(8992, 0x82, 0x100)] = L1_DCache_A53() -lookuptable[(8992, 0x83, 0x100)] = L1_DCache_A53() -lookuptable[(8992, 0x84, 0x100)] = L1_DCache_A57() -lookuptable[(8992, 0x85, 0x100)] = L1_DCache_A57() +lookuptable[("8992", 0x80, 0x100)] = L1_DCache_A53() +lookuptable[("8992", 0x81, 0x100)] = L1_DCache_A53() +lookuptable[("8992", 0x82, 0x100)] = L1_DCache_A53() +lookuptable[("8992", 0x83, 0x100)] = L1_DCache_A53() +lookuptable[("8992", 0x84, 0x100)] = L1_DCache_A57() +lookuptable[("8992", 0x85, 0x100)] = L1_DCache_A57() -lookuptable[(8992, 0x64, 0x100)] = L1_ICache_A57() -lookuptable[(8992, 0x65, 0x100)] = L1_ICache_A57() +lookuptable[("8992", 0x64, 0x100)] = L1_ICache_A57() +lookuptable[("8992", 0x65, 0x100)] = L1_ICache_A57() -lookuptable[(8992, 0xC1, 0x100)] = L2_Cache_A57(numsets=0x400) +lookuptable[("8992", 0xC1, 0x100)] = L2_Cache_A57(numsets=0x400) # 8917 -lookuptable[(8917, 0x84, 0x14)] = L1_DCache_A53() -lookuptable[(8917, 0x85, 0x14)] = L1_DCache_A53() -lookuptable[(8917, 0x86, 0x14)] = L1_DCache_A53() -lookuptable[(8917, 0x87, 0x14)] = L1_DCache_A53() +lookuptable[("8917", 0x84, 0x14)] = L1_DCache_A53() +lookuptable[("8917", 0x85, 0x14)] = L1_DCache_A53() +lookuptable[("8917", 0x86, 0x14)] = L1_DCache_A53() +lookuptable[("8917", 0x87, 0x14)] = L1_DCache_A53() # 8937 -lookuptable[(8937, 0x80, 0x14)] = L1_DCache_A53() -lookuptable[(8937, 0x81, 0x14)] = L1_DCache_A53() -lookuptable[(8937, 0x82, 0x14)] = L1_DCache_A53() -lookuptable[(8937, 0x83, 0x14)] = L1_DCache_A53() -lookuptable[(8937, 0x84, 0x14)] = L1_DCache_A53() -lookuptable[(8937, 0x85, 0x14)] = L1_DCache_A53() -lookuptable[(8937, 0x86, 0x14)] = L1_DCache_A53() -lookuptable[(8937, 0x87, 0x14)] = L1_DCache_A53() +lookuptable[("8937", 0x80, 0x14)] = L1_DCache_A53() +lookuptable[("8937", 0x81, 0x14)] = L1_DCache_A53() +lookuptable[("8937", 0x82, 0x14)] = L1_DCache_A53() +lookuptable[("8937", 0x83, 0x14)] = L1_DCache_A53() +lookuptable[("8937", 0x84, 0x14)] = L1_DCache_A53() +lookuptable[("8937", 0x85, 0x14)] = L1_DCache_A53() +lookuptable[("8937", 0x86, 0x14)] = L1_DCache_A53() +lookuptable[("8937", 0x87, 0x14)] = L1_DCache_A53() # 8953 -lookuptable[(8953, 0x80, 0x14)] = L1_DCache_A53() -lookuptable[(8953, 0x81, 0x14)] = L1_DCache_A53() -lookuptable[(8953, 0x82, 0x14)] = L1_DCache_A53() -lookuptable[(8953, 0x83, 0x14)] = L1_DCache_A53() -lookuptable[(8953, 0x84, 0x14)] = L1_DCache_A53() -lookuptable[(8953, 0x85, 0x14)] = L1_DCache_A53() -lookuptable[(8953, 0x86, 0x14)] = L1_DCache_A53() -lookuptable[(8953, 0x87, 0x14)] = L1_DCache_A53() +lookuptable[("8953", 0x80, 0x14)] = L1_DCache_A53() +lookuptable[("8953", 0x81, 0x14)] = L1_DCache_A53() +lookuptable[("8953", 0x82, 0x14)] = L1_DCache_A53() +lookuptable[("8953", 0x83, 0x14)] = L1_DCache_A53() +lookuptable[("8953", 0x84, 0x14)] = L1_DCache_A53() +lookuptable[("8953", 0x85, 0x14)] = L1_DCache_A53() +lookuptable[("8953", 0x86, 0x14)] = L1_DCache_A53() +lookuptable[("8953", 0x87, 0x14)] = L1_DCache_A53() diff --git a/linux-ramdump-parser-v2/ramdump.py b/linux-ramdump-parser-v2/ramdump.py index 1d45dd122689e422557b6f7d99936aaa0be93673..3030038c8ea297d0b2d10c0538c2b9f325962804 100755 --- a/linux-ramdump-parser-v2/ramdump.py +++ b/linux-ramdump-parser-v2/ramdump.py @@ -797,7 +797,7 @@ class RamDump(): startup_script.write(('title \"' + out_path + '\"\n').encode('ascii', 'ignore')) - is_cortex_a53 = self.hw_id == 8916 or self.hw_id == 8939 or self.hw_id == 8936 + is_cortex_a53 = self.hw_id in ["8916", "8939", "8936"] if self.arm64 and is_cortex_a53: startup_script.write('sys.cpu CORTEXA53\n'.encode('ascii', 'ignore')) diff --git a/linux-ramdump-parser-v2/ramparse.py b/linux-ramdump-parser-v2/ramparse.py index aadb2861a87b72a7a8582cbaea95035b56359ca8..7ed8cdd9df5c6ff978634f307e41bb2d860d8255 100755 --- a/linux-ramdump-parser-v2/ramparse.py +++ b/linux-ramdump-parser-v2/ramparse.py @@ -1,6 +1,6 @@ #!/usr/bin/env python2 -# Copyright (c) 2012-2015, The Linux Foundation. All rights reserved. +# Copyright (c) 2012-2016, The Linux Foundation. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 and @@ -115,7 +115,7 @@ if __name__ == '__main__': help='Offset for address space layout randomization') parser.add_option('', '--page-offset', type='int', dest='page_offset', help='use custom page offset') - parser.add_option('', '--force-hardware', type='int', + parser.add_option('', '--force-hardware', dest='force_hardware', help='Force the hardware detection') parser.add_option( '', '--force-version', type='int', dest='force_hardware_version',