From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 04C93C433F5 for ; Wed, 6 Oct 2021 21:19:23 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 65883611C1 for ; Wed, 6 Oct 2021 21:19:22 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 65883611C1 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=vivier.eu Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:51170 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mYEJt-00023g-GH for qemu-devel@archiver.kernel.org; Wed, 06 Oct 2021 17:19:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45948) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mYEGr-00073U-Ic for qemu-devel@nongnu.org; Wed, 06 Oct 2021 17:16:16 -0400 Received: from mout.kundenserver.de ([212.227.126.135]:44085) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mYEGo-0008AX-6Z for qemu-devel@nongnu.org; Wed, 06 Oct 2021 17:16:13 -0400 Received: from [192.168.100.1] ([82.142.3.114]) by mrelayeu.kundenserver.de (mreue011 [213.165.67.103]) with ESMTPSA (Nemesis) id 1M8hlZ-1mU5X70EO9-004gnT; Wed, 06 Oct 2021 23:16:08 +0200 From: Laurent Vivier To: Mark Cave-Ayland , qemu-devel@nongnu.org References: <20211004211928.15803-1-mark.cave-ayland@ilande.co.uk> <20211004211928.15803-9-mark.cave-ayland@ilande.co.uk> <7994e73e-cbda-1bd1-68c4-250dd951ed51@vivier.eu> <66384935-4c8f-8220-8593-bfde37d05e1d@ilande.co.uk> <15fba2fe-77b0-78f4-ea55-9438ce976c18@vivier.eu> <52fe2fc5-b4fb-8888-9b80-0e362c52ebb5@ilande.co.uk> <3a798740-d39e-f2b8-8b3c-1a4814f184ea@vivier.eu> <20607ac1-a061-e102-0652-33440f13504b@ilande.co.uk> <07079a9e-f607-f6df-e1f4-70bdffb1e39f@vivier.eu> Subject: Re: [PATCH v2 08/12] macfb: add common monitor modes supported by the MacOS toolbox ROM Message-ID: Date: Wed, 6 Oct 2021 23:16:07 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <07079a9e-f607-f6df-e1f4-70bdffb1e39f@vivier.eu> Content-Type: multipart/mixed; boundary="------------221FC26B0D44BAF1B8DAEBCA" Content-Language: fr X-Provags-ID: V03:K1:EukrNxJOT+YTaZut065LfVI/9xf7BivL08voeb8FXnBbelRKr9R TuaIsODICVA83fZD5eVewEtWmeWNEYI/yrvUtAUimuhGd67V2l6hOEqLQTfrD9d17V0OWDK rTSuMuII/L+7FgJJLRVhvbvNGVehPBnLK77lo4n/ReMNbHiywMZ57I9aObREi5J9QPL+2+r vpwS2JYTNi8re6ady58bQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:aC1ctWABY44=:OhIaqLFjtDKV/zUPiu1LIN 8Tc3AQn3x6kKUhLsCDlW52uHRmX1uKjf9oNPGya6wyNJgLD99xCk4S5M5x6HrLl5tP3sOKaUF IchxDQ0PwW+94wgKgaBTSmQxwIgLh25rwdjuVoJXv7HRrtPeKVcq0P6VDopkDaaZPC0tQW2Gp 5VaIWhZOzb5TgxMJiyjPR8UT1Ld0+upVUbY6Iai4UPQOec5QCl0UiTP2FHpvVgSmvy3+Xz+C2 OXRWO2+MnoS9vZZsj+AoMGyptoXzuoepoQXv6fnZ0cf35cPGHgtUdTJaA93mp+FSgofdRBPnt YBt7FFSqQB3A2d5SUXUjdDXZr7L/3JHOElAWht3v0nB6iZK57cL1e2IaZjJ9Osppb8UOfRHhq tQKko0XC3O+is6/VK1U2K5c2rPUkQcNfTXTAVvcJcBsUVgT5B8esgq3Y3ifQPhkmST4a6aO66 E8ZKBTDwGIhuvFNoN7ZimuWBV7+8L+al5zQJlBirY6MoWfst6bKxYwLwWHm3C48EA4t+h8Lvf nVLAJu1ZZ9r5xClb3wXvs2GJB8aJIfM2yO5HJzR/y2T2oN/rwfDz/iLKh1Q+ALkYwNW7yX8mF PyUA8A67NczBHs0f7MvLu9wgEBDd1fAfoQ2443cDfX267/dknFeZLk9Sl5Nff0Qah+WB8o44N M4BxOMi/uT0SMY8u3UrKjmYhGbeLPQaxKtCPAVw4Ko6tdMvfXR/eKJlBkNPFSeyXH2opvfG// hR4Z5yTuvtfx7B4ZVX0x781ElgA9GgTdwdkkdQ== Received-SPF: none client-ip=212.227.126.135; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -38 X-Spam_score: -3.9 X-Spam_bar: --- X-Spam_report: (-3.9 / 5.0 requ) BAYES_00=-1.9, NICE_REPLY_A=-1.964, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" This is a multi-part message in MIME format. --------------221FC26B0D44BAF1B8DAEBCA Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Le 06/10/2021 à 21:24, Laurent Vivier a écrit : > Le 06/10/2021 à 18:09, Mark Cave-Ayland a écrit : >> On 06/10/2021 16:46, Laurent Vivier wrote: >>> Le 06/10/2021 à 15:54, Mark Cave-Ayland a écrit : >>>> On 06/10/2021 13:24, Laurent Vivier wrote: >>>> >>>>>> This is where it becomes a bit trickier, since technically booting Linux with -kernel you can use >>>>>> any supported values as long as everything fits in the video RAM which is why there isn't >>>>>> currently >>>>>> a hard-coded list :) >>>>>> >>>>> >>>>> We need the list of "supported values". I don't want to read the code or try values combination >>>>> until it works. >>>>> >>>>> In a perfect world, I would like to be able to use any value I want with "-kernel". >>>>> >>>>> For instance I was using "-g 1200x800x24" and it was working fine. >>>>> >>>>> Now I have: >>>>> >>>>> qemu-system-m68k: unknown display mode: width 1200, height 800, depth 24 >>>>> >>>>> If it's not possible (because the original hardware cannot provide it, and we don't know the base >>>>> address or things like that), we don't need the list of the display id, but the list of available >>>>> modes: (width,height,depth). >>>>> >>>>> Rougly, something like: >>>>> >>>>> qemu-system-m68k: unknown display mode: width 1200, height 800, depth 24 >>>>> Available modes: >>>>>       1152x870x8 >>>>>       1152x870x4 >>>>>       1152x870x2 >>>>>       1152x870x1 >>>>>       800x600x24 >>>>>       800x600x8 >>>>>       800x600x4 >>>>>       800x600x2 >>>>>       800x600x1 >>>>>       640x480x24 >>>>>       640x480x8 >>>>>       640x480x4 >>>>>       640x480x2 >>>>>       640x480x1 >>>>> >>>>> diff --git a/hw/display/macfb.c b/hw/display/macfb.c >>>>> index 5b8812e9e7d8..4b352eb89c3f 100644 >>>>> --- a/hw/display/macfb.c >>>>> +++ b/hw/display/macfb.c >>>>> @@ -438,6 +438,26 @@ static MacFbMode *macfb_find_mode(MacfbDisplayType display_type, >>>>>        return NULL; >>>>>    } >>>>> >>>>> +static gchar *macfb_mode_list(void) >>>>> +{ >>>>> +    gchar *list = NULL; >>>>> +    gchar *mode; >>>>> +    MacFbMode *macfb_mode; >>>>> +    int i; >>>>> + >>>>> +    for (i = 0; i < ARRAY_SIZE(macfb_mode_table); i++) { >>>>> +        macfb_mode = &macfb_mode_table[i]; >>>>> + >>>>> +        mode = g_strdup_printf("    %dx%dx%d\n", macfb_mode->width, >>>>> +                               macfb_mode->height, macfb_mode->depth); >>>>> +        list = g_strconcat(mode, list, NULL); >>>>> +        g_free(mode); >>>>> +    } >>>>> + >>>>> +    return list; >>>>> +} >>>>> + >>>>> + >>>>>    static void macfb_update_display(void *opaque) >>>>>    { >>>>>        MacfbState *s = opaque; >>>>> @@ -620,8 +640,13 @@ static bool macfb_common_realize(DeviceState *dev, MacfbState *s, Error >>>>> **errp) >>>>> >>>>>        s->mode = macfb_find_mode(s->type, s->width, s->height, s->depth); >>>>>        if (!s->mode) { >>>>> +        gchar *list; >>>>>            error_setg(errp, "unknown display mode: width %d, height %d, depth %d", >>>>>                       s->width, s->height, s->depth); >>>>> +        list =  macfb_mode_list(); >>>>> +        error_append_hint(errp, "Available modes:\n%s", list); >>>>> +        g_free(list); >>>>> + >>>>>            return false; >>>>>        } >>>> >>>> Hi Laurent, >>>> >>>> Thanks for the example - I can certainly squash this into patch 8. >>> >>> yes, please. >> >> Okay I'll do that for a v3 (and also split the 1st patch that Phil suggested). >> >>>> As for allowing extra resolutions via -kernel, since the check is being done in >>>> macfb_common_realize() then it would be possible to add a qdev property that only gets set when >>>> -kernel is used on the command line which bypasses the mode check if you prefer? >>>> >>> >>> I think it can wait and be done by a patch later. For the moment we can focus on MacOS. >>> >>>> I'm not sure that your existing example of "-g 1200x800x24" (or indeed any resolution with 24-bit >>>> depth) with -kernel will still work after this patchset given that the 24-bit encoding scheme has >>>> changed. Presumably this would also need a corresponding change in the bootinfo/kernel framebuffer/X >>>> configuration somewhere? >>> >>> The kernel framebuffer should be easy to fix, if needed, normally we pass the needed information via >>> the bootinfo structure. >>> >>> My X configuration is broken for a while. With debian/sid I've never been able to start X (even on a >>> real q800, I think), and with debian/etch we need a special kernel as the ADB stack has been broken >>> with old kernel. I was not able to start X for a while now... >> >> FWIW I found that the last set of ADB fixes in mac_via.c actually fixed ADB on old kernels again (I >> was able to use keyboard and mouse on the 4.15 kernel you used for the original patches), so you may >> be able to get debian/etch working in QEMU. I'd expect forcing EMILE into a 24-bit depth on a real >> Quadra 800 would also show the same issue here. >> > > In fact, I was trying the etch kernel, 2.6.32 that was never able to boot before because VBL > interrupt was not implemented. Now, with your series it boots (congratulation) but there is some > other issues in ADB but I don't think it's related to the changes in QEMU. > > I've found another kernel on my disk (4.1.39) and I'm able to start a gnome-session with 1152x870x8 > mode. ADB works well. There is an issue with gdm that doesn't take characters from the keyboard but > if I start X manually and then gnome-sessions I'm able to play with it. And I'm able to run a 800x600x24 session with the attached xorg.conf To run 1152x870, the DefaultDepth and DefaultFbBpp must be changed to 8. Thanks, Laurent --------------221FC26B0D44BAF1B8DAEBCA Content-Type: text/plain; charset=UTF-8; name="xorg.conf" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="xorg.conf" IyAvZXRjL1gxMS94b3JnLmNvbmYgKHhvcmcgWCBXaW5kb3cgU3lzdGVtIHNlcnZlciBjb25m aWd1cmF0aW9uIGZpbGUpCiMKIyBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSBkZXhjb25m LCB0aGUgRGViaWFuIFggQ29uZmlndXJhdGlvbiB0b29sLCB1c2luZwojIHZhbHVlcyBmcm9t IHRoZSBkZWJjb25mIGRhdGFiYXNlLgojCiMgRWRpdCB0aGlzIGZpbGUgd2l0aCBjYXV0aW9u LCBhbmQgc2VlIHRoZSAvZXRjL1gxMS94b3JnLmNvbmYgbWFudWFsIHBhZ2UuCiMgKFR5cGUg Im1hbiAvZXRjL1gxMS94b3JnLmNvbmYiIGF0IHRoZSBzaGVsbCBwcm9tcHQuKQojCiMgVGhp cyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgdXBkYXRlZCBvbiB4c2VydmVyLXhvcmcgcGFja2Fn ZSB1cGdyYWRlcyAqb25seSoKIyBpZiBpdCBoYXMgbm90IGJlZW4gbW9kaWZpZWQgc2luY2Ug dGhlIGxhc3QgdXBncmFkZSBvZiB0aGUgeHNlcnZlci14b3JnCiMgcGFja2FnZS4KIwojIElm IHlvdSBoYXZlIGVkaXRlZCB0aGlzIGZpbGUgYnV0IHdvdWxkIGxpa2UgaXQgdG8gYmUgYXV0 b21hdGljYWxseSB1cGRhdGVkCiMgYWdhaW4sIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6 CiMgICBzdWRvIGRwa2ctcmVjb25maWd1cmUgLXBoaWdoIHhzZXJ2ZXIteG9yZwoKU2VjdGlv biAiRmlsZXMiCglGb250UGF0aAkiL3Vzci9zaGFyZS9mb250cy9YMTEvbWlzYyIKCUZvbnRQ YXRoCSIvdXNyL1gxMVI2L2xpYi9YMTEvZm9udHMvbWlzYyIKCUZvbnRQYXRoCSIvdXNyL3No YXJlL2ZvbnRzL1gxMS9jeXJpbGxpYyIKCUZvbnRQYXRoCSIvdXNyL1gxMVI2L2xpYi9YMTEv Zm9udHMvY3lyaWxsaWMiCglGb250UGF0aAkiL3Vzci9zaGFyZS9mb250cy9YMTEvMTAwZHBp Lzp1bnNjYWxlZCIKCUZvbnRQYXRoCSIvdXNyL1gxMVI2L2xpYi9YMTEvZm9udHMvMTAwZHBp Lzp1bnNjYWxlZCIKCUZvbnRQYXRoCSIvdXNyL3NoYXJlL2ZvbnRzL1gxMS83NWRwaS86dW5z Y2FsZWQiCglGb250UGF0aAkiL3Vzci9YMTFSNi9saWIvWDExL2ZvbnRzLzc1ZHBpLzp1bnNj YWxlZCIKCUZvbnRQYXRoCSIvdXNyL3NoYXJlL2ZvbnRzL1gxMS9UeXBlMSIKCUZvbnRQYXRo CSIvdXNyL1gxMVI2L2xpYi9YMTEvZm9udHMvVHlwZTEiCglGb250UGF0aAkiL3Vzci9zaGFy ZS9mb250cy9YMTEvMTAwZHBpIgoJRm9udFBhdGgJIi91c3IvWDExUjYvbGliL1gxMS9mb250 cy8xMDBkcGkiCglGb250UGF0aAkiL3Vzci9zaGFyZS9mb250cy9YMTEvNzVkcGkiCglGb250 UGF0aAkiL3Vzci9YMTFSNi9saWIvWDExL2ZvbnRzLzc1ZHBpIgoJIyBwYXRoIHRvIGRlZm9t YSBmb250cwoJRm9udFBhdGgJIi92YXIvbGliL2RlZm9tYS94LXR0Y2lkZm9udC1jb25mLmQv ZGlycy9UcnVlVHlwZSIKRW5kU2VjdGlvbgoKU2VjdGlvbiAiTW9kdWxlIgoJTG9hZAkiaTJj IgoJTG9hZAkiYml0bWFwIgoJTG9hZAkiZGRjIgoJTG9hZAkiZHJpIgoJTG9hZAkiZXh0bW9k IgoJTG9hZAkiZnJlZXR5cGUiCglMb2FkCSJnbHgiCglMb2FkCSJpbnQxMCIKCUxvYWQJInZi ZSIKRW5kU2VjdGlvbgoKU2VjdGlvbiAiSW5wdXREZXZpY2UiCglJZGVudGlmaWVyCSJHZW5l cmljIEtleWJvYXJkIgoJRHJpdmVyCQkia2V5Ym9hcmQiCglPcHRpb24JCSJDb3JlS2V5Ym9h cmQiCglPcHRpb24JCSJYa2JSdWxlcyIJInhvcmciCglPcHRpb24JCSJYa2JNb2RlbCIJIm1h Y2ludG9zaCIKCU9wdGlvbgkJIlhrYkxheW91dCIJInVzIgpFbmRTZWN0aW9uCgpTZWN0aW9u ICJJbnB1dERldmljZSIKCUlkZW50aWZpZXIJIkNvbmZpZ3VyZWQgTW91c2UiCglEcml2ZXIJ CSJtb3VzZSIKCU9wdGlvbgkJIkNvcmVQb2ludGVyIgoJT3B0aW9uCQkiRGV2aWNlIgkJIi9k ZXYvaW5wdXQvbWljZSIKCU9wdGlvbgkJIlByb3RvY29sIgkJIkltUFMvMiIKCU9wdGlvbgkJ IkVtdWxhdGUzQnV0dG9ucyIJInRydWUiCkVuZFNlY3Rpb24KClNlY3Rpb24gIkRldmljZSIK CUlkZW50aWZpZXIJIkdlbmVyaWMgVmlkZW8gQ2FyZCIKCURyaXZlcgkJImZiZGV2IgoJT3B0 aW9uCQkiVXNlRkJEZXYiCQkidHJ1ZSIKRW5kU2VjdGlvbgoKU2VjdGlvbiAiTW9uaXRvciIK CUlkZW50aWZpZXIJIkdlbmVyaWMgTW9uaXRvciIKCU9wdGlvbgkJIkRQTVMiCglIb3JpelN5 bmMJMjgtNjAKCVZlcnRSZWZyZXNoCTQzLTYwCkVuZFNlY3Rpb24KClNlY3Rpb24gIlNjcmVl biIKCUlkZW50aWZpZXIJIkRlZmF1bHQgU2NyZWVuIgoJRGV2aWNlCQkiR2VuZXJpYyBWaWRl byBDYXJkIgoJTW9uaXRvcgkJIkdlbmVyaWMgTW9uaXRvciIKCURlZmF1bHREZXB0aCAyNAoJ RGVmYXVsdEZiQnBwIDMyCglTdWJTZWN0aW9uICJEaXNwbGF5IgoJCURlcHRoCQkxCgkJTW9k ZXMJCSIxMTUyeDg3MCIgIjgwMHg2MDAiICI2NDB4NDgwIgoJRW5kU3ViU2VjdGlvbgoJU3Vi U2VjdGlvbiAiRGlzcGxheSIKCQlEZXB0aAkJNAoJCU1vZGVzCQkiMTE1Mng4NzAiICI4MDB4 NjAwIiAiNjQweDQ4MCIKCUVuZFN1YlNlY3Rpb24KCVN1YlNlY3Rpb24gIkRpc3BsYXkiCgkJ RGVwdGgJCTgKCQlNb2RlcwkJIjExNTJ4ODcwIiAiODAweDYwMCIgIjY0MHg0ODAiCglFbmRT dWJTZWN0aW9uCglTdWJTZWN0aW9uICJEaXNwbGF5IgoJCURlcHRoCQkxNQoJCU1vZGVzCQki ODAweDYwMCIgIjY0MHg0ODAiCglFbmRTdWJTZWN0aW9uCglTdWJTZWN0aW9uICJEaXNwbGF5 IgoJCURlcHRoCQkxNgoJCU1vZGVzCQkiODAweDYwMCIgIjY0MHg0ODAiCglFbmRTdWJTZWN0 aW9uCglTdWJTZWN0aW9uICJEaXNwbGF5IgoJCURlcHRoCQkyNAogICAgICAgICAgICAgICAg RmJCcHAgICAgMzIKCQlNb2RlcwkJIjgwMHg2MDAiICI2NDB4NDgwIgoJRW5kU3ViU2VjdGlv bgpFbmRTZWN0aW9uCgpTZWN0aW9uICJTZXJ2ZXJMYXlvdXQiCglJZGVudGlmaWVyCSJEZWZh dWx0IExheW91dCIKCVNjcmVlbgkJIkRlZmF1bHQgU2NyZWVuIgoJSW5wdXREZXZpY2UJIkdl bmVyaWMgS2V5Ym9hcmQiCglJbnB1dERldmljZQkiQ29uZmlndXJlZCBNb3VzZSIKRW5kU2Vj dGlvbgoKU2VjdGlvbiAiRFJJIgoJTW9kZQkwNjY2CkVuZFNlY3Rpb24K --------------221FC26B0D44BAF1B8DAEBCA--